gASVBAABAAAAAACMDmRvY3V0aWxzLm5vZGVzlIwIZG9jdW1lbnSUk5QpgZR9lCiMCXJhd3NvdXJjZZSMAJSMCGNoaWxkcmVulF2UKGgAjAZ0YXJnZXSUk5QpgZR9lChoBWgGaAddlIwKYXR0cmlidXRlc5R9lCiMA2lkc5RdlIwdbW9kdWxlLWV0aGVyZXVtLmZyb250aWVyLnNwZWOUYYwHY2xhc3Nlc5RdlIwFbmFtZXOUXZSMCGR1cG5hbWVzlF2UjAhiYWNrcmVmc5RdlIwFaXNtb2SUiHWMB3RhZ25hbWWUaAmMBnNvdXJjZZSMXi9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vZnJvbnRpZXIvc3BlYy9pbmRleC5yc3SUjARsaW5llEsBjAZwYXJlbnSUaAOMCV9kb2N1bWVudJRoA3VijA9zcGhpbnguYWRkbm9kZXOUjAVpbmRleJSTlCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlCiMBHBhaXKUjB5tb2R1bGU7IGV0aGVyZXVtLmZyb250aWVyLnNwZWOUaBJoBk50lGF1aBxoI2gdaB5oH0sCaCBoA2ghaAN1YmgAjAdzZWN0aW9ulJOUKYGUfZQoaAVoBmgHXZQoaACMBXRpdGxllJOUKYGUfZQoaAWMFkV0aGVyZXVtIFNwZWNpZmljYXRpb26UaAddlGgAjARUZXh0lJOUjBZFdGhlcmV1bSBTcGVjaWZpY2F0aW9ulIWUgZR9lChoBWgGaCBoOmghaANoHYxcL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy8udG94L2RvY3Mvc3RhZ2UwX291dC9hdXRvYXBpLyA9PiBkb2MvZGlmZnOUaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoOGgdaB5oH0sEaCBoNWghaAN1YmgAjAV0b3BpY5STlCmBlH2UKGgFaAZoB12UKGg5KYGUfZQoaAWMEVRhYmxlIG9mIENvbnRlbnRzlGgHXZRoP4wRVGFibGUgb2YgQ29udGVudHOUhZSBlH2UKGgF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YXNoX2Zvcl9wb3cKCkdlbmVyYXRlIHJscCBoYXNoIG9mIHRoZSBoZWFkZXIgd2hpY2ggaXMgdG8gYmUgdXNlZCBmb3IgUHJvb2Ytb2YtV29yawoKdmFsaWRhdGVfcHJvb2Zfb2Zfd29yawoKVmFsaWRhdGVzIHRoZSBQcm9vZiBvZiBXb3JrIGNvbnN0cmFpbnRzLgoKYXBwbHlfYm9keQoKRXhlY3V0ZXMgYSBibG9jay4KCnZhbGlkYXRlX29tbWVycwoKVmFsaWRhdGVzIHRoZSBvbW1lcnMgbWVudGlvbmVkIGluIHRoZSBibG9jay4KCnBheV9yZXdhcmRzCgpQYXkgcmV3YXJkcyB0byB0aGUgYmxvY2sgbWluZXIgYXMgd2VsbCBhcyB0aGUgb21tZXJzIG1pbmVycy4KCnByb2Nlc3NfdHJhbnNhY3Rpb24KCkV4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBlbnZpcm9ubWVudC4KCnZhbGlkYXRlX3RyYW5zYWN0aW9uCgpWZXJpZmllcyBhIHRyYW5zYWN0aW9uLgoKY2FsY3VsYXRlX2ludHJpbnNpY19jb3N0CgpDYWxjdWxhdGVzIHRoZSBnYXMgdGhhdCBpcyBjaGFyZ2VkIGJlZm9yZSBleGVjdXRpb24gaXMgc3RhcnRlZC4KCnJlY292ZXJfc2VuZGVyCgpFeHRyYWN0cyB0aGUgc2VuZGVyIGFkZHJlc3MgZnJvbSBhIHRyYW5zYWN0aW9uLgoKc2lnbmluZ19oYXNoCgpDb21wdXRlIHRoZSBoYXNoIG9mIGEgdHJhbnNhY3Rpb24gdXNlZCBpbiB0aGUgc2lnbmF0dXJlLgoKY29tcHV0ZV9oZWFkZXJfaGFzaAoKQ29tcHV0ZXMgdGhlIGhhc2ggb2YgYSBibG9jayBoZWFkZXIuCgpjaGVja19nYXNfbGltaXQKClZhbGlkYXRlcyB0aGUgZ2FzIGxpbWl0IGZvciBhIGJsb2NrLgoKY2FsY3VsYXRlX2Jsb2NrX2RpZmZpY3VsdHkKCkNvbXB1dGVzIGRpZmZpY3VsdHkgb2YgYSBibG9jayB1c2luZyBpdHMgaGVhZGVyIGFuZJRoB12UatAEAAApgZR9lChoBWgGaAddlGrVBAAAKYGUfZQo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biA8ZXRoZXJldW0uZnJvbnRpZXIuc3BlYy5zdGF0ZV90cmFuc2l0aW9uPmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqBgUAACmBlH2UKGgFam8GAABoB12UaD+MEHN0YXRlX3RyYW5zaXRpb26UhZSBlH2UKGgFaAZoIGp0BgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqEgUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGoFBQAAaB1OaB9OaCBqcQYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwnZXRoZXJldW0uZnJvbnRpZXIuc3BlYy5zdGF0ZV90cmFuc2l0aW9ulIwIcmVmdGl0bGWUjCdldGhlcmV1bS5mcm9udGllci5zcGVjLnN0YXRlX3RyYW5zaXRpb26UdWgcaG1oHU5oH05oIGptBgAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mby9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vZnJvbnRpZXIvc3BlYy9pbmRleC5yc3Q6NTU6PGF1dG9zdW1tYXJ5PpRoH0sBaCBqagYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxq+QQAAGgdTmgfTmggamcGAAB1Ymr6BAAAKYGUfZQoaAVoBmgHXZRoaSmBlH2UKGgFjDVBdHRlbXB0cyB0byBhcHBseSBhIGJsb2NrIHRvIGFuIGV4aXN0aW5nIGJsb2NrIGNoYWluLpRoB12UaD+MNUF0dGVtcHRzIHRvIGFwcGx5IGEgYmxvY2sgdG8gYW4gZXhpc3RpbmcgYmxvY2sgY2hhaW4ulIWUgZR9lChoBWgGaCBqngYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjG8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Zyb250aWVyL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggapsGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavkEAABoHU5oH05oIGpnBgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGr0BAAAaB1oRGgfSwBoIGqsBQAAaCFoA3ViavUEAAApgZR9lChoBWgGaAddlChq+gQAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYw/Om9iajpgdmFsaWRhdGVfaGVhZGVyIDxldGhlcmV1bS5mcm9udGllci5zcGVjLnZhbGlkYXRlX2hlYWRlcj5glGgHXZRobimBlH2UKGgFaAZoB12UagYFAAApgZR9lChoBWrBBgAAaAddlGg/jA92YWxpZGF0ZV9oZWFkZXKUhZSBlH2UKGgFaAZoIGrGBgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqEgUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGoFBQAAaB1OaB9OaCBqwwYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwmZXRoZXJldW0uZnJvbnRpZXIuc3BlYy52YWxpZGF0ZV9oZWFkZXKUjAhyZWZ0aXRsZZSMJmV0aGVyZXVtLmZyb250aWVyLnNwZWMudmFsaWRhdGVfaGVhZGVylHVoHGhtaB1OaB9OaCBqvwYAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjG8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Zyb250aWVyL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggarwGAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavkEAABoHU5oH05oIGq5BgAAdWJq+gQAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwYVmVyaWZpZXMgYSBibG9jayBoZWFkZXIulGgHXZRoP4wYVmVyaWZpZXMgYSBibG9jayBoZWFkZXIulIWUgZR9lChoBWgGaCBq8AYAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjG8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Zyb250aWVyL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggau0GAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavkEAABoHU5oH05oIGq5BgAAdWJlaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGr0BAAAaB1oRGgfSwBoIGqsBQAAaCFoA3ViavUEAAApgZR9lChoBWgGaAddlChq+gQAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYxZOm9iajpgZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdyA8ZXRoZXJldW0uZnJvbnRpZXIuc3BlYy5nZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93PmCUaAddlGhuKYGUfZQoaAVoBmgHXZRqBgUAACmBlH2UKGgFahMHAABoB12UaD+MHGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUhZSBlH2UKGgFaAZoIGoYBwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqEgUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGoFBQAAaB1OaB9OaCBqFQcAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwzZXRoZXJldW0uZnJvbnRpZXIuc3BlYy5nZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93lIwIcmVmdGl0bGWUjDNldGhlcmV1bS5mcm9udGllci5zcGVjLmdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3eUdWgcaG1oHU5oH05oIGoRBwAAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB2Mby9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvZG9jL2F1dG9hcGkvZXRoZXJldW0vZnJvbnRpZXIvc3BlYy9pbmRleC5yc3Q6NTU6PGF1dG9zdW1t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b21tZXJzIDxldGhlcmV1bS5mcm9udGllci5zcGVjLnZhbGlkYXRlX29tbWVycz5glGgHXZRobimBlH2UKGgFaAZoB12UagYFAAApgZR9lChoBWoJCAAAaAddlGg/jA92YWxpZGF0ZV9vbW1lcnOUhZSBlH2UKGgFaAZoIGoOCAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqEgUAAIwCcHmUjAZweS1vYmqUZWgVXZRoF12UaBldlHVoHGoFBQAAaB1OaB9OaCBqCwgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMCGludGVybmFslIiMBXJlZmlklIwmZXRoZXJldW0uZnJvbnRpZXIuc3BlYy52YWxpZGF0ZV9vbW1lcnOUjAhyZWZ0aXRsZZSMJmV0aGVyZXVtLmZyb250aWVyLnNwZWMudmFsaWRhdGVfb21tZXJzlHVoHGhtaB1OaB9OaCBqBwgAAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdjG8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL2RvYy9hdXRvYXBpL2V0aGVyZXVtL2Zyb250aWVyL3NwZWMvaW5kZXgucnN0OjU1OjxhdXRvc3VtbWFyeT6UaB9LAWggagQIAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcavkEAABoHU5oH05oIGoBCAAAdWJq+gQAACmBlH2UKGgFaAZoB12UaGkpgZR9lChoBYwsVmFsaWRhdGVzIHRoZSBvbW1lcnMgbWVudGlvbmVkIGluIHRoZSBibG9jay6UaAddlGg/jCxWYWxpZGF0ZXMgdGhlIG9tbWVycyBtZW50aW9uZWQgaW4gdGhlIGJsb2NrLpSFlIGUfZQoaAVoBmggajgIAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHYxvL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9kb2MvYXV0b2FwaS9ldGhlcmV1bS9mcm9udGllci9zcGVjL2luZGV4LnJzdDo1NTo8YXV0b3N1bW1hcnk+lGgfSwFoIGo1CAAA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AACMB29ianR5cGWUatoSAACMCGRlc2N0eXBllGraEgAAjAdub2luZGV4lIl1aBxqiw0AAGgdaERoH0sAaCBqUxEAAGghaAN1YmrQDQAAKYGUfZQoaAVY7gMAAGRlZiBhcHBseV9mb3JrKG9sZDogQmxvY2tDaGFpbikgLT4gQmxvY2tDaGFpbjoKICAgIGdlbmVzaXMgPSBnZW5lc2lzX2NvbmZpZ3VyYXRpb24oIm1haW5uZXQuanNvbiIpCgogICAgZm9yIGFjY291bnQsIGJhbGFuY2UgaW4gZ2VuZXNpcy5pbml0aWFsX2JhbGFuY2VzLml0ZW1zKCk6CiAgICAgICAgY3JlYXRlX2V0aGVyKG9sZC5zdGF0ZSwgYWNjb3VudCwgYmFsYW5jZSkKCiAgICBnZW5lc2lzX2hlYWRlciA9IEhlYWRlcigKICAgICAgICBwYXJlbnRfaGFzaD1IYXNoMzIoYiJcMCIgKiAzMiksCiAgICAgICAgb21tZXJzX2hhc2g9cmxwLnJscF9oYXNoKCgpKSwKICAgICAgICBjb2luYmFzZT1BZGRyZXNzKGIiXDAiICogMjApLAogICAgICAgIHN0YXRlX3Jvb3Q9c3RhdGVfcm9vdChvbGQuc3RhdGUpLAogICAgICAgIHRyYW5zYWN0aW9uc19yb290PXJvb3QoVHJpZShGYWxzZSwgTm9uZSkpLAogICAgICAgIHJlY2VpcHRfcm9vdD1yb290KFRyaWUoRmFsc2UsIE5vbmUpKSwKICAgICAgICBibG9vbT1CbG9vbShiIlwwIiAqIDI1NiksCiAgICAgICAgZGlmZmljdWx0eT1nZW5lc2lzLmRpZmZpY3VsdHksCiAgICAgICAgbnVtYmVyPVVpbnQoMCksCiAgICAgICAgZ2FzX2xpbWl0PWdlbmVzaXMuZ2FzX2xpbWl0LAogICAgICAgIGdhc191c2VkPVVpbnQoMCksCiAgICAgICAgdGltZXN0YW1wPWdlbmVzaXMudGltZXN0YW1wLAogICAgICAgIGV4dHJhX2RhdGE9Z2VuZXNpcy5leHRyYV9kYXRhLAogICAgICAgIG1peF9kaWdlc3Q9SGFzaDMyKGIiXDAiICogMzIpLAogICAgICAgIG5vbmNlPWdlbmVzaXMubm9uY2UsCiAgICApCgogICAgZ2VuZXNpc19ibG9jayA9IEJsb2NrKAogICAgICAgIGhlYWRlcj1nZW5lc2lzX2hlYWRlciwKICAgICAgICB0cmFuc2FjdGlvbnM9KCksCiAgICAgICAgb21tZXJzPSgpLAogICAgKQoKICAgIG9sZC5ibG9ja3MuYXBwZW5kKGdlbmVzaXNfYmxvY2spCiAgICBvbGQuY2hhaW5faWQgPSBnZW5lc2lzLmNoYWluX2lkCgogICAgcmV0dXJuIG9sZAqUaAddlChoP4wzZGVmIGFwcGx5X2Zvcmsob2xkOiBCbG9ja0NoYWluKSAtPiBCbG9ja0NoYWluOgogICAglIWUgZR9lChoBWgGaCBq4hIAAGghaANoHWhEaB9LAHViaiMLAAApgZR9lChoBWgGaAddlGg/WLADAABnZW5lc2lzID0gZ2VuZXNpc19jb25maWd1cmF0aW9uKCJtYWlubmV0Lmpzb24iKQoKICAgIGZvciBhY2NvdW50LCBiYWxhbmNlIGluIGdlbmVzaXMuaW5pdGlhbF9iYWxhbmNlcy5pdGVtcygpOgogICAgICAgIGNyZWF0ZV9ldGhlcihvbGQuc3RhdGUsIGFjY291bnQsIGJhbGFuY2UpCgogICAgZ2VuZXNpc19oZWFkZXIgPSBIZWFkZXIoCiAgICAgICAgcGFyZW50X2hhc2g9SGFzaDMyKGIiXDAiICogMzIpLAogICAgICAgIG9tbWVyc19oYXNoPXJscC5ybHBfaGFzaCgoKSksCiAgICAgICAgY29pbmJhc2U9QWRkcmVzcyhiIlwwIiAqIDIwKSwKICAgICAgICBzdGF0ZV9yb290PXN0YXRlX3Jvb3Qob2xkLnN0YXRlKSwKICAgICAgICB0cmFuc2FjdGlvbnNfcm9vdD1yb290KFRyaWUoRmFsc2UsIE5vbmUpKSwKICAgICAgICByZWNlaXB0X3Jvb3Q9cm9vdChUcmllKEZhbHNlLCBOb25lKSksCiAgICAgICAgYmxvb209Qmxvb20oYiJcMCIgKiAyNTYpLAogICAgICAgIGRpZmZpY3VsdHk9Z2VuZXNpcy5kaWZmaWN1bHR5LAogICAgICAgIG51bWJlcj1VaW50KDApLAogICAgICAgIGdhc19saW1pdD1nZW5lc2lzLmdhc19saW1pdCwKICAg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PSBrZWNjYWsyNTYocmxwLmVuY29kZShyZWNlbnRfYmxvY2tzWy0xXS5oZWFkZXIpKQogICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQobW9zdF9yZWNlbnRfYmxvY2tfaGFzaCkKCiAgICByZXR1cm4gcmVjZW50X2Jsb2NrX2hhc2hlcwqUaAddlGg/WN8CAABkZWYgZ2V0X2xhc3RfMjU2X2Jsb2NrX2hhc2hlcyhjaGFpbjogQmxvY2tDaGFpbikgLT4gTGlzdFtIYXNoMzJdOgogICAgcmVjZW50X2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stMjU1Ol0KICAgICMgVE9ETzogVGhpcyBmdW5jdGlvbiBoYXMgbm90IGJlZW4gdGVzdGVkIHJpZ29yb3VzbHkKICAgIGlmIGxlbihyZWNlbnRfYmxvY2tzKSA9PSAwOgogICAgICAgIHJldHVybiBbXQoKICAgIHJlY2VudF9ibG9ja19oYXNoZXMgPSBbXQoKICAgIGZvciBibG9jayBpbiByZWNlbnRfYmxvY2tzOgogICAgICAgIHByZXZfYmxvY2tfaGFzaCA9IGJsb2NrLmhlYWRlci5wYXJlbnRfaGFzaAogICAgICAgIHJlY2VudF9ibG9ja19oYXNoZXMuYXBwZW5kKHByZXZfYmxvY2tfaGFzaCkKCiAgICAjIFdlIGFyZSBjb21wdXRpbmcgdGhlIGhhc2ggb25seSBmb3IgdGhlIG1vc3QgcmVjZW50IGJsb2NrIGFuZCBub3QgZm9yCiAgICAjIHRoZSByZXN0IG9mIHRoZSBibG9ja3MgYXMgdGhleSBoYXZlIHN1Y2Nlc3NvcnMgd2hpY2ggaGF2ZSB0aGUgaGFzaCBvZgogICAgIyB0aGUgY3VycmVudCBibG9jayBhcyBwYXJlbnQgaGFzaC4KICAgIG1vc3RfcmVjZW50X2Jsb2NrX2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShyZWNlbnRfYmxvY2tzWy0xXS5oZWFkZXIpKQogICAgcmVjZW50X2Jsb2NrX2hhc2hlcy5hcHBlbmQobW9zdF9yZWNlbnRfYmxvY2tfaGFzaCkKCiAgICByZXR1cm4gcmVjZW50X2Jsb2NrX2hhc2hlcwqUhZSBlH2UKGgFaAZoIGp+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IGNoYWluLiBCbG9ja3MgYXJlIHZlcmlmaWVkIGJ5IGVuc3VyaW5nIHRoYXQgdGhlIGNvbnRlbnRzIG9mIHRoZQpibG9jayBtYWtlIGxvZ2ljYWwgc2Vuc2Ugd2l0aCB0aGUgY29udGVudHMgb2YgdGhlIHBhcmVudCBibG9jay4gVGhlCmluZm9ybWF0aW9uIGluIHRoZSBibG9jaydzIGhlYWRlciBtdXN0IGFsc28gbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcKaW5mb3JtYXRpb24gaW4gdGhlIGJsb2NrLpRoB12UaD9YNQEAAEFsbCBwYXJ0cyBvZiB0aGUgYmxvY2vigJlzIGNvbnRlbnRzIG5lZWQgdG8gYmUgdmVyaWZpZWQgYmVmb3JlIGJlaW5nIGFkZGVkCnRvIHRoZSBjaGFpbi4gQmxvY2tzIGFyZSB2ZXJpZmllZCBieSBlbnN1cmluZyB0aGF0IHRoZSBjb250ZW50cyBvZiB0aGUKYmxvY2sgbWFrZSBsb2dpY2FsIHNlbnNlIHdpdGggdGhlIGNvbnRlbnRzIG9mIHRoZSBwYXJlbnQgYmxvY2suIFRoZQppbmZvcm1hdGlvbiBpbiB0aGUgYmxvY2vigJlzIGhlYWRlciBtdXN0IGFsc28gbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcKaW5mb3JtYXRpb24gaW4gdGhlIGJsb2NrLpSFlIGUfZQoaAVoBmggaiUVAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9L62ggahQVAAB1YmhpKYGUfZQoaAWM/FRvIGltcGxlbWVudCBFdGhlcmV1bSwgaW4gdGhlb3J5IGNsaWVudHMgYXJlIG9ubHkgcmVxdWlyZWQgdG8gc3RvcmUgdGhlCm1vc3QgcmVjZW50IDI1NSBibG9ja3Mgb2YgdGhlIGNoYWluIHNpbmNlIGFzIGZhciBhcyBleGVjdXRpb24gaXMKY29uY2VybmVkLCBvbmx5IHRob3NlIGJsb2NrcyBhcmUgYWNjZXNzZWQuIFByYWN0aWNhbGx5LCBob3dldmVyLCBjbGllbnRzCnNob3VsZCBzdG9yZSBtb3JlIGJsb2NrcyB0byBoYW5kbGUgcmVvcmdzLpRoB12UaD+M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AACMB25vaW5kZXiUiXVoHGqLDQAAaB1OaB9OaCBqnBQAAHViatANAAApgZR9lChoBViqBAAAZGVmIHN0YXRlX3RyYW5zaXRpb24oY2hhaW46IEJsb2NrQ2hhaW4sIGJsb2NrOiBCbG9jaykgLT4gTm9uZToKICAgIHBhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbLTFdLmhlYWRlcgogICAgdmFsaWRhdGVfaGVhZGVyKGJsb2NrLmhlYWRlciwgcGFyZW50X2hlYWRlcikKICAgIHZhbGlkYXRlX29tbWVycyhibG9jay5vbW1lcnMsIGJsb2NrLmhlYWRlciwgY2hhaW4pCiAgICAoCiAgICAgICAgZ2FzX3VzZWQsCiAgICAgICAgdHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgcmVjZWlwdF9yb290LAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApID0gYXBwbHlfYm9keSgKICAgICAgICBjaGFpbi5zdGF0ZSwKICAgICAgICBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluKSwKICAgICAgICBibG9jay5oZWFkZXIuY29pbmJhc2UsCiAgICAgICAgYmxvY2suaGVhZGVyLm51bWJlciwKICAgICAgICBibG9jay5oZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGJsb2NrLmhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgYmxvY2suaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgYmxvY2sudHJhbnNhY3Rpb25zLAogICAgICAgIGJsb2NrLm9tbWVycywKICAgICkKICAgIGVuc3VyZShnYXNfdXNlZCA9PSBibG9jay5oZWFkZXIuZ2FzX3VzZWQsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSh0cmFuc2FjdGlvbnNfcm9vdCA9PSBibG9jay5oZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzdGF0ZV9yb290KHN0YXRlKSA9PSBibG9jay5oZWFkZXIuc3RhdGVfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHJlY2VpcHRfcm9vdCA9PSBibG9jay5oZWFkZXIucmVjZWlwdF9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoYmxvY2tfbG9nc19ibG9vbSA9PSBibG9jay5oZWFkZXIuYmxvb20sIEludmFsaWRCbG9jaykKCiAgICBjaGFpbi5ibG9ja3MuYXBwZW5kKGJsb2NrKQogICAgaWYgbGVuKGNoYWluLmJsb2NrcykgPiAyNTU6CiAgICAgICAgIyBSZWFsIGNsaWVudHMgaGF2ZSB0byBzdG9yZSBtb3JlIGJsb2NrcyB0byBkZWFsIHdpdGggcmVvcmdzLCBidXQgdGhlCiAgICAgICAgIyBwcm90b2NvbCBvbmx5IHJlcXVpcmVzIHRoZSBsYXN0IDI1NQogICAgICAgIGNoYWluLmJsb2NrcyA9IGNoYWluLmJsb2Nrc1stMjU1Ol0KlGgHXZRoP1iqBAAAZGVmIHN0YXRlX3RyYW5zaXRpb24oY2hhaW46IEJsb2NrQ2hhaW4sIGJsb2NrOiBCbG9jaykgLT4gTm9uZToKICAgIHBhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbLTFdLmhlYWRlcgogICAgdmFsaWRhdGVfaGVhZGVyKGJsb2NrLmhlYWRlciwgcGFyZW50X2hlYWRlcikKICAgIHZhbGlkYXRlX29tbWVycyhibG9jay5vbW1lcnMsIGJsb2NrLmhlYWRlciwgY2hhaW4pCiAgICAoCiAgICAgICAgZ2FzX3VzZWQsCiAgICAgICAgdHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgcmVjZWlwdF9yb290LAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApID0gYXBwbHlfYm9keSgKICAgICAgICBjaGFpbi5zdGF0ZSwKICAgICAgICBnZXRfbGFzdF8yNTZfYmxvY2tfaGFzaGVzKGNoYWluKSwKICAgICAgICBibG9jay5oZWFkZXIuY29pbmJhc2UsCiAgICAgICAgYmxvY2suaGVhZGVyLm51bWJlciwKICAgICAgICBibG9jay5oZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGJsb2NrLmhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgYmxvY2suaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgYmxvY2sudHJhbnNhY3Rpb25zLAogICAgICAgIGJsb2NrLm9tbWVycywKICAgICkKICAgIGVuc3VyZShnYXNfdXNlZCA9PSBibG9jay5oZWFkZXIuZ2FzX3VzZWQsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZSh0cmFuc2FjdGlvbnNfcm9vdCA9PSBibG9jay5oZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzdGF0ZV9yb290KHN0YXRlKSA9PSBibG9jay5oZWFkZXIuc3RhdGVfcm9vdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHJlY2VpcHRfcm9vdCA9PSBibG9jay5oZWFkZXIucmVjZWlwdF9yb290LCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoYmxvY2tfbG9nc19ibG9vbSA9PSBibG9jay5oZWFkZXIuYmxvb20sIEludmFsaWRCbG9jaykKCiAgICBjaGFpbi5ibG9ja3MuYXBwZW5kKGJsb2NrKQogICAgaWYgbGVuKGNoYWluLmJsb2NrcykgPiAyNTU6CiAgICAgICAgIyBSZWFsIGNsaWVudHMgaGF2ZSB0byBzdG9yZSBtb3JlIGJsb2NrcyB0byBkZWFsIHdpdGggcmVvcmdzLCBidXQgdGhlCiAgICAgICAgIyBwcm90b2NvbCBvbmx5IHJlcXVpcmVzIHRoZSBsYXN0IDI1NQogICAgICAgIGNoYWluLmJsb2NrcyA9IGNoYWluLmJsb2Nrc1stMjU1Ol0KlIWUgZR9lChoBWgGaCBq5hUAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2Zyb250aWVyL3NwZWMucHmUjAl4bWw6c3BhY2WUapAEAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRq5w0AAEsBc4wHbGluZW5vc5SJdWgcas8NAABoHWge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ZXIuZGlmZmljdWx0eSwKICAgICkKICAgIGVuc3VyZShoZWFkZXIuZGlmZmljdWx0eSA9PSBibG9ja19kaWZmaWN1bHR5LCBJbnZhbGlkQmxvY2spCgogICAgYmxvY2tfcGFyZW50X2hhc2ggPSBrZWNjYWsyNTYocmxwLmVuY29kZShwYXJlbnRfaGVhZGVyKSkKICAgIGVuc3VyZShoZWFkZXIucGFyZW50X2hhc2ggPT0gYmxvY2tfcGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKCiAgICB2YWxpZGF0ZV9wcm9vZl9vZl93b3JrKGhlYWRlcikKlGgHXZRoP1gCAwAAZGVmIHZhbGlkYXRlX2hlYWRlcihoZWFkZXI6IEhlYWRlciwgcGFyZW50X2hlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgZW5zdXJlKGhlYWRlci50aW1lc3RhbXAgPiBwYXJlbnRfaGVhZGVyLnRpbWVzdGFtcCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKGhlYWRlci5udW1iZXIgPT0gcGFyZW50X2hlYWRlci5udW1iZXIgKyAxLCBJbnZhbGlkQmxvY2spCiAgICBlbnN1cmUoCiAgICAgICAgY2hlY2tfZ2FzX2xpbWl0KGhlYWRlci5nYXNfbGltaXQsIHBhcmVudF9oZWFkZXIuZ2FzX2xpbWl0KSwKICAgICAgICBJbnZhbGlkQmxvY2ssCiAgICApCiAgICBlbnN1cmUobGVuKGhlYWRlci5leHRyYV9kYXRhKSA8PSAzMiwgSW52YWxpZEJsb2NrKQoKICAgIGJsb2NrX2RpZmZpY3VsdHkgPSBjYWxjdWxhdGVfYmxvY2tfZGlmZmljdWx0eSgKICAgICAgICBoZWFkZXIubnVtYmVyLAogICAgICAgIGhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgcGFyZW50X2hlYWRlci50aW1lc3RhbXAsCiAgICAgICAgcGFyZW50X2hlYWRlci5kaWZmaWN1bHR5LAogICAgKQogICAgZW5zdXJlKGhlYWRlci5kaWZmaWN1bHR5ID09IGJsb2NrX2RpZmZpY3VsdHksIEludmFsaWRCbG9jaykKCiAgICBibG9ja19wYXJlbnRfaGFzaCA9IGtlY2NhazI1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ICBoZWFkZXIudHJhbnNhY3Rpb25zX3Jvb3QsCiAgICAgICAgaGVhZGVyLnJlY2VpcHRfcm9vdCwKICAgICAgICBoZWFkZXIuYmxvb20sCiAgICAgICAgaGVhZGVyLmRpZmZpY3VsdHksCiAgICAgICAgaGVhZGVyLm51bWJlciwKICAgICAgICBoZWFkZXIuZ2FzX2xpbWl0LAogICAgICAgIGhlYWRlci5nYXNfdXNlZCwKICAgICAgICBoZWFkZXIudGltZXN0YW1wLAogICAgICAgIGhlYWRlci5leHRyYV9kYXRhLAogICAgXQoKICAgIHJldHVybiBybHAucmxwX2hhc2goaGVhZGVyX2RhdGFfd2l0aG91dF9wb3dfYXJ0ZWZhY3RzKQqUaAddlGg/WAMCAABkZWYgZ2VuZXJhdGVfaGVhZGVyX2hhc2hfZm9yX3BvdyhoZWFkZXI6IEhlYWRlcikgLT4gSGFzaDMyOgogICAgaGVhZGVyX2RhdGFfd2l0aG91dF9wb3dfYXJ0ZWZhY3RzID0gWwogICAgICAgIGhlYWRlci5wYXJlbnRfaGFzaCwKICAgICAgICBoZWFkZXIub21tZXJzX2hhc2gsCiAgICAgICAgaGVhZGVyLmNvaW5iYXNlLAogICAgICAgIGhlYWRlci5zdGF0ZV9yb290LAogICAgICAgIGhlYWRlci50cmFuc2FjdGlvbnNfcm9vdCwKICAgICAgICBoZWFkZXIucmVjZWlwdF9yb290LAogICAgICAgIGhlYWRlci5ibG9vbSwKICAgICAgICBoZWFkZXIuZGlmZmljdWx0eSwKICAgICAgICBoZWFkZXIubnVtYmVyLAogICAgICAgIGhlYWRlci5nYXNfbGltaXQsCiAgICAgICAgaGVhZGVyLmdhc191c2VkLAogICAgICAgIGhlYWRlci50aW1lc3RhbXAsCiAgICAgICAgaGVhZGVyLmV4dHJhX2RhdGEsCiAgICBdCgogICAgcmV0dXJuIHJscC5ybHBfaGFzaChoZWFkZXJfZGF0YV93aXRob3V0X3Bvd19hcnRlZmFjdHMpCpSFlIGUfZQoaAVoBmggagIZAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjE8vaG9t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Zl9vZl93b3JrKGhlYWRlcjogSGVhZGVyKSAtPiBOb25lOgogICAgaGVhZGVyX2hhc2ggPSBnZW5lcmF0ZV9oZWFkZXJfaGFzaF9mb3JfcG93KGhlYWRlcikKICAgICMgVE9ETzogTWVtb2l6ZSB0aGlzIHNvbWV3aGVyZSBhbmQgcmVhZCBmcm9tIHRoYXQgZGF0YSBpbnN0ZWFkIG9mCiAgICAjIGNhbGN1bGF0aW5nIGNhY2hlIGZvciBldmVyeSBibG9jayB2YWxpZGF0aW9uLgogICAgY2FjaGUgPSBnZW5lcmF0ZV9jYWNoZShoZWFkZXIubnVtYmVyKQogICAgbWl4X2RpZ2VzdCwgcmVzdWx0ID0gaGFzaGltb3RvX2xpZ2h0KAogICAgICAgIGhlYWRlcl9oYXNoLCBoZWFkZXIubm9uY2UsIGNhY2hlLCBkYXRhc2V0X3NpemUoaGVhZGVyLm51bWJlcikKICAgICkKCiAgICBlbnN1cmUobWl4X2RpZ2VzdCA9PSBoZWFkZXIubWl4X2RpZ2VzdCwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKAogICAgICAgIFVpbnQuZnJvbV9iZV9ieXRlcyhyZXN1bHQpIDw9IChVMjU2X0NFSUxfVkFMVUUgLy8gaGVhZGVyLmRpZmZpY3VsdHkpLAogICAgICAgIEludmFsaWRCbG9jaywKICAgICkKlGgHXZRoP1g2AgAAZGVmIHZhbGlkYXRlX3Byb29mX29mX3dvcmsoaGVhZGVyOiBIZWFkZXIpIC0+IE5vbmU6CiAgICBoZWFkZXJfaGFzaCA9IGdlbmVyYXRlX2hlYWRlcl9oYXNoX2Zvcl9wb3coaGVhZGVyKQogICAgIyBUT0RPOiBNZW1vaXplIHRoaXMgc29tZXdoZXJlIGFuZCByZWFkIGZyb20gdGhhdCBkYXRhIGluc3RlYWQgb2YKICAgICMgY2FsY3VsYXRpbmcgY2FjaGUgZm9yIGV2ZXJ5IGJsb2NrIHZhbGlkYXRpb24uCiAgICBjYWNoZSA9IGdlbmVyYXRlX2NhY2hlKGhlYWRlci5udW1iZXIpCiAgICBtaXhfZGlnZXN0LCByZXN1bHQgPSBoYXNoaW1vdG9fbGlnaHQoCiAgICAgICAgaGVhZGVyX2hhc2gsIGhlYWRl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lChoBVh6AQAATWFueSBvZiB0aGUgY29udGVudHMgb2YgYSBibG9jayBhcmUgc3RvcmVkIGluIGRhdGEgc3RydWN0dXJlcyBjYWxsZWQKdHJpZXMuIFRoZXJlIGlzIGEgdHJhbnNhY3Rpb25zIHRyaWUgd2hpY2ggaXMgc2ltaWxhciB0byBhIGxlZGdlciBvZiB0aGUKdHJhbnNhY3Rpb25zIHN0b3JlZCBpbiB0aGUgY3VycmVudCBibG9jay4gVGhlcmUgaXMgYWxzbyBhIHJlY2VpcHRzIHRyaWUKd2hpY2ggc3RvcmVzIHRoZSByZXN1bHRzIG9mIGV4ZWN1dGluZyBhIHRyYW5zYWN0aW9uLCBsaWtlIHRoZSBwb3N0IHN0YXRlCmFuZCBnYXMgdXNlZC4gVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGFuZCBleGVjdXRlcyB0aGUgYmxvY2sgdGhhdCBpcyB0byBiZQphZGRlZCB0byB0aGUgY2hhaW4ulGgHXZRoP1h6AQAATWFueSBvZiB0aGUgY29udGVudHMgb2YgYSBibG9jayBhcmUgc3RvcmVkIGluIGRhdGEgc3RydWN0dXJlcyBjYWxsZWQKdHJpZXMuIFRoZXJlIGlzIGEgdHJhbnNhY3Rpb25zIHRyaWUgd2hpY2ggaXMgc2ltaWxhciB0byBhIGxlZGdlciBvZiB0aGUKdHJhbnNhY3Rpb25zIHN0b3JlZCBpbiB0aGUgY3VycmVudCBibG9jay4gVGhlcmUgaXMgYWxzbyBhIHJlY2VpcHRzIHRyaWUKd2hpY2ggc3RvcmVzIHRoZSByZXN1bHRzIG9mIGV4ZWN1dGluZyBhIHRyYW5zYWN0aW9uLCBsaWtlIHRoZSBwb3N0IHN0YXRlCmFuZCBnYXMgdXNlZC4gVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGFuZCBleGVjdXRlcyB0aGUgYmxvY2sgdGhhdCBpcyB0byBiZQphZGRlZCB0byB0aGUgY2hhaW4ulIWUgZR9lChoBWgGaCBqfRsAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH01ZAWggamwbAAB1YmoKEgAAKYGUfZQoaAVoBmgHXZQoag8SAAApgZR9lChoBWgGaAddlChq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ZXI6IFVpbnQsCiAgICBibG9ja19nYXNfbGltaXQ6IFVpbnQsCiAgICBibG9ja190aW1lOiBVMjU2LAogICAgYmxvY2tfZGlmZmljdWx0eTogVWludCwKICAgIHRyYW5zYWN0aW9uczogVHVwbGVbVHJhbnNhY3Rpb24sIC4uLl0sCiAgICBvbW1lcnM6IFR1cGxlW0hlYWRlciwgLi4uXSwKKSAtPiBUdXBsZVtVaW50LCBSb290LCBSb290LCBCbG9vbSwgU3RhdGVdOgogICAgZ2FzX2F2YWlsYWJsZSA9IGJsb2NrX2dhc19saW1pdAogICAgdHJhbnNhY3Rpb25zX3RyaWU6IFRyaWVbQnl0ZXMsIE9wdGlvbmFsW1RyYW5zYWN0aW9uXV0gPSBUcmllKAogICAgICAgIHNlY3VyZWQ9RmFsc2UsIGRlZmF1bHQ9Tm9uZQogICAgKQogICAgcmVjZWlwdHNfdHJpZTogVHJpZVtCeXRlcywgT3B0aW9uYWxbUmVjZWlwdF1dID0gVHJpZSgKICAgICAgICBzZWN1cmVkPUZhbHNlLCBkZWZhdWx0PU5vbmUKICAgICkKICAgIGJsb2NrX2xvZ3M6IFR1cGxlW0xvZywgLi4uXSA9ICgpCgogICAgZm9yIGksIHR4IGluIGVudW1lcmF0ZSh0cmFuc2FjdGlvbnMpOgogICAgICAgIHRyaWVfc2V0KHRyYW5zYWN0aW9uc190cmllLCBybHAuZW5jb2RlKFVpbnQoaSkpLCB0eCkKCiAgICAgICAgZW5zdXJlKHR4LmdhcyA8PSBnYXNfYXZhaWxhYmxlLCBJbnZhbGlkQmxvY2spCiAgICAgICAgc2VuZGVyX2FkZHJlc3MgPSByZWNvdmVyX3NlbmRlcih0eCkKCiAgICAgICAgZW52ID0gdm0uRW52aXJvbm1lbnQoCiAgICAgICAgICAgIGNhbGxlcj1zZW5kZXJfYWRkcmVzcywKICAgICAgICAgICAgb3JpZ2luPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBibG9ja19oYXNoZXM9YmxvY2tfaGFzaGVzLAogICAgICAgICAgICBjb2luYmFzZT1jb2luYmFzZSwKICAgICAgICAgICAgbnVtYmVyPWJsb2NrX251bWJlciwKICAgICAgICAgICAgZ2FzX2xpbWl0PWJsb2NrX2dhc19saW1pdCwKICAgICAgICAgICAgZ2FzX3ByaWNlPXR4Lmdhc19wcmljZSwKICAgICAgICAgICAgdGltZT1ibG9ja190aW1lLAogICAgICAgICAgICBkaWZmaWN1bHR5PWJsb2NrX2RpZmZpY3VsdHksCiAgICAgICAgICAgIHN0YXRlPXN0YXRlLAogICAgICAgICkKCiAgICAgICAgZ2FzX3VzZWQsIGxvZ3MgPSBwcm9jZXNzX3RyYW5zYWN0aW9uKGVudiwgdHgpCiAgICAgICAgZ2FzX2F2YWlsYWJsZSAtPSBnYXNfdXNlZAoKICAgICAgICB0cmllX3NldCgKICAgICAgICAgICAgcmVjZWlwdHNfdHJpZSwKICAgICAgICAgICAgcmxwLmVuY29kZShVaW50KGkpKSwKICAgICAgICAgICAgUmVjZWlwdCgKICAgICAgICAgICAgICAgIHBvc3Rfc3RhdGU9c3RhdGVfcm9vdChzdGF0ZSksCiAgICAgICAgICAgICAgICBjdW11bGF0aXZlX2dhc191c2VkPShibG9ja19nYXNfbGltaXQgLSBnYXNfYXZhaWxhYmxlKSwKICAgICAgICAgICAgICAgIGJsb29tPWxvZ3NfYmxvb20obG9ncyksCiAgICAgICAgICAgICAgICBsb2dzPWxvZ3MsCiAgICAgICAgICAgICksCiAgICAgICAgKQogICAgICAgIGJsb2NrX2xvZ3MgKz0gbG9ncwoKICAgIHBheV9yZXdhcmRzKHN0YXRlLCBibG9ja19udW1iZXIsIGNvaW5iYXNlLCBvbW1lcnMpCgogICAgZ2FzX3JlbWFpbmluZyA9IGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUKCiAgICBibG9ja19sb2dzX2Jsb29tID0gbG9nc19ibG9vbShibG9ja19sb2dzKQoKICAgIHJldHVybiAoCiAgICAgICAgZ2FzX3JlbWFpbmluZywKICAgICAgICByb290KHRyYW5zYWN0aW9uc190cmllKSwKICAgICAgICByb290KHJlY2VpcHRzX3RyaWUpLAogICAgICAgIGJsb2NrX2xvZ3NfYmxvb20sCiAgICAgICAgc3RhdGUsCiAgICApCpRoB12UaD9YcAcAAGRlZiBhcHBseV9ib2R5KAogICAgc3RhdGU6IFN0YXRlLAogICAgYmxvY2tfaGFzaGVzOiBMaXN0W0hhc2gzMl0sCiAgICBjb2luYmFzZTogQWRkcmVzcywKICAgIGJsb2NrX251bWJlcjogVWludCwKICAgIGJsb2NrX2dhc19saW1pdDogVWludCwKICAgIGJsb2NrX3RpbWU6IFUyNTYsCiAgICBibG9ja19kaWZmaWN1bHR5OiBVaW50LAogICAgdHJhbnNhY3Rpb25zOiBUdXBsZVtUcmFuc2FjdGlvbiwgLi4uXSwKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAopIC0+IFR1cGxlW1VpbnQsIFJvb3QsIFJvb3QsIEJsb29tLCBTdGF0ZV06CiAgICBnYXNfYXZhaWxhYmxlID0gYmxvY2tfZ2FzX2xpbWl0CiAgICB0cmFuc2FjdGlvbnNfdHJpZTogVHJpZVtCeXRlcywgT3B0aW9uYWxbVHJhbnNhY3Rpb25dXSA9IFRyaWUoCiAgICAgICAgc2VjdXJlZD1GYWxzZSwgZGVmYXVsdD1Ob25lCiAgICApCiAgICByZWNlaXB0c190cmllOiBUcmllW0J5dGVzLCBPcHRpb25hbFtSZWNlaXB0XV0gPSBUcmllKAogICAgICAgIHNlY3VyZWQ9RmFsc2UsIGRlZmF1bHQ9Tm9uZQogICAgKQogICAgYmxvY2tfbG9nczogVHVwbGVbTG9nLCAuLi5dID0gKCkKCiAgICBmb3IgaSwgdHggaW4gZW51bWVyYXRlKHRyYW5zYWN0aW9ucyk6CiAgICAgICAgdHJpZV9zZXQodHJhbnNhY3Rpb25zX3RyaWUsIHJscC5lbmNvZGUoVWludChpKSksIHR4KQoKICAgICAgICBlbnN1cmUodHguZ2FzIDw9IGdhc19hdmFpbGFibGUsIEludmFsaWRCbG9jaykKICAgICAgICBzZW5kZXJfYWRkcmVzcyA9IHJlY292ZXJfc2VuZGVyKHR4KQoKICAgICAgICBlbnYgPSB2bS5FbnZpcm9ubWVudCgKICAgICAgICAgICAgY2FsbGVyPXNlbmRlcl9hZGRyZXNzLAogICAgICAgICAgICBvcmlnaW49c2VuZGVyX2FkZHJlc3MsCiAgICAgICAgICAgIGJsb2NrX2hhc2hlcz1ibG9ja19oYXNoZXMsCiAgICAgICAgICAgIGNvaW5iYXNlPWNvaW5iYXNlLAogICAgICAgICAgICBudW1iZXI9YmxvY2tfbnVtYmVyLAogICAgICAgICAgICBnYXNfbGltaXQ9YmxvY2tfZ2FzX2xpbWl0LAogICAgICAgICAgICBnYXNfcHJpY2U9dHguZ2FzX3ByaWNlLAogICAgICAgICAgICB0aW1lPWJsb2NrX3RpbWUsCiAgICAgICAgICAgIGRpZmZpY3VsdHk9YmxvY2tfZGlmZmljdWx0eSwKICAgICAgICAgICAgc3RhdGU9c3RhdGUsCiAgICAgICAgKQoKICAgICAgICBnYXNfdXNlZCwgbG9ncyA9IHByb2Nlc3NfdHJhbnNhY3Rpb24oZW52LCB0eCkKICAgICAgICBnYXNfYXZhaWxhYmxlIC09IGdhc191c2VkCgogICAgICAgIHRyaWVfc2V0KAogICAgICAgICAgICByZWNlaXB0c190cmllLAogICAgICAgICAgICBybHAuZW5jb2RlKFVpbnQoaSkpLAogICAgICAgICAgICBSZWNlaXB0KAogICAgICAgICAgICAgICAgcG9zdF9zdGF0ZT1zdGF0ZV9yb290KHN0YXRlKSwKICAgICAgICAgICAgICAgIGN1bXVsYXRpdmVfZ2FzX3VzZWQ9KGJsb2NrX2dhc19saW1pdCAtIGdhc19hdmFpbGFibGUpLAogICAgICAgICAgICAgICAgYmxvb209bG9nc19ibG9vbShsb2dzKSwKICAgICAgICAgICAgICAgIGxvZ3M9bG9ncywKICAgICAgICAgICAgKSwKICAgICAgICApCiAgICAgICAgYmxvY2tfbG9ncyArPSBsb2dzCgogICAgcGF5X3Jld2FyZHMoc3RhdGUsIGJsb2NrX251bWJlciwgY29pbmJhc2UsIG9tbWVycykKCiAgICBnYXNfcmVtYWluaW5nID0gYmxvY2tfZ2FzX2xpbWl0IC0gZ2FzX2F2YWlsYWJsZQoKICAgIGJsb2NrX2xvZ3NfYmxvb20gPSBsb2dzX2Jsb29tKGJsb2NrX2xvZ3MpCgogICAgcmV0dXJuICgKICAgICAgICBnYXNfcmVt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aGVhZGVyLm51bWJlciwgSW52YWxpZEJsb2NrKQogICAgICAgIG9tbWVyX3BhcmVudF9oZWFkZXIgPSBjaGFpbi5ibG9ja3NbCiAgICAgICAgICAgIC0oYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcikgLSAxCiAgICAgICAgXS5oZWFkZXIKICAgICAgICB2YWxpZGF0ZV9oZWFkZXIob21tZXIsIG9tbWVyX3BhcmVudF9oZWFkZXIpCgogICAgIyBDaGVjayB0aGF0IHRoZXJlIGNhbiBiZSBvbmx5IGF0IG1vc3QgMiBvbW1lcnMgZm9yIGEgYmxvY2suCiAgICBlbnN1cmUobGVuKG9tbWVycykgPD0gMiwgSW52YWxpZEJsb2NrKQoKICAgIG9tbWVyc19oYXNoZXMgPSBbcmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gb21tZXJzXQogICAgIyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBkdXBsaWNhdGVzIGluIHRoZSBvbW1lcnMgb2YgY3VycmVudCBibG9jawogICAgZW5zdXJlKGxlbihvbW1lcnNfaGFzaGVzKSA9PSBsZW4oc2V0KG9tbWVyc19oYXNoZXMpKSwgSW52YWxpZEJsb2NrKQoKICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tzID0gY2hhaW4uYmxvY2tzWy0oTUFYX09NTUVSX0RFUFRIICsgMSkgOl0KICAgIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzID0gewogICAgICAgIHJscC5ybHBfaGFzaChibG9jay5oZWFkZXIpIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcwogICAgfQogICAgcmVjZW50X29tbWVyc19oYXNoZXM6IFNldFtIYXNoMzJdID0gc2V0KCkKICAgIGZvciBibG9jayBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrczoKICAgICAgICByZWNlbnRfb21tZXJzX2hhc2hlcyA9IHJlY2VudF9vbW1lcnNfaGFzaGVzLnVuaW9uKAogICAgICAgICAgICB7cmxwLnJscF9oYXNoKG9tbWVyKSBmb3Igb21tZXIgaW4gYmxvY2sub21tZXJzfQogICAgICAgICkKCiAgICBmb3Igb21tZXJfaW5kZXgsIG9tbWVyIGluIGVudW1lcmF0ZShvbW1lcnMpOgogICAgICAgIG9tbWVyX2hhc2ggPSBvbW1lcnNfaGFzaGVzW29tbWVyX2luZGV4XQogICAgICAgICMgVGhlIGN1cnJlbnQgYmxvY2sgc2hvdWxkbid0IGJlIHRoZSBvbW1lcgogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoICE9IGJsb2NrX2hhc2gsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSByZWNlbnQgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIHNob3VsZG4ndCBiZSBvbmUgb2YgdGhlIHVuY2xlcyBtZW50aW9uZWQgaW4gdGhlIHJlY2VudAogICAgICAgICMgY2Fub25pY2FsIGJsb2NrcwogICAgICAgIGVuc3VyZShvbW1lcl9oYXNoIG5vdCBpbiByZWNlbnRfb21tZXJzX2hhc2hlcywgSW52YWxpZEJsb2NrKQoKICAgICAgICAjIE9tbWVyIGFnZSB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnQgYmxvY2suIEZvciBleGFtcGxlLCBhbiBhZ2Ugb2YKICAgICAgICAjIDEgaW5kaWNhdGVzIHRoYXQgdGhlIG9tbWVyIGlzIGEgc2libGluZyBvZiBwcmV2aW91cyBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBibG9ja19oZWFkZXIubnVtYmVyIC0gb21tZXIubnVtYmVyCiAgICAgICAgZW5zdXJlKDEgPD0gb21tZXJfYWdlIDw9IE1BWF9PTU1FUl9ERVBUSCwgSW52YWxpZEJsb2NrKQoKICAgICAgICBlbnN1cmUoCiAgICAgICAgICAgIG9tbWVyLnBhcmVudF9oYXNoIGluIHJlY2VudF9jYW5vbmljYWxfYmxvY2tfaGFzaGVzLCBJbnZhbGlkQmxvY2sKICAgICAgICApCiAgICAgICAgZW5zdXJlKG9tbWVyLnBhcmVudF9oYXNoICE9IGJsb2NrX2hlYWRlci5wYXJlbnRfaGFzaCwgSW52YWxpZEJsb2NrKQqUaAddlGg/WAEJAABkZWYgdmFsaWRhdGVfb21tZXJzKAogICAgb21tZXJzOiBUdXBsZVtIZWFkZXIsIC4uLl0sIGJsb2NrX2hlYWRlcjogSGVhZGVyLCBjaGFpbjogQmxvY2tDaGFpbgopIC0+IE5vbmU6CiAgICBibG9ja19oYXNoID0gcmxwLnJscF9oYXNoKGJsb2NrX2hlYWRlcikKCiAgICBlbnN1cmUocmxwLnJscF9oYXNoKG9tbWVycykgPT0gYmxvY2tfaGVhZGVyLm9tbWVyc19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgaWYgbGVuKG9tbWVycykgPT0gMDoKICAgICAgICAjIE5vdGhpbmcgdG8gdmFsaWRhdGUKICAgICAgICByZXR1cm4KCiAgICAjIENoZWNrIHRoYXQgZWFjaCBvbW1lciBzYXRpc2ZpZXMgdGhlIGNvbnN0cmFpbnRzIG9mIGEgaGVhZGVyCiAgICBmb3Igb21tZXIgaW4gb21tZXJzOgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyLm51bWJlciA8IGJsb2NrX2hlYWRlci5udW1iZXIsIEludmFsaWRCbG9jaykKICAgICAgICBvbW1lcl9wYXJlbnRfaGVhZGVyID0gY2hhaW4uYmxvY2tzWwogICAgICAgICAgICAtKGJsb2NrX2hlYWRlci5udW1iZXIgLSBvbW1lci5udW1iZXIpIC0gMQogICAgICAgIF0uaGVhZGVyCiAgICAgICAgdmFsaWRhdGVfaGVhZGVyKG9tbWVyLCBvbW1lcl9wYXJlbnRfaGVhZGVyKQoKICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBjYW4gYmUgb25seSBhdCBtb3N0IDIgb21tZXJzIGZvciBhIGJsb2NrLgogICAgZW5zdXJlKGxlbihvbW1lcnMpIDw9IDIsIEludmFsaWRCbG9jaykKCiAgICBvbW1lcnNfaGFzaGVzID0gW3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIG9tbWVyc10KICAgICMgQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gZHVwbGljYXRlcyBpbiB0aGUgb21tZXJzIG9mIGN1cnJlbnQgYmxvY2sKICAgIGVuc3VyZShsZW4ob21tZXJzX2hhc2hlcykgPT0gbGVuKHNldChvbW1lcnNfaGFzaGVzKSksIEludmFsaWRCbG9jaykKCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrcyA9IGNoYWluLmJsb2Nrc1stKE1BWF9PTU1FUl9ERVBUSCArIDEpIDpdCiAgICByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcyA9IHsKICAgICAgICBybHAucmxwX2hhc2goYmxvY2suaGVhZGVyKSBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3MKICAgIH0KICAgIHJlY2VudF9vbW1lcnNfaGFzaGVzOiBTZXRbSGFzaDMyXSA9IHNldCgpCiAgICBmb3IgYmxvY2sgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja3M6CiAgICAgICAgcmVjZW50X29tbWVyc19oYXNoZXMgPSByZWNlbnRfb21tZXJzX2hhc2hlcy51bmlvbigKICAgICAgICAgICAge3JscC5ybHBfaGFzaChvbW1lcikgZm9yIG9tbWVyIGluIGJsb2NrLm9tbWVyc30KICAgICAgICApCgogICAgZm9yIG9tbWVyX2luZGV4LCBvbW1lciBpbiBlbnVtZXJhdGUob21tZXJzKToKICAgICAgICBvbW1lcl9oYXNoID0gb21tZXJzX2hhc2hlc1tvbW1lcl9pbmRleF0KICAgICAgICAjIFRoZSBjdXJyZW50IGJsb2NrIHNob3VsZG4ndCBiZSB0aGUgb21tZXIKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCAhPSBibG9ja19oYXNoLCBJbnZhbGlkQmxvY2spCgogICAgICAgICMgT21tZXIgc2hvdWxkbid0IGJlIG9uZSBvZiB0aGUgcmVjZW50IGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X2Nhbm9uaWNhbF9ibG9ja19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBzaG91bGRuJ3QgYmUgb25lIG9mIHRoZSB1bmNsZXMgbWVudGlvbmVkIGluIHRoZSByZWNlbnQKICAgICAgICAjIGNhbm9uaWNhbCBibG9ja3MKICAgICAgICBlbnN1cmUob21tZXJfaGFzaCBub3QgaW4gcmVjZW50X29tbWVyc19oYXNoZXMsIEludmFsaWRCbG9jaykKCiAgICAgICAgIyBPbW1lciBhZ2Ugd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50IGJsb2NrLiBGb3IgZXhhbXBsZSwgYW4gYWdlIG9mCiAgICAgICAgIyAxIGluZGljYXRlcyB0aGF0IHRoZSBvbW1lciBpcyBhIHNpYmxpbmcgb2YgcHJldmlvdXMgYmxvY2suCiAgICAgICAgb21tZXJfYWdlID0gYmxvY2tfaGVhZGVyLm51bWJlciAtIG9tbWVyLm51bWJlcgogICAgICAgIGVuc3VyZSgxIDw9IG9tbWVyX2FnZSA8PSBNQVhfT01NRVJfREVQVEgsIEludmFsaWRCbG9jaykKCiAgICAgICAgZW5zdXJlKAogICAgICAgICAgICBvbW1lci5wYXJlbnRfaGFzaCBpbiByZWNlbnRfY2Fub25pY2FsX2Jsb2NrX2hhc2hlcywgSW52YWxpZEJsb2NrCiAgICAgICAgKQogICAgICAgIGVuc3VyZShvbW1lci5wYXJlbnRfaGFzaCAhPSBibG9ja19oZWFkZXIucGFyZW50X2hhc2gsIEludmFsaWRCbG9jaykKlIWUgZR9lChoBWgGaCBqFSAAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3Mvc3JjL2V0aGVyZXVtL2Zyb250aWVyL3NwZWMucHmUjAl4bWw6c3BhY2WUapAEAACMBWZvcmNllImMCGxhbmd1YWdllIwGcHl0aG9ulIwOaGlnaGxpZ2h0X2FyZ3OUfZRq5w0AAEsBc4wHbGluZW5vc5SJdWgcas8NAABoHWgeaB9NkwFoIGqdHgAAdWJlaA59lChoEF2UagoDAABhaBNdlGgVXZSMD3ZhbGlkYXRlX29tbWVyc5RhaBdd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hZSBlH2UKGgFaAZoIGreIAAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGhoaB1oHmgfTZ4BaCBq2yAAAHViaGkpgZR9lChoBViPAgAAVGhlIG1pbmVyIG9mIHRoZSBjYW5vbmljYWwgYmxvY2sgaXMgcmV3YXJkZWQgd2l0aCB0aGUgcHJlZGV0ZXJtaW5lZApibG9jayByZXdhcmQsIGBgQkxPQ0tfUkVXQVJEYGAsIHBsdXMgYSB2YXJpYWJsZSBhd2FyZCBiYXNlZCBvZmYgb2YgdGhlCm51bWJlciBvZiBvbW1lciBibG9ja3MgdGhhdCB3ZXJlIG1pbmVkIGFyb3VuZCB0aGUgc2FtZSB0aW1lLCBhbmQgaW5jbHVkZWQKaW4gdGhlIGNhbm9uaWNhbCBibG9jaydzIGhlYWRlci4gQW4gb21tZXIgYmxvY2sgaXMgYSBibG9jayB0aGF0IHdhc24ndAphZGRlZCB0byB0aGUgY2Fub25pY2FsIGJsb2NrY2hhaW4gYmVjYXVzZSBpdCB3YXNuJ3QgdmFsaWRhdGVkIGFzIGZhc3QgYXMKdGhlIGFjY2VwdGVkIGJsb2NrIGJ1dCB3YXMgbWluZWQgYXQgdGhlIHNhbWUgdGltZS4gQWx0aG91Z2ggbm90IGFsbCBibG9ja3MKdGhhdCBhcmUgbWluZWQgYXJlIGFkZGVkIHRvIHRoZSBjYW5vbmljYWwgY2hhaW4sIG1pbmVycyBhcmUgc3RpbGwgcGFpZCBhCnJld2FyZCBmb3IgdGhlaXIgZWZmb3J0cy4gVGhpcyByZXdhcmQgaXMgY2FsbGVkIGFuIG9tbWVyIHJld2FyZCBhbmQgaXMKY2FsY3VsYXRlZCBiYXNlZCBvbiB0aGUgbnVtYmVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgb21tZXIgYmxvY2sgdGhhdCB0aGV5Cm1pbmVkLpRoB12UKGg/jFJUaGUgbWluZXIgb2YgdGhlIGNhbm9uaWNhbCBibG9jayBpcyByZXdhcmRlZCB3aXRoIHRoZSBwcmVkZXRlcm1pbmVkCmJsb2NrIHJld2FyZCwglIWUgZR9lChoBWgGaCBq7CAAAGghaANoHWhEaB9LAHViagYFAAApgZR9lChoBYwQYGBCTE9DS19S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AABkZWYgcGF5X3Jld2FyZHMoCiAgICBzdGF0ZTogU3RhdGUsCiAgICBibG9ja19udW1iZXI6IFVpbnQsCiAgICBjb2luYmFzZTogQWRkcmVzcywKICAgIG9tbWVyczogVHVwbGVbSGVhZGVyLCAuLi5dLAopIC0+IE5vbmU6CiAgICBtaW5lcl9yZXdhcmQgPSBCTE9DS19SRVdBUkQgKyAobGVuKG9tbWVycykgKiAoQkxPQ0tfUkVXQVJEIC8vIDMyKSkKICAgIGNyZWF0ZV9ldGhlcihzdGF0ZSwgY29pbmJhc2UsIG1pbmVyX3Jld2FyZCkKCiAgICBmb3Igb21tZXIgaW4gb21tZXJzOgogICAgICAgICMgT21tZXIgYWdlIHdpdGggcmVzcGVjdCB0byB0aGUgY3VycmVudCBibG9jay4KICAgICAgICBvbW1lcl9hZ2UgPSBVMjU2KGJsb2NrX251bWJlciAtIG9tbWVyLm51bWJlcikKICAgICAgICBvbW1lcl9taW5lcl9yZXdhcmQgPSAoKDggLSBvbW1lcl9hZ2UpICogQkxPQ0tfUkVXQVJEKSAvLyA4CiAgICAgICAgY3JlYXRlX2V0aGVyKHN0YXRlLCBvbW1lci5jb2luYmFzZSwgb21tZXJfbWluZXJfcmV3YXJkKQqUhZSBlH2UKGgFaAZoIGrvIQAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllIxPL2hvbWUvcnVubmVyL3dvcmsvZXhlY3V0aW9uLXNwZWNzL2V4ZWN1dGlvbi1zcGVjcy9zcmMvZXRoZXJldW0vZnJvbnRpZXIvc3BlYy5weZSMCXhtbDpzcGFjZZRqkAQAAIwFZm9yY2WUiYwIbGFuZ3VhZ2WUjAZweXRob26UjA5oaWdobGlnaHRfYXJnc5R9lGrnDQAASwFzjAdsaW5lbm9zlIl1aBxqzw0AAGgdaB5oH02zAWggajMgAAB1YmVoDn2UKGgQXZRqLAMAAGFoE12UaBVdlIwLcGF5X3Jld2FyZHOUYWgXXZRoGV2UdWgcaDNoHWgeaB9NmAFoIGpaDQAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjBNwcm9jZXNzX3RyYW5zYWN0aW9ulGgHXZRoP4wTcHJvY2Vzc190cmFuc2FjdGlvbpSFlIGUfZQoaAVoBmggahAiAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaDhoHWgeaB9NuAFoIGoNIgAAdWJoJCmBlH2UKGgFaAZoB12UaA59lChoEF2UaBNdlGgVXZRoF12UaBldlIwHZW50cmllc5RdlHVoHGgjaB1OaB9OaCBqDSIAAHViaowNAAApgZR9lChoBWgGaAddlChqkQ0AACmBlH2UKGgFjBxwcm9jZXNzX3RyYW5zYWN0aW9uKGVudiwgdHgplGgHXZQoapcNAAApgZR9lChoBYwTcHJvY2Vzc190cmFuc2FjdGlvbpRoB12UaD+ME3Byb2Nlc3NfdHJhbnNhY3Rpb26UhZSBlH2UKGgFaAZoIGowIgAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlChqog0AAGqjDQAAaqQNAABqpQ0AAGVoFV2UaBddlGgZXZSMCXhtbDpzcGFjZZRqkAQAAHVoHGqWDQAAaB1oHmgfTmggaiwiAAB1YmqGEQAAKYGUfZQoaAWMB2VudiwgdHiUaAddlChqjBEAACmBlH2UKGgFjANlbnaUaAddlGojCwAAKYGUfZQoaAVoBmgHXZRoP4wDZW52lIWUgZR9lChoBWgGaCBqRyIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqmxEAAGFoFV2UaBddlGgZXZR1aBxqIgsAAGgdTmgfTmggakMiAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUapAEAAB1aBxqixEAAGgdTmgfTmggaj8iAAB1YmqMEQAAKYGUfZQoaAWMAnR4lGgHXZRqIwsAACmBlH2UKGgFaAZoB12UaD+MAnR4lIWUgZR9lChoBWgGaCBqXyIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRqmxEAAGFoFV2UaBddlGgZXZR1aBxqIgsAAGgdTmgfTmggalsiAAB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUapAEAAB1aBxqixEAAGgdTmgfTmggaj8iAAB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAl4bWw6c3BhY2WUapAEAAB1aBxqhREAAGgdaB5oH05oIGosIgAAdWJlaA59lChoEF2UjCpldGhlcmV1bS5mcm9udGllci5zcGVjLnByb2Nlc3NfdHJhbnNhY3Rpb26UYWgTXZQoaq0NAABqrg0AAIwCcHmUarANAABqsQ0AAGVoFV2UaBddlGgZXZSMBm1vZHVsZZRqtg0AAIwFY2xhc3OUaAaMCGZ1bGxuYW1llGoyIgAAdWgcapANAABoHWgeaB9NuwFoIGopIgAAdWJqug0AACmBlH2UKGgFaAZoB12UKGhpKYGUfZQoaAWMN0V4ZWN1dGUgYSB0cmFuc2FjdGlvbiBhZ2FpbnN0IHRoZSBwcm92aWRlZCBlbnZpcm9ubWVudC6UaAddlGg/jDdFeGVjdXRlIGEgdHJhbnNhY3Rpb24gYWdhaW5zdCB0aGUgcHJvdmlkZWQgZW52aXJvbm1lbnQulIWUgZR9lChoBWgGaCBqiCIAAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZR1aBxoaGgdaB5oH02+AWggaoUiAAB1YmhpKYGUfZQoaAVYWwEAAFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSBhY3Rpb25zIG5lZWRlZCB0byBleGVjdXRlIGEgdHJhbnNhY3Rpb24uCkl0IGRlY3JlbWVudHMgdGhlIHNlbmRlcidzIGFjY291bnQgYWZ0ZXIgY2FsY3VsYXRpbmcgdGhlIGdhcyBmZWUgYW5kCnJlZnVuZHMgdGhlbSB0aGUgcHJvcGVyIGFtb3VudCBhZnRlciBleGVjdXRpb24uIENhbGxpbmcgY29udHJhY3RzLApkZXBsb3lpbmcgY29kZSwgYW5kIGluY3JlbWVudGluZyBub25jZXMgYXJlIGFsbCBleGFtcGxlcyBvZiBhY3Rpb25zIHRoYXQKaGFwcGVuIHdpdGhpbiB0aGlzIGZ1bmN0aW9uIG9yIGZyb20gYSBjYWxsIG1hZGUgd2l0aGluIHRoaXMgZnVuY3Rpb24ulGgHXZRoP1hdAQAAVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIGFjdGlvbnMgbmVlZGVkIHRvIGV4ZWN1dGUgYSB0cmFuc2FjdGlvbi4KSXQgZGVjcmVtZW50cyB0aGUgc2VuZGVy4oCZcyBh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HWgeaB9OaCBqKSIAAHViZWgOfZQoaBBdlGgTXZQoan4iAACMCGZ1bmN0aW9ulGVoFV2UaBddlGgZXZSMBmRvbWFpbpRqfiIAAIwHb2JqdHlwZZRq3yMAAIwIZGVzY3R5cGWUat8jAACMB25vaW5kZXiUiXVoHGqLDQAAaB1OaB9OaCBqDSIAAHViatANAAApgZR9lChoBVjABgAAZGVmIHByb2Nlc3NfdHJhbnNhY3Rpb24oCiAgICBlbnY6IHZtLkVudmlyb25tZW50LCB0eDogVHJhbnNhY3Rpb24KKSAtPiBUdXBsZVtVMjU2LCBUdXBsZVtMb2csIC4uLl1dOgogICAgZW5zdXJlKHZhbGlkYXRlX3RyYW5zYWN0aW9uKHR4KSwgSW52YWxpZEJsb2NrKQoKICAgIHNlbmRlciA9IGVudi5vcmlnaW4KICAgIHNlbmRlcl9hY2NvdW50ID0gZ2V0X2FjY291bnQoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBnYXNfZmVlID0gdHguZ2FzICogdHguZ2FzX3ByaWNlCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQubm9uY2UgPT0gdHgubm9uY2UsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5iYWxhbmNlID49IGdhc19mZWUgKyB0eC52YWx1ZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmNvZGUgPT0gYnl0ZWFycmF5KCksIEludmFsaWRCbG9jaykKCiAgICBnYXMgPSB0eC5nYXMgLSBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpCiAgICBpbmNyZW1lbnRfbm9uY2UoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlID0gc2VuZGVyX2FjY291bnQuYmFsYW5jZSAtIGdhc19mZWUKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUpCgogICAgbWVzc2FnZSA9IHByZXBhcmVfbWVzc2FnZSgKICAgICAgICBzZW5kZXIsCiAgICAgICAgdHgudG8sCiAgICAgICAgdHgudmFsdWUsCiAgICAgICAgdHguZGF0YSwKICAgICAgICBnYXMsCiAgICAgICAgZW52LAogICAgKQoKICAgIG91dHB1dCA9IHByb2Nlc3NfbWVzc2FnZV9jYWxsKG1lc3NhZ2UsIGVudikKCiAgICBnYXNfdXNlZCA9IHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdAogICAgZ2FzX3JlZnVuZCA9IG1pbihnYXNfdXNlZCAvLyAyLCBvdXRwdXQucmVmdW5kX2NvdW50ZXIpCiAgICBnYXNfcmVmdW5kX2Ftb3VudCA9IChvdXRwdXQuZ2FzX2xlZnQgKyBnYXNfcmVmdW5kKSAqIHR4Lmdhc19wcmljZQogICAgdHJhbnNhY3Rpb25fZmVlID0gKHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdCAtIGdhc19yZWZ1bmQpICogdHguZ2FzX3ByaWNlCiAgICB0b3RhbF9nYXNfdXNlZCA9IGdhc191c2VkIC0gZ2FzX3JlZnVuZAoKICAgICMgcmVmdW5kIGdhcwogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKS5iYWxhbmNlICsgZ2FzX3JlZnVuZF9hbW91bnQKICAgICkKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCkKCiAgICAjIHRyYW5zZmVyIG1pbmVyIGZlZXMKICAgIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkuYmFsYW5jZSArIHRyYW5zYWN0aW9uX2ZlZQogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZSgKICAgICAgICBlbnYuc3RhdGUsIGVudi5jb2luYmFzZSwgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlCiAgICApCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LmFjY291bnRzX3RvX2RlbGV0ZToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIHJldHVybiB0b3RhbF9nYXNfdXNlZCwgb3V0cHV0LmxvZ3MKlGgHXZRoP1jABgAAZGVmIHByb2Nlc3NfdHJhbnNhY3Rpb24oCiAgICBlbnY6IHZtLkVudmlyb25tZW50LCB0eDogVHJhbnNhY3Rpb24KKSAtPiBUdXBsZVtVMjU2LCBUdXBsZVtMb2csIC4uLl1dOgogICAgZW5zdXJlKHZhbGlkYXRlX3RyYW5zYWN0aW9uKHR4KSwgSW52YWxpZEJsb2NrKQoKICAgIHNlbmRlciA9IGVudi5vcmlnaW4KICAgIHNlbmRlcl9hY2NvdW50ID0gZ2V0X2FjY291bnQoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBnYXNfZmVlID0gdHguZ2FzICogdHguZ2FzX3ByaWNlCiAgICBlbnN1cmUoc2VuZGVyX2FjY291bnQubm9uY2UgPT0gdHgubm9uY2UsIEludmFsaWRCbG9jaykKICAgIGVuc3VyZShzZW5kZXJfYWNjb3VudC5iYWxhbmNlID49IGdhc19mZWUgKyB0eC52YWx1ZSwgSW52YWxpZEJsb2NrKQogICAgZW5zdXJlKHNlbmRlcl9hY2NvdW50LmNvZGUgPT0gYnl0ZWFycmF5KCksIEludmFsaWRCbG9jaykKCiAgICBnYXMgPSB0eC5nYXMgLSBjYWxjdWxhdGVfaW50cmluc2ljX2Nvc3QodHgpCiAgICBpbmNyZW1lbnRfbm9uY2UoZW52LnN0YXRlLCBzZW5kZXIpCiAgICBzZW5kZXJfYmFsYW5jZV9hZnRlcl9nYXNfZmVlID0gc2VuZGVyX2FjY291bnQuYmFsYW5jZSAtIGdhc19mZWUKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX2dhc19mZWUpCgogICAgbWVzc2FnZSA9IHByZXBhcmVfbWVzc2FnZSgKICAgICAgICBzZW5kZXIsCiAgICAgICAgdHgudG8sCiAgICAgICAgdHgudmFsdWUsCiAgICAgICAgdHguZGF0YSwKICAgICAgICBnYXMsCiAgICAgICAgZW52LAogICAgKQoKICAgIG91dHB1dCA9IHByb2Nlc3NfbWVzc2FnZV9jYWxsKG1lc3NhZ2UsIGVudikKCiAgICBnYXNfdXNlZCA9IHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdAogICAgZ2FzX3JlZnVuZCA9IG1pbihnYXNfdXNlZCAvLyAyLCBvdXRwdXQucmVmdW5kX2NvdW50ZXIpCiAgICBnYXNfcmVmdW5kX2Ftb3VudCA9IChvdXRwdXQuZ2FzX2xlZnQgKyBnYXNfcmVmdW5kKSAqIHR4Lmdhc19wcmljZQogICAgdHJhbnNhY3Rpb25fZmVlID0gKHR4LmdhcyAtIG91dHB1dC5nYXNfbGVmdCAtIGdhc19yZWZ1bmQpICogdHguZ2FzX3ByaWNlCiAgICB0b3RhbF9nYXNfdXNlZCA9IGdhc191c2VkIC0gZ2FzX3JlZnVuZAoKICAgICMgcmVmdW5kIGdhcwogICAgc2VuZGVyX2JhbGFuY2VfYWZ0ZXJfcmVmdW5kID0gKAogICAgICAgIGdldF9hY2NvdW50KGVudi5zdGF0ZSwgc2VuZGVyKS5iYWxhbmNlICsgZ2FzX3JlZnVuZF9hbW91bnQKICAgICkKICAgIHNldF9hY2NvdW50X2JhbGFuY2UoZW52LnN0YXRlLCBzZW5kZXIsIHNlbmRlcl9iYWxhbmNlX2FmdGVyX3JlZnVuZCkKCiAgICAjIHRyYW5zZmVyIG1pbmVyIGZlZXMKICAgIGNvaW5iYXNlX2JhbGFuY2VfYWZ0ZXJfbWluaW5nX2ZlZSA9ICgKICAgICAgICBnZXRfYWNjb3VudChlbnYuc3RhdGUsIGVudi5jb2luYmFzZSkuYmFsYW5jZSArIHRyYW5zYWN0aW9uX2ZlZQogICAgKQogICAgc2V0X2FjY291bnRfYmFsYW5jZSgKICAgICAgICBlbnYuc3RhdGUsIGVudi5jb2luYmFzZSwgY29pbmJhc2VfYmFsYW5jZV9hZnRlcl9taW5pbmdfZmVlCiAgICApCgogICAgZm9yIGFkZHJlc3MgaW4gb3V0cHV0LmFjY291bnRzX3RvX2RlbGV0ZToKICAgICAgICBkZXN0cm95X2FjY291bnQoZW52LnN0YXRlLCBhZGRyZXNzKQoKICAgIHJldHVybiB0b3Rh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YW1llGr7JQAAdWgcapANAABoHWgeaB9N+gFoIGryJQAAdWJqug0AACmBlH2UKGgFaAZoB12UKGhpKYGUfZQoaAWMP0NhbGN1bGF0ZXMgdGhlIGdhcyB0aGF0IGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBpcyBzdGFydGVkLpRoB12UaD+MP0NhbGN1bGF0ZXMgdGhlIGdhcyB0aGF0IGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBpcyBzdGFydGVkLpSFlIGUfZQoaAVoBmggajkmAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9N/QFoIGo2JgAAdWJoaSmBlH2UKGgFWBECAABUaGUgaW50cmluc2ljIGNvc3Qgb2YgdGhlIHRyYW5zYWN0aW9uIGlzIGNoYXJnZWQgYmVmb3JlIGV4ZWN1dGlvbiBoYXMKYmVndW4uIEZ1bmN0aW9ucy9vcGVyYXRpb25zIGluIHRoZSBFVk0gY29zdCBtb25leSB0byBleGVjdXRlIHNvIHRoaXMKaW50cmluc2ljIGNvc3QgaXMgZm9yIHRoZSBvcGVyYXRpb25zIHRoYXQgbmVlZCB0byBiZSBwYWlkIGZvciBhcyBwYXJ0IG9mCnRoZSB0cmFuc2FjdGlvbi4gRGF0YSB0cmFuc2ZlciwgZm9yIGV4YW1wbGUsIGlzIHBhcnQgb2YgdGhpcyBpbnRyaW5zaWMKY29zdC4gSXQgY29zdHMgZXRoZXIgdG8gc2VuZCBkYXRhIG92ZXIgdGhlIHdpcmUgYW5kIHRoYXQgZXRoZXIgaXMKYWNjb3VudGVkIGZvciBpbiB0aGUgaW50cmluc2ljIGNvc3QgY2FsY3VsYXRlZCBpbiB0aGlzIGZ1bmN0aW9uLiBUaGlzCmludHJpbnNpYyBjb3N0IG11c3QgYmUgY2FsY3VsYXRlZCBhbmQgcGFpZCBmb3IgYmVmb3JlIGV4ZWN1dGlvbiBpbiBvcmRlcgpmb3IgYWxsIG9wZXJhdGlvbnMgdG8gYmUgaW1wbGVtZW50ZWQulGgHXZRoP1gRAgAAVGhlIGludHJpbnNpYyBjb3N0IG9mIHRoZSB0cmFuc2FjdGlvbiBpcyBjaGFyZ2VkIGJlZm9yZSBleGVj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ICgKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHguZ2FzX3ByaWNlLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpRoB12UaD9YHQEAAGRlZiBzaWduaW5nX2hhc2godHg6IFRyYW5zYWN0aW9uKSAtPiBIYXNoMzI6CiAgICByZXR1cm4ga2VjY2FrMjU2KAogICAgICAgIHJscC5lbmNvZGUoCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgIHR4Lm5vbmNlLAogICAgICAgICAgICAgICAgdHguZ2FzX3ByaWNlLAogICAgICAgICAgICAgICAgdHguZ2FzLAogICAgICAgICAgICAgICAgdHgudG8sCiAgICAgICAgICAgICAgICB0eC52YWx1ZSwKICAgICAgICAgICAgICAgIHR4LmRhdGEsCiAgICAgICAgICAgICkKICAgICAgICApCiAgICApCpSFlIGUfZQoaAVoBmggan4qAABoIWgDaB1oRGgfSwB1YmFoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UjAZzb3VyY2WUjE8vaG9tZS9ydW5uZXIvd29yay9leGVjdXRpb24tc3BlY3MvZXhlY3V0aW9uLXNwZWNzL3NyYy9ldGhlcmV1bS9mcm9udGllci9zcGVjLnB5lIwJeG1sOnNwYWNllGqQBAAAjAVmb3JjZZSJjAhsYW5ndWFnZZSMBnB5dGhvbpSMDmhpZ2hsaWdodF9hcmdzlH2UaucNAABLAXOMB2xpbmVub3OUiXVoHGrPDQAAaB1oHmgfTUQCaCBqMikAAHViZWgOfZQoaBBdlGrWAwAAYWgTXZRoFV2UjAxzaWduaW5nX2hhc2iUYWgXXZRoGV2UdWgcaDNoHWgeaB9NMAJoIGpaDQAAaCFoA3ViaDQpgZR9lChoBWgGaAddlChoOSmBlH2UKGgFjBNjb21wdXRlX2hlYWRlcl9oYXNolGgHXZRoP4wTY29tcHV0ZV9oZWFkZXJfaGFzaJSFlIGU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YGCUaAddlGg/jAlrZWNjYWsyNTaUhZSBlH2UKGgFaAZoIGofKwAAaCFoA2gdaERoH0sAdWJhaA59lChoEF2UaBNdlGgVXZRoF12UaBldlHVoHGoFBQAAaB1OaB9OaCBqGysAAHViaD9YIwEAACBpcyBhIGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgYSAyNTYgYml0IGhhc2ggb2YgYW55IGlucHV0LgpJdCBhbHNvIHRha2VzIGluIGFueSBudW1iZXIgb2YgYnl0ZXMgYXMgYW4gaW5wdXQgYW5kIHByb2R1Y2VzIGEgc2luZ2xlCmhhc2ggZm9yIHRoZW0uIEEgaGFzaCBpcyBhIGNvbXBsZXRlbHkgdW5pcXVlIG91dHB1dCBmb3IgYSBzaW5nbGUgaW5wdXQuClNvIGFuIGlucHV0IGNvcnJlc3BvbmRzIHRvIG9uZSB1bmlxdWUgaGFzaCB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5CnRoZSBpbnB1dCBleGFjdGx5LpSFlIGUfZQoaAVoBmggahsrAABoIWgDaB1oRGgfSwB1YmVoDn2UKGgQXZRoE12UaBVdlGgXXZRoGV2UdWgcaGhoHWgeaB9NVAJoIGr8KgAAdWJoaSmBlH2UKGgFWCgCAABQcmlvciB0byB1c2luZyB0aGUgYGBrZWNjYWsyNTZgYCBoYXNoIGZ1bmN0aW9uLCB0aGUgaGVhZGVyIG11c3QgYmUKZW5jb2RlZCB1c2luZyB0aGUgUmVjdXJzaXZlLUxlbmd0aCBQcmVmaXguIFNlZSA6cmVmOmBybHBgLgpSTFAgZW5jb2RpbmcgdGhlIGhlYWRlciBjb252ZXJ0cyBpdCBpbnRvIGEgc3BhY2UtZWZmaWNpZW50IGZvcm1hdCB0aGF0CmFsbG93cyBmb3IgZWFzeSB0cmFuc2ZlciBvZiBkYXRhIGJldHdlZW4gbm9kZXMuIFRoZSBwdXJwb3NlIG9mIFJMUCBpcyB0bwplbmNvZGUgYXJiaXRyYXJpbHkgbmVzdGVkIGFycmF5cyBvZiBiaW5hcnkgZGF0YSwgYW5kIFJMUCBpcyB0aGUgcHJpbWFyeQplbmNvZGluZyBtZXRob2QgdXNlZCB0byBzZXJpYWxpemUgb2JqZWN0cyBpbiBFdGhlcmV1bSdzIGV4ZWN1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b2luZGV4lIl1aBxqiw0AAGgdTmgfTmggamEsAAB1YmrQDQAAKYGUfZQoaAVYgQEAAGRlZiBjaGVja19nYXNfbGltaXQoZ2FzX2xpbWl0OiBVaW50LCBwYXJlbnRfZ2FzX2xpbWl0OiBVaW50KSAtPiBib29sOgogICAgbWF4X2FkanVzdG1lbnRfZGVsdGEgPSBwYXJlbnRfZ2FzX2xpbWl0IC8vIEdBU19MSU1JVF9BREpVU1RNRU5UX0ZBQ1RPUgogICAgaWYgZ2FzX2xpbWl0ID49IHBhcmVudF9nYXNfbGltaXQgKyBtYXhfYWRqdXN0bWVudF9kZWx0YToKICAgICAgICByZXR1cm4gRmFsc2UKICAgIGlmIGdhc19saW1pdCA8PSBwYXJlbnRfZ2FzX2xpbWl0IC0gbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPCBHQVNfTElNSVRfTUlOSU1VTToKICAgICAgICByZXR1cm4gRmFsc2UKCiAgICByZXR1cm4gVHJ1ZQqUaAddlGg/WIEBAABkZWYgY2hlY2tfZ2FzX2xpbWl0KGdhc19saW1pdDogVWludCwgcGFyZW50X2dhc19saW1pdDogVWludCkgLT4gYm9vbDoKICAgIG1heF9hZGp1c3RtZW50X2RlbHRhID0gcGFyZW50X2dhc19saW1pdCAvLyBHQVNfTElNSVRfQURKVVNUTUVOVF9GQUNUT1IKICAgIGlmIGdhc19saW1pdCA+PSBwYXJlbnRfZ2FzX2xpbWl0ICsgbWF4X2FkanVzdG1lbnRfZGVsdGE6CiAgICAgICAgcmV0dXJuIEZhbHNlCiAgICBpZiBnYXNfbGltaXQgPD0gcGFyZW50X2dhc19saW1pdCAtIG1heF9hZGp1c3RtZW50X2RlbHRhOgogICAgICAgIHJldHVybiBGYWxzZQogICAgaWYgZ2FzX2xpbWl0IDwgR0FTX0xJTUlUX01JTklNVU06CiAgICAgICAgcmV0dXJuIEZhbHNlCgogICAgcmV0dXJuIFRydWUKlIWUgZR9lChoBWgGaCBqay4AAGghaANoHWhEaB9LAHViYWgOfZQoaBBdlGgTXZRoFV2UaBddlGgZXZSMBnNvdXJjZZSM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BAAAZGVmIGNhbGN1bGF0ZV9ibG9ja19kaWZmaWN1bHR5KAogICAgYmxvY2tfbnVtYmVyOiBVaW50LAogICAgYmxvY2tfdGltZXN0YW1wOiBVMjU2LAogICAgcGFyZW50X3RpbWVzdGFtcDogVTI1NiwKICAgIHBhcmVudF9kaWZmaWN1bHR5OiBVaW50LAopIC0+IFVpbnQ6CiAgICBtYXhfYWRqdXN0bWVudF9kZWx0YSA9IHBhcmVudF9kaWZmaWN1bHR5IC8vIFVpbnQoMjA0OCkKICAgIGlmIGJsb2NrX3RpbWVzdGFtcCA8IHBhcmVudF90aW1lc3RhbXAgKyAxMzoKICAgICAgICBkaWZmaWN1bHR5ID0gcGFyZW50X2RpZmZpY3VsdHkgKyBtYXhfYWRqdXN0bWVudF9kZWx0YQogICAgZWxzZTogICMgYmxvY2tfdGltZXN0YW1wID49IHBhcmVudF90aW1lc3RhbXAgKyAxMwogICAgICAgIGRpZmZpY3VsdHkgPSBwYXJlbnRfZGlmZmljdWx0eSAtIG1heF9hZGp1c3RtZW50X2RlbHRhCgogICAgIyBIaXN0b3JpY2FsIE5vdGU6IFRoZSBkaWZmaWN1bHR5IGJvbWIgd2FzIG5vdCBwcmVzZW50IGluIEV0aGVyZXVtIGF0IHRoZQogICAgIyBzdGFydCBvZiBGcm9udGllciwgYnV0IHdhcyBhZGRlZCBzaG9ydGx5IGFmdGVyIGxhdW5jaC4gSG93ZXZlciBzaW5jZSB0aGUKICAgICMgYm9tYiBoYXMgbm8gZWZmZWN0IHByaW9yIHRvIGJsb2NrIDIwMDAwMCB3ZSBwcmV0ZW5kIGl0IGV4aXN0ZWQgZnJvbQogICAgIyBnZW5lc2lzLgogICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2V0aGVyZXVtL2dvLWV0aGVyZXVtL3B1bGwvMTU4OAogICAgbnVtX2JvbWJfcGVyaW9kcyA9IChpbnQoYmxvY2tfbnVtYmVyKSAvLyAxMDAwMDApIC0gMgogICAgaWYgbnVtX2JvbWJfcGVyaW9kcyA+PSAwOgogICAgICAgIGRpZmZpY3VsdHkgKz0gMioqbnVtX2JvbWJfcGVyaW9kcwoKICAgICMgU29tZSBjbGllbnRzIHJhaXNl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lChoEF2UaBNdlGgVXZRoF12UaBldlIwGc291cmNllGhEdWgcaAGMDmN1cnJlbnRfc291cmNllGhEjAxjdXJyZW50X2xpbmWUSwCMCHNldHRpbmdzlIwRZG9jdXRpbHMuZnJvbnRlbmSUjAZWYWx1ZXOUk5QpgZR9lCiMDHJlcG9ydF9sZXZlbJRLAowKaGFsdF9sZXZlbJRLBIwRZXhpdF9zdGF0dXNfbGV2ZWyUSwWMBWRlYnVnlE6MDndhcm5pbmdfc3RyZWFtlE6MCXRyYWNlYmFja5ROjA9vdXRwdXRfZW5jb2RpbmeUjAV1dGYtOJSMHW91dHB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwReG1sY2hhcnJlZnJlcGxhY2WUjA5lcnJvcl9lbmNvZGluZ5SMBXV0Zi04lIwcZXJyb3JfZW5jb2RpbmdfZXJyb3JfaGFuZGxlcpSMEGJhY2tzbGFzaHJlcGxhY2WUjBNyZWNvcmRfZGVwZW5kZW5jaWVzlIwOZG9jdXRpbHMudXRpbHOUjA5EZXBlbmRlbmN5TGlzdJSTlCmBlH2UKIwEbGlzdJRdlIwEZmlsZZROdWKMBmNvbmZpZ5ROjA1kdW1wX3NldHRpbmdzlE6MDmR1bXBfaW50ZXJuYWxzlE6MD2R1bXBfdHJhbnNmb3Jtc5ROjA9kdW1wX3BzZXVkb194bWyUTowQZXhwb3NlX2ludGVybmFsc5ROjA5zdHJpY3RfdmlzaXRvcpROjA9fZGlzYWJsZV9jb25maWeUTowHX3NvdXJjZZROjAxfZGVzdGluYXRpb26UjDBkb2MvZGlmZnMvZnJvbnRpZXJfaG9tZXN0ZWFkL3NwZWMvaW5kZXgucGlja2xlNjSUjA1fY29uZmlnX2ZpbGVzlF2UjBFsaW5lX2xlbmd0aF9saW1pdJRNECeMCXRhYl93aWR0aJRLCIwQc3ludGF4X2hpZ2hsaWdodJSMBGxvbmeUjAxzbWFydF9xdW90ZXOUiYwTc21hcnRxdW90ZXNfbG9jYWxlc5ROjB1jaGFyYWN0ZXJfbGV2ZWxfaW5saW5lX21hcmt1cJSJjAZ3cml0ZXKUjAN4bWyUjBljb21wYXJlX3NlY3Rpb25zX2J5X25hbWVzlEsBjAxkdW1wX3JzdGRpZmaUTowFX2JvdGiUfZQoaDhOjAlnZW5lcmF0b3KUTowJZGF0ZXN0YW1wlE6MC3NvdXJjZV9saW5rlE6MCnNvdXJjZV91cmyUTowNdG9jX2JhY2tsaW5rc5Rq+QQAAIwSZm9vdG5vdGVfYmFja2xpbmtzlEsBjA1zZWN0bnVtX3hmb3JtlEsBjA5kb2N0aXRsZV94Zm9ybZRLAYwNZG9jaW5mb194Zm9ybZRLAYwSc2VjdHN1YnRpdGxlX3hmb3JtlEsAjA5zdHJpcF9jb21tZW50c5ROjA5pbnB1dF9lbmNvZGluZ5ROjBxpbnB1dF9lbmNvZGluZ19lcnJvcl9oYW5kbGVylIwGc3RyaWN0lIwNbGFuZ3VhZ2VfY29kZZSMAmVulIwOcGVwX3JlZmVyZW5jZXOUTowMcGVwX2Jhc2VfdXJslIwfaHR0cDovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL5SMFXBlcF9maWxlX3VybF90ZW1wbGF0ZZSMCHBlcC0lMDRklIwOcmZjX3JlZmVyZW5jZXOUTowMcmZjX2Jhc2VfdXJslIwbaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvlIwddHJpbV9mb290bm90ZV9yZWZlcmVuY2Vfc3BhY2WUTowWZmlsZV9pbnNlcnRpb25fZW5hYmxlZJRLAYwLcmF3X2VuYWJsZWSUSwGMDmF1dG9faWRfcHJlZml4lIwCaWSUjAlpZF9wcmVmaXiUaAaMG3N0cmlwX2VsZW1lbnRzX3dpdGhfY2xhc3Nlc5ROjA1zdHJpcF9jbGFzc2VzlE51jARib3RolH2UjApfb3B0aW9uc1RvlIwFX2JvdGiUjAtfb2xkX3NvdXJjZZSMTy9ob21lL3J1bm5lci93b3JrL2V4ZWN1dGlvbi1zcGVjcy9leGVjdXRpb24tc3BlY3MvLnRveC9kb2NzL3N0YWdlMF9vdXQvYXV0b2FwaS+UjAtfbmV3X3NvdXJjZZSMCWRvYy9kaWZmc5RqzDMAAGrNMwAAjBZpZ25vcmVfaW5fc2VjdGlvbl9uYW1llF2UKIwIZnJvbnRpZXKUjAlob21lc3RlYWSUZXVijAhyZXBvcnRlcpROjBBpbmRpcmVjdF90YXJnZXRzlF2UjBFzdWJzdGl0dXRpb25fZGVmc5R9lIwSc3Vic3RpdHV0aW9uX25hbWVzlH2UjAhyZWZuYW1lc5R9lIwGcmVmaWRzlH2UjAduYW1laWRzlH2UjAluYW1ldHlwZXOUfZRoEH2UjA1mb290bm90ZV9yZWZzlH2UjA1jaXRhdGlvbl9yZWZzlH2UjA1hdXRvZm9vdG5vdGVzlF2UjBFhdXRvZm9vdG5vdGVfcmVmc5RdlIwQc3ltYm9sX2Zvb3Rub3Rlc5RdlIwUc3ltYm9sX2Zvb3Rub3RlX3JlZnOUXZSMCWZvb3Rub3Rlc5RdlIwJY2l0YXRpb25zlF2UjBJhdXRvZm9vdG5vdGVfc3RhcnSUSwGMFXN5bWJvbF9mb290bm90ZV9zdGFydJRLAIwKaWRfY291bnRlcpSMC2NvbGxlY3Rpb25zlIwHQ291bnRlcpSTlH2UhZRSlIwOcGFyc2VfbWVzc2FnZXOUXZSMEnRyYW5zZm9ybV9tZXNzYWdlc5RdlIwLdHJhbnNmb3JtZXKUTowLaW5jbHVkZV9sb2eUXZSMCmRlY29yYXRpb26UTmghaAN1Yi4=