// Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.0 // protoc v3.21.2 // source: dota_usermessages.proto package demo import ( protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type EDotaUserMessages int32 const ( EDotaUserMessages_DOTA_UM_AddUnitToSelection EDotaUserMessages = 464 EDotaUserMessages_DOTA_UM_AIDebugLine EDotaUserMessages = 465 EDotaUserMessages_DOTA_UM_ChatEvent EDotaUserMessages = 466 EDotaUserMessages_DOTA_UM_CombatHeroPositions EDotaUserMessages = 467 EDotaUserMessages_DOTA_UM_CombatLogData EDotaUserMessages = 468 EDotaUserMessages_DOTA_UM_CombatLogBulkData EDotaUserMessages = 470 EDotaUserMessages_DOTA_UM_CreateLinearProjectile EDotaUserMessages = 471 EDotaUserMessages_DOTA_UM_DestroyLinearProjectile EDotaUserMessages = 472 EDotaUserMessages_DOTA_UM_DodgeTrackingProjectiles EDotaUserMessages = 473 EDotaUserMessages_DOTA_UM_GlobalLightColor EDotaUserMessages = 474 EDotaUserMessages_DOTA_UM_GlobalLightDirection EDotaUserMessages = 475 EDotaUserMessages_DOTA_UM_InvalidCommand EDotaUserMessages = 476 EDotaUserMessages_DOTA_UM_LocationPing EDotaUserMessages = 477 EDotaUserMessages_DOTA_UM_MapLine EDotaUserMessages = 478 EDotaUserMessages_DOTA_UM_MiniKillCamInfo EDotaUserMessages = 479 EDotaUserMessages_DOTA_UM_MinimapDebugPoint EDotaUserMessages = 480 EDotaUserMessages_DOTA_UM_MinimapEvent EDotaUserMessages = 481 EDotaUserMessages_DOTA_UM_NevermoreRequiem EDotaUserMessages = 482 EDotaUserMessages_DOTA_UM_OverheadEvent EDotaUserMessages = 483 EDotaUserMessages_DOTA_UM_SetNextAutobuyItem EDotaUserMessages = 484 EDotaUserMessages_DOTA_UM_SharedCooldown EDotaUserMessages = 485 EDotaUserMessages_DOTA_UM_SpectatorPlayerClick EDotaUserMessages = 486 EDotaUserMessages_DOTA_UM_TutorialTipInfo EDotaUserMessages = 487 EDotaUserMessages_DOTA_UM_UnitEvent EDotaUserMessages = 488 EDotaUserMessages_DOTA_UM_ParticleManager EDotaUserMessages = 489 EDotaUserMessages_DOTA_UM_BotChat EDotaUserMessages = 490 EDotaUserMessages_DOTA_UM_HudError EDotaUserMessages = 491 EDotaUserMessages_DOTA_UM_ItemPurchased EDotaUserMessages = 492 EDotaUserMessages_DOTA_UM_Ping EDotaUserMessages = 493 EDotaUserMessages_DOTA_UM_ItemFound EDotaUserMessages = 494 EDotaUserMessages_DOTA_UM_CharacterSpeakConcept EDotaUserMessages = 495 EDotaUserMessages_DOTA_UM_SwapVerify EDotaUserMessages = 496 EDotaUserMessages_DOTA_UM_WorldLine EDotaUserMessages = 497 EDotaUserMessages_DOTA_UM_TournamentDrop EDotaUserMessages = 498 EDotaUserMessages_DOTA_UM_ItemAlert EDotaUserMessages = 499 EDotaUserMessages_DOTA_UM_HalloweenDrops EDotaUserMessages = 500 EDotaUserMessages_DOTA_UM_ChatWheel EDotaUserMessages = 501 EDotaUserMessages_DOTA_UM_ReceivedXmasGift EDotaUserMessages = 502 EDotaUserMessages_DOTA_UM_UpdateSharedContent EDotaUserMessages = 503 EDotaUserMessages_DOTA_UM_TutorialRequestExp EDotaUserMessages = 504 EDotaUserMessages_DOTA_UM_TutorialPingMinimap EDotaUserMessages = 505 EDotaUserMessages_DOTA_UM_GamerulesStateChanged EDotaUserMessages = 506 EDotaUserMessages_DOTA_UM_ShowSurvey EDotaUserMessages = 507 EDotaUserMessages_DOTA_UM_TutorialFade EDotaUserMessages = 508 EDotaUserMessages_DOTA_UM_AddQuestLogEntry EDotaUserMessages = 509 EDotaUserMessages_DOTA_UM_SendStatPopup EDotaUserMessages = 510 EDotaUserMessages_DOTA_UM_TutorialFinish EDotaUserMessages = 511 EDotaUserMessages_DOTA_UM_SendRoshanPopup EDotaUserMessages = 512 EDotaUserMessages_DOTA_UM_SendGenericToolTip EDotaUserMessages = 513 EDotaUserMessages_DOTA_UM_SendFinalGold EDotaUserMessages = 514 EDotaUserMessages_DOTA_UM_CustomMsg EDotaUserMessages = 515 EDotaUserMessages_DOTA_UM_CoachHUDPing EDotaUserMessages = 516 EDotaUserMessages_DOTA_UM_ClientLoadGridNav EDotaUserMessages = 517 EDotaUserMessages_DOTA_UM_TE_Projectile EDotaUserMessages = 518 EDotaUserMessages_DOTA_UM_TE_ProjectileLoc EDotaUserMessages = 519 EDotaUserMessages_DOTA_UM_TE_DotaBloodImpact EDotaUserMessages = 520 EDotaUserMessages_DOTA_UM_TE_UnitAnimation EDotaUserMessages = 521 EDotaUserMessages_DOTA_UM_TE_UnitAnimationEnd EDotaUserMessages = 522 EDotaUserMessages_DOTA_UM_AbilityPing EDotaUserMessages = 523 EDotaUserMessages_DOTA_UM_ShowGenericPopup EDotaUserMessages = 524 EDotaUserMessages_DOTA_UM_VoteStart EDotaUserMessages = 525 EDotaUserMessages_DOTA_UM_VoteUpdate EDotaUserMessages = 526 EDotaUserMessages_DOTA_UM_VoteEnd EDotaUserMessages = 527 EDotaUserMessages_DOTA_UM_BoosterState EDotaUserMessages = 528 EDotaUserMessages_DOTA_UM_WillPurchaseAlert EDotaUserMessages = 529 EDotaUserMessages_DOTA_UM_TutorialMinimapPosition EDotaUserMessages = 530 EDotaUserMessages_DOTA_UM_PlayerMMR EDotaUserMessages = 531 EDotaUserMessages_DOTA_UM_AbilitySteal EDotaUserMessages = 532 EDotaUserMessages_DOTA_UM_CourierKilledAlert EDotaUserMessages = 533 EDotaUserMessages_DOTA_UM_EnemyItemAlert EDotaUserMessages = 534 EDotaUserMessages_DOTA_UM_StatsMatchDetails EDotaUserMessages = 535 EDotaUserMessages_DOTA_UM_MiniTaunt EDotaUserMessages = 536 EDotaUserMessages_DOTA_UM_BuyBackStateAlert EDotaUserMessages = 537 EDotaUserMessages_DOTA_UM_SpeechBubble EDotaUserMessages = 538 EDotaUserMessages_DOTA_UM_CustomHeaderMessage EDotaUserMessages = 539 EDotaUserMessages_DOTA_UM_QuickBuyAlert EDotaUserMessages = 540 EDotaUserMessages_DOTA_UM_StatsHeroDetails EDotaUserMessages = 541 EDotaUserMessages_DOTA_UM_PredictionResult EDotaUserMessages = 542 EDotaUserMessages_DOTA_UM_ModifierAlert EDotaUserMessages = 543 EDotaUserMessages_DOTA_UM_HPManaAlert EDotaUserMessages = 544 EDotaUserMessages_DOTA_UM_GlyphAlert EDotaUserMessages = 545 EDotaUserMessages_DOTA_UM_BeastChat EDotaUserMessages = 546 EDotaUserMessages_DOTA_UM_SpectatorPlayerUnitOrders EDotaUserMessages = 547 EDotaUserMessages_DOTA_UM_CustomHudElement_Create EDotaUserMessages = 548 EDotaUserMessages_DOTA_UM_CustomHudElement_Modify EDotaUserMessages = 549 EDotaUserMessages_DOTA_UM_CustomHudElement_Destroy EDotaUserMessages = 550 EDotaUserMessages_DOTA_UM_CompendiumState EDotaUserMessages = 551 EDotaUserMessages_DOTA_UM_ProjectionAbility EDotaUserMessages = 552 EDotaUserMessages_DOTA_UM_ProjectionEvent EDotaUserMessages = 553 EDotaUserMessages_DOTA_UM_CombatLogDataHLTV EDotaUserMessages = 554 EDotaUserMessages_DOTA_UM_XPAlert EDotaUserMessages = 555 EDotaUserMessages_DOTA_UM_UpdateQuestProgress EDotaUserMessages = 556 EDotaUserMessages_DOTA_UM_MatchMetadata EDotaUserMessages = 557 EDotaUserMessages_DOTA_UM_MatchDetails EDotaUserMessages = 558 EDotaUserMessages_DOTA_UM_QuestStatus EDotaUserMessages = 559 EDotaUserMessages_DOTA_UM_SuggestHeroPick EDotaUserMessages = 560 EDotaUserMessages_DOTA_UM_SuggestHeroRole EDotaUserMessages = 561 EDotaUserMessages_DOTA_UM_KillcamDamageTaken EDotaUserMessages = 562 EDotaUserMessages_DOTA_UM_SelectPenaltyGold EDotaUserMessages = 563 EDotaUserMessages_DOTA_UM_RollDiceResult EDotaUserMessages = 564 EDotaUserMessages_DOTA_UM_FlipCoinResult EDotaUserMessages = 565 EDotaUserMessages_DOTA_UM_RequestItemSuggestions EDotaUserMessages = 566 EDotaUserMessages_DOTA_UM_TeamCaptainChanged EDotaUserMessages = 567 EDotaUserMessages_DOTA_UM_SendRoshanSpectatorPhase EDotaUserMessages = 568 EDotaUserMessages_DOTA_UM_ChatWheelCooldown EDotaUserMessages = 569 EDotaUserMessages_DOTA_UM_DismissAllStatPopups EDotaUserMessages = 570 EDotaUserMessages_DOTA_UM_TE_DestroyProjectile EDotaUserMessages = 571 EDotaUserMessages_DOTA_UM_HeroRelicProgress EDotaUserMessages = 572 EDotaUserMessages_DOTA_UM_AbilityDraftRequestAbility EDotaUserMessages = 573 EDotaUserMessages_DOTA_UM_ItemSold EDotaUserMessages = 574 EDotaUserMessages_DOTA_UM_DamageReport EDotaUserMessages = 575 EDotaUserMessages_DOTA_UM_SalutePlayer EDotaUserMessages = 576 EDotaUserMessages_DOTA_UM_TipAlert EDotaUserMessages = 577 EDotaUserMessages_DOTA_UM_ReplaceQueryUnit EDotaUserMessages = 578 EDotaUserMessages_DOTA_UM_EmptyTeleportAlert EDotaUserMessages = 579 EDotaUserMessages_DOTA_UM_MarsArenaOfBloodAttack EDotaUserMessages = 580 EDotaUserMessages_DOTA_UM_ESArcanaCombo EDotaUserMessages = 581 EDotaUserMessages_DOTA_UM_ESArcanaComboSummary EDotaUserMessages = 582 EDotaUserMessages_DOTA_UM_HighFiveLeftHanging EDotaUserMessages = 583 EDotaUserMessages_DOTA_UM_HighFiveCompleted EDotaUserMessages = 584 EDotaUserMessages_DOTA_UM_ShovelUnearth EDotaUserMessages = 585 EDotaUserMessages_DOTA_EM_InvokerSpellCast EDotaUserMessages = 586 EDotaUserMessages_DOTA_UM_RadarAlert EDotaUserMessages = 587 EDotaUserMessages_DOTA_UM_AllStarEvent EDotaUserMessages = 588 EDotaUserMessages_DOTA_UM_TalentTreeAlert EDotaUserMessages = 589 EDotaUserMessages_DOTA_UM_QueuedOrderRemoved EDotaUserMessages = 590 EDotaUserMessages_DOTA_UM_DebugChallenge EDotaUserMessages = 591 EDotaUserMessages_DOTA_UM_OMArcanaCombo EDotaUserMessages = 592 EDotaUserMessages_DOTA_UM_FoundNeutralItem EDotaUserMessages = 593 EDotaUserMessages_DOTA_UM_OutpostCaptured EDotaUserMessages = 594 EDotaUserMessages_DOTA_UM_OutpostGrantedXP EDotaUserMessages = 595 EDotaUserMessages_DOTA_UM_MoveCameraToUnit EDotaUserMessages = 596 EDotaUserMessages_DOTA_UM_PauseMinigameData EDotaUserMessages = 597 EDotaUserMessages_DOTA_UM_VersusScene_PlayerBehavior EDotaUserMessages = 598 EDotaUserMessages_DOTA_UM_QoP_ArcanaSummary EDotaUserMessages = 600 EDotaUserMessages_DOTA_UM_HotPotato_Created EDotaUserMessages = 601 EDotaUserMessages_DOTA_UM_HotPotato_Exploded EDotaUserMessages = 602 EDotaUserMessages_DOTA_UM_WK_Arcana_Progress EDotaUserMessages = 603 EDotaUserMessages_DOTA_UM_GuildChallenge_Progress EDotaUserMessages = 604 EDotaUserMessages_DOTA_UM_WRArcanaProgress EDotaUserMessages = 605 EDotaUserMessages_DOTA_UM_WRArcanaSummary EDotaUserMessages = 606 EDotaUserMessages_DOTA_UM_EmptyItemSlotAlert EDotaUserMessages = 607 EDotaUserMessages_DOTA_UM_AghsStatusAlert EDotaUserMessages = 608 EDotaUserMessages_DOTA_UM_PingConfirmation EDotaUserMessages = 609 EDotaUserMessages_DOTA_UM_MutedPlayers EDotaUserMessages = 610 EDotaUserMessages_DOTA_UM_ContextualTip EDotaUserMessages = 611 EDotaUserMessages_DOTA_UM_ChatMessage EDotaUserMessages = 612 ) // Enum value maps for EDotaUserMessages. var ( EDotaUserMessages_name = map[int32]string{ 464: "DOTA_UM_AddUnitToSelection", 465: "DOTA_UM_AIDebugLine", 466: "DOTA_UM_ChatEvent", 467: "DOTA_UM_CombatHeroPositions", 468: "DOTA_UM_CombatLogData", 470: "DOTA_UM_CombatLogBulkData", 471: "DOTA_UM_CreateLinearProjectile", 472: "DOTA_UM_DestroyLinearProjectile", 473: "DOTA_UM_DodgeTrackingProjectiles", 474: "DOTA_UM_GlobalLightColor", 475: "DOTA_UM_GlobalLightDirection", 476: "DOTA_UM_InvalidCommand", 477: "DOTA_UM_LocationPing", 478: "DOTA_UM_MapLine", 479: "DOTA_UM_MiniKillCamInfo", 480: "DOTA_UM_MinimapDebugPoint", 481: "DOTA_UM_MinimapEvent", 482: "DOTA_UM_NevermoreRequiem", 483: "DOTA_UM_OverheadEvent", 484: "DOTA_UM_SetNextAutobuyItem", 485: "DOTA_UM_SharedCooldown", 486: "DOTA_UM_SpectatorPlayerClick", 487: "DOTA_UM_TutorialTipInfo", 488: "DOTA_UM_UnitEvent", 489: "DOTA_UM_ParticleManager", 490: "DOTA_UM_BotChat", 491: "DOTA_UM_HudError", 492: "DOTA_UM_ItemPurchased", 493: "DOTA_UM_Ping", 494: "DOTA_UM_ItemFound", 495: "DOTA_UM_CharacterSpeakConcept", 496: "DOTA_UM_SwapVerify", 497: "DOTA_UM_WorldLine", 498: "DOTA_UM_TournamentDrop", 499: "DOTA_UM_ItemAlert", 500: "DOTA_UM_HalloweenDrops", 501: "DOTA_UM_ChatWheel", 502: "DOTA_UM_ReceivedXmasGift", 503: "DOTA_UM_UpdateSharedContent", 504: "DOTA_UM_TutorialRequestExp", 505: "DOTA_UM_TutorialPingMinimap", 506: "DOTA_UM_GamerulesStateChanged", 507: "DOTA_UM_ShowSurvey", 508: "DOTA_UM_TutorialFade", 509: "DOTA_UM_AddQuestLogEntry", 510: "DOTA_UM_SendStatPopup", 511: "DOTA_UM_TutorialFinish", 512: "DOTA_UM_SendRoshanPopup", 513: "DOTA_UM_SendGenericToolTip", 514: "DOTA_UM_SendFinalGold", 515: "DOTA_UM_CustomMsg", 516: "DOTA_UM_CoachHUDPing", 517: "DOTA_UM_ClientLoadGridNav", 518: "DOTA_UM_TE_Projectile", 519: "DOTA_UM_TE_ProjectileLoc", 520: "DOTA_UM_TE_DotaBloodImpact", 521: "DOTA_UM_TE_UnitAnimation", 522: "DOTA_UM_TE_UnitAnimationEnd", 523: "DOTA_UM_AbilityPing", 524: "DOTA_UM_ShowGenericPopup", 525: "DOTA_UM_VoteStart", 526: "DOTA_UM_VoteUpdate", 527: "DOTA_UM_VoteEnd", 528: "DOTA_UM_BoosterState", 529: "DOTA_UM_WillPurchaseAlert", 530: "DOTA_UM_TutorialMinimapPosition", 531: "DOTA_UM_PlayerMMR", 532: "DOTA_UM_AbilitySteal", 533: "DOTA_UM_CourierKilledAlert", 534: "DOTA_UM_EnemyItemAlert", 535: "DOTA_UM_StatsMatchDetails", 536: "DOTA_UM_MiniTaunt", 537: "DOTA_UM_BuyBackStateAlert", 538: "DOTA_UM_SpeechBubble", 539: "DOTA_UM_CustomHeaderMessage", 540: "DOTA_UM_QuickBuyAlert", 541: "DOTA_UM_StatsHeroDetails", 542: "DOTA_UM_PredictionResult", 543: "DOTA_UM_ModifierAlert", 544: "DOTA_UM_HPManaAlert", 545: "DOTA_UM_GlyphAlert", 546: "DOTA_UM_BeastChat", 547: "DOTA_UM_SpectatorPlayerUnitOrders", 548: "DOTA_UM_CustomHudElement_Create", 549: "DOTA_UM_CustomHudElement_Modify", 550: "DOTA_UM_CustomHudElement_Destroy", 551: "DOTA_UM_CompendiumState", 552: "DOTA_UM_ProjectionAbility", 553: "DOTA_UM_ProjectionEvent", 554: "DOTA_UM_CombatLogDataHLTV", 555: "DOTA_UM_XPAlert", 556: "DOTA_UM_UpdateQuestProgress", 557: "DOTA_UM_MatchMetadata", 558: "DOTA_UM_MatchDetails", 559: "DOTA_UM_QuestStatus", 560: "DOTA_UM_SuggestHeroPick", 561: "DOTA_UM_SuggestHeroRole", 562: "DOTA_UM_KillcamDamageTaken", 563: "DOTA_UM_SelectPenaltyGold", 564: "DOTA_UM_RollDiceResult", 565: "DOTA_UM_FlipCoinResult", 566: "DOTA_UM_RequestItemSuggestions", 567: "DOTA_UM_TeamCaptainChanged", 568: "DOTA_UM_SendRoshanSpectatorPhase", 569: "DOTA_UM_ChatWheelCooldown", 570: "DOTA_UM_DismissAllStatPopups", 571: "DOTA_UM_TE_DestroyProjectile", 572: "DOTA_UM_HeroRelicProgress", 573: "DOTA_UM_AbilityDraftRequestAbility", 574: "DOTA_UM_ItemSold", 575: "DOTA_UM_DamageReport", 576: "DOTA_UM_SalutePlayer", 577: "DOTA_UM_TipAlert", 578: "DOTA_UM_ReplaceQueryUnit", 579: "DOTA_UM_EmptyTeleportAlert", 580: "DOTA_UM_MarsArenaOfBloodAttack", 581: "DOTA_UM_ESArcanaCombo", 582: "DOTA_UM_ESArcanaComboSummary", 583: "DOTA_UM_HighFiveLeftHanging", 584: "DOTA_UM_HighFiveCompleted", 585: "DOTA_UM_ShovelUnearth", 586: "DOTA_EM_InvokerSpellCast", 587: "DOTA_UM_RadarAlert", 588: "DOTA_UM_AllStarEvent", 589: "DOTA_UM_TalentTreeAlert", 590: "DOTA_UM_QueuedOrderRemoved", 591: "DOTA_UM_DebugChallenge", 592: "DOTA_UM_OMArcanaCombo", 593: "DOTA_UM_FoundNeutralItem", 594: "DOTA_UM_OutpostCaptured", 595: "DOTA_UM_OutpostGrantedXP", 596: "DOTA_UM_MoveCameraToUnit", 597: "DOTA_UM_PauseMinigameData", 598: "DOTA_UM_VersusScene_PlayerBehavior", 600: "DOTA_UM_QoP_ArcanaSummary", 601: "DOTA_UM_HotPotato_Created", 602: "DOTA_UM_HotPotato_Exploded", 603: "DOTA_UM_WK_Arcana_Progress", 604: "DOTA_UM_GuildChallenge_Progress", 605: "DOTA_UM_WRArcanaProgress", 606: "DOTA_UM_WRArcanaSummary", 607: "DOTA_UM_EmptyItemSlotAlert", 608: "DOTA_UM_AghsStatusAlert", 609: "DOTA_UM_PingConfirmation", 610: "DOTA_UM_MutedPlayers", 611: "DOTA_UM_ContextualTip", 612: "DOTA_UM_ChatMessage", } EDotaUserMessages_value = map[string]int32{ "DOTA_UM_AddUnitToSelection": 464, "DOTA_UM_AIDebugLine": 465, "DOTA_UM_ChatEvent": 466, "DOTA_UM_CombatHeroPositions": 467, "DOTA_UM_CombatLogData": 468, "DOTA_UM_CombatLogBulkData": 470, "DOTA_UM_CreateLinearProjectile": 471, "DOTA_UM_DestroyLinearProjectile": 472, "DOTA_UM_DodgeTrackingProjectiles": 473, "DOTA_UM_GlobalLightColor": 474, "DOTA_UM_GlobalLightDirection": 475, "DOTA_UM_InvalidCommand": 476, "DOTA_UM_LocationPing": 477, "DOTA_UM_MapLine": 478, "DOTA_UM_MiniKillCamInfo": 479, "DOTA_UM_MinimapDebugPoint": 480, "DOTA_UM_MinimapEvent": 481, "DOTA_UM_NevermoreRequiem": 482, "DOTA_UM_OverheadEvent": 483, "DOTA_UM_SetNextAutobuyItem": 484, "DOTA_UM_SharedCooldown": 485, "DOTA_UM_SpectatorPlayerClick": 486, "DOTA_UM_TutorialTipInfo": 487, "DOTA_UM_UnitEvent": 488, "DOTA_UM_ParticleManager": 489, "DOTA_UM_BotChat": 490, "DOTA_UM_HudError": 491, "DOTA_UM_ItemPurchased": 492, "DOTA_UM_Ping": 493, "DOTA_UM_ItemFound": 494, "DOTA_UM_CharacterSpeakConcept": 495, "DOTA_UM_SwapVerify": 496, "DOTA_UM_WorldLine": 497, "DOTA_UM_TournamentDrop": 498, "DOTA_UM_ItemAlert": 499, "DOTA_UM_HalloweenDrops": 500, "DOTA_UM_ChatWheel": 501, "DOTA_UM_ReceivedXmasGift": 502, "DOTA_UM_UpdateSharedContent": 503, "DOTA_UM_TutorialRequestExp": 504, "DOTA_UM_TutorialPingMinimap": 505, "DOTA_UM_GamerulesStateChanged": 506, "DOTA_UM_ShowSurvey": 507, "DOTA_UM_TutorialFade": 508, "DOTA_UM_AddQuestLogEntry": 509, "DOTA_UM_SendStatPopup": 510, "DOTA_UM_TutorialFinish": 511, "DOTA_UM_SendRoshanPopup": 512, "DOTA_UM_SendGenericToolTip": 513, "DOTA_UM_SendFinalGold": 514, "DOTA_UM_CustomMsg": 515, "DOTA_UM_CoachHUDPing": 516, "DOTA_UM_ClientLoadGridNav": 517, "DOTA_UM_TE_Projectile": 518, "DOTA_UM_TE_ProjectileLoc": 519, "DOTA_UM_TE_DotaBloodImpact": 520, "DOTA_UM_TE_UnitAnimation": 521, "DOTA_UM_TE_UnitAnimationEnd": 522, "DOTA_UM_AbilityPing": 523, "DOTA_UM_ShowGenericPopup": 524, "DOTA_UM_VoteStart": 525, "DOTA_UM_VoteUpdate": 526, "DOTA_UM_VoteEnd": 527, "DOTA_UM_BoosterState": 528, "DOTA_UM_WillPurchaseAlert": 529, "DOTA_UM_TutorialMinimapPosition": 530, "DOTA_UM_PlayerMMR": 531, "DOTA_UM_AbilitySteal": 532, "DOTA_UM_CourierKilledAlert": 533, "DOTA_UM_EnemyItemAlert": 534, "DOTA_UM_StatsMatchDetails": 535, "DOTA_UM_MiniTaunt": 536, "DOTA_UM_BuyBackStateAlert": 537, "DOTA_UM_SpeechBubble": 538, "DOTA_UM_CustomHeaderMessage": 539, "DOTA_UM_QuickBuyAlert": 540, "DOTA_UM_StatsHeroDetails": 541, "DOTA_UM_PredictionResult": 542, "DOTA_UM_ModifierAlert": 543, "DOTA_UM_HPManaAlert": 544, "DOTA_UM_GlyphAlert": 545, "DOTA_UM_BeastChat": 546, "DOTA_UM_SpectatorPlayerUnitOrders": 547, "DOTA_UM_CustomHudElement_Create": 548, "DOTA_UM_CustomHudElement_Modify": 549, "DOTA_UM_CustomHudElement_Destroy": 550, "DOTA_UM_CompendiumState": 551, "DOTA_UM_ProjectionAbility": 552, "DOTA_UM_ProjectionEvent": 553, "DOTA_UM_CombatLogDataHLTV": 554, "DOTA_UM_XPAlert": 555, "DOTA_UM_UpdateQuestProgress": 556, "DOTA_UM_MatchMetadata": 557, "DOTA_UM_MatchDetails": 558, "DOTA_UM_QuestStatus": 559, "DOTA_UM_SuggestHeroPick": 560, "DOTA_UM_SuggestHeroRole": 561, "DOTA_UM_KillcamDamageTaken": 562, "DOTA_UM_SelectPenaltyGold": 563, "DOTA_UM_RollDiceResult": 564, "DOTA_UM_FlipCoinResult": 565, "DOTA_UM_RequestItemSuggestions": 566, "DOTA_UM_TeamCaptainChanged": 567, "DOTA_UM_SendRoshanSpectatorPhase": 568, "DOTA_UM_ChatWheelCooldown": 569, "DOTA_UM_DismissAllStatPopups": 570, "DOTA_UM_TE_DestroyProjectile": 571, "DOTA_UM_HeroRelicProgress": 572, "DOTA_UM_AbilityDraftRequestAbility": 573, "DOTA_UM_ItemSold": 574, "DOTA_UM_DamageReport": 575, "DOTA_UM_SalutePlayer": 576, "DOTA_UM_TipAlert": 577, "DOTA_UM_ReplaceQueryUnit": 578, "DOTA_UM_EmptyTeleportAlert": 579, "DOTA_UM_MarsArenaOfBloodAttack": 580, "DOTA_UM_ESArcanaCombo": 581, "DOTA_UM_ESArcanaComboSummary": 582, "DOTA_UM_HighFiveLeftHanging": 583, "DOTA_UM_HighFiveCompleted": 584, "DOTA_UM_ShovelUnearth": 585, "DOTA_EM_InvokerSpellCast": 586, "DOTA_UM_RadarAlert": 587, "DOTA_UM_AllStarEvent": 588, "DOTA_UM_TalentTreeAlert": 589, "DOTA_UM_QueuedOrderRemoved": 590, "DOTA_UM_DebugChallenge": 591, "DOTA_UM_OMArcanaCombo": 592, "DOTA_UM_FoundNeutralItem": 593, "DOTA_UM_OutpostCaptured": 594, "DOTA_UM_OutpostGrantedXP": 595, "DOTA_UM_MoveCameraToUnit": 596, "DOTA_UM_PauseMinigameData": 597, "DOTA_UM_VersusScene_PlayerBehavior": 598, "DOTA_UM_QoP_ArcanaSummary": 600, "DOTA_UM_HotPotato_Created": 601, "DOTA_UM_HotPotato_Exploded": 602, "DOTA_UM_WK_Arcana_Progress": 603, "DOTA_UM_GuildChallenge_Progress": 604, "DOTA_UM_WRArcanaProgress": 605, "DOTA_UM_WRArcanaSummary": 606, "DOTA_UM_EmptyItemSlotAlert": 607, "DOTA_UM_AghsStatusAlert": 608, "DOTA_UM_PingConfirmation": 609, "DOTA_UM_MutedPlayers": 610, "DOTA_UM_ContextualTip": 611, "DOTA_UM_ChatMessage": 612, } ) func (x EDotaUserMessages) Enum() *EDotaUserMessages { p := new(EDotaUserMessages) *p = x return p } func (x EDotaUserMessages) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (EDotaUserMessages) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[0].Descriptor() } func (EDotaUserMessages) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[0] } func (x EDotaUserMessages) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *EDotaUserMessages) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = EDotaUserMessages(num) return nil } // Deprecated: Use EDotaUserMessages.Descriptor instead. func (EDotaUserMessages) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{0} } type DOTA_CHAT_MESSAGE int32 const ( DOTA_CHAT_MESSAGE_CHAT_MESSAGE_INVALID DOTA_CHAT_MESSAGE = -1 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HERO_KILL DOTA_CHAT_MESSAGE = 0 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HERO_DENY DOTA_CHAT_MESSAGE = 1 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_BARRACKS_KILL DOTA_CHAT_MESSAGE = 2 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_TOWER_KILL DOTA_CHAT_MESSAGE = 3 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_TOWER_DENY DOTA_CHAT_MESSAGE = 4 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_FIRSTBLOOD DOTA_CHAT_MESSAGE = 5 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_STREAK_KILL DOTA_CHAT_MESSAGE = 6 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_BUYBACK DOTA_CHAT_MESSAGE = 7 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_AEGIS DOTA_CHAT_MESSAGE = 8 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ROSHAN_KILL DOTA_CHAT_MESSAGE = 9 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_COURIER_LOST DOTA_CHAT_MESSAGE = 10 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_COURIER_RESPAWNED DOTA_CHAT_MESSAGE = 11 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_GLYPH_USED DOTA_CHAT_MESSAGE = 12 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ITEM_PURCHASE DOTA_CHAT_MESSAGE = 13 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_CONNECT DOTA_CHAT_MESSAGE = 14 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_DISCONNECT DOTA_CHAT_MESSAGE = 15 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_DISCONNECT_WAIT_FOR_RECONNECT DOTA_CHAT_MESSAGE = 16 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_DISCONNECT_TIME_REMAINING DOTA_CHAT_MESSAGE = 17 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_DISCONNECT_TIME_REMAINING_PLURAL DOTA_CHAT_MESSAGE = 18 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_RECONNECT DOTA_CHAT_MESSAGE = 19 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_PLAYER_LEFT DOTA_CHAT_MESSAGE = 20 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_SAFE_TO_LEAVE DOTA_CHAT_MESSAGE = 21 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_RUNE_PICKUP DOTA_CHAT_MESSAGE = 22 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_RUNE_BOTTLE DOTA_CHAT_MESSAGE = 23 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_RUNE_DENY DOTA_CHAT_MESSAGE = 114 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_INTHEBAG DOTA_CHAT_MESSAGE = 24 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_SECRETSHOP DOTA_CHAT_MESSAGE = 25 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ITEM_AUTOPURCHASED DOTA_CHAT_MESSAGE = 26 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ITEMS_COMBINED DOTA_CHAT_MESSAGE = 27 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_SUPER_CREEPS DOTA_CHAT_MESSAGE = 28 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_CANT_USE_ACTION_ITEM DOTA_CHAT_MESSAGE = 29 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_CANTPAUSE DOTA_CHAT_MESSAGE = 31 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_NOPAUSESLEFT DOTA_CHAT_MESSAGE = 32 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_CANTPAUSEYET DOTA_CHAT_MESSAGE = 33 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_PAUSED DOTA_CHAT_MESSAGE = 34 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_UNPAUSE_COUNTDOWN DOTA_CHAT_MESSAGE = 35 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_UNPAUSED DOTA_CHAT_MESSAGE = 36 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_AUTO_UNPAUSED DOTA_CHAT_MESSAGE = 37 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_YOUPAUSED DOTA_CHAT_MESSAGE = 38 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_CANTUNPAUSETEAM DOTA_CHAT_MESSAGE = 39 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_VOICE_TEXT_BANNED DOTA_CHAT_MESSAGE = 41 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_SPECTATORS_WATCHING_THIS_GAME DOTA_CHAT_MESSAGE = 42 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_REPORT_REMINDER DOTA_CHAT_MESSAGE = 43 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ECON_ITEM DOTA_CHAT_MESSAGE = 44 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_TAUNT DOTA_CHAT_MESSAGE = 45 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_RANDOM DOTA_CHAT_MESSAGE = 46 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_RD_TURN DOTA_CHAT_MESSAGE = 47 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_DROP_RATE_BONUS DOTA_CHAT_MESSAGE = 49 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_NO_BATTLE_POINTS DOTA_CHAT_MESSAGE = 50 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_DENIED_AEGIS DOTA_CHAT_MESSAGE = 51 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_INFORMATIONAL DOTA_CHAT_MESSAGE = 52 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_AEGIS_STOLEN DOTA_CHAT_MESSAGE = 53 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ROSHAN_CANDY DOTA_CHAT_MESSAGE = 54 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ITEM_GIFTED DOTA_CHAT_MESSAGE = 55 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HERO_KILL_WITH_GREEVIL DOTA_CHAT_MESSAGE = 56 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HOLDOUT_TOWER_DESTROYED DOTA_CHAT_MESSAGE = 57 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HOLDOUT_WALL_DESTROYED DOTA_CHAT_MESSAGE = 58 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HOLDOUT_WALL_FINISHED DOTA_CHAT_MESSAGE = 59 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_PLAYER_LEFT_LIMITED_HERO DOTA_CHAT_MESSAGE = 62 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ABANDON_LIMITED_HERO_EXPLANATION DOTA_CHAT_MESSAGE = 63 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_DISCONNECT_LIMITED_HERO DOTA_CHAT_MESSAGE = 64 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_LOW_PRIORITY_COMPLETED_EXPLANATION DOTA_CHAT_MESSAGE = 65 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_RECRUITMENT_DROP_RATE_BONUS DOTA_CHAT_MESSAGE = 66 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_FROSTIVUS_SHINING_BOOSTER_ACTIVE DOTA_CHAT_MESSAGE = 67 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_PLAYER_LEFT_AFK DOTA_CHAT_MESSAGE = 73 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_PLAYER_LEFT_DISCONNECTED_TOO_LONG DOTA_CHAT_MESSAGE = 74 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_PLAYER_ABANDONED DOTA_CHAT_MESSAGE = 75 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_PLAYER_ABANDONED_AFK DOTA_CHAT_MESSAGE = 76 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_PLAYER_ABANDONED_DISCONNECTED_TOO_LONG DOTA_CHAT_MESSAGE = 77 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_WILL_NOT_BE_SCORED DOTA_CHAT_MESSAGE = 78 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_WILL_NOT_BE_SCORED_RANKED DOTA_CHAT_MESSAGE = 79 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_WILL_NOT_BE_SCORED_NETWORK DOTA_CHAT_MESSAGE = 80 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_WILL_NOT_BE_SCORED_NETWORK_RANKED DOTA_CHAT_MESSAGE = 81 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_CAN_QUIT_WITHOUT_ABANDON DOTA_CHAT_MESSAGE = 82 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_RANKED_GAME_STILL_SCORED_LEAVERS_GET_LOSS DOTA_CHAT_MESSAGE = 83 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ABANDON_RANKED_BEFORE_FIRST_BLOOD_PARTY DOTA_CHAT_MESSAGE = 84 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_COMPENDIUM_LEVEL DOTA_CHAT_MESSAGE = 85 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_VICTORY_PREDICTION_STREAK DOTA_CHAT_MESSAGE = 86 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ASSASSIN_ANNOUNCE DOTA_CHAT_MESSAGE = 87 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ASSASSIN_SUCCESS DOTA_CHAT_MESSAGE = 88 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ASSASSIN_DENIED DOTA_CHAT_MESSAGE = 89 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_VICTORY_PREDICTION_SINGLE_USER_CONFIRM DOTA_CHAT_MESSAGE = 90 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_EFFIGY_KILL DOTA_CHAT_MESSAGE = 91 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_VOICE_TEXT_BANNED_OVERFLOW DOTA_CHAT_MESSAGE = 92 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_YEAR_BEAST_KILLED DOTA_CHAT_MESSAGE = 93 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_PAUSE_COUNTDOWN DOTA_CHAT_MESSAGE = 94 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_COINS_WAGERED DOTA_CHAT_MESSAGE = 95 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HERO_NOMINATED_BAN DOTA_CHAT_MESSAGE = 96 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HERO_BANNED DOTA_CHAT_MESSAGE = 97 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HERO_BAN_COUNT DOTA_CHAT_MESSAGE = 98 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_RIVER_PAINTED DOTA_CHAT_MESSAGE = 99 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_SCAN_USED DOTA_CHAT_MESSAGE = 100 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_SHRINE_KILLED DOTA_CHAT_MESSAGE = 101 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_WAGER_TOKEN_SPENT DOTA_CHAT_MESSAGE = 102 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_RANK_WAGER DOTA_CHAT_MESSAGE = 103 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_NEW_PLAYER_REMINDER DOTA_CHAT_MESSAGE = 104 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_OBSERVER_WARD_KILLED DOTA_CHAT_MESSAGE = 105 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_SENTRY_WARD_KILLED DOTA_CHAT_MESSAGE = 106 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ITEM_PLACED_IN_NEUTRAL_STASH DOTA_CHAT_MESSAGE = 107 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HERO_CHOICE_INVALID DOTA_CHAT_MESSAGE = 108 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_BOUNTY DOTA_CHAT_MESSAGE = 109 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ABILITY_DRAFT_START DOTA_CHAT_MESSAGE = 110 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_HERO_FOUND_CANDY DOTA_CHAT_MESSAGE = 111 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_ABILITY_DRAFT_RANDOMED DOTA_CHAT_MESSAGE = 112 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_PRIVATE_COACH_CONNECTED DOTA_CHAT_MESSAGE = 113 DOTA_CHAT_MESSAGE_CHAT_MESSAGE_CANT_PAUSE_TOO_EARLY DOTA_CHAT_MESSAGE = 115 ) // Enum value maps for DOTA_CHAT_MESSAGE. var ( DOTA_CHAT_MESSAGE_name = map[int32]string{ -1: "CHAT_MESSAGE_INVALID", 0: "CHAT_MESSAGE_HERO_KILL", 1: "CHAT_MESSAGE_HERO_DENY", 2: "CHAT_MESSAGE_BARRACKS_KILL", 3: "CHAT_MESSAGE_TOWER_KILL", 4: "CHAT_MESSAGE_TOWER_DENY", 5: "CHAT_MESSAGE_FIRSTBLOOD", 6: "CHAT_MESSAGE_STREAK_KILL", 7: "CHAT_MESSAGE_BUYBACK", 8: "CHAT_MESSAGE_AEGIS", 9: "CHAT_MESSAGE_ROSHAN_KILL", 10: "CHAT_MESSAGE_COURIER_LOST", 11: "CHAT_MESSAGE_COURIER_RESPAWNED", 12: "CHAT_MESSAGE_GLYPH_USED", 13: "CHAT_MESSAGE_ITEM_PURCHASE", 14: "CHAT_MESSAGE_CONNECT", 15: "CHAT_MESSAGE_DISCONNECT", 16: "CHAT_MESSAGE_DISCONNECT_WAIT_FOR_RECONNECT", 17: "CHAT_MESSAGE_DISCONNECT_TIME_REMAINING", 18: "CHAT_MESSAGE_DISCONNECT_TIME_REMAINING_PLURAL", 19: "CHAT_MESSAGE_RECONNECT", 20: "CHAT_MESSAGE_PLAYER_LEFT", 21: "CHAT_MESSAGE_SAFE_TO_LEAVE", 22: "CHAT_MESSAGE_RUNE_PICKUP", 23: "CHAT_MESSAGE_RUNE_BOTTLE", 114: "CHAT_MESSAGE_RUNE_DENY", 24: "CHAT_MESSAGE_INTHEBAG", 25: "CHAT_MESSAGE_SECRETSHOP", 26: "CHAT_MESSAGE_ITEM_AUTOPURCHASED", 27: "CHAT_MESSAGE_ITEMS_COMBINED", 28: "CHAT_MESSAGE_SUPER_CREEPS", 29: "CHAT_MESSAGE_CANT_USE_ACTION_ITEM", 31: "CHAT_MESSAGE_CANTPAUSE", 32: "CHAT_MESSAGE_NOPAUSESLEFT", 33: "CHAT_MESSAGE_CANTPAUSEYET", 34: "CHAT_MESSAGE_PAUSED", 35: "CHAT_MESSAGE_UNPAUSE_COUNTDOWN", 36: "CHAT_MESSAGE_UNPAUSED", 37: "CHAT_MESSAGE_AUTO_UNPAUSED", 38: "CHAT_MESSAGE_YOUPAUSED", 39: "CHAT_MESSAGE_CANTUNPAUSETEAM", 41: "CHAT_MESSAGE_VOICE_TEXT_BANNED", 42: "CHAT_MESSAGE_SPECTATORS_WATCHING_THIS_GAME", 43: "CHAT_MESSAGE_REPORT_REMINDER", 44: "CHAT_MESSAGE_ECON_ITEM", 45: "CHAT_MESSAGE_TAUNT", 46: "CHAT_MESSAGE_RANDOM", 47: "CHAT_MESSAGE_RD_TURN", 49: "CHAT_MESSAGE_DROP_RATE_BONUS", 50: "CHAT_MESSAGE_NO_BATTLE_POINTS", 51: "CHAT_MESSAGE_DENIED_AEGIS", 52: "CHAT_MESSAGE_INFORMATIONAL", 53: "CHAT_MESSAGE_AEGIS_STOLEN", 54: "CHAT_MESSAGE_ROSHAN_CANDY", 55: "CHAT_MESSAGE_ITEM_GIFTED", 56: "CHAT_MESSAGE_HERO_KILL_WITH_GREEVIL", 57: "CHAT_MESSAGE_HOLDOUT_TOWER_DESTROYED", 58: "CHAT_MESSAGE_HOLDOUT_WALL_DESTROYED", 59: "CHAT_MESSAGE_HOLDOUT_WALL_FINISHED", 62: "CHAT_MESSAGE_PLAYER_LEFT_LIMITED_HERO", 63: "CHAT_MESSAGE_ABANDON_LIMITED_HERO_EXPLANATION", 64: "CHAT_MESSAGE_DISCONNECT_LIMITED_HERO", 65: "CHAT_MESSAGE_LOW_PRIORITY_COMPLETED_EXPLANATION", 66: "CHAT_MESSAGE_RECRUITMENT_DROP_RATE_BONUS", 67: "CHAT_MESSAGE_FROSTIVUS_SHINING_BOOSTER_ACTIVE", 73: "CHAT_MESSAGE_PLAYER_LEFT_AFK", 74: "CHAT_MESSAGE_PLAYER_LEFT_DISCONNECTED_TOO_LONG", 75: "CHAT_MESSAGE_PLAYER_ABANDONED", 76: "CHAT_MESSAGE_PLAYER_ABANDONED_AFK", 77: "CHAT_MESSAGE_PLAYER_ABANDONED_DISCONNECTED_TOO_LONG", 78: "CHAT_MESSAGE_WILL_NOT_BE_SCORED", 79: "CHAT_MESSAGE_WILL_NOT_BE_SCORED_RANKED", 80: "CHAT_MESSAGE_WILL_NOT_BE_SCORED_NETWORK", 81: "CHAT_MESSAGE_WILL_NOT_BE_SCORED_NETWORK_RANKED", 82: "CHAT_MESSAGE_CAN_QUIT_WITHOUT_ABANDON", 83: "CHAT_MESSAGE_RANKED_GAME_STILL_SCORED_LEAVERS_GET_LOSS", 84: "CHAT_MESSAGE_ABANDON_RANKED_BEFORE_FIRST_BLOOD_PARTY", 85: "CHAT_MESSAGE_COMPENDIUM_LEVEL", 86: "CHAT_MESSAGE_VICTORY_PREDICTION_STREAK", 87: "CHAT_MESSAGE_ASSASSIN_ANNOUNCE", 88: "CHAT_MESSAGE_ASSASSIN_SUCCESS", 89: "CHAT_MESSAGE_ASSASSIN_DENIED", 90: "CHAT_MESSAGE_VICTORY_PREDICTION_SINGLE_USER_CONFIRM", 91: "CHAT_MESSAGE_EFFIGY_KILL", 92: "CHAT_MESSAGE_VOICE_TEXT_BANNED_OVERFLOW", 93: "CHAT_MESSAGE_YEAR_BEAST_KILLED", 94: "CHAT_MESSAGE_PAUSE_COUNTDOWN", 95: "CHAT_MESSAGE_COINS_WAGERED", 96: "CHAT_MESSAGE_HERO_NOMINATED_BAN", 97: "CHAT_MESSAGE_HERO_BANNED", 98: "CHAT_MESSAGE_HERO_BAN_COUNT", 99: "CHAT_MESSAGE_RIVER_PAINTED", 100: "CHAT_MESSAGE_SCAN_USED", 101: "CHAT_MESSAGE_SHRINE_KILLED", 102: "CHAT_MESSAGE_WAGER_TOKEN_SPENT", 103: "CHAT_MESSAGE_RANK_WAGER", 104: "CHAT_MESSAGE_NEW_PLAYER_REMINDER", 105: "CHAT_MESSAGE_OBSERVER_WARD_KILLED", 106: "CHAT_MESSAGE_SENTRY_WARD_KILLED", 107: "CHAT_MESSAGE_ITEM_PLACED_IN_NEUTRAL_STASH", 108: "CHAT_MESSAGE_HERO_CHOICE_INVALID", 109: "CHAT_MESSAGE_BOUNTY", 110: "CHAT_MESSAGE_ABILITY_DRAFT_START", 111: "CHAT_MESSAGE_HERO_FOUND_CANDY", 112: "CHAT_MESSAGE_ABILITY_DRAFT_RANDOMED", 113: "CHAT_MESSAGE_PRIVATE_COACH_CONNECTED", 115: "CHAT_MESSAGE_CANT_PAUSE_TOO_EARLY", } DOTA_CHAT_MESSAGE_value = map[string]int32{ "CHAT_MESSAGE_INVALID": -1, "CHAT_MESSAGE_HERO_KILL": 0, "CHAT_MESSAGE_HERO_DENY": 1, "CHAT_MESSAGE_BARRACKS_KILL": 2, "CHAT_MESSAGE_TOWER_KILL": 3, "CHAT_MESSAGE_TOWER_DENY": 4, "CHAT_MESSAGE_FIRSTBLOOD": 5, "CHAT_MESSAGE_STREAK_KILL": 6, "CHAT_MESSAGE_BUYBACK": 7, "CHAT_MESSAGE_AEGIS": 8, "CHAT_MESSAGE_ROSHAN_KILL": 9, "CHAT_MESSAGE_COURIER_LOST": 10, "CHAT_MESSAGE_COURIER_RESPAWNED": 11, "CHAT_MESSAGE_GLYPH_USED": 12, "CHAT_MESSAGE_ITEM_PURCHASE": 13, "CHAT_MESSAGE_CONNECT": 14, "CHAT_MESSAGE_DISCONNECT": 15, "CHAT_MESSAGE_DISCONNECT_WAIT_FOR_RECONNECT": 16, "CHAT_MESSAGE_DISCONNECT_TIME_REMAINING": 17, "CHAT_MESSAGE_DISCONNECT_TIME_REMAINING_PLURAL": 18, "CHAT_MESSAGE_RECONNECT": 19, "CHAT_MESSAGE_PLAYER_LEFT": 20, "CHAT_MESSAGE_SAFE_TO_LEAVE": 21, "CHAT_MESSAGE_RUNE_PICKUP": 22, "CHAT_MESSAGE_RUNE_BOTTLE": 23, "CHAT_MESSAGE_RUNE_DENY": 114, "CHAT_MESSAGE_INTHEBAG": 24, "CHAT_MESSAGE_SECRETSHOP": 25, "CHAT_MESSAGE_ITEM_AUTOPURCHASED": 26, "CHAT_MESSAGE_ITEMS_COMBINED": 27, "CHAT_MESSAGE_SUPER_CREEPS": 28, "CHAT_MESSAGE_CANT_USE_ACTION_ITEM": 29, "CHAT_MESSAGE_CANTPAUSE": 31, "CHAT_MESSAGE_NOPAUSESLEFT": 32, "CHAT_MESSAGE_CANTPAUSEYET": 33, "CHAT_MESSAGE_PAUSED": 34, "CHAT_MESSAGE_UNPAUSE_COUNTDOWN": 35, "CHAT_MESSAGE_UNPAUSED": 36, "CHAT_MESSAGE_AUTO_UNPAUSED": 37, "CHAT_MESSAGE_YOUPAUSED": 38, "CHAT_MESSAGE_CANTUNPAUSETEAM": 39, "CHAT_MESSAGE_VOICE_TEXT_BANNED": 41, "CHAT_MESSAGE_SPECTATORS_WATCHING_THIS_GAME": 42, "CHAT_MESSAGE_REPORT_REMINDER": 43, "CHAT_MESSAGE_ECON_ITEM": 44, "CHAT_MESSAGE_TAUNT": 45, "CHAT_MESSAGE_RANDOM": 46, "CHAT_MESSAGE_RD_TURN": 47, "CHAT_MESSAGE_DROP_RATE_BONUS": 49, "CHAT_MESSAGE_NO_BATTLE_POINTS": 50, "CHAT_MESSAGE_DENIED_AEGIS": 51, "CHAT_MESSAGE_INFORMATIONAL": 52, "CHAT_MESSAGE_AEGIS_STOLEN": 53, "CHAT_MESSAGE_ROSHAN_CANDY": 54, "CHAT_MESSAGE_ITEM_GIFTED": 55, "CHAT_MESSAGE_HERO_KILL_WITH_GREEVIL": 56, "CHAT_MESSAGE_HOLDOUT_TOWER_DESTROYED": 57, "CHAT_MESSAGE_HOLDOUT_WALL_DESTROYED": 58, "CHAT_MESSAGE_HOLDOUT_WALL_FINISHED": 59, "CHAT_MESSAGE_PLAYER_LEFT_LIMITED_HERO": 62, "CHAT_MESSAGE_ABANDON_LIMITED_HERO_EXPLANATION": 63, "CHAT_MESSAGE_DISCONNECT_LIMITED_HERO": 64, "CHAT_MESSAGE_LOW_PRIORITY_COMPLETED_EXPLANATION": 65, "CHAT_MESSAGE_RECRUITMENT_DROP_RATE_BONUS": 66, "CHAT_MESSAGE_FROSTIVUS_SHINING_BOOSTER_ACTIVE": 67, "CHAT_MESSAGE_PLAYER_LEFT_AFK": 73, "CHAT_MESSAGE_PLAYER_LEFT_DISCONNECTED_TOO_LONG": 74, "CHAT_MESSAGE_PLAYER_ABANDONED": 75, "CHAT_MESSAGE_PLAYER_ABANDONED_AFK": 76, "CHAT_MESSAGE_PLAYER_ABANDONED_DISCONNECTED_TOO_LONG": 77, "CHAT_MESSAGE_WILL_NOT_BE_SCORED": 78, "CHAT_MESSAGE_WILL_NOT_BE_SCORED_RANKED": 79, "CHAT_MESSAGE_WILL_NOT_BE_SCORED_NETWORK": 80, "CHAT_MESSAGE_WILL_NOT_BE_SCORED_NETWORK_RANKED": 81, "CHAT_MESSAGE_CAN_QUIT_WITHOUT_ABANDON": 82, "CHAT_MESSAGE_RANKED_GAME_STILL_SCORED_LEAVERS_GET_LOSS": 83, "CHAT_MESSAGE_ABANDON_RANKED_BEFORE_FIRST_BLOOD_PARTY": 84, "CHAT_MESSAGE_COMPENDIUM_LEVEL": 85, "CHAT_MESSAGE_VICTORY_PREDICTION_STREAK": 86, "CHAT_MESSAGE_ASSASSIN_ANNOUNCE": 87, "CHAT_MESSAGE_ASSASSIN_SUCCESS": 88, "CHAT_MESSAGE_ASSASSIN_DENIED": 89, "CHAT_MESSAGE_VICTORY_PREDICTION_SINGLE_USER_CONFIRM": 90, "CHAT_MESSAGE_EFFIGY_KILL": 91, "CHAT_MESSAGE_VOICE_TEXT_BANNED_OVERFLOW": 92, "CHAT_MESSAGE_YEAR_BEAST_KILLED": 93, "CHAT_MESSAGE_PAUSE_COUNTDOWN": 94, "CHAT_MESSAGE_COINS_WAGERED": 95, "CHAT_MESSAGE_HERO_NOMINATED_BAN": 96, "CHAT_MESSAGE_HERO_BANNED": 97, "CHAT_MESSAGE_HERO_BAN_COUNT": 98, "CHAT_MESSAGE_RIVER_PAINTED": 99, "CHAT_MESSAGE_SCAN_USED": 100, "CHAT_MESSAGE_SHRINE_KILLED": 101, "CHAT_MESSAGE_WAGER_TOKEN_SPENT": 102, "CHAT_MESSAGE_RANK_WAGER": 103, "CHAT_MESSAGE_NEW_PLAYER_REMINDER": 104, "CHAT_MESSAGE_OBSERVER_WARD_KILLED": 105, "CHAT_MESSAGE_SENTRY_WARD_KILLED": 106, "CHAT_MESSAGE_ITEM_PLACED_IN_NEUTRAL_STASH": 107, "CHAT_MESSAGE_HERO_CHOICE_INVALID": 108, "CHAT_MESSAGE_BOUNTY": 109, "CHAT_MESSAGE_ABILITY_DRAFT_START": 110, "CHAT_MESSAGE_HERO_FOUND_CANDY": 111, "CHAT_MESSAGE_ABILITY_DRAFT_RANDOMED": 112, "CHAT_MESSAGE_PRIVATE_COACH_CONNECTED": 113, "CHAT_MESSAGE_CANT_PAUSE_TOO_EARLY": 115, } ) func (x DOTA_CHAT_MESSAGE) Enum() *DOTA_CHAT_MESSAGE { p := new(DOTA_CHAT_MESSAGE) *p = x return p } func (x DOTA_CHAT_MESSAGE) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DOTA_CHAT_MESSAGE) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[1].Descriptor() } func (DOTA_CHAT_MESSAGE) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[1] } func (x DOTA_CHAT_MESSAGE) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *DOTA_CHAT_MESSAGE) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = DOTA_CHAT_MESSAGE(num) return nil } // Deprecated: Use DOTA_CHAT_MESSAGE.Descriptor instead. func (DOTA_CHAT_MESSAGE) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{1} } type DOTA_NO_BATTLE_POINTS_REASONS int32 const ( DOTA_NO_BATTLE_POINTS_REASONS_NO_BATTLE_POINTS_WRONG_LOBBY_TYPE DOTA_NO_BATTLE_POINTS_REASONS = 1 DOTA_NO_BATTLE_POINTS_REASONS_NO_BATTLE_POINTS_PRACTICE_BOTS DOTA_NO_BATTLE_POINTS_REASONS = 2 DOTA_NO_BATTLE_POINTS_REASONS_NO_BATTLE_POINTS_CHEATS_ENABLED DOTA_NO_BATTLE_POINTS_REASONS = 3 DOTA_NO_BATTLE_POINTS_REASONS_NO_BATTLE_POINTS_LOW_PRIORITY DOTA_NO_BATTLE_POINTS_REASONS = 4 ) // Enum value maps for DOTA_NO_BATTLE_POINTS_REASONS. var ( DOTA_NO_BATTLE_POINTS_REASONS_name = map[int32]string{ 1: "NO_BATTLE_POINTS_WRONG_LOBBY_TYPE", 2: "NO_BATTLE_POINTS_PRACTICE_BOTS", 3: "NO_BATTLE_POINTS_CHEATS_ENABLED", 4: "NO_BATTLE_POINTS_LOW_PRIORITY", } DOTA_NO_BATTLE_POINTS_REASONS_value = map[string]int32{ "NO_BATTLE_POINTS_WRONG_LOBBY_TYPE": 1, "NO_BATTLE_POINTS_PRACTICE_BOTS": 2, "NO_BATTLE_POINTS_CHEATS_ENABLED": 3, "NO_BATTLE_POINTS_LOW_PRIORITY": 4, } ) func (x DOTA_NO_BATTLE_POINTS_REASONS) Enum() *DOTA_NO_BATTLE_POINTS_REASONS { p := new(DOTA_NO_BATTLE_POINTS_REASONS) *p = x return p } func (x DOTA_NO_BATTLE_POINTS_REASONS) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DOTA_NO_BATTLE_POINTS_REASONS) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[2].Descriptor() } func (DOTA_NO_BATTLE_POINTS_REASONS) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[2] } func (x DOTA_NO_BATTLE_POINTS_REASONS) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *DOTA_NO_BATTLE_POINTS_REASONS) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = DOTA_NO_BATTLE_POINTS_REASONS(num) return nil } // Deprecated: Use DOTA_NO_BATTLE_POINTS_REASONS.Descriptor instead. func (DOTA_NO_BATTLE_POINTS_REASONS) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{2} } type DOTA_CHAT_INFORMATIONAL int32 const ( DOTA_CHAT_INFORMATIONAL_INFO_COOP_BATTLE_POINTS_RULES DOTA_CHAT_INFORMATIONAL = 1 DOTA_CHAT_INFORMATIONAL_INFO_FROSTIVUS_ABANDON_REMINDER DOTA_CHAT_INFORMATIONAL = 2 DOTA_CHAT_INFORMATIONAL_INFO_RANKED_REMINDER DOTA_CHAT_INFORMATIONAL = 3 DOTA_CHAT_INFORMATIONAL_INFO_COOP_LOW_PRIORITY_PASSIVE_REMINDER DOTA_CHAT_INFORMATIONAL = 4 DOTA_CHAT_INFORMATIONAL_INFO_CUSTOM_GAME_PENALTY_REMINDER DOTA_CHAT_INFORMATIONAL = 5 ) // Enum value maps for DOTA_CHAT_INFORMATIONAL. var ( DOTA_CHAT_INFORMATIONAL_name = map[int32]string{ 1: "INFO_COOP_BATTLE_POINTS_RULES", 2: "INFO_FROSTIVUS_ABANDON_REMINDER", 3: "INFO_RANKED_REMINDER", 4: "INFO_COOP_LOW_PRIORITY_PASSIVE_REMINDER", 5: "INFO_CUSTOM_GAME_PENALTY_REMINDER", } DOTA_CHAT_INFORMATIONAL_value = map[string]int32{ "INFO_COOP_BATTLE_POINTS_RULES": 1, "INFO_FROSTIVUS_ABANDON_REMINDER": 2, "INFO_RANKED_REMINDER": 3, "INFO_COOP_LOW_PRIORITY_PASSIVE_REMINDER": 4, "INFO_CUSTOM_GAME_PENALTY_REMINDER": 5, } ) func (x DOTA_CHAT_INFORMATIONAL) Enum() *DOTA_CHAT_INFORMATIONAL { p := new(DOTA_CHAT_INFORMATIONAL) *p = x return p } func (x DOTA_CHAT_INFORMATIONAL) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DOTA_CHAT_INFORMATIONAL) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[3].Descriptor() } func (DOTA_CHAT_INFORMATIONAL) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[3] } func (x DOTA_CHAT_INFORMATIONAL) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *DOTA_CHAT_INFORMATIONAL) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = DOTA_CHAT_INFORMATIONAL(num) return nil } // Deprecated: Use DOTA_CHAT_INFORMATIONAL.Descriptor instead. func (DOTA_CHAT_INFORMATIONAL) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{3} } type DOTA_ABILITY_PING_TYPE int32 const ( DOTA_ABILITY_PING_TYPE_ABILITY_PING_READY DOTA_ABILITY_PING_TYPE = 1 DOTA_ABILITY_PING_TYPE_ABILITY_PING_MANA DOTA_ABILITY_PING_TYPE = 2 DOTA_ABILITY_PING_TYPE_ABILITY_PING_COOLDOWN DOTA_ABILITY_PING_TYPE = 3 DOTA_ABILITY_PING_TYPE_ABILITY_PING_ENEMY DOTA_ABILITY_PING_TYPE = 4 DOTA_ABILITY_PING_TYPE_ABILITY_PING_UNLEARNED DOTA_ABILITY_PING_TYPE = 5 DOTA_ABILITY_PING_TYPE_ABILITY_PING_INBACKPACK DOTA_ABILITY_PING_TYPE = 6 DOTA_ABILITY_PING_TYPE_ABILITY_PING_INSTASH DOTA_ABILITY_PING_TYPE = 7 DOTA_ABILITY_PING_TYPE_ABILITY_PING_ONCOURIER DOTA_ABILITY_PING_TYPE = 8 DOTA_ABILITY_PING_TYPE_ABILITY_PING_ALLY DOTA_ABILITY_PING_TYPE = 9 DOTA_ABILITY_PING_TYPE_ABILITY_PING_LEARN_READY DOTA_ABILITY_PING_TYPE = 10 DOTA_ABILITY_PING_TYPE_ABILITY_PING_WILL_LEARN DOTA_ABILITY_PING_TYPE = 11 DOTA_ABILITY_PING_TYPE_ABILITY_PING_FUTURE_LEARN DOTA_ABILITY_PING_TYPE = 12 DOTA_ABILITY_PING_TYPE_ABILITY_PING_NEUTRAL_OFFER DOTA_ABILITY_PING_TYPE = 13 DOTA_ABILITY_PING_TYPE_ABILITY_PING_NEUTRAL_REQUEST DOTA_ABILITY_PING_TYPE = 14 DOTA_ABILITY_PING_TYPE_ABILITY_PING_NEUTRAL_EQUIP DOTA_ABILITY_PING_TYPE = 15 ) // Enum value maps for DOTA_ABILITY_PING_TYPE. var ( DOTA_ABILITY_PING_TYPE_name = map[int32]string{ 1: "ABILITY_PING_READY", 2: "ABILITY_PING_MANA", 3: "ABILITY_PING_COOLDOWN", 4: "ABILITY_PING_ENEMY", 5: "ABILITY_PING_UNLEARNED", 6: "ABILITY_PING_INBACKPACK", 7: "ABILITY_PING_INSTASH", 8: "ABILITY_PING_ONCOURIER", 9: "ABILITY_PING_ALLY", 10: "ABILITY_PING_LEARN_READY", 11: "ABILITY_PING_WILL_LEARN", 12: "ABILITY_PING_FUTURE_LEARN", 13: "ABILITY_PING_NEUTRAL_OFFER", 14: "ABILITY_PING_NEUTRAL_REQUEST", 15: "ABILITY_PING_NEUTRAL_EQUIP", } DOTA_ABILITY_PING_TYPE_value = map[string]int32{ "ABILITY_PING_READY": 1, "ABILITY_PING_MANA": 2, "ABILITY_PING_COOLDOWN": 3, "ABILITY_PING_ENEMY": 4, "ABILITY_PING_UNLEARNED": 5, "ABILITY_PING_INBACKPACK": 6, "ABILITY_PING_INSTASH": 7, "ABILITY_PING_ONCOURIER": 8, "ABILITY_PING_ALLY": 9, "ABILITY_PING_LEARN_READY": 10, "ABILITY_PING_WILL_LEARN": 11, "ABILITY_PING_FUTURE_LEARN": 12, "ABILITY_PING_NEUTRAL_OFFER": 13, "ABILITY_PING_NEUTRAL_REQUEST": 14, "ABILITY_PING_NEUTRAL_EQUIP": 15, } ) func (x DOTA_ABILITY_PING_TYPE) Enum() *DOTA_ABILITY_PING_TYPE { p := new(DOTA_ABILITY_PING_TYPE) *p = x return p } func (x DOTA_ABILITY_PING_TYPE) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DOTA_ABILITY_PING_TYPE) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[4].Descriptor() } func (DOTA_ABILITY_PING_TYPE) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[4] } func (x DOTA_ABILITY_PING_TYPE) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *DOTA_ABILITY_PING_TYPE) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = DOTA_ABILITY_PING_TYPE(num) return nil } // Deprecated: Use DOTA_ABILITY_PING_TYPE.Descriptor instead. func (DOTA_ABILITY_PING_TYPE) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{4} } type DOTA_REPLAY_STATE_EVENT int32 const ( DOTA_REPLAY_STATE_EVENT_DOTA_REPLAY_STATE_EVENT_GAME_START DOTA_REPLAY_STATE_EVENT = 1 DOTA_REPLAY_STATE_EVENT_DOTA_REPLAY_STATE_EVENT_STARTING_HORN DOTA_REPLAY_STATE_EVENT = 2 DOTA_REPLAY_STATE_EVENT_DOTA_REPLAY_STATE_EVENT_FIRST_BLOOD DOTA_REPLAY_STATE_EVENT = 3 DOTA_REPLAY_STATE_EVENT_DOTA_REPLAY_STATE_EVENT_SHOWCASE DOTA_REPLAY_STATE_EVENT = 4 DOTA_REPLAY_STATE_EVENT_DOTA_REPLAY_STATE_EVENT_POST_GAME DOTA_REPLAY_STATE_EVENT = 5 DOTA_REPLAY_STATE_EVENT_DOTA_REPLAY_STATE_EVENT_WAIT_FOR_MAP DOTA_REPLAY_STATE_EVENT = 6 ) // Enum value maps for DOTA_REPLAY_STATE_EVENT. var ( DOTA_REPLAY_STATE_EVENT_name = map[int32]string{ 1: "DOTA_REPLAY_STATE_EVENT_GAME_START", 2: "DOTA_REPLAY_STATE_EVENT_STARTING_HORN", 3: "DOTA_REPLAY_STATE_EVENT_FIRST_BLOOD", 4: "DOTA_REPLAY_STATE_EVENT_SHOWCASE", 5: "DOTA_REPLAY_STATE_EVENT_POST_GAME", 6: "DOTA_REPLAY_STATE_EVENT_WAIT_FOR_MAP", } DOTA_REPLAY_STATE_EVENT_value = map[string]int32{ "DOTA_REPLAY_STATE_EVENT_GAME_START": 1, "DOTA_REPLAY_STATE_EVENT_STARTING_HORN": 2, "DOTA_REPLAY_STATE_EVENT_FIRST_BLOOD": 3, "DOTA_REPLAY_STATE_EVENT_SHOWCASE": 4, "DOTA_REPLAY_STATE_EVENT_POST_GAME": 5, "DOTA_REPLAY_STATE_EVENT_WAIT_FOR_MAP": 6, } ) func (x DOTA_REPLAY_STATE_EVENT) Enum() *DOTA_REPLAY_STATE_EVENT { p := new(DOTA_REPLAY_STATE_EVENT) *p = x return p } func (x DOTA_REPLAY_STATE_EVENT) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DOTA_REPLAY_STATE_EVENT) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[5].Descriptor() } func (DOTA_REPLAY_STATE_EVENT) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[5] } func (x DOTA_REPLAY_STATE_EVENT) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *DOTA_REPLAY_STATE_EVENT) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = DOTA_REPLAY_STATE_EVENT(num) return nil } // Deprecated: Use DOTA_REPLAY_STATE_EVENT.Descriptor instead. func (DOTA_REPLAY_STATE_EVENT) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{5} } type EDotaEntityMessages int32 const ( EDotaEntityMessages_DOTA_UNIT_SPEECH EDotaEntityMessages = 0 EDotaEntityMessages_DOTA_UNIT_SPEECH_MUTE EDotaEntityMessages = 1 EDotaEntityMessages_DOTA_UNIT_ADD_GESTURE EDotaEntityMessages = 2 EDotaEntityMessages_DOTA_UNIT_REMOVE_GESTURE EDotaEntityMessages = 3 EDotaEntityMessages_DOTA_UNIT_REMOVE_ALL_GESTURES EDotaEntityMessages = 4 EDotaEntityMessages_DOTA_UNIT_FADE_GESTURE EDotaEntityMessages = 6 EDotaEntityMessages_DOTA_UNIT_SPEECH_CLIENTSIDE_RULES EDotaEntityMessages = 7 ) // Enum value maps for EDotaEntityMessages. var ( EDotaEntityMessages_name = map[int32]string{ 0: "DOTA_UNIT_SPEECH", 1: "DOTA_UNIT_SPEECH_MUTE", 2: "DOTA_UNIT_ADD_GESTURE", 3: "DOTA_UNIT_REMOVE_GESTURE", 4: "DOTA_UNIT_REMOVE_ALL_GESTURES", 6: "DOTA_UNIT_FADE_GESTURE", 7: "DOTA_UNIT_SPEECH_CLIENTSIDE_RULES", } EDotaEntityMessages_value = map[string]int32{ "DOTA_UNIT_SPEECH": 0, "DOTA_UNIT_SPEECH_MUTE": 1, "DOTA_UNIT_ADD_GESTURE": 2, "DOTA_UNIT_REMOVE_GESTURE": 3, "DOTA_UNIT_REMOVE_ALL_GESTURES": 4, "DOTA_UNIT_FADE_GESTURE": 6, "DOTA_UNIT_SPEECH_CLIENTSIDE_RULES": 7, } ) func (x EDotaEntityMessages) Enum() *EDotaEntityMessages { p := new(EDotaEntityMessages) *p = x return p } func (x EDotaEntityMessages) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (EDotaEntityMessages) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[6].Descriptor() } func (EDotaEntityMessages) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[6] } func (x EDotaEntityMessages) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *EDotaEntityMessages) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = EDotaEntityMessages(num) return nil } // Deprecated: Use EDotaEntityMessages.Descriptor instead. func (EDotaEntityMessages) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{6} } type DOTA_OVERHEAD_ALERT int32 const ( DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_GOLD DOTA_OVERHEAD_ALERT = 0 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_DENY DOTA_OVERHEAD_ALERT = 1 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_CRITICAL DOTA_OVERHEAD_ALERT = 2 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_XP DOTA_OVERHEAD_ALERT = 3 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_BONUS_SPELL_DAMAGE DOTA_OVERHEAD_ALERT = 4 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_MISS DOTA_OVERHEAD_ALERT = 5 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_DAMAGE DOTA_OVERHEAD_ALERT = 6 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_EVADE DOTA_OVERHEAD_ALERT = 7 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_BLOCK DOTA_OVERHEAD_ALERT = 8 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_BONUS_POISON_DAMAGE DOTA_OVERHEAD_ALERT = 9 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_HEAL DOTA_OVERHEAD_ALERT = 10 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_MANA_ADD DOTA_OVERHEAD_ALERT = 11 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_MANA_LOSS DOTA_OVERHEAD_ALERT = 12 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_LAST_HIT_EARLY DOTA_OVERHEAD_ALERT = 13 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_LAST_HIT_CLOSE DOTA_OVERHEAD_ALERT = 14 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_LAST_HIT_MISS DOTA_OVERHEAD_ALERT = 15 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_MAGICAL_BLOCK DOTA_OVERHEAD_ALERT = 16 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_INCOMING_DAMAGE DOTA_OVERHEAD_ALERT = 17 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_OUTGOING_DAMAGE DOTA_OVERHEAD_ALERT = 18 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_DISABLE_RESIST DOTA_OVERHEAD_ALERT = 19 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_DEATH DOTA_OVERHEAD_ALERT = 20 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_BLOCKED DOTA_OVERHEAD_ALERT = 21 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_ITEM_RECEIVED DOTA_OVERHEAD_ALERT = 22 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_SHARD DOTA_OVERHEAD_ALERT = 23 DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_DEADLY_BLOW DOTA_OVERHEAD_ALERT = 24 ) // Enum value maps for DOTA_OVERHEAD_ALERT. var ( DOTA_OVERHEAD_ALERT_name = map[int32]string{ 0: "OVERHEAD_ALERT_GOLD", 1: "OVERHEAD_ALERT_DENY", 2: "OVERHEAD_ALERT_CRITICAL", 3: "OVERHEAD_ALERT_XP", 4: "OVERHEAD_ALERT_BONUS_SPELL_DAMAGE", 5: "OVERHEAD_ALERT_MISS", 6: "OVERHEAD_ALERT_DAMAGE", 7: "OVERHEAD_ALERT_EVADE", 8: "OVERHEAD_ALERT_BLOCK", 9: "OVERHEAD_ALERT_BONUS_POISON_DAMAGE", 10: "OVERHEAD_ALERT_HEAL", 11: "OVERHEAD_ALERT_MANA_ADD", 12: "OVERHEAD_ALERT_MANA_LOSS", 13: "OVERHEAD_ALERT_LAST_HIT_EARLY", 14: "OVERHEAD_ALERT_LAST_HIT_CLOSE", 15: "OVERHEAD_ALERT_LAST_HIT_MISS", 16: "OVERHEAD_ALERT_MAGICAL_BLOCK", 17: "OVERHEAD_ALERT_INCOMING_DAMAGE", 18: "OVERHEAD_ALERT_OUTGOING_DAMAGE", 19: "OVERHEAD_ALERT_DISABLE_RESIST", 20: "OVERHEAD_ALERT_DEATH", 21: "OVERHEAD_ALERT_BLOCKED", 22: "OVERHEAD_ALERT_ITEM_RECEIVED", 23: "OVERHEAD_ALERT_SHARD", 24: "OVERHEAD_ALERT_DEADLY_BLOW", } DOTA_OVERHEAD_ALERT_value = map[string]int32{ "OVERHEAD_ALERT_GOLD": 0, "OVERHEAD_ALERT_DENY": 1, "OVERHEAD_ALERT_CRITICAL": 2, "OVERHEAD_ALERT_XP": 3, "OVERHEAD_ALERT_BONUS_SPELL_DAMAGE": 4, "OVERHEAD_ALERT_MISS": 5, "OVERHEAD_ALERT_DAMAGE": 6, "OVERHEAD_ALERT_EVADE": 7, "OVERHEAD_ALERT_BLOCK": 8, "OVERHEAD_ALERT_BONUS_POISON_DAMAGE": 9, "OVERHEAD_ALERT_HEAL": 10, "OVERHEAD_ALERT_MANA_ADD": 11, "OVERHEAD_ALERT_MANA_LOSS": 12, "OVERHEAD_ALERT_LAST_HIT_EARLY": 13, "OVERHEAD_ALERT_LAST_HIT_CLOSE": 14, "OVERHEAD_ALERT_LAST_HIT_MISS": 15, "OVERHEAD_ALERT_MAGICAL_BLOCK": 16, "OVERHEAD_ALERT_INCOMING_DAMAGE": 17, "OVERHEAD_ALERT_OUTGOING_DAMAGE": 18, "OVERHEAD_ALERT_DISABLE_RESIST": 19, "OVERHEAD_ALERT_DEATH": 20, "OVERHEAD_ALERT_BLOCKED": 21, "OVERHEAD_ALERT_ITEM_RECEIVED": 22, "OVERHEAD_ALERT_SHARD": 23, "OVERHEAD_ALERT_DEADLY_BLOW": 24, } ) func (x DOTA_OVERHEAD_ALERT) Enum() *DOTA_OVERHEAD_ALERT { p := new(DOTA_OVERHEAD_ALERT) *p = x return p } func (x DOTA_OVERHEAD_ALERT) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DOTA_OVERHEAD_ALERT) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[7].Descriptor() } func (DOTA_OVERHEAD_ALERT) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[7] } func (x DOTA_OVERHEAD_ALERT) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *DOTA_OVERHEAD_ALERT) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = DOTA_OVERHEAD_ALERT(num) return nil } // Deprecated: Use DOTA_OVERHEAD_ALERT.Descriptor instead. func (DOTA_OVERHEAD_ALERT) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{7} } type DOTA_ROSHAN_PHASE int32 const ( DOTA_ROSHAN_PHASE_k_SRSP_ROSHAN_ALIVE DOTA_ROSHAN_PHASE = 0 DOTA_ROSHAN_PHASE_k_SRSP_ROSHAN_BASE_TIMER DOTA_ROSHAN_PHASE = 1 DOTA_ROSHAN_PHASE_k_SRSP_ROSHAN_VISIBLE_TIMER DOTA_ROSHAN_PHASE = 2 ) // Enum value maps for DOTA_ROSHAN_PHASE. var ( DOTA_ROSHAN_PHASE_name = map[int32]string{ 0: "k_SRSP_ROSHAN_ALIVE", 1: "k_SRSP_ROSHAN_BASE_TIMER", 2: "k_SRSP_ROSHAN_VISIBLE_TIMER", } DOTA_ROSHAN_PHASE_value = map[string]int32{ "k_SRSP_ROSHAN_ALIVE": 0, "k_SRSP_ROSHAN_BASE_TIMER": 1, "k_SRSP_ROSHAN_VISIBLE_TIMER": 2, } ) func (x DOTA_ROSHAN_PHASE) Enum() *DOTA_ROSHAN_PHASE { p := new(DOTA_ROSHAN_PHASE) *p = x return p } func (x DOTA_ROSHAN_PHASE) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DOTA_ROSHAN_PHASE) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[8].Descriptor() } func (DOTA_ROSHAN_PHASE) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[8] } func (x DOTA_ROSHAN_PHASE) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *DOTA_ROSHAN_PHASE) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = DOTA_ROSHAN_PHASE(num) return nil } // Deprecated: Use DOTA_ROSHAN_PHASE.Descriptor instead. func (DOTA_ROSHAN_PHASE) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{8} } type DOTA_POSITION_CATEGORY int32 const ( DOTA_POSITION_CATEGORY_DOTA_POSITION_NONE DOTA_POSITION_CATEGORY = 0 DOTA_POSITION_CATEGORY_DOTA_POSITION_BOTTOM_LANE DOTA_POSITION_CATEGORY = 1 DOTA_POSITION_CATEGORY_DOTA_POSITION_MID_LANE DOTA_POSITION_CATEGORY = 2 DOTA_POSITION_CATEGORY_DOTA_POSITION_TOP_LANE DOTA_POSITION_CATEGORY = 3 DOTA_POSITION_CATEGORY_DOTA_POSITION_RADIANT_JUNGLE DOTA_POSITION_CATEGORY = 4 DOTA_POSITION_CATEGORY_DOTA_POSITION_DIRE_JUNGLE DOTA_POSITION_CATEGORY = 5 DOTA_POSITION_CATEGORY_DOTA_POSITION_RADIANT_ANCIENTS DOTA_POSITION_CATEGORY = 6 DOTA_POSITION_CATEGORY_DOTA_POSITION_DIRE_ANCIENTS DOTA_POSITION_CATEGORY = 7 DOTA_POSITION_CATEGORY_DOTA_POSITION_RADIANT_SECRET_SHOP DOTA_POSITION_CATEGORY = 8 DOTA_POSITION_CATEGORY_DOTA_POSITION_DIRE_SECRET_SHOP DOTA_POSITION_CATEGORY = 9 DOTA_POSITION_CATEGORY_DOTA_POSITION_RIVER DOTA_POSITION_CATEGORY = 10 DOTA_POSITION_CATEGORY_DOTA_POSITION_ROSHAN_PIT DOTA_POSITION_CATEGORY = 11 DOTA_POSITION_CATEGORY_DOTA_POSITION_RADIANT_BASE DOTA_POSITION_CATEGORY = 12 DOTA_POSITION_CATEGORY_DOTA_POSITION_DIRE_BASE DOTA_POSITION_CATEGORY = 13 DOTA_POSITION_CATEGORY_DOTA_POSITION_FOUNTAIN DOTA_POSITION_CATEGORY = 14 DOTA_POSITION_CATEGORY_DOTA_POSITION_OTHER DOTA_POSITION_CATEGORY = 15 ) // Enum value maps for DOTA_POSITION_CATEGORY. var ( DOTA_POSITION_CATEGORY_name = map[int32]string{ 0: "DOTA_POSITION_NONE", 1: "DOTA_POSITION_BOTTOM_LANE", 2: "DOTA_POSITION_MID_LANE", 3: "DOTA_POSITION_TOP_LANE", 4: "DOTA_POSITION_RADIANT_JUNGLE", 5: "DOTA_POSITION_DIRE_JUNGLE", 6: "DOTA_POSITION_RADIANT_ANCIENTS", 7: "DOTA_POSITION_DIRE_ANCIENTS", 8: "DOTA_POSITION_RADIANT_SECRET_SHOP", 9: "DOTA_POSITION_DIRE_SECRET_SHOP", 10: "DOTA_POSITION_RIVER", 11: "DOTA_POSITION_ROSHAN_PIT", 12: "DOTA_POSITION_RADIANT_BASE", 13: "DOTA_POSITION_DIRE_BASE", 14: "DOTA_POSITION_FOUNTAIN", 15: "DOTA_POSITION_OTHER", } DOTA_POSITION_CATEGORY_value = map[string]int32{ "DOTA_POSITION_NONE": 0, "DOTA_POSITION_BOTTOM_LANE": 1, "DOTA_POSITION_MID_LANE": 2, "DOTA_POSITION_TOP_LANE": 3, "DOTA_POSITION_RADIANT_JUNGLE": 4, "DOTA_POSITION_DIRE_JUNGLE": 5, "DOTA_POSITION_RADIANT_ANCIENTS": 6, "DOTA_POSITION_DIRE_ANCIENTS": 7, "DOTA_POSITION_RADIANT_SECRET_SHOP": 8, "DOTA_POSITION_DIRE_SECRET_SHOP": 9, "DOTA_POSITION_RIVER": 10, "DOTA_POSITION_ROSHAN_PIT": 11, "DOTA_POSITION_RADIANT_BASE": 12, "DOTA_POSITION_DIRE_BASE": 13, "DOTA_POSITION_FOUNTAIN": 14, "DOTA_POSITION_OTHER": 15, } ) func (x DOTA_POSITION_CATEGORY) Enum() *DOTA_POSITION_CATEGORY { p := new(DOTA_POSITION_CATEGORY) *p = x return p } func (x DOTA_POSITION_CATEGORY) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DOTA_POSITION_CATEGORY) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[9].Descriptor() } func (DOTA_POSITION_CATEGORY) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[9] } func (x DOTA_POSITION_CATEGORY) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *DOTA_POSITION_CATEGORY) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = DOTA_POSITION_CATEGORY(num) return nil } // Deprecated: Use DOTA_POSITION_CATEGORY.Descriptor instead. func (DOTA_POSITION_CATEGORY) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{9} } type DOTA_ABILITY_TARGET_TYPE int32 const ( DOTA_ABILITY_TARGET_TYPE_DOTA_ABILITY_TARGET_NONE DOTA_ABILITY_TARGET_TYPE = 0 DOTA_ABILITY_TARGET_TYPE_DOTA_ABILITY_TARGET_SELF DOTA_ABILITY_TARGET_TYPE = 1 DOTA_ABILITY_TARGET_TYPE_DOTA_ABILITY_TARGET_ALLY_HERO DOTA_ABILITY_TARGET_TYPE = 2 DOTA_ABILITY_TARGET_TYPE_DOTA_ABILITY_TARGET_ALLY_CREEP DOTA_ABILITY_TARGET_TYPE = 3 DOTA_ABILITY_TARGET_TYPE_DOTA_ABILITY_TARGET_ENEMY_HERO DOTA_ABILITY_TARGET_TYPE = 4 DOTA_ABILITY_TARGET_TYPE_DOTA_ABILITY_TARGET_ENEMY_CREEP DOTA_ABILITY_TARGET_TYPE = 5 ) // Enum value maps for DOTA_ABILITY_TARGET_TYPE. var ( DOTA_ABILITY_TARGET_TYPE_name = map[int32]string{ 0: "DOTA_ABILITY_TARGET_NONE", 1: "DOTA_ABILITY_TARGET_SELF", 2: "DOTA_ABILITY_TARGET_ALLY_HERO", 3: "DOTA_ABILITY_TARGET_ALLY_CREEP", 4: "DOTA_ABILITY_TARGET_ENEMY_HERO", 5: "DOTA_ABILITY_TARGET_ENEMY_CREEP", } DOTA_ABILITY_TARGET_TYPE_value = map[string]int32{ "DOTA_ABILITY_TARGET_NONE": 0, "DOTA_ABILITY_TARGET_SELF": 1, "DOTA_ABILITY_TARGET_ALLY_HERO": 2, "DOTA_ABILITY_TARGET_ALLY_CREEP": 3, "DOTA_ABILITY_TARGET_ENEMY_HERO": 4, "DOTA_ABILITY_TARGET_ENEMY_CREEP": 5, } ) func (x DOTA_ABILITY_TARGET_TYPE) Enum() *DOTA_ABILITY_TARGET_TYPE { p := new(DOTA_ABILITY_TARGET_TYPE) *p = x return p } func (x DOTA_ABILITY_TARGET_TYPE) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (DOTA_ABILITY_TARGET_TYPE) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[10].Descriptor() } func (DOTA_ABILITY_TARGET_TYPE) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[10] } func (x DOTA_ABILITY_TARGET_TYPE) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *DOTA_ABILITY_TARGET_TYPE) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = DOTA_ABILITY_TARGET_TYPE(num) return nil } // Deprecated: Use DOTA_ABILITY_TARGET_TYPE.Descriptor instead. func (DOTA_ABILITY_TARGET_TYPE) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{10} } type EHeroStatType int32 const ( EHeroStatType_k_EHeroStatType_None EHeroStatType = 0 EHeroStatType_k_EHeroStatType_AxeTotalDamage EHeroStatType = 2000 EHeroStatType_k_EHeroStatType_BattleHungerDamage EHeroStatType = 2001 EHeroStatType_k_EHeroStatType_CounterHelixDamage EHeroStatType = 2002 EHeroStatType_k_EHeroStatType_CullingBladeDamage EHeroStatType = 2003 EHeroStatType_k_EHeroStatType_BerserkersCallCastCount EHeroStatType = 2004 EHeroStatType_k_EHeroStatType_BerserkersCallHeroesHitAverage EHeroStatType = 2005 EHeroStatType_k_EHeroStatType_BerserkersCallOtherUnitsHit EHeroStatType = 2006 EHeroStatType_k_EHeroStatType_BerserkersCallHeroAttacksTaken EHeroStatType = 2007 EHeroStatType_k_EHeroStatType_BerserkersCallOtherAttacksTaken EHeroStatType = 2008 EHeroStatType_k_EHeroStatType_BattleHungerCastCount EHeroStatType = 2009 EHeroStatType_k_EHeroStatType_BattleHungerPotentialDuration EHeroStatType = 2010 EHeroStatType_k_EHeroStatType_BattleHungerAverageDuration EHeroStatType = 2011 EHeroStatType_k_EHeroStatType_CounterHelixProcCount EHeroStatType = 2012 EHeroStatType_k_EHeroStatType_CounterHelixHeroProcCount EHeroStatType = 2013 EHeroStatType_k_EHeroStatType_CounterHelixHeroesHitAverage EHeroStatType = 2014 EHeroStatType_k_EHeroStatType_CounterHelixOtherUnitsHitCount EHeroStatType = 2015 EHeroStatType_k_EHeroStatType_CullingBladeCastCount EHeroStatType = 2016 EHeroStatType_k_EHeroStatType_CullingBladeKillCount EHeroStatType = 2017 EHeroStatType_k_EHeroStatType_CullingBladeAverageHealthCulled EHeroStatType = 2018 EHeroStatType_k_EHeroStatType_CullingBladeAverageDamageAvailable EHeroStatType = 2019 EHeroStatType_k_EHeroStatType_CullingBladeHeroBuffAverage EHeroStatType = 2020 ) // Enum value maps for EHeroStatType. var ( EHeroStatType_name = map[int32]string{ 0: "k_EHeroStatType_None", 2000: "k_EHeroStatType_AxeTotalDamage", 2001: "k_EHeroStatType_BattleHungerDamage", 2002: "k_EHeroStatType_CounterHelixDamage", 2003: "k_EHeroStatType_CullingBladeDamage", 2004: "k_EHeroStatType_BerserkersCallCastCount", 2005: "k_EHeroStatType_BerserkersCallHeroesHitAverage", 2006: "k_EHeroStatType_BerserkersCallOtherUnitsHit", 2007: "k_EHeroStatType_BerserkersCallHeroAttacksTaken", 2008: "k_EHeroStatType_BerserkersCallOtherAttacksTaken", 2009: "k_EHeroStatType_BattleHungerCastCount", 2010: "k_EHeroStatType_BattleHungerPotentialDuration", 2011: "k_EHeroStatType_BattleHungerAverageDuration", 2012: "k_EHeroStatType_CounterHelixProcCount", 2013: "k_EHeroStatType_CounterHelixHeroProcCount", 2014: "k_EHeroStatType_CounterHelixHeroesHitAverage", 2015: "k_EHeroStatType_CounterHelixOtherUnitsHitCount", 2016: "k_EHeroStatType_CullingBladeCastCount", 2017: "k_EHeroStatType_CullingBladeKillCount", 2018: "k_EHeroStatType_CullingBladeAverageHealthCulled", 2019: "k_EHeroStatType_CullingBladeAverageDamageAvailable", 2020: "k_EHeroStatType_CullingBladeHeroBuffAverage", } EHeroStatType_value = map[string]int32{ "k_EHeroStatType_None": 0, "k_EHeroStatType_AxeTotalDamage": 2000, "k_EHeroStatType_BattleHungerDamage": 2001, "k_EHeroStatType_CounterHelixDamage": 2002, "k_EHeroStatType_CullingBladeDamage": 2003, "k_EHeroStatType_BerserkersCallCastCount": 2004, "k_EHeroStatType_BerserkersCallHeroesHitAverage": 2005, "k_EHeroStatType_BerserkersCallOtherUnitsHit": 2006, "k_EHeroStatType_BerserkersCallHeroAttacksTaken": 2007, "k_EHeroStatType_BerserkersCallOtherAttacksTaken": 2008, "k_EHeroStatType_BattleHungerCastCount": 2009, "k_EHeroStatType_BattleHungerPotentialDuration": 2010, "k_EHeroStatType_BattleHungerAverageDuration": 2011, "k_EHeroStatType_CounterHelixProcCount": 2012, "k_EHeroStatType_CounterHelixHeroProcCount": 2013, "k_EHeroStatType_CounterHelixHeroesHitAverage": 2014, "k_EHeroStatType_CounterHelixOtherUnitsHitCount": 2015, "k_EHeroStatType_CullingBladeCastCount": 2016, "k_EHeroStatType_CullingBladeKillCount": 2017, "k_EHeroStatType_CullingBladeAverageHealthCulled": 2018, "k_EHeroStatType_CullingBladeAverageDamageAvailable": 2019, "k_EHeroStatType_CullingBladeHeroBuffAverage": 2020, } ) func (x EHeroStatType) Enum() *EHeroStatType { p := new(EHeroStatType) *p = x return p } func (x EHeroStatType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (EHeroStatType) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[11].Descriptor() } func (EHeroStatType) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[11] } func (x EHeroStatType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *EHeroStatType) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = EHeroStatType(num) return nil } // Deprecated: Use EHeroStatType.Descriptor instead. func (EHeroStatType) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{11} } type EPlayerVoiceListenState int32 const ( EPlayerVoiceListenState_kPVLS_None EPlayerVoiceListenState = 0 EPlayerVoiceListenState_kPVLS_DeniedChatBanned EPlayerVoiceListenState = 1 EPlayerVoiceListenState_kPVLS_DeniedPartner EPlayerVoiceListenState = 2 EPlayerVoiceListenState_kPVLS_DeniedHLTVTalkerNotSpectator EPlayerVoiceListenState = 3 EPlayerVoiceListenState_kPVLS_DeniedHLTVNoTalkerPlayerID EPlayerVoiceListenState = 4 EPlayerVoiceListenState_kPVLS_DeniedHLTVTalkerNotBroadcaster EPlayerVoiceListenState = 5 EPlayerVoiceListenState_kPVLS_DeniedTeamSpectator EPlayerVoiceListenState = 6 EPlayerVoiceListenState_kPVLS_DeniedStudent EPlayerVoiceListenState = 8 EPlayerVoiceListenState_kPVLS_DeniedPrivateCoach EPlayerVoiceListenState = 9 EPlayerVoiceListenState_kPVLS_Denied EPlayerVoiceListenState = 64 EPlayerVoiceListenState_kPVLS_AllowHLTVTalkerIsBroadcaster EPlayerVoiceListenState = 65 EPlayerVoiceListenState_kPVLS_AllowCoBroadcaster EPlayerVoiceListenState = 66 EPlayerVoiceListenState_kPVLS_AllowAllChat EPlayerVoiceListenState = 67 EPlayerVoiceListenState_kPVLS_AllowStudentToCoach EPlayerVoiceListenState = 68 EPlayerVoiceListenState_kPVLS_AllowFellowStudent EPlayerVoiceListenState = 69 EPlayerVoiceListenState_kPVLS_AllowTalkerIsCoach EPlayerVoiceListenState = 70 EPlayerVoiceListenState_kPVLS_AllowCoachHearTeam EPlayerVoiceListenState = 71 EPlayerVoiceListenState_kPVLS_AllowSameTeam EPlayerVoiceListenState = 72 EPlayerVoiceListenState_kPVLS_AllowShowcase EPlayerVoiceListenState = 73 EPlayerVoiceListenState_kPVLS_AllowPrivateCoach EPlayerVoiceListenState = 74 ) // Enum value maps for EPlayerVoiceListenState. var ( EPlayerVoiceListenState_name = map[int32]string{ 0: "kPVLS_None", 1: "kPVLS_DeniedChatBanned", 2: "kPVLS_DeniedPartner", 3: "kPVLS_DeniedHLTVTalkerNotSpectator", 4: "kPVLS_DeniedHLTVNoTalkerPlayerID", 5: "kPVLS_DeniedHLTVTalkerNotBroadcaster", 6: "kPVLS_DeniedTeamSpectator", 8: "kPVLS_DeniedStudent", 9: "kPVLS_DeniedPrivateCoach", 64: "kPVLS_Denied", 65: "kPVLS_AllowHLTVTalkerIsBroadcaster", 66: "kPVLS_AllowCoBroadcaster", 67: "kPVLS_AllowAllChat", 68: "kPVLS_AllowStudentToCoach", 69: "kPVLS_AllowFellowStudent", 70: "kPVLS_AllowTalkerIsCoach", 71: "kPVLS_AllowCoachHearTeam", 72: "kPVLS_AllowSameTeam", 73: "kPVLS_AllowShowcase", 74: "kPVLS_AllowPrivateCoach", } EPlayerVoiceListenState_value = map[string]int32{ "kPVLS_None": 0, "kPVLS_DeniedChatBanned": 1, "kPVLS_DeniedPartner": 2, "kPVLS_DeniedHLTVTalkerNotSpectator": 3, "kPVLS_DeniedHLTVNoTalkerPlayerID": 4, "kPVLS_DeniedHLTVTalkerNotBroadcaster": 5, "kPVLS_DeniedTeamSpectator": 6, "kPVLS_DeniedStudent": 8, "kPVLS_DeniedPrivateCoach": 9, "kPVLS_Denied": 64, "kPVLS_AllowHLTVTalkerIsBroadcaster": 65, "kPVLS_AllowCoBroadcaster": 66, "kPVLS_AllowAllChat": 67, "kPVLS_AllowStudentToCoach": 68, "kPVLS_AllowFellowStudent": 69, "kPVLS_AllowTalkerIsCoach": 70, "kPVLS_AllowCoachHearTeam": 71, "kPVLS_AllowSameTeam": 72, "kPVLS_AllowShowcase": 73, "kPVLS_AllowPrivateCoach": 74, } ) func (x EPlayerVoiceListenState) Enum() *EPlayerVoiceListenState { p := new(EPlayerVoiceListenState) *p = x return p } func (x EPlayerVoiceListenState) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (EPlayerVoiceListenState) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[12].Descriptor() } func (EPlayerVoiceListenState) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[12] } func (x EPlayerVoiceListenState) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *EPlayerVoiceListenState) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = EPlayerVoiceListenState(num) return nil } // Deprecated: Use EPlayerVoiceListenState.Descriptor instead. func (EPlayerVoiceListenState) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{12} } type EProjectionEvent int32 const ( EProjectionEvent_ePE_FirstBlood EProjectionEvent = 0 EProjectionEvent_ePE_Killstreak_godlike EProjectionEvent = 1 ) // Enum value maps for EProjectionEvent. var ( EProjectionEvent_name = map[int32]string{ 0: "ePE_FirstBlood", 1: "ePE_Killstreak_godlike", } EProjectionEvent_value = map[string]int32{ "ePE_FirstBlood": 0, "ePE_Killstreak_godlike": 1, } ) func (x EProjectionEvent) Enum() *EProjectionEvent { p := new(EProjectionEvent) *p = x return p } func (x EProjectionEvent) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (EProjectionEvent) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[13].Descriptor() } func (EProjectionEvent) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[13] } func (x EProjectionEvent) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *EProjectionEvent) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = EProjectionEvent(num) return nil } // Deprecated: Use EProjectionEvent.Descriptor instead. func (EProjectionEvent) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{13} } type CDOTAUserMsg_PredictionResult_Prediction_EResult int32 const ( CDOTAUserMsg_PredictionResult_Prediction_k_eResult_ItemGranted CDOTAUserMsg_PredictionResult_Prediction_EResult = 1 CDOTAUserMsg_PredictionResult_Prediction_k_eResult_Destroyed CDOTAUserMsg_PredictionResult_Prediction_EResult = 2 ) // Enum value maps for CDOTAUserMsg_PredictionResult_Prediction_EResult. var ( CDOTAUserMsg_PredictionResult_Prediction_EResult_name = map[int32]string{ 1: "k_eResult_ItemGranted", 2: "k_eResult_Destroyed", } CDOTAUserMsg_PredictionResult_Prediction_EResult_value = map[string]int32{ "k_eResult_ItemGranted": 1, "k_eResult_Destroyed": 2, } ) func (x CDOTAUserMsg_PredictionResult_Prediction_EResult) Enum() *CDOTAUserMsg_PredictionResult_Prediction_EResult { p := new(CDOTAUserMsg_PredictionResult_Prediction_EResult) *p = x return p } func (x CDOTAUserMsg_PredictionResult_Prediction_EResult) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CDOTAUserMsg_PredictionResult_Prediction_EResult) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[14].Descriptor() } func (CDOTAUserMsg_PredictionResult_Prediction_EResult) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[14] } func (x CDOTAUserMsg_PredictionResult_Prediction_EResult) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *CDOTAUserMsg_PredictionResult_Prediction_EResult) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = CDOTAUserMsg_PredictionResult_Prediction_EResult(num) return nil } // Deprecated: Use CDOTAUserMsg_PredictionResult_Prediction_EResult.Descriptor instead. func (CDOTAUserMsg_PredictionResult_Prediction_EResult) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{40, 0, 0} } type CDOTAResponseQuerySerialized_Fact_ValueType int32 const ( CDOTAResponseQuerySerialized_Fact_NUMERIC CDOTAResponseQuerySerialized_Fact_ValueType = 1 CDOTAResponseQuerySerialized_Fact_STRING CDOTAResponseQuerySerialized_Fact_ValueType = 2 CDOTAResponseQuerySerialized_Fact_STRINGTABLE_INDEX CDOTAResponseQuerySerialized_Fact_ValueType = 3 CDOTAResponseQuerySerialized_Fact_INT_NUMERIC CDOTAResponseQuerySerialized_Fact_ValueType = 4 ) // Enum value maps for CDOTAResponseQuerySerialized_Fact_ValueType. var ( CDOTAResponseQuerySerialized_Fact_ValueType_name = map[int32]string{ 1: "NUMERIC", 2: "STRING", 3: "STRINGTABLE_INDEX", 4: "INT_NUMERIC", } CDOTAResponseQuerySerialized_Fact_ValueType_value = map[string]int32{ "NUMERIC": 1, "STRING": 2, "STRINGTABLE_INDEX": 3, "INT_NUMERIC": 4, } ) func (x CDOTAResponseQuerySerialized_Fact_ValueType) Enum() *CDOTAResponseQuerySerialized_Fact_ValueType { p := new(CDOTAResponseQuerySerialized_Fact_ValueType) *p = x return p } func (x CDOTAResponseQuerySerialized_Fact_ValueType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CDOTAResponseQuerySerialized_Fact_ValueType) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[15].Descriptor() } func (CDOTAResponseQuerySerialized_Fact_ValueType) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[15] } func (x CDOTAResponseQuerySerialized_Fact_ValueType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *CDOTAResponseQuerySerialized_Fact_ValueType) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = CDOTAResponseQuerySerialized_Fact_ValueType(num) return nil } // Deprecated: Use CDOTAResponseQuerySerialized_Fact_ValueType.Descriptor instead. func (CDOTAResponseQuerySerialized_Fact_ValueType) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{41, 0, 0} } type CDOTAUserMsg_GuildChallenge_Progress_EChallengeType int32 const ( CDOTAUserMsg_GuildChallenge_Progress_k_EChallengeType_Invalid CDOTAUserMsg_GuildChallenge_Progress_EChallengeType = 0 CDOTAUserMsg_GuildChallenge_Progress_k_EChallengeType_Cooperative CDOTAUserMsg_GuildChallenge_Progress_EChallengeType = 1 CDOTAUserMsg_GuildChallenge_Progress_k_EChallengeType_Contract CDOTAUserMsg_GuildChallenge_Progress_EChallengeType = 2 ) // Enum value maps for CDOTAUserMsg_GuildChallenge_Progress_EChallengeType. var ( CDOTAUserMsg_GuildChallenge_Progress_EChallengeType_name = map[int32]string{ 0: "k_EChallengeType_Invalid", 1: "k_EChallengeType_Cooperative", 2: "k_EChallengeType_Contract", } CDOTAUserMsg_GuildChallenge_Progress_EChallengeType_value = map[string]int32{ "k_EChallengeType_Invalid": 0, "k_EChallengeType_Cooperative": 1, "k_EChallengeType_Contract": 2, } ) func (x CDOTAUserMsg_GuildChallenge_Progress_EChallengeType) Enum() *CDOTAUserMsg_GuildChallenge_Progress_EChallengeType { p := new(CDOTAUserMsg_GuildChallenge_Progress_EChallengeType) *p = x return p } func (x CDOTAUserMsg_GuildChallenge_Progress_EChallengeType) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } func (CDOTAUserMsg_GuildChallenge_Progress_EChallengeType) Descriptor() protoreflect.EnumDescriptor { return file_dota_usermessages_proto_enumTypes[16].Descriptor() } func (CDOTAUserMsg_GuildChallenge_Progress_EChallengeType) Type() protoreflect.EnumType { return &file_dota_usermessages_proto_enumTypes[16] } func (x CDOTAUserMsg_GuildChallenge_Progress_EChallengeType) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } // Deprecated: Do not use. func (x *CDOTAUserMsg_GuildChallenge_Progress_EChallengeType) UnmarshalJSON(b []byte) error { num, err := protoimpl.X.UnmarshalJSONEnum(x.Descriptor(), b) if err != nil { return err } *x = CDOTAUserMsg_GuildChallenge_Progress_EChallengeType(num) return nil } // Deprecated: Use CDOTAUserMsg_GuildChallenge_Progress_EChallengeType.Descriptor instead. func (CDOTAUserMsg_GuildChallenge_Progress_EChallengeType) EnumDescriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{144, 0} } type CDOTAUserMsg_AIDebugLine struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` } func (x *CDOTAUserMsg_AIDebugLine) Reset() { *x = CDOTAUserMsg_AIDebugLine{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_AIDebugLine) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_AIDebugLine) ProtoMessage() {} func (x *CDOTAUserMsg_AIDebugLine) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_AIDebugLine.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_AIDebugLine) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{0} } func (x *CDOTAUserMsg_AIDebugLine) GetMessage() string { if x != nil && x.Message != nil { return *x.Message } return "" } type CDOTAUserMsg_Ping struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ping *uint32 `protobuf:"varint,2,opt,name=ping" json:"ping,omitempty"` Loss *uint32 `protobuf:"varint,3,opt,name=loss" json:"loss,omitempty"` } func (x *CDOTAUserMsg_Ping) Reset() { *x = CDOTAUserMsg_Ping{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_Ping) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_Ping) ProtoMessage() {} func (x *CDOTAUserMsg_Ping) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_Ping.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_Ping) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{1} } func (x *CDOTAUserMsg_Ping) GetPing() uint32 { if x != nil && x.Ping != nil { return *x.Ping } return 0 } func (x *CDOTAUserMsg_Ping) GetLoss() uint32 { if x != nil && x.Loss != nil { return *x.Loss } return 0 } type CDOTAUserMsg_SwapVerify struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` } func (x *CDOTAUserMsg_SwapVerify) Reset() { *x = CDOTAUserMsg_SwapVerify{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SwapVerify) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SwapVerify) ProtoMessage() {} func (x *CDOTAUserMsg_SwapVerify) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SwapVerify.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SwapVerify) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{2} } func (x *CDOTAUserMsg_SwapVerify) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } type CDOTAUserMsg_ChatEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Type *DOTA_CHAT_MESSAGE `protobuf:"varint,1,req,name=type,enum=DOTA_CHAT_MESSAGE,def=-1" json:"type,omitempty"` Value *uint32 `protobuf:"varint,2,opt,name=value" json:"value,omitempty"` Playerid_1 *int32 `protobuf:"zigzag32,3,opt,name=playerid_1,json=playerid1,def=-1" json:"playerid_1,omitempty"` Playerid_2 *int32 `protobuf:"zigzag32,4,opt,name=playerid_2,json=playerid2,def=-1" json:"playerid_2,omitempty"` Playerid_3 *int32 `protobuf:"zigzag32,5,opt,name=playerid_3,json=playerid3,def=-1" json:"playerid_3,omitempty"` Playerid_4 *int32 `protobuf:"zigzag32,6,opt,name=playerid_4,json=playerid4,def=-1" json:"playerid_4,omitempty"` Playerid_5 *int32 `protobuf:"zigzag32,7,opt,name=playerid_5,json=playerid5,def=-1" json:"playerid_5,omitempty"` Playerid_6 *int32 `protobuf:"zigzag32,8,opt,name=playerid_6,json=playerid6,def=-1" json:"playerid_6,omitempty"` Value2 *uint32 `protobuf:"varint,9,opt,name=value2" json:"value2,omitempty"` Value3 *uint32 `protobuf:"varint,10,opt,name=value3" json:"value3,omitempty"` } // Default values for CDOTAUserMsg_ChatEvent fields. const ( Default_CDOTAUserMsg_ChatEvent_Type = DOTA_CHAT_MESSAGE_CHAT_MESSAGE_INVALID Default_CDOTAUserMsg_ChatEvent_Playerid_1 = int32(-1) Default_CDOTAUserMsg_ChatEvent_Playerid_2 = int32(-1) Default_CDOTAUserMsg_ChatEvent_Playerid_3 = int32(-1) Default_CDOTAUserMsg_ChatEvent_Playerid_4 = int32(-1) Default_CDOTAUserMsg_ChatEvent_Playerid_5 = int32(-1) Default_CDOTAUserMsg_ChatEvent_Playerid_6 = int32(-1) ) func (x *CDOTAUserMsg_ChatEvent) Reset() { *x = CDOTAUserMsg_ChatEvent{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ChatEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ChatEvent) ProtoMessage() {} func (x *CDOTAUserMsg_ChatEvent) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ChatEvent.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ChatEvent) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{3} } func (x *CDOTAUserMsg_ChatEvent) GetType() DOTA_CHAT_MESSAGE { if x != nil && x.Type != nil { return *x.Type } return Default_CDOTAUserMsg_ChatEvent_Type } func (x *CDOTAUserMsg_ChatEvent) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } func (x *CDOTAUserMsg_ChatEvent) GetPlayerid_1() int32 { if x != nil && x.Playerid_1 != nil { return *x.Playerid_1 } return Default_CDOTAUserMsg_ChatEvent_Playerid_1 } func (x *CDOTAUserMsg_ChatEvent) GetPlayerid_2() int32 { if x != nil && x.Playerid_2 != nil { return *x.Playerid_2 } return Default_CDOTAUserMsg_ChatEvent_Playerid_2 } func (x *CDOTAUserMsg_ChatEvent) GetPlayerid_3() int32 { if x != nil && x.Playerid_3 != nil { return *x.Playerid_3 } return Default_CDOTAUserMsg_ChatEvent_Playerid_3 } func (x *CDOTAUserMsg_ChatEvent) GetPlayerid_4() int32 { if x != nil && x.Playerid_4 != nil { return *x.Playerid_4 } return Default_CDOTAUserMsg_ChatEvent_Playerid_4 } func (x *CDOTAUserMsg_ChatEvent) GetPlayerid_5() int32 { if x != nil && x.Playerid_5 != nil { return *x.Playerid_5 } return Default_CDOTAUserMsg_ChatEvent_Playerid_5 } func (x *CDOTAUserMsg_ChatEvent) GetPlayerid_6() int32 { if x != nil && x.Playerid_6 != nil { return *x.Playerid_6 } return Default_CDOTAUserMsg_ChatEvent_Playerid_6 } func (x *CDOTAUserMsg_ChatEvent) GetValue2() uint32 { if x != nil && x.Value2 != nil { return *x.Value2 } return 0 } func (x *CDOTAUserMsg_ChatEvent) GetValue3() uint32 { if x != nil && x.Value3 != nil { return *x.Value3 } return 0 } type CDOTAUserMsg_BotChat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Message *string `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` Target *string `protobuf:"bytes,4,opt,name=target" json:"target,omitempty"` TeamOnly *bool `protobuf:"varint,5,opt,name=team_only,json=teamOnly" json:"team_only,omitempty"` } func (x *CDOTAUserMsg_BotChat) Reset() { *x = CDOTAUserMsg_BotChat{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_BotChat) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_BotChat) ProtoMessage() {} func (x *CDOTAUserMsg_BotChat) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_BotChat.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_BotChat) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{4} } func (x *CDOTAUserMsg_BotChat) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_BotChat) GetMessage() string { if x != nil && x.Message != nil { return *x.Message } return "" } func (x *CDOTAUserMsg_BotChat) GetTarget() string { if x != nil && x.Target != nil { return *x.Target } return "" } func (x *CDOTAUserMsg_BotChat) GetTeamOnly() bool { if x != nil && x.TeamOnly != nil { return *x.TeamOnly } return false } type CDOTAUserMsg_CombatHeroPositions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Index *uint32 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` Time *int32 `protobuf:"varint,2,opt,name=time" json:"time,omitempty"` WorldPos *CMsgVector2D `protobuf:"bytes,3,opt,name=world_pos,json=worldPos" json:"world_pos,omitempty"` Health *int32 `protobuf:"varint,4,opt,name=health" json:"health,omitempty"` } func (x *CDOTAUserMsg_CombatHeroPositions) Reset() { *x = CDOTAUserMsg_CombatHeroPositions{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CombatHeroPositions) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CombatHeroPositions) ProtoMessage() {} func (x *CDOTAUserMsg_CombatHeroPositions) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CombatHeroPositions.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CombatHeroPositions) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{5} } func (x *CDOTAUserMsg_CombatHeroPositions) GetIndex() uint32 { if x != nil && x.Index != nil { return *x.Index } return 0 } func (x *CDOTAUserMsg_CombatHeroPositions) GetTime() int32 { if x != nil && x.Time != nil { return *x.Time } return 0 } func (x *CDOTAUserMsg_CombatHeroPositions) GetWorldPos() *CMsgVector2D { if x != nil { return x.WorldPos } return nil } func (x *CDOTAUserMsg_CombatHeroPositions) GetHealth() int32 { if x != nil && x.Health != nil { return *x.Health } return 0 } type CDOTAUserMsg_CombatLogBulkData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CombatEntries []*CMsgDOTACombatLogEntry `protobuf:"bytes,1,rep,name=combat_entries,json=combatEntries" json:"combat_entries,omitempty"` Timestamp *float32 `protobuf:"fixed32,2,opt,name=timestamp" json:"timestamp,omitempty"` Duration *float32 `protobuf:"fixed32,3,opt,name=duration" json:"duration,omitempty"` PlayerId *int32 `protobuf:"varint,4,opt,name=player_id,json=playerId" json:"player_id,omitempty"` } func (x *CDOTAUserMsg_CombatLogBulkData) Reset() { *x = CDOTAUserMsg_CombatLogBulkData{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CombatLogBulkData) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CombatLogBulkData) ProtoMessage() {} func (x *CDOTAUserMsg_CombatLogBulkData) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CombatLogBulkData.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CombatLogBulkData) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{6} } func (x *CDOTAUserMsg_CombatLogBulkData) GetCombatEntries() []*CMsgDOTACombatLogEntry { if x != nil { return x.CombatEntries } return nil } func (x *CDOTAUserMsg_CombatLogBulkData) GetTimestamp() float32 { if x != nil && x.Timestamp != nil { return *x.Timestamp } return 0 } func (x *CDOTAUserMsg_CombatLogBulkData) GetDuration() float32 { if x != nil && x.Duration != nil { return *x.Duration } return 0 } func (x *CDOTAUserMsg_CombatLogBulkData) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } type CDOTAUserMsg_ProjectileParticleCPData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ControlPoint *int32 `protobuf:"varint,1,opt,name=control_point,json=controlPoint" json:"control_point,omitempty"` Vector *CMsgVector `protobuf:"bytes,2,opt,name=vector" json:"vector,omitempty"` } func (x *CDOTAUserMsg_ProjectileParticleCPData) Reset() { *x = CDOTAUserMsg_ProjectileParticleCPData{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ProjectileParticleCPData) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ProjectileParticleCPData) ProtoMessage() {} func (x *CDOTAUserMsg_ProjectileParticleCPData) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ProjectileParticleCPData.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ProjectileParticleCPData) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{7} } func (x *CDOTAUserMsg_ProjectileParticleCPData) GetControlPoint() int32 { if x != nil && x.ControlPoint != nil { return *x.ControlPoint } return 0 } func (x *CDOTAUserMsg_ProjectileParticleCPData) GetVector() *CMsgVector { if x != nil { return x.Vector } return nil } type CDOTAUserMsg_MiniKillCamInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Attackers []*CDOTAUserMsg_MiniKillCamInfo_Attacker `protobuf:"bytes,1,rep,name=attackers" json:"attackers,omitempty"` } func (x *CDOTAUserMsg_MiniKillCamInfo) Reset() { *x = CDOTAUserMsg_MiniKillCamInfo{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_MiniKillCamInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_MiniKillCamInfo) ProtoMessage() {} func (x *CDOTAUserMsg_MiniKillCamInfo) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_MiniKillCamInfo.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_MiniKillCamInfo) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{8} } func (x *CDOTAUserMsg_MiniKillCamInfo) GetAttackers() []*CDOTAUserMsg_MiniKillCamInfo_Attacker { if x != nil { return x.Attackers } return nil } type CDOTAUserMsg_GlobalLightColor struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Color *uint32 `protobuf:"varint,1,opt,name=color" json:"color,omitempty"` Duration *float32 `protobuf:"fixed32,2,opt,name=duration" json:"duration,omitempty"` } func (x *CDOTAUserMsg_GlobalLightColor) Reset() { *x = CDOTAUserMsg_GlobalLightColor{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_GlobalLightColor) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_GlobalLightColor) ProtoMessage() {} func (x *CDOTAUserMsg_GlobalLightColor) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_GlobalLightColor.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_GlobalLightColor) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{9} } func (x *CDOTAUserMsg_GlobalLightColor) GetColor() uint32 { if x != nil && x.Color != nil { return *x.Color } return 0 } func (x *CDOTAUserMsg_GlobalLightColor) GetDuration() float32 { if x != nil && x.Duration != nil { return *x.Duration } return 0 } type CDOTAUserMsg_GlobalLightDirection struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Direction *CMsgVector `protobuf:"bytes,1,opt,name=direction" json:"direction,omitempty"` Duration *float32 `protobuf:"fixed32,2,opt,name=duration" json:"duration,omitempty"` } func (x *CDOTAUserMsg_GlobalLightDirection) Reset() { *x = CDOTAUserMsg_GlobalLightDirection{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_GlobalLightDirection) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_GlobalLightDirection) ProtoMessage() {} func (x *CDOTAUserMsg_GlobalLightDirection) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_GlobalLightDirection.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_GlobalLightDirection) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{10} } func (x *CDOTAUserMsg_GlobalLightDirection) GetDirection() *CMsgVector { if x != nil { return x.Direction } return nil } func (x *CDOTAUserMsg_GlobalLightDirection) GetDuration() float32 { if x != nil && x.Duration != nil { return *x.Duration } return 0 } type CDOTAUserMsg_LocationPing struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` LocationPing *CDOTAMsg_LocationPing `protobuf:"bytes,2,opt,name=location_ping,json=locationPing" json:"location_ping,omitempty"` } func (x *CDOTAUserMsg_LocationPing) Reset() { *x = CDOTAUserMsg_LocationPing{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_LocationPing) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_LocationPing) ProtoMessage() {} func (x *CDOTAUserMsg_LocationPing) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_LocationPing.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_LocationPing) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{11} } func (x *CDOTAUserMsg_LocationPing) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_LocationPing) GetLocationPing() *CDOTAMsg_LocationPing { if x != nil { return x.LocationPing } return nil } type CDOTAUserMsg_PingConfirmation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerIdOfOriginalPinger *int32 `protobuf:"varint,1,opt,name=player_id_of_original_pinger,json=playerIdOfOriginalPinger" json:"player_id_of_original_pinger,omitempty"` EntityIndex *uint32 `protobuf:"varint,2,opt,name=entity_index,json=entityIndex" json:"entity_index,omitempty"` IconType *uint32 `protobuf:"varint,3,opt,name=icon_type,json=iconType" json:"icon_type,omitempty"` Location *CMsgVector `protobuf:"bytes,4,opt,name=location" json:"location,omitempty"` } func (x *CDOTAUserMsg_PingConfirmation) Reset() { *x = CDOTAUserMsg_PingConfirmation{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_PingConfirmation) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_PingConfirmation) ProtoMessage() {} func (x *CDOTAUserMsg_PingConfirmation) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_PingConfirmation.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_PingConfirmation) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{12} } func (x *CDOTAUserMsg_PingConfirmation) GetPlayerIdOfOriginalPinger() int32 { if x != nil && x.PlayerIdOfOriginalPinger != nil { return *x.PlayerIdOfOriginalPinger } return 0 } func (x *CDOTAUserMsg_PingConfirmation) GetEntityIndex() uint32 { if x != nil && x.EntityIndex != nil { return *x.EntityIndex } return 0 } func (x *CDOTAUserMsg_PingConfirmation) GetIconType() uint32 { if x != nil && x.IconType != nil { return *x.IconType } return 0 } func (x *CDOTAUserMsg_PingConfirmation) GetLocation() *CMsgVector { if x != nil { return x.Location } return nil } type CDOTAUserMsg_ItemAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` ItemAlert *CDOTAMsg_ItemAlert `protobuf:"bytes,2,opt,name=item_alert,json=itemAlert" json:"item_alert,omitempty"` } func (x *CDOTAUserMsg_ItemAlert) Reset() { *x = CDOTAUserMsg_ItemAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ItemAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ItemAlert) ProtoMessage() {} func (x *CDOTAUserMsg_ItemAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ItemAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ItemAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{13} } func (x *CDOTAUserMsg_ItemAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_ItemAlert) GetItemAlert() *CDOTAMsg_ItemAlert { if x != nil { return x.ItemAlert } return nil } type CDOTAUserMsg_EnemyItemAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` TargetPlayerId *int32 `protobuf:"varint,2,opt,name=target_player_id,json=targetPlayerId" json:"target_player_id,omitempty"` ItemAbilityId *int32 `protobuf:"varint,3,opt,name=item_ability_id,json=itemAbilityId" json:"item_ability_id,omitempty"` RuneType *int32 `protobuf:"varint,4,opt,name=rune_type,json=runeType,def=-1" json:"rune_type,omitempty"` EntityId *int32 `protobuf:"varint,5,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` ItemLevel *int32 `protobuf:"varint,6,opt,name=item_level,json=itemLevel,def=-1" json:"item_level,omitempty"` PrimaryCharges *int32 `protobuf:"varint,7,opt,name=primary_charges,json=primaryCharges,def=-1" json:"primary_charges,omitempty"` SecondaryCharges *int32 `protobuf:"varint,8,opt,name=secondary_charges,json=secondaryCharges,def=-1" json:"secondary_charges,omitempty"` } // Default values for CDOTAUserMsg_EnemyItemAlert fields. const ( Default_CDOTAUserMsg_EnemyItemAlert_RuneType = int32(-1) Default_CDOTAUserMsg_EnemyItemAlert_ItemLevel = int32(-1) Default_CDOTAUserMsg_EnemyItemAlert_PrimaryCharges = int32(-1) Default_CDOTAUserMsg_EnemyItemAlert_SecondaryCharges = int32(-1) ) func (x *CDOTAUserMsg_EnemyItemAlert) Reset() { *x = CDOTAUserMsg_EnemyItemAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_EnemyItemAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_EnemyItemAlert) ProtoMessage() {} func (x *CDOTAUserMsg_EnemyItemAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_EnemyItemAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_EnemyItemAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{14} } func (x *CDOTAUserMsg_EnemyItemAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_EnemyItemAlert) GetTargetPlayerId() int32 { if x != nil && x.TargetPlayerId != nil { return *x.TargetPlayerId } return 0 } func (x *CDOTAUserMsg_EnemyItemAlert) GetItemAbilityId() int32 { if x != nil && x.ItemAbilityId != nil { return *x.ItemAbilityId } return 0 } func (x *CDOTAUserMsg_EnemyItemAlert) GetRuneType() int32 { if x != nil && x.RuneType != nil { return *x.RuneType } return Default_CDOTAUserMsg_EnemyItemAlert_RuneType } func (x *CDOTAUserMsg_EnemyItemAlert) GetEntityId() int32 { if x != nil && x.EntityId != nil { return *x.EntityId } return 0 } func (x *CDOTAUserMsg_EnemyItemAlert) GetItemLevel() int32 { if x != nil && x.ItemLevel != nil { return *x.ItemLevel } return Default_CDOTAUserMsg_EnemyItemAlert_ItemLevel } func (x *CDOTAUserMsg_EnemyItemAlert) GetPrimaryCharges() int32 { if x != nil && x.PrimaryCharges != nil { return *x.PrimaryCharges } return Default_CDOTAUserMsg_EnemyItemAlert_PrimaryCharges } func (x *CDOTAUserMsg_EnemyItemAlert) GetSecondaryCharges() int32 { if x != nil && x.SecondaryCharges != nil { return *x.SecondaryCharges } return Default_CDOTAUserMsg_EnemyItemAlert_SecondaryCharges } type CDOTAUserMsg_ModifierAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` ClassName *string `protobuf:"bytes,2,opt,name=class_name,json=className" json:"class_name,omitempty"` StackCount *uint32 `protobuf:"varint,3,opt,name=stack_count,json=stackCount" json:"stack_count,omitempty"` IsDebuff *bool `protobuf:"varint,4,opt,name=is_debuff,json=isDebuff" json:"is_debuff,omitempty"` TargetEntindex *int32 `protobuf:"varint,5,opt,name=target_entindex,json=targetEntindex" json:"target_entindex,omitempty"` SecondsRemaining *float32 `protobuf:"fixed32,6,opt,name=seconds_remaining,json=secondsRemaining" json:"seconds_remaining,omitempty"` } func (x *CDOTAUserMsg_ModifierAlert) Reset() { *x = CDOTAUserMsg_ModifierAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ModifierAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ModifierAlert) ProtoMessage() {} func (x *CDOTAUserMsg_ModifierAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ModifierAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ModifierAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{15} } func (x *CDOTAUserMsg_ModifierAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_ModifierAlert) GetClassName() string { if x != nil && x.ClassName != nil { return *x.ClassName } return "" } func (x *CDOTAUserMsg_ModifierAlert) GetStackCount() uint32 { if x != nil && x.StackCount != nil { return *x.StackCount } return 0 } func (x *CDOTAUserMsg_ModifierAlert) GetIsDebuff() bool { if x != nil && x.IsDebuff != nil { return *x.IsDebuff } return false } func (x *CDOTAUserMsg_ModifierAlert) GetTargetEntindex() int32 { if x != nil && x.TargetEntindex != nil { return *x.TargetEntindex } return 0 } func (x *CDOTAUserMsg_ModifierAlert) GetSecondsRemaining() float32 { if x != nil && x.SecondsRemaining != nil { return *x.SecondsRemaining } return 0 } type CDOTAUserMsg_HPManaAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` TargetEntindex *int32 `protobuf:"varint,2,opt,name=target_entindex,json=targetEntindex" json:"target_entindex,omitempty"` ShowRawValues *bool `protobuf:"varint,3,opt,name=show_raw_values,json=showRawValues" json:"show_raw_values,omitempty"` } func (x *CDOTAUserMsg_HPManaAlert) Reset() { *x = CDOTAUserMsg_HPManaAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_HPManaAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_HPManaAlert) ProtoMessage() {} func (x *CDOTAUserMsg_HPManaAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_HPManaAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_HPManaAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{16} } func (x *CDOTAUserMsg_HPManaAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_HPManaAlert) GetTargetEntindex() int32 { if x != nil && x.TargetEntindex != nil { return *x.TargetEntindex } return 0 } func (x *CDOTAUserMsg_HPManaAlert) GetShowRawValues() bool { if x != nil && x.ShowRawValues != nil { return *x.ShowRawValues } return false } type CDOTAUserMsg_GlyphAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Negative *bool `protobuf:"varint,2,opt,name=negative" json:"negative,omitempty"` } func (x *CDOTAUserMsg_GlyphAlert) Reset() { *x = CDOTAUserMsg_GlyphAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_GlyphAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_GlyphAlert) ProtoMessage() {} func (x *CDOTAUserMsg_GlyphAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_GlyphAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_GlyphAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{17} } func (x *CDOTAUserMsg_GlyphAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_GlyphAlert) GetNegative() bool { if x != nil && x.Negative != nil { return *x.Negative } return false } type CDOTAUserMsg_RadarAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Negative *bool `protobuf:"varint,2,opt,name=negative" json:"negative,omitempty"` } func (x *CDOTAUserMsg_RadarAlert) Reset() { *x = CDOTAUserMsg_RadarAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_RadarAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_RadarAlert) ProtoMessage() {} func (x *CDOTAUserMsg_RadarAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_RadarAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_RadarAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{18} } func (x *CDOTAUserMsg_RadarAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_RadarAlert) GetNegative() bool { if x != nil && x.Negative != nil { return *x.Negative } return false } type CDOTAUserMsg_WillPurchaseAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ItemAbilityId *int32 `protobuf:"varint,1,opt,name=item_ability_id,json=itemAbilityId" json:"item_ability_id,omitempty"` PlayerId *int32 `protobuf:"varint,2,opt,name=player_id,json=playerId" json:"player_id,omitempty"` GoldRemaining *uint32 `protobuf:"varint,3,opt,name=gold_remaining,json=goldRemaining" json:"gold_remaining,omitempty"` SuggestionPlayerId *int32 `protobuf:"varint,4,opt,name=suggestion_player_id,json=suggestionPlayerId" json:"suggestion_player_id,omitempty"` } func (x *CDOTAUserMsg_WillPurchaseAlert) Reset() { *x = CDOTAUserMsg_WillPurchaseAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_WillPurchaseAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_WillPurchaseAlert) ProtoMessage() {} func (x *CDOTAUserMsg_WillPurchaseAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_WillPurchaseAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_WillPurchaseAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{19} } func (x *CDOTAUserMsg_WillPurchaseAlert) GetItemAbilityId() int32 { if x != nil && x.ItemAbilityId != nil { return *x.ItemAbilityId } return 0 } func (x *CDOTAUserMsg_WillPurchaseAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_WillPurchaseAlert) GetGoldRemaining() uint32 { if x != nil && x.GoldRemaining != nil { return *x.GoldRemaining } return 0 } func (x *CDOTAUserMsg_WillPurchaseAlert) GetSuggestionPlayerId() int32 { if x != nil && x.SuggestionPlayerId != nil { return *x.SuggestionPlayerId } return 0 } type CDOTAUserMsg_EmptyTeleportAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SourcePlayerId *int32 `protobuf:"varint,1,opt,name=source_player_id,json=sourcePlayerId" json:"source_player_id,omitempty"` TargetPlayerId *int32 `protobuf:"varint,2,opt,name=target_player_id,json=targetPlayerId" json:"target_player_id,omitempty"` CooldownSeconds *int32 `protobuf:"varint,3,opt,name=cooldown_seconds,json=cooldownSeconds" json:"cooldown_seconds,omitempty"` } func (x *CDOTAUserMsg_EmptyTeleportAlert) Reset() { *x = CDOTAUserMsg_EmptyTeleportAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_EmptyTeleportAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_EmptyTeleportAlert) ProtoMessage() {} func (x *CDOTAUserMsg_EmptyTeleportAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_EmptyTeleportAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_EmptyTeleportAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{20} } func (x *CDOTAUserMsg_EmptyTeleportAlert) GetSourcePlayerId() int32 { if x != nil && x.SourcePlayerId != nil { return *x.SourcePlayerId } return 0 } func (x *CDOTAUserMsg_EmptyTeleportAlert) GetTargetPlayerId() int32 { if x != nil && x.TargetPlayerId != nil { return *x.TargetPlayerId } return 0 } func (x *CDOTAUserMsg_EmptyTeleportAlert) GetCooldownSeconds() int32 { if x != nil && x.CooldownSeconds != nil { return *x.CooldownSeconds } return 0 } type CDOTAUserMsg_MarsArenaOfBloodAttack struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SourceEhandle *uint32 `protobuf:"varint,1,opt,name=source_ehandle,json=sourceEhandle" json:"source_ehandle,omitempty"` TargetEhandle *uint32 `protobuf:"varint,2,opt,name=target_ehandle,json=targetEhandle" json:"target_ehandle,omitempty"` WarriorIndex *int32 `protobuf:"varint,3,opt,name=warrior_index,json=warriorIndex" json:"warrior_index,omitempty"` } func (x *CDOTAUserMsg_MarsArenaOfBloodAttack) Reset() { *x = CDOTAUserMsg_MarsArenaOfBloodAttack{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_MarsArenaOfBloodAttack) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_MarsArenaOfBloodAttack) ProtoMessage() {} func (x *CDOTAUserMsg_MarsArenaOfBloodAttack) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_MarsArenaOfBloodAttack.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_MarsArenaOfBloodAttack) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{21} } func (x *CDOTAUserMsg_MarsArenaOfBloodAttack) GetSourceEhandle() uint32 { if x != nil && x.SourceEhandle != nil { return *x.SourceEhandle } return 0 } func (x *CDOTAUserMsg_MarsArenaOfBloodAttack) GetTargetEhandle() uint32 { if x != nil && x.TargetEhandle != nil { return *x.TargetEhandle } return 0 } func (x *CDOTAUserMsg_MarsArenaOfBloodAttack) GetWarriorIndex() int32 { if x != nil && x.WarriorIndex != nil { return *x.WarriorIndex } return 0 } type CDOTAEntityMsg_InvokerSpellCast struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields EntityMsg *CEntityMsg `protobuf:"bytes,1,opt,name=entity_msg,json=entityMsg" json:"entity_msg,omitempty"` CastActivity *int32 `protobuf:"varint,2,opt,name=cast_activity,json=castActivity" json:"cast_activity,omitempty"` } func (x *CDOTAEntityMsg_InvokerSpellCast) Reset() { *x = CDOTAEntityMsg_InvokerSpellCast{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAEntityMsg_InvokerSpellCast) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAEntityMsg_InvokerSpellCast) ProtoMessage() {} func (x *CDOTAEntityMsg_InvokerSpellCast) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAEntityMsg_InvokerSpellCast.ProtoReflect.Descriptor instead. func (*CDOTAEntityMsg_InvokerSpellCast) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{22} } func (x *CDOTAEntityMsg_InvokerSpellCast) GetEntityMsg() *CEntityMsg { if x != nil { return x.EntityMsg } return nil } func (x *CDOTAEntityMsg_InvokerSpellCast) GetCastActivity() int32 { if x != nil && x.CastActivity != nil { return *x.CastActivity } return 0 } type CDOTAUserMsg_BuyBackStateAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` } func (x *CDOTAUserMsg_BuyBackStateAlert) Reset() { *x = CDOTAUserMsg_BuyBackStateAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_BuyBackStateAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_BuyBackStateAlert) ProtoMessage() {} func (x *CDOTAUserMsg_BuyBackStateAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_BuyBackStateAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_BuyBackStateAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{23} } func (x *CDOTAUserMsg_BuyBackStateAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } type CDOTAUserMsg_QuickBuyAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` ItemAbilityId *int32 `protobuf:"varint,2,opt,name=item_ability_id,json=itemAbilityId" json:"item_ability_id,omitempty"` GoldCost *int32 `protobuf:"varint,3,opt,name=gold_cost,json=goldCost" json:"gold_cost,omitempty"` ItemCooldownSeconds *int32 `protobuf:"varint,4,opt,name=item_cooldown_seconds,json=itemCooldownSeconds" json:"item_cooldown_seconds,omitempty"` ShowBuyback *bool `protobuf:"varint,5,opt,name=show_buyback,json=showBuyback" json:"show_buyback,omitempty"` } func (x *CDOTAUserMsg_QuickBuyAlert) Reset() { *x = CDOTAUserMsg_QuickBuyAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_QuickBuyAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_QuickBuyAlert) ProtoMessage() {} func (x *CDOTAUserMsg_QuickBuyAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_QuickBuyAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_QuickBuyAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{24} } func (x *CDOTAUserMsg_QuickBuyAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_QuickBuyAlert) GetItemAbilityId() int32 { if x != nil && x.ItemAbilityId != nil { return *x.ItemAbilityId } return 0 } func (x *CDOTAUserMsg_QuickBuyAlert) GetGoldCost() int32 { if x != nil && x.GoldCost != nil { return *x.GoldCost } return 0 } func (x *CDOTAUserMsg_QuickBuyAlert) GetItemCooldownSeconds() int32 { if x != nil && x.ItemCooldownSeconds != nil { return *x.ItemCooldownSeconds } return 0 } func (x *CDOTAUserMsg_QuickBuyAlert) GetShowBuyback() bool { if x != nil && x.ShowBuyback != nil { return *x.ShowBuyback } return false } type CDOTAUserMsg_CourierKilledAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Team *uint32 `protobuf:"varint,1,opt,name=team" json:"team,omitempty"` GoldValue *uint32 `protobuf:"varint,2,opt,name=gold_value,json=goldValue" json:"gold_value,omitempty"` EntityHandle *uint32 `protobuf:"varint,3,opt,name=entity_handle,json=entityHandle" json:"entity_handle,omitempty"` Timestamp *int32 `protobuf:"varint,4,opt,name=timestamp" json:"timestamp,omitempty"` LostItems []*CDOTAUserMsg_CourierKilledAlert_LostItem `protobuf:"bytes,5,rep,name=lost_items,json=lostItems" json:"lost_items,omitempty"` KillerPlayerId *int32 `protobuf:"varint,6,opt,name=killer_player_id,json=killerPlayerId" json:"killer_player_id,omitempty"` OwningPlayerId *int32 `protobuf:"varint,7,opt,name=owning_player_id,json=owningPlayerId" json:"owning_player_id,omitempty"` } func (x *CDOTAUserMsg_CourierKilledAlert) Reset() { *x = CDOTAUserMsg_CourierKilledAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CourierKilledAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CourierKilledAlert) ProtoMessage() {} func (x *CDOTAUserMsg_CourierKilledAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CourierKilledAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CourierKilledAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{25} } func (x *CDOTAUserMsg_CourierKilledAlert) GetTeam() uint32 { if x != nil && x.Team != nil { return *x.Team } return 0 } func (x *CDOTAUserMsg_CourierKilledAlert) GetGoldValue() uint32 { if x != nil && x.GoldValue != nil { return *x.GoldValue } return 0 } func (x *CDOTAUserMsg_CourierKilledAlert) GetEntityHandle() uint32 { if x != nil && x.EntityHandle != nil { return *x.EntityHandle } return 0 } func (x *CDOTAUserMsg_CourierKilledAlert) GetTimestamp() int32 { if x != nil && x.Timestamp != nil { return *x.Timestamp } return 0 } func (x *CDOTAUserMsg_CourierKilledAlert) GetLostItems() []*CDOTAUserMsg_CourierKilledAlert_LostItem { if x != nil { return x.LostItems } return nil } func (x *CDOTAUserMsg_CourierKilledAlert) GetKillerPlayerId() int32 { if x != nil && x.KillerPlayerId != nil { return *x.KillerPlayerId } return 0 } func (x *CDOTAUserMsg_CourierKilledAlert) GetOwningPlayerId() int32 { if x != nil && x.OwningPlayerId != nil { return *x.OwningPlayerId } return 0 } type CDOTAUserMsg_MinimapEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields EventType *int32 `protobuf:"varint,1,opt,name=event_type,json=eventType" json:"event_type,omitempty"` EntityHandle *uint32 `protobuf:"varint,2,opt,name=entity_handle,json=entityHandle" json:"entity_handle,omitempty"` X *int32 `protobuf:"varint,3,opt,name=x" json:"x,omitempty"` Y *int32 `protobuf:"varint,4,opt,name=y" json:"y,omitempty"` Duration *int32 `protobuf:"varint,5,opt,name=duration" json:"duration,omitempty"` TargetEntityHandle *uint32 `protobuf:"varint,6,opt,name=target_entity_handle,json=targetEntityHandle" json:"target_entity_handle,omitempty"` } func (x *CDOTAUserMsg_MinimapEvent) Reset() { *x = CDOTAUserMsg_MinimapEvent{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_MinimapEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_MinimapEvent) ProtoMessage() {} func (x *CDOTAUserMsg_MinimapEvent) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_MinimapEvent.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_MinimapEvent) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{26} } func (x *CDOTAUserMsg_MinimapEvent) GetEventType() int32 { if x != nil && x.EventType != nil { return *x.EventType } return 0 } func (x *CDOTAUserMsg_MinimapEvent) GetEntityHandle() uint32 { if x != nil && x.EntityHandle != nil { return *x.EntityHandle } return 0 } func (x *CDOTAUserMsg_MinimapEvent) GetX() int32 { if x != nil && x.X != nil { return *x.X } return 0 } func (x *CDOTAUserMsg_MinimapEvent) GetY() int32 { if x != nil && x.Y != nil { return *x.Y } return 0 } func (x *CDOTAUserMsg_MinimapEvent) GetDuration() int32 { if x != nil && x.Duration != nil { return *x.Duration } return 0 } func (x *CDOTAUserMsg_MinimapEvent) GetTargetEntityHandle() uint32 { if x != nil && x.TargetEntityHandle != nil { return *x.TargetEntityHandle } return 0 } type CDOTAUserMsg_MapLine struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Mapline *CDOTAMsg_MapLine `protobuf:"bytes,2,opt,name=mapline" json:"mapline,omitempty"` } func (x *CDOTAUserMsg_MapLine) Reset() { *x = CDOTAUserMsg_MapLine{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_MapLine) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_MapLine) ProtoMessage() {} func (x *CDOTAUserMsg_MapLine) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_MapLine.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_MapLine) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{27} } func (x *CDOTAUserMsg_MapLine) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_MapLine) GetMapline() *CDOTAMsg_MapLine { if x != nil { return x.Mapline } return nil } type CDOTAUserMsg_MinimapDebugPoint struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Location *CMsgVector `protobuf:"bytes,1,opt,name=location" json:"location,omitempty"` Color *uint32 `protobuf:"varint,2,opt,name=color" json:"color,omitempty"` Size *int32 `protobuf:"varint,3,opt,name=size" json:"size,omitempty"` Duration *float32 `protobuf:"fixed32,4,opt,name=duration" json:"duration,omitempty"` Index *int32 `protobuf:"varint,5,opt,name=index" json:"index,omitempty"` } func (x *CDOTAUserMsg_MinimapDebugPoint) Reset() { *x = CDOTAUserMsg_MinimapDebugPoint{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_MinimapDebugPoint) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_MinimapDebugPoint) ProtoMessage() {} func (x *CDOTAUserMsg_MinimapDebugPoint) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_MinimapDebugPoint.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_MinimapDebugPoint) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{28} } func (x *CDOTAUserMsg_MinimapDebugPoint) GetLocation() *CMsgVector { if x != nil { return x.Location } return nil } func (x *CDOTAUserMsg_MinimapDebugPoint) GetColor() uint32 { if x != nil && x.Color != nil { return *x.Color } return 0 } func (x *CDOTAUserMsg_MinimapDebugPoint) GetSize() int32 { if x != nil && x.Size != nil { return *x.Size } return 0 } func (x *CDOTAUserMsg_MinimapDebugPoint) GetDuration() float32 { if x != nil && x.Duration != nil { return *x.Duration } return 0 } func (x *CDOTAUserMsg_MinimapDebugPoint) GetIndex() int32 { if x != nil && x.Index != nil { return *x.Index } return 0 } type CDOTAUserMsg_CreateLinearProjectile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Origin *CMsgVector `protobuf:"bytes,1,opt,name=origin" json:"origin,omitempty"` Velocity *CMsgVector2D `protobuf:"bytes,2,opt,name=velocity" json:"velocity,omitempty"` Entindex *int32 `protobuf:"varint,4,opt,name=entindex" json:"entindex,omitempty"` ParticleIndex *uint64 `protobuf:"varint,5,opt,name=particle_index,json=particleIndex" json:"particle_index,omitempty"` Handle *int32 `protobuf:"varint,6,opt,name=handle" json:"handle,omitempty"` Acceleration *CMsgVector2D `protobuf:"bytes,7,opt,name=acceleration" json:"acceleration,omitempty"` MaxSpeed *float32 `protobuf:"fixed32,8,opt,name=max_speed,json=maxSpeed" json:"max_speed,omitempty"` FowRadius *float32 `protobuf:"fixed32,9,opt,name=fow_radius,json=fowRadius" json:"fow_radius,omitempty"` StickyFowReveal *bool `protobuf:"varint,10,opt,name=sticky_fow_reveal,json=stickyFowReveal" json:"sticky_fow_reveal,omitempty"` Distance *float32 `protobuf:"fixed32,11,opt,name=distance" json:"distance,omitempty"` Colorgemcolor *uint32 `protobuf:"fixed32,12,opt,name=colorgemcolor" json:"colorgemcolor,omitempty"` ParticleCpData []*CDOTAUserMsg_ProjectileParticleCPData `protobuf:"bytes,13,rep,name=particle_cp_data,json=particleCpData" json:"particle_cp_data,omitempty"` } func (x *CDOTAUserMsg_CreateLinearProjectile) Reset() { *x = CDOTAUserMsg_CreateLinearProjectile{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CreateLinearProjectile) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CreateLinearProjectile) ProtoMessage() {} func (x *CDOTAUserMsg_CreateLinearProjectile) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CreateLinearProjectile.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CreateLinearProjectile) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{29} } func (x *CDOTAUserMsg_CreateLinearProjectile) GetOrigin() *CMsgVector { if x != nil { return x.Origin } return nil } func (x *CDOTAUserMsg_CreateLinearProjectile) GetVelocity() *CMsgVector2D { if x != nil { return x.Velocity } return nil } func (x *CDOTAUserMsg_CreateLinearProjectile) GetEntindex() int32 { if x != nil && x.Entindex != nil { return *x.Entindex } return 0 } func (x *CDOTAUserMsg_CreateLinearProjectile) GetParticleIndex() uint64 { if x != nil && x.ParticleIndex != nil { return *x.ParticleIndex } return 0 } func (x *CDOTAUserMsg_CreateLinearProjectile) GetHandle() int32 { if x != nil && x.Handle != nil { return *x.Handle } return 0 } func (x *CDOTAUserMsg_CreateLinearProjectile) GetAcceleration() *CMsgVector2D { if x != nil { return x.Acceleration } return nil } func (x *CDOTAUserMsg_CreateLinearProjectile) GetMaxSpeed() float32 { if x != nil && x.MaxSpeed != nil { return *x.MaxSpeed } return 0 } func (x *CDOTAUserMsg_CreateLinearProjectile) GetFowRadius() float32 { if x != nil && x.FowRadius != nil { return *x.FowRadius } return 0 } func (x *CDOTAUserMsg_CreateLinearProjectile) GetStickyFowReveal() bool { if x != nil && x.StickyFowReveal != nil { return *x.StickyFowReveal } return false } func (x *CDOTAUserMsg_CreateLinearProjectile) GetDistance() float32 { if x != nil && x.Distance != nil { return *x.Distance } return 0 } func (x *CDOTAUserMsg_CreateLinearProjectile) GetColorgemcolor() uint32 { if x != nil && x.Colorgemcolor != nil { return *x.Colorgemcolor } return 0 } func (x *CDOTAUserMsg_CreateLinearProjectile) GetParticleCpData() []*CDOTAUserMsg_ProjectileParticleCPData { if x != nil { return x.ParticleCpData } return nil } type CDOTAUserMsg_DestroyLinearProjectile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Handle *int32 `protobuf:"varint,1,opt,name=handle" json:"handle,omitempty"` } func (x *CDOTAUserMsg_DestroyLinearProjectile) Reset() { *x = CDOTAUserMsg_DestroyLinearProjectile{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_DestroyLinearProjectile) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_DestroyLinearProjectile) ProtoMessage() {} func (x *CDOTAUserMsg_DestroyLinearProjectile) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_DestroyLinearProjectile.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_DestroyLinearProjectile) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{30} } func (x *CDOTAUserMsg_DestroyLinearProjectile) GetHandle() int32 { if x != nil && x.Handle != nil { return *x.Handle } return 0 } type CDOTAUserMsg_DodgeTrackingProjectiles struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Entindex *int32 `protobuf:"varint,1,req,name=entindex" json:"entindex,omitempty"` AttacksOnly *bool `protobuf:"varint,2,opt,name=attacks_only,json=attacksOnly" json:"attacks_only,omitempty"` } func (x *CDOTAUserMsg_DodgeTrackingProjectiles) Reset() { *x = CDOTAUserMsg_DodgeTrackingProjectiles{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_DodgeTrackingProjectiles) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_DodgeTrackingProjectiles) ProtoMessage() {} func (x *CDOTAUserMsg_DodgeTrackingProjectiles) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_DodgeTrackingProjectiles.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_DodgeTrackingProjectiles) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{31} } func (x *CDOTAUserMsg_DodgeTrackingProjectiles) GetEntindex() int32 { if x != nil && x.Entindex != nil { return *x.Entindex } return 0 } func (x *CDOTAUserMsg_DodgeTrackingProjectiles) GetAttacksOnly() bool { if x != nil && x.AttacksOnly != nil { return *x.AttacksOnly } return false } type CDOTAUserMsg_SpectatorPlayerClick struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Entindex *int32 `protobuf:"varint,1,req,name=entindex" json:"entindex,omitempty"` OrderType *int32 `protobuf:"varint,2,opt,name=order_type,json=orderType" json:"order_type,omitempty"` TargetIndex *int32 `protobuf:"varint,3,opt,name=target_index,json=targetIndex" json:"target_index,omitempty"` } func (x *CDOTAUserMsg_SpectatorPlayerClick) Reset() { *x = CDOTAUserMsg_SpectatorPlayerClick{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SpectatorPlayerClick) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SpectatorPlayerClick) ProtoMessage() {} func (x *CDOTAUserMsg_SpectatorPlayerClick) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SpectatorPlayerClick.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SpectatorPlayerClick) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{32} } func (x *CDOTAUserMsg_SpectatorPlayerClick) GetEntindex() int32 { if x != nil && x.Entindex != nil { return *x.Entindex } return 0 } func (x *CDOTAUserMsg_SpectatorPlayerClick) GetOrderType() int32 { if x != nil && x.OrderType != nil { return *x.OrderType } return 0 } func (x *CDOTAUserMsg_SpectatorPlayerClick) GetTargetIndex() int32 { if x != nil && x.TargetIndex != nil { return *x.TargetIndex } return 0 } type CDOTAUserMsg_SpectatorPlayerUnitOrders struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Entindex *int32 `protobuf:"varint,1,opt,name=entindex" json:"entindex,omitempty"` OrderType *int32 `protobuf:"varint,2,opt,name=order_type,json=orderType" json:"order_type,omitempty"` Units []int32 `protobuf:"varint,3,rep,name=units" json:"units,omitempty"` TargetIndex *int32 `protobuf:"varint,4,opt,name=target_index,json=targetIndex" json:"target_index,omitempty"` AbilityId *int32 `protobuf:"varint,5,opt,name=ability_id,json=abilityId" json:"ability_id,omitempty"` Position *CMsgVector `protobuf:"bytes,6,opt,name=position" json:"position,omitempty"` Queue *bool `protobuf:"varint,7,opt,name=queue" json:"queue,omitempty"` SequenceNumber *int32 `protobuf:"varint,8,opt,name=sequence_number,json=sequenceNumber" json:"sequence_number,omitempty"` Flags *uint32 `protobuf:"varint,9,opt,name=flags" json:"flags,omitempty"` } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) Reset() { *x = CDOTAUserMsg_SpectatorPlayerUnitOrders{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SpectatorPlayerUnitOrders) ProtoMessage() {} func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SpectatorPlayerUnitOrders.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SpectatorPlayerUnitOrders) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{33} } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) GetEntindex() int32 { if x != nil && x.Entindex != nil { return *x.Entindex } return 0 } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) GetOrderType() int32 { if x != nil && x.OrderType != nil { return *x.OrderType } return 0 } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) GetUnits() []int32 { if x != nil { return x.Units } return nil } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) GetTargetIndex() int32 { if x != nil && x.TargetIndex != nil { return *x.TargetIndex } return 0 } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) GetAbilityId() int32 { if x != nil && x.AbilityId != nil { return *x.AbilityId } return 0 } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) GetPosition() *CMsgVector { if x != nil { return x.Position } return nil } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) GetQueue() bool { if x != nil && x.Queue != nil { return *x.Queue } return false } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) GetSequenceNumber() int32 { if x != nil && x.SequenceNumber != nil { return *x.SequenceNumber } return 0 } func (x *CDOTAUserMsg_SpectatorPlayerUnitOrders) GetFlags() uint32 { if x != nil && x.Flags != nil { return *x.Flags } return 0 } type CDOTAUserMsg_NevermoreRequiem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields EntityHandle *uint32 `protobuf:"varint,1,opt,name=entity_handle,json=entityHandle" json:"entity_handle,omitempty"` Lines *int32 `protobuf:"varint,2,opt,name=lines" json:"lines,omitempty"` Origin *CMsgVector `protobuf:"bytes,3,opt,name=origin" json:"origin,omitempty"` Reverse *bool `protobuf:"varint,4,opt,name=reverse" json:"reverse,omitempty"` } func (x *CDOTAUserMsg_NevermoreRequiem) Reset() { *x = CDOTAUserMsg_NevermoreRequiem{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_NevermoreRequiem) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_NevermoreRequiem) ProtoMessage() {} func (x *CDOTAUserMsg_NevermoreRequiem) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_NevermoreRequiem.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_NevermoreRequiem) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{34} } func (x *CDOTAUserMsg_NevermoreRequiem) GetEntityHandle() uint32 { if x != nil && x.EntityHandle != nil { return *x.EntityHandle } return 0 } func (x *CDOTAUserMsg_NevermoreRequiem) GetLines() int32 { if x != nil && x.Lines != nil { return *x.Lines } return 0 } func (x *CDOTAUserMsg_NevermoreRequiem) GetOrigin() *CMsgVector { if x != nil { return x.Origin } return nil } func (x *CDOTAUserMsg_NevermoreRequiem) GetReverse() bool { if x != nil && x.Reverse != nil { return *x.Reverse } return false } type CDOTAUserMsg_InvalidCommand struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` SequenceNumber *int32 `protobuf:"varint,2,opt,name=sequence_number,json=sequenceNumber" json:"sequence_number,omitempty"` } func (x *CDOTAUserMsg_InvalidCommand) Reset() { *x = CDOTAUserMsg_InvalidCommand{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_InvalidCommand) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_InvalidCommand) ProtoMessage() {} func (x *CDOTAUserMsg_InvalidCommand) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_InvalidCommand.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_InvalidCommand) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{35} } func (x *CDOTAUserMsg_InvalidCommand) GetMessage() string { if x != nil && x.Message != nil { return *x.Message } return "" } func (x *CDOTAUserMsg_InvalidCommand) GetSequenceNumber() int32 { if x != nil && x.SequenceNumber != nil { return *x.SequenceNumber } return 0 } type CDOTAUserMsg_HudError struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OrderId *int32 `protobuf:"varint,1,opt,name=order_id,json=orderId" json:"order_id,omitempty"` SequenceNumber *int32 `protobuf:"varint,2,opt,name=sequence_number,json=sequenceNumber" json:"sequence_number,omitempty"` } func (x *CDOTAUserMsg_HudError) Reset() { *x = CDOTAUserMsg_HudError{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_HudError) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_HudError) ProtoMessage() {} func (x *CDOTAUserMsg_HudError) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_HudError.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_HudError) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{36} } func (x *CDOTAUserMsg_HudError) GetOrderId() int32 { if x != nil && x.OrderId != nil { return *x.OrderId } return 0 } func (x *CDOTAUserMsg_HudError) GetSequenceNumber() int32 { if x != nil && x.SequenceNumber != nil { return *x.SequenceNumber } return 0 } type CDOTAUserMsg_SharedCooldown struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Entindex *int32 `protobuf:"varint,1,opt,name=entindex" json:"entindex,omitempty"` Name *string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"` Cooldown *float32 `protobuf:"fixed32,3,opt,name=cooldown" json:"cooldown,omitempty"` NameIndex *int32 `protobuf:"varint,4,opt,name=name_index,json=nameIndex" json:"name_index,omitempty"` } func (x *CDOTAUserMsg_SharedCooldown) Reset() { *x = CDOTAUserMsg_SharedCooldown{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SharedCooldown) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SharedCooldown) ProtoMessage() {} func (x *CDOTAUserMsg_SharedCooldown) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SharedCooldown.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SharedCooldown) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{37} } func (x *CDOTAUserMsg_SharedCooldown) GetEntindex() int32 { if x != nil && x.Entindex != nil { return *x.Entindex } return 0 } func (x *CDOTAUserMsg_SharedCooldown) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *CDOTAUserMsg_SharedCooldown) GetCooldown() float32 { if x != nil && x.Cooldown != nil { return *x.Cooldown } return 0 } func (x *CDOTAUserMsg_SharedCooldown) GetNameIndex() int32 { if x != nil && x.NameIndex != nil { return *x.NameIndex } return 0 } type CDOTAUserMsg_SetNextAutobuyItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` } func (x *CDOTAUserMsg_SetNextAutobuyItem) Reset() { *x = CDOTAUserMsg_SetNextAutobuyItem{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SetNextAutobuyItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SetNextAutobuyItem) ProtoMessage() {} func (x *CDOTAUserMsg_SetNextAutobuyItem) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SetNextAutobuyItem.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SetNextAutobuyItem) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{38} } func (x *CDOTAUserMsg_SetNextAutobuyItem) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } type CDOTAUserMsg_HalloweenDrops struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ItemDefs []uint32 `protobuf:"varint,1,rep,name=item_defs,json=itemDefs" json:"item_defs,omitempty"` PlayerIds []int32 `protobuf:"varint,2,rep,name=player_ids,json=playerIds" json:"player_ids,omitempty"` PrizeList *uint32 `protobuf:"varint,3,opt,name=prize_list,json=prizeList" json:"prize_list,omitempty"` } func (x *CDOTAUserMsg_HalloweenDrops) Reset() { *x = CDOTAUserMsg_HalloweenDrops{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_HalloweenDrops) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_HalloweenDrops) ProtoMessage() {} func (x *CDOTAUserMsg_HalloweenDrops) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_HalloweenDrops.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_HalloweenDrops) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{39} } func (x *CDOTAUserMsg_HalloweenDrops) GetItemDefs() []uint32 { if x != nil { return x.ItemDefs } return nil } func (x *CDOTAUserMsg_HalloweenDrops) GetPlayerIds() []int32 { if x != nil { return x.PlayerIds } return nil } func (x *CDOTAUserMsg_HalloweenDrops) GetPrizeList() uint32 { if x != nil && x.PrizeList != nil { return *x.PrizeList } return 0 } type CDOTAUserMsg_PredictionResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AccountId *uint32 `protobuf:"varint,1,opt,name=account_id,json=accountId" json:"account_id,omitempty"` MatchId *uint64 `protobuf:"varint,2,opt,name=match_id,json=matchId" json:"match_id,omitempty"` Correct *bool `protobuf:"varint,3,opt,name=correct" json:"correct,omitempty"` Predictions []*CDOTAUserMsg_PredictionResult_Prediction `protobuf:"bytes,4,rep,name=predictions" json:"predictions,omitempty"` } func (x *CDOTAUserMsg_PredictionResult) Reset() { *x = CDOTAUserMsg_PredictionResult{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_PredictionResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_PredictionResult) ProtoMessage() {} func (x *CDOTAUserMsg_PredictionResult) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_PredictionResult.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_PredictionResult) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{40} } func (x *CDOTAUserMsg_PredictionResult) GetAccountId() uint32 { if x != nil && x.AccountId != nil { return *x.AccountId } return 0 } func (x *CDOTAUserMsg_PredictionResult) GetMatchId() uint64 { if x != nil && x.MatchId != nil { return *x.MatchId } return 0 } func (x *CDOTAUserMsg_PredictionResult) GetCorrect() bool { if x != nil && x.Correct != nil { return *x.Correct } return false } func (x *CDOTAUserMsg_PredictionResult) GetPredictions() []*CDOTAUserMsg_PredictionResult_Prediction { if x != nil { return x.Predictions } return nil } type CDOTAResponseQuerySerialized struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Facts []*CDOTAResponseQuerySerialized_Fact `protobuf:"bytes,1,rep,name=facts" json:"facts,omitempty"` } func (x *CDOTAResponseQuerySerialized) Reset() { *x = CDOTAResponseQuerySerialized{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAResponseQuerySerialized) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAResponseQuerySerialized) ProtoMessage() {} func (x *CDOTAResponseQuerySerialized) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAResponseQuerySerialized.ProtoReflect.Descriptor instead. func (*CDOTAResponseQuerySerialized) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{41} } func (x *CDOTAResponseQuerySerialized) GetFacts() []*CDOTAResponseQuerySerialized_Fact { if x != nil { return x.Facts } return nil } type CDOTASpeechMatchOnClient struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SpeechConcept *int32 `protobuf:"varint,1,opt,name=speech_concept,json=speechConcept" json:"speech_concept,omitempty"` RecipientType *int32 `protobuf:"varint,2,opt,name=recipient_type,json=recipientType" json:"recipient_type,omitempty"` Responsequery *CDOTAResponseQuerySerialized `protobuf:"bytes,3,opt,name=responsequery" json:"responsequery,omitempty"` Randomseed *int32 `protobuf:"fixed32,4,opt,name=randomseed,def=0" json:"randomseed,omitempty"` } // Default values for CDOTASpeechMatchOnClient fields. const ( Default_CDOTASpeechMatchOnClient_Randomseed = int32(0) ) func (x *CDOTASpeechMatchOnClient) Reset() { *x = CDOTASpeechMatchOnClient{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTASpeechMatchOnClient) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTASpeechMatchOnClient) ProtoMessage() {} func (x *CDOTASpeechMatchOnClient) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTASpeechMatchOnClient.ProtoReflect.Descriptor instead. func (*CDOTASpeechMatchOnClient) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{42} } func (x *CDOTASpeechMatchOnClient) GetSpeechConcept() int32 { if x != nil && x.SpeechConcept != nil { return *x.SpeechConcept } return 0 } func (x *CDOTASpeechMatchOnClient) GetRecipientType() int32 { if x != nil && x.RecipientType != nil { return *x.RecipientType } return 0 } func (x *CDOTASpeechMatchOnClient) GetResponsequery() *CDOTAResponseQuerySerialized { if x != nil { return x.Responsequery } return nil } func (x *CDOTASpeechMatchOnClient) GetRandomseed() int32 { if x != nil && x.Randomseed != nil { return *x.Randomseed } return Default_CDOTASpeechMatchOnClient_Randomseed } type CDOTAUserMsg_UnitEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MsgType *EDotaEntityMessages `protobuf:"varint,1,req,name=msg_type,json=msgType,enum=EDotaEntityMessages,def=0" json:"msg_type,omitempty"` EntityIndex *int32 `protobuf:"varint,2,req,name=entity_index,json=entityIndex" json:"entity_index,omitempty"` Speech *CDOTAUserMsg_UnitEvent_Speech `protobuf:"bytes,3,opt,name=speech" json:"speech,omitempty"` SpeechMute *CDOTAUserMsg_UnitEvent_SpeechMute `protobuf:"bytes,4,opt,name=speech_mute,json=speechMute" json:"speech_mute,omitempty"` AddGesture *CDOTAUserMsg_UnitEvent_AddGesture `protobuf:"bytes,5,opt,name=add_gesture,json=addGesture" json:"add_gesture,omitempty"` RemoveGesture *CDOTAUserMsg_UnitEvent_RemoveGesture `protobuf:"bytes,6,opt,name=remove_gesture,json=removeGesture" json:"remove_gesture,omitempty"` BloodImpact *CDOTAUserMsg_UnitEvent_BloodImpact `protobuf:"bytes,7,opt,name=blood_impact,json=bloodImpact" json:"blood_impact,omitempty"` FadeGesture *CDOTAUserMsg_UnitEvent_FadeGesture `protobuf:"bytes,8,opt,name=fade_gesture,json=fadeGesture" json:"fade_gesture,omitempty"` SpeechMatchOnClient *CDOTASpeechMatchOnClient `protobuf:"bytes,9,opt,name=speech_match_on_client,json=speechMatchOnClient" json:"speech_match_on_client,omitempty"` } // Default values for CDOTAUserMsg_UnitEvent fields. const ( Default_CDOTAUserMsg_UnitEvent_MsgType = EDotaEntityMessages_DOTA_UNIT_SPEECH ) func (x *CDOTAUserMsg_UnitEvent) Reset() { *x = CDOTAUserMsg_UnitEvent{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[43] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_UnitEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_UnitEvent) ProtoMessage() {} func (x *CDOTAUserMsg_UnitEvent) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[43] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_UnitEvent.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_UnitEvent) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{43} } func (x *CDOTAUserMsg_UnitEvent) GetMsgType() EDotaEntityMessages { if x != nil && x.MsgType != nil { return *x.MsgType } return Default_CDOTAUserMsg_UnitEvent_MsgType } func (x *CDOTAUserMsg_UnitEvent) GetEntityIndex() int32 { if x != nil && x.EntityIndex != nil { return *x.EntityIndex } return 0 } func (x *CDOTAUserMsg_UnitEvent) GetSpeech() *CDOTAUserMsg_UnitEvent_Speech { if x != nil { return x.Speech } return nil } func (x *CDOTAUserMsg_UnitEvent) GetSpeechMute() *CDOTAUserMsg_UnitEvent_SpeechMute { if x != nil { return x.SpeechMute } return nil } func (x *CDOTAUserMsg_UnitEvent) GetAddGesture() *CDOTAUserMsg_UnitEvent_AddGesture { if x != nil { return x.AddGesture } return nil } func (x *CDOTAUserMsg_UnitEvent) GetRemoveGesture() *CDOTAUserMsg_UnitEvent_RemoveGesture { if x != nil { return x.RemoveGesture } return nil } func (x *CDOTAUserMsg_UnitEvent) GetBloodImpact() *CDOTAUserMsg_UnitEvent_BloodImpact { if x != nil { return x.BloodImpact } return nil } func (x *CDOTAUserMsg_UnitEvent) GetFadeGesture() *CDOTAUserMsg_UnitEvent_FadeGesture { if x != nil { return x.FadeGesture } return nil } func (x *CDOTAUserMsg_UnitEvent) GetSpeechMatchOnClient() *CDOTASpeechMatchOnClient { if x != nil { return x.SpeechMatchOnClient } return nil } type CDOTAUserMsg_ItemPurchased struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ItemAbilityId *int32 `protobuf:"varint,1,opt,name=item_ability_id,json=itemAbilityId" json:"item_ability_id,omitempty"` } func (x *CDOTAUserMsg_ItemPurchased) Reset() { *x = CDOTAUserMsg_ItemPurchased{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[44] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ItemPurchased) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ItemPurchased) ProtoMessage() {} func (x *CDOTAUserMsg_ItemPurchased) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[44] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ItemPurchased.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ItemPurchased) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{44} } func (x *CDOTAUserMsg_ItemPurchased) GetItemAbilityId() int32 { if x != nil && x.ItemAbilityId != nil { return *x.ItemAbilityId } return 0 } type CDOTAUserMsg_ItemSold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ItemAbilityId *int32 `protobuf:"varint,1,opt,name=item_ability_id,json=itemAbilityId" json:"item_ability_id,omitempty"` } func (x *CDOTAUserMsg_ItemSold) Reset() { *x = CDOTAUserMsg_ItemSold{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[45] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ItemSold) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ItemSold) ProtoMessage() {} func (x *CDOTAUserMsg_ItemSold) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[45] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ItemSold.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ItemSold) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{45} } func (x *CDOTAUserMsg_ItemSold) GetItemAbilityId() int32 { if x != nil && x.ItemAbilityId != nil { return *x.ItemAbilityId } return 0 } type CDOTAUserMsg_ItemFound struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Player *int32 `protobuf:"varint,1,opt,name=player" json:"player,omitempty"` Quality *int32 `protobuf:"varint,2,opt,name=quality" json:"quality,omitempty"` Rarity *int32 `protobuf:"varint,3,opt,name=rarity" json:"rarity,omitempty"` Method *int32 `protobuf:"varint,4,opt,name=method" json:"method,omitempty"` Itemdef *uint32 `protobuf:"varint,5,opt,name=itemdef" json:"itemdef,omitempty"` } func (x *CDOTAUserMsg_ItemFound) Reset() { *x = CDOTAUserMsg_ItemFound{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[46] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ItemFound) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ItemFound) ProtoMessage() {} func (x *CDOTAUserMsg_ItemFound) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[46] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ItemFound.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ItemFound) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{46} } func (x *CDOTAUserMsg_ItemFound) GetPlayer() int32 { if x != nil && x.Player != nil { return *x.Player } return 0 } func (x *CDOTAUserMsg_ItemFound) GetQuality() int32 { if x != nil && x.Quality != nil { return *x.Quality } return 0 } func (x *CDOTAUserMsg_ItemFound) GetRarity() int32 { if x != nil && x.Rarity != nil { return *x.Rarity } return 0 } func (x *CDOTAUserMsg_ItemFound) GetMethod() int32 { if x != nil && x.Method != nil { return *x.Method } return 0 } func (x *CDOTAUserMsg_ItemFound) GetItemdef() uint32 { if x != nil && x.Itemdef != nil { return *x.Itemdef } return 0 } type CDOTAUserMsg_OverheadEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MessageType *DOTA_OVERHEAD_ALERT `protobuf:"varint,1,req,name=message_type,json=messageType,enum=DOTA_OVERHEAD_ALERT,def=0" json:"message_type,omitempty"` Value *int32 `protobuf:"varint,2,opt,name=value" json:"value,omitempty"` TargetPlayerEntindex *int32 `protobuf:"varint,3,opt,name=target_player_entindex,json=targetPlayerEntindex" json:"target_player_entindex,omitempty"` TargetEntindex *int32 `protobuf:"varint,4,opt,name=target_entindex,json=targetEntindex" json:"target_entindex,omitempty"` SourcePlayerEntindex *int32 `protobuf:"varint,5,opt,name=source_player_entindex,json=sourcePlayerEntindex" json:"source_player_entindex,omitempty"` } // Default values for CDOTAUserMsg_OverheadEvent fields. const ( Default_CDOTAUserMsg_OverheadEvent_MessageType = DOTA_OVERHEAD_ALERT_OVERHEAD_ALERT_GOLD ) func (x *CDOTAUserMsg_OverheadEvent) Reset() { *x = CDOTAUserMsg_OverheadEvent{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[47] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_OverheadEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_OverheadEvent) ProtoMessage() {} func (x *CDOTAUserMsg_OverheadEvent) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[47] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_OverheadEvent.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_OverheadEvent) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{47} } func (x *CDOTAUserMsg_OverheadEvent) GetMessageType() DOTA_OVERHEAD_ALERT { if x != nil && x.MessageType != nil { return *x.MessageType } return Default_CDOTAUserMsg_OverheadEvent_MessageType } func (x *CDOTAUserMsg_OverheadEvent) GetValue() int32 { if x != nil && x.Value != nil { return *x.Value } return 0 } func (x *CDOTAUserMsg_OverheadEvent) GetTargetPlayerEntindex() int32 { if x != nil && x.TargetPlayerEntindex != nil { return *x.TargetPlayerEntindex } return 0 } func (x *CDOTAUserMsg_OverheadEvent) GetTargetEntindex() int32 { if x != nil && x.TargetEntindex != nil { return *x.TargetEntindex } return 0 } func (x *CDOTAUserMsg_OverheadEvent) GetSourcePlayerEntindex() int32 { if x != nil && x.SourcePlayerEntindex != nil { return *x.SourcePlayerEntindex } return 0 } type CDOTAUserMsg_TutorialTipInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"` Progress *int32 `protobuf:"varint,2,opt,name=progress" json:"progress,omitempty"` } func (x *CDOTAUserMsg_TutorialTipInfo) Reset() { *x = CDOTAUserMsg_TutorialTipInfo{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[48] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TutorialTipInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TutorialTipInfo) ProtoMessage() {} func (x *CDOTAUserMsg_TutorialTipInfo) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[48] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TutorialTipInfo.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TutorialTipInfo) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{48} } func (x *CDOTAUserMsg_TutorialTipInfo) GetName() string { if x != nil && x.Name != nil { return *x.Name } return "" } func (x *CDOTAUserMsg_TutorialTipInfo) GetProgress() int32 { if x != nil && x.Progress != nil { return *x.Progress } return 0 } type CDOTAUserMsg_TutorialFinish struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Heading *string `protobuf:"bytes,1,opt,name=heading" json:"heading,omitempty"` Emblem *string `protobuf:"bytes,2,opt,name=emblem" json:"emblem,omitempty"` Body *string `protobuf:"bytes,3,opt,name=body" json:"body,omitempty"` Success *bool `protobuf:"varint,4,opt,name=success" json:"success,omitempty"` } func (x *CDOTAUserMsg_TutorialFinish) Reset() { *x = CDOTAUserMsg_TutorialFinish{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[49] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TutorialFinish) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TutorialFinish) ProtoMessage() {} func (x *CDOTAUserMsg_TutorialFinish) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[49] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TutorialFinish.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TutorialFinish) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{49} } func (x *CDOTAUserMsg_TutorialFinish) GetHeading() string { if x != nil && x.Heading != nil { return *x.Heading } return "" } func (x *CDOTAUserMsg_TutorialFinish) GetEmblem() string { if x != nil && x.Emblem != nil { return *x.Emblem } return "" } func (x *CDOTAUserMsg_TutorialFinish) GetBody() string { if x != nil && x.Body != nil { return *x.Body } return "" } func (x *CDOTAUserMsg_TutorialFinish) GetSuccess() bool { if x != nil && x.Success != nil { return *x.Success } return false } type CDOTAUserMsg_TutorialMinimapPosition struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CDOTAUserMsg_TutorialMinimapPosition) Reset() { *x = CDOTAUserMsg_TutorialMinimapPosition{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[50] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TutorialMinimapPosition) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TutorialMinimapPosition) ProtoMessage() {} func (x *CDOTAUserMsg_TutorialMinimapPosition) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[50] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TutorialMinimapPosition.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TutorialMinimapPosition) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{50} } type CDOTAUserMsg_SendGenericToolTip struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` Text *string `protobuf:"bytes,2,opt,name=text" json:"text,omitempty"` Entindex *int32 `protobuf:"varint,3,opt,name=entindex" json:"entindex,omitempty"` Close *bool `protobuf:"varint,4,opt,name=close" json:"close,omitempty"` } func (x *CDOTAUserMsg_SendGenericToolTip) Reset() { *x = CDOTAUserMsg_SendGenericToolTip{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[51] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SendGenericToolTip) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SendGenericToolTip) ProtoMessage() {} func (x *CDOTAUserMsg_SendGenericToolTip) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[51] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SendGenericToolTip.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SendGenericToolTip) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{51} } func (x *CDOTAUserMsg_SendGenericToolTip) GetTitle() string { if x != nil && x.Title != nil { return *x.Title } return "" } func (x *CDOTAUserMsg_SendGenericToolTip) GetText() string { if x != nil && x.Text != nil { return *x.Text } return "" } func (x *CDOTAUserMsg_SendGenericToolTip) GetEntindex() int32 { if x != nil && x.Entindex != nil { return *x.Entindex } return 0 } func (x *CDOTAUserMsg_SendGenericToolTip) GetClose() bool { if x != nil && x.Close != nil { return *x.Close } return false } type CDOTAUserMsg_WorldLine struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Worldline *CDOTAMsg_WorldLine `protobuf:"bytes,2,opt,name=worldline" json:"worldline,omitempty"` } func (x *CDOTAUserMsg_WorldLine) Reset() { *x = CDOTAUserMsg_WorldLine{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[52] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_WorldLine) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_WorldLine) ProtoMessage() {} func (x *CDOTAUserMsg_WorldLine) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[52] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_WorldLine.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_WorldLine) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{52} } func (x *CDOTAUserMsg_WorldLine) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_WorldLine) GetWorldline() *CDOTAMsg_WorldLine { if x != nil { return x.Worldline } return nil } type CDOTAUserMsg_ChatWheel struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ChatMessageId *uint32 `protobuf:"varint,1,opt,name=chat_message_id,json=chatMessageId" json:"chat_message_id,omitempty"` PlayerId *int32 `protobuf:"varint,2,opt,name=player_id,json=playerId" json:"player_id,omitempty"` AccountId *uint32 `protobuf:"varint,3,opt,name=account_id,json=accountId" json:"account_id,omitempty"` ParamHeroId *uint32 `protobuf:"varint,4,opt,name=param_hero_id,json=paramHeroId" json:"param_hero_id,omitempty"` EmoticonId *uint32 `protobuf:"varint,5,opt,name=emoticon_id,json=emoticonId" json:"emoticon_id,omitempty"` } func (x *CDOTAUserMsg_ChatWheel) Reset() { *x = CDOTAUserMsg_ChatWheel{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[53] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ChatWheel) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ChatWheel) ProtoMessage() {} func (x *CDOTAUserMsg_ChatWheel) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[53] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ChatWheel.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ChatWheel) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{53} } func (x *CDOTAUserMsg_ChatWheel) GetChatMessageId() uint32 { if x != nil && x.ChatMessageId != nil { return *x.ChatMessageId } return 0 } func (x *CDOTAUserMsg_ChatWheel) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_ChatWheel) GetAccountId() uint32 { if x != nil && x.AccountId != nil { return *x.AccountId } return 0 } func (x *CDOTAUserMsg_ChatWheel) GetParamHeroId() uint32 { if x != nil && x.ParamHeroId != nil { return *x.ParamHeroId } return 0 } func (x *CDOTAUserMsg_ChatWheel) GetEmoticonId() uint32 { if x != nil && x.EmoticonId != nil { return *x.EmoticonId } return 0 } type CDOTAUserMsg_ReceivedXmasGift struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` ItemName *string `protobuf:"bytes,2,opt,name=item_name,json=itemName" json:"item_name,omitempty"` InventorySlot *int32 `protobuf:"varint,3,opt,name=inventory_slot,json=inventorySlot" json:"inventory_slot,omitempty"` } func (x *CDOTAUserMsg_ReceivedXmasGift) Reset() { *x = CDOTAUserMsg_ReceivedXmasGift{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[54] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ReceivedXmasGift) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ReceivedXmasGift) ProtoMessage() {} func (x *CDOTAUserMsg_ReceivedXmasGift) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[54] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ReceivedXmasGift.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ReceivedXmasGift) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{54} } func (x *CDOTAUserMsg_ReceivedXmasGift) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_ReceivedXmasGift) GetItemName() string { if x != nil && x.ItemName != nil { return *x.ItemName } return "" } func (x *CDOTAUserMsg_ReceivedXmasGift) GetInventorySlot() int32 { if x != nil && x.InventorySlot != nil { return *x.InventorySlot } return 0 } type CDOTAUserMsg_ShowSurvey struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SurveyId *int32 `protobuf:"varint,1,opt,name=survey_id,json=surveyId" json:"survey_id,omitempty"` MatchId *uint64 `protobuf:"varint,2,opt,name=match_id,json=matchId" json:"match_id,omitempty"` ResponseStyle *string `protobuf:"bytes,3,opt,name=response_style,json=responseStyle" json:"response_style,omitempty"` TeammateHeroId *uint32 `protobuf:"varint,4,opt,name=teammate_hero_id,json=teammateHeroId" json:"teammate_hero_id,omitempty"` TeammateName *string `protobuf:"bytes,5,opt,name=teammate_name,json=teammateName" json:"teammate_name,omitempty"` TeammateAccountId *uint32 `protobuf:"varint,6,opt,name=teammate_account_id,json=teammateAccountId" json:"teammate_account_id,omitempty"` } func (x *CDOTAUserMsg_ShowSurvey) Reset() { *x = CDOTAUserMsg_ShowSurvey{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[55] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ShowSurvey) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ShowSurvey) ProtoMessage() {} func (x *CDOTAUserMsg_ShowSurvey) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[55] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ShowSurvey.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ShowSurvey) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{55} } func (x *CDOTAUserMsg_ShowSurvey) GetSurveyId() int32 { if x != nil && x.SurveyId != nil { return *x.SurveyId } return 0 } func (x *CDOTAUserMsg_ShowSurvey) GetMatchId() uint64 { if x != nil && x.MatchId != nil { return *x.MatchId } return 0 } func (x *CDOTAUserMsg_ShowSurvey) GetResponseStyle() string { if x != nil && x.ResponseStyle != nil { return *x.ResponseStyle } return "" } func (x *CDOTAUserMsg_ShowSurvey) GetTeammateHeroId() uint32 { if x != nil && x.TeammateHeroId != nil { return *x.TeammateHeroId } return 0 } func (x *CDOTAUserMsg_ShowSurvey) GetTeammateName() string { if x != nil && x.TeammateName != nil { return *x.TeammateName } return "" } func (x *CDOTAUserMsg_ShowSurvey) GetTeammateAccountId() uint32 { if x != nil && x.TeammateAccountId != nil { return *x.TeammateAccountId } return 0 } type CDOTAUserMsg_UpdateSharedContent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SlotType *int32 `protobuf:"varint,1,opt,name=slot_type,json=slotType" json:"slot_type,omitempty"` } func (x *CDOTAUserMsg_UpdateSharedContent) Reset() { *x = CDOTAUserMsg_UpdateSharedContent{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[56] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_UpdateSharedContent) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_UpdateSharedContent) ProtoMessage() {} func (x *CDOTAUserMsg_UpdateSharedContent) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[56] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_UpdateSharedContent.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_UpdateSharedContent) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{56} } func (x *CDOTAUserMsg_UpdateSharedContent) GetSlotType() int32 { if x != nil && x.SlotType != nil { return *x.SlotType } return 0 } type CDOTAUserMsg_TutorialRequestExp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CDOTAUserMsg_TutorialRequestExp) Reset() { *x = CDOTAUserMsg_TutorialRequestExp{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[57] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TutorialRequestExp) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TutorialRequestExp) ProtoMessage() {} func (x *CDOTAUserMsg_TutorialRequestExp) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[57] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TutorialRequestExp.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TutorialRequestExp) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{57} } type CDOTAUserMsg_TutorialFade struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TgtAlpha *int32 `protobuf:"varint,1,opt,name=tgt_alpha,json=tgtAlpha" json:"tgt_alpha,omitempty"` } func (x *CDOTAUserMsg_TutorialFade) Reset() { *x = CDOTAUserMsg_TutorialFade{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[58] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TutorialFade) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TutorialFade) ProtoMessage() {} func (x *CDOTAUserMsg_TutorialFade) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[58] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TutorialFade.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TutorialFade) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{58} } func (x *CDOTAUserMsg_TutorialFade) GetTgtAlpha() int32 { if x != nil && x.TgtAlpha != nil { return *x.TgtAlpha } return 0 } type CDOTAUserMsg_TutorialPingMinimap struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` PosX *float32 `protobuf:"fixed32,2,opt,name=pos_x,json=posX" json:"pos_x,omitempty"` PosY *float32 `protobuf:"fixed32,3,opt,name=pos_y,json=posY" json:"pos_y,omitempty"` PosZ *float32 `protobuf:"fixed32,4,opt,name=pos_z,json=posZ" json:"pos_z,omitempty"` EntityIndex *int32 `protobuf:"varint,5,opt,name=entity_index,json=entityIndex" json:"entity_index,omitempty"` } func (x *CDOTAUserMsg_TutorialPingMinimap) Reset() { *x = CDOTAUserMsg_TutorialPingMinimap{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[59] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TutorialPingMinimap) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TutorialPingMinimap) ProtoMessage() {} func (x *CDOTAUserMsg_TutorialPingMinimap) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[59] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TutorialPingMinimap.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TutorialPingMinimap) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{59} } func (x *CDOTAUserMsg_TutorialPingMinimap) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_TutorialPingMinimap) GetPosX() float32 { if x != nil && x.PosX != nil { return *x.PosX } return 0 } func (x *CDOTAUserMsg_TutorialPingMinimap) GetPosY() float32 { if x != nil && x.PosY != nil { return *x.PosY } return 0 } func (x *CDOTAUserMsg_TutorialPingMinimap) GetPosZ() float32 { if x != nil && x.PosZ != nil { return *x.PosZ } return 0 } func (x *CDOTAUserMsg_TutorialPingMinimap) GetEntityIndex() int32 { if x != nil && x.EntityIndex != nil { return *x.EntityIndex } return 0 } type CDOTAUserMsg_GamerulesStateChanged struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields State *uint32 `protobuf:"varint,1,opt,name=state" json:"state,omitempty"` } func (x *CDOTAUserMsg_GamerulesStateChanged) Reset() { *x = CDOTAUserMsg_GamerulesStateChanged{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[60] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_GamerulesStateChanged) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_GamerulesStateChanged) ProtoMessage() {} func (x *CDOTAUserMsg_GamerulesStateChanged) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[60] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_GamerulesStateChanged.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_GamerulesStateChanged) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{60} } func (x *CDOTAUserMsg_GamerulesStateChanged) GetState() uint32 { if x != nil && x.State != nil { return *x.State } return 0 } type CDOTAUserMsg_AddQuestLogEntry struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields NpcName *string `protobuf:"bytes,1,opt,name=npc_name,json=npcName" json:"npc_name,omitempty"` NpcDialog *string `protobuf:"bytes,2,opt,name=npc_dialog,json=npcDialog" json:"npc_dialog,omitempty"` } func (x *CDOTAUserMsg_AddQuestLogEntry) Reset() { *x = CDOTAUserMsg_AddQuestLogEntry{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[61] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_AddQuestLogEntry) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_AddQuestLogEntry) ProtoMessage() {} func (x *CDOTAUserMsg_AddQuestLogEntry) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[61] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_AddQuestLogEntry.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_AddQuestLogEntry) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{61} } func (x *CDOTAUserMsg_AddQuestLogEntry) GetNpcName() string { if x != nil && x.NpcName != nil { return *x.NpcName } return "" } func (x *CDOTAUserMsg_AddQuestLogEntry) GetNpcDialog() string { if x != nil && x.NpcDialog != nil { return *x.NpcDialog } return "" } type CDOTAUserMsg_SendStatPopup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Statpopup *CDOTAMsg_SendStatPopup `protobuf:"bytes,2,opt,name=statpopup" json:"statpopup,omitempty"` } func (x *CDOTAUserMsg_SendStatPopup) Reset() { *x = CDOTAUserMsg_SendStatPopup{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[62] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SendStatPopup) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SendStatPopup) ProtoMessage() {} func (x *CDOTAUserMsg_SendStatPopup) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[62] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SendStatPopup.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SendStatPopup) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{62} } func (x *CDOTAUserMsg_SendStatPopup) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_SendStatPopup) GetStatpopup() *CDOTAMsg_SendStatPopup { if x != nil { return x.Statpopup } return nil } type CDOTAUserMsg_DismissAllStatPopups struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Dismissallmsg *CDOTAMsg_DismissAllStatPopups `protobuf:"bytes,1,opt,name=dismissallmsg" json:"dismissallmsg,omitempty"` } func (x *CDOTAUserMsg_DismissAllStatPopups) Reset() { *x = CDOTAUserMsg_DismissAllStatPopups{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[63] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_DismissAllStatPopups) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_DismissAllStatPopups) ProtoMessage() {} func (x *CDOTAUserMsg_DismissAllStatPopups) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[63] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_DismissAllStatPopups.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_DismissAllStatPopups) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{63} } func (x *CDOTAUserMsg_DismissAllStatPopups) GetDismissallmsg() *CDOTAMsg_DismissAllStatPopups { if x != nil { return x.Dismissallmsg } return nil } type CDOTAUserMsg_SendRoshanSpectatorPhase struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Phase *DOTA_ROSHAN_PHASE `protobuf:"varint,1,opt,name=phase,enum=DOTA_ROSHAN_PHASE,def=0" json:"phase,omitempty"` PhaseStartTime *int32 `protobuf:"varint,2,opt,name=phase_start_time,json=phaseStartTime" json:"phase_start_time,omitempty"` PhaseLength *int32 `protobuf:"varint,3,opt,name=phase_length,json=phaseLength" json:"phase_length,omitempty"` } // Default values for CDOTAUserMsg_SendRoshanSpectatorPhase fields. const ( Default_CDOTAUserMsg_SendRoshanSpectatorPhase_Phase = DOTA_ROSHAN_PHASE_k_SRSP_ROSHAN_ALIVE ) func (x *CDOTAUserMsg_SendRoshanSpectatorPhase) Reset() { *x = CDOTAUserMsg_SendRoshanSpectatorPhase{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[64] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SendRoshanSpectatorPhase) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SendRoshanSpectatorPhase) ProtoMessage() {} func (x *CDOTAUserMsg_SendRoshanSpectatorPhase) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[64] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SendRoshanSpectatorPhase.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SendRoshanSpectatorPhase) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{64} } func (x *CDOTAUserMsg_SendRoshanSpectatorPhase) GetPhase() DOTA_ROSHAN_PHASE { if x != nil && x.Phase != nil { return *x.Phase } return Default_CDOTAUserMsg_SendRoshanSpectatorPhase_Phase } func (x *CDOTAUserMsg_SendRoshanSpectatorPhase) GetPhaseStartTime() int32 { if x != nil && x.PhaseStartTime != nil { return *x.PhaseStartTime } return 0 } func (x *CDOTAUserMsg_SendRoshanSpectatorPhase) GetPhaseLength() int32 { if x != nil && x.PhaseLength != nil { return *x.PhaseLength } return 0 } type CDOTAUserMsg_SendRoshanPopup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Reclaimed *bool `protobuf:"varint,1,opt,name=reclaimed" json:"reclaimed,omitempty"` Gametime *int32 `protobuf:"varint,2,opt,name=gametime" json:"gametime,omitempty"` } func (x *CDOTAUserMsg_SendRoshanPopup) Reset() { *x = CDOTAUserMsg_SendRoshanPopup{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[65] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SendRoshanPopup) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SendRoshanPopup) ProtoMessage() {} func (x *CDOTAUserMsg_SendRoshanPopup) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[65] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SendRoshanPopup.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SendRoshanPopup) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{65} } func (x *CDOTAUserMsg_SendRoshanPopup) GetReclaimed() bool { if x != nil && x.Reclaimed != nil { return *x.Reclaimed } return false } func (x *CDOTAUserMsg_SendRoshanPopup) GetGametime() int32 { if x != nil && x.Gametime != nil { return *x.Gametime } return 0 } type CDOTAUserMsg_SendFinalGold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ReliableGold []uint32 `protobuf:"varint,1,rep,name=reliable_gold,json=reliableGold" json:"reliable_gold,omitempty"` UnreliableGold []uint32 `protobuf:"varint,2,rep,name=unreliable_gold,json=unreliableGold" json:"unreliable_gold,omitempty"` } func (x *CDOTAUserMsg_SendFinalGold) Reset() { *x = CDOTAUserMsg_SendFinalGold{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[66] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SendFinalGold) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SendFinalGold) ProtoMessage() {} func (x *CDOTAUserMsg_SendFinalGold) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[66] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SendFinalGold.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SendFinalGold) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{66} } func (x *CDOTAUserMsg_SendFinalGold) GetReliableGold() []uint32 { if x != nil { return x.ReliableGold } return nil } func (x *CDOTAUserMsg_SendFinalGold) GetUnreliableGold() []uint32 { if x != nil { return x.UnreliableGold } return nil } type CDOTAUserMsg_CustomMsg struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Message *string `protobuf:"bytes,1,opt,name=message" json:"message,omitempty"` PlayerId *int32 `protobuf:"varint,2,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Value *int32 `protobuf:"varint,3,opt,name=value" json:"value,omitempty"` } func (x *CDOTAUserMsg_CustomMsg) Reset() { *x = CDOTAUserMsg_CustomMsg{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[67] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CustomMsg) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CustomMsg) ProtoMessage() {} func (x *CDOTAUserMsg_CustomMsg) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[67] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CustomMsg.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CustomMsg) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{67} } func (x *CDOTAUserMsg_CustomMsg) GetMessage() string { if x != nil && x.Message != nil { return *x.Message } return "" } func (x *CDOTAUserMsg_CustomMsg) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_CustomMsg) GetValue() int32 { if x != nil && x.Value != nil { return *x.Value } return 0 } type CDOTAUserMsg_CoachHUDPing struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` HudPing *CDOTAMsg_CoachHUDPing `protobuf:"bytes,2,opt,name=hud_ping,json=hudPing" json:"hud_ping,omitempty"` } func (x *CDOTAUserMsg_CoachHUDPing) Reset() { *x = CDOTAUserMsg_CoachHUDPing{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[68] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CoachHUDPing) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CoachHUDPing) ProtoMessage() {} func (x *CDOTAUserMsg_CoachHUDPing) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[68] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CoachHUDPing.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CoachHUDPing) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{68} } func (x *CDOTAUserMsg_CoachHUDPing) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_CoachHUDPing) GetHudPing() *CDOTAMsg_CoachHUDPing { if x != nil { return x.HudPing } return nil } type CDOTAUserMsg_ClientLoadGridNav struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CDOTAUserMsg_ClientLoadGridNav) Reset() { *x = CDOTAUserMsg_ClientLoadGridNav{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[69] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ClientLoadGridNav) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ClientLoadGridNav) ProtoMessage() {} func (x *CDOTAUserMsg_ClientLoadGridNav) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[69] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ClientLoadGridNav.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ClientLoadGridNav) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{69} } type CDOTAUserMsg_TE_Projectile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Source *uint32 `protobuf:"varint,1,opt,name=source" json:"source,omitempty"` Target *uint32 `protobuf:"varint,2,opt,name=target" json:"target,omitempty"` MoveSpeed *int32 `protobuf:"varint,3,opt,name=move_speed,json=moveSpeed" json:"move_speed,omitempty"` SourceAttachment *int32 `protobuf:"varint,4,opt,name=source_attachment,json=sourceAttachment" json:"source_attachment,omitempty"` ParticleSystemHandle *int64 `protobuf:"varint,5,opt,name=particle_system_handle,json=particleSystemHandle" json:"particle_system_handle,omitempty"` Dodgeable *bool `protobuf:"varint,6,opt,name=dodgeable" json:"dodgeable,omitempty"` IsAttack *bool `protobuf:"varint,7,opt,name=is_attack,json=isAttack" json:"is_attack,omitempty"` ExpireTime *float32 `protobuf:"fixed32,9,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"` Maximpacttime *float32 `protobuf:"fixed32,10,opt,name=maximpacttime" json:"maximpacttime,omitempty"` Colorgemcolor *uint32 `protobuf:"fixed32,11,opt,name=colorgemcolor" json:"colorgemcolor,omitempty"` LaunchTick *int32 `protobuf:"varint,12,opt,name=launch_tick,json=launchTick" json:"launch_tick,omitempty"` Handle *int32 `protobuf:"varint,13,opt,name=handle" json:"handle,omitempty"` TargetLoc *CMsgVector `protobuf:"bytes,14,opt,name=target_loc,json=targetLoc" json:"target_loc,omitempty"` ParticleCpData []*CDOTAUserMsg_ProjectileParticleCPData `protobuf:"bytes,15,rep,name=particle_cp_data,json=particleCpData" json:"particle_cp_data,omitempty"` } func (x *CDOTAUserMsg_TE_Projectile) Reset() { *x = CDOTAUserMsg_TE_Projectile{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[70] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TE_Projectile) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TE_Projectile) ProtoMessage() {} func (x *CDOTAUserMsg_TE_Projectile) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[70] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TE_Projectile.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TE_Projectile) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{70} } func (x *CDOTAUserMsg_TE_Projectile) GetSource() uint32 { if x != nil && x.Source != nil { return *x.Source } return 0 } func (x *CDOTAUserMsg_TE_Projectile) GetTarget() uint32 { if x != nil && x.Target != nil { return *x.Target } return 0 } func (x *CDOTAUserMsg_TE_Projectile) GetMoveSpeed() int32 { if x != nil && x.MoveSpeed != nil { return *x.MoveSpeed } return 0 } func (x *CDOTAUserMsg_TE_Projectile) GetSourceAttachment() int32 { if x != nil && x.SourceAttachment != nil { return *x.SourceAttachment } return 0 } func (x *CDOTAUserMsg_TE_Projectile) GetParticleSystemHandle() int64 { if x != nil && x.ParticleSystemHandle != nil { return *x.ParticleSystemHandle } return 0 } func (x *CDOTAUserMsg_TE_Projectile) GetDodgeable() bool { if x != nil && x.Dodgeable != nil { return *x.Dodgeable } return false } func (x *CDOTAUserMsg_TE_Projectile) GetIsAttack() bool { if x != nil && x.IsAttack != nil { return *x.IsAttack } return false } func (x *CDOTAUserMsg_TE_Projectile) GetExpireTime() float32 { if x != nil && x.ExpireTime != nil { return *x.ExpireTime } return 0 } func (x *CDOTAUserMsg_TE_Projectile) GetMaximpacttime() float32 { if x != nil && x.Maximpacttime != nil { return *x.Maximpacttime } return 0 } func (x *CDOTAUserMsg_TE_Projectile) GetColorgemcolor() uint32 { if x != nil && x.Colorgemcolor != nil { return *x.Colorgemcolor } return 0 } func (x *CDOTAUserMsg_TE_Projectile) GetLaunchTick() int32 { if x != nil && x.LaunchTick != nil { return *x.LaunchTick } return 0 } func (x *CDOTAUserMsg_TE_Projectile) GetHandle() int32 { if x != nil && x.Handle != nil { return *x.Handle } return 0 } func (x *CDOTAUserMsg_TE_Projectile) GetTargetLoc() *CMsgVector { if x != nil { return x.TargetLoc } return nil } func (x *CDOTAUserMsg_TE_Projectile) GetParticleCpData() []*CDOTAUserMsg_ProjectileParticleCPData { if x != nil { return x.ParticleCpData } return nil } type CDOTAUserMsg_TE_ProjectileLoc struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SourceLoc *CMsgVector `protobuf:"bytes,1,opt,name=source_loc,json=sourceLoc" json:"source_loc,omitempty"` Target *uint32 `protobuf:"varint,2,opt,name=target" json:"target,omitempty"` MoveSpeed *int32 `protobuf:"varint,3,opt,name=move_speed,json=moveSpeed" json:"move_speed,omitempty"` ParticleSystemHandle *int64 `protobuf:"varint,4,opt,name=particle_system_handle,json=particleSystemHandle" json:"particle_system_handle,omitempty"` Dodgeable *bool `protobuf:"varint,5,opt,name=dodgeable" json:"dodgeable,omitempty"` IsAttack *bool `protobuf:"varint,6,opt,name=is_attack,json=isAttack" json:"is_attack,omitempty"` ExpireTime *float32 `protobuf:"fixed32,9,opt,name=expire_time,json=expireTime" json:"expire_time,omitempty"` TargetLoc *CMsgVector `protobuf:"bytes,10,opt,name=target_loc,json=targetLoc" json:"target_loc,omitempty"` Colorgemcolor *uint32 `protobuf:"fixed32,11,opt,name=colorgemcolor" json:"colorgemcolor,omitempty"` LaunchTick *int32 `protobuf:"varint,12,opt,name=launch_tick,json=launchTick" json:"launch_tick,omitempty"` Handle *int32 `protobuf:"varint,13,opt,name=handle" json:"handle,omitempty"` Source *uint32 `protobuf:"varint,14,opt,name=source" json:"source,omitempty"` SourceAttachment *int32 `protobuf:"varint,15,opt,name=source_attachment,json=sourceAttachment" json:"source_attachment,omitempty"` ParticleCpData []*CDOTAUserMsg_ProjectileParticleCPData `protobuf:"bytes,16,rep,name=particle_cp_data,json=particleCpData" json:"particle_cp_data,omitempty"` } func (x *CDOTAUserMsg_TE_ProjectileLoc) Reset() { *x = CDOTAUserMsg_TE_ProjectileLoc{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[71] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TE_ProjectileLoc) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TE_ProjectileLoc) ProtoMessage() {} func (x *CDOTAUserMsg_TE_ProjectileLoc) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[71] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TE_ProjectileLoc.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TE_ProjectileLoc) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{71} } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetSourceLoc() *CMsgVector { if x != nil { return x.SourceLoc } return nil } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetTarget() uint32 { if x != nil && x.Target != nil { return *x.Target } return 0 } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetMoveSpeed() int32 { if x != nil && x.MoveSpeed != nil { return *x.MoveSpeed } return 0 } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetParticleSystemHandle() int64 { if x != nil && x.ParticleSystemHandle != nil { return *x.ParticleSystemHandle } return 0 } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetDodgeable() bool { if x != nil && x.Dodgeable != nil { return *x.Dodgeable } return false } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetIsAttack() bool { if x != nil && x.IsAttack != nil { return *x.IsAttack } return false } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetExpireTime() float32 { if x != nil && x.ExpireTime != nil { return *x.ExpireTime } return 0 } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetTargetLoc() *CMsgVector { if x != nil { return x.TargetLoc } return nil } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetColorgemcolor() uint32 { if x != nil && x.Colorgemcolor != nil { return *x.Colorgemcolor } return 0 } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetLaunchTick() int32 { if x != nil && x.LaunchTick != nil { return *x.LaunchTick } return 0 } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetHandle() int32 { if x != nil && x.Handle != nil { return *x.Handle } return 0 } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetSource() uint32 { if x != nil && x.Source != nil { return *x.Source } return 0 } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetSourceAttachment() int32 { if x != nil && x.SourceAttachment != nil { return *x.SourceAttachment } return 0 } func (x *CDOTAUserMsg_TE_ProjectileLoc) GetParticleCpData() []*CDOTAUserMsg_ProjectileParticleCPData { if x != nil { return x.ParticleCpData } return nil } type CDOTAUserMsg_TE_DestroyProjectile struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Handle *int32 `protobuf:"varint,1,opt,name=handle" json:"handle,omitempty"` } func (x *CDOTAUserMsg_TE_DestroyProjectile) Reset() { *x = CDOTAUserMsg_TE_DestroyProjectile{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[72] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TE_DestroyProjectile) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TE_DestroyProjectile) ProtoMessage() {} func (x *CDOTAUserMsg_TE_DestroyProjectile) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[72] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TE_DestroyProjectile.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TE_DestroyProjectile) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{72} } func (x *CDOTAUserMsg_TE_DestroyProjectile) GetHandle() int32 { if x != nil && x.Handle != nil { return *x.Handle } return 0 } type CDOTAUserMsg_TE_DotaBloodImpact struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Entity *uint32 `protobuf:"varint,1,opt,name=entity" json:"entity,omitempty"` Scale *float32 `protobuf:"fixed32,2,opt,name=scale" json:"scale,omitempty"` Xnormal *float32 `protobuf:"fixed32,3,opt,name=xnormal" json:"xnormal,omitempty"` Ynormal *float32 `protobuf:"fixed32,4,opt,name=ynormal" json:"ynormal,omitempty"` } func (x *CDOTAUserMsg_TE_DotaBloodImpact) Reset() { *x = CDOTAUserMsg_TE_DotaBloodImpact{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[73] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TE_DotaBloodImpact) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TE_DotaBloodImpact) ProtoMessage() {} func (x *CDOTAUserMsg_TE_DotaBloodImpact) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[73] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TE_DotaBloodImpact.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TE_DotaBloodImpact) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{73} } func (x *CDOTAUserMsg_TE_DotaBloodImpact) GetEntity() uint32 { if x != nil && x.Entity != nil { return *x.Entity } return 0 } func (x *CDOTAUserMsg_TE_DotaBloodImpact) GetScale() float32 { if x != nil && x.Scale != nil { return *x.Scale } return 0 } func (x *CDOTAUserMsg_TE_DotaBloodImpact) GetXnormal() float32 { if x != nil && x.Xnormal != nil { return *x.Xnormal } return 0 } func (x *CDOTAUserMsg_TE_DotaBloodImpact) GetYnormal() float32 { if x != nil && x.Ynormal != nil { return *x.Ynormal } return 0 } type CDOTAUserMsg_AbilityPing struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` AbilityId *uint32 `protobuf:"varint,2,opt,name=ability_id,json=abilityId" json:"ability_id,omitempty"` Type *DOTA_ABILITY_PING_TYPE `protobuf:"varint,3,opt,name=type,enum=DOTA_ABILITY_PING_TYPE,def=1" json:"type,omitempty"` CooldownSeconds *uint32 `protobuf:"varint,4,opt,name=cooldown_seconds,json=cooldownSeconds" json:"cooldown_seconds,omitempty"` Level *uint32 `protobuf:"varint,5,opt,name=level" json:"level,omitempty"` Passive *bool `protobuf:"varint,6,opt,name=passive" json:"passive,omitempty"` ManaNeeded *uint32 `protobuf:"varint,7,opt,name=mana_needed,json=manaNeeded" json:"mana_needed,omitempty"` EntityId *uint32 `protobuf:"varint,8,opt,name=entity_id,json=entityId" json:"entity_id,omitempty"` PrimaryCharges *int32 `protobuf:"varint,9,opt,name=primary_charges,json=primaryCharges" json:"primary_charges,omitempty"` SecondaryCharges *int32 `protobuf:"varint,10,opt,name=secondary_charges,json=secondaryCharges" json:"secondary_charges,omitempty"` CtrlHeld *bool `protobuf:"varint,12,opt,name=ctrl_held,json=ctrlHeld" json:"ctrl_held,omitempty"` ReclaimTime *float32 `protobuf:"fixed32,13,opt,name=reclaim_time,json=reclaimTime" json:"reclaim_time,omitempty"` } // Default values for CDOTAUserMsg_AbilityPing fields. const ( Default_CDOTAUserMsg_AbilityPing_Type = DOTA_ABILITY_PING_TYPE_ABILITY_PING_READY ) func (x *CDOTAUserMsg_AbilityPing) Reset() { *x = CDOTAUserMsg_AbilityPing{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[74] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_AbilityPing) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_AbilityPing) ProtoMessage() {} func (x *CDOTAUserMsg_AbilityPing) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[74] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_AbilityPing.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_AbilityPing) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{74} } func (x *CDOTAUserMsg_AbilityPing) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_AbilityPing) GetAbilityId() uint32 { if x != nil && x.AbilityId != nil { return *x.AbilityId } return 0 } func (x *CDOTAUserMsg_AbilityPing) GetType() DOTA_ABILITY_PING_TYPE { if x != nil && x.Type != nil { return *x.Type } return Default_CDOTAUserMsg_AbilityPing_Type } func (x *CDOTAUserMsg_AbilityPing) GetCooldownSeconds() uint32 { if x != nil && x.CooldownSeconds != nil { return *x.CooldownSeconds } return 0 } func (x *CDOTAUserMsg_AbilityPing) GetLevel() uint32 { if x != nil && x.Level != nil { return *x.Level } return 0 } func (x *CDOTAUserMsg_AbilityPing) GetPassive() bool { if x != nil && x.Passive != nil { return *x.Passive } return false } func (x *CDOTAUserMsg_AbilityPing) GetManaNeeded() uint32 { if x != nil && x.ManaNeeded != nil { return *x.ManaNeeded } return 0 } func (x *CDOTAUserMsg_AbilityPing) GetEntityId() uint32 { if x != nil && x.EntityId != nil { return *x.EntityId } return 0 } func (x *CDOTAUserMsg_AbilityPing) GetPrimaryCharges() int32 { if x != nil && x.PrimaryCharges != nil { return *x.PrimaryCharges } return 0 } func (x *CDOTAUserMsg_AbilityPing) GetSecondaryCharges() int32 { if x != nil && x.SecondaryCharges != nil { return *x.SecondaryCharges } return 0 } func (x *CDOTAUserMsg_AbilityPing) GetCtrlHeld() bool { if x != nil && x.CtrlHeld != nil { return *x.CtrlHeld } return false } func (x *CDOTAUserMsg_AbilityPing) GetReclaimTime() float32 { if x != nil && x.ReclaimTime != nil { return *x.ReclaimTime } return 0 } type CDOTAUserMsg_TE_UnitAnimation struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Entity *uint32 `protobuf:"varint,1,opt,name=entity" json:"entity,omitempty"` SequenceVariant *int32 `protobuf:"varint,2,opt,name=sequence_variant,json=sequenceVariant" json:"sequence_variant,omitempty"` Playbackrate *float32 `protobuf:"fixed32,3,opt,name=playbackrate" json:"playbackrate,omitempty"` Castpoint *float32 `protobuf:"fixed32,4,opt,name=castpoint" json:"castpoint,omitempty"` Type *int32 `protobuf:"varint,5,opt,name=type" json:"type,omitempty"` Activity *int32 `protobuf:"varint,6,opt,name=activity" json:"activity,omitempty"` LagCompensationTime *float32 `protobuf:"fixed32,7,opt,name=lag_compensation_time,json=lagCompensationTime" json:"lag_compensation_time,omitempty"` } func (x *CDOTAUserMsg_TE_UnitAnimation) Reset() { *x = CDOTAUserMsg_TE_UnitAnimation{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[75] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TE_UnitAnimation) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TE_UnitAnimation) ProtoMessage() {} func (x *CDOTAUserMsg_TE_UnitAnimation) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[75] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TE_UnitAnimation.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TE_UnitAnimation) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{75} } func (x *CDOTAUserMsg_TE_UnitAnimation) GetEntity() uint32 { if x != nil && x.Entity != nil { return *x.Entity } return 0 } func (x *CDOTAUserMsg_TE_UnitAnimation) GetSequenceVariant() int32 { if x != nil && x.SequenceVariant != nil { return *x.SequenceVariant } return 0 } func (x *CDOTAUserMsg_TE_UnitAnimation) GetPlaybackrate() float32 { if x != nil && x.Playbackrate != nil { return *x.Playbackrate } return 0 } func (x *CDOTAUserMsg_TE_UnitAnimation) GetCastpoint() float32 { if x != nil && x.Castpoint != nil { return *x.Castpoint } return 0 } func (x *CDOTAUserMsg_TE_UnitAnimation) GetType() int32 { if x != nil && x.Type != nil { return *x.Type } return 0 } func (x *CDOTAUserMsg_TE_UnitAnimation) GetActivity() int32 { if x != nil && x.Activity != nil { return *x.Activity } return 0 } func (x *CDOTAUserMsg_TE_UnitAnimation) GetLagCompensationTime() float32 { if x != nil && x.LagCompensationTime != nil { return *x.LagCompensationTime } return 0 } type CDOTAUserMsg_TE_UnitAnimationEnd struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Entity *uint32 `protobuf:"varint,1,opt,name=entity" json:"entity,omitempty"` Snap *bool `protobuf:"varint,2,opt,name=snap" json:"snap,omitempty"` } func (x *CDOTAUserMsg_TE_UnitAnimationEnd) Reset() { *x = CDOTAUserMsg_TE_UnitAnimationEnd{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[76] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TE_UnitAnimationEnd) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TE_UnitAnimationEnd) ProtoMessage() {} func (x *CDOTAUserMsg_TE_UnitAnimationEnd) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[76] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TE_UnitAnimationEnd.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TE_UnitAnimationEnd) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{76} } func (x *CDOTAUserMsg_TE_UnitAnimationEnd) GetEntity() uint32 { if x != nil && x.Entity != nil { return *x.Entity } return 0 } func (x *CDOTAUserMsg_TE_UnitAnimationEnd) GetSnap() bool { if x != nil && x.Snap != nil { return *x.Snap } return false } type CDOTAUserMsg_ShowGenericPopup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Header *string `protobuf:"bytes,1,req,name=header" json:"header,omitempty"` Body *string `protobuf:"bytes,2,req,name=body" json:"body,omitempty"` Param1 *string `protobuf:"bytes,3,opt,name=param1" json:"param1,omitempty"` Param2 *string `protobuf:"bytes,4,opt,name=param2" json:"param2,omitempty"` TintScreen *bool `protobuf:"varint,5,opt,name=tint_screen,json=tintScreen" json:"tint_screen,omitempty"` ShowNoOtherDialogs *bool `protobuf:"varint,6,opt,name=show_no_other_dialogs,json=showNoOtherDialogs" json:"show_no_other_dialogs,omitempty"` } func (x *CDOTAUserMsg_ShowGenericPopup) Reset() { *x = CDOTAUserMsg_ShowGenericPopup{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[77] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ShowGenericPopup) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ShowGenericPopup) ProtoMessage() {} func (x *CDOTAUserMsg_ShowGenericPopup) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[77] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ShowGenericPopup.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ShowGenericPopup) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{77} } func (x *CDOTAUserMsg_ShowGenericPopup) GetHeader() string { if x != nil && x.Header != nil { return *x.Header } return "" } func (x *CDOTAUserMsg_ShowGenericPopup) GetBody() string { if x != nil && x.Body != nil { return *x.Body } return "" } func (x *CDOTAUserMsg_ShowGenericPopup) GetParam1() string { if x != nil && x.Param1 != nil { return *x.Param1 } return "" } func (x *CDOTAUserMsg_ShowGenericPopup) GetParam2() string { if x != nil && x.Param2 != nil { return *x.Param2 } return "" } func (x *CDOTAUserMsg_ShowGenericPopup) GetTintScreen() bool { if x != nil && x.TintScreen != nil { return *x.TintScreen } return false } func (x *CDOTAUserMsg_ShowGenericPopup) GetShowNoOtherDialogs() bool { if x != nil && x.ShowNoOtherDialogs != nil { return *x.ShowNoOtherDialogs } return false } type CDOTAUserMsg_VoteStart struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Title *string `protobuf:"bytes,1,opt,name=title" json:"title,omitempty"` Duration *float32 `protobuf:"fixed32,2,opt,name=duration" json:"duration,omitempty"` ChoiceCount *int32 `protobuf:"varint,3,opt,name=choice_count,json=choiceCount" json:"choice_count,omitempty"` Choices []string `protobuf:"bytes,4,rep,name=choices" json:"choices,omitempty"` } func (x *CDOTAUserMsg_VoteStart) Reset() { *x = CDOTAUserMsg_VoteStart{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[78] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_VoteStart) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_VoteStart) ProtoMessage() {} func (x *CDOTAUserMsg_VoteStart) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[78] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_VoteStart.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_VoteStart) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{78} } func (x *CDOTAUserMsg_VoteStart) GetTitle() string { if x != nil && x.Title != nil { return *x.Title } return "" } func (x *CDOTAUserMsg_VoteStart) GetDuration() float32 { if x != nil && x.Duration != nil { return *x.Duration } return 0 } func (x *CDOTAUserMsg_VoteStart) GetChoiceCount() int32 { if x != nil && x.ChoiceCount != nil { return *x.ChoiceCount } return 0 } func (x *CDOTAUserMsg_VoteStart) GetChoices() []string { if x != nil { return x.Choices } return nil } type CDOTAUserMsg_VoteUpdate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ChoiceCounts []int32 `protobuf:"varint,1,rep,name=choice_counts,json=choiceCounts" json:"choice_counts,omitempty"` } func (x *CDOTAUserMsg_VoteUpdate) Reset() { *x = CDOTAUserMsg_VoteUpdate{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[79] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_VoteUpdate) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_VoteUpdate) ProtoMessage() {} func (x *CDOTAUserMsg_VoteUpdate) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[79] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_VoteUpdate.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_VoteUpdate) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{79} } func (x *CDOTAUserMsg_VoteUpdate) GetChoiceCounts() []int32 { if x != nil { return x.ChoiceCounts } return nil } type CDOTAUserMsg_VoteEnd struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SelectedChoice *int32 `protobuf:"varint,1,opt,name=selected_choice,json=selectedChoice" json:"selected_choice,omitempty"` } func (x *CDOTAUserMsg_VoteEnd) Reset() { *x = CDOTAUserMsg_VoteEnd{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[80] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_VoteEnd) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_VoteEnd) ProtoMessage() {} func (x *CDOTAUserMsg_VoteEnd) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[80] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_VoteEnd.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_VoteEnd) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{80} } func (x *CDOTAUserMsg_VoteEnd) GetSelectedChoice() int32 { if x != nil && x.SelectedChoice != nil { return *x.SelectedChoice } return 0 } type CDOTAUserMsg_BoosterStatePlayer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Bonus *float32 `protobuf:"fixed32,2,opt,name=bonus" json:"bonus,omitempty"` EventBonus *float32 `protobuf:"fixed32,3,opt,name=event_bonus,json=eventBonus" json:"event_bonus,omitempty"` BonusItemId *uint32 `protobuf:"varint,4,opt,name=bonus_item_id,json=bonusItemId" json:"bonus_item_id,omitempty"` EventBonusItemId *uint32 `protobuf:"varint,5,opt,name=event_bonus_item_id,json=eventBonusItemId" json:"event_bonus_item_id,omitempty"` } func (x *CDOTAUserMsg_BoosterStatePlayer) Reset() { *x = CDOTAUserMsg_BoosterStatePlayer{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[81] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_BoosterStatePlayer) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_BoosterStatePlayer) ProtoMessage() {} func (x *CDOTAUserMsg_BoosterStatePlayer) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[81] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_BoosterStatePlayer.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_BoosterStatePlayer) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{81} } func (x *CDOTAUserMsg_BoosterStatePlayer) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_BoosterStatePlayer) GetBonus() float32 { if x != nil && x.Bonus != nil { return *x.Bonus } return 0 } func (x *CDOTAUserMsg_BoosterStatePlayer) GetEventBonus() float32 { if x != nil && x.EventBonus != nil { return *x.EventBonus } return 0 } func (x *CDOTAUserMsg_BoosterStatePlayer) GetBonusItemId() uint32 { if x != nil && x.BonusItemId != nil { return *x.BonusItemId } return 0 } func (x *CDOTAUserMsg_BoosterStatePlayer) GetEventBonusItemId() uint32 { if x != nil && x.EventBonusItemId != nil { return *x.EventBonusItemId } return 0 } type CDOTAUserMsg_BoosterState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields BoostedPlayers []*CDOTAUserMsg_BoosterStatePlayer `protobuf:"bytes,1,rep,name=boosted_players,json=boostedPlayers" json:"boosted_players,omitempty"` } func (x *CDOTAUserMsg_BoosterState) Reset() { *x = CDOTAUserMsg_BoosterState{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[82] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_BoosterState) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_BoosterState) ProtoMessage() {} func (x *CDOTAUserMsg_BoosterState) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[82] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_BoosterState.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_BoosterState) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{82} } func (x *CDOTAUserMsg_BoosterState) GetBoostedPlayers() []*CDOTAUserMsg_BoosterStatePlayer { if x != nil { return x.BoostedPlayers } return nil } type CDOTAUserMsg_PlayerMMR struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Mmr []int32 `protobuf:"zigzag32,1,rep,packed,name=mmr" json:"mmr,omitempty"` } func (x *CDOTAUserMsg_PlayerMMR) Reset() { *x = CDOTAUserMsg_PlayerMMR{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[83] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_PlayerMMR) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_PlayerMMR) ProtoMessage() {} func (x *CDOTAUserMsg_PlayerMMR) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[83] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_PlayerMMR.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_PlayerMMR) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{83} } func (x *CDOTAUserMsg_PlayerMMR) GetMmr() []int32 { if x != nil { return x.Mmr } return nil } type CDOTAUserMsg_AbilitySteal struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` AbilityId *uint32 `protobuf:"varint,2,opt,name=ability_id,json=abilityId" json:"ability_id,omitempty"` AbilityLevel *uint32 `protobuf:"varint,3,opt,name=ability_level,json=abilityLevel" json:"ability_level,omitempty"` } func (x *CDOTAUserMsg_AbilitySteal) Reset() { *x = CDOTAUserMsg_AbilitySteal{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[84] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_AbilitySteal) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_AbilitySteal) ProtoMessage() {} func (x *CDOTAUserMsg_AbilitySteal) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[84] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_AbilitySteal.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_AbilitySteal) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{84} } func (x *CDOTAUserMsg_AbilitySteal) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_AbilitySteal) GetAbilityId() uint32 { if x != nil && x.AbilityId != nil { return *x.AbilityId } return 0 } func (x *CDOTAUserMsg_AbilitySteal) GetAbilityLevel() uint32 { if x != nil && x.AbilityLevel != nil { return *x.AbilityLevel } return 0 } type CDOTAUserMsg_StatsHeroLookup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` HeroId *int32 `protobuf:"varint,2,opt,name=hero_id,json=heroId" json:"hero_id,omitempty"` HeroName *string `protobuf:"bytes,3,opt,name=hero_name,json=heroName" json:"hero_name,omitempty"` Persona *string `protobuf:"bytes,4,opt,name=persona" json:"persona,omitempty"` } func (x *CDOTAUserMsg_StatsHeroLookup) Reset() { *x = CDOTAUserMsg_StatsHeroLookup{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[85] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsHeroLookup) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsHeroLookup) ProtoMessage() {} func (x *CDOTAUserMsg_StatsHeroLookup) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[85] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsHeroLookup.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsHeroLookup) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{85} } func (x *CDOTAUserMsg_StatsHeroLookup) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_StatsHeroLookup) GetHeroId() int32 { if x != nil && x.HeroId != nil { return *x.HeroId } return 0 } func (x *CDOTAUserMsg_StatsHeroLookup) GetHeroName() string { if x != nil && x.HeroName != nil { return *x.HeroName } return "" } func (x *CDOTAUserMsg_StatsHeroLookup) GetPersona() string { if x != nil && x.Persona != nil { return *x.Persona } return "" } type CDOTAUserMsg_StatsHeroPositionInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AveragePosition *float32 `protobuf:"fixed32,1,opt,name=average_position,json=averagePosition" json:"average_position,omitempty"` PositionDetails []*CDOTAUserMsg_StatsHeroPositionInfo_PositionPair `protobuf:"bytes,2,rep,name=position_details,json=positionDetails" json:"position_details,omitempty"` } func (x *CDOTAUserMsg_StatsHeroPositionInfo) Reset() { *x = CDOTAUserMsg_StatsHeroPositionInfo{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[86] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsHeroPositionInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsHeroPositionInfo) ProtoMessage() {} func (x *CDOTAUserMsg_StatsHeroPositionInfo) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[86] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsHeroPositionInfo.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsHeroPositionInfo) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{86} } func (x *CDOTAUserMsg_StatsHeroPositionInfo) GetAveragePosition() float32 { if x != nil && x.AveragePosition != nil { return *x.AveragePosition } return 0 } func (x *CDOTAUserMsg_StatsHeroPositionInfo) GetPositionDetails() []*CDOTAUserMsg_StatsHeroPositionInfo_PositionPair { if x != nil { return x.PositionDetails } return nil } type CDOTAUserMsg_StatsHeroMinuteDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LastHits *uint32 `protobuf:"varint,1,opt,name=last_hits,json=lastHits" json:"last_hits,omitempty"` HeroKills *uint32 `protobuf:"varint,2,opt,name=hero_kills,json=heroKills" json:"hero_kills,omitempty"` HeroDamage *uint32 `protobuf:"varint,3,opt,name=hero_damage,json=heroDamage" json:"hero_damage,omitempty"` TowerDamage *uint32 `protobuf:"varint,4,opt,name=tower_damage,json=towerDamage" json:"tower_damage,omitempty"` PositionInfo *CDOTAUserMsg_StatsHeroPositionInfo `protobuf:"bytes,5,opt,name=position_info,json=positionInfo" json:"position_info,omitempty"` TotalXp *uint32 `protobuf:"varint,6,opt,name=total_xp,json=totalXp" json:"total_xp,omitempty"` NetWorth *uint32 `protobuf:"varint,7,opt,name=net_worth,json=netWorth" json:"net_worth,omitempty"` HarvestedCreepGold *uint32 `protobuf:"varint,8,opt,name=harvested_creep_gold,json=harvestedCreepGold" json:"harvested_creep_gold,omitempty"` ClaimedFarm *uint32 `protobuf:"varint,9,opt,name=claimed_farm,json=claimedFarm" json:"claimed_farm,omitempty"` WardsPlaced *uint32 `protobuf:"varint,10,opt,name=wards_placed,json=wardsPlaced" json:"wards_placed,omitempty"` RunesCollected *uint32 `protobuf:"varint,11,opt,name=runes_collected,json=runesCollected" json:"runes_collected,omitempty"` TpsUsed *uint32 `protobuf:"varint,12,opt,name=tps_used,json=tpsUsed" json:"tps_used,omitempty"` ManaSpent []uint32 `protobuf:"varint,13,rep,name=mana_spent,json=manaSpent" json:"mana_spent,omitempty"` DamageAbsorbed []uint32 `protobuf:"varint,14,rep,name=damage_absorbed,json=damageAbsorbed" json:"damage_absorbed,omitempty"` DamageDone []uint32 `protobuf:"varint,15,rep,name=damage_done,json=damageDone" json:"damage_done,omitempty"` } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) Reset() { *x = CDOTAUserMsg_StatsHeroMinuteDetails{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[87] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsHeroMinuteDetails) ProtoMessage() {} func (x *CDOTAUserMsg_StatsHeroMinuteDetails) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[87] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsHeroMinuteDetails.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsHeroMinuteDetails) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{87} } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetLastHits() uint32 { if x != nil && x.LastHits != nil { return *x.LastHits } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetHeroKills() uint32 { if x != nil && x.HeroKills != nil { return *x.HeroKills } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetHeroDamage() uint32 { if x != nil && x.HeroDamage != nil { return *x.HeroDamage } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetTowerDamage() uint32 { if x != nil && x.TowerDamage != nil { return *x.TowerDamage } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetPositionInfo() *CDOTAUserMsg_StatsHeroPositionInfo { if x != nil { return x.PositionInfo } return nil } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetTotalXp() uint32 { if x != nil && x.TotalXp != nil { return *x.TotalXp } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetNetWorth() uint32 { if x != nil && x.NetWorth != nil { return *x.NetWorth } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetHarvestedCreepGold() uint32 { if x != nil && x.HarvestedCreepGold != nil { return *x.HarvestedCreepGold } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetClaimedFarm() uint32 { if x != nil && x.ClaimedFarm != nil { return *x.ClaimedFarm } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetWardsPlaced() uint32 { if x != nil && x.WardsPlaced != nil { return *x.WardsPlaced } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetRunesCollected() uint32 { if x != nil && x.RunesCollected != nil { return *x.RunesCollected } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetTpsUsed() uint32 { if x != nil && x.TpsUsed != nil { return *x.TpsUsed } return 0 } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetManaSpent() []uint32 { if x != nil { return x.ManaSpent } return nil } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetDamageAbsorbed() []uint32 { if x != nil { return x.DamageAbsorbed } return nil } func (x *CDOTAUserMsg_StatsHeroMinuteDetails) GetDamageDone() []uint32 { if x != nil { return x.DamageDone } return nil } type CDOTAUserMsg_StatsTeamMinuteDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerStats []*CDOTAUserMsg_StatsHeroMinuteDetails `protobuf:"bytes,1,rep,name=player_stats,json=playerStats" json:"player_stats,omitempty"` TowerKills *uint32 `protobuf:"varint,2,opt,name=tower_kills,json=towerKills" json:"tower_kills,omitempty"` BarrackKills *uint32 `protobuf:"varint,3,opt,name=barrack_kills,json=barrackKills" json:"barrack_kills,omitempty"` AvailableLaneCreepGold *uint32 `protobuf:"varint,4,opt,name=available_lane_creep_gold,json=availableLaneCreepGold" json:"available_lane_creep_gold,omitempty"` BalanceKillValue *uint32 `protobuf:"varint,5,opt,name=balance_kill_value,json=balanceKillValue" json:"balance_kill_value,omitempty"` BalanceTowerValue *uint32 `protobuf:"varint,6,opt,name=balance_tower_value,json=balanceTowerValue" json:"balance_tower_value,omitempty"` BalanceBarracksValue *uint32 `protobuf:"varint,7,opt,name=balance_barracks_value,json=balanceBarracksValue" json:"balance_barracks_value,omitempty"` BalanceGoldValue *uint32 `protobuf:"varint,8,opt,name=balance_gold_value,json=balanceGoldValue" json:"balance_gold_value,omitempty"` BalanceXpValue *uint32 `protobuf:"varint,9,opt,name=balance_xp_value,json=balanceXpValue" json:"balance_xp_value,omitempty"` LanePerformance []*CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance `protobuf:"bytes,10,rep,name=lane_performance,json=lanePerformance" json:"lane_performance,omitempty"` } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) Reset() { *x = CDOTAUserMsg_StatsTeamMinuteDetails{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[88] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsTeamMinuteDetails) ProtoMessage() {} func (x *CDOTAUserMsg_StatsTeamMinuteDetails) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[88] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsTeamMinuteDetails.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsTeamMinuteDetails) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{88} } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) GetPlayerStats() []*CDOTAUserMsg_StatsHeroMinuteDetails { if x != nil { return x.PlayerStats } return nil } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) GetTowerKills() uint32 { if x != nil && x.TowerKills != nil { return *x.TowerKills } return 0 } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) GetBarrackKills() uint32 { if x != nil && x.BarrackKills != nil { return *x.BarrackKills } return 0 } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) GetAvailableLaneCreepGold() uint32 { if x != nil && x.AvailableLaneCreepGold != nil { return *x.AvailableLaneCreepGold } return 0 } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) GetBalanceKillValue() uint32 { if x != nil && x.BalanceKillValue != nil { return *x.BalanceKillValue } return 0 } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) GetBalanceTowerValue() uint32 { if x != nil && x.BalanceTowerValue != nil { return *x.BalanceTowerValue } return 0 } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) GetBalanceBarracksValue() uint32 { if x != nil && x.BalanceBarracksValue != nil { return *x.BalanceBarracksValue } return 0 } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) GetBalanceGoldValue() uint32 { if x != nil && x.BalanceGoldValue != nil { return *x.BalanceGoldValue } return 0 } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) GetBalanceXpValue() uint32 { if x != nil && x.BalanceXpValue != nil { return *x.BalanceXpValue } return 0 } func (x *CDOTAUserMsg_StatsTeamMinuteDetails) GetLanePerformance() []*CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance { if x != nil { return x.LanePerformance } return nil } type CDOTAUserMsg_StatsPlayerKillShare struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` KillSharePercent *float32 `protobuf:"fixed32,2,opt,name=kill_share_percent,json=killSharePercent" json:"kill_share_percent,omitempty"` PlayerLocX *float32 `protobuf:"fixed32,3,opt,name=player_loc_x,json=playerLocX" json:"player_loc_x,omitempty"` PlayerLocY *float32 `protobuf:"fixed32,4,opt,name=player_loc_y,json=playerLocY" json:"player_loc_y,omitempty"` HealthPercent *float32 `protobuf:"fixed32,5,opt,name=health_percent,json=healthPercent" json:"health_percent,omitempty"` ManaPercent *float32 `protobuf:"fixed32,6,opt,name=mana_percent,json=manaPercent" json:"mana_percent,omitempty"` } func (x *CDOTAUserMsg_StatsPlayerKillShare) Reset() { *x = CDOTAUserMsg_StatsPlayerKillShare{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[89] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsPlayerKillShare) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsPlayerKillShare) ProtoMessage() {} func (x *CDOTAUserMsg_StatsPlayerKillShare) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[89] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsPlayerKillShare.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsPlayerKillShare) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{89} } func (x *CDOTAUserMsg_StatsPlayerKillShare) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_StatsPlayerKillShare) GetKillSharePercent() float32 { if x != nil && x.KillSharePercent != nil { return *x.KillSharePercent } return 0 } func (x *CDOTAUserMsg_StatsPlayerKillShare) GetPlayerLocX() float32 { if x != nil && x.PlayerLocX != nil { return *x.PlayerLocX } return 0 } func (x *CDOTAUserMsg_StatsPlayerKillShare) GetPlayerLocY() float32 { if x != nil && x.PlayerLocY != nil { return *x.PlayerLocY } return 0 } func (x *CDOTAUserMsg_StatsPlayerKillShare) GetHealthPercent() float32 { if x != nil && x.HealthPercent != nil { return *x.HealthPercent } return 0 } func (x *CDOTAUserMsg_StatsPlayerKillShare) GetManaPercent() float32 { if x != nil && x.ManaPercent != nil { return *x.ManaPercent } return 0 } type CDOTAUserMsg_StatsKillDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields VictimId *int32 `protobuf:"varint,1,opt,name=victim_id,json=victimId" json:"victim_id,omitempty"` KillShares []*CDOTAUserMsg_StatsPlayerKillShare `protobuf:"bytes,2,rep,name=kill_shares,json=killShares" json:"kill_shares,omitempty"` DamageToKill *uint32 `protobuf:"varint,3,opt,name=damage_to_kill,json=damageToKill" json:"damage_to_kill,omitempty"` EffectiveHealth *uint32 `protobuf:"varint,4,opt,name=effective_health,json=effectiveHealth" json:"effective_health,omitempty"` DeathTime *float32 `protobuf:"fixed32,5,opt,name=death_time,json=deathTime" json:"death_time,omitempty"` KillerId *int32 `protobuf:"varint,6,opt,name=killer_id,json=killerId" json:"killer_id,omitempty"` } func (x *CDOTAUserMsg_StatsKillDetails) Reset() { *x = CDOTAUserMsg_StatsKillDetails{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[90] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsKillDetails) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsKillDetails) ProtoMessage() {} func (x *CDOTAUserMsg_StatsKillDetails) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[90] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsKillDetails.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsKillDetails) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{90} } func (x *CDOTAUserMsg_StatsKillDetails) GetVictimId() int32 { if x != nil && x.VictimId != nil { return *x.VictimId } return 0 } func (x *CDOTAUserMsg_StatsKillDetails) GetKillShares() []*CDOTAUserMsg_StatsPlayerKillShare { if x != nil { return x.KillShares } return nil } func (x *CDOTAUserMsg_StatsKillDetails) GetDamageToKill() uint32 { if x != nil && x.DamageToKill != nil { return *x.DamageToKill } return 0 } func (x *CDOTAUserMsg_StatsKillDetails) GetEffectiveHealth() uint32 { if x != nil && x.EffectiveHealth != nil { return *x.EffectiveHealth } return 0 } func (x *CDOTAUserMsg_StatsKillDetails) GetDeathTime() float32 { if x != nil && x.DeathTime != nil { return *x.DeathTime } return 0 } func (x *CDOTAUserMsg_StatsKillDetails) GetKillerId() int32 { if x != nil && x.KillerId != nil { return *x.KillerId } return 0 } type CDOTAUserMsg_StatsMatchDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HeroLookup []*CDOTAUserMsg_StatsHeroLookup `protobuf:"bytes,1,rep,name=hero_lookup,json=heroLookup" json:"hero_lookup,omitempty"` RadiantStats []*CDOTAUserMsg_StatsTeamMinuteDetails `protobuf:"bytes,2,rep,name=radiant_stats,json=radiantStats" json:"radiant_stats,omitempty"` DireStats []*CDOTAUserMsg_StatsTeamMinuteDetails `protobuf:"bytes,3,rep,name=dire_stats,json=direStats" json:"dire_stats,omitempty"` RadiantKills []*CDOTAUserMsg_StatsKillDetails `protobuf:"bytes,4,rep,name=radiant_kills,json=radiantKills" json:"radiant_kills,omitempty"` DireKills []*CDOTAUserMsg_StatsKillDetails `protobuf:"bytes,5,rep,name=dire_kills,json=direKills" json:"dire_kills,omitempty"` FightDetails []*CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails `protobuf:"bytes,6,rep,name=fight_details,json=fightDetails" json:"fight_details,omitempty"` } func (x *CDOTAUserMsg_StatsMatchDetails) Reset() { *x = CDOTAUserMsg_StatsMatchDetails{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[91] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsMatchDetails) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsMatchDetails) ProtoMessage() {} func (x *CDOTAUserMsg_StatsMatchDetails) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[91] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsMatchDetails.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsMatchDetails) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{91} } func (x *CDOTAUserMsg_StatsMatchDetails) GetHeroLookup() []*CDOTAUserMsg_StatsHeroLookup { if x != nil { return x.HeroLookup } return nil } func (x *CDOTAUserMsg_StatsMatchDetails) GetRadiantStats() []*CDOTAUserMsg_StatsTeamMinuteDetails { if x != nil { return x.RadiantStats } return nil } func (x *CDOTAUserMsg_StatsMatchDetails) GetDireStats() []*CDOTAUserMsg_StatsTeamMinuteDetails { if x != nil { return x.DireStats } return nil } func (x *CDOTAUserMsg_StatsMatchDetails) GetRadiantKills() []*CDOTAUserMsg_StatsKillDetails { if x != nil { return x.RadiantKills } return nil } func (x *CDOTAUserMsg_StatsMatchDetails) GetDireKills() []*CDOTAUserMsg_StatsKillDetails { if x != nil { return x.DireKills } return nil } func (x *CDOTAUserMsg_StatsMatchDetails) GetFightDetails() []*CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails { if x != nil { return x.FightDetails } return nil } type CDOTAUserMsg_MiniTaunt struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TauntingPlayerId *int32 `protobuf:"varint,1,opt,name=taunting_player_id,json=tauntingPlayerId" json:"taunting_player_id,omitempty"` } func (x *CDOTAUserMsg_MiniTaunt) Reset() { *x = CDOTAUserMsg_MiniTaunt{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[92] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_MiniTaunt) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_MiniTaunt) ProtoMessage() {} func (x *CDOTAUserMsg_MiniTaunt) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[92] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_MiniTaunt.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_MiniTaunt) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{92} } func (x *CDOTAUserMsg_MiniTaunt) GetTauntingPlayerId() int32 { if x != nil && x.TauntingPlayerId != nil { return *x.TauntingPlayerId } return 0 } type CDOTAUserMsg_SpeechBubble struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DestroyAll *bool `protobuf:"varint,1,opt,name=destroy_all,json=destroyAll" json:"destroy_all,omitempty"` } func (x *CDOTAUserMsg_SpeechBubble) Reset() { *x = CDOTAUserMsg_SpeechBubble{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[93] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SpeechBubble) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SpeechBubble) ProtoMessage() {} func (x *CDOTAUserMsg_SpeechBubble) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[93] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SpeechBubble.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SpeechBubble) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{93} } func (x *CDOTAUserMsg_SpeechBubble) GetDestroyAll() bool { if x != nil && x.DestroyAll != nil { return *x.DestroyAll } return false } type CDOTAUserMsg_CustomHeaderMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Duration *float32 `protobuf:"fixed32,2,opt,name=duration" json:"duration,omitempty"` Message *string `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` Value *int32 `protobuf:"varint,4,opt,name=value" json:"value,omitempty"` } func (x *CDOTAUserMsg_CustomHeaderMessage) Reset() { *x = CDOTAUserMsg_CustomHeaderMessage{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[94] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CustomHeaderMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CustomHeaderMessage) ProtoMessage() {} func (x *CDOTAUserMsg_CustomHeaderMessage) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[94] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CustomHeaderMessage.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CustomHeaderMessage) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{94} } func (x *CDOTAUserMsg_CustomHeaderMessage) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_CustomHeaderMessage) GetDuration() float32 { if x != nil && x.Duration != nil { return *x.Duration } return 0 } func (x *CDOTAUserMsg_CustomHeaderMessage) GetMessage() string { if x != nil && x.Message != nil { return *x.Message } return "" } func (x *CDOTAUserMsg_CustomHeaderMessage) GetValue() int32 { if x != nil && x.Value != nil { return *x.Value } return 0 } type CMsgHeroAbilityStat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StatType *EHeroStatType `protobuf:"varint,1,opt,name=stat_type,json=statType,enum=EHeroStatType,def=0" json:"stat_type,omitempty"` IntValue *int32 `protobuf:"varint,2,opt,name=int_value,json=intValue" json:"int_value,omitempty"` FloatValue *float32 `protobuf:"fixed32,3,opt,name=float_value,json=floatValue" json:"float_value,omitempty"` } // Default values for CMsgHeroAbilityStat fields. const ( Default_CMsgHeroAbilityStat_StatType = EHeroStatType_k_EHeroStatType_None ) func (x *CMsgHeroAbilityStat) Reset() { *x = CMsgHeroAbilityStat{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[95] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CMsgHeroAbilityStat) String() string { return protoimpl.X.MessageStringOf(x) } func (*CMsgHeroAbilityStat) ProtoMessage() {} func (x *CMsgHeroAbilityStat) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[95] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CMsgHeroAbilityStat.ProtoReflect.Descriptor instead. func (*CMsgHeroAbilityStat) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{95} } func (x *CMsgHeroAbilityStat) GetStatType() EHeroStatType { if x != nil && x.StatType != nil { return *x.StatType } return Default_CMsgHeroAbilityStat_StatType } func (x *CMsgHeroAbilityStat) GetIntValue() int32 { if x != nil && x.IntValue != nil { return *x.IntValue } return 0 } func (x *CMsgHeroAbilityStat) GetFloatValue() float32 { if x != nil && x.FloatValue != nil { return *x.FloatValue } return 0 } type CMsgCombatAnalyzerPlayerStat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AccountId *uint32 `protobuf:"varint,1,opt,name=account_id,json=accountId" json:"account_id,omitempty"` HeroAbilityStats []*CMsgHeroAbilityStat `protobuf:"bytes,2,rep,name=hero_ability_stats,json=heroAbilityStats" json:"hero_ability_stats,omitempty"` } func (x *CMsgCombatAnalyzerPlayerStat) Reset() { *x = CMsgCombatAnalyzerPlayerStat{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[96] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CMsgCombatAnalyzerPlayerStat) String() string { return protoimpl.X.MessageStringOf(x) } func (*CMsgCombatAnalyzerPlayerStat) ProtoMessage() {} func (x *CMsgCombatAnalyzerPlayerStat) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[96] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CMsgCombatAnalyzerPlayerStat.ProtoReflect.Descriptor instead. func (*CMsgCombatAnalyzerPlayerStat) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{96} } func (x *CMsgCombatAnalyzerPlayerStat) GetAccountId() uint32 { if x != nil && x.AccountId != nil { return *x.AccountId } return 0 } func (x *CMsgCombatAnalyzerPlayerStat) GetHeroAbilityStats() []*CMsgHeroAbilityStat { if x != nil { return x.HeroAbilityStats } return nil } type CMsgCombatAnalyzerStats struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MatchId *uint64 `protobuf:"varint,1,opt,name=match_id,json=matchId" json:"match_id,omitempty"` PlayerStats []*CMsgCombatAnalyzerPlayerStat `protobuf:"bytes,2,rep,name=player_stats,json=playerStats" json:"player_stats,omitempty"` } func (x *CMsgCombatAnalyzerStats) Reset() { *x = CMsgCombatAnalyzerStats{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[97] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CMsgCombatAnalyzerStats) String() string { return protoimpl.X.MessageStringOf(x) } func (*CMsgCombatAnalyzerStats) ProtoMessage() {} func (x *CMsgCombatAnalyzerStats) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[97] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CMsgCombatAnalyzerStats.ProtoReflect.Descriptor instead. func (*CMsgCombatAnalyzerStats) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{97} } func (x *CMsgCombatAnalyzerStats) GetMatchId() uint64 { if x != nil && x.MatchId != nil { return *x.MatchId } return 0 } func (x *CMsgCombatAnalyzerStats) GetPlayerStats() []*CMsgCombatAnalyzerPlayerStat { if x != nil { return x.PlayerStats } return nil } type CDOTAUserMsg_BeastChat struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Team *uint32 `protobuf:"varint,1,opt,name=team" json:"team,omitempty"` Format *string `protobuf:"bytes,2,opt,name=format" json:"format,omitempty"` Message *string `protobuf:"bytes,3,opt,name=message" json:"message,omitempty"` Target *string `protobuf:"bytes,4,opt,name=target" json:"target,omitempty"` } func (x *CDOTAUserMsg_BeastChat) Reset() { *x = CDOTAUserMsg_BeastChat{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[98] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_BeastChat) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_BeastChat) ProtoMessage() {} func (x *CDOTAUserMsg_BeastChat) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[98] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_BeastChat.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_BeastChat) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{98} } func (x *CDOTAUserMsg_BeastChat) GetTeam() uint32 { if x != nil && x.Team != nil { return *x.Team } return 0 } func (x *CDOTAUserMsg_BeastChat) GetFormat() string { if x != nil && x.Format != nil { return *x.Format } return "" } func (x *CDOTAUserMsg_BeastChat) GetMessage() string { if x != nil && x.Message != nil { return *x.Message } return "" } func (x *CDOTAUserMsg_BeastChat) GetTarget() string { if x != nil && x.Target != nil { return *x.Target } return "" } type CDOTAUserMsg_CustomHudElement_Create struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ElementId *string `protobuf:"bytes,1,opt,name=element_id,json=elementId" json:"element_id,omitempty"` LayoutFilename *string `protobuf:"bytes,2,opt,name=layout_filename,json=layoutFilename" json:"layout_filename,omitempty"` Data []byte `protobuf:"bytes,3,opt,name=data" json:"data,omitempty"` } func (x *CDOTAUserMsg_CustomHudElement_Create) Reset() { *x = CDOTAUserMsg_CustomHudElement_Create{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[99] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CustomHudElement_Create) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CustomHudElement_Create) ProtoMessage() {} func (x *CDOTAUserMsg_CustomHudElement_Create) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[99] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CustomHudElement_Create.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CustomHudElement_Create) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{99} } func (x *CDOTAUserMsg_CustomHudElement_Create) GetElementId() string { if x != nil && x.ElementId != nil { return *x.ElementId } return "" } func (x *CDOTAUserMsg_CustomHudElement_Create) GetLayoutFilename() string { if x != nil && x.LayoutFilename != nil { return *x.LayoutFilename } return "" } func (x *CDOTAUserMsg_CustomHudElement_Create) GetData() []byte { if x != nil { return x.Data } return nil } type CDOTAUserMsg_CustomHudElement_Modify struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ElementId *string `protobuf:"bytes,1,opt,name=element_id,json=elementId" json:"element_id,omitempty"` ModifyVisible *bool `protobuf:"varint,2,opt,name=modify_visible,json=modifyVisible" json:"modify_visible,omitempty"` Data []byte `protobuf:"bytes,3,opt,name=data" json:"data,omitempty"` } func (x *CDOTAUserMsg_CustomHudElement_Modify) Reset() { *x = CDOTAUserMsg_CustomHudElement_Modify{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[100] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CustomHudElement_Modify) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CustomHudElement_Modify) ProtoMessage() {} func (x *CDOTAUserMsg_CustomHudElement_Modify) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[100] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CustomHudElement_Modify.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CustomHudElement_Modify) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{100} } func (x *CDOTAUserMsg_CustomHudElement_Modify) GetElementId() string { if x != nil && x.ElementId != nil { return *x.ElementId } return "" } func (x *CDOTAUserMsg_CustomHudElement_Modify) GetModifyVisible() bool { if x != nil && x.ModifyVisible != nil { return *x.ModifyVisible } return false } func (x *CDOTAUserMsg_CustomHudElement_Modify) GetData() []byte { if x != nil { return x.Data } return nil } type CDOTAUserMsg_CustomHudElement_Destroy struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ElementId *string `protobuf:"bytes,1,opt,name=element_id,json=elementId" json:"element_id,omitempty"` } func (x *CDOTAUserMsg_CustomHudElement_Destroy) Reset() { *x = CDOTAUserMsg_CustomHudElement_Destroy{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[101] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CustomHudElement_Destroy) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CustomHudElement_Destroy) ProtoMessage() {} func (x *CDOTAUserMsg_CustomHudElement_Destroy) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[101] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CustomHudElement_Destroy.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CustomHudElement_Destroy) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{101} } func (x *CDOTAUserMsg_CustomHudElement_Destroy) GetElementId() string { if x != nil && x.ElementId != nil { return *x.ElementId } return "" } type CDOTAUserMsg_CompendiumStatePlayer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Level *uint32 `protobuf:"varint,2,opt,name=level" json:"level,omitempty"` } func (x *CDOTAUserMsg_CompendiumStatePlayer) Reset() { *x = CDOTAUserMsg_CompendiumStatePlayer{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[102] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CompendiumStatePlayer) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CompendiumStatePlayer) ProtoMessage() {} func (x *CDOTAUserMsg_CompendiumStatePlayer) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[102] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CompendiumStatePlayer.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CompendiumStatePlayer) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{102} } func (x *CDOTAUserMsg_CompendiumStatePlayer) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_CompendiumStatePlayer) GetLevel() uint32 { if x != nil && x.Level != nil { return *x.Level } return 0 } type CDOTAUserMsg_CompendiumState struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CompendiumPlayers []*CDOTAUserMsg_CompendiumStatePlayer `protobuf:"bytes,1,rep,name=compendium_players,json=compendiumPlayers" json:"compendium_players,omitempty"` } func (x *CDOTAUserMsg_CompendiumState) Reset() { *x = CDOTAUserMsg_CompendiumState{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[103] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CompendiumState) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CompendiumState) ProtoMessage() {} func (x *CDOTAUserMsg_CompendiumState) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[103] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CompendiumState.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CompendiumState) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{103} } func (x *CDOTAUserMsg_CompendiumState) GetCompendiumPlayers() []*CDOTAUserMsg_CompendiumStatePlayer { if x != nil { return x.CompendiumPlayers } return nil } type CDOTAUserMsg_ProjectionAbility struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AbilityId *uint32 `protobuf:"varint,1,opt,name=ability_id,json=abilityId" json:"ability_id,omitempty"` CasterEntIndex *int32 `protobuf:"varint,2,opt,name=caster_ent_index,json=casterEntIndex" json:"caster_ent_index,omitempty"` CasterTeam *int32 `protobuf:"varint,3,opt,name=caster_team,json=casterTeam" json:"caster_team,omitempty"` ChannelEnd *bool `protobuf:"varint,4,opt,name=channel_end,json=channelEnd" json:"channel_end,omitempty"` Origin *CMsgVector `protobuf:"bytes,5,opt,name=origin" json:"origin,omitempty"` TrackCasterOnly *bool `protobuf:"varint,6,opt,name=track_caster_only,json=trackCasterOnly" json:"track_caster_only,omitempty"` EndTime *float32 `protobuf:"fixed32,7,opt,name=end_time,json=endTime" json:"end_time,omitempty"` VictimEntIndex *int32 `protobuf:"varint,8,opt,name=victim_ent_index,json=victimEntIndex" json:"victim_ent_index,omitempty"` } func (x *CDOTAUserMsg_ProjectionAbility) Reset() { *x = CDOTAUserMsg_ProjectionAbility{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[104] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ProjectionAbility) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ProjectionAbility) ProtoMessage() {} func (x *CDOTAUserMsg_ProjectionAbility) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[104] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ProjectionAbility.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ProjectionAbility) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{104} } func (x *CDOTAUserMsg_ProjectionAbility) GetAbilityId() uint32 { if x != nil && x.AbilityId != nil { return *x.AbilityId } return 0 } func (x *CDOTAUserMsg_ProjectionAbility) GetCasterEntIndex() int32 { if x != nil && x.CasterEntIndex != nil { return *x.CasterEntIndex } return 0 } func (x *CDOTAUserMsg_ProjectionAbility) GetCasterTeam() int32 { if x != nil && x.CasterTeam != nil { return *x.CasterTeam } return 0 } func (x *CDOTAUserMsg_ProjectionAbility) GetChannelEnd() bool { if x != nil && x.ChannelEnd != nil { return *x.ChannelEnd } return false } func (x *CDOTAUserMsg_ProjectionAbility) GetOrigin() *CMsgVector { if x != nil { return x.Origin } return nil } func (x *CDOTAUserMsg_ProjectionAbility) GetTrackCasterOnly() bool { if x != nil && x.TrackCasterOnly != nil { return *x.TrackCasterOnly } return false } func (x *CDOTAUserMsg_ProjectionAbility) GetEndTime() float32 { if x != nil && x.EndTime != nil { return *x.EndTime } return 0 } func (x *CDOTAUserMsg_ProjectionAbility) GetVictimEntIndex() int32 { if x != nil && x.VictimEntIndex != nil { return *x.VictimEntIndex } return 0 } type CDOTAUserMsg_ProjectionEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields EventId *EProjectionEvent `protobuf:"varint,1,opt,name=event_id,json=eventId,enum=EProjectionEvent,def=0" json:"event_id,omitempty"` Team *uint32 `protobuf:"varint,2,opt,name=team" json:"team,omitempty"` } // Default values for CDOTAUserMsg_ProjectionEvent fields. const ( Default_CDOTAUserMsg_ProjectionEvent_EventId = EProjectionEvent_ePE_FirstBlood ) func (x *CDOTAUserMsg_ProjectionEvent) Reset() { *x = CDOTAUserMsg_ProjectionEvent{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[105] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ProjectionEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ProjectionEvent) ProtoMessage() {} func (x *CDOTAUserMsg_ProjectionEvent) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[105] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ProjectionEvent.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ProjectionEvent) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{105} } func (x *CDOTAUserMsg_ProjectionEvent) GetEventId() EProjectionEvent { if x != nil && x.EventId != nil { return *x.EventId } return Default_CDOTAUserMsg_ProjectionEvent_EventId } func (x *CDOTAUserMsg_ProjectionEvent) GetTeam() uint32 { if x != nil && x.Team != nil { return *x.Team } return 0 } type CDOTAUserMsg_XPAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` TargetEntindex *int32 `protobuf:"varint,2,opt,name=target_entindex,json=targetEntindex" json:"target_entindex,omitempty"` } func (x *CDOTAUserMsg_XPAlert) Reset() { *x = CDOTAUserMsg_XPAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[106] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_XPAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_XPAlert) ProtoMessage() {} func (x *CDOTAUserMsg_XPAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[106] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_XPAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_XPAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{106} } func (x *CDOTAUserMsg_XPAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_XPAlert) GetTargetEntindex() int32 { if x != nil && x.TargetEntindex != nil { return *x.TargetEntindex } return 0 } type CDOTAUserMsg_TalentTreeAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` TargetEntindex *int32 `protobuf:"varint,2,opt,name=target_entindex,json=targetEntindex" json:"target_entindex,omitempty"` AbilityId *int32 `protobuf:"varint,3,opt,name=ability_id,json=abilityId" json:"ability_id,omitempty"` Slot *int32 `protobuf:"varint,4,opt,name=slot" json:"slot,omitempty"` Learned *bool `protobuf:"varint,5,opt,name=learned" json:"learned,omitempty"` } func (x *CDOTAUserMsg_TalentTreeAlert) Reset() { *x = CDOTAUserMsg_TalentTreeAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[107] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TalentTreeAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TalentTreeAlert) ProtoMessage() {} func (x *CDOTAUserMsg_TalentTreeAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[107] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TalentTreeAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TalentTreeAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{107} } func (x *CDOTAUserMsg_TalentTreeAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_TalentTreeAlert) GetTargetEntindex() int32 { if x != nil && x.TargetEntindex != nil { return *x.TargetEntindex } return 0 } func (x *CDOTAUserMsg_TalentTreeAlert) GetAbilityId() int32 { if x != nil && x.AbilityId != nil { return *x.AbilityId } return 0 } func (x *CDOTAUserMsg_TalentTreeAlert) GetSlot() int32 { if x != nil && x.Slot != nil { return *x.Slot } return 0 } func (x *CDOTAUserMsg_TalentTreeAlert) GetLearned() bool { if x != nil && x.Learned != nil { return *x.Learned } return false } type CDOTAUserMsg_UpdateQuestProgress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *CDOTAUserMsg_UpdateQuestProgress) Reset() { *x = CDOTAUserMsg_UpdateQuestProgress{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[108] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_UpdateQuestProgress) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_UpdateQuestProgress) ProtoMessage() {} func (x *CDOTAUserMsg_UpdateQuestProgress) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[108] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_UpdateQuestProgress.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_UpdateQuestProgress) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{108} } type CDOTAUserMsg_QuestStatus struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,req,name=player_id,json=playerId" json:"player_id,omitempty"` QuestId *uint32 `protobuf:"varint,2,opt,name=quest_id,json=questId" json:"quest_id,omitempty"` ChallengeId *uint32 `protobuf:"varint,3,opt,name=challenge_id,json=challengeId" json:"challenge_id,omitempty"` Progress *uint32 `protobuf:"varint,4,opt,name=progress" json:"progress,omitempty"` Goal *uint32 `protobuf:"varint,5,opt,name=goal" json:"goal,omitempty"` Query *uint32 `protobuf:"varint,6,opt,name=query" json:"query,omitempty"` FailGametime *float32 `protobuf:"fixed32,7,opt,name=fail_gametime,json=failGametime" json:"fail_gametime,omitempty"` ItemAbilityId *uint32 `protobuf:"varint,8,opt,name=item_ability_id,json=itemAbilityId" json:"item_ability_id,omitempty"` } func (x *CDOTAUserMsg_QuestStatus) Reset() { *x = CDOTAUserMsg_QuestStatus{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[109] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_QuestStatus) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_QuestStatus) ProtoMessage() {} func (x *CDOTAUserMsg_QuestStatus) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[109] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_QuestStatus.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_QuestStatus) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{109} } func (x *CDOTAUserMsg_QuestStatus) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_QuestStatus) GetQuestId() uint32 { if x != nil && x.QuestId != nil { return *x.QuestId } return 0 } func (x *CDOTAUserMsg_QuestStatus) GetChallengeId() uint32 { if x != nil && x.ChallengeId != nil { return *x.ChallengeId } return 0 } func (x *CDOTAUserMsg_QuestStatus) GetProgress() uint32 { if x != nil && x.Progress != nil { return *x.Progress } return 0 } func (x *CDOTAUserMsg_QuestStatus) GetGoal() uint32 { if x != nil && x.Goal != nil { return *x.Goal } return 0 } func (x *CDOTAUserMsg_QuestStatus) GetQuery() uint32 { if x != nil && x.Query != nil { return *x.Query } return 0 } func (x *CDOTAUserMsg_QuestStatus) GetFailGametime() float32 { if x != nil && x.FailGametime != nil { return *x.FailGametime } return 0 } func (x *CDOTAUserMsg_QuestStatus) GetItemAbilityId() uint32 { if x != nil && x.ItemAbilityId != nil { return *x.ItemAbilityId } return 0 } type CDOTAUserMsg_SuggestHeroPick struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,req,name=player_id,json=playerId" json:"player_id,omitempty"` HeroId *uint32 `protobuf:"varint,2,opt,name=hero_id,json=heroId" json:"hero_id,omitempty"` Ban *bool `protobuf:"varint,3,opt,name=ban" json:"ban,omitempty"` } func (x *CDOTAUserMsg_SuggestHeroPick) Reset() { *x = CDOTAUserMsg_SuggestHeroPick{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[110] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SuggestHeroPick) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SuggestHeroPick) ProtoMessage() {} func (x *CDOTAUserMsg_SuggestHeroPick) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[110] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SuggestHeroPick.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SuggestHeroPick) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{110} } func (x *CDOTAUserMsg_SuggestHeroPick) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_SuggestHeroPick) GetHeroId() uint32 { if x != nil && x.HeroId != nil { return *x.HeroId } return 0 } func (x *CDOTAUserMsg_SuggestHeroPick) GetBan() bool { if x != nil && x.Ban != nil { return *x.Ban } return false } type CDOTAUserMsg_SuggestHeroRole struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,req,name=player_id,json=playerId" json:"player_id,omitempty"` HeroRole *string `protobuf:"bytes,2,opt,name=hero_role,json=heroRole" json:"hero_role,omitempty"` } func (x *CDOTAUserMsg_SuggestHeroRole) Reset() { *x = CDOTAUserMsg_SuggestHeroRole{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[111] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SuggestHeroRole) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SuggestHeroRole) ProtoMessage() {} func (x *CDOTAUserMsg_SuggestHeroRole) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[111] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SuggestHeroRole.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SuggestHeroRole) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{111} } func (x *CDOTAUserMsg_SuggestHeroRole) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_SuggestHeroRole) GetHeroRole() string { if x != nil && x.HeroRole != nil { return *x.HeroRole } return "" } type CDOTAUserMsg_KillcamDamageTaken struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,req,name=player_id,json=playerId" json:"player_id,omitempty"` DamageTaken *uint32 `protobuf:"varint,2,opt,name=damage_taken,json=damageTaken" json:"damage_taken,omitempty"` ItemType *uint32 `protobuf:"varint,3,opt,name=item_type,json=itemType" json:"item_type,omitempty"` ItemAbilityId *uint32 `protobuf:"varint,4,opt,name=item_ability_id,json=itemAbilityId" json:"item_ability_id,omitempty"` HeroName *string `protobuf:"bytes,5,opt,name=hero_name,json=heroName" json:"hero_name,omitempty"` DamageColor *string `protobuf:"bytes,6,opt,name=damage_color,json=damageColor" json:"damage_color,omitempty"` } func (x *CDOTAUserMsg_KillcamDamageTaken) Reset() { *x = CDOTAUserMsg_KillcamDamageTaken{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[112] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_KillcamDamageTaken) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_KillcamDamageTaken) ProtoMessage() {} func (x *CDOTAUserMsg_KillcamDamageTaken) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[112] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_KillcamDamageTaken.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_KillcamDamageTaken) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{112} } func (x *CDOTAUserMsg_KillcamDamageTaken) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_KillcamDamageTaken) GetDamageTaken() uint32 { if x != nil && x.DamageTaken != nil { return *x.DamageTaken } return 0 } func (x *CDOTAUserMsg_KillcamDamageTaken) GetItemType() uint32 { if x != nil && x.ItemType != nil { return *x.ItemType } return 0 } func (x *CDOTAUserMsg_KillcamDamageTaken) GetItemAbilityId() uint32 { if x != nil && x.ItemAbilityId != nil { return *x.ItemAbilityId } return 0 } func (x *CDOTAUserMsg_KillcamDamageTaken) GetHeroName() string { if x != nil && x.HeroName != nil { return *x.HeroName } return "" } func (x *CDOTAUserMsg_KillcamDamageTaken) GetDamageColor() string { if x != nil && x.DamageColor != nil { return *x.DamageColor } return "" } type CDOTAUserMsg_SelectPenaltyGold struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,req,name=player_id,json=playerId" json:"player_id,omitempty"` Cost *int32 `protobuf:"zigzag32,2,opt,name=cost" json:"cost,omitempty"` } func (x *CDOTAUserMsg_SelectPenaltyGold) Reset() { *x = CDOTAUserMsg_SelectPenaltyGold{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[113] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SelectPenaltyGold) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SelectPenaltyGold) ProtoMessage() {} func (x *CDOTAUserMsg_SelectPenaltyGold) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[113] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SelectPenaltyGold.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SelectPenaltyGold) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{113} } func (x *CDOTAUserMsg_SelectPenaltyGold) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_SelectPenaltyGold) GetCost() int32 { if x != nil && x.Cost != nil { return *x.Cost } return 0 } type CDOTAUserMsg_RollDiceResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` ChannelType *uint32 `protobuf:"varint,2,opt,name=channel_type,json=channelType" json:"channel_type,omitempty"` RollMin *uint32 `protobuf:"varint,3,opt,name=roll_min,json=rollMin" json:"roll_min,omitempty"` RollMax *uint32 `protobuf:"varint,4,opt,name=roll_max,json=rollMax" json:"roll_max,omitempty"` Result *uint32 `protobuf:"varint,5,opt,name=result" json:"result,omitempty"` } func (x *CDOTAUserMsg_RollDiceResult) Reset() { *x = CDOTAUserMsg_RollDiceResult{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[114] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_RollDiceResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_RollDiceResult) ProtoMessage() {} func (x *CDOTAUserMsg_RollDiceResult) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[114] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_RollDiceResult.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_RollDiceResult) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{114} } func (x *CDOTAUserMsg_RollDiceResult) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_RollDiceResult) GetChannelType() uint32 { if x != nil && x.ChannelType != nil { return *x.ChannelType } return 0 } func (x *CDOTAUserMsg_RollDiceResult) GetRollMin() uint32 { if x != nil && x.RollMin != nil { return *x.RollMin } return 0 } func (x *CDOTAUserMsg_RollDiceResult) GetRollMax() uint32 { if x != nil && x.RollMax != nil { return *x.RollMax } return 0 } func (x *CDOTAUserMsg_RollDiceResult) GetResult() uint32 { if x != nil && x.Result != nil { return *x.Result } return 0 } type CDOTAUserMsg_FlipCoinResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` ChannelType *uint32 `protobuf:"varint,2,opt,name=channel_type,json=channelType" json:"channel_type,omitempty"` Result *bool `protobuf:"varint,3,opt,name=result" json:"result,omitempty"` } func (x *CDOTAUserMsg_FlipCoinResult) Reset() { *x = CDOTAUserMsg_FlipCoinResult{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[115] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_FlipCoinResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_FlipCoinResult) ProtoMessage() {} func (x *CDOTAUserMsg_FlipCoinResult) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[115] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_FlipCoinResult.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_FlipCoinResult) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{115} } func (x *CDOTAUserMsg_FlipCoinResult) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_FlipCoinResult) GetChannelType() uint32 { if x != nil && x.ChannelType != nil { return *x.ChannelType } return 0 } func (x *CDOTAUserMsg_FlipCoinResult) GetResult() bool { if x != nil && x.Result != nil { return *x.Result } return false } type CDOTAUserMessage_RequestItemSuggestions struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` } func (x *CDOTAUserMessage_RequestItemSuggestions) Reset() { *x = CDOTAUserMessage_RequestItemSuggestions{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[116] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMessage_RequestItemSuggestions) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMessage_RequestItemSuggestions) ProtoMessage() {} func (x *CDOTAUserMessage_RequestItemSuggestions) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[116] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMessage_RequestItemSuggestions.ProtoReflect.Descriptor instead. func (*CDOTAUserMessage_RequestItemSuggestions) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{116} } func (x *CDOTAUserMessage_RequestItemSuggestions) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } type CDOTAUserMessage_TeamCaptainChanged struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Team *uint32 `protobuf:"varint,1,opt,name=team" json:"team,omitempty"` CaptainPlayerId *int32 `protobuf:"varint,2,opt,name=captain_player_id,json=captainPlayerId" json:"captain_player_id,omitempty"` } func (x *CDOTAUserMessage_TeamCaptainChanged) Reset() { *x = CDOTAUserMessage_TeamCaptainChanged{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[117] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMessage_TeamCaptainChanged) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMessage_TeamCaptainChanged) ProtoMessage() {} func (x *CDOTAUserMessage_TeamCaptainChanged) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[117] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMessage_TeamCaptainChanged.ProtoReflect.Descriptor instead. func (*CDOTAUserMessage_TeamCaptainChanged) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{117} } func (x *CDOTAUserMessage_TeamCaptainChanged) GetTeam() uint32 { if x != nil && x.Team != nil { return *x.Team } return 0 } func (x *CDOTAUserMessage_TeamCaptainChanged) GetCaptainPlayerId() int32 { if x != nil && x.CaptainPlayerId != nil { return *x.CaptainPlayerId } return 0 } type CDOTAUserMsg_ChatWheelCooldown struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields MessageId *uint32 `protobuf:"varint,1,opt,name=message_id,json=messageId" json:"message_id,omitempty"` CooldownRemaining *float32 `protobuf:"fixed32,2,opt,name=cooldown_remaining,json=cooldownRemaining" json:"cooldown_remaining,omitempty"` } func (x *CDOTAUserMsg_ChatWheelCooldown) Reset() { *x = CDOTAUserMsg_ChatWheelCooldown{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[118] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ChatWheelCooldown) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ChatWheelCooldown) ProtoMessage() {} func (x *CDOTAUserMsg_ChatWheelCooldown) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[118] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ChatWheelCooldown.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ChatWheelCooldown) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{118} } func (x *CDOTAUserMsg_ChatWheelCooldown) GetMessageId() uint32 { if x != nil && x.MessageId != nil { return *x.MessageId } return 0 } func (x *CDOTAUserMsg_ChatWheelCooldown) GetCooldownRemaining() float32 { if x != nil && x.CooldownRemaining != nil { return *x.CooldownRemaining } return 0 } type CDOTAUserMsg_HeroRelicProgress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields HeroRelicType *uint32 `protobuf:"varint,1,opt,name=hero_relic_type,json=heroRelicType" json:"hero_relic_type,omitempty"` Value *uint32 `protobuf:"varint,2,opt,name=value" json:"value,omitempty"` Ehandle *uint32 `protobuf:"varint,3,opt,name=ehandle" json:"ehandle,omitempty"` EventId *uint32 `protobuf:"varint,4,opt,name=event_id,json=eventId" json:"event_id,omitempty"` ValueDisplay *float32 `protobuf:"fixed32,5,opt,name=value_display,json=valueDisplay" json:"value_display,omitempty"` } func (x *CDOTAUserMsg_HeroRelicProgress) Reset() { *x = CDOTAUserMsg_HeroRelicProgress{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[119] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_HeroRelicProgress) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_HeroRelicProgress) ProtoMessage() {} func (x *CDOTAUserMsg_HeroRelicProgress) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[119] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_HeroRelicProgress.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_HeroRelicProgress) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{119} } func (x *CDOTAUserMsg_HeroRelicProgress) GetHeroRelicType() uint32 { if x != nil && x.HeroRelicType != nil { return *x.HeroRelicType } return 0 } func (x *CDOTAUserMsg_HeroRelicProgress) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } func (x *CDOTAUserMsg_HeroRelicProgress) GetEhandle() uint32 { if x != nil && x.Ehandle != nil { return *x.Ehandle } return 0 } func (x *CDOTAUserMsg_HeroRelicProgress) GetEventId() uint32 { if x != nil && x.EventId != nil { return *x.EventId } return 0 } func (x *CDOTAUserMsg_HeroRelicProgress) GetValueDisplay() float32 { if x != nil && x.ValueDisplay != nil { return *x.ValueDisplay } return 0 } type CDOTAUserMsg_AbilityDraftRequestAbility struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` RequestedAbilityId *uint32 `protobuf:"varint,2,opt,name=requested_ability_id,json=requestedAbilityId" json:"requested_ability_id,omitempty"` CtrlIsDown *bool `protobuf:"varint,3,opt,name=ctrl_is_down,json=ctrlIsDown" json:"ctrl_is_down,omitempty"` } func (x *CDOTAUserMsg_AbilityDraftRequestAbility) Reset() { *x = CDOTAUserMsg_AbilityDraftRequestAbility{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[120] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_AbilityDraftRequestAbility) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_AbilityDraftRequestAbility) ProtoMessage() {} func (x *CDOTAUserMsg_AbilityDraftRequestAbility) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[120] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_AbilityDraftRequestAbility.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_AbilityDraftRequestAbility) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{120} } func (x *CDOTAUserMsg_AbilityDraftRequestAbility) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_AbilityDraftRequestAbility) GetRequestedAbilityId() uint32 { if x != nil && x.RequestedAbilityId != nil { return *x.RequestedAbilityId } return 0 } func (x *CDOTAUserMsg_AbilityDraftRequestAbility) GetCtrlIsDown() bool { if x != nil && x.CtrlIsDown != nil { return *x.CtrlIsDown } return false } type CDOTAUserMsg_DamageReport struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` TargetHeroId *uint32 `protobuf:"varint,2,opt,name=target_hero_id,json=targetHeroId" json:"target_hero_id,omitempty"` SourceHeroId *uint32 `protobuf:"varint,3,opt,name=source_hero_id,json=sourceHeroId" json:"source_hero_id,omitempty"` DamageAmount *int32 `protobuf:"varint,4,opt,name=damage_amount,json=damageAmount" json:"damage_amount,omitempty"` Broadcast *bool `protobuf:"varint,5,opt,name=broadcast" json:"broadcast,omitempty"` } func (x *CDOTAUserMsg_DamageReport) Reset() { *x = CDOTAUserMsg_DamageReport{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[121] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_DamageReport) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_DamageReport) ProtoMessage() {} func (x *CDOTAUserMsg_DamageReport) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[121] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_DamageReport.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_DamageReport) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{121} } func (x *CDOTAUserMsg_DamageReport) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_DamageReport) GetTargetHeroId() uint32 { if x != nil && x.TargetHeroId != nil { return *x.TargetHeroId } return 0 } func (x *CDOTAUserMsg_DamageReport) GetSourceHeroId() uint32 { if x != nil && x.SourceHeroId != nil { return *x.SourceHeroId } return 0 } func (x *CDOTAUserMsg_DamageReport) GetDamageAmount() int32 { if x != nil && x.DamageAmount != nil { return *x.DamageAmount } return 0 } func (x *CDOTAUserMsg_DamageReport) GetBroadcast() bool { if x != nil && x.Broadcast != nil { return *x.Broadcast } return false } type CDOTAUserMsg_SalutePlayer struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SourcePlayerId *int32 `protobuf:"varint,1,opt,name=source_player_id,json=sourcePlayerId" json:"source_player_id,omitempty"` TargetPlayerId *int32 `protobuf:"varint,2,opt,name=target_player_id,json=targetPlayerId" json:"target_player_id,omitempty"` TipAmount *uint32 `protobuf:"varint,3,opt,name=tip_amount,json=tipAmount" json:"tip_amount,omitempty"` EventId *uint32 `protobuf:"varint,4,opt,name=event_id,json=eventId" json:"event_id,omitempty"` } func (x *CDOTAUserMsg_SalutePlayer) Reset() { *x = CDOTAUserMsg_SalutePlayer{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[122] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_SalutePlayer) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_SalutePlayer) ProtoMessage() {} func (x *CDOTAUserMsg_SalutePlayer) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[122] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_SalutePlayer.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_SalutePlayer) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{122} } func (x *CDOTAUserMsg_SalutePlayer) GetSourcePlayerId() int32 { if x != nil && x.SourcePlayerId != nil { return *x.SourcePlayerId } return 0 } func (x *CDOTAUserMsg_SalutePlayer) GetTargetPlayerId() int32 { if x != nil && x.TargetPlayerId != nil { return *x.TargetPlayerId } return 0 } func (x *CDOTAUserMsg_SalutePlayer) GetTipAmount() uint32 { if x != nil && x.TipAmount != nil { return *x.TipAmount } return 0 } func (x *CDOTAUserMsg_SalutePlayer) GetEventId() uint32 { if x != nil && x.EventId != nil { return *x.EventId } return 0 } type CDOTAUserMsg_TipAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` TipText *string `protobuf:"bytes,2,opt,name=tip_text,json=tipText" json:"tip_text,omitempty"` } func (x *CDOTAUserMsg_TipAlert) Reset() { *x = CDOTAUserMsg_TipAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[123] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_TipAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_TipAlert) ProtoMessage() {} func (x *CDOTAUserMsg_TipAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[123] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_TipAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_TipAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{123} } func (x *CDOTAUserMsg_TipAlert) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_TipAlert) GetTipText() string { if x != nil && x.TipText != nil { return *x.TipText } return "" } type CDOTAUserMsg_ReplaceQueryUnit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,req,name=player_id,json=playerId" json:"player_id,omitempty"` SourceEntindex *int32 `protobuf:"varint,2,opt,name=source_entindex,json=sourceEntindex" json:"source_entindex,omitempty"` TargetEntindex *int32 `protobuf:"varint,3,opt,name=target_entindex,json=targetEntindex" json:"target_entindex,omitempty"` } func (x *CDOTAUserMsg_ReplaceQueryUnit) Reset() { *x = CDOTAUserMsg_ReplaceQueryUnit{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[124] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ReplaceQueryUnit) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ReplaceQueryUnit) ProtoMessage() {} func (x *CDOTAUserMsg_ReplaceQueryUnit) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[124] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ReplaceQueryUnit.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ReplaceQueryUnit) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{124} } func (x *CDOTAUserMsg_ReplaceQueryUnit) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_ReplaceQueryUnit) GetSourceEntindex() int32 { if x != nil && x.SourceEntindex != nil { return *x.SourceEntindex } return 0 } func (x *CDOTAUserMsg_ReplaceQueryUnit) GetTargetEntindex() int32 { if x != nil && x.TargetEntindex != nil { return *x.TargetEntindex } return 0 } type CDOTAUserMsg_ESArcanaCombo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ehandle *uint32 `protobuf:"varint,1,opt,name=ehandle" json:"ehandle,omitempty"` ComboCount *uint32 `protobuf:"varint,2,opt,name=combo_count,json=comboCount" json:"combo_count,omitempty"` ArcanaLevel *uint32 `protobuf:"varint,3,opt,name=arcana_level,json=arcanaLevel" json:"arcana_level,omitempty"` } func (x *CDOTAUserMsg_ESArcanaCombo) Reset() { *x = CDOTAUserMsg_ESArcanaCombo{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[125] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ESArcanaCombo) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ESArcanaCombo) ProtoMessage() {} func (x *CDOTAUserMsg_ESArcanaCombo) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[125] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ESArcanaCombo.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ESArcanaCombo) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{125} } func (x *CDOTAUserMsg_ESArcanaCombo) GetEhandle() uint32 { if x != nil && x.Ehandle != nil { return *x.Ehandle } return 0 } func (x *CDOTAUserMsg_ESArcanaCombo) GetComboCount() uint32 { if x != nil && x.ComboCount != nil { return *x.ComboCount } return 0 } func (x *CDOTAUserMsg_ESArcanaCombo) GetArcanaLevel() uint32 { if x != nil && x.ArcanaLevel != nil { return *x.ArcanaLevel } return 0 } type CDOTAUserMsg_ESArcanaComboSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ehandle *uint32 `protobuf:"varint,1,opt,name=ehandle" json:"ehandle,omitempty"` ComboCount *uint32 `protobuf:"varint,2,opt,name=combo_count,json=comboCount" json:"combo_count,omitempty"` DamageAmount *uint32 `protobuf:"varint,3,opt,name=damage_amount,json=damageAmount" json:"damage_amount,omitempty"` } func (x *CDOTAUserMsg_ESArcanaComboSummary) Reset() { *x = CDOTAUserMsg_ESArcanaComboSummary{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[126] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ESArcanaComboSummary) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ESArcanaComboSummary) ProtoMessage() {} func (x *CDOTAUserMsg_ESArcanaComboSummary) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[126] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ESArcanaComboSummary.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ESArcanaComboSummary) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{126} } func (x *CDOTAUserMsg_ESArcanaComboSummary) GetEhandle() uint32 { if x != nil && x.Ehandle != nil { return *x.Ehandle } return 0 } func (x *CDOTAUserMsg_ESArcanaComboSummary) GetComboCount() uint32 { if x != nil && x.ComboCount != nil { return *x.ComboCount } return 0 } func (x *CDOTAUserMsg_ESArcanaComboSummary) GetDamageAmount() uint32 { if x != nil && x.DamageAmount != nil { return *x.DamageAmount } return 0 } type CDOTAUserMsg_OMArcanaCombo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ehandle *uint32 `protobuf:"varint,1,opt,name=ehandle" json:"ehandle,omitempty"` MulticastAmount *uint32 `protobuf:"varint,2,opt,name=multicast_amount,json=multicastAmount" json:"multicast_amount,omitempty"` ArcanaLevel *uint32 `protobuf:"varint,3,opt,name=arcana_level,json=arcanaLevel" json:"arcana_level,omitempty"` MulticastChance *uint32 `protobuf:"varint,4,opt,name=multicast_chance,json=multicastChance" json:"multicast_chance,omitempty"` } func (x *CDOTAUserMsg_OMArcanaCombo) Reset() { *x = CDOTAUserMsg_OMArcanaCombo{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[127] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_OMArcanaCombo) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_OMArcanaCombo) ProtoMessage() {} func (x *CDOTAUserMsg_OMArcanaCombo) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[127] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_OMArcanaCombo.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_OMArcanaCombo) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{127} } func (x *CDOTAUserMsg_OMArcanaCombo) GetEhandle() uint32 { if x != nil && x.Ehandle != nil { return *x.Ehandle } return 0 } func (x *CDOTAUserMsg_OMArcanaCombo) GetMulticastAmount() uint32 { if x != nil && x.MulticastAmount != nil { return *x.MulticastAmount } return 0 } func (x *CDOTAUserMsg_OMArcanaCombo) GetArcanaLevel() uint32 { if x != nil && x.ArcanaLevel != nil { return *x.ArcanaLevel } return 0 } func (x *CDOTAUserMsg_OMArcanaCombo) GetMulticastChance() uint32 { if x != nil && x.MulticastChance != nil { return *x.MulticastChance } return 0 } type CDOTAUserMsg_HighFiveCompleted struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId_1 *int32 `protobuf:"varint,1,opt,name=player_id_1,json=playerId1" json:"player_id_1,omitempty"` PlayerId_2 *int32 `protobuf:"varint,2,opt,name=player_id_2,json=playerId2" json:"player_id_2,omitempty"` SpecialHighFive *bool `protobuf:"varint,3,opt,name=special_high_five,json=specialHighFive" json:"special_high_five,omitempty"` } func (x *CDOTAUserMsg_HighFiveCompleted) Reset() { *x = CDOTAUserMsg_HighFiveCompleted{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[128] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_HighFiveCompleted) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_HighFiveCompleted) ProtoMessage() {} func (x *CDOTAUserMsg_HighFiveCompleted) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[128] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_HighFiveCompleted.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_HighFiveCompleted) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{128} } func (x *CDOTAUserMsg_HighFiveCompleted) GetPlayerId_1() int32 { if x != nil && x.PlayerId_1 != nil { return *x.PlayerId_1 } return 0 } func (x *CDOTAUserMsg_HighFiveCompleted) GetPlayerId_2() int32 { if x != nil && x.PlayerId_2 != nil { return *x.PlayerId_2 } return 0 } func (x *CDOTAUserMsg_HighFiveCompleted) GetSpecialHighFive() bool { if x != nil && x.SpecialHighFive != nil { return *x.SpecialHighFive } return false } type CDOTAUserMsg_HighFiveLeftHanging struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` } func (x *CDOTAUserMsg_HighFiveLeftHanging) Reset() { *x = CDOTAUserMsg_HighFiveLeftHanging{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[129] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_HighFiveLeftHanging) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_HighFiveLeftHanging) ProtoMessage() {} func (x *CDOTAUserMsg_HighFiveLeftHanging) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[129] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_HighFiveLeftHanging.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_HighFiveLeftHanging) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{129} } func (x *CDOTAUserMsg_HighFiveLeftHanging) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } type CDOTAUserMsg_ShovelUnearth struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` AllChat *bool `protobuf:"varint,2,opt,name=all_chat,json=allChat" json:"all_chat,omitempty"` Locstring *string `protobuf:"bytes,3,opt,name=locstring" json:"locstring,omitempty"` Quantity *uint32 `protobuf:"varint,4,opt,name=quantity" json:"quantity,omitempty"` } func (x *CDOTAUserMsg_ShovelUnearth) Reset() { *x = CDOTAUserMsg_ShovelUnearth{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[130] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ShovelUnearth) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ShovelUnearth) ProtoMessage() {} func (x *CDOTAUserMsg_ShovelUnearth) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[130] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ShovelUnearth.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ShovelUnearth) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{130} } func (x *CDOTAUserMsg_ShovelUnearth) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_ShovelUnearth) GetAllChat() bool { if x != nil && x.AllChat != nil { return *x.AllChat } return false } func (x *CDOTAUserMsg_ShovelUnearth) GetLocstring() string { if x != nil && x.Locstring != nil { return *x.Locstring } return "" } func (x *CDOTAUserMsg_ShovelUnearth) GetQuantity() uint32 { if x != nil && x.Quantity != nil { return *x.Quantity } return 0 } type CDOTAUserMsg_AllStarEvent struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SourcePlayerId *int32 `protobuf:"varint,1,opt,name=source_player_id,json=sourcePlayerId" json:"source_player_id,omitempty"` TargetPlayerId *int32 `protobuf:"varint,2,opt,name=target_player_id,json=targetPlayerId" json:"target_player_id,omitempty"` PointAmount *uint32 `protobuf:"varint,3,opt,name=point_amount,json=pointAmount" json:"point_amount,omitempty"` EventId *uint32 `protobuf:"varint,4,opt,name=event_id,json=eventId" json:"event_id,omitempty"` PlayerScores []*CDOTAUserMsg_AllStarEvent_PlayerScore `protobuf:"bytes,5,rep,name=player_scores,json=playerScores" json:"player_scores,omitempty"` } func (x *CDOTAUserMsg_AllStarEvent) Reset() { *x = CDOTAUserMsg_AllStarEvent{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[131] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_AllStarEvent) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_AllStarEvent) ProtoMessage() {} func (x *CDOTAUserMsg_AllStarEvent) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[131] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_AllStarEvent.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_AllStarEvent) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{131} } func (x *CDOTAUserMsg_AllStarEvent) GetSourcePlayerId() int32 { if x != nil && x.SourcePlayerId != nil { return *x.SourcePlayerId } return 0 } func (x *CDOTAUserMsg_AllStarEvent) GetTargetPlayerId() int32 { if x != nil && x.TargetPlayerId != nil { return *x.TargetPlayerId } return 0 } func (x *CDOTAUserMsg_AllStarEvent) GetPointAmount() uint32 { if x != nil && x.PointAmount != nil { return *x.PointAmount } return 0 } func (x *CDOTAUserMsg_AllStarEvent) GetEventId() uint32 { if x != nil && x.EventId != nil { return *x.EventId } return 0 } func (x *CDOTAUserMsg_AllStarEvent) GetPlayerScores() []*CDOTAUserMsg_AllStarEvent_PlayerScore { if x != nil { return x.PlayerScores } return nil } type CDOTAUserMsg_QueuedOrderRemoved struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UnitOrderSequence []uint32 `protobuf:"varint,1,rep,name=unit_order_sequence,json=unitOrderSequence" json:"unit_order_sequence,omitempty"` } func (x *CDOTAUserMsg_QueuedOrderRemoved) Reset() { *x = CDOTAUserMsg_QueuedOrderRemoved{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[132] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_QueuedOrderRemoved) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_QueuedOrderRemoved) ProtoMessage() {} func (x *CDOTAUserMsg_QueuedOrderRemoved) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[132] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_QueuedOrderRemoved.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_QueuedOrderRemoved) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{132} } func (x *CDOTAUserMsg_QueuedOrderRemoved) GetUnitOrderSequence() []uint32 { if x != nil { return x.UnitOrderSequence } return nil } type CDOTAUserMsg_DebugChallenge struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ChallengeType *uint32 `protobuf:"varint,1,req,name=challenge_type,json=challengeType" json:"challenge_type,omitempty"` ChallengeQueryId *uint32 `protobuf:"varint,2,req,name=challenge_query_id,json=challengeQueryId" json:"challenge_query_id,omitempty"` EventId *uint32 `protobuf:"varint,3,req,name=event_id,json=eventId" json:"event_id,omitempty"` InstanceId *uint32 `protobuf:"varint,4,opt,name=instance_id,json=instanceId" json:"instance_id,omitempty"` ChallengeVar_0 *uint32 `protobuf:"varint,5,opt,name=challenge_var_0,json=challengeVar0" json:"challenge_var_0,omitempty"` ChallengeVar_1 *uint32 `protobuf:"varint,6,opt,name=challenge_var_1,json=challengeVar1" json:"challenge_var_1,omitempty"` ChallengeMaxRank *uint32 `protobuf:"varint,7,opt,name=challenge_max_rank,json=challengeMaxRank" json:"challenge_max_rank,omitempty"` } func (x *CDOTAUserMsg_DebugChallenge) Reset() { *x = CDOTAUserMsg_DebugChallenge{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[133] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_DebugChallenge) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_DebugChallenge) ProtoMessage() {} func (x *CDOTAUserMsg_DebugChallenge) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[133] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_DebugChallenge.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_DebugChallenge) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{133} } func (x *CDOTAUserMsg_DebugChallenge) GetChallengeType() uint32 { if x != nil && x.ChallengeType != nil { return *x.ChallengeType } return 0 } func (x *CDOTAUserMsg_DebugChallenge) GetChallengeQueryId() uint32 { if x != nil && x.ChallengeQueryId != nil { return *x.ChallengeQueryId } return 0 } func (x *CDOTAUserMsg_DebugChallenge) GetEventId() uint32 { if x != nil && x.EventId != nil { return *x.EventId } return 0 } func (x *CDOTAUserMsg_DebugChallenge) GetInstanceId() uint32 { if x != nil && x.InstanceId != nil { return *x.InstanceId } return 0 } func (x *CDOTAUserMsg_DebugChallenge) GetChallengeVar_0() uint32 { if x != nil && x.ChallengeVar_0 != nil { return *x.ChallengeVar_0 } return 0 } func (x *CDOTAUserMsg_DebugChallenge) GetChallengeVar_1() uint32 { if x != nil && x.ChallengeVar_1 != nil { return *x.ChallengeVar_1 } return 0 } func (x *CDOTAUserMsg_DebugChallenge) GetChallengeMaxRank() uint32 { if x != nil && x.ChallengeMaxRank != nil { return *x.ChallengeMaxRank } return 0 } type CDOTAUserMsg_FoundNeutralItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` ItemAbilityId *uint32 `protobuf:"varint,2,opt,name=item_ability_id,json=itemAbilityId" json:"item_ability_id,omitempty"` ItemTier *uint32 `protobuf:"varint,3,opt,name=item_tier,json=itemTier" json:"item_tier,omitempty"` TierItemCount *uint32 `protobuf:"varint,4,opt,name=tier_item_count,json=tierItemCount" json:"tier_item_count,omitempty"` } func (x *CDOTAUserMsg_FoundNeutralItem) Reset() { *x = CDOTAUserMsg_FoundNeutralItem{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[134] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_FoundNeutralItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_FoundNeutralItem) ProtoMessage() {} func (x *CDOTAUserMsg_FoundNeutralItem) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[134] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_FoundNeutralItem.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_FoundNeutralItem) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{134} } func (x *CDOTAUserMsg_FoundNeutralItem) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_FoundNeutralItem) GetItemAbilityId() uint32 { if x != nil && x.ItemAbilityId != nil { return *x.ItemAbilityId } return 0 } func (x *CDOTAUserMsg_FoundNeutralItem) GetItemTier() uint32 { if x != nil && x.ItemTier != nil { return *x.ItemTier } return 0 } func (x *CDOTAUserMsg_FoundNeutralItem) GetTierItemCount() uint32 { if x != nil && x.TierItemCount != nil { return *x.TierItemCount } return 0 } type CDOTAUserMsg_OutpostCaptured struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OutpostEntindex *int32 `protobuf:"varint,1,opt,name=outpost_entindex,json=outpostEntindex" json:"outpost_entindex,omitempty"` TeamId *uint32 `protobuf:"varint,2,opt,name=team_id,json=teamId" json:"team_id,omitempty"` } func (x *CDOTAUserMsg_OutpostCaptured) Reset() { *x = CDOTAUserMsg_OutpostCaptured{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[135] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_OutpostCaptured) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_OutpostCaptured) ProtoMessage() {} func (x *CDOTAUserMsg_OutpostCaptured) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[135] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_OutpostCaptured.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_OutpostCaptured) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{135} } func (x *CDOTAUserMsg_OutpostCaptured) GetOutpostEntindex() int32 { if x != nil && x.OutpostEntindex != nil { return *x.OutpostEntindex } return 0 } func (x *CDOTAUserMsg_OutpostCaptured) GetTeamId() uint32 { if x != nil && x.TeamId != nil { return *x.TeamId } return 0 } type CDOTAUserMsg_OutpostGrantedXP struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TeamId *uint32 `protobuf:"varint,1,opt,name=team_id,json=teamId" json:"team_id,omitempty"` XpAmount *uint32 `protobuf:"varint,2,opt,name=xp_amount,json=xpAmount" json:"xp_amount,omitempty"` } func (x *CDOTAUserMsg_OutpostGrantedXP) Reset() { *x = CDOTAUserMsg_OutpostGrantedXP{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[136] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_OutpostGrantedXP) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_OutpostGrantedXP) ProtoMessage() {} func (x *CDOTAUserMsg_OutpostGrantedXP) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[136] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_OutpostGrantedXP.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_OutpostGrantedXP) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{136} } func (x *CDOTAUserMsg_OutpostGrantedXP) GetTeamId() uint32 { if x != nil && x.TeamId != nil { return *x.TeamId } return 0 } func (x *CDOTAUserMsg_OutpostGrantedXP) GetXpAmount() uint32 { if x != nil && x.XpAmount != nil { return *x.XpAmount } return 0 } type CDOTAUserMsg_MoveCameraToUnit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UnitEhandle *uint32 `protobuf:"varint,1,opt,name=unit_ehandle,json=unitEhandle" json:"unit_ehandle,omitempty"` } func (x *CDOTAUserMsg_MoveCameraToUnit) Reset() { *x = CDOTAUserMsg_MoveCameraToUnit{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[137] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_MoveCameraToUnit) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_MoveCameraToUnit) ProtoMessage() {} func (x *CDOTAUserMsg_MoveCameraToUnit) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[137] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_MoveCameraToUnit.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_MoveCameraToUnit) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{137} } func (x *CDOTAUserMsg_MoveCameraToUnit) GetUnitEhandle() uint32 { if x != nil && x.UnitEhandle != nil { return *x.UnitEhandle } return 0 } type CDOTAUserMsg_PauseMinigameData struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields DataBits []*CDOTAUserMsg_PauseMinigameData_DataBit `protobuf:"bytes,1,rep,name=data_bits,json=dataBits" json:"data_bits,omitempty"` } func (x *CDOTAUserMsg_PauseMinigameData) Reset() { *x = CDOTAUserMsg_PauseMinigameData{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[138] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_PauseMinigameData) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_PauseMinigameData) ProtoMessage() {} func (x *CDOTAUserMsg_PauseMinigameData) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[138] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_PauseMinigameData.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_PauseMinigameData) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{138} } func (x *CDOTAUserMsg_PauseMinigameData) GetDataBits() []*CDOTAUserMsg_PauseMinigameData_DataBit { if x != nil { return x.DataBits } return nil } type CDOTAUserMsg_VersusScene_PlayerBehavior struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Behavior *EDOTAVersusScenePlayerBehavior `protobuf:"varint,2,opt,name=behavior,enum=EDOTAVersusScenePlayerBehavior,def=1" json:"behavior,omitempty"` PlayActivity *VersusScene_PlayActivity `protobuf:"bytes,3,opt,name=play_activity,json=playActivity" json:"play_activity,omitempty"` ChatWheel *VersusScene_ChatWheel `protobuf:"bytes,4,opt,name=chat_wheel,json=chatWheel" json:"chat_wheel,omitempty"` PlaybackRate *VersusScene_PlaybackRate `protobuf:"bytes,5,opt,name=playback_rate,json=playbackRate" json:"playback_rate,omitempty"` } // Default values for CDOTAUserMsg_VersusScene_PlayerBehavior fields. const ( Default_CDOTAUserMsg_VersusScene_PlayerBehavior_Behavior = EDOTAVersusScenePlayerBehavior_VS_PLAYER_BEHAVIOR_PLAY_ACTIVITY ) func (x *CDOTAUserMsg_VersusScene_PlayerBehavior) Reset() { *x = CDOTAUserMsg_VersusScene_PlayerBehavior{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[139] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_VersusScene_PlayerBehavior) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_VersusScene_PlayerBehavior) ProtoMessage() {} func (x *CDOTAUserMsg_VersusScene_PlayerBehavior) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[139] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_VersusScene_PlayerBehavior.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_VersusScene_PlayerBehavior) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{139} } func (x *CDOTAUserMsg_VersusScene_PlayerBehavior) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_VersusScene_PlayerBehavior) GetBehavior() EDOTAVersusScenePlayerBehavior { if x != nil && x.Behavior != nil { return *x.Behavior } return Default_CDOTAUserMsg_VersusScene_PlayerBehavior_Behavior } func (x *CDOTAUserMsg_VersusScene_PlayerBehavior) GetPlayActivity() *VersusScene_PlayActivity { if x != nil { return x.PlayActivity } return nil } func (x *CDOTAUserMsg_VersusScene_PlayerBehavior) GetChatWheel() *VersusScene_ChatWheel { if x != nil { return x.ChatWheel } return nil } func (x *CDOTAUserMsg_VersusScene_PlayerBehavior) GetPlaybackRate() *VersusScene_PlaybackRate { if x != nil { return x.PlaybackRate } return nil } type CDOTAUserMsg_QoP_ArcanaSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ehandle *uint32 `protobuf:"varint,1,opt,name=ehandle" json:"ehandle,omitempty"` ArcanaLevel *uint32 `protobuf:"varint,2,opt,name=arcana_level,json=arcanaLevel" json:"arcana_level,omitempty"` PlayersHit *uint32 `protobuf:"varint,3,opt,name=players_hit,json=playersHit" json:"players_hit,omitempty"` PlayersKilled *uint32 `protobuf:"varint,4,opt,name=players_killed,json=playersKilled" json:"players_killed,omitempty"` } func (x *CDOTAUserMsg_QoP_ArcanaSummary) Reset() { *x = CDOTAUserMsg_QoP_ArcanaSummary{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[140] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_QoP_ArcanaSummary) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_QoP_ArcanaSummary) ProtoMessage() {} func (x *CDOTAUserMsg_QoP_ArcanaSummary) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[140] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_QoP_ArcanaSummary.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_QoP_ArcanaSummary) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{140} } func (x *CDOTAUserMsg_QoP_ArcanaSummary) GetEhandle() uint32 { if x != nil && x.Ehandle != nil { return *x.Ehandle } return 0 } func (x *CDOTAUserMsg_QoP_ArcanaSummary) GetArcanaLevel() uint32 { if x != nil && x.ArcanaLevel != nil { return *x.ArcanaLevel } return 0 } func (x *CDOTAUserMsg_QoP_ArcanaSummary) GetPlayersHit() uint32 { if x != nil && x.PlayersHit != nil { return *x.PlayersHit } return 0 } func (x *CDOTAUserMsg_QoP_ArcanaSummary) GetPlayersKilled() uint32 { if x != nil && x.PlayersKilled != nil { return *x.PlayersKilled } return 0 } type CDOTAUserMsg_HotPotato_Created struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId_1 *int32 `protobuf:"varint,1,opt,name=player_id_1,json=playerId1" json:"player_id_1,omitempty"` PlayerId_2 *int32 `protobuf:"varint,2,opt,name=player_id_2,json=playerId2" json:"player_id_2,omitempty"` } func (x *CDOTAUserMsg_HotPotato_Created) Reset() { *x = CDOTAUserMsg_HotPotato_Created{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[141] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_HotPotato_Created) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_HotPotato_Created) ProtoMessage() {} func (x *CDOTAUserMsg_HotPotato_Created) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[141] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_HotPotato_Created.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_HotPotato_Created) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{141} } func (x *CDOTAUserMsg_HotPotato_Created) GetPlayerId_1() int32 { if x != nil && x.PlayerId_1 != nil { return *x.PlayerId_1 } return 0 } func (x *CDOTAUserMsg_HotPotato_Created) GetPlayerId_2() int32 { if x != nil && x.PlayerId_2 != nil { return *x.PlayerId_2 } return 0 } type CDOTAUserMsg_HotPotato_Exploded struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` } func (x *CDOTAUserMsg_HotPotato_Exploded) Reset() { *x = CDOTAUserMsg_HotPotato_Exploded{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[142] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_HotPotato_Exploded) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_HotPotato_Exploded) ProtoMessage() {} func (x *CDOTAUserMsg_HotPotato_Exploded) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[142] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_HotPotato_Exploded.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_HotPotato_Exploded) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{142} } func (x *CDOTAUserMsg_HotPotato_Exploded) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } type CDOTAUserMsg_WK_Arcana_Progress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ehandle *uint32 `protobuf:"varint,1,opt,name=ehandle" json:"ehandle,omitempty"` ArcanaLevel *uint32 `protobuf:"varint,2,opt,name=arcana_level,json=arcanaLevel" json:"arcana_level,omitempty"` HeroId *uint32 `protobuf:"varint,3,opt,name=hero_id,json=heroId" json:"hero_id,omitempty"` } func (x *CDOTAUserMsg_WK_Arcana_Progress) Reset() { *x = CDOTAUserMsg_WK_Arcana_Progress{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[143] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_WK_Arcana_Progress) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_WK_Arcana_Progress) ProtoMessage() {} func (x *CDOTAUserMsg_WK_Arcana_Progress) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[143] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_WK_Arcana_Progress.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_WK_Arcana_Progress) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{143} } func (x *CDOTAUserMsg_WK_Arcana_Progress) GetEhandle() uint32 { if x != nil && x.Ehandle != nil { return *x.Ehandle } return 0 } func (x *CDOTAUserMsg_WK_Arcana_Progress) GetArcanaLevel() uint32 { if x != nil && x.ArcanaLevel != nil { return *x.ArcanaLevel } return 0 } func (x *CDOTAUserMsg_WK_Arcana_Progress) GetHeroId() uint32 { if x != nil && x.HeroId != nil { return *x.HeroId } return 0 } type CDOTAUserMsg_GuildChallenge_Progress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerProgress []*CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress `protobuf:"bytes,1,rep,name=player_progress,json=playerProgress" json:"player_progress,omitempty"` GuildId *uint32 `protobuf:"varint,2,opt,name=guild_id,json=guildId" json:"guild_id,omitempty"` ChallengeInstanceId *uint32 `protobuf:"varint,3,opt,name=challenge_instance_id,json=challengeInstanceId" json:"challenge_instance_id,omitempty"` ChallengeParameter *uint32 `protobuf:"varint,4,opt,name=challenge_parameter,json=challengeParameter" json:"challenge_parameter,omitempty"` ChallengeType *CDOTAUserMsg_GuildChallenge_Progress_EChallengeType `protobuf:"varint,5,opt,name=challenge_type,json=challengeType,enum=CDOTAUserMsg_GuildChallenge_Progress_EChallengeType,def=0" json:"challenge_type,omitempty"` ChallengeProgressAtStart *uint32 `protobuf:"varint,7,opt,name=challenge_progress_at_start,json=challengeProgressAtStart" json:"challenge_progress_at_start,omitempty"` Complete *bool `protobuf:"varint,8,opt,name=complete" json:"complete,omitempty"` } // Default values for CDOTAUserMsg_GuildChallenge_Progress fields. const ( Default_CDOTAUserMsg_GuildChallenge_Progress_ChallengeType = CDOTAUserMsg_GuildChallenge_Progress_k_EChallengeType_Invalid ) func (x *CDOTAUserMsg_GuildChallenge_Progress) Reset() { *x = CDOTAUserMsg_GuildChallenge_Progress{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[144] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_GuildChallenge_Progress) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_GuildChallenge_Progress) ProtoMessage() {} func (x *CDOTAUserMsg_GuildChallenge_Progress) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[144] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_GuildChallenge_Progress.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_GuildChallenge_Progress) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{144} } func (x *CDOTAUserMsg_GuildChallenge_Progress) GetPlayerProgress() []*CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress { if x != nil { return x.PlayerProgress } return nil } func (x *CDOTAUserMsg_GuildChallenge_Progress) GetGuildId() uint32 { if x != nil && x.GuildId != nil { return *x.GuildId } return 0 } func (x *CDOTAUserMsg_GuildChallenge_Progress) GetChallengeInstanceId() uint32 { if x != nil && x.ChallengeInstanceId != nil { return *x.ChallengeInstanceId } return 0 } func (x *CDOTAUserMsg_GuildChallenge_Progress) GetChallengeParameter() uint32 { if x != nil && x.ChallengeParameter != nil { return *x.ChallengeParameter } return 0 } func (x *CDOTAUserMsg_GuildChallenge_Progress) GetChallengeType() CDOTAUserMsg_GuildChallenge_Progress_EChallengeType { if x != nil && x.ChallengeType != nil { return *x.ChallengeType } return Default_CDOTAUserMsg_GuildChallenge_Progress_ChallengeType } func (x *CDOTAUserMsg_GuildChallenge_Progress) GetChallengeProgressAtStart() uint32 { if x != nil && x.ChallengeProgressAtStart != nil { return *x.ChallengeProgressAtStart } return 0 } func (x *CDOTAUserMsg_GuildChallenge_Progress) GetComplete() bool { if x != nil && x.Complete != nil { return *x.Complete } return false } type CDOTAUserMsg_WRArcanaProgress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ehandle *uint32 `protobuf:"varint,1,opt,name=ehandle" json:"ehandle,omitempty"` TargetEhandle *uint32 `protobuf:"varint,2,opt,name=target_ehandle,json=targetEhandle" json:"target_ehandle,omitempty"` ArrowsLanded *uint32 `protobuf:"varint,3,opt,name=arrows_landed,json=arrowsLanded" json:"arrows_landed,omitempty"` DamageDealt *uint32 `protobuf:"varint,4,opt,name=damage_dealt,json=damageDealt" json:"damage_dealt,omitempty"` TargetHp *uint32 `protobuf:"varint,5,opt,name=target_hp,json=targetHp" json:"target_hp,omitempty"` TargetMaxHp *uint32 `protobuf:"varint,6,opt,name=target_max_hp,json=targetMaxHp" json:"target_max_hp,omitempty"` ArcanaLevel *uint32 `protobuf:"varint,7,opt,name=arcana_level,json=arcanaLevel" json:"arcana_level,omitempty"` } func (x *CDOTAUserMsg_WRArcanaProgress) Reset() { *x = CDOTAUserMsg_WRArcanaProgress{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[145] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_WRArcanaProgress) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_WRArcanaProgress) ProtoMessage() {} func (x *CDOTAUserMsg_WRArcanaProgress) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[145] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_WRArcanaProgress.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_WRArcanaProgress) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{145} } func (x *CDOTAUserMsg_WRArcanaProgress) GetEhandle() uint32 { if x != nil && x.Ehandle != nil { return *x.Ehandle } return 0 } func (x *CDOTAUserMsg_WRArcanaProgress) GetTargetEhandle() uint32 { if x != nil && x.TargetEhandle != nil { return *x.TargetEhandle } return 0 } func (x *CDOTAUserMsg_WRArcanaProgress) GetArrowsLanded() uint32 { if x != nil && x.ArrowsLanded != nil { return *x.ArrowsLanded } return 0 } func (x *CDOTAUserMsg_WRArcanaProgress) GetDamageDealt() uint32 { if x != nil && x.DamageDealt != nil { return *x.DamageDealt } return 0 } func (x *CDOTAUserMsg_WRArcanaProgress) GetTargetHp() uint32 { if x != nil && x.TargetHp != nil { return *x.TargetHp } return 0 } func (x *CDOTAUserMsg_WRArcanaProgress) GetTargetMaxHp() uint32 { if x != nil && x.TargetMaxHp != nil { return *x.TargetMaxHp } return 0 } func (x *CDOTAUserMsg_WRArcanaProgress) GetArcanaLevel() uint32 { if x != nil && x.ArcanaLevel != nil { return *x.ArcanaLevel } return 0 } type CDOTAUserMsg_WRArcanaSummary struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ehandle *uint32 `protobuf:"varint,1,opt,name=ehandle" json:"ehandle,omitempty"` TargetEhandle *uint32 `protobuf:"varint,2,opt,name=target_ehandle,json=targetEhandle" json:"target_ehandle,omitempty"` ArrowsLanded *uint32 `protobuf:"varint,3,opt,name=arrows_landed,json=arrowsLanded" json:"arrows_landed,omitempty"` DamageDealt *uint32 `protobuf:"varint,4,opt,name=damage_dealt,json=damageDealt" json:"damage_dealt,omitempty"` TargetHp *uint32 `protobuf:"varint,5,opt,name=target_hp,json=targetHp" json:"target_hp,omitempty"` TargetMaxHp *uint32 `protobuf:"varint,6,opt,name=target_max_hp,json=targetMaxHp" json:"target_max_hp,omitempty"` ArcanaLevel *uint32 `protobuf:"varint,7,opt,name=arcana_level,json=arcanaLevel" json:"arcana_level,omitempty"` Success *bool `protobuf:"varint,8,opt,name=success" json:"success,omitempty"` } func (x *CDOTAUserMsg_WRArcanaSummary) Reset() { *x = CDOTAUserMsg_WRArcanaSummary{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[146] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_WRArcanaSummary) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_WRArcanaSummary) ProtoMessage() {} func (x *CDOTAUserMsg_WRArcanaSummary) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[146] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_WRArcanaSummary.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_WRArcanaSummary) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{146} } func (x *CDOTAUserMsg_WRArcanaSummary) GetEhandle() uint32 { if x != nil && x.Ehandle != nil { return *x.Ehandle } return 0 } func (x *CDOTAUserMsg_WRArcanaSummary) GetTargetEhandle() uint32 { if x != nil && x.TargetEhandle != nil { return *x.TargetEhandle } return 0 } func (x *CDOTAUserMsg_WRArcanaSummary) GetArrowsLanded() uint32 { if x != nil && x.ArrowsLanded != nil { return *x.ArrowsLanded } return 0 } func (x *CDOTAUserMsg_WRArcanaSummary) GetDamageDealt() uint32 { if x != nil && x.DamageDealt != nil { return *x.DamageDealt } return 0 } func (x *CDOTAUserMsg_WRArcanaSummary) GetTargetHp() uint32 { if x != nil && x.TargetHp != nil { return *x.TargetHp } return 0 } func (x *CDOTAUserMsg_WRArcanaSummary) GetTargetMaxHp() uint32 { if x != nil && x.TargetMaxHp != nil { return *x.TargetMaxHp } return 0 } func (x *CDOTAUserMsg_WRArcanaSummary) GetArcanaLevel() uint32 { if x != nil && x.ArcanaLevel != nil { return *x.ArcanaLevel } return 0 } func (x *CDOTAUserMsg_WRArcanaSummary) GetSuccess() bool { if x != nil && x.Success != nil { return *x.Success } return false } type CDOTAUserMsg_EmptyItemSlotAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SourcePlayerId *int32 `protobuf:"varint,1,opt,name=source_player_id,json=sourcePlayerId" json:"source_player_id,omitempty"` TargetPlayerId *int32 `protobuf:"varint,2,opt,name=target_player_id,json=targetPlayerId" json:"target_player_id,omitempty"` SlotIndex *int32 `protobuf:"varint,3,opt,name=slot_index,json=slotIndex" json:"slot_index,omitempty"` CooldownSeconds *int32 `protobuf:"varint,4,opt,name=cooldown_seconds,json=cooldownSeconds" json:"cooldown_seconds,omitempty"` } func (x *CDOTAUserMsg_EmptyItemSlotAlert) Reset() { *x = CDOTAUserMsg_EmptyItemSlotAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[147] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_EmptyItemSlotAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_EmptyItemSlotAlert) ProtoMessage() {} func (x *CDOTAUserMsg_EmptyItemSlotAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[147] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_EmptyItemSlotAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_EmptyItemSlotAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{147} } func (x *CDOTAUserMsg_EmptyItemSlotAlert) GetSourcePlayerId() int32 { if x != nil && x.SourcePlayerId != nil { return *x.SourcePlayerId } return 0 } func (x *CDOTAUserMsg_EmptyItemSlotAlert) GetTargetPlayerId() int32 { if x != nil && x.TargetPlayerId != nil { return *x.TargetPlayerId } return 0 } func (x *CDOTAUserMsg_EmptyItemSlotAlert) GetSlotIndex() int32 { if x != nil && x.SlotIndex != nil { return *x.SlotIndex } return 0 } func (x *CDOTAUserMsg_EmptyItemSlotAlert) GetCooldownSeconds() int32 { if x != nil && x.CooldownSeconds != nil { return *x.CooldownSeconds } return 0 } type CDOTAUserMsg_AghsStatusAlert struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SourcePlayerId *int32 `protobuf:"varint,1,opt,name=source_player_id,json=sourcePlayerId" json:"source_player_id,omitempty"` TargetPlayerId *int32 `protobuf:"varint,2,opt,name=target_player_id,json=targetPlayerId" json:"target_player_id,omitempty"` TargetEntindex *int32 `protobuf:"varint,3,opt,name=target_entindex,json=targetEntindex" json:"target_entindex,omitempty"` AlertType *uint32 `protobuf:"varint,4,opt,name=alert_type,json=alertType" json:"alert_type,omitempty"` HasScepter *bool `protobuf:"varint,5,opt,name=has_scepter,json=hasScepter" json:"has_scepter,omitempty"` HasShard *bool `protobuf:"varint,6,opt,name=has_shard,json=hasShard" json:"has_shard,omitempty"` } func (x *CDOTAUserMsg_AghsStatusAlert) Reset() { *x = CDOTAUserMsg_AghsStatusAlert{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[148] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_AghsStatusAlert) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_AghsStatusAlert) ProtoMessage() {} func (x *CDOTAUserMsg_AghsStatusAlert) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[148] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_AghsStatusAlert.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_AghsStatusAlert) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{148} } func (x *CDOTAUserMsg_AghsStatusAlert) GetSourcePlayerId() int32 { if x != nil && x.SourcePlayerId != nil { return *x.SourcePlayerId } return 0 } func (x *CDOTAUserMsg_AghsStatusAlert) GetTargetPlayerId() int32 { if x != nil && x.TargetPlayerId != nil { return *x.TargetPlayerId } return 0 } func (x *CDOTAUserMsg_AghsStatusAlert) GetTargetEntindex() int32 { if x != nil && x.TargetEntindex != nil { return *x.TargetEntindex } return 0 } func (x *CDOTAUserMsg_AghsStatusAlert) GetAlertType() uint32 { if x != nil && x.AlertType != nil { return *x.AlertType } return 0 } func (x *CDOTAUserMsg_AghsStatusAlert) GetHasScepter() bool { if x != nil && x.HasScepter != nil { return *x.HasScepter } return false } func (x *CDOTAUserMsg_AghsStatusAlert) GetHasShard() bool { if x != nil && x.HasShard != nil { return *x.HasShard } return false } type CDOTAUserMsg_MutedPlayers struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TextMutedPlayerIds []int32 `protobuf:"varint,1,rep,name=text_muted_player_ids,json=textMutedPlayerIds" json:"text_muted_player_ids,omitempty"` VoiceMutedPlayerIds []int32 `protobuf:"varint,2,rep,name=voice_muted_player_ids,json=voiceMutedPlayerIds" json:"voice_muted_player_ids,omitempty"` } func (x *CDOTAUserMsg_MutedPlayers) Reset() { *x = CDOTAUserMsg_MutedPlayers{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[149] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_MutedPlayers) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_MutedPlayers) ProtoMessage() {} func (x *CDOTAUserMsg_MutedPlayers) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[149] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_MutedPlayers.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_MutedPlayers) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{149} } func (x *CDOTAUserMsg_MutedPlayers) GetTextMutedPlayerIds() []int32 { if x != nil { return x.TextMutedPlayerIds } return nil } func (x *CDOTAUserMsg_MutedPlayers) GetVoiceMutedPlayerIds() []int32 { if x != nil { return x.VoiceMutedPlayerIds } return nil } type CDOTAUserMsg_ContextualTip struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TipId *int32 `protobuf:"varint,1,opt,name=tip_id,json=tipId" json:"tip_id,omitempty"` ReferencedAbilities []string `protobuf:"bytes,2,rep,name=referenced_abilities,json=referencedAbilities" json:"referenced_abilities,omitempty"` ReferencedUnits []string `protobuf:"bytes,3,rep,name=referenced_units,json=referencedUnits" json:"referenced_units,omitempty"` PanoramaClasses []string `protobuf:"bytes,4,rep,name=panorama_classes,json=panoramaClasses" json:"panorama_classes,omitempty"` ForceAnnotation *bool `protobuf:"varint,5,opt,name=force_annotation,json=forceAnnotation" json:"force_annotation,omitempty"` Variant *int32 `protobuf:"varint,6,opt,name=variant" json:"variant,omitempty"` IntParam *int32 `protobuf:"varint,7,opt,name=int_param,json=intParam" json:"int_param,omitempty"` IntParam2 *int32 `protobuf:"varint,8,opt,name=int_param2,json=intParam2" json:"int_param2,omitempty"` FloatParam *float32 `protobuf:"fixed32,9,opt,name=float_param,json=floatParam" json:"float_param,omitempty"` FloatParam2 *float32 `protobuf:"fixed32,10,opt,name=float_param2,json=floatParam2" json:"float_param2,omitempty"` StringParam *string `protobuf:"bytes,11,opt,name=string_param,json=stringParam" json:"string_param,omitempty"` StringParam2 *string `protobuf:"bytes,12,opt,name=string_param2,json=stringParam2" json:"string_param2,omitempty"` TipTextOverride *string `protobuf:"bytes,13,opt,name=tip_text_override,json=tipTextOverride" json:"tip_text_override,omitempty"` TipAnnotationOverride *string `protobuf:"bytes,14,opt,name=tip_annotation_override,json=tipAnnotationOverride" json:"tip_annotation_override,omitempty"` PanoramaSnippet *string `protobuf:"bytes,15,opt,name=panorama_snippet,json=panoramaSnippet" json:"panorama_snippet,omitempty"` } func (x *CDOTAUserMsg_ContextualTip) Reset() { *x = CDOTAUserMsg_ContextualTip{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[150] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ContextualTip) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ContextualTip) ProtoMessage() {} func (x *CDOTAUserMsg_ContextualTip) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[150] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ContextualTip.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ContextualTip) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{150} } func (x *CDOTAUserMsg_ContextualTip) GetTipId() int32 { if x != nil && x.TipId != nil { return *x.TipId } return 0 } func (x *CDOTAUserMsg_ContextualTip) GetReferencedAbilities() []string { if x != nil { return x.ReferencedAbilities } return nil } func (x *CDOTAUserMsg_ContextualTip) GetReferencedUnits() []string { if x != nil { return x.ReferencedUnits } return nil } func (x *CDOTAUserMsg_ContextualTip) GetPanoramaClasses() []string { if x != nil { return x.PanoramaClasses } return nil } func (x *CDOTAUserMsg_ContextualTip) GetForceAnnotation() bool { if x != nil && x.ForceAnnotation != nil { return *x.ForceAnnotation } return false } func (x *CDOTAUserMsg_ContextualTip) GetVariant() int32 { if x != nil && x.Variant != nil { return *x.Variant } return 0 } func (x *CDOTAUserMsg_ContextualTip) GetIntParam() int32 { if x != nil && x.IntParam != nil { return *x.IntParam } return 0 } func (x *CDOTAUserMsg_ContextualTip) GetIntParam2() int32 { if x != nil && x.IntParam2 != nil { return *x.IntParam2 } return 0 } func (x *CDOTAUserMsg_ContextualTip) GetFloatParam() float32 { if x != nil && x.FloatParam != nil { return *x.FloatParam } return 0 } func (x *CDOTAUserMsg_ContextualTip) GetFloatParam2() float32 { if x != nil && x.FloatParam2 != nil { return *x.FloatParam2 } return 0 } func (x *CDOTAUserMsg_ContextualTip) GetStringParam() string { if x != nil && x.StringParam != nil { return *x.StringParam } return "" } func (x *CDOTAUserMsg_ContextualTip) GetStringParam2() string { if x != nil && x.StringParam2 != nil { return *x.StringParam2 } return "" } func (x *CDOTAUserMsg_ContextualTip) GetTipTextOverride() string { if x != nil && x.TipTextOverride != nil { return *x.TipTextOverride } return "" } func (x *CDOTAUserMsg_ContextualTip) GetTipAnnotationOverride() string { if x != nil && x.TipAnnotationOverride != nil { return *x.TipAnnotationOverride } return "" } func (x *CDOTAUserMsg_ContextualTip) GetPanoramaSnippet() string { if x != nil && x.PanoramaSnippet != nil { return *x.PanoramaSnippet } return "" } type CDOTAUserMsg_ChatMessage struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SourcePlayerId *int32 `protobuf:"varint,1,opt,name=source_player_id,json=sourcePlayerId" json:"source_player_id,omitempty"` ChannelType *uint32 `protobuf:"varint,2,opt,name=channel_type,json=channelType" json:"channel_type,omitempty"` MessageText *string `protobuf:"bytes,3,opt,name=message_text,json=messageText" json:"message_text,omitempty"` } func (x *CDOTAUserMsg_ChatMessage) Reset() { *x = CDOTAUserMsg_ChatMessage{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[151] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_ChatMessage) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_ChatMessage) ProtoMessage() {} func (x *CDOTAUserMsg_ChatMessage) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[151] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_ChatMessage.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_ChatMessage) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{151} } func (x *CDOTAUserMsg_ChatMessage) GetSourcePlayerId() int32 { if x != nil && x.SourcePlayerId != nil { return *x.SourcePlayerId } return 0 } func (x *CDOTAUserMsg_ChatMessage) GetChannelType() uint32 { if x != nil && x.ChannelType != nil { return *x.ChannelType } return 0 } func (x *CDOTAUserMsg_ChatMessage) GetMessageText() string { if x != nil && x.MessageText != nil { return *x.MessageText } return "" } type CDOTAUserMsg_MiniKillCamInfo_Attacker struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Attacker *uint32 `protobuf:"varint,1,opt,name=attacker" json:"attacker,omitempty"` TotalDamage *int32 `protobuf:"varint,2,opt,name=total_damage,json=totalDamage" json:"total_damage,omitempty"` Abilities []*CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability `protobuf:"bytes,3,rep,name=abilities" json:"abilities,omitempty"` AttackerName *string `protobuf:"bytes,4,opt,name=attacker_name,json=attackerName" json:"attacker_name,omitempty"` } func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker) Reset() { *x = CDOTAUserMsg_MiniKillCamInfo_Attacker{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[152] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_MiniKillCamInfo_Attacker) ProtoMessage() {} func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[152] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_MiniKillCamInfo_Attacker.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_MiniKillCamInfo_Attacker) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{8, 0} } func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker) GetAttacker() uint32 { if x != nil && x.Attacker != nil { return *x.Attacker } return 0 } func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker) GetTotalDamage() int32 { if x != nil && x.TotalDamage != nil { return *x.TotalDamage } return 0 } func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker) GetAbilities() []*CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability { if x != nil { return x.Abilities } return nil } func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker) GetAttackerName() string { if x != nil && x.AttackerName != nil { return *x.AttackerName } return "" } type CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields AbilityId *uint32 `protobuf:"varint,1,opt,name=ability_id,json=abilityId" json:"ability_id,omitempty"` Damage *int32 `protobuf:"varint,2,opt,name=damage" json:"damage,omitempty"` } func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability) Reset() { *x = CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[153] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability) ProtoMessage() {} func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[153] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{8, 0, 0} } func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability) GetAbilityId() uint32 { if x != nil && x.AbilityId != nil { return *x.AbilityId } return 0 } func (x *CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability) GetDamage() int32 { if x != nil && x.Damage != nil { return *x.Damage } return 0 } type CDOTAUserMsg_CourierKilledAlert_LostItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ItemAbilityId *int32 `protobuf:"varint,1,opt,name=item_ability_id,json=itemAbilityId" json:"item_ability_id,omitempty"` Quantity *uint32 `protobuf:"varint,2,opt,name=quantity" json:"quantity,omitempty"` } func (x *CDOTAUserMsg_CourierKilledAlert_LostItem) Reset() { *x = CDOTAUserMsg_CourierKilledAlert_LostItem{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[154] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_CourierKilledAlert_LostItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_CourierKilledAlert_LostItem) ProtoMessage() {} func (x *CDOTAUserMsg_CourierKilledAlert_LostItem) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[154] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_CourierKilledAlert_LostItem.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_CourierKilledAlert_LostItem) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{25, 0} } func (x *CDOTAUserMsg_CourierKilledAlert_LostItem) GetItemAbilityId() int32 { if x != nil && x.ItemAbilityId != nil { return *x.ItemAbilityId } return 0 } func (x *CDOTAUserMsg_CourierKilledAlert_LostItem) GetQuantity() uint32 { if x != nil && x.Quantity != nil { return *x.Quantity } return 0 } type CDOTAUserMsg_PredictionResult_Prediction struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ItemDef *uint32 `protobuf:"varint,1,opt,name=item_def,json=itemDef" json:"item_def,omitempty"` NumCorrect *uint32 `protobuf:"varint,2,opt,name=num_correct,json=numCorrect" json:"num_correct,omitempty"` NumFails *uint32 `protobuf:"varint,3,opt,name=num_fails,json=numFails" json:"num_fails,omitempty"` Result *CDOTAUserMsg_PredictionResult_Prediction_EResult `protobuf:"varint,4,opt,name=result,enum=CDOTAUserMsg_PredictionResult_Prediction_EResult,def=1" json:"result,omitempty"` GrantedItemDefs []uint32 `protobuf:"varint,6,rep,name=granted_item_defs,json=grantedItemDefs" json:"granted_item_defs,omitempty"` } // Default values for CDOTAUserMsg_PredictionResult_Prediction fields. const ( Default_CDOTAUserMsg_PredictionResult_Prediction_Result = CDOTAUserMsg_PredictionResult_Prediction_k_eResult_ItemGranted ) func (x *CDOTAUserMsg_PredictionResult_Prediction) Reset() { *x = CDOTAUserMsg_PredictionResult_Prediction{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[155] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_PredictionResult_Prediction) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_PredictionResult_Prediction) ProtoMessage() {} func (x *CDOTAUserMsg_PredictionResult_Prediction) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[155] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_PredictionResult_Prediction.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_PredictionResult_Prediction) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{40, 0} } func (x *CDOTAUserMsg_PredictionResult_Prediction) GetItemDef() uint32 { if x != nil && x.ItemDef != nil { return *x.ItemDef } return 0 } func (x *CDOTAUserMsg_PredictionResult_Prediction) GetNumCorrect() uint32 { if x != nil && x.NumCorrect != nil { return *x.NumCorrect } return 0 } func (x *CDOTAUserMsg_PredictionResult_Prediction) GetNumFails() uint32 { if x != nil && x.NumFails != nil { return *x.NumFails } return 0 } func (x *CDOTAUserMsg_PredictionResult_Prediction) GetResult() CDOTAUserMsg_PredictionResult_Prediction_EResult { if x != nil && x.Result != nil { return *x.Result } return Default_CDOTAUserMsg_PredictionResult_Prediction_Result } func (x *CDOTAUserMsg_PredictionResult_Prediction) GetGrantedItemDefs() []uint32 { if x != nil { return x.GrantedItemDefs } return nil } type CDOTAResponseQuerySerialized_Fact struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Key *int32 `protobuf:"varint,1,req,name=key" json:"key,omitempty"` Valtype *CDOTAResponseQuerySerialized_Fact_ValueType `protobuf:"varint,2,req,name=valtype,enum=CDOTAResponseQuerySerialized_Fact_ValueType,def=1" json:"valtype,omitempty"` ValNumeric *float32 `protobuf:"fixed32,3,opt,name=val_numeric,json=valNumeric" json:"val_numeric,omitempty"` ValString *string `protobuf:"bytes,4,opt,name=val_string,json=valString" json:"val_string,omitempty"` ValStringtableIndex *int32 `protobuf:"varint,5,opt,name=val_stringtable_index,json=valStringtableIndex" json:"val_stringtable_index,omitempty"` ValIntNumeric *int32 `protobuf:"zigzag32,6,opt,name=val_int_numeric,json=valIntNumeric" json:"val_int_numeric,omitempty"` } // Default values for CDOTAResponseQuerySerialized_Fact fields. const ( Default_CDOTAResponseQuerySerialized_Fact_Valtype = CDOTAResponseQuerySerialized_Fact_NUMERIC ) func (x *CDOTAResponseQuerySerialized_Fact) Reset() { *x = CDOTAResponseQuerySerialized_Fact{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[156] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAResponseQuerySerialized_Fact) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAResponseQuerySerialized_Fact) ProtoMessage() {} func (x *CDOTAResponseQuerySerialized_Fact) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[156] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAResponseQuerySerialized_Fact.ProtoReflect.Descriptor instead. func (*CDOTAResponseQuerySerialized_Fact) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{41, 0} } func (x *CDOTAResponseQuerySerialized_Fact) GetKey() int32 { if x != nil && x.Key != nil { return *x.Key } return 0 } func (x *CDOTAResponseQuerySerialized_Fact) GetValtype() CDOTAResponseQuerySerialized_Fact_ValueType { if x != nil && x.Valtype != nil { return *x.Valtype } return Default_CDOTAResponseQuerySerialized_Fact_Valtype } func (x *CDOTAResponseQuerySerialized_Fact) GetValNumeric() float32 { if x != nil && x.ValNumeric != nil { return *x.ValNumeric } return 0 } func (x *CDOTAResponseQuerySerialized_Fact) GetValString() string { if x != nil && x.ValString != nil { return *x.ValString } return "" } func (x *CDOTAResponseQuerySerialized_Fact) GetValStringtableIndex() int32 { if x != nil && x.ValStringtableIndex != nil { return *x.ValStringtableIndex } return 0 } func (x *CDOTAResponseQuerySerialized_Fact) GetValIntNumeric() int32 { if x != nil && x.ValIntNumeric != nil { return *x.ValIntNumeric } return 0 } type CDOTAUserMsg_UnitEvent_Interval struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Start *float32 `protobuf:"fixed32,1,opt,name=start" json:"start,omitempty"` Range *float32 `protobuf:"fixed32,2,opt,name=range" json:"range,omitempty"` } func (x *CDOTAUserMsg_UnitEvent_Interval) Reset() { *x = CDOTAUserMsg_UnitEvent_Interval{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[157] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_UnitEvent_Interval) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_UnitEvent_Interval) ProtoMessage() {} func (x *CDOTAUserMsg_UnitEvent_Interval) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[157] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_UnitEvent_Interval.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_UnitEvent_Interval) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{43, 0} } func (x *CDOTAUserMsg_UnitEvent_Interval) GetStart() float32 { if x != nil && x.Start != nil { return *x.Start } return 0 } func (x *CDOTAUserMsg_UnitEvent_Interval) GetRange() float32 { if x != nil && x.Range != nil { return *x.Range } return 0 } type CDOTAUserMsg_UnitEvent_Speech struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields SpeechConcept *int32 `protobuf:"varint,1,opt,name=speech_concept,json=speechConcept" json:"speech_concept,omitempty"` Response *string `protobuf:"bytes,2,opt,name=response" json:"response,omitempty"` RecipientType *int32 `protobuf:"varint,3,opt,name=recipient_type,json=recipientType" json:"recipient_type,omitempty"` Level *int32 `protobuf:"varint,4,opt,name=level" json:"level,omitempty"` Muteable *bool `protobuf:"varint,5,opt,name=muteable,def=0" json:"muteable,omitempty"` Predelay *CDOTAUserMsg_UnitEvent_Interval `protobuf:"bytes,6,opt,name=predelay" json:"predelay,omitempty"` Flags *uint32 `protobuf:"varint,7,opt,name=flags" json:"flags,omitempty"` } // Default values for CDOTAUserMsg_UnitEvent_Speech fields. const ( Default_CDOTAUserMsg_UnitEvent_Speech_Muteable = bool(false) ) func (x *CDOTAUserMsg_UnitEvent_Speech) Reset() { *x = CDOTAUserMsg_UnitEvent_Speech{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[158] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_UnitEvent_Speech) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_UnitEvent_Speech) ProtoMessage() {} func (x *CDOTAUserMsg_UnitEvent_Speech) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[158] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_UnitEvent_Speech.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_UnitEvent_Speech) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{43, 1} } func (x *CDOTAUserMsg_UnitEvent_Speech) GetSpeechConcept() int32 { if x != nil && x.SpeechConcept != nil { return *x.SpeechConcept } return 0 } func (x *CDOTAUserMsg_UnitEvent_Speech) GetResponse() string { if x != nil && x.Response != nil { return *x.Response } return "" } func (x *CDOTAUserMsg_UnitEvent_Speech) GetRecipientType() int32 { if x != nil && x.RecipientType != nil { return *x.RecipientType } return 0 } func (x *CDOTAUserMsg_UnitEvent_Speech) GetLevel() int32 { if x != nil && x.Level != nil { return *x.Level } return 0 } func (x *CDOTAUserMsg_UnitEvent_Speech) GetMuteable() bool { if x != nil && x.Muteable != nil { return *x.Muteable } return Default_CDOTAUserMsg_UnitEvent_Speech_Muteable } func (x *CDOTAUserMsg_UnitEvent_Speech) GetPredelay() *CDOTAUserMsg_UnitEvent_Interval { if x != nil { return x.Predelay } return nil } func (x *CDOTAUserMsg_UnitEvent_Speech) GetFlags() uint32 { if x != nil && x.Flags != nil { return *x.Flags } return 0 } type CDOTAUserMsg_UnitEvent_SpeechMute struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Delay *float32 `protobuf:"fixed32,1,opt,name=delay,def=0.5" json:"delay,omitempty"` } // Default values for CDOTAUserMsg_UnitEvent_SpeechMute fields. const ( Default_CDOTAUserMsg_UnitEvent_SpeechMute_Delay = float32(0.5) ) func (x *CDOTAUserMsg_UnitEvent_SpeechMute) Reset() { *x = CDOTAUserMsg_UnitEvent_SpeechMute{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[159] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_UnitEvent_SpeechMute) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_UnitEvent_SpeechMute) ProtoMessage() {} func (x *CDOTAUserMsg_UnitEvent_SpeechMute) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[159] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_UnitEvent_SpeechMute.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_UnitEvent_SpeechMute) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{43, 2} } func (x *CDOTAUserMsg_UnitEvent_SpeechMute) GetDelay() float32 { if x != nil && x.Delay != nil { return *x.Delay } return Default_CDOTAUserMsg_UnitEvent_SpeechMute_Delay } type CDOTAUserMsg_UnitEvent_AddGesture struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Activity *int32 `protobuf:"varint,1,opt,name=activity" json:"activity,omitempty"` Slot *int32 `protobuf:"varint,2,opt,name=slot" json:"slot,omitempty"` FadeIn *float32 `protobuf:"fixed32,3,opt,name=fade_in,json=fadeIn,def=0" json:"fade_in,omitempty"` FadeOut *float32 `protobuf:"fixed32,4,opt,name=fade_out,json=fadeOut,def=0.1" json:"fade_out,omitempty"` PlaybackRate *float32 `protobuf:"fixed32,5,opt,name=playback_rate,json=playbackRate,def=1" json:"playback_rate,omitempty"` SequenceVariant *int32 `protobuf:"varint,6,opt,name=sequence_variant,json=sequenceVariant" json:"sequence_variant,omitempty"` } // Default values for CDOTAUserMsg_UnitEvent_AddGesture fields. const ( Default_CDOTAUserMsg_UnitEvent_AddGesture_FadeIn = float32(0) Default_CDOTAUserMsg_UnitEvent_AddGesture_FadeOut = float32(0.10000000149011612) Default_CDOTAUserMsg_UnitEvent_AddGesture_PlaybackRate = float32(1) ) func (x *CDOTAUserMsg_UnitEvent_AddGesture) Reset() { *x = CDOTAUserMsg_UnitEvent_AddGesture{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[160] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_UnitEvent_AddGesture) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_UnitEvent_AddGesture) ProtoMessage() {} func (x *CDOTAUserMsg_UnitEvent_AddGesture) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[160] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_UnitEvent_AddGesture.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_UnitEvent_AddGesture) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{43, 3} } func (x *CDOTAUserMsg_UnitEvent_AddGesture) GetActivity() int32 { if x != nil && x.Activity != nil { return *x.Activity } return 0 } func (x *CDOTAUserMsg_UnitEvent_AddGesture) GetSlot() int32 { if x != nil && x.Slot != nil { return *x.Slot } return 0 } func (x *CDOTAUserMsg_UnitEvent_AddGesture) GetFadeIn() float32 { if x != nil && x.FadeIn != nil { return *x.FadeIn } return Default_CDOTAUserMsg_UnitEvent_AddGesture_FadeIn } func (x *CDOTAUserMsg_UnitEvent_AddGesture) GetFadeOut() float32 { if x != nil && x.FadeOut != nil { return *x.FadeOut } return Default_CDOTAUserMsg_UnitEvent_AddGesture_FadeOut } func (x *CDOTAUserMsg_UnitEvent_AddGesture) GetPlaybackRate() float32 { if x != nil && x.PlaybackRate != nil { return *x.PlaybackRate } return Default_CDOTAUserMsg_UnitEvent_AddGesture_PlaybackRate } func (x *CDOTAUserMsg_UnitEvent_AddGesture) GetSequenceVariant() int32 { if x != nil && x.SequenceVariant != nil { return *x.SequenceVariant } return 0 } type CDOTAUserMsg_UnitEvent_RemoveGesture struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Activity *int32 `protobuf:"varint,1,opt,name=activity" json:"activity,omitempty"` } func (x *CDOTAUserMsg_UnitEvent_RemoveGesture) Reset() { *x = CDOTAUserMsg_UnitEvent_RemoveGesture{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[161] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_UnitEvent_RemoveGesture) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_UnitEvent_RemoveGesture) ProtoMessage() {} func (x *CDOTAUserMsg_UnitEvent_RemoveGesture) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[161] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_UnitEvent_RemoveGesture.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_UnitEvent_RemoveGesture) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{43, 4} } func (x *CDOTAUserMsg_UnitEvent_RemoveGesture) GetActivity() int32 { if x != nil && x.Activity != nil { return *x.Activity } return 0 } type CDOTAUserMsg_UnitEvent_BloodImpact struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Scale *int32 `protobuf:"varint,1,opt,name=scale" json:"scale,omitempty"` XNormal *int32 `protobuf:"varint,2,opt,name=x_normal,json=xNormal" json:"x_normal,omitempty"` YNormal *int32 `protobuf:"varint,3,opt,name=y_normal,json=yNormal" json:"y_normal,omitempty"` } func (x *CDOTAUserMsg_UnitEvent_BloodImpact) Reset() { *x = CDOTAUserMsg_UnitEvent_BloodImpact{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[162] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_UnitEvent_BloodImpact) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_UnitEvent_BloodImpact) ProtoMessage() {} func (x *CDOTAUserMsg_UnitEvent_BloodImpact) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[162] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_UnitEvent_BloodImpact.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_UnitEvent_BloodImpact) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{43, 5} } func (x *CDOTAUserMsg_UnitEvent_BloodImpact) GetScale() int32 { if x != nil && x.Scale != nil { return *x.Scale } return 0 } func (x *CDOTAUserMsg_UnitEvent_BloodImpact) GetXNormal() int32 { if x != nil && x.XNormal != nil { return *x.XNormal } return 0 } func (x *CDOTAUserMsg_UnitEvent_BloodImpact) GetYNormal() int32 { if x != nil && x.YNormal != nil { return *x.YNormal } return 0 } type CDOTAUserMsg_UnitEvent_FadeGesture struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Activity *int32 `protobuf:"varint,1,opt,name=activity" json:"activity,omitempty"` } func (x *CDOTAUserMsg_UnitEvent_FadeGesture) Reset() { *x = CDOTAUserMsg_UnitEvent_FadeGesture{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[163] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_UnitEvent_FadeGesture) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_UnitEvent_FadeGesture) ProtoMessage() {} func (x *CDOTAUserMsg_UnitEvent_FadeGesture) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[163] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_UnitEvent_FadeGesture.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_UnitEvent_FadeGesture) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{43, 6} } func (x *CDOTAUserMsg_UnitEvent_FadeGesture) GetActivity() int32 { if x != nil && x.Activity != nil { return *x.Activity } return 0 } type CDOTAUserMsg_StatsHeroPositionInfo_PositionPair struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PositionCategory *DOTA_POSITION_CATEGORY `protobuf:"varint,1,opt,name=position_category,json=positionCategory,enum=DOTA_POSITION_CATEGORY,def=0" json:"position_category,omitempty"` PositionCount *uint32 `protobuf:"varint,2,opt,name=position_count,json=positionCount" json:"position_count,omitempty"` } // Default values for CDOTAUserMsg_StatsHeroPositionInfo_PositionPair fields. const ( Default_CDOTAUserMsg_StatsHeroPositionInfo_PositionPair_PositionCategory = DOTA_POSITION_CATEGORY_DOTA_POSITION_NONE ) func (x *CDOTAUserMsg_StatsHeroPositionInfo_PositionPair) Reset() { *x = CDOTAUserMsg_StatsHeroPositionInfo_PositionPair{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[164] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsHeroPositionInfo_PositionPair) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsHeroPositionInfo_PositionPair) ProtoMessage() {} func (x *CDOTAUserMsg_StatsHeroPositionInfo_PositionPair) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[164] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsHeroPositionInfo_PositionPair.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsHeroPositionInfo_PositionPair) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{86, 0} } func (x *CDOTAUserMsg_StatsHeroPositionInfo_PositionPair) GetPositionCategory() DOTA_POSITION_CATEGORY { if x != nil && x.PositionCategory != nil { return *x.PositionCategory } return Default_CDOTAUserMsg_StatsHeroPositionInfo_PositionPair_PositionCategory } func (x *CDOTAUserMsg_StatsHeroPositionInfo_PositionPair) GetPositionCount() uint32 { if x != nil && x.PositionCount != nil { return *x.PositionCount } return 0 } type CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields LocationCategory *uint32 `protobuf:"varint,1,opt,name=location_category,json=locationCategory" json:"location_category,omitempty"` StatType *uint32 `protobuf:"varint,2,opt,name=stat_type,json=statType" json:"stat_type,omitempty"` Value *uint32 `protobuf:"varint,3,opt,name=value" json:"value,omitempty"` } func (x *CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance) Reset() { *x = CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[165] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance) ProtoMessage() {} func (x *CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[165] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{88, 0} } func (x *CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance) GetLocationCategory() uint32 { if x != nil && x.LocationCategory != nil { return *x.LocationCategory } return 0 } func (x *CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance) GetStatType() uint32 { if x != nil && x.StatType != nil { return *x.StatType } return 0 } func (x *CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance) GetValue() uint32 { if x != nil && x.Value != nil { return *x.Value } return 0 } type CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Participants []int32 `protobuf:"varint,1,rep,name=participants" json:"participants,omitempty"` Deaths []int32 `protobuf:"varint,2,rep,name=deaths" json:"deaths,omitempty"` GoldDelta *uint32 `protobuf:"varint,3,opt,name=gold_delta,json=goldDelta" json:"gold_delta,omitempty"` XpDelta *uint32 `protobuf:"varint,4,opt,name=xp_delta,json=xpDelta" json:"xp_delta,omitempty"` } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails) Reset() { *x = CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[166] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails) ProtoMessage() {} func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[166] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{91, 0} } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails) GetParticipants() []int32 { if x != nil { return x.Participants } return nil } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails) GetDeaths() []int32 { if x != nil { return x.Deaths } return nil } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails) GetGoldDelta() uint32 { if x != nil && x.GoldDelta != nil { return *x.GoldDelta } return 0 } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails) GetXpDelta() uint32 { if x != nil && x.XpDelta != nil { return *x.XpDelta } return 0 } type CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StartTime *float32 `protobuf:"fixed32,1,opt,name=start_time,json=startTime" json:"start_time,omitempty"` EndTime *float32 `protobuf:"fixed32,2,opt,name=end_time,json=endTime" json:"end_time,omitempty"` RadiantFightDetails *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails `protobuf:"bytes,3,opt,name=radiant_fight_details,json=radiantFightDetails" json:"radiant_fight_details,omitempty"` DireFightDetails *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails `protobuf:"bytes,4,opt,name=dire_fight_details,json=direFightDetails" json:"dire_fight_details,omitempty"` } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails) Reset() { *x = CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[167] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails) ProtoMessage() {} func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[167] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{91, 1} } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails) GetStartTime() float32 { if x != nil && x.StartTime != nil { return *x.StartTime } return 0 } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails) GetEndTime() float32 { if x != nil && x.EndTime != nil { return *x.EndTime } return 0 } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails) GetRadiantFightDetails() *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails { if x != nil { return x.RadiantFightDetails } return nil } func (x *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails) GetDireFightDetails() *CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails { if x != nil { return x.DireFightDetails } return nil } type CDOTAUserMsg_AllStarEvent_PlayerScore struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` ScoreSansKda *uint32 `protobuf:"varint,2,opt,name=score_sans_kda,json=scoreSansKda" json:"score_sans_kda,omitempty"` } func (x *CDOTAUserMsg_AllStarEvent_PlayerScore) Reset() { *x = CDOTAUserMsg_AllStarEvent_PlayerScore{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[168] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_AllStarEvent_PlayerScore) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_AllStarEvent_PlayerScore) ProtoMessage() {} func (x *CDOTAUserMsg_AllStarEvent_PlayerScore) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[168] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_AllStarEvent_PlayerScore.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_AllStarEvent_PlayerScore) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{131, 0} } func (x *CDOTAUserMsg_AllStarEvent_PlayerScore) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_AllStarEvent_PlayerScore) GetScoreSansKda() uint32 { if x != nil && x.ScoreSansKda != nil { return *x.ScoreSansKda } return 0 } type CDOTAUserMsg_PauseMinigameData_DataBit struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Index *uint32 `protobuf:"varint,1,opt,name=index" json:"index,omitempty"` Data *int32 `protobuf:"varint,2,opt,name=data" json:"data,omitempty"` DataExtra *int64 `protobuf:"varint,3,opt,name=data_extra,json=dataExtra" json:"data_extra,omitempty"` } func (x *CDOTAUserMsg_PauseMinigameData_DataBit) Reset() { *x = CDOTAUserMsg_PauseMinigameData_DataBit{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[169] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_PauseMinigameData_DataBit) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_PauseMinigameData_DataBit) ProtoMessage() {} func (x *CDOTAUserMsg_PauseMinigameData_DataBit) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[169] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_PauseMinigameData_DataBit.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_PauseMinigameData_DataBit) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{138, 0} } func (x *CDOTAUserMsg_PauseMinigameData_DataBit) GetIndex() uint32 { if x != nil && x.Index != nil { return *x.Index } return 0 } func (x *CDOTAUserMsg_PauseMinigameData_DataBit) GetData() int32 { if x != nil && x.Data != nil { return *x.Data } return 0 } func (x *CDOTAUserMsg_PauseMinigameData_DataBit) GetDataExtra() int64 { if x != nil && x.DataExtra != nil { return *x.DataExtra } return 0 } type CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields PlayerId *int32 `protobuf:"varint,1,opt,name=player_id,json=playerId" json:"player_id,omitempty"` Progress *uint32 `protobuf:"varint,6,opt,name=progress" json:"progress,omitempty"` } func (x *CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress) Reset() { *x = CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress{} if protoimpl.UnsafeEnabled { mi := &file_dota_usermessages_proto_msgTypes[170] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress) String() string { return protoimpl.X.MessageStringOf(x) } func (*CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress) ProtoMessage() {} func (x *CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress) ProtoReflect() protoreflect.Message { mi := &file_dota_usermessages_proto_msgTypes[170] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress.ProtoReflect.Descriptor instead. func (*CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress) Descriptor() ([]byte, []int) { return file_dota_usermessages_proto_rawDescGZIP(), []int{144, 0} } func (x *CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress) GetPlayerId() int32 { if x != nil && x.PlayerId != nil { return *x.PlayerId } return 0 } func (x *CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress) GetProgress() uint32 { if x != nil && x.Progress != nil { return *x.Progress } return 0 } var File_dota_usermessages_proto protoreflect.FileDescriptor var file_dota_usermessages_proto_rawDesc = []byte{ 0x0a, 0x17, 0x64, 0x6f, 0x74, 0x61, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x16, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x62, 0x61, 0x73, 0x65, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x64, 0x6f, 0x74, 0x61, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x19, 0x64, 0x6f, 0x74, 0x61, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x34, 0x0a, 0x18, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x41, 0x49, 0x44, 0x65, 0x62, 0x75, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x3b, 0x0a, 0x11, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x6f, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x6c, 0x6f, 0x73, 0x73, 0x22, 0x36, 0x0a, 0x17, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x77, 0x61, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0xee, 0x02, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x3a, 0x14, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x21, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x5f, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x31, 0x12, 0x21, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x5f, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x32, 0x12, 0x21, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x5f, 0x33, 0x18, 0x05, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x33, 0x12, 0x21, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x5f, 0x34, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x34, 0x12, 0x21, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x5f, 0x35, 0x18, 0x07, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x35, 0x12, 0x21, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x5f, 0x36, 0x18, 0x08, 0x20, 0x01, 0x28, 0x11, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x69, 0x64, 0x36, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x32, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x33, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x33, 0x22, 0x82, 0x01, 0x0a, 0x14, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x42, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x65, 0x61, 0x6d, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x90, 0x01, 0x0a, 0x20, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x5f, 0x70, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x32, 0x44, 0x52, 0x08, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x50, 0x6f, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x22, 0xb7, 0x01, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x3e, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x44, 0x4f, 0x54, 0x41, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0d, 0x63, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x45, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0x71, 0x0a, 0x25, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x50, 0x44, 0x61, 0x74, 0x61, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x5f, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x76, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x22, 0xe5, 0x02, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x69, 0x6e, 0x69, 0x4b, 0x69, 0x6c, 0x6c, 0x43, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x44, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x69, 0x6e, 0x69, 0x4b, 0x69, 0x6c, 0x6c, 0x43, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x52, 0x09, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x73, 0x1a, 0xfe, 0x01, 0x0a, 0x08, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x4c, 0x0a, 0x09, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x69, 0x6e, 0x69, 0x4b, 0x69, 0x6c, 0x6c, 0x43, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x2e, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x09, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x1a, 0x40, 0x0a, 0x07, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x22, 0x51, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x6a, 0x0a, 0x21, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x75, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x3b, 0x0a, 0x0d, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x4d, 0x73, 0x67, 0x5f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x0c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x69, 0x6e, 0x67, 0x22, 0xc8, 0x01, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3e, 0x0a, 0x1c, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x6f, 0x66, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x4f, 0x66, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x50, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x63, 0x6f, 0x6e, 0x54, 0x79, 0x70, 0x65, 0x12, 0x27, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x69, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x0a, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x4d, 0x73, 0x67, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x52, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x22, 0xcb, 0x02, 0x0a, 0x1b, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x45, 0x6e, 0x65, 0x6d, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x09, 0x72, 0x75, 0x6e, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x08, 0x72, 0x75, 0x6e, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0a, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x2b, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x12, 0x2f, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x3a, 0x02, 0x2d, 0x31, 0x52, 0x10, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x22, 0xec, 0x01, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x64, 0x65, 0x62, 0x75, 0x66, 0x66, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x44, 0x65, 0x62, 0x75, 0x66, 0x66, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0x88, 0x01, 0x0a, 0x18, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x48, 0x50, 0x4d, 0x61, 0x6e, 0x61, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, 0x0a, 0x0f, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x72, 0x61, 0x77, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x73, 0x68, 0x6f, 0x77, 0x52, 0x61, 0x77, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x52, 0x0a, 0x17, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x47, 0x6c, 0x79, 0x70, 0x68, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0x52, 0x0a, 0x17, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x52, 0x61, 0x64, 0x61, 0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x6e, 0x65, 0x67, 0x61, 0x74, 0x69, 0x76, 0x65, 0x22, 0xbe, 0x01, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x57, 0x69, 0x6c, 0x6c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x67, 0x6f, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x67, 0x6f, 0x6c, 0x64, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x73, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0xa0, 0x01, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0x98, 0x01, 0x0a, 0x23, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x61, 0x72, 0x73, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x4f, 0x66, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x77, 0x61, 0x72, 0x72, 0x69, 0x6f, 0x72, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x77, 0x61, 0x72, 0x72, 0x69, 0x6f, 0x72, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x72, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x73, 0x67, 0x5f, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x72, 0x53, 0x70, 0x65, 0x6c, 0x6c, 0x43, 0x61, 0x73, 0x74, 0x12, 0x2a, 0x0a, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x73, 0x67, 0x52, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x73, 0x67, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x61, 0x73, 0x74, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x3d, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x42, 0x75, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0xd5, 0x01, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x51, 0x75, 0x69, 0x63, 0x6b, 0x42, 0x75, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x67, 0x6f, 0x6c, 0x64, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x6f, 0x6c, 0x64, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x69, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x62, 0x75, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x68, 0x6f, 0x77, 0x42, 0x75, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x22, 0x85, 0x03, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x4b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x67, 0x6f, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x48, 0x0a, 0x0a, 0x6c, 0x6f, 0x73, 0x74, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x4b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x2e, 0x4c, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x09, 0x6c, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x73, 0x12, 0x28, 0x0a, 0x10, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x6f, 0x77, 0x6e, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x1a, 0x4e, 0x0a, 0x08, 0x4c, 0x6f, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0xc9, 0x01, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x0c, 0x0a, 0x01, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x78, 0x12, 0x0c, 0x0a, 0x01, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x01, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x30, 0x0a, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x60, 0x0a, 0x14, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x61, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2b, 0x0a, 0x07, 0x6d, 0x61, 0x70, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x61, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x07, 0x6d, 0x61, 0x70, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x70, 0x44, 0x65, 0x62, 0x75, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xff, 0x03, 0x0a, 0x23, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x29, 0x0a, 0x08, 0x76, 0x65, 0x6c, 0x6f, 0x63, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x32, 0x44, 0x52, 0x08, 0x76, 0x65, 0x6c, 0x6f, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0d, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x31, 0x0a, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x32, 0x44, 0x52, 0x0c, 0x61, 0x63, 0x63, 0x65, 0x6c, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x6d, 0x61, 0x78, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x66, 0x6f, 0x77, 0x5f, 0x72, 0x61, 0x64, 0x69, 0x75, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x66, 0x6f, 0x77, 0x52, 0x61, 0x64, 0x69, 0x75, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x79, 0x5f, 0x66, 0x6f, 0x77, 0x5f, 0x72, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x74, 0x69, 0x63, 0x6b, 0x79, 0x46, 0x6f, 0x77, 0x52, 0x65, 0x76, 0x65, 0x61, 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x67, 0x65, 0x6d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x67, 0x65, 0x6d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x50, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x5f, 0x63, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x50, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0x3e, 0x0a, 0x24, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x4c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x66, 0x0a, 0x25, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x44, 0x6f, 0x64, 0x67, 0x65, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x73, 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x81, 0x01, 0x0a, 0x21, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xb9, 0x02, 0x0a, 0x26, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x05, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x08, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x71, 0x75, 0x65, 0x75, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x22, 0x99, 0x01, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4e, 0x65, 0x76, 0x65, 0x72, 0x6d, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x65, 0x6d, 0x12, 0x23, 0x0a, 0x0d, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x22, 0x60, 0x0a, 0x1b, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x5b, 0x0a, 0x15, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x48, 0x75, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x1b, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x35, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x65, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x62, 0x75, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x78, 0x0a, 0x1b, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x48, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x65, 0x6e, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x65, 0x66, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x44, 0x65, 0x66, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x70, 0x72, 0x69, 0x7a, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x22, 0xf5, 0x03, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x12, 0x4b, 0x0a, 0x0b, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0b, 0x70, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x1a, 0xb2, 0x02, 0x0a, 0x0a, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x65, 0x66, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x44, 0x65, 0x66, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, 0x6d, 0x5f, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6e, 0x75, 0x6d, 0x43, 0x6f, 0x72, 0x72, 0x65, 0x63, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x75, 0x6d, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6e, 0x75, 0x6d, 0x46, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x60, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x31, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2e, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x3a, 0x15, 0x6b, 0x5f, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2a, 0x0a, 0x11, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x64, 0x65, 0x66, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x44, 0x65, 0x66, 0x73, 0x22, 0x3d, 0x0a, 0x07, 0x45, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x19, 0x0a, 0x15, 0x6b, 0x5f, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x6b, 0x5f, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x65, 0x64, 0x10, 0x02, 0x22, 0xae, 0x03, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x05, 0x66, 0x61, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x2e, 0x46, 0x61, 0x63, 0x74, 0x52, 0x05, 0x66, 0x61, 0x63, 0x74, 0x73, 0x1a, 0xd3, 0x02, 0x0a, 0x04, 0x46, 0x61, 0x63, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x4f, 0x0a, 0x07, 0x76, 0x61, 0x6c, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x2e, 0x46, 0x61, 0x63, 0x74, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x07, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x52, 0x07, 0x76, 0x61, 0x6c, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x76, 0x61, 0x6c, 0x5f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x76, 0x61, 0x6c, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x12, 0x1d, 0x0a, 0x0a, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x32, 0x0a, 0x15, 0x76, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x13, 0x76, 0x61, 0x6c, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x26, 0x0a, 0x0f, 0x76, 0x61, 0x6c, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x11, 0x52, 0x0d, 0x76, 0x61, 0x6c, 0x49, 0x6e, 0x74, 0x4e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x22, 0x4c, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x01, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x54, 0x52, 0x49, 0x4e, 0x47, 0x54, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x49, 0x4e, 0x44, 0x45, 0x58, 0x10, 0x03, 0x12, 0x0f, 0x0a, 0x0b, 0x49, 0x4e, 0x54, 0x5f, 0x4e, 0x55, 0x4d, 0x45, 0x52, 0x49, 0x43, 0x10, 0x04, 0x22, 0xd0, 0x01, 0x0a, 0x18, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x70, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x64, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x21, 0x0a, 0x0a, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x73, 0x65, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0f, 0x3a, 0x01, 0x30, 0x52, 0x0a, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x73, 0x65, 0x65, 0x64, 0x22, 0xd2, 0x0a, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x41, 0x0a, 0x08, 0x6d, 0x73, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x45, 0x44, 0x6f, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x3a, 0x10, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x52, 0x07, 0x6d, 0x73, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x02, 0x28, 0x05, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x36, 0x0a, 0x06, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x52, 0x06, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x12, 0x43, 0x0a, 0x0b, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x4d, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x4d, 0x75, 0x74, 0x65, 0x12, 0x43, 0x0a, 0x0b, 0x61, 0x64, 0x64, 0x5f, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x64, 0x64, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0a, 0x61, 0x64, 0x64, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x4c, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x46, 0x0a, 0x0c, 0x62, 0x6c, 0x6f, 0x6f, 0x64, 0x5f, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x52, 0x0b, 0x62, 0x6c, 0x6f, 0x6f, 0x64, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x46, 0x0a, 0x0c, 0x66, 0x61, 0x64, 0x65, 0x5f, 0x67, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x46, 0x61, 0x64, 0x65, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x52, 0x0b, 0x66, 0x61, 0x64, 0x65, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x4e, 0x0a, 0x16, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x6f, 0x6e, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x52, 0x13, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4f, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x1a, 0x36, 0x0a, 0x08, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x1a, 0xff, 0x01, 0x0a, 0x06, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x65, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, 0x70, 0x65, 0x65, 0x63, 0x68, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x70, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x72, 0x65, 0x63, 0x69, 0x70, 0x69, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x21, 0x0a, 0x08, 0x6d, 0x75, 0x74, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x3a, 0x05, 0x66, 0x61, 0x6c, 0x73, 0x65, 0x52, 0x08, 0x6d, 0x75, 0x74, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x70, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x52, 0x08, 0x70, 0x72, 0x65, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x1a, 0x27, 0x0a, 0x0a, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x4d, 0x75, 0x74, 0x65, 0x12, 0x19, 0x0a, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x03, 0x30, 0x2e, 0x35, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x1a, 0xcb, 0x01, 0x0a, 0x0a, 0x41, 0x64, 0x64, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x1a, 0x0a, 0x07, 0x66, 0x61, 0x64, 0x65, 0x5f, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x01, 0x30, 0x52, 0x06, 0x66, 0x61, 0x64, 0x65, 0x49, 0x6e, 0x12, 0x1e, 0x0a, 0x08, 0x66, 0x61, 0x64, 0x65, 0x5f, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x03, 0x30, 0x2e, 0x31, 0x52, 0x07, 0x66, 0x61, 0x64, 0x65, 0x4f, 0x75, 0x74, 0x12, 0x26, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x3a, 0x01, 0x31, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x1a, 0x2b, 0x0a, 0x0d, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x1a, 0x59, 0x0a, 0x0b, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x78, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x78, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x79, 0x5f, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x79, 0x4e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x1a, 0x29, 0x0a, 0x0b, 0x46, 0x61, 0x64, 0x65, 0x47, 0x65, 0x73, 0x74, 0x75, 0x72, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x22, 0x44, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x15, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x6f, 0x6c, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x94, 0x01, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x61, 0x72, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x72, 0x61, 0x72, 0x69, 0x74, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x64, 0x65, 0x66, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x69, 0x74, 0x65, 0x6d, 0x64, 0x65, 0x66, 0x22, 0x95, 0x02, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x4c, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x3a, 0x13, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x47, 0x4f, 0x4c, 0x44, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x34, 0x0a, 0x16, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x4e, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x54, 0x69, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x7d, 0x0a, 0x1b, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x12, 0x18, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x65, 0x6d, 0x62, 0x6c, 0x65, 0x6d, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0x26, 0x0a, 0x24, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x7d, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x6f, 0x6f, 0x6c, 0x54, 0x69, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x14, 0x0a, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x22, 0x68, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x09, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x4d, 0x73, 0x67, 0x5f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x52, 0x09, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x22, 0xc1, 0x01, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x22, 0x0a, 0x0d, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x65, 0x6d, 0x6f, 0x74, 0x69, 0x63, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x80, 0x01, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x58, 0x6d, 0x61, 0x73, 0x47, 0x69, 0x66, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x69, 0x6e, 0x76, 0x65, 0x6e, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x6c, 0x6f, 0x74, 0x22, 0xf7, 0x01, 0x0a, 0x17, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x75, 0x72, 0x76, 0x65, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x75, 0x72, 0x76, 0x65, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x75, 0x72, 0x76, 0x65, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x79, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x53, 0x74, 0x79, 0x6c, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x65, 0x61, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x5f, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x74, 0x65, 0x61, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x65, 0x61, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x74, 0x65, 0x61, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x65, 0x61, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x74, 0x65, 0x61, 0x6d, 0x6d, 0x61, 0x74, 0x65, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3f, 0x0a, 0x20, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x73, 0x6c, 0x6f, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0x21, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x45, 0x78, 0x70, 0x22, 0x38, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x46, 0x61, 0x64, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x67, 0x74, 0x5f, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x74, 0x67, 0x74, 0x41, 0x6c, 0x70, 0x68, 0x61, 0x22, 0xa1, 0x01, 0x0a, 0x20, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x5f, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x58, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x5f, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x59, 0x12, 0x13, 0x0a, 0x05, 0x70, 0x6f, 0x73, 0x5f, 0x7a, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x04, 0x70, 0x6f, 0x73, 0x5a, 0x12, 0x21, 0x0a, 0x0c, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x3a, 0x0a, 0x22, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x59, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x41, 0x64, 0x64, 0x51, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x6e, 0x70, 0x63, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6e, 0x70, 0x63, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, 0x70, 0x63, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6e, 0x70, 0x63, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x22, 0x70, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x50, 0x6f, 0x70, 0x75, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x35, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x70, 0x6f, 0x70, 0x75, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x50, 0x6f, 0x70, 0x75, 0x70, 0x52, 0x09, 0x73, 0x74, 0x61, 0x74, 0x70, 0x6f, 0x70, 0x75, 0x70, 0x22, 0x69, 0x0a, 0x21, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x50, 0x6f, 0x70, 0x75, 0x70, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x61, 0x6c, 0x6c, 0x6d, 0x73, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x4d, 0x73, 0x67, 0x5f, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x50, 0x6f, 0x70, 0x75, 0x70, 0x73, 0x52, 0x0d, 0x64, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x61, 0x6c, 0x6c, 0x6d, 0x73, 0x67, 0x22, 0xb3, 0x01, 0x0a, 0x25, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x6f, 0x73, 0x68, 0x61, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, 0x61, 0x73, 0x65, 0x12, 0x3d, 0x0a, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x12, 0x2e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x52, 0x4f, 0x53, 0x48, 0x41, 0x4e, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x3a, 0x13, 0x6b, 0x5f, 0x53, 0x52, 0x53, 0x50, 0x5f, 0x52, 0x4f, 0x53, 0x48, 0x41, 0x4e, 0x5f, 0x41, 0x4c, 0x49, 0x56, 0x45, 0x52, 0x05, 0x70, 0x68, 0x61, 0x73, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x70, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x68, 0x61, 0x73, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x68, 0x61, 0x73, 0x65, 0x5f, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x70, 0x68, 0x61, 0x73, 0x65, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x22, 0x58, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x6f, 0x73, 0x68, 0x61, 0x6e, 0x50, 0x6f, 0x70, 0x75, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x22, 0x6a, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0c, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x75, 0x6e, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x75, 0x6e, 0x72, 0x65, 0x6c, 0x69, 0x61, 0x62, 0x6c, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x22, 0x65, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6b, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x48, 0x55, 0x44, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x08, 0x68, 0x75, 0x64, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x48, 0x55, 0x44, 0x50, 0x69, 0x6e, 0x67, 0x52, 0x07, 0x68, 0x75, 0x64, 0x50, 0x69, 0x6e, 0x67, 0x22, 0x20, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x69, 0x64, 0x4e, 0x61, 0x76, 0x22, 0xad, 0x04, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x45, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x6f, 0x64, 0x67, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x6f, 0x64, 0x67, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x6d, 0x61, 0x78, 0x69, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x67, 0x65, 0x6d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x67, 0x65, 0x6d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x12, 0x50, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x5f, 0x63, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x50, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0xb6, 0x04, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x45, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x12, 0x2a, 0x0a, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6c, 0x6f, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4c, 0x6f, 0x63, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x6f, 0x76, 0x65, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x6d, 0x6f, 0x76, 0x65, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x34, 0x0a, 0x16, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x6f, 0x64, 0x67, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x64, 0x6f, 0x64, 0x67, 0x65, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x65, 0x78, 0x70, 0x69, 0x72, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x2a, 0x0a, 0x0a, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6c, 0x6f, 0x63, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4c, 0x6f, 0x63, 0x12, 0x24, 0x0a, 0x0d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x67, 0x65, 0x6d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x07, 0x52, 0x0d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x67, 0x65, 0x6d, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x5f, 0x74, 0x69, 0x63, 0x6b, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6c, 0x61, 0x75, 0x6e, 0x63, 0x68, 0x54, 0x69, 0x63, 0x6b, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x50, 0x0a, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x5f, 0x63, 0x70, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x18, 0x10, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x50, 0x44, 0x61, 0x74, 0x61, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x43, 0x70, 0x44, 0x61, 0x74, 0x61, 0x22, 0x3b, 0x0a, 0x21, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x45, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0x83, 0x01, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x45, 0x5f, 0x44, 0x6f, 0x74, 0x61, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x78, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x78, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x79, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x79, 0x6e, 0x6f, 0x72, 0x6d, 0x61, 0x6c, 0x22, 0xc6, 0x03, 0x0a, 0x18, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x3f, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x3a, 0x12, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x61, 0x73, 0x73, 0x69, 0x76, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x5f, 0x6e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x4e, 0x65, 0x65, 0x64, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x70, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x5f, 0x63, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x74, 0x72, 0x6c, 0x5f, 0x68, 0x65, 0x6c, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x74, 0x72, 0x6c, 0x48, 0x65, 0x6c, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x72, 0x65, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x88, 0x02, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x45, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x56, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x72, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x61, 0x73, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x63, 0x61, 0x73, 0x74, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x32, 0x0a, 0x15, 0x6c, 0x61, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x13, 0x6c, 0x61, 0x67, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x73, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x22, 0x4e, 0x0a, 0x20, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x45, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6e, 0x61, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x6e, 0x61, 0x70, 0x22, 0xcf, 0x01, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x68, 0x6f, 0x77, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x70, 0x75, 0x70, 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x02, 0x28, 0x09, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x18, 0x02, 0x20, 0x02, 0x28, 0x09, 0x52, 0x04, 0x62, 0x6f, 0x64, 0x79, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x31, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x31, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x69, 0x6e, 0x74, 0x5f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x69, 0x6e, 0x74, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x12, 0x31, 0x0a, 0x15, 0x73, 0x68, 0x6f, 0x77, 0x5f, 0x6e, 0x6f, 0x5f, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x5f, 0x64, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x12, 0x73, 0x68, 0x6f, 0x77, 0x4e, 0x6f, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x44, 0x69, 0x61, 0x6c, 0x6f, 0x67, 0x73, 0x22, 0x87, 0x01, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x56, 0x6f, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x69, 0x74, 0x6c, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x73, 0x22, 0x3e, 0x0a, 0x17, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x56, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x22, 0x3f, 0x0a, 0x14, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x56, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x43, 0x68, 0x6f, 0x69, 0x63, 0x65, 0x22, 0xc8, 0x01, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x12, 0x22, 0x0a, 0x0d, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x13, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x6f, 0x6e, 0x75, 0x73, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x6f, 0x6e, 0x75, 0x73, 0x49, 0x74, 0x65, 0x6d, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x49, 0x0a, 0x0f, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x0e, 0x62, 0x6f, 0x6f, 0x73, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x2e, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x4d, 0x52, 0x12, 0x14, 0x0a, 0x03, 0x6d, 0x6d, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x11, 0x42, 0x02, 0x10, 0x01, 0x52, 0x03, 0x6d, 0x6d, 0x72, 0x22, 0x7c, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x74, 0x65, 0x61, 0x6c, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x8b, 0x01, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x65, 0x72, 0x6f, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x65, 0x72, 0x73, 0x6f, 0x6e, 0x61, 0x22, 0xbe, 0x02, 0x0a, 0x22, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0f, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x5b, 0x0a, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x2e, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x52, 0x0f, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x8f, 0x01, 0x0a, 0x0c, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x61, 0x69, 0x72, 0x12, 0x58, 0x0a, 0x11, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x3a, 0x12, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x52, 0x10, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xcc, 0x04, 0x0a, 0x23, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x68, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6c, 0x61, 0x73, 0x74, 0x48, 0x69, 0x74, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x68, 0x65, 0x72, 0x6f, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x6f, 0x77, 0x65, 0x72, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x12, 0x48, 0x0a, 0x0d, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x78, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x58, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x6e, 0x65, 0x74, 0x5f, 0x77, 0x6f, 0x72, 0x74, 0x68, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x6e, 0x65, 0x74, 0x57, 0x6f, 0x72, 0x74, 0x68, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x61, 0x72, 0x76, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x63, 0x72, 0x65, 0x65, 0x70, 0x5f, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x68, 0x61, 0x72, 0x76, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x72, 0x65, 0x65, 0x70, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x5f, 0x66, 0x61, 0x72, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x6c, 0x61, 0x69, 0x6d, 0x65, 0x64, 0x46, 0x61, 0x72, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x77, 0x61, 0x72, 0x64, 0x73, 0x5f, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x77, 0x61, 0x72, 0x64, 0x73, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x72, 0x75, 0x6e, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x72, 0x75, 0x6e, 0x65, 0x73, 0x43, 0x6f, 0x6c, 0x6c, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x70, 0x73, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x74, 0x70, 0x73, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x61, 0x6e, 0x61, 0x5f, 0x73, 0x70, 0x65, 0x6e, 0x74, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x09, 0x6d, 0x61, 0x6e, 0x61, 0x53, 0x70, 0x65, 0x6e, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x62, 0x73, 0x6f, 0x72, 0x62, 0x65, 0x64, 0x18, 0x0e, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0e, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x62, 0x73, 0x6f, 0x72, 0x62, 0x65, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x6f, 0x6e, 0x65, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x0a, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x6f, 0x6e, 0x65, 0x22, 0xb7, 0x05, 0x0a, 0x23, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x47, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x65, 0x72, 0x6f, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x74, 0x6f, 0x77, 0x65, 0x72, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x62, 0x61, 0x72, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x62, 0x61, 0x72, 0x72, 0x61, 0x63, 0x6b, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x39, 0x0a, 0x19, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x63, 0x72, 0x65, 0x65, 0x70, 0x5f, 0x67, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x16, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x4c, 0x61, 0x6e, 0x65, 0x43, 0x72, 0x65, 0x65, 0x70, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x4b, 0x69, 0x6c, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x0a, 0x13, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x74, 0x6f, 0x77, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x11, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x54, 0x6f, 0x77, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x34, 0x0a, 0x16, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x62, 0x61, 0x72, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x14, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x42, 0x61, 0x72, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x67, 0x6f, 0x6c, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x47, 0x6f, 0x6c, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x78, 0x70, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x58, 0x70, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x63, 0x0a, 0x10, 0x6c, 0x61, 0x6e, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x0f, 0x6c, 0x61, 0x6e, 0x65, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x1a, 0x75, 0x0a, 0x13, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x2b, 0x0a, 0x11, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xfc, 0x01, 0x0a, 0x21, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x10, 0x6b, 0x69, 0x6c, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x65, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x6f, 0x63, 0x58, 0x12, 0x20, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x6c, 0x6f, 0x63, 0x5f, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4c, 0x6f, 0x63, 0x59, 0x12, 0x25, 0x0a, 0x0e, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0d, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x61, 0x6e, 0x61, 0x5f, 0x70, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x6d, 0x61, 0x6e, 0x61, 0x50, 0x65, 0x72, 0x63, 0x65, 0x6e, 0x74, 0x22, 0x8e, 0x02, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6d, 0x49, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x6b, 0x69, 0x6c, 0x6c, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4b, 0x69, 0x6c, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x65, 0x52, 0x0a, 0x6b, 0x69, 0x6c, 0x6c, 0x53, 0x68, 0x61, 0x72, 0x65, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x4b, 0x69, 0x6c, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x5f, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x65, 0x61, 0x74, 0x68, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x64, 0x65, 0x61, 0x74, 0x68, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x72, 0x49, 0x64, 0x22, 0xbd, 0x07, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x3e, 0x0a, 0x0b, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x6c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x65, 0x72, 0x6f, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x52, 0x0a, 0x68, 0x65, 0x72, 0x6f, 0x4c, 0x6f, 0x6f, 0x6b, 0x75, 0x70, 0x12, 0x49, 0x0a, 0x0d, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0c, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x54, 0x65, 0x61, 0x6d, 0x4d, 0x69, 0x6e, 0x75, 0x74, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x43, 0x0a, 0x0d, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0c, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x74, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x3d, 0x0a, 0x0a, 0x64, 0x69, 0x72, 0x65, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4b, 0x69, 0x6c, 0x6c, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x09, 0x64, 0x69, 0x72, 0x65, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x12, 0x63, 0x0a, 0x0d, 0x66, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3e, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0c, 0x66, 0x69, 0x67, 0x68, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x1a, 0x9a, 0x01, 0x0a, 0x22, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x69, 0x67, 0x68, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x06, 0x64, 0x65, 0x61, 0x74, 0x68, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x67, 0x6f, 0x6c, 0x64, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x67, 0x6f, 0x6c, 0x64, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x12, 0x19, 0x0a, 0x08, 0x78, 0x70, 0x5f, 0x64, 0x65, 0x6c, 0x74, 0x61, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x78, 0x70, 0x44, 0x65, 0x6c, 0x74, 0x61, 0x1a, 0xc4, 0x02, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x74, 0x61, 0x72, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x73, 0x74, 0x61, 0x72, 0x74, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x76, 0x0a, 0x15, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x74, 0x5f, 0x66, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x69, 0x67, 0x68, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x13, 0x72, 0x61, 0x64, 0x69, 0x61, 0x6e, 0x74, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x70, 0x0a, 0x12, 0x64, 0x69, 0x72, 0x65, 0x5f, 0x66, 0x69, 0x67, 0x68, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x46, 0x69, 0x67, 0x68, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x10, 0x64, 0x69, 0x72, 0x65, 0x46, 0x69, 0x67, 0x68, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x46, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x69, 0x6e, 0x69, 0x54, 0x61, 0x75, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x74, 0x61, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x61, 0x75, 0x6e, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0x3c, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x42, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x5f, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x64, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x41, 0x6c, 0x6c, 0x22, 0x8b, 0x01, 0x0a, 0x20, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x08, 0x64, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x96, 0x01, 0x0a, 0x13, 0x43, 0x4d, 0x73, 0x67, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x12, 0x41, 0x0a, 0x09, 0x73, 0x74, 0x61, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x0e, 0x2e, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x14, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x52, 0x08, 0x73, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x81, 0x01, 0x0a, 0x1c, 0x43, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x12, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x52, 0x10, 0x68, 0x65, 0x72, 0x6f, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x76, 0x0a, 0x17, 0x43, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x49, 0x64, 0x12, 0x40, 0x0a, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x41, 0x6e, 0x61, 0x6c, 0x79, 0x7a, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x52, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x22, 0x76, 0x0a, 0x16, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x42, 0x65, 0x61, 0x73, 0x74, 0x43, 0x68, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x16, 0x0a, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0x82, 0x01, 0x0a, 0x24, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x75, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x6c, 0x61, 0x79, 0x6f, 0x75, 0x74, 0x46, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x80, 0x01, 0x0a, 0x24, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x75, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x5f, 0x76, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x56, 0x69, 0x73, 0x69, 0x62, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0x46, 0x0a, 0x25, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x75, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x57, 0x0a, 0x22, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x72, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x52, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x75, 0x6d, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x11, 0x63, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x75, 0x6d, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0xc1, 0x02, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x65, 0x6e, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x45, 0x6e, 0x64, 0x12, 0x23, 0x0a, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0b, 0x2e, 0x43, 0x4d, 0x73, 0x67, 0x56, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x52, 0x06, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x43, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x07, 0x65, 0x6e, 0x64, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6d, 0x5f, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x76, 0x69, 0x63, 0x74, 0x69, 0x6d, 0x45, 0x6e, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x70, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e, 0x45, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x3a, 0x0e, 0x65, 0x50, 0x45, 0x5f, 0x46, 0x69, 0x72, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x22, 0x5c, 0x0a, 0x14, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x58, 0x50, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0xb1, 0x01, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x65, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x73, 0x6c, 0x6f, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x6c, 0x65, 0x61, 0x72, 0x6e, 0x65, 0x64, 0x22, 0x22, 0x0a, 0x20, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x88, 0x02, 0x0a, 0x18, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x51, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x67, 0x6f, 0x61, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x66, 0x61, 0x69, 0x6c, 0x5f, 0x67, 0x61, 0x6d, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x66, 0x61, 0x69, 0x6c, 0x47, 0x61, 0x6d, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x22, 0x66, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x69, 0x63, 0x6b, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x62, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x62, 0x61, 0x6e, 0x22, 0x58, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x52, 0x6f, 0x6c, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4b, 0x69, 0x6c, 0x6c, 0x63, 0x61, 0x6d, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x61, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x61, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x61, 0x6b, 0x65, 0x6e, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x68, 0x65, 0x72, 0x6f, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x22, 0x51, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x47, 0x6f, 0x6c, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x11, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x22, 0xab, 0x01, 0x0a, 0x1b, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x52, 0x6f, 0x6c, 0x6c, 0x44, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x6c, 0x4d, 0x69, 0x6e, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6c, 0x6c, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x72, 0x6f, 0x6c, 0x6c, 0x4d, 0x61, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x75, 0x0a, 0x1b, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x46, 0x6c, 0x69, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x22, 0x46, 0x0a, 0x27, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0x65, 0x0a, 0x23, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x54, 0x65, 0x61, 0x6d, 0x43, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x74, 0x65, 0x61, 0x6d, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x63, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0x6e, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x12, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x72, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x02, 0x52, 0x11, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x52, 0x65, 0x6d, 0x61, 0x69, 0x6e, 0x69, 0x6e, 0x67, 0x22, 0xb8, 0x01, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x6c, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x72, 0x65, 0x6c, 0x69, 0x63, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x68, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x6c, 0x69, 0x63, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0c, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x44, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x22, 0x9a, 0x01, 0x0a, 0x27, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x72, 0x61, 0x66, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x63, 0x74, 0x72, 0x6c, 0x5f, 0x69, 0x73, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x63, 0x74, 0x72, 0x6c, 0x49, 0x73, 0x44, 0x6f, 0x77, 0x6e, 0x22, 0xc7, 0x01, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x48, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0c, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x62, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x22, 0xa9, 0x01, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x61, 0x6c, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x69, 0x70, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x74, 0x69, 0x70, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x4f, 0x0a, 0x15, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x54, 0x69, 0x70, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x69, 0x70, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x69, 0x70, 0x54, 0x65, 0x78, 0x74, 0x22, 0x8e, 0x01, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x02, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x22, 0x7a, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x45, 0x53, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x43, 0x6f, 0x6d, 0x62, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0x83, 0x01, 0x0a, 0x21, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x45, 0x53, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x43, 0x6f, 0x6d, 0x62, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x63, 0x6f, 0x6d, 0x62, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xaf, 0x01, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4f, 0x4d, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x43, 0x6f, 0x6d, 0x62, 0x6f, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x29, 0x0a, 0x10, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0f, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x63, 0x61, 0x73, 0x74, 0x43, 0x68, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x8c, 0x01, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x48, 0x69, 0x67, 0x68, 0x46, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x32, 0x12, 0x2a, 0x0a, 0x11, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x5f, 0x68, 0x69, 0x67, 0x68, 0x5f, 0x66, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x73, 0x70, 0x65, 0x63, 0x69, 0x61, 0x6c, 0x48, 0x69, 0x67, 0x68, 0x46, 0x69, 0x76, 0x65, 0x22, 0x3f, 0x0a, 0x20, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x48, 0x69, 0x67, 0x68, 0x46, 0x69, 0x76, 0x65, 0x4c, 0x65, 0x66, 0x74, 0x48, 0x61, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0x8e, 0x01, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x53, 0x68, 0x6f, 0x76, 0x65, 0x6c, 0x55, 0x6e, 0x65, 0x61, 0x72, 0x74, 0x68, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x68, 0x61, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x61, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x74, 0x12, 0x1c, 0x0a, 0x09, 0x6c, 0x6f, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x6c, 0x6f, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0xcc, 0x02, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x1a, 0x50, 0x0a, 0x0b, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x63, 0x6f, 0x72, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x24, 0x0a, 0x0e, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x5f, 0x73, 0x61, 0x6e, 0x73, 0x5f, 0x6b, 0x64, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x53, 0x61, 0x6e, 0x73, 0x4b, 0x64, 0x61, 0x22, 0x51, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x12, 0x2e, 0x0a, 0x13, 0x75, 0x6e, 0x69, 0x74, 0x5f, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0d, 0x52, 0x11, 0x75, 0x6e, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x53, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x1b, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x02, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x30, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x30, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x76, 0x61, 0x72, 0x5f, 0x31, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x56, 0x61, 0x72, 0x31, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x72, 0x61, 0x6e, 0x6b, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x10, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x4d, 0x61, 0x78, 0x52, 0x61, 0x6e, 0x6b, 0x22, 0xa9, 0x01, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x65, 0x75, 0x74, 0x72, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x0f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x69, 0x74, 0x65, 0x6d, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x74, 0x69, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x69, 0x74, 0x65, 0x6d, 0x54, 0x69, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x74, 0x69, 0x65, 0x72, 0x5f, 0x69, 0x74, 0x65, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x69, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x62, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x12, 0x29, 0x0a, 0x10, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x73, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x6f, 0x75, 0x74, 0x70, 0x6f, 0x73, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x22, 0x55, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x73, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x58, 0x50, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x74, 0x65, 0x61, 0x6d, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x78, 0x70, 0x5f, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x78, 0x70, 0x41, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x42, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x6f, 0x76, 0x65, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x54, 0x6f, 0x55, 0x6e, 0x69, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x75, 0x6e, 0x69, 0x74, 0x5f, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x75, 0x6e, 0x69, 0x74, 0x45, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x22, 0xba, 0x01, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x67, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x12, 0x44, 0x0a, 0x09, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x62, 0x69, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x67, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x42, 0x69, 0x74, 0x52, 0x08, 0x64, 0x61, 0x74, 0x61, 0x42, 0x69, 0x74, 0x73, 0x1a, 0x52, 0x0a, 0x07, 0x44, 0x61, 0x74, 0x61, 0x42, 0x69, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1d, 0x0a, 0x0a, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x61, 0x74, 0x61, 0x45, 0x78, 0x74, 0x72, 0x61, 0x22, 0xdc, 0x02, 0x0a, 0x27, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x56, 0x65, 0x72, 0x73, 0x75, 0x73, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x5d, 0x0a, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x45, 0x44, 0x4f, 0x54, 0x41, 0x56, 0x65, 0x72, 0x73, 0x75, 0x73, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x3a, 0x20, 0x56, 0x53, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x42, 0x45, 0x48, 0x41, 0x56, 0x49, 0x4f, 0x52, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x49, 0x54, 0x59, 0x52, 0x08, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x12, 0x3e, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x75, 0x73, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x41, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x35, 0x0a, 0x0a, 0x63, 0x68, 0x61, 0x74, 0x5f, 0x77, 0x68, 0x65, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x75, 0x73, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x52, 0x09, 0x63, 0x68, 0x61, 0x74, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x12, 0x3e, 0x0a, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x75, 0x73, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x70, 0x6c, 0x61, 0x79, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x61, 0x74, 0x65, 0x22, 0xa5, 0x01, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x51, 0x6f, 0x50, 0x5f, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5f, 0x68, 0x69, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0a, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x48, 0x69, 0x74, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x5f, 0x6b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x4b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x22, 0x60, 0x0a, 0x1e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x48, 0x6f, 0x74, 0x50, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x12, 0x1e, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x31, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x31, 0x12, 0x1e, 0x0a, 0x0b, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x5f, 0x32, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x32, 0x22, 0x3e, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x48, 0x6f, 0x74, 0x50, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x5f, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x64, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x22, 0x77, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x57, 0x4b, 0x5f, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x5f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x68, 0x65, 0x72, 0x6f, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x68, 0x65, 0x72, 0x6f, 0x49, 0x64, 0x22, 0x93, 0x05, 0x0a, 0x24, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x5d, 0x0a, 0x0f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0e, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x19, 0x0a, 0x08, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x67, 0x75, 0x69, 0x6c, 0x64, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x15, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x13, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x13, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x12, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x12, 0x75, 0x0a, 0x0e, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x34, 0x2e, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x45, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x18, 0x6b, 0x5f, 0x45, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x52, 0x0d, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3d, 0x0a, 0x1b, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x5f, 0x61, 0x74, 0x5f, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x18, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x41, 0x74, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x1a, 0x49, 0x0a, 0x0e, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x22, 0x6f, 0x0a, 0x0e, 0x45, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x18, 0x6b, 0x5f, 0x45, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x6b, 0x5f, 0x45, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x76, 0x65, 0x10, 0x01, 0x12, 0x1d, 0x0a, 0x19, 0x6b, 0x5f, 0x45, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x61, 0x63, 0x74, 0x10, 0x02, 0x22, 0x8c, 0x02, 0x0a, 0x1d, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x57, 0x52, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x6c, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x73, 0x4c, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x61, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x68, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xa5, 0x02, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x57, 0x52, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x68, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x73, 0x5f, 0x6c, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x72, 0x72, 0x6f, 0x77, 0x73, 0x4c, 0x61, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x64, 0x65, 0x61, 0x6c, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x64, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x44, 0x65, 0x61, 0x6c, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x68, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x48, 0x70, 0x12, 0x22, 0x0a, 0x0d, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x68, 0x70, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x4d, 0x61, 0x78, 0x48, 0x70, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x61, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x18, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x22, 0xbf, 0x01, 0x0a, 0x1f, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x6c, 0x6f, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x6c, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x6c, 0x6f, 0x74, 0x49, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x63, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x22, 0xf8, 0x01, 0x0a, 0x1c, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x41, 0x67, 0x68, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x27, 0x0a, 0x0f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x65, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x45, 0x6e, 0x74, 0x69, 0x6e, 0x64, 0x65, 0x78, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x61, 0x6c, 0x65, 0x72, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x68, 0x61, 0x73, 0x5f, 0x73, 0x63, 0x65, 0x70, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x68, 0x61, 0x73, 0x53, 0x63, 0x65, 0x70, 0x74, 0x65, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x68, 0x61, 0x73, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x68, 0x61, 0x73, 0x53, 0x68, 0x61, 0x72, 0x64, 0x22, 0x83, 0x01, 0x0a, 0x19, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x31, 0x0a, 0x15, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x05, 0x52, 0x12, 0x74, 0x65, 0x78, 0x74, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x73, 0x12, 0x33, 0x0a, 0x16, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x5f, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x13, 0x76, 0x6f, 0x69, 0x63, 0x65, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x73, 0x22, 0xd8, 0x04, 0x0a, 0x1a, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x54, 0x69, 0x70, 0x12, 0x15, 0x0a, 0x06, 0x74, 0x69, 0x70, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x74, 0x69, 0x70, 0x49, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x13, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x5f, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x6e, 0x6f, 0x72, 0x61, 0x6d, 0x61, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x6e, 0x6f, 0x72, 0x61, 0x6d, 0x61, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x65, 0x73, 0x12, 0x29, 0x0a, 0x10, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x66, 0x6f, 0x72, 0x63, 0x65, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x69, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x69, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x32, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x09, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0a, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x02, 0x52, 0x0b, 0x66, 0x6c, 0x6f, 0x61, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x32, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x12, 0x23, 0x0a, 0x0d, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x32, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x32, 0x12, 0x2a, 0x0a, 0x11, 0x74, 0x69, 0x70, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x74, 0x69, 0x70, 0x54, 0x65, 0x78, 0x74, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x36, 0x0a, 0x17, 0x74, 0x69, 0x70, 0x5f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x15, 0x74, 0x69, 0x70, 0x41, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x70, 0x61, 0x6e, 0x6f, 0x72, 0x61, 0x6d, 0x61, 0x5f, 0x73, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x70, 0x61, 0x6e, 0x6f, 0x72, 0x61, 0x6d, 0x61, 0x53, 0x6e, 0x69, 0x70, 0x70, 0x65, 0x74, 0x22, 0x8a, 0x01, 0x0a, 0x18, 0x43, 0x44, 0x4f, 0x54, 0x41, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x65, 0x78, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x54, 0x65, 0x78, 0x74, 0x2a, 0xe5, 0x22, 0x0a, 0x11, 0x45, 0x44, 0x6f, 0x74, 0x61, 0x55, 0x73, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x41, 0x64, 0x64, 0x55, 0x6e, 0x69, 0x74, 0x54, 0x6f, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xd0, 0x03, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x41, 0x49, 0x44, 0x65, 0x62, 0x75, 0x67, 0x4c, 0x69, 0x6e, 0x65, 0x10, 0xd1, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xd2, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0xd3, 0x03, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x10, 0xd4, 0x03, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x42, 0x75, 0x6c, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x10, 0xd6, 0x03, 0x12, 0x23, 0x0a, 0x1e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x10, 0xd7, 0x03, 0x12, 0x24, 0x0a, 0x1f, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x4c, 0x69, 0x6e, 0x65, 0x61, 0x72, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x10, 0xd8, 0x03, 0x12, 0x25, 0x0a, 0x20, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x44, 0x6f, 0x64, 0x67, 0x65, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x73, 0x10, 0xd9, 0x03, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x43, 0x6f, 0x6c, 0x6f, 0x72, 0x10, 0xda, 0x03, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x4c, 0x69, 0x67, 0x68, 0x74, 0x44, 0x69, 0x72, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xdb, 0x03, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x10, 0xdc, 0x03, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x69, 0x6e, 0x67, 0x10, 0xdd, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x61, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x10, 0xde, 0x03, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x69, 0x6e, 0x69, 0x4b, 0x69, 0x6c, 0x6c, 0x43, 0x61, 0x6d, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xdf, 0x03, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x70, 0x44, 0x65, 0x62, 0x75, 0x67, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x10, 0xe0, 0x03, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x70, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xe1, 0x03, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4e, 0x65, 0x76, 0x65, 0x72, 0x6d, 0x6f, 0x72, 0x65, 0x52, 0x65, 0x71, 0x75, 0x69, 0x65, 0x6d, 0x10, 0xe2, 0x03, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4f, 0x76, 0x65, 0x72, 0x68, 0x65, 0x61, 0x64, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xe3, 0x03, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x65, 0x74, 0x4e, 0x65, 0x78, 0x74, 0x41, 0x75, 0x74, 0x6f, 0x62, 0x75, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x10, 0xe4, 0x03, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0xe5, 0x03, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x43, 0x6c, 0x69, 0x63, 0x6b, 0x10, 0xe6, 0x03, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x54, 0x69, 0x70, 0x49, 0x6e, 0x66, 0x6f, 0x10, 0xe7, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xe8, 0x03, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x6c, 0x65, 0x4d, 0x61, 0x6e, 0x61, 0x67, 0x65, 0x72, 0x10, 0xe9, 0x03, 0x12, 0x14, 0x0a, 0x0f, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x42, 0x6f, 0x74, 0x43, 0x68, 0x61, 0x74, 0x10, 0xea, 0x03, 0x12, 0x15, 0x0a, 0x10, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x48, 0x75, 0x64, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0xeb, 0x03, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x64, 0x10, 0xec, 0x03, 0x12, 0x11, 0x0a, 0x0c, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x50, 0x69, 0x6e, 0x67, 0x10, 0xed, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x10, 0xee, 0x03, 0x12, 0x22, 0x0a, 0x1d, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x43, 0x6f, 0x6e, 0x63, 0x65, 0x70, 0x74, 0x10, 0xef, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x77, 0x61, 0x70, 0x56, 0x65, 0x72, 0x69, 0x66, 0x79, 0x10, 0xf0, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x57, 0x6f, 0x72, 0x6c, 0x64, 0x4c, 0x69, 0x6e, 0x65, 0x10, 0xf1, 0x03, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x6f, 0x75, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x6e, 0x74, 0x44, 0x72, 0x6f, 0x70, 0x10, 0xf2, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0xf3, 0x03, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x48, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x65, 0x6e, 0x44, 0x72, 0x6f, 0x70, 0x73, 0x10, 0xf4, 0x03, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x10, 0xf5, 0x03, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x58, 0x6d, 0x61, 0x73, 0x47, 0x69, 0x66, 0x74, 0x10, 0xf6, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x68, 0x61, 0x72, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x10, 0xf7, 0x03, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x45, 0x78, 0x70, 0x10, 0xf8, 0x03, 0x12, 0x20, 0x0a, 0x1b, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x70, 0x10, 0xf9, 0x03, 0x12, 0x22, 0x0a, 0x1d, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x47, 0x61, 0x6d, 0x65, 0x72, 0x75, 0x6c, 0x65, 0x73, 0x53, 0x74, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x10, 0xfa, 0x03, 0x12, 0x17, 0x0a, 0x12, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x68, 0x6f, 0x77, 0x53, 0x75, 0x72, 0x76, 0x65, 0x79, 0x10, 0xfb, 0x03, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x46, 0x61, 0x64, 0x65, 0x10, 0xfc, 0x03, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x41, 0x64, 0x64, 0x51, 0x75, 0x65, 0x73, 0x74, 0x4c, 0x6f, 0x67, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x10, 0xfd, 0x03, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x50, 0x6f, 0x70, 0x75, 0x70, 0x10, 0xfe, 0x03, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, 0x10, 0xff, 0x03, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x6f, 0x73, 0x68, 0x61, 0x6e, 0x50, 0x6f, 0x70, 0x75, 0x70, 0x10, 0x80, 0x04, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x54, 0x6f, 0x6f, 0x6c, 0x54, 0x69, 0x70, 0x10, 0x81, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x46, 0x69, 0x6e, 0x61, 0x6c, 0x47, 0x6f, 0x6c, 0x64, 0x10, 0x82, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x4d, 0x73, 0x67, 0x10, 0x83, 0x04, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x48, 0x55, 0x44, 0x50, 0x69, 0x6e, 0x67, 0x10, 0x84, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x47, 0x72, 0x69, 0x64, 0x4e, 0x61, 0x76, 0x10, 0x85, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x45, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x10, 0x86, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x45, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x4c, 0x6f, 0x63, 0x10, 0x87, 0x04, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x45, 0x5f, 0x44, 0x6f, 0x74, 0x61, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x49, 0x6d, 0x70, 0x61, 0x63, 0x74, 0x10, 0x88, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x45, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x89, 0x04, 0x12, 0x20, 0x0a, 0x1b, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x45, 0x5f, 0x55, 0x6e, 0x69, 0x74, 0x41, 0x6e, 0x69, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x6e, 0x64, 0x10, 0x8a, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x69, 0x6e, 0x67, 0x10, 0x8b, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x68, 0x6f, 0x77, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x50, 0x6f, 0x70, 0x75, 0x70, 0x10, 0x8c, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x56, 0x6f, 0x74, 0x65, 0x53, 0x74, 0x61, 0x72, 0x74, 0x10, 0x8d, 0x04, 0x12, 0x17, 0x0a, 0x12, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x56, 0x6f, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x10, 0x8e, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x56, 0x6f, 0x74, 0x65, 0x45, 0x6e, 0x64, 0x10, 0x8f, 0x04, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x42, 0x6f, 0x6f, 0x73, 0x74, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0x90, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x57, 0x69, 0x6c, 0x6c, 0x50, 0x75, 0x72, 0x63, 0x68, 0x61, 0x73, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0x91, 0x04, 0x12, 0x24, 0x0a, 0x1f, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x75, 0x74, 0x6f, 0x72, 0x69, 0x61, 0x6c, 0x4d, 0x69, 0x6e, 0x69, 0x6d, 0x61, 0x70, 0x50, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0x92, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x4d, 0x4d, 0x52, 0x10, 0x93, 0x04, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x53, 0x74, 0x65, 0x61, 0x6c, 0x10, 0x94, 0x04, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x6f, 0x75, 0x72, 0x69, 0x65, 0x72, 0x4b, 0x69, 0x6c, 0x6c, 0x65, 0x64, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0x95, 0x04, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x45, 0x6e, 0x65, 0x6d, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0x96, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x10, 0x97, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x69, 0x6e, 0x69, 0x54, 0x61, 0x75, 0x6e, 0x74, 0x10, 0x98, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x42, 0x75, 0x79, 0x42, 0x61, 0x63, 0x6b, 0x53, 0x74, 0x61, 0x74, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0x99, 0x04, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x70, 0x65, 0x65, 0x63, 0x68, 0x42, 0x75, 0x62, 0x62, 0x6c, 0x65, 0x10, 0x9a, 0x04, 0x12, 0x20, 0x0a, 0x1b, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0x9b, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x51, 0x75, 0x69, 0x63, 0x6b, 0x42, 0x75, 0x79, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0x9c, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x74, 0x61, 0x74, 0x73, 0x48, 0x65, 0x72, 0x6f, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x10, 0x9d, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x50, 0x72, 0x65, 0x64, 0x69, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x10, 0x9e, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0x9f, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x48, 0x50, 0x4d, 0x61, 0x6e, 0x61, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0xa0, 0x04, 0x12, 0x17, 0x0a, 0x12, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x47, 0x6c, 0x79, 0x70, 0x68, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0xa1, 0x04, 0x12, 0x16, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x42, 0x65, 0x61, 0x73, 0x74, 0x43, 0x68, 0x61, 0x74, 0x10, 0xa2, 0x04, 0x12, 0x26, 0x0a, 0x21, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x74, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x73, 0x10, 0xa3, 0x04, 0x12, 0x24, 0x0a, 0x1f, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x75, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x10, 0xa4, 0x04, 0x12, 0x24, 0x0a, 0x1f, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x75, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x79, 0x10, 0xa5, 0x04, 0x12, 0x25, 0x0a, 0x20, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x48, 0x75, 0x64, 0x45, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x10, 0xa6, 0x04, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x6f, 0x6d, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x75, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x10, 0xa7, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x10, 0xa8, 0x04, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xa9, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x6f, 0x6d, 0x62, 0x61, 0x74, 0x4c, 0x6f, 0x67, 0x44, 0x61, 0x74, 0x61, 0x48, 0x4c, 0x54, 0x56, 0x10, 0xaa, 0x04, 0x12, 0x14, 0x0a, 0x0f, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x58, 0x50, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0xab, 0x04, 0x12, 0x20, 0x0a, 0x1b, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x51, 0x75, 0x65, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x10, 0xac, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x10, 0xad, 0x04, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x10, 0xae, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x51, 0x75, 0x65, 0x73, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x10, 0xaf, 0x04, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x69, 0x63, 0x6b, 0x10, 0xb0, 0x04, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x6f, 0x6c, 0x65, 0x10, 0xb1, 0x04, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4b, 0x69, 0x6c, 0x6c, 0x63, 0x61, 0x6d, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x54, 0x61, 0x6b, 0x65, 0x6e, 0x10, 0xb2, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x50, 0x65, 0x6e, 0x61, 0x6c, 0x74, 0x79, 0x47, 0x6f, 0x6c, 0x64, 0x10, 0xb3, 0x04, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x52, 0x6f, 0x6c, 0x6c, 0x44, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x10, 0xb4, 0x04, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x46, 0x6c, 0x69, 0x70, 0x43, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x10, 0xb5, 0x04, 0x12, 0x23, 0x0a, 0x1e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x75, 0x67, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x10, 0xb6, 0x04, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x65, 0x61, 0x6d, 0x43, 0x61, 0x70, 0x74, 0x61, 0x69, 0x6e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x10, 0xb7, 0x04, 0x12, 0x25, 0x0a, 0x20, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x65, 0x6e, 0x64, 0x52, 0x6f, 0x73, 0x68, 0x61, 0x6e, 0x53, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x50, 0x68, 0x61, 0x73, 0x65, 0x10, 0xb8, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x57, 0x68, 0x65, 0x65, 0x6c, 0x43, 0x6f, 0x6f, 0x6c, 0x64, 0x6f, 0x77, 0x6e, 0x10, 0xb9, 0x04, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x44, 0x69, 0x73, 0x6d, 0x69, 0x73, 0x73, 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x50, 0x6f, 0x70, 0x75, 0x70, 0x73, 0x10, 0xba, 0x04, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x45, 0x5f, 0x44, 0x65, 0x73, 0x74, 0x72, 0x6f, 0x79, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6c, 0x65, 0x10, 0xbb, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x48, 0x65, 0x72, 0x6f, 0x52, 0x65, 0x6c, 0x69, 0x63, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x10, 0xbc, 0x04, 0x12, 0x27, 0x0a, 0x22, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x44, 0x72, 0x61, 0x66, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x10, 0xbd, 0x04, 0x12, 0x15, 0x0a, 0x10, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x6f, 0x6c, 0x64, 0x10, 0xbe, 0x04, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x52, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x10, 0xbf, 0x04, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x61, 0x6c, 0x75, 0x74, 0x65, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x10, 0xc0, 0x04, 0x12, 0x15, 0x0a, 0x10, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x69, 0x70, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0xc1, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x52, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x55, 0x6e, 0x69, 0x74, 0x10, 0xc2, 0x04, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x54, 0x65, 0x6c, 0x65, 0x70, 0x6f, 0x72, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0xc3, 0x04, 0x12, 0x23, 0x0a, 0x1e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x61, 0x72, 0x73, 0x41, 0x72, 0x65, 0x6e, 0x61, 0x4f, 0x66, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x10, 0xc4, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x45, 0x53, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x43, 0x6f, 0x6d, 0x62, 0x6f, 0x10, 0xc5, 0x04, 0x12, 0x21, 0x0a, 0x1c, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x45, 0x53, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x43, 0x6f, 0x6d, 0x62, 0x6f, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x10, 0xc6, 0x04, 0x12, 0x20, 0x0a, 0x1b, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x48, 0x69, 0x67, 0x68, 0x46, 0x69, 0x76, 0x65, 0x4c, 0x65, 0x66, 0x74, 0x48, 0x61, 0x6e, 0x67, 0x69, 0x6e, 0x67, 0x10, 0xc7, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x48, 0x69, 0x67, 0x68, 0x46, 0x69, 0x76, 0x65, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x10, 0xc8, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x53, 0x68, 0x6f, 0x76, 0x65, 0x6c, 0x55, 0x6e, 0x65, 0x61, 0x72, 0x74, 0x68, 0x10, 0xc9, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x45, 0x4d, 0x5f, 0x49, 0x6e, 0x76, 0x6f, 0x6b, 0x65, 0x72, 0x53, 0x70, 0x65, 0x6c, 0x6c, 0x43, 0x61, 0x73, 0x74, 0x10, 0xca, 0x04, 0x12, 0x17, 0x0a, 0x12, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x52, 0x61, 0x64, 0x61, 0x72, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0xcb, 0x04, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x41, 0x6c, 0x6c, 0x53, 0x74, 0x61, 0x72, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0xcc, 0x04, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x54, 0x61, 0x6c, 0x65, 0x6e, 0x74, 0x54, 0x72, 0x65, 0x65, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0xcd, 0x04, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x51, 0x75, 0x65, 0x75, 0x65, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x64, 0x10, 0xce, 0x04, 0x12, 0x1b, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x44, 0x65, 0x62, 0x75, 0x67, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x10, 0xcf, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4f, 0x4d, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x43, 0x6f, 0x6d, 0x62, 0x6f, 0x10, 0xd0, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x4e, 0x65, 0x75, 0x74, 0x72, 0x61, 0x6c, 0x49, 0x74, 0x65, 0x6d, 0x10, 0xd1, 0x04, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x73, 0x74, 0x43, 0x61, 0x70, 0x74, 0x75, 0x72, 0x65, 0x64, 0x10, 0xd2, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4f, 0x75, 0x74, 0x70, 0x6f, 0x73, 0x74, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x65, 0x64, 0x58, 0x50, 0x10, 0xd3, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x6f, 0x76, 0x65, 0x43, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x54, 0x6f, 0x55, 0x6e, 0x69, 0x74, 0x10, 0xd4, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x50, 0x61, 0x75, 0x73, 0x65, 0x4d, 0x69, 0x6e, 0x69, 0x67, 0x61, 0x6d, 0x65, 0x44, 0x61, 0x74, 0x61, 0x10, 0xd5, 0x04, 0x12, 0x27, 0x0a, 0x22, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x56, 0x65, 0x72, 0x73, 0x75, 0x73, 0x53, 0x63, 0x65, 0x6e, 0x65, 0x5f, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x10, 0xd6, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x51, 0x6f, 0x50, 0x5f, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x10, 0xd8, 0x04, 0x12, 0x1e, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x48, 0x6f, 0x74, 0x50, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x5f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x10, 0xd9, 0x04, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x48, 0x6f, 0x74, 0x50, 0x6f, 0x74, 0x61, 0x74, 0x6f, 0x5f, 0x45, 0x78, 0x70, 0x6c, 0x6f, 0x64, 0x65, 0x64, 0x10, 0xda, 0x04, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x57, 0x4b, 0x5f, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x5f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x10, 0xdb, 0x04, 0x12, 0x24, 0x0a, 0x1f, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x47, 0x75, 0x69, 0x6c, 0x64, 0x43, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x5f, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x10, 0xdc, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x57, 0x52, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x50, 0x72, 0x6f, 0x67, 0x72, 0x65, 0x73, 0x73, 0x10, 0xdd, 0x04, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x57, 0x52, 0x41, 0x72, 0x63, 0x61, 0x6e, 0x61, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x10, 0xde, 0x04, 0x12, 0x1f, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x49, 0x74, 0x65, 0x6d, 0x53, 0x6c, 0x6f, 0x74, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0xdf, 0x04, 0x12, 0x1c, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x41, 0x67, 0x68, 0x73, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x41, 0x6c, 0x65, 0x72, 0x74, 0x10, 0xe0, 0x04, 0x12, 0x1d, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x50, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xe1, 0x04, 0x12, 0x19, 0x0a, 0x14, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x4d, 0x75, 0x74, 0x65, 0x64, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x10, 0xe2, 0x04, 0x12, 0x1a, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x75, 0x61, 0x6c, 0x54, 0x69, 0x70, 0x10, 0xe3, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4d, 0x5f, 0x43, 0x68, 0x61, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x10, 0xe4, 0x04, 0x2a, 0x90, 0x1e, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x12, 0x21, 0x0a, 0x14, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x42, 0x41, 0x52, 0x52, 0x41, 0x43, 0x4b, 0x53, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x10, 0x04, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x05, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4b, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x42, 0x55, 0x59, 0x42, 0x41, 0x43, 0x4b, 0x10, 0x07, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x45, 0x47, 0x49, 0x53, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x4f, 0x53, 0x48, 0x41, 0x4e, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x10, 0x09, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x52, 0x49, 0x45, 0x52, 0x5f, 0x4c, 0x4f, 0x53, 0x54, 0x10, 0x0a, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x52, 0x49, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x53, 0x50, 0x41, 0x57, 0x4e, 0x45, 0x44, 0x10, 0x0b, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x47, 0x4c, 0x59, 0x50, 0x48, 0x5f, 0x55, 0x53, 0x45, 0x44, 0x10, 0x0c, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x55, 0x52, 0x43, 0x48, 0x41, 0x53, 0x45, 0x10, 0x0d, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x0e, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x0f, 0x12, 0x2e, 0x0a, 0x2a, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x10, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x10, 0x11, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x41, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x4c, 0x55, 0x52, 0x41, 0x4c, 0x10, 0x12, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x13, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x14, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x41, 0x46, 0x45, 0x5f, 0x54, 0x4f, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x10, 0x15, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x45, 0x5f, 0x50, 0x49, 0x43, 0x4b, 0x55, 0x50, 0x10, 0x16, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x45, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4c, 0x45, 0x10, 0x17, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x45, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x10, 0x72, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x48, 0x45, 0x42, 0x41, 0x47, 0x10, 0x18, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x53, 0x48, 0x4f, 0x50, 0x10, 0x19, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x50, 0x55, 0x52, 0x43, 0x48, 0x41, 0x53, 0x45, 0x44, 0x10, 0x1a, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x53, 0x5f, 0x43, 0x4f, 0x4d, 0x42, 0x49, 0x4e, 0x45, 0x44, 0x10, 0x1b, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x45, 0x52, 0x5f, 0x43, 0x52, 0x45, 0x45, 0x50, 0x53, 0x10, 0x1c, 0x12, 0x25, 0x0a, 0x21, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x54, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x10, 0x1d, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x54, 0x50, 0x41, 0x55, 0x53, 0x45, 0x10, 0x1f, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x53, 0x4c, 0x45, 0x46, 0x54, 0x10, 0x20, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x54, 0x50, 0x41, 0x55, 0x53, 0x45, 0x59, 0x45, 0x54, 0x10, 0x21, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x22, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x23, 0x12, 0x19, 0x0a, 0x15, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x55, 0x4e, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x24, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x55, 0x4e, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x25, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x59, 0x4f, 0x55, 0x50, 0x41, 0x55, 0x53, 0x45, 0x44, 0x10, 0x26, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x54, 0x55, 0x4e, 0x50, 0x41, 0x55, 0x53, 0x45, 0x54, 0x45, 0x41, 0x4d, 0x10, 0x27, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x42, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x10, 0x29, 0x12, 0x2e, 0x0a, 0x2a, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x50, 0x45, 0x43, 0x54, 0x41, 0x54, 0x4f, 0x52, 0x53, 0x5f, 0x57, 0x41, 0x54, 0x43, 0x48, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x48, 0x49, 0x53, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x2a, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x52, 0x45, 0x4d, 0x49, 0x4e, 0x44, 0x45, 0x52, 0x10, 0x2b, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x43, 0x4f, 0x4e, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x10, 0x2c, 0x12, 0x16, 0x0a, 0x12, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x54, 0x41, 0x55, 0x4e, 0x54, 0x10, 0x2d, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x10, 0x2e, 0x12, 0x18, 0x0a, 0x14, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x44, 0x5f, 0x54, 0x55, 0x52, 0x4e, 0x10, 0x2f, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x42, 0x4f, 0x4e, 0x55, 0x53, 0x10, 0x31, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x4e, 0x4f, 0x5f, 0x42, 0x41, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x10, 0x32, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x5f, 0x41, 0x45, 0x47, 0x49, 0x53, 0x10, 0x33, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x10, 0x34, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x45, 0x47, 0x49, 0x53, 0x5f, 0x53, 0x54, 0x4f, 0x4c, 0x45, 0x4e, 0x10, 0x35, 0x12, 0x1d, 0x0a, 0x19, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x4f, 0x53, 0x48, 0x41, 0x4e, 0x5f, 0x43, 0x41, 0x4e, 0x44, 0x59, 0x10, 0x36, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x47, 0x49, 0x46, 0x54, 0x45, 0x44, 0x10, 0x37, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x47, 0x52, 0x45, 0x45, 0x56, 0x49, 0x4c, 0x10, 0x38, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x4f, 0x4c, 0x44, 0x4f, 0x55, 0x54, 0x5f, 0x54, 0x4f, 0x57, 0x45, 0x52, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x39, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x4f, 0x4c, 0x44, 0x4f, 0x55, 0x54, 0x5f, 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x44, 0x45, 0x53, 0x54, 0x52, 0x4f, 0x59, 0x45, 0x44, 0x10, 0x3a, 0x12, 0x26, 0x0a, 0x22, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x4f, 0x4c, 0x44, 0x4f, 0x55, 0x54, 0x5f, 0x57, 0x41, 0x4c, 0x4c, 0x5f, 0x46, 0x49, 0x4e, 0x49, 0x53, 0x48, 0x45, 0x44, 0x10, 0x3b, 0x12, 0x29, 0x0a, 0x25, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x10, 0x3e, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x3f, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x4c, 0x49, 0x4d, 0x49, 0x54, 0x45, 0x44, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x10, 0x40, 0x12, 0x33, 0x0a, 0x2f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x5f, 0x45, 0x58, 0x50, 0x4c, 0x41, 0x4e, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x41, 0x12, 0x2c, 0x0a, 0x28, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x45, 0x43, 0x52, 0x55, 0x49, 0x54, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x44, 0x52, 0x4f, 0x50, 0x5f, 0x52, 0x41, 0x54, 0x45, 0x5f, 0x42, 0x4f, 0x4e, 0x55, 0x53, 0x10, 0x42, 0x12, 0x31, 0x0a, 0x2d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x46, 0x52, 0x4f, 0x53, 0x54, 0x49, 0x56, 0x55, 0x53, 0x5f, 0x53, 0x48, 0x49, 0x4e, 0x49, 0x4e, 0x47, 0x5f, 0x42, 0x4f, 0x4f, 0x53, 0x54, 0x45, 0x52, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x43, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x41, 0x46, 0x4b, 0x10, 0x49, 0x12, 0x32, 0x0a, 0x2e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x4c, 0x45, 0x46, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x4a, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x45, 0x44, 0x10, 0x4b, 0x12, 0x25, 0x0a, 0x21, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x45, 0x44, 0x5f, 0x41, 0x46, 0x4b, 0x10, 0x4c, 0x12, 0x37, 0x0a, 0x33, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x45, 0x44, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4c, 0x4f, 0x4e, 0x47, 0x10, 0x4d, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x57, 0x49, 0x4c, 0x4c, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x44, 0x10, 0x4e, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x57, 0x49, 0x4c, 0x4c, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x44, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x45, 0x44, 0x10, 0x4f, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x57, 0x49, 0x4c, 0x4c, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x10, 0x50, 0x12, 0x32, 0x0a, 0x2e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x57, 0x49, 0x4c, 0x4c, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x42, 0x45, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x44, 0x5f, 0x4e, 0x45, 0x54, 0x57, 0x4f, 0x52, 0x4b, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x45, 0x44, 0x10, 0x51, 0x12, 0x29, 0x0a, 0x25, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x5f, 0x51, 0x55, 0x49, 0x54, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x4f, 0x55, 0x54, 0x5f, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x10, 0x52, 0x12, 0x3a, 0x0a, 0x36, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x45, 0x44, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x49, 0x4c, 0x4c, 0x5f, 0x53, 0x43, 0x4f, 0x52, 0x45, 0x44, 0x5f, 0x4c, 0x45, 0x41, 0x56, 0x45, 0x52, 0x53, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x10, 0x53, 0x12, 0x38, 0x0a, 0x34, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x45, 0x44, 0x5f, 0x42, 0x45, 0x46, 0x4f, 0x52, 0x45, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x59, 0x10, 0x54, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x4d, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x55, 0x4d, 0x5f, 0x4c, 0x45, 0x56, 0x45, 0x4c, 0x10, 0x55, 0x12, 0x2a, 0x0a, 0x26, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x56, 0x49, 0x43, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x52, 0x45, 0x44, 0x49, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x54, 0x52, 0x45, 0x41, 0x4b, 0x10, 0x56, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x41, 0x53, 0x53, 0x49, 0x4e, 0x5f, 0x41, 0x4e, 0x4e, 0x4f, 0x55, 0x4e, 0x43, 0x45, 0x10, 0x57, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x41, 0x53, 0x53, 0x49, 0x4e, 0x5f, 0x53, 0x55, 0x43, 0x43, 0x45, 0x53, 0x53, 0x10, 0x58, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x41, 0x53, 0x53, 0x49, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x59, 0x12, 0x37, 0x0a, 0x33, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x56, 0x49, 0x43, 0x54, 0x4f, 0x52, 0x59, 0x5f, 0x50, 0x52, 0x45, 0x44, 0x49, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x49, 0x4e, 0x47, 0x4c, 0x45, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x46, 0x49, 0x52, 0x4d, 0x10, 0x5a, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x45, 0x46, 0x46, 0x49, 0x47, 0x59, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x10, 0x5b, 0x12, 0x2b, 0x0a, 0x27, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x56, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x42, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x46, 0x4c, 0x4f, 0x57, 0x10, 0x5c, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x59, 0x45, 0x41, 0x52, 0x5f, 0x42, 0x45, 0x41, 0x53, 0x54, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x5d, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x5e, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x4f, 0x49, 0x4e, 0x53, 0x5f, 0x57, 0x41, 0x47, 0x45, 0x52, 0x45, 0x44, 0x10, 0x5f, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x4e, 0x4f, 0x4d, 0x49, 0x4e, 0x41, 0x54, 0x45, 0x44, 0x5f, 0x42, 0x41, 0x4e, 0x10, 0x60, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x42, 0x41, 0x4e, 0x4e, 0x45, 0x44, 0x10, 0x61, 0x12, 0x1f, 0x0a, 0x1b, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x42, 0x41, 0x4e, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x10, 0x62, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x50, 0x41, 0x49, 0x4e, 0x54, 0x45, 0x44, 0x10, 0x63, 0x12, 0x1a, 0x0a, 0x16, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x43, 0x41, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x44, 0x10, 0x64, 0x12, 0x1e, 0x0a, 0x1a, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x48, 0x52, 0x49, 0x4e, 0x45, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x65, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x57, 0x41, 0x47, 0x45, 0x52, 0x5f, 0x54, 0x4f, 0x4b, 0x45, 0x4e, 0x5f, 0x53, 0x50, 0x45, 0x4e, 0x54, 0x10, 0x66, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x5f, 0x57, 0x41, 0x47, 0x45, 0x52, 0x10, 0x67, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x4e, 0x45, 0x57, 0x5f, 0x50, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x52, 0x45, 0x4d, 0x49, 0x4e, 0x44, 0x45, 0x52, 0x10, 0x68, 0x12, 0x25, 0x0a, 0x21, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x4f, 0x42, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x69, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x45, 0x4e, 0x54, 0x52, 0x59, 0x5f, 0x57, 0x41, 0x52, 0x44, 0x5f, 0x4b, 0x49, 0x4c, 0x4c, 0x45, 0x44, 0x10, 0x6a, 0x12, 0x2d, 0x0a, 0x29, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x44, 0x5f, 0x49, 0x4e, 0x5f, 0x4e, 0x45, 0x55, 0x54, 0x52, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x53, 0x48, 0x10, 0x6b, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x5f, 0x49, 0x4e, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x10, 0x6c, 0x12, 0x17, 0x0a, 0x13, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x42, 0x4f, 0x55, 0x4e, 0x54, 0x59, 0x10, 0x6d, 0x12, 0x24, 0x0a, 0x20, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x52, 0x41, 0x46, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x5f, 0x43, 0x41, 0x4e, 0x44, 0x59, 0x10, 0x6f, 0x12, 0x27, 0x0a, 0x23, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x44, 0x52, 0x41, 0x46, 0x54, 0x5f, 0x52, 0x41, 0x4e, 0x44, 0x4f, 0x4d, 0x45, 0x44, 0x10, 0x70, 0x12, 0x28, 0x0a, 0x24, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x4f, 0x41, 0x43, 0x48, 0x5f, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x71, 0x12, 0x25, 0x0a, 0x21, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x4d, 0x45, 0x53, 0x53, 0x41, 0x47, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x54, 0x5f, 0x50, 0x41, 0x55, 0x53, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x73, 0x2a, 0xb2, 0x01, 0x0a, 0x1d, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x4e, 0x4f, 0x5f, 0x42, 0x41, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x53, 0x12, 0x25, 0x0a, 0x21, 0x4e, 0x4f, 0x5f, 0x42, 0x41, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x5f, 0x57, 0x52, 0x4f, 0x4e, 0x47, 0x5f, 0x4c, 0x4f, 0x42, 0x42, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x10, 0x01, 0x12, 0x22, 0x0a, 0x1e, 0x4e, 0x4f, 0x5f, 0x42, 0x41, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x5f, 0x50, 0x52, 0x41, 0x43, 0x54, 0x49, 0x43, 0x45, 0x5f, 0x42, 0x4f, 0x54, 0x53, 0x10, 0x02, 0x12, 0x23, 0x0a, 0x1f, 0x4e, 0x4f, 0x5f, 0x42, 0x41, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x5f, 0x43, 0x48, 0x45, 0x41, 0x54, 0x53, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x44, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x4e, 0x4f, 0x5f, 0x42, 0x41, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x10, 0x04, 0x2a, 0xcf, 0x01, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x43, 0x48, 0x41, 0x54, 0x5f, 0x49, 0x4e, 0x46, 0x4f, 0x52, 0x4d, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x41, 0x4c, 0x12, 0x21, 0x0a, 0x1d, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x43, 0x4f, 0x4f, 0x50, 0x5f, 0x42, 0x41, 0x54, 0x54, 0x4c, 0x45, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x53, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x46, 0x52, 0x4f, 0x53, 0x54, 0x49, 0x56, 0x55, 0x53, 0x5f, 0x41, 0x42, 0x41, 0x4e, 0x44, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x4d, 0x49, 0x4e, 0x44, 0x45, 0x52, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x52, 0x41, 0x4e, 0x4b, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x4d, 0x49, 0x4e, 0x44, 0x45, 0x52, 0x10, 0x03, 0x12, 0x2b, 0x0a, 0x27, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x43, 0x4f, 0x4f, 0x50, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x49, 0x56, 0x45, 0x5f, 0x52, 0x45, 0x4d, 0x49, 0x4e, 0x44, 0x45, 0x52, 0x10, 0x04, 0x12, 0x25, 0x0a, 0x21, 0x49, 0x4e, 0x46, 0x4f, 0x5f, 0x43, 0x55, 0x53, 0x54, 0x4f, 0x4d, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x50, 0x45, 0x4e, 0x41, 0x4c, 0x54, 0x59, 0x5f, 0x52, 0x45, 0x4d, 0x49, 0x4e, 0x44, 0x45, 0x52, 0x10, 0x05, 0x2a, 0xbc, 0x03, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x43, 0x4f, 0x4f, 0x4c, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x03, 0x12, 0x16, 0x0a, 0x12, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x45, 0x4e, 0x45, 0x4d, 0x59, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x55, 0x4e, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x45, 0x44, 0x10, 0x05, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x42, 0x41, 0x43, 0x4b, 0x50, 0x41, 0x43, 0x4b, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x49, 0x4e, 0x53, 0x54, 0x41, 0x53, 0x48, 0x10, 0x07, 0x12, 0x1a, 0x0a, 0x16, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x4e, 0x43, 0x4f, 0x55, 0x52, 0x49, 0x45, 0x52, 0x10, 0x08, 0x12, 0x15, 0x0a, 0x11, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x41, 0x4c, 0x4c, 0x59, 0x10, 0x09, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x5f, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x57, 0x49, 0x4c, 0x4c, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x10, 0x0b, 0x12, 0x1d, 0x0a, 0x19, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x46, 0x55, 0x54, 0x55, 0x52, 0x45, 0x5f, 0x4c, 0x45, 0x41, 0x52, 0x4e, 0x10, 0x0c, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4e, 0x45, 0x55, 0x54, 0x52, 0x41, 0x4c, 0x5f, 0x4f, 0x46, 0x46, 0x45, 0x52, 0x10, 0x0d, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4e, 0x45, 0x55, 0x54, 0x52, 0x41, 0x4c, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x10, 0x0e, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x49, 0x4e, 0x47, 0x5f, 0x4e, 0x45, 0x55, 0x54, 0x52, 0x41, 0x4c, 0x5f, 0x45, 0x51, 0x55, 0x49, 0x50, 0x10, 0x0f, 0x2a, 0x8c, 0x02, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x12, 0x26, 0x0a, 0x22, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x10, 0x01, 0x12, 0x29, 0x0a, 0x25, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x48, 0x4f, 0x52, 0x4e, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x46, 0x49, 0x52, 0x53, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x4f, 0x44, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x57, 0x43, 0x41, 0x53, 0x45, 0x10, 0x04, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x50, 0x4f, 0x53, 0x54, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x10, 0x05, 0x12, 0x28, 0x0a, 0x24, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x59, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x57, 0x41, 0x49, 0x54, 0x5f, 0x46, 0x4f, 0x52, 0x5f, 0x4d, 0x41, 0x50, 0x10, 0x06, 0x2a, 0xe5, 0x01, 0x0a, 0x13, 0x45, 0x44, 0x6f, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x12, 0x14, 0x0a, 0x10, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x5f, 0x4d, 0x55, 0x54, 0x45, 0x10, 0x01, 0x12, 0x19, 0x0a, 0x15, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x41, 0x44, 0x44, 0x5f, 0x47, 0x45, 0x53, 0x54, 0x55, 0x52, 0x45, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x47, 0x45, 0x53, 0x54, 0x55, 0x52, 0x45, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x52, 0x45, 0x4d, 0x4f, 0x56, 0x45, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x47, 0x45, 0x53, 0x54, 0x55, 0x52, 0x45, 0x53, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x46, 0x41, 0x44, 0x45, 0x5f, 0x47, 0x45, 0x53, 0x54, 0x55, 0x52, 0x45, 0x10, 0x06, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x5f, 0x53, 0x50, 0x45, 0x45, 0x43, 0x48, 0x5f, 0x43, 0x4c, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x49, 0x44, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x53, 0x10, 0x07, 0x2a, 0x8d, 0x06, 0x0a, 0x13, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x47, 0x4f, 0x4c, 0x44, 0x10, 0x00, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x44, 0x45, 0x4e, 0x59, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x58, 0x50, 0x10, 0x03, 0x12, 0x25, 0x0a, 0x21, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x42, 0x4f, 0x4e, 0x55, 0x53, 0x5f, 0x53, 0x50, 0x45, 0x4c, 0x4c, 0x5f, 0x44, 0x41, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x04, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x44, 0x41, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x06, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x45, 0x56, 0x41, 0x44, 0x45, 0x10, 0x07, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x08, 0x12, 0x26, 0x0a, 0x22, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x42, 0x4f, 0x4e, 0x55, 0x53, 0x5f, 0x50, 0x4f, 0x49, 0x53, 0x4f, 0x4e, 0x5f, 0x44, 0x41, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x48, 0x45, 0x41, 0x4c, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x5f, 0x41, 0x44, 0x44, 0x10, 0x0b, 0x12, 0x1c, 0x0a, 0x18, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x4d, 0x41, 0x4e, 0x41, 0x5f, 0x4c, 0x4f, 0x53, 0x53, 0x10, 0x0c, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x45, 0x41, 0x52, 0x4c, 0x59, 0x10, 0x0d, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x43, 0x4c, 0x4f, 0x53, 0x45, 0x10, 0x0e, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x4c, 0x41, 0x53, 0x54, 0x5f, 0x48, 0x49, 0x54, 0x5f, 0x4d, 0x49, 0x53, 0x53, 0x10, 0x0f, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x4d, 0x41, 0x47, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x10, 0x10, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x49, 0x4e, 0x43, 0x4f, 0x4d, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x41, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x11, 0x12, 0x22, 0x0a, 0x1e, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x4f, 0x55, 0x54, 0x47, 0x4f, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x41, 0x4d, 0x41, 0x47, 0x45, 0x10, 0x12, 0x12, 0x21, 0x0a, 0x1d, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x44, 0x49, 0x53, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x52, 0x45, 0x53, 0x49, 0x53, 0x54, 0x10, 0x13, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x44, 0x45, 0x41, 0x54, 0x48, 0x10, 0x14, 0x12, 0x1a, 0x0a, 0x16, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x15, 0x12, 0x20, 0x0a, 0x1c, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x49, 0x54, 0x45, 0x4d, 0x5f, 0x52, 0x45, 0x43, 0x45, 0x49, 0x56, 0x45, 0x44, 0x10, 0x16, 0x12, 0x18, 0x0a, 0x14, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x44, 0x10, 0x17, 0x12, 0x1e, 0x0a, 0x1a, 0x4f, 0x56, 0x45, 0x52, 0x48, 0x45, 0x41, 0x44, 0x5f, 0x41, 0x4c, 0x45, 0x52, 0x54, 0x5f, 0x44, 0x45, 0x41, 0x44, 0x4c, 0x59, 0x5f, 0x42, 0x4c, 0x4f, 0x57, 0x10, 0x18, 0x2a, 0x6b, 0x0a, 0x11, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x52, 0x4f, 0x53, 0x48, 0x41, 0x4e, 0x5f, 0x50, 0x48, 0x41, 0x53, 0x45, 0x12, 0x17, 0x0a, 0x13, 0x6b, 0x5f, 0x53, 0x52, 0x53, 0x50, 0x5f, 0x52, 0x4f, 0x53, 0x48, 0x41, 0x4e, 0x5f, 0x41, 0x4c, 0x49, 0x56, 0x45, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x6b, 0x5f, 0x53, 0x52, 0x53, 0x50, 0x5f, 0x52, 0x4f, 0x53, 0x48, 0x41, 0x4e, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x52, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x6b, 0x5f, 0x53, 0x52, 0x53, 0x50, 0x5f, 0x52, 0x4f, 0x53, 0x48, 0x41, 0x4e, 0x5f, 0x56, 0x49, 0x53, 0x49, 0x42, 0x4c, 0x45, 0x5f, 0x54, 0x49, 0x4d, 0x45, 0x52, 0x10, 0x02, 0x2a, 0x81, 0x04, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x43, 0x41, 0x54, 0x45, 0x47, 0x4f, 0x52, 0x59, 0x12, 0x16, 0x0a, 0x12, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x42, 0x4f, 0x54, 0x54, 0x4f, 0x4d, 0x5f, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4d, 0x49, 0x44, 0x5f, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x4f, 0x50, 0x5f, 0x4c, 0x41, 0x4e, 0x45, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x44, 0x49, 0x41, 0x4e, 0x54, 0x5f, 0x4a, 0x55, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x04, 0x12, 0x1d, 0x0a, 0x19, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x5f, 0x4a, 0x55, 0x4e, 0x47, 0x4c, 0x45, 0x10, 0x05, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x44, 0x49, 0x41, 0x4e, 0x54, 0x5f, 0x41, 0x4e, 0x43, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x06, 0x12, 0x1f, 0x0a, 0x1b, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x5f, 0x41, 0x4e, 0x43, 0x49, 0x45, 0x4e, 0x54, 0x53, 0x10, 0x07, 0x12, 0x25, 0x0a, 0x21, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x44, 0x49, 0x41, 0x4e, 0x54, 0x5f, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0x08, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x5f, 0x53, 0x45, 0x43, 0x52, 0x45, 0x54, 0x5f, 0x53, 0x48, 0x4f, 0x50, 0x10, 0x09, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x49, 0x56, 0x45, 0x52, 0x10, 0x0a, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x4f, 0x53, 0x48, 0x41, 0x4e, 0x5f, 0x50, 0x49, 0x54, 0x10, 0x0b, 0x12, 0x1e, 0x0a, 0x1a, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x41, 0x44, 0x49, 0x41, 0x4e, 0x54, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x0c, 0x12, 0x1b, 0x0a, 0x17, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x49, 0x52, 0x45, 0x5f, 0x42, 0x41, 0x53, 0x45, 0x10, 0x0d, 0x12, 0x1a, 0x0a, 0x16, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x54, 0x41, 0x49, 0x4e, 0x10, 0x0e, 0x12, 0x17, 0x0a, 0x13, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x54, 0x48, 0x45, 0x52, 0x10, 0x0f, 0x2a, 0xe6, 0x01, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x45, 0x4c, 0x46, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x59, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x41, 0x4c, 0x4c, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x45, 0x50, 0x10, 0x03, 0x12, 0x22, 0x0a, 0x1e, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x45, 0x4e, 0x45, 0x4d, 0x59, 0x5f, 0x48, 0x45, 0x52, 0x4f, 0x10, 0x04, 0x12, 0x23, 0x0a, 0x1f, 0x44, 0x4f, 0x54, 0x41, 0x5f, 0x41, 0x42, 0x49, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x41, 0x52, 0x47, 0x45, 0x54, 0x5f, 0x45, 0x4e, 0x45, 0x4d, 0x59, 0x5f, 0x43, 0x52, 0x45, 0x45, 0x50, 0x10, 0x05, 0x2a, 0x98, 0x08, 0x0a, 0x0d, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1e, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x41, 0x78, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x10, 0xd0, 0x0f, 0x12, 0x27, 0x0a, 0x22, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x48, 0x75, 0x6e, 0x67, 0x65, 0x72, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x10, 0xd1, 0x0f, 0x12, 0x27, 0x0a, 0x22, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x48, 0x65, 0x6c, 0x69, 0x78, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x10, 0xd2, 0x0f, 0x12, 0x27, 0x0a, 0x22, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x61, 0x64, 0x65, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x10, 0xd3, 0x0f, 0x12, 0x2c, 0x0a, 0x27, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x65, 0x72, 0x73, 0x65, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x43, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xd4, 0x0f, 0x12, 0x33, 0x0a, 0x2e, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x65, 0x72, 0x73, 0x65, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x48, 0x65, 0x72, 0x6f, 0x65, 0x73, 0x48, 0x69, 0x74, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x10, 0xd5, 0x0f, 0x12, 0x30, 0x0a, 0x2b, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x65, 0x72, 0x73, 0x65, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x48, 0x69, 0x74, 0x10, 0xd6, 0x0f, 0x12, 0x33, 0x0a, 0x2e, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x65, 0x72, 0x73, 0x65, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x48, 0x65, 0x72, 0x6f, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x73, 0x54, 0x61, 0x6b, 0x65, 0x6e, 0x10, 0xd7, 0x0f, 0x12, 0x34, 0x0a, 0x2f, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x65, 0x72, 0x73, 0x65, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x43, 0x61, 0x6c, 0x6c, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x41, 0x74, 0x74, 0x61, 0x63, 0x6b, 0x73, 0x54, 0x61, 0x6b, 0x65, 0x6e, 0x10, 0xd8, 0x0f, 0x12, 0x2a, 0x0a, 0x25, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x48, 0x75, 0x6e, 0x67, 0x65, 0x72, 0x43, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xd9, 0x0f, 0x12, 0x32, 0x0a, 0x2d, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x48, 0x75, 0x6e, 0x67, 0x65, 0x72, 0x50, 0x6f, 0x74, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xda, 0x0f, 0x12, 0x30, 0x0a, 0x2b, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x48, 0x75, 0x6e, 0x67, 0x65, 0x72, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x10, 0xdb, 0x0f, 0x12, 0x2a, 0x0a, 0x25, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x48, 0x65, 0x6c, 0x69, 0x78, 0x50, 0x72, 0x6f, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xdc, 0x0f, 0x12, 0x2e, 0x0a, 0x29, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x48, 0x65, 0x6c, 0x69, 0x78, 0x48, 0x65, 0x72, 0x6f, 0x50, 0x72, 0x6f, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xdd, 0x0f, 0x12, 0x31, 0x0a, 0x2c, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x48, 0x65, 0x6c, 0x69, 0x78, 0x48, 0x65, 0x72, 0x6f, 0x65, 0x73, 0x48, 0x69, 0x74, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x10, 0xde, 0x0f, 0x12, 0x33, 0x0a, 0x2e, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x48, 0x65, 0x6c, 0x69, 0x78, 0x4f, 0x74, 0x68, 0x65, 0x72, 0x55, 0x6e, 0x69, 0x74, 0x73, 0x48, 0x69, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xdf, 0x0f, 0x12, 0x2a, 0x0a, 0x25, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x61, 0x64, 0x65, 0x43, 0x61, 0x73, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe0, 0x0f, 0x12, 0x2a, 0x0a, 0x25, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x61, 0x64, 0x65, 0x4b, 0x69, 0x6c, 0x6c, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x10, 0xe1, 0x0f, 0x12, 0x34, 0x0a, 0x2f, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x61, 0x64, 0x65, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x75, 0x6c, 0x6c, 0x65, 0x64, 0x10, 0xe2, 0x0f, 0x12, 0x37, 0x0a, 0x32, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x61, 0x64, 0x65, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x44, 0x61, 0x6d, 0x61, 0x67, 0x65, 0x41, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x10, 0xe3, 0x0f, 0x12, 0x30, 0x0a, 0x2b, 0x6b, 0x5f, 0x45, 0x48, 0x65, 0x72, 0x6f, 0x53, 0x74, 0x61, 0x74, 0x54, 0x79, 0x70, 0x65, 0x5f, 0x43, 0x75, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x42, 0x6c, 0x61, 0x64, 0x65, 0x48, 0x65, 0x72, 0x6f, 0x42, 0x75, 0x66, 0x66, 0x41, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x10, 0xe4, 0x0f, 0x2a, 0xe4, 0x04, 0x0a, 0x17, 0x45, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x56, 0x6f, 0x69, 0x63, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x0a, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x43, 0x68, 0x61, 0x74, 0x42, 0x61, 0x6e, 0x6e, 0x65, 0x64, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x50, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x48, 0x4c, 0x54, 0x56, 0x54, 0x61, 0x6c, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x53, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x03, 0x12, 0x24, 0x0a, 0x20, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x48, 0x4c, 0x54, 0x56, 0x4e, 0x6f, 0x54, 0x61, 0x6c, 0x6b, 0x65, 0x72, 0x50, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x49, 0x44, 0x10, 0x04, 0x12, 0x28, 0x0a, 0x24, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x48, 0x4c, 0x54, 0x56, 0x54, 0x61, 0x6c, 0x6b, 0x65, 0x72, 0x4e, 0x6f, 0x74, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x10, 0x05, 0x12, 0x1d, 0x0a, 0x19, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x54, 0x65, 0x61, 0x6d, 0x53, 0x70, 0x65, 0x63, 0x74, 0x61, 0x74, 0x6f, 0x72, 0x10, 0x06, 0x12, 0x17, 0x0a, 0x13, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x10, 0x08, 0x12, 0x1c, 0x0a, 0x18, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x10, 0x09, 0x12, 0x10, 0x0a, 0x0c, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x44, 0x65, 0x6e, 0x69, 0x65, 0x64, 0x10, 0x40, 0x12, 0x26, 0x0a, 0x22, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x48, 0x4c, 0x54, 0x56, 0x54, 0x61, 0x6c, 0x6b, 0x65, 0x72, 0x49, 0x73, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x10, 0x41, 0x12, 0x1c, 0x0a, 0x18, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x42, 0x72, 0x6f, 0x61, 0x64, 0x63, 0x61, 0x73, 0x74, 0x65, 0x72, 0x10, 0x42, 0x12, 0x16, 0x0a, 0x12, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x41, 0x6c, 0x6c, 0x43, 0x68, 0x61, 0x74, 0x10, 0x43, 0x12, 0x1d, 0x0a, 0x19, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x54, 0x6f, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x10, 0x44, 0x12, 0x1c, 0x0a, 0x18, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x46, 0x65, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x74, 0x75, 0x64, 0x65, 0x6e, 0x74, 0x10, 0x45, 0x12, 0x1c, 0x0a, 0x18, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x54, 0x61, 0x6c, 0x6b, 0x65, 0x72, 0x49, 0x73, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x10, 0x46, 0x12, 0x1c, 0x0a, 0x18, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x48, 0x65, 0x61, 0x72, 0x54, 0x65, 0x61, 0x6d, 0x10, 0x47, 0x12, 0x17, 0x0a, 0x13, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x61, 0x6d, 0x65, 0x54, 0x65, 0x61, 0x6d, 0x10, 0x48, 0x12, 0x17, 0x0a, 0x13, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x53, 0x68, 0x6f, 0x77, 0x63, 0x61, 0x73, 0x65, 0x10, 0x49, 0x12, 0x1b, 0x0a, 0x17, 0x6b, 0x50, 0x56, 0x4c, 0x53, 0x5f, 0x41, 0x6c, 0x6c, 0x6f, 0x77, 0x50, 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x61, 0x63, 0x68, 0x10, 0x4a, 0x2a, 0x42, 0x0a, 0x10, 0x45, 0x50, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x12, 0x0a, 0x0e, 0x65, 0x50, 0x45, 0x5f, 0x46, 0x69, 0x72, 0x73, 0x74, 0x42, 0x6c, 0x6f, 0x6f, 0x64, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x65, 0x50, 0x45, 0x5f, 0x4b, 0x69, 0x6c, 0x6c, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6b, 0x5f, 0x67, 0x6f, 0x64, 0x6c, 0x69, 0x6b, 0x65, 0x10, 0x01, 0x42, 0x0d, 0x48, 0x01, 0x5a, 0x06, 0x2e, 0x2f, 0x64, 0x65, 0x6d, 0x6f, 0x80, 0x01, 0x00, } var ( file_dota_usermessages_proto_rawDescOnce sync.Once file_dota_usermessages_proto_rawDescData = file_dota_usermessages_proto_rawDesc ) func file_dota_usermessages_proto_rawDescGZIP() []byte { file_dota_usermessages_proto_rawDescOnce.Do(func() { file_dota_usermessages_proto_rawDescData = protoimpl.X.CompressGZIP(file_dota_usermessages_proto_rawDescData) }) return file_dota_usermessages_proto_rawDescData } var file_dota_usermessages_proto_enumTypes = make([]protoimpl.EnumInfo, 17) var file_dota_usermessages_proto_msgTypes = make([]protoimpl.MessageInfo, 171) var file_dota_usermessages_proto_goTypes = []interface{}{ (EDotaUserMessages)(0), // 0: EDotaUserMessages (DOTA_CHAT_MESSAGE)(0), // 1: DOTA_CHAT_MESSAGE (DOTA_NO_BATTLE_POINTS_REASONS)(0), // 2: DOTA_NO_BATTLE_POINTS_REASONS (DOTA_CHAT_INFORMATIONAL)(0), // 3: DOTA_CHAT_INFORMATIONAL (DOTA_ABILITY_PING_TYPE)(0), // 4: DOTA_ABILITY_PING_TYPE (DOTA_REPLAY_STATE_EVENT)(0), // 5: DOTA_REPLAY_STATE_EVENT (EDotaEntityMessages)(0), // 6: EDotaEntityMessages (DOTA_OVERHEAD_ALERT)(0), // 7: DOTA_OVERHEAD_ALERT (DOTA_ROSHAN_PHASE)(0), // 8: DOTA_ROSHAN_PHASE (DOTA_POSITION_CATEGORY)(0), // 9: DOTA_POSITION_CATEGORY (DOTA_ABILITY_TARGET_TYPE)(0), // 10: DOTA_ABILITY_TARGET_TYPE (EHeroStatType)(0), // 11: EHeroStatType (EPlayerVoiceListenState)(0), // 12: EPlayerVoiceListenState (EProjectionEvent)(0), // 13: EProjectionEvent (CDOTAUserMsg_PredictionResult_Prediction_EResult)(0), // 14: CDOTAUserMsg_PredictionResult.Prediction.EResult (CDOTAResponseQuerySerialized_Fact_ValueType)(0), // 15: CDOTAResponseQuerySerialized.Fact.ValueType (CDOTAUserMsg_GuildChallenge_Progress_EChallengeType)(0), // 16: CDOTAUserMsg_GuildChallenge_Progress.EChallengeType (*CDOTAUserMsg_AIDebugLine)(nil), // 17: CDOTAUserMsg_AIDebugLine (*CDOTAUserMsg_Ping)(nil), // 18: CDOTAUserMsg_Ping (*CDOTAUserMsg_SwapVerify)(nil), // 19: CDOTAUserMsg_SwapVerify (*CDOTAUserMsg_ChatEvent)(nil), // 20: CDOTAUserMsg_ChatEvent (*CDOTAUserMsg_BotChat)(nil), // 21: CDOTAUserMsg_BotChat (*CDOTAUserMsg_CombatHeroPositions)(nil), // 22: CDOTAUserMsg_CombatHeroPositions (*CDOTAUserMsg_CombatLogBulkData)(nil), // 23: CDOTAUserMsg_CombatLogBulkData (*CDOTAUserMsg_ProjectileParticleCPData)(nil), // 24: CDOTAUserMsg_ProjectileParticleCPData (*CDOTAUserMsg_MiniKillCamInfo)(nil), // 25: CDOTAUserMsg_MiniKillCamInfo (*CDOTAUserMsg_GlobalLightColor)(nil), // 26: CDOTAUserMsg_GlobalLightColor (*CDOTAUserMsg_GlobalLightDirection)(nil), // 27: CDOTAUserMsg_GlobalLightDirection (*CDOTAUserMsg_LocationPing)(nil), // 28: CDOTAUserMsg_LocationPing (*CDOTAUserMsg_PingConfirmation)(nil), // 29: CDOTAUserMsg_PingConfirmation (*CDOTAUserMsg_ItemAlert)(nil), // 30: CDOTAUserMsg_ItemAlert (*CDOTAUserMsg_EnemyItemAlert)(nil), // 31: CDOTAUserMsg_EnemyItemAlert (*CDOTAUserMsg_ModifierAlert)(nil), // 32: CDOTAUserMsg_ModifierAlert (*CDOTAUserMsg_HPManaAlert)(nil), // 33: CDOTAUserMsg_HPManaAlert (*CDOTAUserMsg_GlyphAlert)(nil), // 34: CDOTAUserMsg_GlyphAlert (*CDOTAUserMsg_RadarAlert)(nil), // 35: CDOTAUserMsg_RadarAlert (*CDOTAUserMsg_WillPurchaseAlert)(nil), // 36: CDOTAUserMsg_WillPurchaseAlert (*CDOTAUserMsg_EmptyTeleportAlert)(nil), // 37: CDOTAUserMsg_EmptyTeleportAlert (*CDOTAUserMsg_MarsArenaOfBloodAttack)(nil), // 38: CDOTAUserMsg_MarsArenaOfBloodAttack (*CDOTAEntityMsg_InvokerSpellCast)(nil), // 39: CDOTAEntityMsg_InvokerSpellCast (*CDOTAUserMsg_BuyBackStateAlert)(nil), // 40: CDOTAUserMsg_BuyBackStateAlert (*CDOTAUserMsg_QuickBuyAlert)(nil), // 41: CDOTAUserMsg_QuickBuyAlert (*CDOTAUserMsg_CourierKilledAlert)(nil), // 42: CDOTAUserMsg_CourierKilledAlert (*CDOTAUserMsg_MinimapEvent)(nil), // 43: CDOTAUserMsg_MinimapEvent (*CDOTAUserMsg_MapLine)(nil), // 44: CDOTAUserMsg_MapLine (*CDOTAUserMsg_MinimapDebugPoint)(nil), // 45: CDOTAUserMsg_MinimapDebugPoint (*CDOTAUserMsg_CreateLinearProjectile)(nil), // 46: CDOTAUserMsg_CreateLinearProjectile (*CDOTAUserMsg_DestroyLinearProjectile)(nil), // 47: CDOTAUserMsg_DestroyLinearProjectile (*CDOTAUserMsg_DodgeTrackingProjectiles)(nil), // 48: CDOTAUserMsg_DodgeTrackingProjectiles (*CDOTAUserMsg_SpectatorPlayerClick)(nil), // 49: CDOTAUserMsg_SpectatorPlayerClick (*CDOTAUserMsg_SpectatorPlayerUnitOrders)(nil), // 50: CDOTAUserMsg_SpectatorPlayerUnitOrders (*CDOTAUserMsg_NevermoreRequiem)(nil), // 51: CDOTAUserMsg_NevermoreRequiem (*CDOTAUserMsg_InvalidCommand)(nil), // 52: CDOTAUserMsg_InvalidCommand (*CDOTAUserMsg_HudError)(nil), // 53: CDOTAUserMsg_HudError (*CDOTAUserMsg_SharedCooldown)(nil), // 54: CDOTAUserMsg_SharedCooldown (*CDOTAUserMsg_SetNextAutobuyItem)(nil), // 55: CDOTAUserMsg_SetNextAutobuyItem (*CDOTAUserMsg_HalloweenDrops)(nil), // 56: CDOTAUserMsg_HalloweenDrops (*CDOTAUserMsg_PredictionResult)(nil), // 57: CDOTAUserMsg_PredictionResult (*CDOTAResponseQuerySerialized)(nil), // 58: CDOTAResponseQuerySerialized (*CDOTASpeechMatchOnClient)(nil), // 59: CDOTASpeechMatchOnClient (*CDOTAUserMsg_UnitEvent)(nil), // 60: CDOTAUserMsg_UnitEvent (*CDOTAUserMsg_ItemPurchased)(nil), // 61: CDOTAUserMsg_ItemPurchased (*CDOTAUserMsg_ItemSold)(nil), // 62: CDOTAUserMsg_ItemSold (*CDOTAUserMsg_ItemFound)(nil), // 63: CDOTAUserMsg_ItemFound (*CDOTAUserMsg_OverheadEvent)(nil), // 64: CDOTAUserMsg_OverheadEvent (*CDOTAUserMsg_TutorialTipInfo)(nil), // 65: CDOTAUserMsg_TutorialTipInfo (*CDOTAUserMsg_TutorialFinish)(nil), // 66: CDOTAUserMsg_TutorialFinish (*CDOTAUserMsg_TutorialMinimapPosition)(nil), // 67: CDOTAUserMsg_TutorialMinimapPosition (*CDOTAUserMsg_SendGenericToolTip)(nil), // 68: CDOTAUserMsg_SendGenericToolTip (*CDOTAUserMsg_WorldLine)(nil), // 69: CDOTAUserMsg_WorldLine (*CDOTAUserMsg_ChatWheel)(nil), // 70: CDOTAUserMsg_ChatWheel (*CDOTAUserMsg_ReceivedXmasGift)(nil), // 71: CDOTAUserMsg_ReceivedXmasGift (*CDOTAUserMsg_ShowSurvey)(nil), // 72: CDOTAUserMsg_ShowSurvey (*CDOTAUserMsg_UpdateSharedContent)(nil), // 73: CDOTAUserMsg_UpdateSharedContent (*CDOTAUserMsg_TutorialRequestExp)(nil), // 74: CDOTAUserMsg_TutorialRequestExp (*CDOTAUserMsg_TutorialFade)(nil), // 75: CDOTAUserMsg_TutorialFade (*CDOTAUserMsg_TutorialPingMinimap)(nil), // 76: CDOTAUserMsg_TutorialPingMinimap (*CDOTAUserMsg_GamerulesStateChanged)(nil), // 77: CDOTAUserMsg_GamerulesStateChanged (*CDOTAUserMsg_AddQuestLogEntry)(nil), // 78: CDOTAUserMsg_AddQuestLogEntry (*CDOTAUserMsg_SendStatPopup)(nil), // 79: CDOTAUserMsg_SendStatPopup (*CDOTAUserMsg_DismissAllStatPopups)(nil), // 80: CDOTAUserMsg_DismissAllStatPopups (*CDOTAUserMsg_SendRoshanSpectatorPhase)(nil), // 81: CDOTAUserMsg_SendRoshanSpectatorPhase (*CDOTAUserMsg_SendRoshanPopup)(nil), // 82: CDOTAUserMsg_SendRoshanPopup (*CDOTAUserMsg_SendFinalGold)(nil), // 83: CDOTAUserMsg_SendFinalGold (*CDOTAUserMsg_CustomMsg)(nil), // 84: CDOTAUserMsg_CustomMsg (*CDOTAUserMsg_CoachHUDPing)(nil), // 85: CDOTAUserMsg_CoachHUDPing (*CDOTAUserMsg_ClientLoadGridNav)(nil), // 86: CDOTAUserMsg_ClientLoadGridNav (*CDOTAUserMsg_TE_Projectile)(nil), // 87: CDOTAUserMsg_TE_Projectile (*CDOTAUserMsg_TE_ProjectileLoc)(nil), // 88: CDOTAUserMsg_TE_ProjectileLoc (*CDOTAUserMsg_TE_DestroyProjectile)(nil), // 89: CDOTAUserMsg_TE_DestroyProjectile (*CDOTAUserMsg_TE_DotaBloodImpact)(nil), // 90: CDOTAUserMsg_TE_DotaBloodImpact (*CDOTAUserMsg_AbilityPing)(nil), // 91: CDOTAUserMsg_AbilityPing (*CDOTAUserMsg_TE_UnitAnimation)(nil), // 92: CDOTAUserMsg_TE_UnitAnimation (*CDOTAUserMsg_TE_UnitAnimationEnd)(nil), // 93: CDOTAUserMsg_TE_UnitAnimationEnd (*CDOTAUserMsg_ShowGenericPopup)(nil), // 94: CDOTAUserMsg_ShowGenericPopup (*CDOTAUserMsg_VoteStart)(nil), // 95: CDOTAUserMsg_VoteStart (*CDOTAUserMsg_VoteUpdate)(nil), // 96: CDOTAUserMsg_VoteUpdate (*CDOTAUserMsg_VoteEnd)(nil), // 97: CDOTAUserMsg_VoteEnd (*CDOTAUserMsg_BoosterStatePlayer)(nil), // 98: CDOTAUserMsg_BoosterStatePlayer (*CDOTAUserMsg_BoosterState)(nil), // 99: CDOTAUserMsg_BoosterState (*CDOTAUserMsg_PlayerMMR)(nil), // 100: CDOTAUserMsg_PlayerMMR (*CDOTAUserMsg_AbilitySteal)(nil), // 101: CDOTAUserMsg_AbilitySteal (*CDOTAUserMsg_StatsHeroLookup)(nil), // 102: CDOTAUserMsg_StatsHeroLookup (*CDOTAUserMsg_StatsHeroPositionInfo)(nil), // 103: CDOTAUserMsg_StatsHeroPositionInfo (*CDOTAUserMsg_StatsHeroMinuteDetails)(nil), // 104: CDOTAUserMsg_StatsHeroMinuteDetails (*CDOTAUserMsg_StatsTeamMinuteDetails)(nil), // 105: CDOTAUserMsg_StatsTeamMinuteDetails (*CDOTAUserMsg_StatsPlayerKillShare)(nil), // 106: CDOTAUserMsg_StatsPlayerKillShare (*CDOTAUserMsg_StatsKillDetails)(nil), // 107: CDOTAUserMsg_StatsKillDetails (*CDOTAUserMsg_StatsMatchDetails)(nil), // 108: CDOTAUserMsg_StatsMatchDetails (*CDOTAUserMsg_MiniTaunt)(nil), // 109: CDOTAUserMsg_MiniTaunt (*CDOTAUserMsg_SpeechBubble)(nil), // 110: CDOTAUserMsg_SpeechBubble (*CDOTAUserMsg_CustomHeaderMessage)(nil), // 111: CDOTAUserMsg_CustomHeaderMessage (*CMsgHeroAbilityStat)(nil), // 112: CMsgHeroAbilityStat (*CMsgCombatAnalyzerPlayerStat)(nil), // 113: CMsgCombatAnalyzerPlayerStat (*CMsgCombatAnalyzerStats)(nil), // 114: CMsgCombatAnalyzerStats (*CDOTAUserMsg_BeastChat)(nil), // 115: CDOTAUserMsg_BeastChat (*CDOTAUserMsg_CustomHudElement_Create)(nil), // 116: CDOTAUserMsg_CustomHudElement_Create (*CDOTAUserMsg_CustomHudElement_Modify)(nil), // 117: CDOTAUserMsg_CustomHudElement_Modify (*CDOTAUserMsg_CustomHudElement_Destroy)(nil), // 118: CDOTAUserMsg_CustomHudElement_Destroy (*CDOTAUserMsg_CompendiumStatePlayer)(nil), // 119: CDOTAUserMsg_CompendiumStatePlayer (*CDOTAUserMsg_CompendiumState)(nil), // 120: CDOTAUserMsg_CompendiumState (*CDOTAUserMsg_ProjectionAbility)(nil), // 121: CDOTAUserMsg_ProjectionAbility (*CDOTAUserMsg_ProjectionEvent)(nil), // 122: CDOTAUserMsg_ProjectionEvent (*CDOTAUserMsg_XPAlert)(nil), // 123: CDOTAUserMsg_XPAlert (*CDOTAUserMsg_TalentTreeAlert)(nil), // 124: CDOTAUserMsg_TalentTreeAlert (*CDOTAUserMsg_UpdateQuestProgress)(nil), // 125: CDOTAUserMsg_UpdateQuestProgress (*CDOTAUserMsg_QuestStatus)(nil), // 126: CDOTAUserMsg_QuestStatus (*CDOTAUserMsg_SuggestHeroPick)(nil), // 127: CDOTAUserMsg_SuggestHeroPick (*CDOTAUserMsg_SuggestHeroRole)(nil), // 128: CDOTAUserMsg_SuggestHeroRole (*CDOTAUserMsg_KillcamDamageTaken)(nil), // 129: CDOTAUserMsg_KillcamDamageTaken (*CDOTAUserMsg_SelectPenaltyGold)(nil), // 130: CDOTAUserMsg_SelectPenaltyGold (*CDOTAUserMsg_RollDiceResult)(nil), // 131: CDOTAUserMsg_RollDiceResult (*CDOTAUserMsg_FlipCoinResult)(nil), // 132: CDOTAUserMsg_FlipCoinResult (*CDOTAUserMessage_RequestItemSuggestions)(nil), // 133: CDOTAUserMessage_RequestItemSuggestions (*CDOTAUserMessage_TeamCaptainChanged)(nil), // 134: CDOTAUserMessage_TeamCaptainChanged (*CDOTAUserMsg_ChatWheelCooldown)(nil), // 135: CDOTAUserMsg_ChatWheelCooldown (*CDOTAUserMsg_HeroRelicProgress)(nil), // 136: CDOTAUserMsg_HeroRelicProgress (*CDOTAUserMsg_AbilityDraftRequestAbility)(nil), // 137: CDOTAUserMsg_AbilityDraftRequestAbility (*CDOTAUserMsg_DamageReport)(nil), // 138: CDOTAUserMsg_DamageReport (*CDOTAUserMsg_SalutePlayer)(nil), // 139: CDOTAUserMsg_SalutePlayer (*CDOTAUserMsg_TipAlert)(nil), // 140: CDOTAUserMsg_TipAlert (*CDOTAUserMsg_ReplaceQueryUnit)(nil), // 141: CDOTAUserMsg_ReplaceQueryUnit (*CDOTAUserMsg_ESArcanaCombo)(nil), // 142: CDOTAUserMsg_ESArcanaCombo (*CDOTAUserMsg_ESArcanaComboSummary)(nil), // 143: CDOTAUserMsg_ESArcanaComboSummary (*CDOTAUserMsg_OMArcanaCombo)(nil), // 144: CDOTAUserMsg_OMArcanaCombo (*CDOTAUserMsg_HighFiveCompleted)(nil), // 145: CDOTAUserMsg_HighFiveCompleted (*CDOTAUserMsg_HighFiveLeftHanging)(nil), // 146: CDOTAUserMsg_HighFiveLeftHanging (*CDOTAUserMsg_ShovelUnearth)(nil), // 147: CDOTAUserMsg_ShovelUnearth (*CDOTAUserMsg_AllStarEvent)(nil), // 148: CDOTAUserMsg_AllStarEvent (*CDOTAUserMsg_QueuedOrderRemoved)(nil), // 149: CDOTAUserMsg_QueuedOrderRemoved (*CDOTAUserMsg_DebugChallenge)(nil), // 150: CDOTAUserMsg_DebugChallenge (*CDOTAUserMsg_FoundNeutralItem)(nil), // 151: CDOTAUserMsg_FoundNeutralItem (*CDOTAUserMsg_OutpostCaptured)(nil), // 152: CDOTAUserMsg_OutpostCaptured (*CDOTAUserMsg_OutpostGrantedXP)(nil), // 153: CDOTAUserMsg_OutpostGrantedXP (*CDOTAUserMsg_MoveCameraToUnit)(nil), // 154: CDOTAUserMsg_MoveCameraToUnit (*CDOTAUserMsg_PauseMinigameData)(nil), // 155: CDOTAUserMsg_PauseMinigameData (*CDOTAUserMsg_VersusScene_PlayerBehavior)(nil), // 156: CDOTAUserMsg_VersusScene_PlayerBehavior (*CDOTAUserMsg_QoP_ArcanaSummary)(nil), // 157: CDOTAUserMsg_QoP_ArcanaSummary (*CDOTAUserMsg_HotPotato_Created)(nil), // 158: CDOTAUserMsg_HotPotato_Created (*CDOTAUserMsg_HotPotato_Exploded)(nil), // 159: CDOTAUserMsg_HotPotato_Exploded (*CDOTAUserMsg_WK_Arcana_Progress)(nil), // 160: CDOTAUserMsg_WK_Arcana_Progress (*CDOTAUserMsg_GuildChallenge_Progress)(nil), // 161: CDOTAUserMsg_GuildChallenge_Progress (*CDOTAUserMsg_WRArcanaProgress)(nil), // 162: CDOTAUserMsg_WRArcanaProgress (*CDOTAUserMsg_WRArcanaSummary)(nil), // 163: CDOTAUserMsg_WRArcanaSummary (*CDOTAUserMsg_EmptyItemSlotAlert)(nil), // 164: CDOTAUserMsg_EmptyItemSlotAlert (*CDOTAUserMsg_AghsStatusAlert)(nil), // 165: CDOTAUserMsg_AghsStatusAlert (*CDOTAUserMsg_MutedPlayers)(nil), // 166: CDOTAUserMsg_MutedPlayers (*CDOTAUserMsg_ContextualTip)(nil), // 167: CDOTAUserMsg_ContextualTip (*CDOTAUserMsg_ChatMessage)(nil), // 168: CDOTAUserMsg_ChatMessage (*CDOTAUserMsg_MiniKillCamInfo_Attacker)(nil), // 169: CDOTAUserMsg_MiniKillCamInfo.Attacker (*CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability)(nil), // 170: CDOTAUserMsg_MiniKillCamInfo.Attacker.Ability (*CDOTAUserMsg_CourierKilledAlert_LostItem)(nil), // 171: CDOTAUserMsg_CourierKilledAlert.LostItem (*CDOTAUserMsg_PredictionResult_Prediction)(nil), // 172: CDOTAUserMsg_PredictionResult.Prediction (*CDOTAResponseQuerySerialized_Fact)(nil), // 173: CDOTAResponseQuerySerialized.Fact (*CDOTAUserMsg_UnitEvent_Interval)(nil), // 174: CDOTAUserMsg_UnitEvent.Interval (*CDOTAUserMsg_UnitEvent_Speech)(nil), // 175: CDOTAUserMsg_UnitEvent.Speech (*CDOTAUserMsg_UnitEvent_SpeechMute)(nil), // 176: CDOTAUserMsg_UnitEvent.SpeechMute (*CDOTAUserMsg_UnitEvent_AddGesture)(nil), // 177: CDOTAUserMsg_UnitEvent.AddGesture (*CDOTAUserMsg_UnitEvent_RemoveGesture)(nil), // 178: CDOTAUserMsg_UnitEvent.RemoveGesture (*CDOTAUserMsg_UnitEvent_BloodImpact)(nil), // 179: CDOTAUserMsg_UnitEvent.BloodImpact (*CDOTAUserMsg_UnitEvent_FadeGesture)(nil), // 180: CDOTAUserMsg_UnitEvent.FadeGesture (*CDOTAUserMsg_StatsHeroPositionInfo_PositionPair)(nil), // 181: CDOTAUserMsg_StatsHeroPositionInfo.PositionPair (*CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance)(nil), // 182: CDOTAUserMsg_StatsTeamMinuteDetails.LocationPerformance (*CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails)(nil), // 183: CDOTAUserMsg_StatsMatchDetails.CDOTAUserMsg_StatsFightTeamDetails (*CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails)(nil), // 184: CDOTAUserMsg_StatsMatchDetails.CDOTAUserMsg_StatsFightDetails (*CDOTAUserMsg_AllStarEvent_PlayerScore)(nil), // 185: CDOTAUserMsg_AllStarEvent.PlayerScore (*CDOTAUserMsg_PauseMinigameData_DataBit)(nil), // 186: CDOTAUserMsg_PauseMinigameData.DataBit (*CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress)(nil), // 187: CDOTAUserMsg_GuildChallenge_Progress.PlayerProgress (*CMsgVector2D)(nil), // 188: CMsgVector2D (*CMsgDOTACombatLogEntry)(nil), // 189: CMsgDOTACombatLogEntry (*CMsgVector)(nil), // 190: CMsgVector (*CDOTAMsg_LocationPing)(nil), // 191: CDOTAMsg_LocationPing (*CDOTAMsg_ItemAlert)(nil), // 192: CDOTAMsg_ItemAlert (*CEntityMsg)(nil), // 193: CEntityMsg (*CDOTAMsg_MapLine)(nil), // 194: CDOTAMsg_MapLine (*CDOTAMsg_WorldLine)(nil), // 195: CDOTAMsg_WorldLine (*CDOTAMsg_SendStatPopup)(nil), // 196: CDOTAMsg_SendStatPopup (*CDOTAMsg_DismissAllStatPopups)(nil), // 197: CDOTAMsg_DismissAllStatPopups (*CDOTAMsg_CoachHUDPing)(nil), // 198: CDOTAMsg_CoachHUDPing (EDOTAVersusScenePlayerBehavior)(0), // 199: EDOTAVersusScenePlayerBehavior (*VersusScene_PlayActivity)(nil), // 200: VersusScene_PlayActivity (*VersusScene_ChatWheel)(nil), // 201: VersusScene_ChatWheel (*VersusScene_PlaybackRate)(nil), // 202: VersusScene_PlaybackRate } var file_dota_usermessages_proto_depIdxs = []int32{ 1, // 0: CDOTAUserMsg_ChatEvent.type:type_name -> DOTA_CHAT_MESSAGE 188, // 1: CDOTAUserMsg_CombatHeroPositions.world_pos:type_name -> CMsgVector2D 189, // 2: CDOTAUserMsg_CombatLogBulkData.combat_entries:type_name -> CMsgDOTACombatLogEntry 190, // 3: CDOTAUserMsg_ProjectileParticleCPData.vector:type_name -> CMsgVector 169, // 4: CDOTAUserMsg_MiniKillCamInfo.attackers:type_name -> CDOTAUserMsg_MiniKillCamInfo.Attacker 190, // 5: CDOTAUserMsg_GlobalLightDirection.direction:type_name -> CMsgVector 191, // 6: CDOTAUserMsg_LocationPing.location_ping:type_name -> CDOTAMsg_LocationPing 190, // 7: CDOTAUserMsg_PingConfirmation.location:type_name -> CMsgVector 192, // 8: CDOTAUserMsg_ItemAlert.item_alert:type_name -> CDOTAMsg_ItemAlert 193, // 9: CDOTAEntityMsg_InvokerSpellCast.entity_msg:type_name -> CEntityMsg 171, // 10: CDOTAUserMsg_CourierKilledAlert.lost_items:type_name -> CDOTAUserMsg_CourierKilledAlert.LostItem 194, // 11: CDOTAUserMsg_MapLine.mapline:type_name -> CDOTAMsg_MapLine 190, // 12: CDOTAUserMsg_MinimapDebugPoint.location:type_name -> CMsgVector 190, // 13: CDOTAUserMsg_CreateLinearProjectile.origin:type_name -> CMsgVector 188, // 14: CDOTAUserMsg_CreateLinearProjectile.velocity:type_name -> CMsgVector2D 188, // 15: CDOTAUserMsg_CreateLinearProjectile.acceleration:type_name -> CMsgVector2D 24, // 16: CDOTAUserMsg_CreateLinearProjectile.particle_cp_data:type_name -> CDOTAUserMsg_ProjectileParticleCPData 190, // 17: CDOTAUserMsg_SpectatorPlayerUnitOrders.position:type_name -> CMsgVector 190, // 18: CDOTAUserMsg_NevermoreRequiem.origin:type_name -> CMsgVector 172, // 19: CDOTAUserMsg_PredictionResult.predictions:type_name -> CDOTAUserMsg_PredictionResult.Prediction 173, // 20: CDOTAResponseQuerySerialized.facts:type_name -> CDOTAResponseQuerySerialized.Fact 58, // 21: CDOTASpeechMatchOnClient.responsequery:type_name -> CDOTAResponseQuerySerialized 6, // 22: CDOTAUserMsg_UnitEvent.msg_type:type_name -> EDotaEntityMessages 175, // 23: CDOTAUserMsg_UnitEvent.speech:type_name -> CDOTAUserMsg_UnitEvent.Speech 176, // 24: CDOTAUserMsg_UnitEvent.speech_mute:type_name -> CDOTAUserMsg_UnitEvent.SpeechMute 177, // 25: CDOTAUserMsg_UnitEvent.add_gesture:type_name -> CDOTAUserMsg_UnitEvent.AddGesture 178, // 26: CDOTAUserMsg_UnitEvent.remove_gesture:type_name -> CDOTAUserMsg_UnitEvent.RemoveGesture 179, // 27: CDOTAUserMsg_UnitEvent.blood_impact:type_name -> CDOTAUserMsg_UnitEvent.BloodImpact 180, // 28: CDOTAUserMsg_UnitEvent.fade_gesture:type_name -> CDOTAUserMsg_UnitEvent.FadeGesture 59, // 29: CDOTAUserMsg_UnitEvent.speech_match_on_client:type_name -> CDOTASpeechMatchOnClient 7, // 30: CDOTAUserMsg_OverheadEvent.message_type:type_name -> DOTA_OVERHEAD_ALERT 195, // 31: CDOTAUserMsg_WorldLine.worldline:type_name -> CDOTAMsg_WorldLine 196, // 32: CDOTAUserMsg_SendStatPopup.statpopup:type_name -> CDOTAMsg_SendStatPopup 197, // 33: CDOTAUserMsg_DismissAllStatPopups.dismissallmsg:type_name -> CDOTAMsg_DismissAllStatPopups 8, // 34: CDOTAUserMsg_SendRoshanSpectatorPhase.phase:type_name -> DOTA_ROSHAN_PHASE 198, // 35: CDOTAUserMsg_CoachHUDPing.hud_ping:type_name -> CDOTAMsg_CoachHUDPing 190, // 36: CDOTAUserMsg_TE_Projectile.target_loc:type_name -> CMsgVector 24, // 37: CDOTAUserMsg_TE_Projectile.particle_cp_data:type_name -> CDOTAUserMsg_ProjectileParticleCPData 190, // 38: CDOTAUserMsg_TE_ProjectileLoc.source_loc:type_name -> CMsgVector 190, // 39: CDOTAUserMsg_TE_ProjectileLoc.target_loc:type_name -> CMsgVector 24, // 40: CDOTAUserMsg_TE_ProjectileLoc.particle_cp_data:type_name -> CDOTAUserMsg_ProjectileParticleCPData 4, // 41: CDOTAUserMsg_AbilityPing.type:type_name -> DOTA_ABILITY_PING_TYPE 98, // 42: CDOTAUserMsg_BoosterState.boosted_players:type_name -> CDOTAUserMsg_BoosterStatePlayer 181, // 43: CDOTAUserMsg_StatsHeroPositionInfo.position_details:type_name -> CDOTAUserMsg_StatsHeroPositionInfo.PositionPair 103, // 44: CDOTAUserMsg_StatsHeroMinuteDetails.position_info:type_name -> CDOTAUserMsg_StatsHeroPositionInfo 104, // 45: CDOTAUserMsg_StatsTeamMinuteDetails.player_stats:type_name -> CDOTAUserMsg_StatsHeroMinuteDetails 182, // 46: CDOTAUserMsg_StatsTeamMinuteDetails.lane_performance:type_name -> CDOTAUserMsg_StatsTeamMinuteDetails.LocationPerformance 106, // 47: CDOTAUserMsg_StatsKillDetails.kill_shares:type_name -> CDOTAUserMsg_StatsPlayerKillShare 102, // 48: CDOTAUserMsg_StatsMatchDetails.hero_lookup:type_name -> CDOTAUserMsg_StatsHeroLookup 105, // 49: CDOTAUserMsg_StatsMatchDetails.radiant_stats:type_name -> CDOTAUserMsg_StatsTeamMinuteDetails 105, // 50: CDOTAUserMsg_StatsMatchDetails.dire_stats:type_name -> CDOTAUserMsg_StatsTeamMinuteDetails 107, // 51: CDOTAUserMsg_StatsMatchDetails.radiant_kills:type_name -> CDOTAUserMsg_StatsKillDetails 107, // 52: CDOTAUserMsg_StatsMatchDetails.dire_kills:type_name -> CDOTAUserMsg_StatsKillDetails 184, // 53: CDOTAUserMsg_StatsMatchDetails.fight_details:type_name -> CDOTAUserMsg_StatsMatchDetails.CDOTAUserMsg_StatsFightDetails 11, // 54: CMsgHeroAbilityStat.stat_type:type_name -> EHeroStatType 112, // 55: CMsgCombatAnalyzerPlayerStat.hero_ability_stats:type_name -> CMsgHeroAbilityStat 113, // 56: CMsgCombatAnalyzerStats.player_stats:type_name -> CMsgCombatAnalyzerPlayerStat 119, // 57: CDOTAUserMsg_CompendiumState.compendium_players:type_name -> CDOTAUserMsg_CompendiumStatePlayer 190, // 58: CDOTAUserMsg_ProjectionAbility.origin:type_name -> CMsgVector 13, // 59: CDOTAUserMsg_ProjectionEvent.event_id:type_name -> EProjectionEvent 185, // 60: CDOTAUserMsg_AllStarEvent.player_scores:type_name -> CDOTAUserMsg_AllStarEvent.PlayerScore 186, // 61: CDOTAUserMsg_PauseMinigameData.data_bits:type_name -> CDOTAUserMsg_PauseMinigameData.DataBit 199, // 62: CDOTAUserMsg_VersusScene_PlayerBehavior.behavior:type_name -> EDOTAVersusScenePlayerBehavior 200, // 63: CDOTAUserMsg_VersusScene_PlayerBehavior.play_activity:type_name -> VersusScene_PlayActivity 201, // 64: CDOTAUserMsg_VersusScene_PlayerBehavior.chat_wheel:type_name -> VersusScene_ChatWheel 202, // 65: CDOTAUserMsg_VersusScene_PlayerBehavior.playback_rate:type_name -> VersusScene_PlaybackRate 187, // 66: CDOTAUserMsg_GuildChallenge_Progress.player_progress:type_name -> CDOTAUserMsg_GuildChallenge_Progress.PlayerProgress 16, // 67: CDOTAUserMsg_GuildChallenge_Progress.challenge_type:type_name -> CDOTAUserMsg_GuildChallenge_Progress.EChallengeType 170, // 68: CDOTAUserMsg_MiniKillCamInfo.Attacker.abilities:type_name -> CDOTAUserMsg_MiniKillCamInfo.Attacker.Ability 14, // 69: CDOTAUserMsg_PredictionResult.Prediction.result:type_name -> CDOTAUserMsg_PredictionResult.Prediction.EResult 15, // 70: CDOTAResponseQuerySerialized.Fact.valtype:type_name -> CDOTAResponseQuerySerialized.Fact.ValueType 174, // 71: CDOTAUserMsg_UnitEvent.Speech.predelay:type_name -> CDOTAUserMsg_UnitEvent.Interval 9, // 72: CDOTAUserMsg_StatsHeroPositionInfo.PositionPair.position_category:type_name -> DOTA_POSITION_CATEGORY 183, // 73: CDOTAUserMsg_StatsMatchDetails.CDOTAUserMsg_StatsFightDetails.radiant_fight_details:type_name -> CDOTAUserMsg_StatsMatchDetails.CDOTAUserMsg_StatsFightTeamDetails 183, // 74: CDOTAUserMsg_StatsMatchDetails.CDOTAUserMsg_StatsFightDetails.dire_fight_details:type_name -> CDOTAUserMsg_StatsMatchDetails.CDOTAUserMsg_StatsFightTeamDetails 75, // [75:75] is the sub-list for method output_type 75, // [75:75] is the sub-list for method input_type 75, // [75:75] is the sub-list for extension type_name 75, // [75:75] is the sub-list for extension extendee 0, // [0:75] is the sub-list for field type_name } func init() { file_dota_usermessages_proto_init() } func file_dota_usermessages_proto_init() { if File_dota_usermessages_proto != nil { return } file_networkbasetypes_proto_init() file_dota_shared_enums_proto_init() file_dota_commonmessages_proto_init() if !protoimpl.UnsafeEnabled { file_dota_usermessages_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_AIDebugLine); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_Ping); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SwapVerify); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ChatEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_BotChat); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CombatHeroPositions); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CombatLogBulkData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ProjectileParticleCPData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_MiniKillCamInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_GlobalLightColor); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_GlobalLightDirection); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_LocationPing); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_PingConfirmation); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ItemAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_EnemyItemAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ModifierAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_HPManaAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_GlyphAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_RadarAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_WillPurchaseAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_EmptyTeleportAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_MarsArenaOfBloodAttack); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAEntityMsg_InvokerSpellCast); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_BuyBackStateAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_QuickBuyAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CourierKilledAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_MinimapEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_MapLine); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_MinimapDebugPoint); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CreateLinearProjectile); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_DestroyLinearProjectile); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_DodgeTrackingProjectiles); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SpectatorPlayerClick); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SpectatorPlayerUnitOrders); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_NevermoreRequiem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_InvalidCommand); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_HudError); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SharedCooldown); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SetNextAutobuyItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_HalloweenDrops); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_PredictionResult); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAResponseQuerySerialized); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTASpeechMatchOnClient); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[43].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_UnitEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[44].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ItemPurchased); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[45].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ItemSold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[46].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ItemFound); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[47].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_OverheadEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[48].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TutorialTipInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[49].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TutorialFinish); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[50].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TutorialMinimapPosition); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[51].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SendGenericToolTip); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[52].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_WorldLine); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[53].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ChatWheel); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[54].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ReceivedXmasGift); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[55].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ShowSurvey); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[56].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_UpdateSharedContent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[57].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TutorialRequestExp); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[58].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TutorialFade); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[59].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TutorialPingMinimap); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[60].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_GamerulesStateChanged); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[61].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_AddQuestLogEntry); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[62].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SendStatPopup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[63].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_DismissAllStatPopups); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[64].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SendRoshanSpectatorPhase); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[65].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SendRoshanPopup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[66].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SendFinalGold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[67].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CustomMsg); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[68].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CoachHUDPing); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[69].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ClientLoadGridNav); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[70].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TE_Projectile); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[71].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TE_ProjectileLoc); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[72].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TE_DestroyProjectile); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[73].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TE_DotaBloodImpact); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[74].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_AbilityPing); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[75].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TE_UnitAnimation); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[76].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TE_UnitAnimationEnd); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[77].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ShowGenericPopup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[78].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_VoteStart); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[79].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_VoteUpdate); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[80].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_VoteEnd); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[81].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_BoosterStatePlayer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[82].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_BoosterState); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[83].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_PlayerMMR); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[84].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_AbilitySteal); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[85].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsHeroLookup); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[86].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsHeroPositionInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[87].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsHeroMinuteDetails); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[88].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsTeamMinuteDetails); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[89].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsPlayerKillShare); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[90].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsKillDetails); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[91].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsMatchDetails); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[92].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_MiniTaunt); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[93].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SpeechBubble); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[94].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CustomHeaderMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[95].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CMsgHeroAbilityStat); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[96].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CMsgCombatAnalyzerPlayerStat); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[97].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CMsgCombatAnalyzerStats); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[98].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_BeastChat); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[99].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CustomHudElement_Create); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[100].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CustomHudElement_Modify); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[101].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CustomHudElement_Destroy); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[102].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CompendiumStatePlayer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[103].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CompendiumState); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[104].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ProjectionAbility); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[105].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ProjectionEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[106].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_XPAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[107].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TalentTreeAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[108].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_UpdateQuestProgress); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[109].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_QuestStatus); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[110].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SuggestHeroPick); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[111].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SuggestHeroRole); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[112].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_KillcamDamageTaken); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[113].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SelectPenaltyGold); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[114].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_RollDiceResult); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[115].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_FlipCoinResult); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[116].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMessage_RequestItemSuggestions); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[117].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMessage_TeamCaptainChanged); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[118].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ChatWheelCooldown); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[119].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_HeroRelicProgress); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[120].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_AbilityDraftRequestAbility); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[121].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_DamageReport); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[122].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_SalutePlayer); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[123].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_TipAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[124].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ReplaceQueryUnit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[125].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ESArcanaCombo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[126].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ESArcanaComboSummary); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[127].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_OMArcanaCombo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[128].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_HighFiveCompleted); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[129].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_HighFiveLeftHanging); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[130].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ShovelUnearth); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[131].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_AllStarEvent); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[132].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_QueuedOrderRemoved); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[133].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_DebugChallenge); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[134].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_FoundNeutralItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[135].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_OutpostCaptured); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[136].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_OutpostGrantedXP); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[137].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_MoveCameraToUnit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[138].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_PauseMinigameData); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[139].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_VersusScene_PlayerBehavior); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[140].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_QoP_ArcanaSummary); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[141].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_HotPotato_Created); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[142].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_HotPotato_Exploded); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[143].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_WK_Arcana_Progress); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[144].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_GuildChallenge_Progress); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[145].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_WRArcanaProgress); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[146].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_WRArcanaSummary); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[147].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_EmptyItemSlotAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[148].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_AghsStatusAlert); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[149].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_MutedPlayers); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[150].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ContextualTip); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[151].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_ChatMessage); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[152].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_MiniKillCamInfo_Attacker); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[153].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_MiniKillCamInfo_Attacker_Ability); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[154].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_CourierKilledAlert_LostItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[155].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_PredictionResult_Prediction); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[156].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAResponseQuerySerialized_Fact); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[157].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_UnitEvent_Interval); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[158].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_UnitEvent_Speech); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[159].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_UnitEvent_SpeechMute); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[160].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_UnitEvent_AddGesture); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[161].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_UnitEvent_RemoveGesture); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[162].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_UnitEvent_BloodImpact); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[163].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_UnitEvent_FadeGesture); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[164].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsHeroPositionInfo_PositionPair); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[165].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsTeamMinuteDetails_LocationPerformance); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[166].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightTeamDetails); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[167].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_StatsMatchDetails_CDOTAUserMsg_StatsFightDetails); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[168].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_AllStarEvent_PlayerScore); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[169].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_PauseMinigameData_DataBit); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_dota_usermessages_proto_msgTypes[170].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CDOTAUserMsg_GuildChallenge_Progress_PlayerProgress); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_dota_usermessages_proto_rawDesc, NumEnums: 17, NumMessages: 171, NumExtensions: 0, NumServices: 0, }, GoTypes: file_dota_usermessages_proto_goTypes, DependencyIndexes: file_dota_usermessages_proto_depIdxs, EnumInfos: file_dota_usermessages_proto_enumTypes, MessageInfos: file_dota_usermessages_proto_msgTypes, }.Build() File_dota_usermessages_proto = out.File file_dota_usermessages_proto_rawDesc = nil file_dota_usermessages_proto_goTypes = nil file_dota_usermessages_proto_depIdxs = nil }