gASVAAABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIwkbW9kdWxlLWV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi5zcGVjlGGMB2NsYXNzZXOUXZSMBW5hbWVzlF2UjAhkdXBuYW1lc5RdlIwIYmFja3JlZnOUXZSMBWlzbW9klIh1jAd0YWduYW1llGgJjAZzb3VyY2WUjGUvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi9zcGVjL2luZGV4LnJzdJSMBGxpbmWUSwGMBnBhcmVudJRoA4wJX2RvY3VtZW50lGgDdWKMD3NwaGlueC5hZGRub2Rlc5SMBWluZGV4lJOUKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAdlbnRyaWVzlF2UKIwEcGFpcpSMJW1vZHVsZTsgZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnNwZWOUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgAjAdzZWN0aW9ulJOUKYGUfZQoaAVoBmgHXZQoaACMBXRpdGxllJOUKYGUfZQoaAWMFkV0aGVyZXVtIFNwZWNpZmljYXRpb26UaAddlGgAjARUZXh0lJOUjBZFdGhlcmV1bSBTcGVjaWZpY2F0aW9ulIWUgZR9lChoBWgGaCBoOmghaANoHYxcL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy8udG94L2RvY3Mvc3RhZ2UwX291dC9hdXRvYXBpLyA9PiBkb2MvZGlmZnOUaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH0sEaCBoNWghaAN1YmgAjAV0b3BpY5STlCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMEVRhYmxlIG9mIENvbnRlbnRzlGgHXZRoP4wRVGFibGUgb2YgQ29udGVudHOUhZSBlH2UKGgFaAZoIGhQaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfSwhoIGhNaCFoA3ViaACMC2J1bGxldF9saXN0lJOUKYGUfZQoaAVoBmgHXZQoaACMCWxpc3RfaXRlbZSTlCmBlH2UKGgFaAZoB12UaACMCXBhcmFncmFwaJSTlCmBlH2UKGgFaAZoB12UaACMCXJlZmVyZW5jZZSTlCmBlH2UKGgFaAZoB12UaD+MDEludHJvZHVjdGlvbpSFlIGUfZQoaAVoBmggaG9oIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMA2lkMZRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjAxpbnRyb2R1Y3Rpb26UdWgcaG1oHU5oH05oIGhqdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBoZXViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBoYGghaAN1YmhkKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wPTW9kdWxlIENvbnRlbnRzlIWUgZR9lChoBWgGaCBokWghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwDaWQylGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMD21vZHVsZS1jb250ZW50c5R1aBxobWgdTmgfTmggaI51YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGiLdWJoXymBlH2UKGgFaAZoB12UKGhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jAdDbGFzc2VzlIWUgZR9lChoBWgGaCBosGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwDaWQzlGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMB2NsYXNzZXOUdWgcaG1oHU5oH05oIGitdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBoqnViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdTmgfTmggaKd1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jAlGdW5jdGlvbnOUhZSBlH2UKGgFaAZoIGjSaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjANpZDSUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwJZnVuY3Rpb25zlHVoHGhtaB1OaB9OaCBoz3ViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaMx1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGindWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wKQXR0cmlidXRlc5SFlIGUfZQoaAVoBmggaPRoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMA2lkNZRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjAphdHRyaWJ1dGVzlHVoHGhtaB1OaB9OaCBo8XViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaO51YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHU5oH05oIGindWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGheaB1OaB9OaCBoi3ViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBoYGghaAN1YmhkKYGUfZQoaAVoBmgHXZQoaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wOTW9kdWxlIERldGFpbHOUhZSBlH2UKGgFaAZoIGoiAQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjANpZDaUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwObW9kdWxlLWRldGFpbHOUdWgcaG1oHU5oH05oIGofAQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oRGgfSwBoIGocAQAAaCFoA3ViaF8pgZR9lChoBWgGaAddlChoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wMQkxPQ0tfUkVXQVJElIWUgZR9lChoBWgGaCBqQQEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwDaWQ3lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMDGJsb2NrLXJld2FyZJR1aBxobWgdTmgfTmggaj4BAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGo7AQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1oRGgfSwBoIGo4AQAAaCFoA3ViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MG0dBU19MSU1JVF9BREpVU1RNRU5UX0ZBQ1RPUpSFlIGUfZQoaAVoBmggamMBAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMA2lkOJRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjBtnYXMtbGltaXQtYWRqdXN0bWVudC1mYWN0b3KUdWgcaG1oHU5oH05oIGpgAQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqXQEAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBqOAEAAGghaAN1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBFHQVNfTElNSVRfTUlOSU1VTZSFlIGUfZQoaAVoBmggaoUBAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMA2lkOZRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjBFnYXMtbGltaXQtbWluaW11bZR1aBxobWgdTmgfTmggaoIBAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGp/AQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1oRGgfSwBoIGo4AQAAaCFoA3ViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MEk1JTklNVU1fRElGRklDVUxUWZSFlIGUfZQoaAVoBmggaqcBAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMTCUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwSbWluaW11bS1kaWZmaWN1bHR5lHVoHGhtaB1OaB9OaCBqpAEAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaqEBAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHWhEaB9LAGggajgBAABoIWgDdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wPTUFYX09NTUVSX0RFUFRIlIWUgZR9lChoBWgGaCBqyQEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxMZRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjA9tYXgtb21tZXItZGVwdGiUdWgcaG1oHU5oH05oIGrGAQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqwwEAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBqOAEAAGghaAN1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBFCT01CX0RFTEFZX0JMT0NLU5SFlIGUfZQoaAVoBmggausBAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMTKUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwRYm9tYi1kZWxheS1ibG9ja3OUdWgcaG1oHU5oH05oIGroAQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBq5QEAAHViYWgOfZQoaBBdlGgTXZSMDGNoYW5nZS1hZGRlZJRhaBVdlGgXXZRoGV2UdWgcaGNoHWhEaB9LAGggajgBAABoIWgDdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wQRU1QVFlfT01NRVJfSEFTSJSFlIGUfZQoaAVoBmggag4CAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMTOUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwQZW1wdHktb21tZXItaGFzaJR1aBxobWgdTmgfTmggagsCAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGoIAgAAdWJhaA59lChoEF2UaBNdlIwMY2hhbmdlLWFkZGVklGFoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBqOAEAAGghaAN1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jApCbG9ja0NoYWlulIWUgZR9lChoBWgGaCBqMQIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxMpRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjApibG9ja2NoYWlulHVoHGhtaB1OaB9OaCBqLgIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaisCAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHWhEaB9LAGggajgBAABoIWgDdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wKYXBwbHlfZm9ya5SFlIGUfZQoaAVoBmggalMCAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMTOUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwKYXBwbHktZm9ya5R1aBxobWgdTmgfTmggalACAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpNAgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1oRGgfSwBoIGo4AQAAaCFoA3ViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MGWdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXOUhZSBlH2UKGgFaAZoIGp1AgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDE0lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMGWdldC1sYXN0LTI1Ni1ibG9jay1oYXNoZXOUdWgcaG1oHU5oH05oIGpyAgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqbwIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBqOAEAAGghaAN1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBBzdGF0ZV90cmFuc2l0aW9ulIWUgZR9lChoBWgGaCBqlwIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxNZRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjBBzdGF0ZS10cmFuc2l0aW9ulHVoHGhtaB1OaB9OaCBqlAIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggapECAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHWhEaB9LAGggajgBAABoIWgDdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wPdmFsaWRhdGVfaGVhZGVylIWUgZR9lChoBWgGaCBquQIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxNpRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjA92YWxpZGF0ZS1oZWFkZXKUdWgcaG1oHU5oH05oIGq2AgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqswIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBqOAEAAGghaAN1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBxnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lIWUgZR9lChoBWgGaCBq2wIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQxN5RhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjBxnZW5lcmF0ZS1oZWFkZXItaGFzaC1mb3ItcG93lHVoHGhtaB1OaB9OaCBq2AIAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggatUCAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHWhEaB9LAGggajgBAABoIWgDdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wWdmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5SFlIGUfZQoaAVoBmggav0CAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMTiUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwWdmFsaWRhdGUtcHJvb2Ytb2Ytd29ya5R1aBxobWgdTmgfTmggavoCAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGr3AgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1oRGgfSwBoIGo4AQAAaCFoA3ViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MCmFwcGx5X2JvZHmUhZSBlH2UKGgFaAZoIGofAwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDE5lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMCmFwcGx5LWJvZHmUdWgcaG1oHU5oH05oIGocAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqGQMAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBqOAEAAGghaAN1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jA92YWxpZGF0ZV9vbW1lcnOUhZSBlH2UKGgFaAZoIGpBAwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDIwlGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMD3ZhbGlkYXRlLW9tbWVyc5R1aBxobWgdTmgfTmggaj4DAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGo7AwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1oRGgfSwBoIGo4AQAAaCFoA3ViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MC3BheV9yZXdhcmRzlIWUgZR9lChoBWgGaCBqYwMAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQyMZRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjAtwYXktcmV3YXJkc5R1aBxobWgdTmgfTmggamADAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpdAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1oRGgfSwBoIGo4AQAAaCFoA3ViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+ME3Byb2Nlc3NfdHJhbnNhY3Rpb26UhZSBlH2UKGgFaAZoIGqFAwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDIylGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSME3Byb2Nlc3MtdHJhbnNhY3Rpb26UdWgcaG1oHU5oH05oIGqCAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqfwMAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBqOAEAAGghaAN1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBR2YWxpZGF0ZV90cmFuc2FjdGlvbpSFlIGUfZQoaAVoBmggaqcDAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMjOUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwUdmFsaWRhdGUtdHJhbnNhY3Rpb26UdWgcaG1oHU5oH05oIGqkAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqoQMAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBqOAEAAGghaAN1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBhjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3SUhZSBlH2UKGgFaAZoIGrJAwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDI0lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMGGNhbGN1bGF0ZS1pbnRyaW5zaWMtY29zdJR1aBxobWgdTmgfTmggasYDAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGrDAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1oRGgfSwBoIGo4AQAAaCFoA3ViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MDnJlY292ZXJfc2VuZGVylIWUgZR9lChoBWgGaCBq6wMAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQyNZRhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjA5yZWNvdmVyLXNlbmRlcpR1aBxobWgdTmgfTmggaugDAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGrlAwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1oRGgfSwBoIGo4AQAAaCFoA3ViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+ME3NpZ25pbmdfaGFzaF9wcmUxNTWUhZSBlH2UKGgFaAZoIGoNBAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDI2lGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSME3NpZ25pbmctaGFzaC1wcmUxNTWUdWgcaG1oHU5oH05oIGoKBAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1OaB9OaCBqBwQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBqOAEAAGghaAN1YmhkKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFaAZoB12UaG4pgZR9lChoBWgGaAddlGg/jBBzaWduaW5nX2hhc2hfMTU1lIWUgZR9lChoBWgGaCBqLwQAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlIwEaWQyN5RhaBNdlGgVXZRoF12UaBldlIwFcmVmaWSUjBBzaWduaW5nLWhhc2gtMTU1lHVoHGhtaB1OaB9OaCBqLAQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggaikEAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHWhEaB9LAGggajgBAABoIWgDdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4wTY29tcHV0ZV9oZWFkZXJfaGFzaJSFlIGUfZQoaAVoBmggalEEAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMjiUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwTY29tcHV0ZS1oZWFkZXItaGFzaJR1aBxobWgdTmgfTmggak4EAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHU5oH05oIGpLBAAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhjaB1oRGgfSwBoIGo4AQAAaCFoA3ViaGQpgZR9lChoBWgGaAddlGhpKYGUfZQoaAVoBmgHXZRobimBlH2UKGgFaAZoB12UaD+MD2NoZWNrX2dhc19saW1pdJSFlIGUfZQoaAVoBmgganMEAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZSMBGlkMjmUYWgTXZRoFV2UaBddlGgZXZSMBXJlZmlklIwPY2hlY2stZ2FzLWxpbWl0lHVoHGhtaB1OaB9OaCBqcAQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggam0EAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHWhEaB9LAGggajgBAABoIWgDdWJoZCmBlH2UKGgFaAZoB12UaGkpgZR9lChoBWgGaAddlGhuKYGUfZQoaAVoBmgHXZRoP4waY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHmUhZSBlH2UKGgFaAZoIGqVBAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UjARpZDMwlGFoE12UaBVdlGgXXZRoGV2UjAVyZWZpZJSMGmNhbGN1bGF0ZS1ibG9jay1kaWZmaWN1bHR5lHVoHGhtaB1OaB9OaCBqkgQAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdTmgfTmggao8EAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGNoHWhEaB9LAGggajgBAABoIWgDdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGheaB1oRGgfSwBoIGocAQAAaCFoA3ViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoY2gdaERoH0sAaCBoYGghaAN1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaF5oHWhEaB9LAGggaE1oIWgDdWJlaA59lChoEF2UjBF0YWJsZS1vZi1jb250ZW50c5RhaBNdlCiMCGNvbnRlbnRzlIwFbG9jYWyUZWgVXZSMEXRhYmxlIG9mIGNvbnRlbnRzlGFoF12UaBldlHVoHGhLaB1oHmgfSwhoIGg1aCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjAxJbnRyb2R1Y3Rpb26UaAddlGg/jAxJbnRyb2R1Y3Rpb26UhZSBlH2UKGgFaAZoIGrQBAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfSwtoIGrNBAAAdWJoaSmBlH2UKGgFjCtFbnRyeSBwb2ludCBmb3IgdGhlIEV0aGVyZXVtIHNwZWNpZmljYXRpb24ulGgHXZRoP4wrRW50cnkgcG9pbnQgZm9yIHRoZSBFdGhlcmV1bSBzcGVjaWZpY2F0aW9uLpSFlIGUfZQoaAVoBmggat4EAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9LDWggas0EAAB1YmgAjAdjb21tZW50lJOUKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUjAhwcmVzZXJ2ZZR1aBxq7AQAAGgdTmgfTmggas0EAAB1YmVoDn2UKGgQXZRofmFoE12UaBVdlIwMaW50cm9kdWN0aW9ulGFoF12UaBldlHVoHGgzaB1oHmgfSwtoIGg1aCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjA9Nb2R1bGUgQ29udGVudHOUaAddlGg/jA9Nb2R1bGUgQ29udGVudHOUhZSBlH2UKGgFaAZoIGoDBQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGg4aB1oHmgfSxNoIGoABQAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjAdDbGFzc2VzlGgHXZRoP4wHQ2xhc3Nlc5SFlIGUfZQoaAVoBmggahQFAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9LFmggahEFAAB1YmgijBB0YWJ1bGFyX2NvbF9zcGVjlJOUKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjARzcGVjlIwQXFh7MX17Mn1cWHsxfXsyfZR1aBxqIgUAAGgdjHYvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi9zcGVjL2luZGV4LnJzdDoyOTo8YXV0b3N1bW1hcnk+lGgfTmggahEFAAB1YowWc3BoaW54LmV4dC5hdXRvc3VtbWFyeZSMEWF1dG9zdW1tYXJ5X3RhYmxllJOUKYGUfZQoaAWMPQoKCgpCbG9ja0NoYWluCgpIaXN0b3J5IGFuZCBjdXJyZW50IHN0YXRlIG9mIHRoZSBibG9jayBjaGFpbi6UaAddlGgAjAV0YWJsZZSTlCmBlH2UKGgFaAZoB12UaACMBnRncm91cJSTlCmBlH2UKGgFaAZoB12UKGgAjAdjb2xzcGVjlJOUKYGUfZQoaAVoBmgHXZRoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhjb2x3aWR0aJRLCnVoHGpBBQAAaB1OaB9OaCBqPgUAAHViakIFAAApgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGNvbHdpZHRolEtadWgcakEFAABoHU5oH05oIGo+BQAAdWJoAIwFdGJvZHmUk5QpgZR9lChoBWgGaAddlGgAjANyb3eUk5QpgZR9lChoBWgGaAddlChoAIwFZW50cnmUk5QpgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMPTpvYmo6YEJsb2NrQ2hhaW4gPGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi5zcGVjLkJsb2NrQ2hhaW4+YFyUaAddlChobimBlH2UKGgFaAZoB12UaACMB2xpdGVyYWyUk5QpgZR9lChoBYw8Om9iajpgQmxvY2tDaGFpbiA8ZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnNwZWMuQmxvY2tDaGFpbj5glGgHXZRoP4wKQmxvY2tDaGFpbpSFlIGUfZQoaAVoBmggam8FAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKIwEeHJlZpSMAnB5lIwGcHktb2JqlGVoFV2UaBddlGgZXZR1aBxqbQUAAGgdTmgfTmggamoFAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAhpbnRlcm5hbJSIjAVyZWZpZJSMKGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi5zcGVjLkJsb2NrQ2hhaW6UjAhyZWZ0aXRsZZSMKGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi5zcGVjLkJsb2NrQ2hhaW6UdWgcaG1oHU5oH05oIGpmBQAAdWJoP2gGhZSBlH2UKGgFaAZoIGpmBQAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mdi9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3NwZWMvaW5kZXgucnN0OjI5OjxhdXRvc3VtbWFyeT6UaB9LAWggamMFAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcamEFAABoHU5oH05oIGpeBQAAdWJqYgUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwtSGlzdG9yeSBhbmQgY3VycmVudCBzdGF0ZSBvZiB0aGUgYmxvY2sgY2hhaW4ulGgHXZRoP4wtSGlzdG9yeSBhbmQgY3VycmVudCBzdGF0ZSBvZiB0aGUgYmxvY2sgY2hhaW4ulIWUgZR9lChoBWgGaCBqngUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdai8FAABoH0sBaCBqmwUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqYQUAAGgdTmgfTmggal4FAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcalwFAABoHU5oH05oIGpZBQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpXBQAAaB1OaB9OaCBqPgUAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBGNvbHOUSwJ1aBxqPAUAAGgdTmgfTmggajkFAAB1YmFoDn2UKGgQXZRoE12UjAlsb25ndGFibGWUYWgVXZRoF12UaBldlHVoHGo3BQAAaB1OaB9OaCBqMwUAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRq+AQAAHVoHGoxBQAAaB1qLwUAAGgfTmggahEFAAB1YmVoDn2UKGgQXZRov2FoE12UaBVdlIwHY2xhc3Nlc5RhaBddlGgZXZR1aBxoM2gdaB5oH0sWaCBqAAUAAGghaAN1Ymg0KYGUfZQoaAVoBmgHXZQoaDkpgZR9lChoBYwJRnVuY3Rpb25zlGgHXZRoP4wJRnVuY3Rpb25zlIWUgZR9lChoBWgGaCBq3QUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH0sfaCBq2gUAAHViaiMFAAApgZR9lChoBWgGaAddlGgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBHNwZWOUai4FAAB1aBxqIgUAAGgdjHYvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfTmggatoFAAB1YmoyBQAAKYGUfZQoaAVYFQUAAAoKCgphcHBseV9mb3JrCgpUcmFuc2Zvcm1zIHRoZSBzdGF0ZSBmcm9tIHRoZSBwcmV2aW91cyBoYXJkIGZvcmsgKG9sZCkgaW50byB0aGUgYmxvY2sKCmdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMKCk9idGFpbiB0aGUgbGlzdCBvZiBoYXNoZXMgb2YgdGhlIHByZXZpb3VzIDI1NiBibG9ja3MgaW4gb3JkZXIgb2YKCnN0YXRlX3RyYW5zaXRpb24KCkF0dGVtcHRzIHRvIGFwcGx5IGEgYmxvY2sgdG8gYW4gZXhpc3RpbmcgYmxvY2sgY2hhaW4uCgp2YWxpZGF0ZV9oZWFkZXIKClZlcmlmaWVzIGEgYmxvY2sgaGVhZGVyLgoKZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdwoKR2VuZXJhdGUgcmxwIGhhc2ggb2YgdGhlIGhlYWRlciB3aGljaCBpcyB0byBiZSB1c2VkIGZvciBQcm9vZi1vZi1Xb3JrCgp2YWxpZGF0ZV9wcm9vZl9vZl93b3JrCgpWYWxpZGF0ZXMgdGhlIFByb29mIG9mIFdvcmsgY29uc3RyYWludHMuCgphcHBseV9ib2R5CgpFeGVjdXRlcyBhIGJsb2NrLgoKdmFsaWRhdGVfb21tZXJzCgpWYWxpZGF0ZXMgdGhlIG9tbWVycyBtZW50aW9uZWQgaW4gdGhlIGJsb2NrLgoKcGF5X3Jld2FyZHMKClBheSByZXdhcmRzIHRvIHRoZSBibG9jayBtaW5lciBhcyB3ZWxsIGFzIHRoZSBvbW1lcnMgbWluZXJzLgoKcHJvY2Vzc190cmFuc2FjdGlvbgoKRXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFnYWluc3QgdGhlIHByb3ZpZGVkIGVudmlyb25tZW50LgoKdmFsaWRhdGVfdHJhbnNhY3Rpb24KClZlcmlmaWVzIGEgdHJhbnNhY3Rpb24uCgpjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QKCkNhbGN1bGF0ZXMgdGhlIGdhcyB0aGF0IGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBpcyBzdGFydGVkLgoKcmVjb3Zlcl9zZW5kZXIKCkV4dHJhY3RzIHRoZSBzZW5kZXIgYWRkcmVzcyBmcm9tIGEgdHJhbnNhY3Rpb24uCgpzaWduaW5nX2hhc2hfcHJlMTU1CgpDb21wdXRlIHRoZSBoYXNoIG9mIGEgdHJhbnNhY3Rpb24gdXNlZCBpbiBhIGxlZ2FjeSAo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ZHJhZ29uLnNwZWMudmFsaWRhdGVfaGVhZGVylIwIcmVmdGl0bGWUjC1ldGhlcmV1bS5zcHVyaW91c19kcmFnb24uc3BlYy52YWxpZGF0ZV9oZWFkZXKUdWgcaG1oHU5oH05oIGonBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mdi9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3NwZWMvaW5kZXgucnN0OjU2OjxhdXRvc3VtbWFyeT6UaB9LAWggaiQHAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcamEFAABoHU5oH05oIGohBwAAdWJqYgUAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwYVmVyaWZpZXMgYSBibG9jayBoZWFkZXIulGgHXZRoP4wYVmVyaWZpZXMgYSBibG9jayBoZWFkZXIulIWUgZR9lChoBWgGaCBqWAcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHYvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfSwFoIGpVBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGphBQAAaB1OaB9OaCBqIQcAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXAUAAGgdTmgfTmggahQGAAB1YmpdBQAAKYGUfZQoaAVoBmgHXZQoamIFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMYDpvYmo6YGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3cgPGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi5zcGVjLmdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3c+YJRoB12UaG4pgZR9lChoBWgGaAddlGpuBQAAKYGUfZQoaAVqewcAAGgHXZRoP4wcZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3Bvd5SFlIGUfZQoaAVoBmggaoAHAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGp6BQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcam0FAABoHU5oH05oIGp9BwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDpldGhlcmV1bS5zcHVyaW91c19kcmFnb24uc3BlYy5nZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lIwIcmVmdGl0bGWUjDpldGhlcmV1bS5zcHVyaW91c19kcmFnb24uc3BlYy5nZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lHVoHGhtaB1OaB9OaCBqeQcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHYvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfSwFoIGp2BwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGphBQAAaB1OaB9OaCBqcwcAAHViamIFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMRUdlbmVyYXRlIHJscCBoYXNoIG9mIHRoZSBoZWFkZXIgd2hpY2ggaXMgdG8gYmUgdXNlZCBmb3IgUHJvb2Ytb2YtV29ya5RoB12UaD+MRUdlbmVyYXRlIHJscCBoYXNoIG9mIHRoZSBoZWFkZXIgd2hpY2ggaXMgdG8gYmUgdXNlZCBmb3IgUHJvb2Ytb2YtV29ya5SFlIGUfZQoaAVoBmggaqoHAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYx2L2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vc3BlYy9pbmRleC5yc3Q6NTY6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jHYvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfSwFoIGpBCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGphBQAAaB1OaB9OaCBqDQkAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqXAUAAGgdTmgfTmggahQGAAB1YmpdBQAAKYGUfZQoaAVoBmgHXZQoamIFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMUDpvYmo6YHZhbGlkYXRlX3RyYW5zYWN0aW9uIDxldGhlcmV1bS5zcHVyaW91c19kcmFnb24uc3BlYy52YWxpZGF0ZV90cmFuc2FjdGlvbj5glGgHXZRobimBlH2UKGgFaAZoB12Uam4FAAApgZR9lChoBWpnCQAAaAddlGg/jBR2YWxpZGF0ZV90cmFuc2FjdGlvbpSFlIGUfZQoaAVoBmggamwJAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UKGp6BQAAjAJweZSMBnB5LW9iapRlaBVdlGgXXZRoGV2UdWgcam0FAABoHU5oH05oIGppCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwIaW50ZXJuYWyUiIwFcmVmaWSUjDJldGhlcmV1bS5zcHVyaW91c19kcmFnb24uc3BlYy52YWxpZGF0ZV90cmFuc2FjdGlvbpSMCHJlZnRpdGxllIwyZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnNwZWMudmFsaWRhdGVfdHJhbnNhY3Rpb26UdWgcaG1oHU5oH05oIGplCQAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mdi9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3NwZWMvaW5kZXgucnN0OjU2OjxhdXRvc3VtbWFyeT6UaB9LAWggamIJAAB1YmFoDn2UKGgQXZRoE12UaBVd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AABoHU5oH05oIGoUBgAAdWJqXQUAACmBlH2UKGgFaAZoB12UKGpiBQAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjFw6b2JqOmBjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eSA8ZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnNwZWMuY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHk+YJRoB12UaG4pgZR9lChoBWgGaAddlGpuBQAAKYGUfZQoaAVqpQsAAGgHXZRoP4waY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHmUhZSBlH2UKGgFaAZoIGqqCwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqegUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGptBQAAaB1OaB9OaCBqpwsAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIw4ZXRoZXJldW0uc3B1cmlvdXNfZHJhZ29uLnNwZWMuY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHmUjAhyZWZ0aXRsZZSMOGV0aGVyZXVtLnNwdXJpb3VzX2RyYWdvbi5zcGVjLmNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5lHVoHGhtaB1OaB9OaCBqowsAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjHYvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi9zcGVjL2luZGV4LnJzdDo1Njo8YXV0b3N1bW1hcnk+lGgfSwFoIGqgCwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGphBQAAaB1OaB9OaCBqnQsAAHViamIFAAApgZR9lChoBWgGaAddlGhpKYGUfZQoaAWMQkNvbXB1dGVzIGRpZmZpY3VsdHkgb2YgYSBibG9jayB1c2luZyBpdHMgaGVhZGVyIGFuZCBwYXJlbnQgaGVhZGVyLpRoB12UaD+MQkNvbXB1dGVzIGRpZmZpY3VsdHkgb2YgYSBibG9jayB1c2luZyBpdHMgaGVhZGVy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IGr4FQAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGpiFAAAaB1OaB9OaCBquRUAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqBg8AAGgdaB5oH05oIGp1FQAAdWJlaA59lChoEF2UaBNdlChqshUAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGqyFQAAjAdvYmp0eXBllGq9FgAAjAhkZXNjdHlwZZRqvRYAAIwHbm9pbmRleJSJdWgcatgOAABoHU5oH05oIGpZFQAAdWJqHQ8AACmBlH2UKGgFWN8CAABkZWYgZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlcyhjaGFpbjogQmxvY2tDaGFpbikgLT4gTGlzdFtIYXNoMzJdOgogICAgcmVjZW50X2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stMjU1Ol0KICAgICMgVE9ETzogVGhpcyBmdW5jdGlvbiBoYXMgbm90IGJlZW4gdGVzdGVkIHJpZ29yb3VzbHkKICAgIGlmIGxlbihyZWNlbnRfYmxvY2tzKSA9PSAwOgogICAgICAgIHJldHVybiBbXQoKICAgIHJlY2VudF9ibG9ja19oYXNoZXMgPSBbXQoKICAgIGZvciBibG9jayBpbiByZWNlbnRfYmxvY2tzOgogICAgICAgIHByZXZfYmxvY2tfaGFzaCA9IGJsb2NrLmhlYWRlci5wYXJlbnRfaGFzaAogICAgICAgIHJlY2VudF9ibG9ja19oYXNoZXMuYXBwZW5kKHByZXZfYmxvY2tfaGFzaCkKCiAgICAjIFdlIGFyZSBjb21wdXRpbmcgdGhlIGhhc2ggb25seSBmb3IgdGhlIG1vc3QgcmVjZW50IGJsb2NrIGFuZCBub3QgZm9yCiAgICAjIHRoZSByZXN0IG9mIHRoZSBibG9ja3MgYXMgdGhleSBoYXZlIHN1Y2Nlc3NvcnMgd2hpY2ggaGF2ZSB0aGUgaGFzaCBvZgogICAgIyB0aGUgY3VycmVudCBibG9jayBhcyBwYXJlbnQgaGFzaC4KICAgIG1vc3RfcmVjZW50X2Jsb2NrX2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShyZWNlbnRfYmxvY2tzWy0xXS5oZWFkZXIpKQogICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQobW9zdF9yZWNlbnRfYmxvY2tfaGFzaCkKCiAgICByZXR1cm4gcmVjZW50X2Jsb2NrX2hhc2hlcwqUaAddlGg/WN8CAABkZWYgZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlcyhjaGFpbjogQmxvY2tDaGFpbikgLT4gTGlzdFtIYXNoMzJdOgogICAgcmVjZW50X2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stMjU1Ol0KICAgICMgVE9ETzogVGhpcyBmdW5jdGlvbiBoYXMgbm90IGJlZW4gdGVzdGVkIHJpZ29yb3VzbHkKICAgIGlmIGxlbihyZWNlbnRfYmxvY2tzKSA9PSAwOgogICAgICAgIHJldHVybiBbXQoKICAgIHJlY2VudF9ibG9ja19oYXNoZXMgPSBbXQoKICAgIGZvciBibG9jayBpbiByZWNlbnRfYmxvY2tzOgogICAgICAgIHByZXZfYmxvY2tfaGFzaCA9IGJsb2NrLmhlYWRlci5wYXJlbnRfaGFzaAogICAgICAgIHJlY2VudF9ibG9ja19oYXNoZXMuYXBwZW5kKHByZXZfYmxvY2tfaGFzaCkKCiAgICAjIFdlIGFyZSBjb21wdXRpbmcgdGhlIGhhc2ggb25seSBmb3IgdGhlIG1vc3QgcmVjZW50IGJsb2NrIGFuZCBub3QgZm9yCiAgICAjIHRoZSByZXN0IG9mIHRoZSBibG9ja3MgYXMgdGhleSBoYXZlIHN1Y2Nlc3NvcnMgd2hpY2ggaGF2ZSB0aGUgaGFzaCBvZgogICAgIyB0aGUgY3VycmVudCBibG9jayBhcyBwYXJlbnQgaGFzaC4KICAgIG1vc3RfcmVjZW50X2Jsb2NrX2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShyZWNlbnRfYmxvY2tzWy0xXS5oZWFkZXIpKQogICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQobW9zdF9yZWNlbnRfYmxvY2tfaGFzaCkKCiAgICByZXR1cm4gcmVjZW50X2Jsb2NrX2hhc2hlcwqUhZSBlH2UKGgFaAZoIGrFFgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxW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dGhhdCB0aGUgY29udGVudHMgb2YgdGhlCmJsb2NrIG1ha2UgbG9naWNhbCBzZW5zZSB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgcGFyZW50IGJsb2NrLiBUaGUKaW5mb3JtYXRpb24gaW4gdGhlIGJsb2NrJ3MgaGVhZGVyIG11c3QgYWxzbyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZwppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2sulGgHXZRoP1g1AQAAQWxsIHBhcnRzIG9mIHRoZSBibG9ja+KAmXMgY29udGVudHMgbmVlZCB0byBiZSB2ZXJpZmllZCBiZWZvcmUgYmVpbmcgYWRkZWQKdG8gdGhlIGNoYWluLiBCbG9ja3MgYXJlIHZlcmlmaWVkIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZQpibG9jayBtYWtlIGxvZ2ljYWwgc2Vuc2Ugd2l0aCB0aGUgY29udGVudHMgb2YgdGhlIHBhcmVudCBibG9jay4gVGhlCmluZm9ybWF0aW9uIGluIHRoZSBibG9ja+KAmXMgaGVhZGVyIG11c3QgYWxzbyBtYXRjaCB0aGUgY29ycmVzcG9uZGluZwppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2sulIWUgZR9lChoBWgGaCBqbBcAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH0vsaCBqWxcAAHViaGkpgZR9lChoBYz8VG8gaW1wbGVtZW50IEV0aGVyZXVtLCBpbiB0aGVvcnkgY2xpZW50cyBhcmUgb25seSByZXF1aXJlZCB0byBzdG9yZSB0aGUKbW9zdCByZWNlbnQgMjU1IGJsb2NrcyBvZiB0aGUgY2hhaW4gc2luY2UgYXMgZmFyIGFzIGV4ZWN1dGlvbiBpcwpjb25jZXJuZWQsIG9ubHkgdGhvc2UgYmxvY2tzIGFyZSBhY2Nlc3NlZC4gUHJhY3RpY2FsbHksIGhvd2V2ZXIsIGNsaWVudHMKc2hvdWxkIHN0b3JlIG1vcmUgYmxvY2tzIHRvIGhhbmRsZSByZW9yZ3MulGgHXZRoP4z8VG8gaW1wbGVtZW50IEV0aGVyZXVtLCBpbiB0aGVvcnkgY2xpZW50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WMIEAABkZWYgc3RhdGVfdHJhbnNpdGlvbihjaGFpbjogQmxvY2tDaGFpbiwgYmxvY2s6IEJsb2NrKSAtPiBOb25lOgogICAgcGFyZW50X2hlYWRlciA9IGNoYWluLmJsb2Nrc1stMV0uaGVhZGVyCiAgICB2YWxpZGF0ZV9oZWFkZXIoYmxvY2suaGVhZGVyLCBwYXJlbnRfaGVhZGVyKQogICAgdmFsaWRhdGVfb21tZXJzKGJsb2NrLm9tbWVycywgYmxvY2suaGVhZGVyLCBjaGFpbikKICAgICgKICAgICAgICBnYXNfdXNlZCwKICAgICAgICB0cmFuc2FjdGlvbnNfcm9vdCwKICAgICAgICByZWNlaXB0X3Jvb3QsCiAgICAgICAgYmxvY2tfbG9nc19ibG9vbSwKICAgICAgICBzdGF0ZSwKICAgICkgPSBhcHBseV9ib2R5KAogICAgICAgIGNoYWluLnN0YXRlLAogICAgICAgIGdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMoY2hhaW4pLAogICAgICAgIGJsb2NrLmhlYWRlci5jb2luYmFzZSwKICAgICAgICBibG9jay5oZWFkZXIubnVtYmVyLAogICAgICAgIGJsb2NrLmhlYWRlci5nYXNfbGltaXQsCiAgICAgICAgYmxvY2suaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBibG9jay5oZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBibG9jay50cmFuc2FjdGlvbnMsCiAgICAgICAgYmxvY2sub21tZXJzLAogICAgICAgIGNoYWluLmNoYWluX2lkLAogICAgKQogICAgZW5zdXJlKGdhc191c2VkID09IGJsb2NrLmhlYWRlci5nYXNfdXNlZCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHRyYW5zYWN0aW9uc19yb290ID09IGJsb2NrLmhlYWRlci50cmFuc2FjdGlvbnNfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHN0YXRlX3Jvb3Qoc3RhdGUpID09IGJsb2NrLmhlYWRlci5zdGF0ZV9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUocmVjZWlwdF9yb290ID09IGJsb2NrLmhlYWRlci5yZWNlaXB0X3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShibG9ja19sb2dzX2Jsb29tID09IGJsb2NrLmhlYWRlci5ibG9vbSwgSW52YWxpZEJsb2NrKQoKICAgIGNoYWluLmJsb2Nrcy5hcHBlbmQoYmxvY2spCiAgICBpZiBsZW4oY2hhaW4uYmxvY2tzKSA+IDI1NToKICAgICAgICAjIFJlYWwgY2xpZW50cyBoYXZlIHRvIHN0b3JlIG1vcmUgYmxvY2tzIHRvIGRlYWwgd2l0aCByZW9yZ3MsIGJ1dCB0aGUKICAgICAgICAjIHByb3RvY29sIG9ubHkgcmVxdWlyZXMgdGhlIGxhc3QgMjU1CiAgICAgICAgY2hhaW4uYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQqUaAddlGg/WMIEAABkZWYgc3RhdGVfdHJhbnNpdGlvbihjaGFpbjogQmxvY2tDaGFpbiwgYmxvY2s6IEJsb2NrKSAtPiBOb25lOgogICAgcGFyZW50X2hlYWRlciA9IGNoYWluLmJsb2Nrc1stMV0uaGVhZGVyCiAgICB2YWxpZGF0ZV9oZWFkZXIoYmxvY2suaGVhZGVyLCBwYXJlbnRfaGVhZGVyKQogICAgdmFsaWRhdGVfb21tZXJzKGJsb2NrLm9tbWVycywgYmxvY2suaGVhZGVyLCBjaGFpbikKICAgICgKICAgICAgICBnYXNfdXNlZCwKICAgICAgICB0cmFuc2FjdGlvbnNfcm9vdCwKICAgICAgICByZWNlaXB0X3Jvb3QsCiAgICAgICAgYmxvY2tfbG9nc19ibG9vbSwKICAgICAgICBzdGF0ZSwKICAgICkgPSBhcHBseV9ib2R5KAogICAgICAgIGNoYWluLnN0YXRlLAogICAgICAgIGdldF9sYXN0XzI1Nl9ibG9ja19oYXNoZXMoY2hhaW4pLAogICAgICAgIGJsb2NrLmhlYWRlci5jb2luYmFzZSwKICAgICAgICBibG9jay5oZWFkZXIubnVtYmVyLAogICAgICAgIGJsb2NrLmhlYWRlci5nYXNfbGltaXQsCiAgICAgICAgYmxvY2suaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBibG9jay5oZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBibG9jay50cmFuc2FjdGlvbnMsCiAgICAgICAgYmxvY2sub21tZXJzLAogICAgICAgIGNoYWluLmNoYWluX2lkLAogICAgKQogICAgZW5zdXJlKGdhc191c2VkID09IGJsb2NrLmhlYWRlci5nYXNfdXNlZCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHRyYW5zYWN0aW9uc19yb290ID09IGJsb2NrLmhlYWRlci50cmFuc2FjdGlvbnNfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHN0YXRlX3Jvb3Qoc3RhdGUpID09IGJsb2NrLmhlYWRlci5zdGF0ZV9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUocmVjZWlwdF9yb290ID09IGJsb2NrLmhlYWRlci5yZWNlaXB0X3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShibG9ja19sb2dzX2Jsb29tID09IGJsb2NrLmhlYWRlci5ibG9vbSwgSW52YWxpZEJsb2NrKQoKICAgIGNoYWluLmJsb2Nrcy5hcHBlbmQoYmxvY2spCiAgICBpZiBsZW4oY2hhaW4uYmxvY2tzKSA+IDI1NToKICAgICAgICAjIFJlYWwgY2xpZW50cyBoYXZlIHRvIHN0b3JlIG1vcmUgYmxvY2tzIHRvIGRlYWwgd2l0aCByZW9yZ3MsIGJ1dCB0aGUKICAgICAgICAjIHByb3RvY29sIG9ubHkgcmVxdWlyZXMgdGhlIGxhc3QgMjU1CiAgICAgICAgY2hhaW4uYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0yNTU6XQqUhZSBlH2UKGgFaAZoIGotGAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxWL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3NwZWMucHmUjAl4bWw6c3BhY2WUavgEAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqVg8AAEsBc4wHbGluZW5vc5SJdWgcahwP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aW1lc3RhbXAsCiAgICAgICAgcGFyZW50X2hlYWRlci5kaWZmaWN1bHR5LAogICAgKQogICAgZW5zdXJlKGhlYWRlci5kaWZmaWN1bHR5ID09IGJsb2NrX2RpZmZpY3VsdHksIEludmFsaWRCbG9jaykKCiAgICBibG9ja19wYXJlbnRfaGFzaCA9IGtlY2NhazI1NihybHAuZW5jb2RlKHBhcmVudF9oZWFkZXIpKQogICAgZW5zdXJlKGhlYWRlci5wYXJlbnRfaGFzaCA9PSBibG9ja19wYXJlbnRfaGFzaCwgSW52YWxpZEJsb2NrKQoKICAgIHZhbGlkYXRlX3Byb29mX29mX3dvcmsoaGVhZGVyKQqUaAddlChoP4xIZGVmIHZhbGlkYXRlX2hlYWRlcihoZWFkZXI6IEhlYWRlciwgcGFyZW50X2hlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAglIWUgZR9lChoBWgGaCBqiRkAAGghaANoHWhEaB9LAHViaicPAAApgZR9lChoBWgGaAddlGg/jEZwYXJlbnRfaGFzX29tbWVycyA9IHBhcmVudF9oZWFkZXIub21tZXJzX2hhc2ggIT0gRU1QVFlfT01NRVJfSEFTSAogICAglIWUgZR9lChoBWgGaCBqkRkAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMDGNoYW5nZS1hZGRlZJRhaBVdlGgXXZRoGV2UdWgcaiYPAABoIGqJGQAAaCFoA2gdaERoH0sAdWJoP1jUAQAAZW5zdXJlKGhlYWRlci50aW1lc3RhbXAgPiBwYXJlbnRfaGVhZGVyLnRpbWVzdGFtcCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGhlYWRlci5udW1iZXIgPT0gcGFyZW50X2hlYWRlci5udW1iZXIgKyAxLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoCiAgICAgICAgY2hlY2tfZ2FzX2xpbWl0KGhlYWRlci5nYXNfbGltaXQsIHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0KSwKICAgICAgICBJbnZhbGlkQmxvY2ssCiAgICApCiAgICBlbnN1cmUobGVuKGhlYWRlci5leHRyYV9kYXRhKSA8PSAzMiwgSW52YWxpZEJsb2NrKQoKICAgIGJsb2NrX2RpZmZpY3VsdHkgPSBjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eSgKICAgICAgICBoZWFkZXIubnVtYmVyLAogICAgICAgIGhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgcGFyZW50X2hlYWRlci50aW1lc3RhbXAsCiAgICAgICAgcGFyZW50X2hlYWRlci5kaWZmaWN1bHR5LAogICAglIWUgZR9lChoBWgGaCBqiRkAAGghaANoHWhEaB9LAHViaicPAAApgZR9lChoBWgGaAddlGg/jBdwYXJlbnRfaGFzX29tbWVycywKICAgIJSFlIGUfZQoaAVoBmggaqMZAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjAxjaGFuZ2UtYWRkZWSUYWgVXZRoF12UaBldlHVoHGomDwAAaCBqiRkAAGghaANoHWhEaB9LAHViaD+M5ikKICAgIGVuc3VyZShoZWFkZXIuZGlmZmljdWx0eSA9PSBibG9ja19kaWZmaWN1bHR5LCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfcGFyZW50X2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShwYXJlbnRfaGVhZGVyKSkKICAgIGVuc3VyZShoZWFkZXIucGFyZW50X2hhc2ggPT0gYmxvY2tfcGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKCiAgICB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcikKlIWUgZR9lChoBWgGaCBqiRkAAGghaANoHWhEaB9LAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVi9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL3NwdXJpb3VzX2RyYWdvbi9zcGVjLnB5lIwJeG1sOnNwYWNllGr4BAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UalYPAABLAXOMB2xpbmVub3OUiXVoHGocDwAAaB1oHmgfTRcBaCBqSxgAAGghaAN1YmVoDn2UKGgQXZRqyAIAAGFoE12UaBVdlIwPdmFsaWRhdGVfaGVhZGVylGFoF12U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TmgfTmggaqAaAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcamIUAABoHU5oH05oIGorGgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoGDwAAaB1oHmgfTmggaucZAAB1YmVoDn2UKGgQXZRoE12UKGokGgAAjAhmdW5jdGlvbpRlaBVdlGgXXZRoGV2UjAZkb21haW6UaiQaAACMB29ianR5cGWUamUbAACMCGRlc2N0eXBllGplGwAAjAdub2luZGV4lIl1aBxq2A4AAGgdTmgfTmggassZAAB1YmodDwAAKYGUfZQoaAVYAwIAAGRlZiBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93KGhlYWRlcjogSGVhZGVyKSAtPiBIYXNoMzI6CiAgICBoZWFkZXJfZGF0YV93aXRob3V0X3Bvd19hcnRlZmFjdHMgPSBbCiAgICAgICAgaGVhZGVyLnBhcmVudF9oYXNoLAogICAgICAgIGhlYWRlci5vbW1lcnNfaGFzaCwKICAgICAgICBoZWFkZXIuY29pbmJhc2UsCiAgICAgICAgaGVhZGVyLnN0YXRlX3Jvb3QsCiAgICAgICAgaGVhZGVyLnRyYW5zYWN0aW9uc19yb290LAogICAgICAgIGhlYWRlci5yZWNlaXB0X3Jvb3QsCiAgICAgICAgaGVhZGVyLmJsb29tLAogICAgICAgIGhlYWRlci5kaWZmaWN1bHR5LAogICAgICAgIGhlYWRlci5udW1iZXIsCiAgICAgICAgaGVhZGVyLmdhc19saW1pdCwKICAgICAgICBoZWFkZXIuZ2FzX3VzZWQsCiAgICAgICAgaGVhZGVyLnRpbWVzdGFtcCwKICAgICAgICBoZWFkZXIuZXh0cmFfZGF0YSwKICAgIF0KCiAgICByZXR1cm4gcmxwLnJscF9oYXNoKGhlYWRlcl9kYXRhX3dpdGhvdXRfcG93X2FydGVmYWN0cykKlGgHXZRoP1gDAgAAZGVmIGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3coaGVhZGVyOiBIZWFkZXIpIC0+IEhhc2gzMjoKICAgIGhlYWRlcl9kYXRhX3dpdGhvdXRfcG93X2FydGVmYWN0cyA9IFsKICAgICAgICBoZWFkZXIucGFyZW50X2hhc2gsCiAgICAgICAgaGVhZGVyLm9tbWVyc19oYXNoLAogICAgICAgIGhlYWRlci5jb2luYmFzZSwKICAgICAgICBoZWFkZXIuc3RhdGVfcm9vdCwKICAgICAgICBoZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgaGVhZGVyLnJlY2VpcHRfcm9vdCwKICAgICAgICBoZWFkZXIuYmxvb20sCiAgICAgICAgaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgaGVhZGVyLm51bWJlciwKICAgICAgICBoZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGhlYWRlci5nYXNfdXNlZCwKICAgICAgICBoZWFkZXIudGltZXN0YW1wLAogICAgICAgIGhlYWRlci5leHRyYV9kYXRhLAogICAgXQoKICAgIHJldHVybiBybHAucmxwX2hhc2goaGVhZGVyX2RhdGFfd2l0aG91dF9wb3dfYXJ0ZWZhY3RzKQqUhZSBlH2UKGgFaAZoIGptGwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxWL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3NwZWMucHmUjAl4bWw6c3BhY2WUavgEAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqVg8AAEsBc4wHbGluZW5vc5SJdWgcahwPAABoHWgeaB9NNQFoIGrLGQAAdWJlaA59lChoEF2UauoCAABhaBNdlGgVXZSMHGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUYWgXXZRoGV2UdWgcaDNoHWgeaB9NHAFoIGqnDgAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjBZ2YWxpZGF0ZV9wcm9vZl9vZl93b3JrlGgHXZRoP4wWdmFsaWRhdGVfcHJvb2Zfb2Zfd29ya5SFlIGUfZQoaAVoBmggao4bAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDho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SW52YWxpZEJsb2NrKQogICAgZW5zdXJlKAogICAgICAgIFVpbnQuZnJvbV9iZV9ieXRlcyhyZXN1bHQpIDw9IChVMjU2X0NFSUxfVkFMVUUgLy8gaGVhZGVyLmRpZmZpY3VsdHkpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKlGgHXZRoP1g2AgAAZGVmIHZhbGlkYXRlX3Byb29mX29mX3dvcmsoaGVhZGVyOiBIZWFkZXIpIC0+IE5vbmU6CiAgICBoZWFkZXJfaGFzaCA9IGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3coaGVhZGVyKQogICAgIyBUT0RPOiBNZW1vaXplIHRoaXMgc29tZXdoZXJlIGFuZCByZWFkIGZyb20gdGhhdCBkYXRhIGluc3RlYWQgb2YKICAgICMgY2FsY3VsYXRpbmcgY2FjaGUgZm9yIGV2ZXJ5IGJsb2NrIHZhbGlkYXRpb24uCiAgICBjYWNoZSA9IGdlbmVyYXRlX2NhY2hlKGhlYWRlci5udW1iZXIpCiAgICBtaXhfZGlnZXN0LCByZXN1bHQgPSBoYXNoaW1vdG9fbGlnaHQoCiAgICAgICAgaGVhZGVyX2hhc2gsIGhlYWRlci5ub25jZSwgY2FjaGUsIGRhdGFzZXRfc2l6ZShoZWFkZXIubnVtYmVyKQogICAgKQoKICAgIGVuc3VyZShtaXhfZGlnZXN0ID09IGhlYWRlci5taXhfZGlnZXN0LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoCiAgICAgICAgVWludC5mcm9tX2JlX2J5dGVzKHJlc3VsdCkgPD0gKFUyNTZfQ0VJTF9WQUxVRSAvLyBoZWFkZXIuZGlmZmljdWx0eSksCiAgICAgICAgSW52YWxpZEJsb2NrLAogICAgKQqUhZSBlH2UKGgFaAZoIGqZHAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxWL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3NwZWMucHmUjAl4bWw6c3BhY2WUavgEAACMBWZvcmNllImMCGxhbmd1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aBBdlGgTXZQoaugdAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRq6B0AAIwHb2JqdHlwZZRqIiEAAIwIZGVzY3R5cGWUaiIhAACMB25vaW5kZXiUiXVoHGrYDgAAaB1oRGgfSwBoIGq3HAAAaCFoA3Viah0PAAApgZR9lChoBViQBwAAZGVmIGFwcGx5X2JvZHkoCiAgICBzdGF0ZTogU3RhdGUsCiAgICBibG9ja19oYXNoZXM6IExpc3RbSGFzaDMyXSwKICAgIGNvaW5iYXNlOiBBZGRyZXNzLAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgYmxvY2tfZ2FzX2xpbWl0OiBVaW50LAogICAgYmxvY2tfdGltZTogVTI1NiwKICAgIGJsb2NrX2RpZmZpY3VsdHk6IFVpbnQsCiAgICB0cmFuc2FjdGlvbnM6IFR1cGxlW1RyYW5zYWN0aW9uLCAuLi5dLAogICAgb21tZXJzOiBUdXBsZVtIZWFkZXIsIC4uLl0sCiAgICBjaGFpbl9pZDogVWludDY0LAopIC0+IFR1cGxlW1VpbnQsIFJvb3QsIFJvb3QsIEJsb29tLCBTdGF0ZV06CiAgICBnYXNfYXZhaWxhYmxlID0gYmxvY2tfZ2FzX2xpbWl0CiAgICB0cmFuc2FjdGlvbnNfdHJpZTogVHJpZVtCeXRlcywgT3B0aW9uYWxbVHJhbnNhY3Rpb25dXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICByZWNlaXB0c190cmllOiBUcmllW0J5dGVzLCBPcHRpb25hbFtSZWNlaXB0XV0gPSBUcmllKAogICAgICAgIHNlY3VyZWQ9RmFsc2UsIGRlZmF1bHQ9Tm9uZQogICAgKQogICAgYmxvY2tfbG9nczogVHVwbGVbTG9nLCAuLi5dID0gKCkKCiAgICBmb3IgaSwgdHggaW4gZW51bWVyYXRlKHRyYW5zYWN0aW9ucyk6CiAgICAgICAgdHJpZV9zZXQodHJhbnNhY3Rpb25zX3RyaWUsIHJscC5lbmNvZGUoVWludChpKSksIHR4KQoKICAgICAgICBlbnN1cmUodHguZ2FzIDw9IGdhc19hdmFpbGFibGUsIEludmFsaWRCbG9jaykKICAgICAgICBzZW5kZXJfYWRkcmVzcyA9IHJlY292ZXJfc2VuZGVyKGNoYWluX2lkLCB0eCkKCiAgICAgICAgZW52ID0gdm0uRW52aXJvbm1lbnQoCiAgICAgICAgICAgIGNhbGxlcj1zZW5kZXJfYWRkcmVzcywKICAgICAgICAgICAgb3JpZ2luPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBibG9ja19oYXNoZXM9YmxvY2tfaGFzaGVzLAogICAgICAgICAgICBjb2luYmFzZT1jb2luYmFzZSwKICAgICAgICAgICAgbnVtYmVyPWJsb2NrX251bWJlciwKICAgICAgICAgICAgZ2FzX2xpbWl0PWJsb2NrX2dhc19saW1pdCwKICAgICAgICAgICAgZ2FzX3ByaWNlPXR4Lmdhc19wcmljZSwKICAgICAgICAgICAgdGltZT1ibG9ja190aW1lLAogICAgICAgICAgICBkaWZmaWN1bHR5PWJsb2NrX2RpZmZpY3VsdHksCiAgICAgICAgICAgIHN0YXRlPXN0YXRlLAogICAgICAgICkKCiAgICAgICAgZ2FzX3VzZWQsIGxvZ3MgPSBwcm9jZXNzX3RyYW5zYWN0aW9uKGVudiwgdHgpCiAgICAgICAgZ2FzX2F2YWlsYWJsZSAtPSBnYXNfdXNlZAoKICAgICAgICB0cmllX3NldCgKICAgICAgICAgICAgcmVjZWlwdHNfdHJpZSwKICAgICAgICAgICAgcmxwLmVuY29kZShVaW50KGkpKSwKICAgICAgICAgICAgUmVjZWlwdCgKICAgICAgICAgICAgICAgIHBvc3Rfc3RhdGU9c3RhdGVfcm9vdChzdGF0ZSksCiAgICAgICAgICAgICAgICBjdW11bGF0aXZlX2dhc191c2VkPShibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlKSwKICAgICAgICAgICAgICAgIGJsb29tPWxvZ3NfYmxvb20obG9ncyksCiAgICAgICAgICAgICAgICBsb2dzPWxvZ3MsCiAgICAgICAgICAgICksCiAgICAgICAgKQogICAgICAgIGJsb2NrX2xvZ3MgKz0gbG9ncwoKICAgIHBheV9yZXdhcmRzKHN0YXRlLCBibG9ja19udW1iZXIsIGNvaW5iYXNlLCBvbW1lcnMpCgogICAgZ2FzX3JlbWFpbmluZyA9IGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUKCiAgICBibG9ja19sb2dzX2Jsb29tID0gbG9nc19ibG9vbShibG9ja19sb2dzKQoKICAgIHJldHVybiAoCiAgICAgICAgZ2FzX3JlbWFpbmluZywKICAgICAgICByb290KHRyYW5zYWN0aW9uc190cmllKSwKICAgICAgICByb290KHJlY2VpcHRzX3RyaWUpLAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApCpRoB12UKGg/WMwEAABkZWYgYXBwbHlfYm9keSgKICAgIHN0YXRlOiBTdGF0ZSwKICAgIGJsb2NrX2hhc2hlczogTGlzdFtIYXNoMzJdLAogICAgY29pbmJhc2U6IEFkZHJlc3MsCiAgICBibG9ja19udW1iZXI6IFVpbnQsCiAgICBibG9ja19nYXNfbGltaXQ6IFVpbnQsCiAgICBibG9ja190aW1lOiBVMjU2LAogICAgYmxvY2tfZGlmZmljdWx0eTogVWludCwKICAgIHRyYW5zYWN0aW9uczogVHVwbGVbVHJhbnNhY3Rpb24sIC4uLl0sCiAgICBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwKICAgIGNoYWluX2lkOiBVaW50NjQsCikgLT4gVHVwbGVbVWludCwgUm9vdCwgUm9vdCwgQmxvb20sIFN0YXRlXToKICAgIGdhc19hdmFpbGFibGUgPSBibG9ja19nYXNfbGltaXQKICAgIHRyYW5zYWN0aW9uc190cmllOiBUcmllW0J5dGVzLCBPcHRpb25hbFtUcmFuc2FjdGlvbl1dID0gVHJpZSgKICAgICAgICBzZWN1cmVkPUZhbHNlLCBkZWZhdWx0PU5vbmUKICAgICkKICAgIHJlY2VpcHRzX3RyaWU6IFRyaWVbQnl0ZXMsIE9wdGlvbmFsW1JlY2VpcHRdXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICBibG9ja19sb2dzOiBUdXBsZVtMb2csIC4uLl0gPSAoKQoKICAgIGZvciBpLCB0eCBpbiBlbnVtZXJhdGUodHJhbnNhY3Rpb25zKToKICAgICAgICB0cmllX3NldCh0cmFuc2FjdGlvbnNfdHJpZSwgcmxwLmVuY29kZShVaW50KGkpKSwgdHgpCgogICAgICAgIGVuc3VyZSh0eC5nYXMgPD0gZ2FzX2F2YWlsYWJsZSwgSW52YWxpZEJsb2NrKQogICAgICAgIHNlbmRlcl9hZGRyZXNzID0gcmVjb3Zlcl9zZW5kZXIoY2hhaW5faWQsIHR4KQoKICAgICAgICBlbnYgPSB2bS5FbnZpcm9ubWVudCgKICAgICAgICAgICAgY2FsbGVyPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBvcmlnaW49c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIGJsb2NrX2hhc2hlcz1ibG9ja19oYXNoZXMsCiAgICAgICAgICAgIGNvaW5iYXNlPWNvaW5iYXNlLAogICAgICAgICAgICBudW1iZXI9YmxvY2tfbnVtYmVyLAogICAgICAgICAgICBnYXNfbGltaXQ9YmxvY2tfZ2FzX2xpbWl0LAogICAgICAgICAgICBnYXNfcHJpY2U9dHguZ2FzX3ByaWNlLAogICAgICAgICAgICB0aW1lPWJsb2NrX3RpbWUsCiAgICAgICAgICAgIGRpZmZpY3VsdHk9YmxvY2tfZGlmZmljdWx0eSwKICAgICAgICAgICAgc3RhdGU9c3RhdGUsCiAgICAgICAgKQoKICAgICAgICBnYXNfdXNlZCwglIWUgZR9lChoBWgGaCBqKiEAAGghaANoHWhEaB9LAHViaicPAAApgZR9lChoBWgGaAddlGg/WJcBAABsb2dzLCBoYXNfZXJyZWQgPSBwcm9jZXNzX3RyYW5zYWN0aW9uKGVudiwgdHgpCiAgICAgICAgZ2FzX2F2YWlsYWJsZSAtPSBnYXNfdXNlZAoKICAgICAgICB0cmllX3NldCgKICAgICAgICAgICAgcmVjZWlwdHNfdHJpZSwKICAgICAgICAgICAgcmxwLmVuY29kZShVaW50KGkpKSwKICAgICAgICAgICAgUmVjZWlwdCgKICAgICAgICAgICAgICAgIHN1Y2NlZWRlZD1ub3QgaGFzX2VycmVkLAogICAgICAgICAgICAgICAgY3VtdWxhdGl2ZV9nYXNfdXNlZD0oYmxvY2tfZ2FzX2xpbWl0IC0gZ2FzX2F2YWlsYWJsZSksCiAgICAgICAgICAgICAgICBibG9vbT1sb2dzX2Jsb29tKGxvZ3MpLAogICAgICAgICAgICAgICAgbG9ncz1sb2dzLAogICAgICAgICAgICApLAogICAgICAgICkKICAgICAgICBibG9ja19sb2dzICs9IJSFlIGUfZQoaAVoBmggajIhAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjAxjaGFuZ2UtYWRkZWSUYWgVXZRoF12UaBldlHVoHGomDwAAaCBqKiEAAGghaANoHWhEaB9LAHViaD+MBWxvZ3MglIWUgZR9lChoBWgGaCBqKiEAAGghaANoHWhEaB9LAHViaicPAAApgZR9lChoBWgGaAddlGg/jEZwYXlfcmV3YXJkcyhzdGF0ZSwgYmxvY2tfbnVtYmVyLCBjb2luYmFzZSwgb21tZXJzKQoKICAgIGdhc19yZW1haW5pbmcglIWUgZR9lChoBWgGaCBqRCEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMDGNoYW5nZS1hZGRlZJRhaBVdlGgXXZRoGV2UdWgcaiYPAABoIGoqIQAAaCFoA2gdaERoH0sAdWJoP4wCPSCUhZSBlH2UKGgFaAZoIGoqIQAAaCFoA2gdaERoH0sAdWJqJw8AACmBlH2UKGgFaAZoB12UaD+MHHByb2Nlc3NfdHJhbnNhY3Rpb24oZW52LCB0eCmUhZSBlH2UKGgFaAZoIGpWIQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlIwPY2hhbmdlLXJlcGxhY2VklGFoFV2UaBddlGgZXZR1aBxqJg8AAGggaiohAABoIWgDaB1oRGgfSwB1YmonDwAAKYGUfZQoaAVoBmgHXZRoP4wRYmxvY2tfZ2FzX2xpbWl0IC2UhZSBlH2UKGgFaAZoIGpkIQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlIwSY2hhbmdlLXJlcGxhY2VtZW50lGFoFV2UaBddlGgZXZR1aBxqJg8AAGggaiohAABoIWgDaB1oRGgfSwB1Ymg/jBcKICAgICAgICBnYXNfYXZhaWxhYmxlIJSFlIGUfZQoaAVoBmggaiohAABoIWgDaB1oRGgfSwB1YmonDwAAKYGUfZQoaAVoBmgHXZRoP1jOAQAALT0gZ2FzX3VzZWQKCiAgICAgICAgdHJpZV9zZXQoCiAgICAgICAgICAgIHJlY2VpcHRzX3RyaWUsCiAgICAgICAgICAgIHJscC5lbmNvZGUoVWludChpKSksCiAgICAgICAgICAgIFJlY2VpcHQoCiAgICAgICAgICAgICAgICBwb3N0X3N0YXRlPXN0YXRlX3Jvb3Qoc3RhdGUpLAogICAgICAgICAgICAgICAgY3VtdWxhdGl2ZV9nYXNfdXNlZD0oYmxvY2tfZ2FzX2xpbWl0IC0gZ2FzX2F2YWlsYWJsZSksCiAgICAgICAgICAgICAgICBibG9vbT1sb2dzX2Jsb29tKGxvZ3MpLAogICAgICAgICAgICAgICAgbG9ncz1sb2dzLAogICAgICAgICAgICApLAogICAgICAgICkKICAgICAgICBibG9ja19sb2dzICs9IGxvZ3MKCiAgICBwYXlfcmV3YXJkcyhzdGF0ZSwgYmxvY2tfbnVtYmVyLCBjb2luYmFzZSwgb21tZXJzKQoKICAgIGdhc19yZW1haW5pbmcgPSBibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlCgogICAglIWUgZR9lChoBWgGaCBqdiEAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZSMDmNoYW5nZS1yZW1vdmVklGFoFV2UaBddlGgZXZR1aBxqJg8AAGggaiohAABoIWgDaB1oRGgfSwB1Ymg/jLxibG9ja19sb2dzX2Jsb29tID0gbG9nc19ibG9vbShibG9ja19sb2dzKQoKICAgIHJldHVybiAoCiAgICAgICAgZ2FzX3JlbWFpbmluZywKICAgICAgICByb290KHRyYW5zYWN0aW9uc190cmllKSwKICAgICAgICByb290KHJlY2VpcHRzX3RyaWUpLAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApCpSFlIGUfZQoaAVoBmggaiohAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFYvaG9tZS9ydW5u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cl9wYXJlbnRfaGVhZGVyKQoKICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBjYW4gYmUgb25seSBhdCBtb3N0IDIgb21tZXJzIGZvciBhIGJsb2NrLgogICAgZW5zdXJlKGxlbihvbW1lcnMpIDw9IDIsIEludmFsaWRCbG9jaykKCiAgICBvbW1lcnNfaGFzaGVzID0gW3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIG9tbWVyc10KICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gZHVwbGljYXRlcyBpbiB0aGUgb21tZXJzIG9mIGN1cnJlbnQgYmxvY2sKICAgIGVuc3VyZShsZW4ob21tZXJzX2hhc2hlcykgPT0gbGVuKHNldChvbW1lcnNfaGFzaGVzKSksIEludmFsaWRCbG9jaykKCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stKE1BWF9PTU1FUl9ERVBUSCArIDEpIDpdCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcyA9IHsKICAgICAgICBybHAucmxwX2hhc2goYmxvY2suaGVhZGVyKSBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3MKICAgIH0KICAgIHJlY2VudF9vbW1lcnNfaGFzaGVzOiBTZXRbSGFzaDMyXSA9IHNldCgpCiAgICBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3M6CiAgICAgICAgcmVjZW50X29tbWVyc19oYXNoZXMgPSByZWNlbnRfb21tZXJzX2hhc2hlcy51bmlvbigKICAgICAgICAgICAge3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIGJsb2NrLm9tbWVyc30KICAgICAgICApCgogICAgZm9yIG9tbWVyX2luZGV4LCBvbW1lciBpbiBlbnVtZXJhdGUob21tZXJzKToKICAgICAgICBvbW1lcl9oYXNoID0gb21tZXJzX2hhc2hlc1tvbW1lcl9pbmRleF0KICAgICAgICAjIFRoZSBjdXJyZW50IGJsb2NrIHNob3VsZG4ndCBiZSB0aGUgb21tZXIKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCAhPSBibG9ja19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgc2hvdWxkbid0IGJlIG9uZSBvZiB0aGUgcmVjZW50IGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSB1bmNsZXMgbWVudGlvbmVkIGluIHRoZSByZWNlbnQKICAgICAgICAjIGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X29tbWVyc19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBhZ2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJsb2NrLiBGb3IgZXhhbXBsZSwgYW4gYWdlIG9mCiAgICAgICAgIyAxIGluZGljYXRlcyB0aGF0IHRoZSBvbW1lciBpcyBhIHNpYmxpbmcgb2YgcHJldmlvdXMgYmxvY2suCiAgICAgICAgb21tZXJfYWdlID0gYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyX2FnZSA8PSBNQVhfT01NRVJfREVQVEgsIEludmFsaWRCbG9jaykKCiAgICAgICAgZW5zdXJlKAogICAgICAgICAgICBvbW1lci5wYXJlbnRfaGFzaCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrCiAgICAgICAgKQogICAgICAgIGVuc3VyZShvbW1lci5wYXJlbnRfaGFzaCAhPSBibG9ja19oZWFkZXIucGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKlGgHXZRoP1gBCQAAZGVmIHZhbGlkYXRlX29tbWVycygKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLCBibG9ja19oZWFkZXI6IEhlYWRlciwgY2hhaW46IEJsb2NrQ2hhaW4KKSAtPiBOb25lOgogICAgYmxvY2tfaGFzaCA9IHJscC5ybHBfaGFzaChibG9ja19oZWFkZXIpCgogICAgZW5zdXJlKHJscC5ybHBfaGFzaChvbW1lcnMpID09IGJsb2NrX2hlYWRlci5vbW1lcnNfaGFzaCwgSW52YWxpZEJsb2NrKQoKICAgIGlmIGxlbihvbW1lcnMpID09IDA6CiAgICAgICAgIyBOb3RoaW5nIHRvIHZhbGlkYXRlCiAgICAgICAgcmV0dXJuCgogICAgIyBDaGVjayB0aGF0IGVhY2ggb21tZXIgc2F0aXNmaWVzIHRoZSBjb25zdHJhaW50cyBvZiBhIGhlYWRlcgogICAgZm9yIG9tbWVyIGluIG9tbWVyczoKICAgICAgICBlbnN1cmUoMSA8PSBvbW1lci5udW1iZXIgPCBibG9ja19oZWFkZXIubnVtYmVyLCBJbnZhbGlkQmxvY2spCiAgICAgICAgb21tZXJfcGFyZW50X2hlYWRlciA9IGNoYWluLmJsb2Nrc1sKICAgICAgICAgICAgLShibG9ja19oZWFkZXIubnVtYmVyIC0gb21tZXIubnVtYmVyKSAtIDEKICAgICAgICBdLmhlYWRlcgogICAgICAgIHZhbGlkYXRlX2hlYWRlcihvbW1lciwgb21tZXJfcGFyZW50X2hlYWRlcikKCiAgICAjIENoZWNrIHRoYXQgdGhlcmUgY2FuIGJlIG9ubHkgYXQgbW9zdCAyIG9tbWVycyBmb3IgYSBibG9jay4KICAgIGVuc3VyZShsZW4ob21tZXJzKSA8PSAyLCBJbnZhbGlkQmxvY2spCgogICAgb21tZXJzX2hhc2hlcyA9IFtybHAucmxwX2hhc2gob21tZXIpIGZvciBvbW1lciBpbiBvbW1lcnNdCiAgICAjIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZXMgaW4gdGhlIG9tbWVycyBvZiBjdXJyZW50IGJsb2NrCiAgICBlbnN1cmUobGVuKG9tbWVyc19oYXNoZXMpID09IGxlbihzZXQob21tZXJzX2hhc2hlcykpLCBJbnZhbGlkQmxvY2spCgogICAgcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3MgPSBjaGFpbi5ibG9ja3NbLShNQVhfT01NRVJfREVQVEggKyAxKSA6XQogICAgcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMgPSB7CiAgICAgICAgcmxwLnJscF9oYXNoKGJsb2NrLmhlYWRlcikgZm9yIGJsb2NrIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzCiAgICB9CiAgICByZWNlbnRfb21tZXJzX2hhc2hlczogU2V0W0hhc2gzMl0gPSBzZXQoKQogICAgZm9yIGJsb2NrIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzOgogICAgICAgIHJlY2VudF9vbW1lcnNfaGFzaGVzID0gcmVjZW50X29tbWVyc19oYXNoZXMudW5pb24oCiAgICAgICAgICAgIHtybHAucmxwX2hhc2gob21tZXIpIGZvciBvbW1lciBpbiBibG9jay5vbW1lcnN9CiAgICAgICAgKQoKICAgIGZvciBvbW1lcl9pbmRleCwgb21tZXIgaW4gZW51bWVyYXRlKG9tbWVycyk6CiAgICAgICAgb21tZXJfaGFzaCA9IG9tbWVyc19oYXNoZXNbb21tZXJfaW5kZXhdCiAgICAgICAgIyBUaGUgY3VycmVudCBibG9jayBzaG91bGRuJ3QgYmUgdGhlIG9tbWVyCiAgICAgICAgZW5zdXJlKG9tbWVyX2hhc2ggIT0gYmxvY2tfaGFzaCwgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhlIHJlY2VudCBjYW5vbmljYWwgYmxvY2tzCiAgICAgICAgZW5zdXJlKG9tbWVyX2hhc2ggbm90IGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgc2hvdWxkbid0IGJlIG9uZSBvZiB0aGUgdW5jbGVzIG1lbnRpb25lZCBpbiB0aGUgcmVjZW50CiAgICAgICAgIyBjYW5vbmljYWwgYmxvY2tzCiAgICAgICAgZW5zdXJlKG9tbWVyX2hhc2ggbm90IGluIHJlY2VudF9vbW1lcnNfaGFzaGVzLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgYWdlIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBibG9jay4gRm9yIGV4YW1wbGUsIGFuIGFnZSBvZgogICAgICAgICMgMSBpbmRpY2F0ZXMgdGhhdCB0aGUgb21tZXIgaXMgYSBzaWJsaW5nIG9mIHByZXZpb3VzIGJsb2NrLgogICAgICAgIG9tbWVyX2FnZSA9IGJsb2NrX2hlYWRlci5udW1iZXIgLSBvbW1lci5udW1iZXIKICAgICAgICBlbnN1cmUoMSA8PSBvbW1lcl9hZ2UgPD0gTUFYX09NTUVSX0RFUFRILCBJbnZhbGlkQmxvY2spCgogICAgICAgIGVuc3VyZSgKICAgICAgICAgICAgb21tZXIucGFyZW50X2hhc2ggaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMsIEludmFsaWRCbG9jawogICAgICAgICkKICAgICAgICBlbnN1cmUob21tZXIucGFyZW50X2hhc2ggIT0gYmxvY2tfaGVhZGVyLnBhcmVudF9oYXNoLCBJbnZhbGlkQmxvY2spCpSFlIGUfZQoaAVoBmggahYjAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFYvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vc3BlYy5weZSMCXhtbDpzcGFjZZRq+AQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGpWDwAASwFzjAdsaW5lbm9zlIl1aBxqHA8AAGgdaB5oH02VAWggap4hAAB1YmVoDn2UKGgQXZRqUAMAAGFoE12UaBVdlIwPdmFsaWRhdGVfb21tZXJzlGFoF12UaBldlHVoHGgzaB1oHmgfTX0BaCBqpw4AAGghaAN1Ymg0KYGUfZQoaAVoBmgHXZQoaDkpgZR9lChoBYwLcGF5X3Jld2FyZHOUaAddlGg/jAtwYXlfcmV3YXJkc5SFlIGUfZQoaAVoBmggajcjAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9NmgFoIGo0IwAA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bG9jayByZXdhcmQsIGBgQkxPQ0tfUkVXQVJEYGAsIHBsdXMgYSB2YXJpYWJsZSBhd2FyZCBiYXNlZCBvZmYgb2YgdGhlCm51bWJlciBvZiBvbW1lciBibG9ja3MgdGhhdCB3ZXJlIG1pbmVkIGFyb3VuZCB0aGUgc2FtZSB0aW1lLCBhbmQgaW5jbHVkZWQKaW4gdGhlIGNhbm9uaWNhbCBibG9jaydzIGhlYWRlci4gQW4gb21tZXIgYmxvY2sgaXMgYSBibG9jayB0aGF0IHdhc24ndAphZGRlZCB0byB0aGUgY2Fub25pY2FsIGJsb2NrY2hhaW4gYmVjYXVzZSBpdCB3YXNuJ3QgdmFsaWRhdGVkIGFzIGZhc3QgYXMKdGhlIGFjY2VwdGVkIGJsb2NrIGJ1dCB3YXMgbWluZWQgYXQgdGhlIHNhbWUgdGltZS4gQWx0aG91Z2ggbm90IGFsbCBibG9ja3MKdGhhdCBhcmUgbWluZWQgYXJlIGFkZGVkIHRvIHRoZSBjYW5vbmljYWwgY2hhaW4sIG1pbmVycyBhcmUgc3RpbGwgcGFpZCBhCnJld2FyZCBmb3IgdGhlaXIgZWZmb3J0cy4gVGhpcyByZXdhcmQgaXMgY2FsbGVkIGFuIG9tbWVyIHJld2FyZCBhbmQgaXMKY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgb21tZXIgYmxvY2sgdGhhdCB0aGV5Cm1pbmVkLpRoB12UKGg/jFJUaGUgbWluZXIgb2YgdGhlIGNhbm9uaWNhbCBibG9jayBpcyByZXdhcmRlZCB3aXRoIHRoZSBwcmVkZXRlcm1pbmVkCmJsb2NrIHJld2FyZCwglIWUgZR9lChoBWgGaCBq7SMAAGghaANoHWhEaB9LAHViam4FAAApgZR9lChoBYwQYGBCTE9DS19SRVdBUkRgYJRoB12UaD+MDEJMT0NLX1JFV0FSRJSFlIGUfZQoaAVoBmggavUjAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcam0FAABoHU5oH05oIGrtIwAAdWJoP1gzAgAALCBwbHVzIGEgdmFyaWFibGUgYXdhcmQgYmFzZWQgb2ZmIG9mIHRoZQpudW1iZXIg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lHVoHGpiFAAAaB1OaB9OaCBq3CMAAHViZWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqBg8AAGgdaB5oH05oIGpQIwAAdWJlaA59lChoEF2UaBNdlChq1SMAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGrVIwAAjAdvYmp0eXBllGroJAAAjAhkZXNjdHlwZZRq6CQAAIwHbm9pbmRleJSJdWgcatgOAABoHU5oH05oIGo0IwAAdWJqHQ8AACmBlH2UKGgFWP4BAABkZWYgcGF5X3Jld2FyZHMoCiAgICBzdGF0ZTogU3RhdGUsCiAgICBibG9ja19udW1iZXI6IFVpbnQsCiAgICBjb2luYmFzZTogQWRkcmVzcywKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAopIC0+IE5vbmU6CiAgICBtaW5lcl9yZXdhcmQgPSBCTE9DS19SRVdBUkQgKyAobGVuKG9tbWVycykgKiAoQkxPQ0tfUkVXQVJEIC8vIDMyKSkKICAgIGNyZWF0ZV9ldGhlcihzdGF0ZSwgY29pbmJhc2UsIG1pbmVyX3Jld2FyZCkKCiAgICBmb3Igb21tZXIgaW4gb21tZXJzOgogICAgICAgICMgT21tZXIgYWdlIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBVMjU2KGJsb2NrX251bWJlciAtIG9tbWVyLm51bWJlcikKICAgICAgICBvbW1lcl9taW5lcl9yZXdhcmQgPSAoKDggLSBvbW1lcl9hZ2UpICogQkxPQ0tfUkVXQVJEKSAvLyA4CiAgICAgICAgY3JlYXRlX2V0aGVyKHN0YXRlLCBvbW1lci5jb2luYmFzZSwgb21tZXJfbWluZXJfcmV3YXJkKQqUaAddlGg/WP4BAABkZWYgcGF5X3Jld2FyZHMoCiAgICBzdGF0ZTogU3RhdGUsCiAgICBibG9ja19udW1iZXI6IFVpbnQsCiAgICBjb2luYmFzZTogQWRkcmVzcywKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAopIC0+IE5vbmU6CiAgICBtaW5lcl9yZXdhcmQgPSBCTE9DS19SRVdBUkQgKyAobGVu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AIwFY2xhc3OUaAaMCGZ1bGxuYW1llGozJQAAdWgcat0OAABoHWgeaB9NvQFoIGoqJQAAdWJqBw8AACmBlH2UKGgFaAZoB12UKGhpKYGUfZQoaAWMN0V4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBlbnZpcm9ubWVudC6UaAddlGg/jDdFeGVjdXRlIGEgdHJhbnNhY3Rpb24gYWdhaW5zdCB0aGUgcHJvdmlkZWQgZW52aXJvbm1lbnQulIWUgZR9lChoBWgGaCBqiSUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH03AAWggaoYlAAB1YmhpKYGUfZQoaAVYWwEAAFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBhY3Rpb25zIG5lZWRlZCB0byBleGVjdXRlIGEgdHJhbnNhY3Rpb24uCkl0IGRlY3JlbWVudHMgdGhlIHNlbmRlcidzIGFjY291bnQgYWZ0ZXIgY2FsY3VsYXRpbmcgdGhlIGdhcyBmZWUgYW5kCnJlZnVuZHMgdGhlbSB0aGUgcHJvcGVyIGFtb3VudCBhZnRlciBleGVjdXRpb24uIENhbGxpbmcgY29udHJhY3RzLApkZXBsb3lpbmcgY29kZSwgYW5kIGluY3JlbWVudGluZyBub25jZXMgYXJlIGFsbCBleGFtcGxlcyBvZiBhY3Rpb25zIHRoYXQKaGFwcGVuIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIG9yIGZyb20gYSBjYWxsIG1hZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24ulGgHXZRoP1hdAQAAVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIGFjdGlvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgYSB0cmFuc2FjdGlvbi4KSXQgZGVjcmVtZW50cyB0aGUgc2VuZGVy4oCZcyBhY2NvdW50IGFmdGVyIGNhbGN1bGF0aW5nIHRoZSBnYXMgZmVlIGFuZApyZWZ1bmRzIHRoZW0gdGhlIHByb3BlciBhbW91bnQgYWZ0ZXIgZXhlY3V0aW9uLiBDYWxsaW5nIGNvbnRyYWN0cywKZGVwbG95aW5nIGNvZGUsIGFuZCBpbmNyZW1lbnRpbmcg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IGoOJQAAaCFoA3Viah0PAAApgZR9lChoBVgECAAAZGVmIHByb2Nlc3NfdHJhbnNhY3Rpb24oCiAgICBlbnY6IHZtLkVudmlyb25tZW50LCB0eDogVHJhbnNhY3Rpb24KKSAtPiBUdXBsZVtVMjU2LCBUdXBsZVtMb2csIC4uLl1dOgogICAgZW5zdXJlKHZhbGlkYXRlX3RyYW5zYWN0aW9uKHR4KSwgSW52YWxpZEJsb2NrKQoKICAgIHNlbmRlciA9IGVudi5vcmlnaW4KICAgIHNlbmRlcl9hY2NvdW50ID0gZ2V0X2FjY291bnQoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBnYXNfZmVlID0gdHguZ2FzICogdHguZ2FzX3ByaWNlCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQubm9uY2UgPT0gdHgubm9uY2UsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5iYWxhbmNlID49IGdhc19mZWUgKyB0eC52YWx1ZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmNvZGUgPT0gYnl0ZWFycmF5KCksIEludmFsaWRCbG9jaykKCiAgICBnYXMgPSB0eC5nYXMgLSBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpCiAgICBpbmNyZW1lbnRfbm9uY2UoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlID0gc2VuZGVyX2FjY291bnQuYmFsYW5jZSAtIGdhc19mZWUKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUpCgogICAgbWVzc2FnZSA9IHByZXBhcmVfbWVzc2FnZSgKICAgICAgICBzZW5kZXIsCiAgICAgICAgdHgudG8sCiAgICAgICAgdHgudmFsdWUsCiAgICAgICAgdHguZGF0YSwKICAgICAgICBnYXMsCiAgICAgICAgZW52LAogICAgKQoKICAgIG91dHB1dCA9IHByb2Nlc3NfbWVzc2FnZV9jYWxsKG1lc3NhZ2UsIGVudikKCiAgICBnYXNfdXNlZCA9IHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdAogICAgZ2FzX3JlZnVuZCA9IG1pbihnYXNfdXNlZCAvLyAyLCBvdXRwdXQucmVmdW5kX2NvdW50ZXIpCiAgICBnYXNfcmVmdW5kX2Ftb3VudCA9IChvdXRwdXQuZ2FzX2xlZnQgKyBnYXNfcmVmdW5kKSAqIHR4Lmdhc19wcmljZQogICAgdHJhbnNhY3Rpb25fZmVlID0gKHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdCAtIGdhc19yZWZ1bmQpICogdHguZ2FzX3ByaWNlCiAgICB0b3RhbF9nYXNfdXNlZCA9IGdhc191c2VkIC0gZ2FzX3JlZnVuZAoKICAgICMgcmVmdW5kIGdhcwogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKS5iYWxhbmNlICsgZ2FzX3JlZnVuZF9hbW91bnQKICAgICkKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCkKCiAgICAjIHRyYW5zZmVyIG1pbmVyIGZlZXMKICAgIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkuYmFsYW5jZSArIHRyYW5zYWN0aW9uX2ZlZQogICAgKQogICAgaWYgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlICE9IDA6CiAgICAgICAgc2V0X2FjY291bnRfYmFsYW5jZSgKICAgICAgICAgICAgZW52LnN0YXRlLCBlbnYuY29pbmJhc2UsIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZQogICAgICAgICkKICAgIGVsaWYgYWNjb3VudF9leGlzdHNfYW5kX2lzX2VtcHR5KGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlKToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LmFjY291bnRzX3RvX2RlbGV0ZToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIGZvciBhZGRyZXNzIGluIG91dHB1dC50b3VjaGVkX2FjY291bnRzOgogICAgICAgIGlmIGFjY291bnRfZXhpc3RzX2FuZF9pc19lbXB0eShlbnYuc3RhdGUsIGFkZHJlc3MpOgogICAgICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIHJldHVybiB0b3RhbF9nYXNfdXNlZCwgb3V0cHV0LmxvZ3MKlGgHXZQoaD+MXmRlZiBwcm9jZXNzX3RyYW5zYWN0aW9uKAogICAgZW52OiB2bS5FbnZpcm9ubWVudCwgdHg6IFRyYW5zYWN0aW9uCikgLT4gVHVwbGVbVTI1NiwgVHVwbGVbTG9nLCCUhZSBlH2UKGgFaAZoIGroJgAAaCFoA2gdaERoH0sAdWJqJw8AACmBlH2UKGgFaAZoB12UaD+MBi4uLl1dOpSFlIGUfZQoaAVoBmggavAmAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UjA9jaGFuZ2UtcmVwbGFjZWSUYWgVXZRoF12UaBldlHVoHGomDwAAaCBq6CYAAGghaANoHWhEaB9LAHViaicPAAApgZR9lChoBWgGaAddlGg/jAwuLi5dLCBib29sXTqUhZSBlH2UKGgFaAZoIGr+JgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlIwSY2hhbmdlLXJlcGxhY2VtZW50lGFoFV2UaBddlGgZXZR1aBxqJg8AAGggaugmAABoIWgDaB1oRGgfSwB1Ymg/WJQHAAAKICAgIGVuc3VyZSh2YWxpZGF0ZV90cmFuc2FjdGlvbih0eCksIEludmFsaWRCbG9jaykKCiAgICBzZW5kZXIgPSBlbnYub3JpZ2luCiAgICBzZW5kZXJfYWNjb3VudCA9IGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKQogICAgZ2FzX2ZlZSA9IHR4LmdhcyAqIHR4Lmdhc19wcmljZQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50Lm5vbmNlID09IHR4Lm5vbmNlLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQuYmFsYW5jZSA+PSBnYXNfZmVlICsgdHgudmFsdWUsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5jb2RlID09IGJ5dGVhcnJheSgpLCBJbnZhbGlkQmxvY2spCgogICAgZ2FzID0gdHguZ2FzIC0gY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4KQogICAgaW5jcmVtZW50X25vbmNlKGVudi5zdGF0ZSwgc2VuZGVyKQogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfZ2FzX2ZlZSA9IHNlbmRlcl9hY2NvdW50LmJhbGFuY2UgLSBnYXNfZmVlCiAgICBzZXRfYWNjb3VudF9iYWxhbmNlKGVudi5zdGF0ZSwgc2VuZGVyLCBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlKQoKICAgIG1lc3NhZ2UgPSBwcmVwYXJlX21lc3NhZ2UoCiAgICAgICAgc2VuZGVyLAogICAgICAgIHR4LnRvLAogICAgICAgIHR4LnZhbHVlLAogICAgICAgIHR4LmRhdGEsCiAgICAgICAgZ2FzLAogICAgICAgIGVudiwKICAgICkKCiAgICBvdXRwdXQgPSBwcm9jZXNzX21lc3NhZ2VfY2FsbChtZXNzYWdlLCBlbnYpCgogICAgZ2FzX3VzZWQgPSB0eC5nYXMgLSBvdXRwdXQuZ2FzX2xlZnQKICAgIGdhc19yZWZ1bmQgPSBtaW4oZ2FzX3VzZWQgLy8gMiwgb3V0cHV0LnJlZnVuZF9jb3VudGVyKQogICAgZ2FzX3JlZnVuZF9hbW91bnQgPSAob3V0cHV0Lmdhc19sZWZ0ICsgZ2FzX3JlZnVuZCkgKiB0eC5nYXNfcHJpY2UKICAgIHRyYW5zYWN0aW9uX2ZlZSA9ICh0eC5nYXMgLSBvdXRwdXQuZ2FzX2xlZnQgLSBnYXNfcmVmdW5kKSAqIHR4Lmdhc19wcmljZQogICAgdG90YWxfZ2FzX3VzZWQgPSBnYXNfdXNlZCAtIGdhc19yZWZ1bmQKCiAgICAjIHJlZnVuZCBnYXMKICAgIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIHNlbmRlcikuYmFsYW5jZSArIGdhc19yZWZ1bmRfYW1vdW50CiAgICApCiAgICBzZXRfYWNjb3VudF9iYWxhbmNlKGVudi5zdGF0ZSwgc2VuZGVyLCBzZW5kZXJfYmFsYW5jZV9hZnRlcl9yZWZ1bmQpCgogICAgIyB0cmFuc2ZlciBtaW5lciBmZWVzCiAgICBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUgPSAoCiAgICAgICAgZ2V0X2FjY291bnQoZW52LnN0YXRlLCBlbnYuY29pbmJhc2UpLmJhbGFuY2UgKyB0cmFuc2FjdGlvbl9mZWUKICAgICkKICAgIGlmIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSAhPSAwOgogICAgICAgIHNldF9hY2NvdW50X2JhbGFuY2UoCiAgICAgICAgICAgIGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlLCBjb2luYmFzZV9iYWxhbmNlX2FmdGVyX21pbmluZ19mZWUKICAgICAgICApCiAgICBlbGlmIGFjY291bnRfZXhpc3RzX2FuZF9pc19lbXB0eShlbnYuc3RhdGUsIGVudi5jb2luYmFzZSk6CiAgICAgICAgZGVzdHJveV9hY2NvdW50KGVudi5zdGF0ZSwgZW52LmNvaW5iYXNlKQoKICAgIGZvciBhZGRyZXNzIGluIG91dHB1dC5hY2NvdW50c190b19kZWxldGU6CiAgICAgICAgZGVzdHJveV9hY2NvdW50KGVudi5zdGF0ZSwgYWRkcmVzcykKCiAgICBmb3IgYWRkcmVzcyBpbiBvdXRwdXQudG91Y2hlZF9hY2NvdW50czoKICAgICAgICBpZiBhY2NvdW50X2V4aXN0c19hbmRfaXNfZW1wdHkoZW52LnN0YXRlLCBhZGRyZXNzKToKICAgICAgICAgICAgZGVzdHJveV9hY2NvdW50KGVudi5zdGF0ZSwgYWRkcmVzcykKCiAgICByZXR1cm4gdG90YWxfZ2FzX3VzZWQsIJSFlIGUfZQoaAVoBmggaugmAABoIWgDaB1oRGgfSwB1YmonDwAAKYGUfZQoaAVoBmgHXZRo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c2VkIHRvIHBheSBmb3IgdGhlIGludHJpbnNpYyBjb3N0IG9mCm9wZXJhdGlvbnMsIHRoZXJlZm9yZSBpZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgZ2FzIHRoZW4gaXQgd291bGQgbm90CmJlIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhbmQgaXQgd2lsbCBiZSBkZWNsYXJlZCBpbnZhbGlkLpRoB12UaD+MzlRoZSBnYXMgaW4gYSB0cmFuc2FjdGlvbiBnZXRzIHVzZWQgdG8gcGF5IGZvciB0aGUgaW50cmluc2ljIGNvc3Qgb2YKb3BlcmF0aW9ucywgdGhlcmVmb3JlIGlmIHRoZXJlIGlzIGluc3VmZmljaWVudCBnYXMgdGhlbiBpdCB3b3VsZCBub3QKYmUgcG9zc2libGUgdG8gZXhlY3V0ZSBhIHRyYW5zYWN0aW9uIGFuZCBpdCB3aWxsIGJlIGRlY2xhcmVkIGludmFsaWQulIWUgZR9lChoBWgGaCBqtycAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH03hAWggaqYnAAB1YmhpKYGUfZQoaAVYoQEAAEFkZGl0aW9uYWxseSwgdGhlIG5vbmNlIG9mIGEgdHJhbnNhY3Rpb24gbXVzdCBub3QgZXF1YWwgb3IgZXhjZWVkIHRoZQpsaW1pdCBkZWZpbmVkIGluIGBFSVAtMjY4MSA8aHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0yNjgxPmBfLgpJbiBwcmFjdGljZSwgZGVmaW5pbmcgdGhlIGxpbWl0IGFzIGBgMioqNjQtMWBgIGhhcyBubyBpbXBhY3QgYmVjYXVzZQpzZW5kaW5nIGBgMioqNjQtMWBgIHRyYW5zYWN0aW9ucyBpcyBpbXByb2JhYmxlLiBJdCdzIG5vdCBzdHJpY3RseQppbXBvc3NpYmxlIHRob3VnaCwgYGAyKio2NC0xYGAgdHJhbnNhY3Rpb25zIGlzIHRoZSBlbnRpcmUgY2FwYWNpdHkgb2YgdGhlCkV0aGVyZXVtIGJsb2NrY2hhaW4gYXQgMjAyMiBnYXMgbGltaXRzIGZvciBhIGxpdHRsZSBvdmVyIDIyIHll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ZSB3aXJlIGFuZCB0aGF0IGV0aGVyIGlzCmFjY291bnRlZCBmb3IgaW4gdGhlIGludHJpbnNpYyBjb3N0IGNhbGN1bGF0ZWQgaW4gdGhpcyBmdW5jdGlvbi4gVGhpcwppbnRyaW5zaWMgY29zdCBtdXN0IGJlIGNhbGN1bGF0ZWQgYW5kIHBhaWQgZm9yIGJlZm9yZSBleGVjdXRpb24gaW4gb3JkZXIKZm9yIGFsbCBvcGVyYXRpb25zIHRvIGJlIGltcGxlbWVudGVkLpRoB12UaD9YEQIAAFRoZSBpbnRyaW5zaWMgY29zdCBvZiB0aGUgdHJhbnNhY3Rpb24gaXMgY2hhcmdlZCBiZWZvcmUgZXhlY3V0aW9uIGhhcwpiZWd1bi4gRnVuY3Rpb25zL29wZXJhdGlvbnMgaW4gdGhlIEVWTSBjb3N0IG1vbmV5IHRvIGV4ZWN1dGUgc28gdGhpcwppbnRyaW5zaWMgY29zdCBpcyBmb3IgdGhlIG9wZXJhdGlvbnMgdGhhdCBuZWVkIHRvIGJlIHBhaWQgZm9yIGFzIHBhcnQgb2YKdGhlIHRyYW5zYWN0aW9uLiBEYXRhIHRyYW5zZmVyLCBmb3IgZXhhbXBsZSwgaXMgcGFydCBvZiB0aGlzIGludHJpbnNpYwpjb3N0LiBJdCBjb3N0cyBldGhlciB0byBzZW5kIGRhdGEgb3ZlciB0aGUgd2lyZSBhbmQgdGhhdCBldGhlciBpcwphY2NvdW50ZWQgZm9yIGluIHRoZSBpbnRyaW5zaWMgY29zdCBjYWxjdWxhdGVkIGluIHRoaXMgZnVuY3Rpb24uIFRoaXMKaW50cmluc2ljIGNvc3QgbXVzdCBiZSBjYWxjdWxhdGVkIGFuZCBwYWlkIGZvciBiZWZvcmUgZXhlY3V0aW9uIGluIG9yZGVyCmZvciBhbGwgb3BlcmF0aW9ucyB0byBiZSBpbXBsZW1lbnRlZC6UhZSBlH2UKGgFaAZoIGqIKQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTQECaCBqdykAAHViamMUAAApgZR9lChoBWgGaAddlChqaBQAACmBlH2UKGgFaAZoB12UKGptFAAAKYGUfZQoaAWMClBhcmFtZXRlcnOUaAddlGg/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lIwGZG9tYWlulGpwKQAAjAdvYmp0eXBllGpbKgAAjAhkZXNjdHlwZZRqWyoAAIwHbm9pbmRleJSJdWgcatgOAABoHU5oH05oIGoXKQAAdWJqHQ8AACmBlH2UKGgFWIcBAABkZWYgY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0KHR4OiBUcmFuc2FjdGlvbikgLT4gVWludDoKICAgIGRhdGFfY29zdCA9IDAKCiAgICBmb3IgYnl0ZSBpbiB0eC5kYXRhOgogICAgICAgIGlmIGJ5dGUgPT0gMDoKICAgICAgICAgICAgZGF0YV9jb3N0ICs9IFRYX0RBVEFfQ09TVF9QRVJfWkVSTwogICAgICAgIGVsc2U6CiAgICAgICAgICAgIGRhdGFfY29zdCArPSBUWF9EQVRBX0NPU1RfUEVSX05PTl9aRVJPCgogICAgaWYgdHgudG8gPT0gQnl0ZXMwKGIiIik6CiAgICAgICAgY3JlYXRlX2Nvc3QgPSBUWF9DUkVBVEVfQ09TVAogICAgZWxzZToKICAgICAgICBjcmVhdGVfY29zdCA9IDAKCiAgICByZXR1cm4gVWludChUWF9CQVNFX0NPU1QgKyBkYXRhX2Nvc3QgKyBjcmVhdGVfY29zdCkKlGgHXZRoP1iHAQAAZGVmIGNhbGN1bGF0ZV9pbnRyaW5zaWNfY29zdCh0eDogVHJhbnNhY3Rpb24pIC0+IFVpbnQ6CiAgICBkYXRhX2Nvc3QgPSAwCgogICAgZm9yIGJ5dGUgaW4gdHguZGF0YToKICAgICAgICBpZiBieXRlID09IDA6CiAgICAgICAgICAgIGRhdGFfY29zdCArPSBUWF9EQVRBX0NPU1RfUEVSX1pFUk8KICAgICAgICBlbHNlOgogICAgICAgICAgICBkYXRhX2Nvc3QgKz0gVFhfREFUQV9DT1NUX1BFUl9OT05fWkVSTwoKICAgIGlmIHR4LnRvID09IEJ5dGVzMChiIiIpOgogICAgICAgIGNyZWF0ZV9jb3N0ID0gVFhfQ1JFQVRFX0NPU1QKICAgIGVsc2U6CiAgICAgICAgY3JlYXRlX2Nvc3QgPSAwCgogICAgcmV0dXJuIFVpbnQoVFhfQkFTRV9DT1NUICsgZGF0YV9jb3N0ICsgY3JlYXRlX2Nvc3QpCpSFlIGUfZQo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lChoEF2UaBNdlChqzCwAAIwIZnVuY3Rpb26UZWgVXZRoF12UaBldlIwGZG9tYWlulGrMLAAAjAdvYmp0eXBllGqpLQAAjAhkZXNjdHlwZZRqqS0AAIwHbm9pbmRleJSJdWgcatgOAABoHU5oH05oIGpzLAAAdWJqHQ8AACmBlH2UKGgFWCQBAABkZWYgc2lnbmluZ19oYXNoX3ByZTE1NSh0eDogVHJhbnNhY3Rpb24pIC0+IEhhc2gzMjoKICAgIHJldHVybiBrZWNjYWsyNTYoCiAgICAgICAgcmxwLmVuY29kZSgKICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgdHgubm9uY2UsCiAgICAgICAgICAgICAgICB0eC5nYXNfcHJpY2UsCiAgICAgICAgICAgICAgICB0eC5nYXMsCiAgICAgICAgICAgICAgICB0eC50bywKICAgICAgICAgICAgICAgIHR4LnZhbHVlLAogICAgICAgICAgICAgICAgdHguZGF0YSwKICAgICAgICAgICAgKQogICAgICAgICkKICAgICkKlGgHXZRoP1gkAQAAZGVmIHNpZ25pbmdfaGFzaF9wcmUxNTUodHg6IFRyYW5zYWN0aW9uKSAtPiBIYXNoMzI6CiAgICByZXR1cm4ga2VjY2FrMjU2KAogICAgICAgIHJscC5lbmNvZGUoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHguZ2FzX3ByaWNlLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpSFlIGUfZQoaAVoBmggarEtAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFYvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vc3BlYy5weZSMCXhtbDpzcGFj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CiAgICApCpRoB12UaD9YbAEAAGRlZiBzaWduaW5nX2hhc2hfMTU1KHR4OiBUcmFuc2FjdGlvbikgLT4gSGFzaDMyOgogICAgcmV0dXJuIGtlY2NhazI1NigKICAgICAgICBybHAuZW5jb2RlKAogICAgICAgICAgICAoCiAgICAgICAgICAgICAgICB0eC5ub25jZSwKICAgICAgICAgICAgICAgIHR4Lmdhc19wcmljZSwKICAgICAgICAgICAgICAgIHR4LmdhcywKICAgICAgICAgICAgICAgIHR4LnRvLAogICAgICAgICAgICAgICAgdHgudmFsdWUsCiAgICAgICAgICAgICAgICB0eC5kYXRhLAogICAgICAgICAgICAgICAgVWludCgxKSwKICAgICAgICAgICAgICAgIFVpbnQoMCksCiAgICAgICAgICAgICAgICBVaW50KDApLAogICAgICAgICAgICApCiAgICAgICAgKQogICAgKQqUhZSBlH2UKGgFaAZoIGoNLwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxWL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vc3B1cmlvdXNfZHJhZ29uL3NwZWMucHmUjAl4bWw6c3BhY2WUavgEAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRqVg8AAEsBc4wHbGluZW5vc5SJdWgcahwPAABoHWgeaB9NWAJoIGrPLQAAdWJlaA59lChoEF2Uaj4EAABhaBNdlGgVXZSMEHNpZ25pbmdfaGFzaF8xNTWUYWgXXZRoGV2UdWgcaDNoHWgeaB9NSAJoIGqnDgAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjBNjb21wdXRlX2hlYWRlcl9oYXNolGgHXZRoP4wTY29tcHV0ZV9oZWFkZXJfaGFzaJSFlIGUfZQoaAVoBmggai4vAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9NXQJoIGorLwAAdWJoJCmBlH2UKGgFaAZo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bQUAAGgdTmgfTmggaqovAAB1Ymg/WCMBAAAgaXMgYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIGEgMjU2IGJpdCBoYXNoIG9mIGFueSBpbnB1dC4KSXQgYWxzbyB0YWtlcyBpbiBhbnkgbnVtYmVyIG9mIGJ5dGVzIGFzIGFuIGlucHV0IGFuZCBwcm9kdWNlcyBhIHNpbmdsZQpoYXNoIGZvciB0aGVtLiBBIGhhc2ggaXMgYSBjb21wbGV0ZWx5IHVuaXF1ZSBvdXRwdXQgZm9yIGEgc2luZ2xlIGlucHV0LgpTbyBhbiBpbnB1dCBjb3JyZXNwb25kcyB0byBvbmUgdW5pcXVlIGhhc2ggdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeQp0aGUgaW5wdXQgZXhhY3RseS6UhZSBlH2UKGgFaAZoIGqqLwAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTWgCaCBqiy8AAHViaGkpgZR9lChoBVgoAgAAUHJpb3IgdG8gdXNpbmcgdGhlIGBga2VjY2FrMjU2YGAgaGFzaCBmdW5jdGlvbiwgdGhlIGhlYWRlciBtdXN0IGJlCmVuY29kZWQgdXNpbmcgdGhlIFJlY3Vyc2l2ZS1MZW5ndGggUHJlZml4LiBTZWUgOnJlZjpgcmxwYC4KUkxQIGVuY29kaW5nIHRoZSBoZWFkZXIgY29udmVydHMgaXQgaW50byBhIHNwYWNlLWVmZmljaWVudCBmb3JtYXQgdGhhdAphbGxvd3MgZm9yIGVhc3kgdHJhbnNmZXIgb2YgZGF0YSBiZXR3ZWVuIG5vZGVzLiBUaGUgcHVycG9zZSBvZiBSTFAgaXMgdG8KZW5jb2RlIGFyYml0cmFyaWx5IG5lc3RlZCBhcnJheXMgb2YgYmluYXJ5IGRhdGEsIGFuZCBSTFAgaXMgdGhlIHByaW1hcnkKZW5jb2RpbmcgbWV0aG9kIHVzZWQgdG8gc2VyaWFsaXplIG9iamVjdHMgaW4gRXRoZXJldW0ncyBleGVjdXRpb24gbGF5ZXIuClRoZSBvbmx5IHB1cnBvc2Ugb2YgUkxQIGlzIHRvIGVuY29kZSBzdHJ1Y3R1cmU7IGVuY29kaW5nIHNwZWNpZmljIGRhdGEK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Z2FzX2xpbWl0OiBVaW50LCBwYXJlbnRfZ2FzX2xpbWl0OiBVaW50KSAtPiBib29sOgogICAgbWF4X2FkanVzdG1lbnRfZGVsdGEgPSBwYXJlbnRfZ2FzX2xpbWl0IC8vIEdBU19MSU1JVF9BREpVU1RNRU5UX0ZBQ1RPUgogICAgaWYgZ2FzX2xpbWl0ID49IHBhcmVudF9nYXNfbGltaXQgKyBtYXhfYWRqdXN0bWVudF9kZWx0YToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGdhc19saW1pdCA8PSBwYXJlbnRfZ2FzX2xpbWl0IC0gbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPCBHQVNfTElNSVRfTUlOSU1VTToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICByZXR1cm4gVHJ1ZQqUaAddlGg/WIEBAABkZWYgY2hlY2tfZ2FzX2xpbWl0KGdhc19saW1pdDogVWludCwgcGFyZW50X2dhc19saW1pdDogVWludCkgLT4gYm9vbDoKICAgIG1heF9hZGp1c3RtZW50X2RlbHRhID0gcGFyZW50X2dhc19saW1pdCAvLyBHQVNfTElNSVRfQURKVVNUTUVOVF9GQUNUT1IKICAgIGlmIGdhc19saW1pdCA+PSBwYXJlbnRfZ2FzX2xpbWl0ICsgbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPD0gcGFyZW50X2dhc19saW1pdCAtIG1heF9hZGp1c3RtZW50X2RlbHRhOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgZ2FzX2xpbWl0IDwgR0FTX0xJTUlUX01JTklNVU06CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgcmV0dXJuIFRydWUKlIWUgZR9lChoBWgGaCBq+jIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMVi9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL3NwdXJp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Y2FsY3VsYXRlZCB1c2luZyB0aGUgcGFyZW50IGJsb2NrJ3MgZGlmZmljdWx0eSwKYGBwYXJlbnRfZGlmZmljdWx0eWBgLCBhbmQgdGhlIHRpbWVzdGFtcCBiZXR3ZWVuIGJsb2Nrcy4gVGhpcyBvZmZzZXQgaXMKdGhlbiBhZGRlZCB0byB0aGUgcGFyZW50IGRpZmZpY3VsdHkgYW5kIGlzIHN0b3JlZCBhcyB0aGUgYGBkaWZmaWN1bHR5YGAKdmFyaWFibGUuIElmIHRoZSB0aW1lIGJldHdlZW4gdGhlIGJsb2NrIGFuZCBpdHMgcGFyZW50IGlzIHRvbyBzaG9ydCwgdGhlCm9mZnNldCB3aWxsIHJlc3VsdCBpbiBhIHBvc2l0aXZlIG51bWJlciB0aHVzIG1ha2luZyB0aGUgc3VtIG9mCmBgcGFyZW50X2RpZmZpY3VsdHlgYCBhbmQgYGBvZmZzZXRgYCB0byBiZSBhIGdyZWF0ZXIgdmFsdWUgaW4gb3JkZXIgdG8KYXZvaWQgbWFzcyBmb3JraW5nLiBCdXQsIGlmIHRoZSB0aW1lIGlzIGxvbmcgZW5vdWdoLCB0aGVuIHRoZSBvZmZzZXQKcmVzdWx0cyBpbiBhIG5lZ2F0aXZlIHZhbHVlIG1ha2luZyB0aGUgYmxvY2sgbGVzcyBkaWZmaWN1bHQgdGhhbgppdHMgcGFyZW50LpRoB12UKGg/jFVUaGUgZGlmZmljdWx0eSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB0aW1lIHRoZSBibG9jayB3YXMgY3JlYXRlZCBhZnRlciBpdHMKcGFyZW50LiBUaGUglIWUgZR9lChoBWgGaCBq6jMAAGghaANoHWhEaB9LAHViam4FAAApgZR9lChoBYwKYGBvZmZzZXRgYJRoB12UaD+MBm9mZnNldJSFlIGUfZQoaAVoBmggavIzAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcam0FAABoHU5oH05oIGrqMwAAdWJoP4w2IGlzIGNhbGN1bGF0ZWQgdXNpbmcgdGhlIHBhcmVudCBibG9ja+KAmXMgZGlmZmljdWx0eSwKlIWUgZR9lChoBWgGaCBq6jMAAGghaANoHWhEaB9LAHViam4FAAApgZR9lChoBYwVYGBwYXJlbnRfZGlmZmljdWx0eWBglGgHXZRoP4wRcGFyZW50X2RpZmZpY3VsdHmUhZSBlH2UKGgFaAZoIGoENAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGptBQAAaB1OaB9OaCBq6jMAAHViaD+MbCwgYW5kIHRoZSB0aW1lc3RhbXAgYmV0d2VlbiBibG9ja3MuIFRoaXMgb2Zmc2V0IGlzCnRoZW4gYWRkZWQgdG8gdGhlIHBhcmVudCBkaWZmaWN1bHR5IGFuZCBpcyBzdG9yZWQgYXMgdGhlIJSFlIGUfZQoaAVoBmggauozAABoIWgDaB1oRGgfSwB1YmpuBQAAKYGUfZQoaAWMDmBgZGlmZmljdWx0eWBglGgHXZRoP4wKZGlmZmljdWx0eZSFlIGUfZQoaAVoBmggahY0AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcam0FAABoHU5oH05oIGrqMwAAdWJoP4yJCnZhcmlhYmxlLiBJZiB0aGUgdGltZSBiZXR3ZWVuIHRoZSBibG9jayBhbmQgaXRzIHBhcmVudCBpcyB0b28gc2hvcnQsIHRoZQpvZmZzZXQgd2lsbCByZXN1bHQgaW4gYSBwb3NpdGl2ZSBudW1iZXIgdGh1cyBtYWtpbmcgdGhlIHN1bSBvZgqUhZSBlH2UKGgFaAZoIGrqMwAAaCFoA2gdaERoH0sAdWJqbgUAACmBlH2UKGgFjBVgYHBhcmVudF9kaWZmaWN1bHR5YGCUaAddlGg/jBFwYXJlbnRfZGlmZmljdWx0eZSFlIGUfZQoaAVoBmggaig0AABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcam0FAABoHU5oH05oIGrqMwAAdWJoP4wFIGFuZCCUhZSBlH2UKGgFaAZoIGrqMwAAaCFoA2gdaERoH0sAdWJqbgUAACmBlH2UKGgFjApgYG9mZnNldGBglGgHXZRoP4wGb2Zmc2V0lIWUgZR9lChoBWgGaCBqOjQAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxqbQUAAGgdTmgfTmggauozAAB1Ymg/jLQgdG8gYmUgYSBncmVhdGVyIHZhbHVlIGluIG9yZGVyIHRvCmF2b2lkIG1hc3MgZm9ya2luZy4gQnV0LCBpZiB0aGUgdGltZSBpcyBsb25nIGVub3VnaCwgdGhlbiB0aGUgb2Zmc2V0CnJlc3VsdHMgaW4gYSBuZWdhdGl2ZSB2YWx1ZSBtYWtpbmcgdGhlIGJsb2NrIGxlc3MgZGlmZmljdWx0IHRoYW4KaXRzIHBhcmVudC6UhZSBlH2UKGgFaAZoIGrqMwAAaCFoA2gdaERoH0sAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTa0CaCBq2TMAAGghaAN1YmhpKYGUfZQoaAVYMAEAAFRoZSBiYXNlIHN0YW5kYXJkIGZvciBhIGJsb2NrJ3MgZGlmZmljdWx0eSBpcyB0aGUgcHJlZGVmaW5lZCB2YWx1ZQpzZXQgZm9yIHRoZSBnZW5lc2lzIGJsb2NrIHNpbmNlIGl0IGhhcyBubyBwYXJlbnQuIFNvLCBhIGJsb2NrCmNhbid0IGJlIGxlc3MgZGlmZmljdWx0IHRoYW4gdGhlIGdlbmVzaXMgYmxvY2ssIHRoZXJlZm9yZSBlYWNoIGJsb2NrJ3MKZGlmZmljdWx0eSBpcyBzZXQgdG8gdGhlIG1heGltdW0gdmFsdWUgYmV0d2VlbiB0aGUgY2FsY3VsYXRlZApkaWZmaWN1bHR5IGFuZCB0aGUgYGBHRU5FU0lTX0RJRkZJQ1VMVFlgYC6UaAddlChoP1gfAQAAVGhlIGJhc2Ugc3RhbmRhcmQgZm9yIGEgYmxvY2vigJlzIGRpZmZpY3VsdHkgaXMgdGhlIHByZWRlZmluZWQgdmFsdWUKc2V0IGZvciB0aGUgZ2VuZXNpcyBibG9jayBzaW5jZSBpdCBoYXMgbm8gcGFyZW50LiBTbywgYSBibG9jawpjYW7igJl0IGJlIGxlc3MgZGlmZmljdWx0IHRoYW4gdGhlIGdlbmVzaXMgYmxvY2ssIHRoZXJlZm9yZSBlYWNoIGJsb2Nr4oCZcwpkaWZmaWN1bHR5IGlzIHNldCB0byB0aGUgbWF4aW11bSB2YWx1ZSBiZXR3ZWVuIHRoZSBjYWxjdWxhdGVkCmRpZmZpY3VsdHkgYW5kIHRoZSCUhZSBlH2UKGgFaAZoIGpSNAAAaCFoA2gd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Y3VsdHkgYm9tYiB3YXMgbm90IHByZXNlbnQgaW4gRXRoZXJldW0gYXQgdGhlCiAgICAjIHN0YXJ0IG9mIEZyb250aWVyLCBidXQgd2FzIGFkZGVkIHNob3J0bHkgYWZ0ZXIgbGF1bmNoLiBIb3dldmVyIHNpbmNlIHRoZQogICAgIyBib21iIGhhcyBubyBlZmZlY3QgcHJpb3IgdG8gYmxvY2sgMjAwMDAwIHdlIHByZXRlbmQgaXQgZXhpc3RlZCBmcm9tCiAgICAjIGdlbmVzaXMuCiAgICAjIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZXRoZXJldW0vZ28tZXRoZXJldW0vcHVsbC8xNTg4CiAgICBudW1fYm9tYl9wZXJpb2RzID0gKGludChibG9ja19udW1iZXIpIC8vIDEwMDAwMCkgLSAyCiAgICBpZiBudW1fYm9tYl9wZXJpb2RzID49IDA6CiAgICAgICAgZGlmZmljdWx0eSArPSAyKipudW1fYm9tYl9wZXJpb2RzCgogICAgIyBTb21lIGNsaWVudHMgcmFpc2UgdGhlIGRpZmZpY3VsdHkgdG8gYE1JTklNVU1fRElGRklDVUxUWWAgcHJpb3IgdG8gYWRkaW5nCiAgICAjIHRoZSBib21iLiBUaGlzIGJ1ZyBkb2VzIG5vdCBtYXR0ZXIgYmVjYXVzZSB0aGUgZGlmZmljdWx0eSBpcyBhbHdheXMgbXVjaAogICAgIyBncmVhdGVyIHRoYW4gYE1JTklNVU1fRElGRklDVUxUWWAgb24gTWFpbm5ldC4KICAgIHJldHVybiBVaW50KG1heChkaWZmaWN1bHR5LCBNSU5JTVVNX0RJRkZJQ1VMVFkpKQqUaAddlChoP4yMZGVmIGNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5KAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgYmxvY2tfdGltZXN0YW1wOiBVMjU2LAogICAgcGFyZW50X3RpbWVzdGFtcDogVTI1NiwKICAgIHBhcmVudF9kaWZmaWN1bHR5OiBVaW50LAqUhZSBlH2UKGgFaAZoIGryNQAAaCFoA2gdaERoH0sAdWJqJw8AACmBlH2UKGgFaAZoB12UaD+MGXBhcmVudF9oYXNfb21tZXJzOiBib29sLAqU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aBxqJg8AAGggavI1AABoIWgDaB1oRGgfSwB1Ymg/WGEBAAAgLy8gMTAwMDAwKSAtIDIKICAgIGlmIG51bV9ib21iX3BlcmlvZHMgPj0gMDoKICAgICAgICBkaWZmaWN1bHR5ICs9IDIqKm51bV9ib21iX3BlcmlvZHMKCiAgICAjIFNvbWUgY2xpZW50cyByYWlzZSB0aGUgZGlmZmljdWx0eSB0byBgTUlOSU1VTV9ESUZGSUNVTFRZYCBwcmlvciB0byBhZGRpbmcKICAgICMgdGhlIGJvbWIuIFRoaXMgYnVnIGRvZXMgbm90IG1hdHRlciBiZWNhdXNlIHRoZSBkaWZmaWN1bHR5IGlzIGFsd2F5cyBtdWNoCiAgICAjIGdyZWF0ZXIgdGhhbiBgTUlOSU1VTV9ESUZGSUNVTFRZYCBvbiBNYWlubmV0LgogICAgcmV0dXJuIFVpbnQobWF4KGRpZmZpY3VsdHksIE1JTklNVU1fRElGRklDVUxUWSkpCpSFlIGUfZQoaAVoBmggavI1AABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjFYvaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9zcHVyaW91c19kcmFnb24vc3BlYy5weZSMCXhtbDpzcGFjZZRq+AQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGpWDwAASwFzjAdsaW5lbm9zlIl1aBxqHA8AAGgdaB5oH03JAmggahgzAABoIWgDdWJlaA59lChoEF2UaqQEAABhaBNdlGgVXZSMGmNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5lGFoF12UaBldlHVoHGgzaB1oHmgfTaUCaCBqpw4AAGghaAN1YmVoDn2UKGgQXZRqMQEAAGFoE12UaBVdlIwObW9kdWxlIGRldGFpbHOUYWgXXZRoGV2UdWgcaDNoHWgeaB9LRmggaDVoIWgDdWJlaA59lChoEF2UjBZldGhlcmV1bS1zcGVjaWZpY2F0aW9ulGFoE12UaBVdlIwWZXRoZXJldW0gc3BlY2lmaWNhdGlvbpRhaBddlGgZXZR1aBxoM2gdaB5oH0sEaCBoA2ghaAN1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUaER1aBxoAYwOY3VycmVudF9zb3VyY2WUaESMDGN1cnJlbnRfbGluZZRLAIwIc2V0dGluZ3OUjBFkb2N1dGlscy5mcm9udGVuZJSMBlZhbHVlc5STlCmBlH2UKIwMcmVwb3J0X2xldmVslEsCjApoYWx0X2xldmVslEsEjBFleGl0X3N0YXR1c19sZXZlbJRLBYwFZGVidWeUTowOd2FybmluZ19zdHJlYW2UTowJdHJhY2ViYWNrlE6MD291dHB1dF9lbmNvZGluZ5SMBXV0Zi04lIwdb3V0cHV0X2VuY29kaW5nX2Vycm9yX2hhbmRsZXKUjBF4bWxjaGFycmVmcmVwbGFjZZSMDmVycm9yX2VuY29kaW5nlIwFdXRmLTiUjBxlcnJvcl9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwQYmFja3NsYXNocmVwbGFjZZSME3JlY29yZF9kZXBlbmRlbmNpZXOUjA5kb2N1dGlscy51dGlsc5SMDkRlcGVuZGVuY3lMaXN0lJOUKYGUfZQojARsaXN0lF2UjARmaWxllE51YowGY29uZmlnlE6MDWR1bXBfc2V0dGluZ3OUTowOZHVtcF9pbnRlcm5hbHOUTowPZHVtcF90cmFuc2Zvcm1zlE6MD2R1bXBfcHNldWRvX3htbJROjBBleHBvc2VfaW50ZXJuYWxzlE6MDnN0cmljdF92aXNpdG9ylE6MD19kaXNhYmxlX2NvbmZpZ5ROjAdfc291cmNllE6MDF9kZXN0aW5hdGlvbpSMN2RvYy9kaWZmcy9zcHVyaW91c19kcmFnb25fYnl6YW50aXVtL3NwZWMvaW5kZXgucGlja2xlNjSUjA1fY29uZmlnX2ZpbGVzlF2UjBFsaW5lX2xlbmd0aF9saW1pdJRNECeMCXRhYl93aWR0aJRLCIwQc3ludGF4X2hpZ2hsaWdodJSMBGxvbmeUjAxzbWFydF9xdW90ZXOUiYwTc21hcnRxdW90ZXNfbG9jYWxlc5ROjB1jaGFyYWN0ZXJfbGV2ZWxfaW5saW5lX21hcmt1cJSJjAZ3cml0ZXKUjAN4bWyUjBljb21wYXJlX3NlY3Rpb25zX2J5X25hbWVzlEsBjAxkdW1wX3JzdGRpZmaUTowFX2JvdGiUfZQoaDhOjAlnZW5lcmF0b3KUTowJZGF0ZXN0YW1wlE6MC3NvdXJjZV9saW5rlE6MCnNvdXJjZV91cmyUTowNdG9jX2JhY2tsaW5rc5RqYQUAAIwSZm9vdG5vdGVfYmFja2xpbmtzlEsBjA1zZWN0bnVtX3hmb3JtlEsBjA5kb2N0aXRsZV94Zm9ybZRLAYwNZG9jaW5mb194Zm9ybZRLAYwSc2VjdHN1YnRpdGxlX3hmb3JtlEsAjA5zdHJpcF9jb21tZW50c5ROjA5pbnB1dF9lbmNvZGluZ5ROjBxpbnB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwGc3RyaWN0lIwNbGFuZ3VhZ2VfY29kZZSMAmVulIwOcGVwX3JlZmVyZW5jZXOUTowMcGVwX2Jhc2VfdXJslIwfaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL5SMFXBlcF9maWxlX3VybF90ZW1wbGF0ZZSMCHBlcC0lMDRklIwOcmZjX3JlZmVyZW5jZXOUTowMcmZjX2Jhc2VfdXJslIwbaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvlIwddHJpbV9mb290bm90ZV9yZWZlcmVuY2Vfc3BhY2WUTowWZmlsZV9pbnNlcnRpb25fZW5hYmxlZJRLAYwLcmF3X2VuYWJsZWSUSwGMDmF1dG9faWRfcHJlZml4lIwCaWSUjAlpZF9wcmVmaXiUaAaMG3N0cmlwX2VsZW1lbnRzX3dpdGhfY2xhc3Nlc5ROjA1zdHJpcF9jbGFzc2VzlE51jARib3RolH2UjApfb3B0aW9uc1RvlIwFX2JvdGiUjAtfb2xkX3NvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS+UjAtfbmV3X3NvdXJjZZSMCWRvYy9kaWZmc5Rq8TYAAGryNgAAjBZpZ25vcmVfaW5fc2VjdGlvbl9uYW1llF2UKIwIc3B1cmlvdXOUjAZkcmFnb26UjAlieXphbnRpdW2UZXVijAhyZXBvcnRlcpROjBBpbmRpcmVjdF90YXJnZXRzlF2UjBFzdWJzdGl0dXRpb25fZGVmc5R9lIwSc3Vic3RpdHV0aW9uX25hbWVzlH2UjAhyZWZuYW1lc5R9lIwGcmVmaWRzlH2UjAduYW1laWRzlH2UjAluYW1ldHlwZXOUfZRoEH2UjA1mb290bm90ZV9yZWZzlH2UjA1jaXRhdGlvbl9yZWZzlH2UjA1hdXRvZm9vdG5vdGVzlF2UjBFhdXRvZm9vdG5vdGVfcmVmc5RdlIwQc3ltYm9sX2Zvb3Rub3Rlc5RdlIwUc3ltYm9sX2Zvb3Rub3RlX3JlZnOUXZSMCWZvb3Rub3Rlc5RdlIwJY2l0YXRpb25zlF2UjBJhdXRvZm9vdG5vdGVfc3RhcnSUSwGMFXN5bWJvbF9mb290bm90ZV9zdGFydJRLAIwKaWRfY291bnRlcpSMC2NvbGxlY3Rpb25zlIwHQ291bnRlcpSTlH2UhZRSlIwOcGFyc2VfbWVzc2FnZXOUXZSMEnRyYW5zZm9ybV9tZXNzYWdlc5RdlIwLdHJhbnNmb3JtZXKUTowLaW5jbHVkZV9sb2eUXZSMCmRlY29yYXRpb26UTmghaAN1Yi4=