Welcome to Braaaaawlhalla!
Brawlhalla é um jogo de luta 2D de alta velocidade, foi desenvolvido pela Blue Mammoth Games e eu o conheci pela distribuidora Steam. Desde 2016 comecei a jogar e continuo até hoje (rsrs) e sempre tive curiosidade em conhecer mais das minhas estatísticas no game, mas infelizmente elas não existem até o momento. Motivado por esse desejo, entrei em contato com a empresa desenvolvedora e descobri um meio de coletar os dados via API e gostaria de compartilhar meus achados com vocês.
Objetivos:
Os objetivos para essa análise são:
- Danos Apresentar quanto de dano eu recebo dos inimigos e quanto de dano eu causo nos inimigos
- Top 5: Descobrir quais são os cinco personagens que têm as maiores win rates ( ou taxas de vitória)
- Melhor arma: Descobrir quais são as armas que apresentam maior win rate
- Sugestões de personagens: Sugerir personagens que usam armas que apresentam win rates altos.
Sem mais delongas
Os dados são atualizados diariamente, portanto as análises abaixo refletem os dados coletados desde meu primeiro jogo em 2016 até 21:00h do dia 29 de Novembro de 2020. Para criar as estatísticas selecionei apenas os personagens que joguei pelo menos 20 partidas.
Dano
O dano médio recebido em uma partida é 30 unidades maior que o dano médio causado aos inimigos, isso indica que, como em geral eu levo muito dano, talvez seja interessante eu jogar mais com personagens que apresentem uma defesa mediana para alta.

Top 5
Recebi uma grande surpresa ao saber que entre os personagens que apresentaram o maior win rate estavam o Jaeyun e a Petra pois eles não são os personagens que mais jogo no cotidiano! Atualizando: Joguei de Jaeyun após verificar essas estatísticas e venci três partidas seguidas! Essas estatísticas estão muito certeiras.

Melhor arma
Nos últimos dias venho treinando de hammer (marreta) e de sword (espada), mas faz um tempo que não jogo com personagens que usam orb ou que usam fists (punhos) e graças ao Jaeyun, a greatsword continua apresentando o maior win rate, então esses resultados me surpreenderam também e me animaram a jogar com esses personagens novamente. A greatsword é uma das armas que tem maior dano no game, portanto isso pode ser um motivo para explicar o por quê de apresentar um win rate tão alto (61%).

Sugestões de personagens
Observando o gráfico das armas, fiz uma seleção dos personagens que utilizam armas que tenham win rate maior que 50%, dessa forma, os personagens que forem selecionados são uma boa sugestão para quem está indeciso de qual personagem comprar, ou se quer adicionar um novo personagem ao leque de opções para jogar rankeds. Com isso, os personagens sugeridos para mim segundo o critério foram:
Sugestões
|
Bödvar
|
Kor
|
Val
|
Thor
|
Petra
|
Jaeyun
|
Conclusão
Apresentei algumas estatísticas sobre meus jogos no Brawlhalla desde 2016 e fiquei muito animado pois, além de observar como está meu desempenho com os personagens e as armas, aprendi a coletar dados da API do Brawlhalla (/). As estatísticas me indicaram para jogar mais com personagens que utilizam fists (punhos) e também com Greatsword.
Os próximos passos serão automatizar esse código para permitir que você, jogador de Brawlhalla, possa ver suas estatísticas também =), aguarde que novas atualizações sobre esse futuro aplicativo chegarão até você. Continue acompanhando o desenvolvimento pelo Rpubs e também pelo meu linkedin: https://www.linkedin.com/in/fabricioemilianodr/ . Obrigado pela atenção e boas batalhas!
LS0tDQp0aXRsZTogIkJyYXdsaGFsbGE6IEVzdGF0w61zdGljYXMgZSBzdWdlc3TDtWVzIGRlIHBlcnNvbmFnZW5zIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCmBgYHtyIGNhbGN1bGFuZG8gdGQsZWNobz1GLG1lc3NhZ2U9RixyZXN1bHRzPUZ9DQojIENyaWHDp8OjbyBkZSBmdW7Dp8O1ZXM6DQp3aW5yYXRlX2FybWE9ZnVuY3Rpb24oZGYpew0KICBvbmU8LWRmJT4lZ3JvdXBfYnkod2VhcG9uX29uZSklPiVzdW1tYXJpc2UoDQogICAgd2lucmF0ZT1tZWFuKHdpbnJhdGUpLA0KICAgIGdhbWVzPXJvdW5kKG1lYW4oZ2FtZXMpLDApDQogICklPiVhcnJhbmdlKGRlc2Mod2lucmF0ZSkpDQogIHR3bzwtZGYlPiVncm91cF9ieSh3ZWFwb25fdHdvKSU+JXN1bW1hcmlzZSgNCiAgICB3aW5yYXRlPW1lYW4od2lucmF0ZSksDQogICAgZ2FtZXM9cm91bmQobWVhbihnYW1lcyksMCkNCiAgKSU+JWFycmFuZ2UoZGVzYyh3aW5yYXRlKSkNCiAgDQogIG5hbWVzKG9uZSlbMV09bmFtZXModHdvKVsxXT0id2VhcG9uIg0KICANCiAgZGFub19vbmU9ZGYlPiVncm91cF9ieSh3ZWFwb25fb25lKSU+JXN1bW1hcmlzZSgNCiAgICBkYW5vX2NhdXNhZG89cm91bmQobWVhbihhcy5udW1lcmljKGRhbWFnZWRlYWx0KS9nYW1lcyksMSksDQogICAgdGVtcG9fY29tX2FybWE9cm91bmQobWVhbih0aW1laGVsZHdlYXBvbm9uZSksMCkpDQogIGRhbm9fdHdvPWRmJT4lZ3JvdXBfYnkod2VhcG9uX3R3byklPiVzdW1tYXJpc2UoDQogICAgZGFub19jYXVzYWRvPXJvdW5kKG1lYW4oYXMubnVtZXJpYyhkYW1hZ2VkZWFsdCkvZ2FtZXMpLDEpLA0KICAgIHRlbXBvX2NvbV9hcm1hPXJvdW5kKG1lYW4odGltZWhlbGR3ZWFwb250d28pLDApKQ0KICBuYW1lcyhkYW5vX29uZSlbMV09bmFtZXMoZGFub190d28pWzFdPSJ3ZWFwb24iDQogIA0KICBvbmU9bWVyZ2Uob25lLGRhbm9fb25lLGJ5PSJ3ZWFwb24iKQ0KICB0d289bWVyZ2UodHdvLGRhbm9fdHdvLGJ5PSJ3ZWFwb24iKQ0KICB3ZWFwb249cmJpbmQob25lLHR3byklPiVncm91cF9ieSh3ZWFwb24pJT4lc3VtbWFyaXNlKA0KICAgIHdpbnJhdGU9bWVhbih3aW5yYXRlKSwNCiAgICBnYW1lcz1yb3VuZChtZWFuKGdhbWVzKSwwKSwNCiAgICBkYW5vX2NhdXNhZG89cm91bmQobWVhbihkYW5vX2NhdXNhZG8pLDEpLA0KICAgIGB0ZW1wb19jb21fYXJtYShzKWA9cm91bmQobWVhbih0ZW1wb19jb21fYXJtYSksMCkNCiAgKSU+JWFycmFuZ2UoZGVzYyh3aW5yYXRlKSkNCiAgDQogIHJldHVybih3ZWFwb24pDQp9DQoNCiMgX19fX19fXy8vX19fX19fX19fLy9fX19fX19fX18vL19fX19fX19fXy8vX19fX19fX19fLy9fX19fX19fX18NCg0KDQojUGFjb3Rlcw0KbGlicmFyeShnZ3Bsb3QyKQ0KbGlicmFyeShkcGx5cikNCmxpYnJhcnkoaHJicnRoZW1lcykNCg0KDQojT2JqZXRpdm9zIGRhIHBlc3F1aXNhOiBEZXNlamEtc2UgdmVyaWZpY2FyIHF1YWlzIHPDo28gb3MgNSBwZXJzb25hZ2VucyBjb20gbWFpb3Igd2lucmF0ZSBlIGRlc2VqYS1zZSB2ZXJpZmljYXIgcXVhbCBhIG1lbGhvciBhcm1hIHBhcmEgbyBwbGF5ZXIgam9nYXIgZSBjcmVzY2VyIGVtIEVMTy4gDQoNCiNDb2xldGFuZG8gb3MgZGFkb3MgZGEgYXBpDQp1cmwgPC0gcGFzdGUwKCJodHRwczovL2FwaS5icmF3bGhhbGxhLmNvbS9wbGF5ZXIvMjMzMDM4NS9zdGF0cz9hcGlfa2V5PVdLQ0lVRzBUN0pJOFFWSlZQRTNDIikNCg0KZ2V0PC1HRVQodXJsKQ0KDQojIEV4dHJhaW5kbyBvcyBkYWRvcw0KZGF0YT1mcm9tSlNPTihyYXdUb0NoYXIoZ2V0JGNvbnRlbnQpKQ0KZGF0YTwtZGF0YSRsZWdlbmRzW2RhdGEkbGVnZW5kcyRnYW1lcz4xNSxdICNQZWdhbmRvIG9zIGRhZG9zIGRvcyBsZWdlbmRzIHF1ZSBqb2dvdSBwZWxvIG1lbm9zIDE1IHBhcnRpZGFzDQojQ2FsY3VsYW5kbyBvIHdpbnJhdGUNCmRhdGEkd2lucmF0ZTwtKGRhdGEkd2lucy9kYXRhJGdhbWVzKQ0KDQoNCiMgRGFkb3MgZXN0w6F0aWNvcyBjb21vIGFybWFzIHF1ZSBzw6NvIHVzYWRhcw0KdXJsPSJodHRwczovL2FwaS5icmF3bGhhbGxhLmNvbS9sZWdlbmQvYWxsP2FwaV9rZXk9V0tDSVVHMFQ3Skk4UVZKVlBFM0MiDQpnZXQ8LUdFVCh1cmwpDQoNCiMgRXh0cmFpbmRvIG9zIGRhZG9zIGVzdMOhdGljb3MNCnN0YXRpYz1mcm9tSlNPTihyYXdUb0NoYXIoZ2V0JGNvbnRlbnQpKQ0KDQpkYXRhX2Y8LW1lcmdlKGRhdGEsc3RhdGljLGJ5PSJsZWdlbmRfbmFtZV9rZXkiICkNCnJtKGRhdGEsZ2V0LHVybCkNCg0KDQojX19fX19fXy8vX19fX19fXy8vX19fX19fXy8vX19fX19fXy8vX19fX19fXy8vX19fX19fXy8vX19fX19fXy8vX19fXw0KDQojIENyaWFuZG8gb3MgZGFkb3MgcmVmZXJlbnRlcyDDoHMgZXN0YXTDrXN0aWNhcyANCg0KIyBPcyBjaW5jbyBtZWxob3JlcyBwZXJzb25hZ2VucyBkZSBhY29yZG8gY29tIHdpbnJhdGU6DQp0b3A1PC0oZGF0YV9mJT4lDQogIHNlbGVjdChiaW9fbmFtZSx3aW5yYXRlLGdhbWVzKSU+JWFycmFuZ2UoZGVzYyh3aW5yYXRlKSkpWzE6NSxdDQoNCiMgYSBtZWxob3IgYXJtYSBwYXJhIHNlIGpvZ2FyIGRlIGFjb3JkbyBjb20gd2lucmF0ZQ0KDQphcm1hczwtd2lucmF0ZV9hcm1hKGRhdGFfZikNCiMgU3VnZXN0w6NvIGRlIHBlcnNvbmFnZW5zIHF1ZSB2b2PDqiBwb2RlIGdvc3RhciBkZSBqb2dhciBkZSBhY29yZG8gY29tIGFzIHdlYXBvbnMgcXVlIHZvY8OqIGpvZ2EgbWVsaG9yOg0KDQpzdWdlc3TDtWVzPC0oc3RhdGljJT4lZmlsdGVyKHdlYXBvbl9vbmUlaW4lYXJtYXMkd2VhcG9uW2FybWFzJHdpbnJhdGU+MC41MDFdLHdlYXBvbl90d28laW4lYXJtYXMkd2VhcG9uW2FybWFzJHdpbnJhdGU+MC41MDFdKSkkYmlvX25hbWUNCg0KIyBwYXJhIG8gZ3LDoWZpY28NCmRhbm9fY2F1c2FkbzwtbWVhbihhcy5udW1lcmljKGRhdGFfZiRkYW1hZ2VkZWFsdCkvZGF0YV9mJGdhbWVzKQ0KZGFub19yZWNlYmlkbzwtbWVhbihhcy5udW1lcmljKGRhdGFfZiRkYW1hZ2V0YWtlbikvZGF0YV9mJGdhbWVzKQ0KZGFub3M8LWRhdGEuZnJhbWUoZGFubz1yYmluZChkYW5vX2NhdXNhZG8sZGFub19yZWNlYmlkbyksdGlwb19kYW5vPWMoIkRhbm8gY2F1c2FkbyIsIkRhbm8gcmVjZWJpZG8iKSkNCmBgYA0KDQoNCjxjZW50ZXI+DQohW10obG9nb19icmF3bGhhbGxhLnBuZykNCjwvY2VudGVyPg0KDQojIFdlbGNvbWUgdG8gQnJhYWFhYXdsaGFsbGEhDQpCcmF3bGhhbGxhIMOpIHVtIGpvZ28gZGUgbHV0YSAyRCBkZSBhbHRhIHZlbG9jaWRhZGUsIGZvaSBkZXNlbnZvbHZpZG8gcGVsYSBCbHVlIE1hbW1vdGggR2FtZXMgZSBldSBvIGNvbmhlY2kgcGVsYSBkaXN0cmlidWlkb3JhIFN0ZWFtLiBEZXNkZSAyMDE2IGNvbWVjZWkgYSBqb2dhciBlIGNvbnRpbnVvIGF0w6kgaG9qZSAocnNycykgZSBzZW1wcmUgdGl2ZSBjdXJpb3NpZGFkZSBlbSBjb25oZWNlciBtYWlzIGRhcyBtaW5oYXMgZXN0YXTDrXN0aWNhcyBubyBnYW1lLCBtYXMgaW5mZWxpem1lbnRlIGVsYXMgbsOjbyBleGlzdGVtIGF0w6kgbyBtb21lbnRvLiBNb3RpdmFkbyBwb3IgZXNzZSBkZXNlam8sIGVudHJlaSBlbSBjb250YXRvIGNvbSBhIGVtcHJlc2EgZGVzZW52b2x2ZWRvcmEgZSBkZXNjb2JyaSB1bSBtZWlvIGRlIGNvbGV0YXIgb3MgZGFkb3MgdmlhIEFQSSBlIGdvc3RhcmlhIGRlIGNvbXBhcnRpbGhhciBtZXVzIGFjaGFkb3MgY29tIHZvY8Oqcy4NCg0KDQojIE9iamV0aXZvczoNCg0KT3Mgb2JqZXRpdm9zIHBhcmEgZXNzYSBhbsOhbGlzZSBzw6NvOg0KDQoqICoqRGFub3MqKiBBcHJlc2VudGFyIHF1YW50byBkZSBkYW5vIGV1IHJlY2VibyBkb3MgaW5pbWlnb3MgZSBxdWFudG8gZGUgZGFubyBldSBjYXVzbyBub3MgaW5pbWlnb3MNCiogKipUb3AgNToqKiBEZXNjb2JyaXIgcXVhaXMgc8OjbyBvcyBjaW5jbyBwZXJzb25hZ2VucyBxdWUgdMOqbSBhcyBtYWlvcmVzIHdpbiByYXRlcyAoIG91IHRheGFzIGRlIHZpdMOzcmlhKQ0KKiAqKk1lbGhvciBhcm1hOioqIERlc2NvYnJpciBxdWFpcyBzw6NvIGFzIGFybWFzIHF1ZSBhcHJlc2VudGFtIG1haW9yIHdpbiByYXRlDQoqICoqU3VnZXN0w7VlcyBkZSBwZXJzb25hZ2VuczoqKiBTdWdlcmlyIHBlcnNvbmFnZW5zIHF1ZSB1c2FtIGFybWFzIHF1ZSBhcHJlc2VudGFtIHdpbiByYXRlcyBhbHRvcy4NCg0KDQojIFNlbSBtYWlzIGRlbG9uZ2FzDQoNCk9zIGRhZG9zIHPDo28gYXR1YWxpemFkb3MgZGlhcmlhbWVudGUsIHBvcnRhbnRvIGFzIGFuw6FsaXNlcyBhYmFpeG8gcmVmbGV0ZW0gb3MgZGFkb3MgY29sZXRhZG9zIGRlc2RlIG1ldSBwcmltZWlybyBqb2dvIGVtIDIwMTYgYXTDqSAyMTowMGggZG8gZGlhIDI5IGRlIE5vdmVtYnJvIGRlIDIwMjAuIFBhcmEgY3JpYXIgYXMgZXN0YXTDrXN0aWNhcyBzZWxlY2lvbmVpIGFwZW5hcyBvcyBwZXJzb25hZ2VucyBxdWUgam9ndWVpIHBlbG8gbWVub3MgMjAgcGFydGlkYXMuDQoNCiMjIERhbm8NCk8gZGFubyBtw6lkaW8gcmVjZWJpZG8gZW0gdW1hIHBhcnRpZGEgw6kgMzAgdW5pZGFkZXMgbWFpb3IgcXVlIG8gZGFubyBtw6lkaW8gY2F1c2FkbyBhb3MgaW5pbWlnb3MsIGlzc28gaW5kaWNhIHF1ZSwgY29tbyBlbSBnZXJhbCBldSBsZXZvIG11aXRvIGRhbm8sIHRhbHZleiBzZWphIGludGVyZXNzYW50ZSBldSBqb2dhciBtYWlzIGNvbSBwZXJzb25hZ2VucyBxdWUgYXByZXNlbnRlbSB1bWEgZGVmZXNhIG1lZGlhbmEgcGFyYSBhbHRhLg0KYGBge3IgRGFubyxtZXNzYWdlPUYsZWNobz1GfQ0KZGFub3MlPiVnZ3Bsb3QoYWVzKHg9dGlwb19kYW5vLHk9ZGFubyxmaWxsPXRpcG9fZGFubykpKw0KICBnZW9tX2NvbChhbHBoYT0xLGNvbG9yPSdibGFjaycsc2l6ZT0xLjMsd2lkdGggPSAuOCkrY29vcmRfZmxpcCgpK3NjYWxlX2ZpbGxfbWFudWFsKHZhbHVlcz1jKCIjZmM4NDQ0IiwiI2ZmZTY3MCIpKSsNCiAgbGFicyh5PSJEYW5vIix4PSIiKSsNCiAgdGhlbWVfbWluaW1hbCgpDQpgYGANCiMjIFRvcCA1DQoNClJlY2ViaSB1bWEgZ3JhbmRlIHN1cnByZXNhIGFvIHNhYmVyIHF1ZSBlbnRyZSBvcyBwZXJzb25hZ2VucyBxdWUgYXByZXNlbnRhcmFtIG8gbWFpb3Igd2luIHJhdGUgZXN0YXZhbSBvIEphZXl1biBlIGEgUGV0cmEgcG9pcyBlbGVzIG7Do28gc8OjbyBvcyBwZXJzb25hZ2VucyBxdWUgbWFpcyBqb2dvIG5vIGNvdGlkaWFubyEgICpBdHVhbGl6YW5kbzoqIEpvZ3VlaSBkZSBKYWV5dW4gYXDDs3MgdmVyaWZpY2FyIGVzc2FzIGVzdGF0w61zdGljYXMgZSB2ZW5jaSB0csOqcyBwYXJ0aWRhcyBzZWd1aWRhcyEgRXNzYXMgZXN0YXTDrXN0aWNhcyBlc3TDo28gbXVpdG8gY2VydGVpcmFzLg0KDQpgYGB7ciB0b3A1LGVjaG89RixtZXNzYWdlPUZ9DQp0b3A1JT4lZ2dwbG90KGFlcyh4PXJlb3JkZXIoYmlvX25hbWUsd2lucmF0ZSkseT13aW5yYXRlLGZpbGw9d2lucmF0ZSkpKw0KICBnZW9tX2NvbChjb2xvcj0iYmxhY2siLHNpemU9MS4zKStjb29yZF9mbGlwKCkrDQogIHNjYWxlX3lfY29udGludW91cyhsaW1pdHM9YygwLG1heChhcm1hcyR3aW5yYXRlKSswLjA1KSxicmVha3M9c2VxKDAsbWF4KGFybWFzJHdpbnJhdGUpKzAuMDUsMC4wNSksbGFiZWxzID0gc2NhbGVzOjpwZXJjZW50X2Zvcm1hdChhY2N1cmFjeSA9IDEpKSsNCiAgc2NhbGVfZmlsbF9ncmFkaWVudChsb3cgPSIjZmZlNjcwIiAsaGlnaCA9IiNmYzg0NDQiICxsYWJlbHM9IHNjYWxlczo6cGVyY2VudCApKw0KICB0aGVtZV9taW5pbWFsKCkrDQogIGxhYnMoeD0iUGVyc29uYWdlbSIseT0iV2luIHJhdGUgKCUpIixmaWxsPSJXaW4gcmF0ZSIpDQpgYGANCg0KIyMgTWVsaG9yIGFybWENCg0KTm9zIMO6bHRpbW9zIGRpYXMgdmVuaG8gdHJlaW5hbmRvIGRlIGhhbW1lciAobWFycmV0YSkgZSBkZSBzd29yZCAoZXNwYWRhKSwgbWFzIGZheiB1bSB0ZW1wbyBxdWUgbsOjbyBqb2dvIGNvbSBwZXJzb25hZ2VucyBxdWUgdXNhbSBvcmIgb3UgcXVlIHVzYW0gZmlzdHMgKHB1bmhvcykgZSBncmHDp2FzIGFvIEphZXl1biwgYSBncmVhdHN3b3JkIGNvbnRpbnVhIGFwcmVzZW50YW5kbyBvIG1haW9yIHdpbiByYXRlLCBlbnTDo28gZXNzZXMgcmVzdWx0YWRvcyBtZSBzdXJwcmVlbmRlcmFtIHRhbWLDqW0gZSBtZSBhbmltYXJhbSBhIGpvZ2FyIGNvbSBlc3NlcyBwZXJzb25hZ2VucyBub3ZhbWVudGUuIEEgZ3JlYXRzd29yZCDDqSB1bWEgZGFzIGFybWFzIHF1ZSB0ZW0gbWFpb3IgZGFubyBubyBnYW1lLCBwb3J0YW50byBpc3NvIHBvZGUgc2VyIHVtIG1vdGl2byBwYXJhIGV4cGxpY2FyIG8gcG9yIHF1w6ogZGUgYXByZXNlbnRhciB1bSB3aW4gcmF0ZSB0w6NvIGFsdG8gKDYxJSkuDQoNCmBgYHtyIG1lbGhvcmFybWEsZWNobz1GLG1lc3NhZ2U9Rn0NCmFybWFzJT4lDQogIGdncGxvdChhZXMoeD1yZW9yZGVyKHdlYXBvbix3aW5yYXRlKSx5PXdpbnJhdGUsZmlsbD13aW5yYXRlKSkrDQogIGdlb21fY29sKGNvbG9yPSJibGFjayIsc2l6ZT0xKSsNCiAgY29vcmRfZmxpcCgpKw0KICBzY2FsZV9maWxsX2dyYWRpZW50KGxvdyA9IiNmZmU2NzAiICxoaWdoID0iI2ZjODQ0NCIsbGFiZWxzPSBzY2FsZXM6OnBlcmNlbnQgKSsNCiAgc2NhbGVfeV9jb250aW51b3VzKGxpbWl0cz1jKDAsbWF4KGFybWFzJHdpbnJhdGUpKzAuMDUpLGJyZWFrcz1zZXEoMCxtYXgoYXJtYXMkd2lucmF0ZSkrMC4wNSwwLjA1KSxsYWJlbHMgPSBzY2FsZXM6OnBlcmNlbnRfZm9ybWF0KGFjY3VyYWN5ID0gMSkpKw0KICB0aGVtZV9taW5pbWFsKCkrDQogIGxhYnMoeD0iQXJtYSIseT0iV2luIHJhdGUgKCUpIixmaWxsPSJXaW4gcmF0ZSIpKw0KICBnZW9tX2hsaW5lKHlpbnRlcmNlcHQgPSAuNTAsbHR5PTIpDQoNCmBgYA0KDQojIyBTdWdlc3TDtWVzIGRlIHBlcnNvbmFnZW5zDQoNCk9ic2VydmFuZG8gbyBncsOhZmljbyBkYXMgYXJtYXMsIGZpeiB1bWEgc2VsZcOnw6NvIGRvcyBwZXJzb25hZ2VucyBxdWUgdXRpbGl6YW0gYXJtYXMgcXVlIHRlbmhhbSB3aW4gcmF0ZSBtYWlvciBxdWUgNTAlLCBkZXNzYSBmb3JtYSwgb3MgcGVyc29uYWdlbnMgcXVlIGZvcmVtIHNlbGVjaW9uYWRvcyBzw6NvIHVtYSBib2Egc3VnZXN0w6NvIHBhcmEgcXVlbSBlc3TDoSBpbmRlY2lzbyBkZSBxdWFsIHBlcnNvbmFnZW0gY29tcHJhciwgb3Ugc2UgcXVlciBhZGljaW9uYXIgdW0gbm92byBwZXJzb25hZ2VtIGFvIGxlcXVlIGRlIG9ww6fDtWVzIHBhcmEgam9nYXIgcmFua2Vkcy4gQ29tIGlzc28sIG9zIHBlcnNvbmFnZW5zIHN1Z2VyaWRvcyBwYXJhIG1pbSBzZWd1bmRvIG8gY3JpdMOpcmlvIGZvcmFtOg0KDQpgYGB7ciBpbWFnZV9ncm9icywgZmlnLnNob3cgPSAiaG9sZCIsIG91dC53aWR0aCA9ICIxMCUiLCBmaWcuYWxpZ24gPSAiZGVmYXVsdCIsZWNobz1GfQ0KDQprYWJsZUV4dHJhOjprYWJsZShzdWdlc3TDtWVzLCJodG1sIixjb2wubmFtZXMgPSAiU3VnZXN0w7VlcyIpDQoNCmBgYA0KDQojIyBDb25jbHVzw6NvDQoNCkFwcmVzZW50ZWkgYWxndW1hcyBlc3RhdMOtc3RpY2FzIHNvYnJlIG1ldXMgam9nb3Mgbm8gQnJhd2xoYWxsYSBkZXNkZSAyMDE2IGUgZmlxdWVpIG11aXRvIGFuaW1hZG8gcG9pcywgYWzDqW0gZGUgb2JzZXJ2YXIgY29tbyBlc3TDoSBtZXUgZGVzZW1wZW5obyBjb20gb3MgcGVyc29uYWdlbnMgZSBhcyBhcm1hcywgYXByZW5kaSBhIGNvbGV0YXIgZGFkb3MgZGEgQVBJIGRvIEJyYXdsaGFsbGEgKFxvLykuIEFzIGVzdGF0w61zdGljYXMgbWUgaW5kaWNhcmFtIHBhcmEgam9nYXIgbWFpcyBjb20gcGVyc29uYWdlbnMgcXVlIHV0aWxpemFtIGZpc3RzIChwdW5ob3MpIGUgdGFtYsOpbSBjb20gR3JlYXRzd29yZC4gDQoNCk9zIHByw7N4aW1vcyBwYXNzb3Mgc2Vyw6NvIGF1dG9tYXRpemFyIGVzc2UgY8OzZGlnbyBwYXJhIHBlcm1pdGlyIHF1ZSB2b2PDqiwgam9nYWRvciBkZSBCcmF3bGhhbGxhLCBwb3NzYSB2ZXIgc3VhcyBlc3RhdMOtc3RpY2FzIHRhbWLDqW0gPSksIGFndWFyZGUgcXVlIG5vdmFzIGF0dWFsaXphw6fDtWVzIHNvYnJlIGVzc2UgZnV0dXJvIGFwbGljYXRpdm8gY2hlZ2Fyw6NvIGF0w6kgdm9jw6ouIENvbnRpbnVlIGFjb21wYW5oYW5kbyBvIGRlc2Vudm9sdmltZW50byBwZWxvIFJwdWJzIGUgdGFtYsOpbSBwZWxvIG1ldSBsaW5rZWRpbjogaHR0cHM6Ly93d3cubGlua2VkaW4uY29tL2luL2ZhYnJpY2lvZW1pbGlhbm9kci8gLiBPYnJpZ2FkbyBwZWxhIGF0ZW7Dp8OjbyBlIGJvYXMgYmF0YWxoYXMhDQoNCg==