MTk5OS0xMi0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoVkZfTk9STUFMX1ZBTFVFKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChzdHJ1Y3QgYmFzZV9pbmZvKTogUmVtb3ZlIHZmaWVsZCwgdmZpZWxkcywgYW5kIHJ0dGkuCgkoc2V0X3ByaW1hcnlfYmFzZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gLi4uCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogLi4uIGhlcmUuICBSZW5hbWUgdG8gLi4uCgkoZGV0ZXJtaW5lX3ByaW1hcnlfYmFzZSk6IC4uLiB0aGlzLiAgU2ltcGxpZnkuCgkoY3JlYXRlX3Z0YWJsZV9wdHIpOiBUd2VhayBhY2NvcmRpbmdseS4KCShmaW5pc2hfc3RydWN0XzEpOiBTaW1wbGlmeS4KCQoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9WQkFTRUNMQVNTRVMpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCShDTEFTU1RZUEVfTl9CQVNFQ0xBU1NFUyk6IExpa2V3aXNlLgoJKEJJTkZPX0ZPUl9WQkFTRSk6IE5ldyBtYWNyby4KCShnZXRfdmJhc2VfdHlwZXMpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wYXRoKTogVXNlIEJJTkZPX0ZPUl9WQkFTRS4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IExpa2V3aXNlLgoJKGZpbmlzaF92dGJscyk6IExpa2V3aXNlLgoJKGdldF9jbGFzc19vZmZzZXRfMSk6IExpa2V3aXNlLgoJKG1vZGlmeV9hbGxfaW5kaXJlY3RfdnRhYmxlcyk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoeHJlZl9iYXNldHlwZXMpOiBEb24ndCBzZXQgQ0xBU1NUWVBFX1ZCQVNFQ0xBU1NFUyBoZXJlLgoJKiBpbml0LmMgKHNvcnRfYmFzZV9pbml0KTogVXNlIEJJTkZPX0ZPUl9WQkFTRS4KCShleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGdldF9iYXNlX2Rpc3RhbmNlKTogTGlrZXdpc2UuCgkobG9va3VwX2ZpZWxkX3F1ZXVlX3ApOiBMaWtld2lzZS4KCSh2aXJ0dWFsX2NvbnRleHQpOiBMaWtld2lzZS4KCShnZXRfdmJhc2VfdHlwZXMpOiBEb24ndCByZXR1cm4gYSB2YWx1ZS4gIFNldAoJQ0xBU1NUWVBFX1ZCQVNFQ0xBU1NFUyBoZXJlLgoJKiB0eXBlY2suYyAoZ2V0X2RlbHRhX2RpZmZlcmVuY2UpOiBVc2UgQklORk9fRk9SX1ZCQVNFLgoJCjE5OTktMTItMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChmaXh1cF9pbmxpbmVfbWV0aG9kcyk6IENsZWFyIENMQVNTVFlQRV9JTkxJTkVfRlJJRU5EUy4KCjE5OTktMTItMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChjcmVhdGVfdnRhYmxlX3B0cik6IFB1dCB0aGUgdnRhYmxlIGF0IHRoZSBiZWdpbm5pbmcgb2YKCXRoZSBjbGFzcywgbm90IHRoZSBlbmQsIGluIHRoZSBuZXcgQUJJLgoJKiB0cmVlLmMgKHByb3BhZ2F0ZV9iaW5mb19vZmZzZXRzKTogRG8gdGhlIHJpZ2h0IHRoaW5nIGZvciB0aGUgbmV3CglBQkkuCgoxOTk5LTEyLTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBBZGQgbmVhcmx5X2VtcHR5X3AuICBBZGp1c3QgZHVtbXkuCgkoQ0xBU1NUWVBFX05FQVJMWV9FTVBUWV9QKTogTmV3IG1hY3JvLgoJKiBjbGFzcy5jIChjaGVja19iYXNlcyk6IFVwZGF0ZSBDTEFTU1RZUEVfTkVBUkxZX0VNUFRZX1AuCgkoY2hlY2tfZmllbGRfZGVjbHMpOiBMaWtld2lzZS4KCShjaGVja19iYXNlc19hbmRfbWVtYmVycyk6IExpa2V3aXNlLgoKMTk5OS0xMi0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZG9faW5saW5lX2Z1bmN0aW9uX2hhaXIpOiBSZW1vdmUuCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc190eXBlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJZmluaXNoX3N0cnVjdF8xLgoJKGZpeHVwX3BlbmRpbmdfaW5saW5lKTogTGlrZXdpc2UuCgkoZml4dXBfaW5saW5lX21ldGhvZHMpOiBOZXcgZnVuY3Rpb24uCgkqIG1ldGhvZC5jIChmaXh1cF9wZW5kaW5nX2lubGluZSk6IFJlbW92ZS4KCShkb19pbmxpbmVfZnVuY3Rpb25faGFpcik6IExpa2V3aXNlLgoJCgkqIGRlY2wuYyAoQk9PTF9UWVBFX1NJWkUpOiBCb29scyBhbHdheXMgaGF2ZSBzaXplIGAxJyB1bmRlciB0aGUKCW5ldyBBQkkuCgkKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBSZXBsYWNlIGFic3RyYWN0X3ZpcnR1YWxzIHdpdGggcHVyZV92aXJ0dWFscy4KCShDTEFTU1RZUEVfQUJTVFJBQ1RfVklSVFVBTFMpOiBSZW5hbWUgdG8gLi4uCgkoQ0xBU1NUWVBFX1BVUkVfVklSVFVBTFMpOiAuLi4gdGhpcy4KCShsYW5nX2RlY2xfZmxhZ3MpOiBSZXBsYWNlIGFic3RyYWN0X3ZpcnR1YWwgd2l0aCBwdXJlX3ZpcnR1YWwuCgkoREVDTF9BQlNUUkFDVF9WSVJUVUFMX1ApOiBSZW5hbWUgdG8gLi4uCgkoREVDTF9QVVJFX1ZJUlRVQUxfUCk6IC4uLiB0aGlzLgoJKGdldF9hYnN0cmFjdF92aXJ0dWFscyk6IFJlbmFtZSB0byAuLi4KCShnZXRfcHVyZV92aXJ0dWFscyk6IC4uLiB0aGlzLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IFJlcGxhY2UgREVDTF9QVVJFX1ZJUlRVQUxfUCB3aXRoCglERUNMX0FCU1RSQUNUX1ZJUlRVQUxfUC4gIFJlcGxhY2UgQ0xBU1NUWVBFX0FCU1RSQUNUX1ZJUlRVQUxTIHdpdGgKCUNMQVNTVFlQRV9QVVJFX1ZJUlRVQUxTLgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnkpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0X2JpdHMpOiBMaWtld2lzZS4gIENhbGwgZ2V0X3B1cmVfdmlydHVhbHMsIG5vdAoJZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzLgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShvdmVycmlkZV9vbmVfdnRhYmxlKTogTGlrZXdpc2UuCgkoY2hlY2tfbWV0aG9kcyk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IExpa2V3aXNlLgoJKHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSk6IExpa2V3aXNlLgoJKGxhbmdfbWFya190cmVlKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tfZnVuY3Rpb25faW5pdCk6IExpa2V3aXNlLgoJKGltcG9ydF9leHBvcnRfdnRhYmxlKTogTGlrZXdpc2UuCgkoaW1wb3J0X2V4cG9yX2NsYXNzKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoYWJzdHJhY3RfdmlydHVhbHNfZXJyb3IpOiBMaWtld2lzZS4KCSogeHJlZi5jIChHTlVfeHJlZl9tZW1iZXIpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGdldF9hYnN0cmFjdF92aXJ0dWFscyk6IFJlbmFtZSB0byBnZXRfcHVyZV92aXJ0dWFscy4KCQoxOTk5LTEyLTI2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcC10cmVlLmg6IFJlcGxhY2UgRU5BQkxFX0NIRUNLSU5HIHdpdGggRU5BQkxFX1RSRUVfQ0hFQ0tJTkcKCXRocm91Z2hvdXQuCgoxOTk5LTEyLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChzdG9yZV9yZXR1cm5faW5pdCk6IFVzZSBtb2RlIG9mIG9sZCBSVEwgZ2VuZXJhdGVkIGZvcgoJREVDTF9SRVNVTFQsIG5vdCB0aGUgbW9kZSBvZiBERUNMX1JFU1VMVCBpdHNlbGYuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfbmFtZWRfcmV0dXJuX3ZhbHVlKTogU2V0IERFQ0xfVU5JTkxJTkFCTEUKCWZvciBmdW5jdGlvbnMgdGhhdCB1c2VkIG5hbWVkIHJldHVybiB2YWx1ZXMuCgkKMTk5OS0xMi0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IFVzZQoJbm90ZV9kZWZlcnJhbF9vZl9kZWZpbmVkX2lubGluZV9mdW5jdGlvbi4KCjE5OTktMTItMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBIYW5kbGUgQ1RPUl9TVE1Ucy4KCjE5OTktMTItMjIgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGxzZC5pYy51bmljYW1wLmJyPgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogU3VwcG9ydCBuYW1lZCByZXR1cm4gdmFsdWVzLgoKMTk5OS0xMi0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX1ZGSUVMRF9QQVJFTlQpOiBVcGRhdGUgY29tbWVudHMuCgkoQ0xBU1NUWVBFX0hBU19QUklNQVJZX0JBU0VfUCk6IE5ldyBtYWNyby4KCShDTEFTU1RZUEVfUFJJTUFSWV9CSU5GTyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChjaGVja19tZXRob2RzKTogRG9uJ3Qgc2V0IFRZUEVfSEFTX0NPTVBMRVhfSU5JVF9SRUYsCglUWVBFX05FRURTX0NPTlNUUlVDVElORywgYW5kIENMQVNTVFlQRV9OT05fQUdHUkVHQVRFIGhlcmUuCgkoY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMpOiBTZXQgdGhlbSBoZXJlIGluc3RlYWQuCgkoY3JlYXRlX3Z0YWJsZV9wdHIpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIC4uLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IC4uLiBoZXJlLiAgVXNlIGl0LiAgVGlkeS4gIFVzZQoJQ0xBU1NUWVBFX0hBU19QUklNQVJZX0JBU0VfUCBhbmQgQ0xBU1NUWVBFX1BSSU1BUllfQklORk8uCgkqIHNlYXJjaC5jIChkZnNfaW5pdF92YmFzZV9wb2ludGVycyk6IEhhbmRsZSBzZWVpbmcgVFlQRV9WRklFTEQgYXMKCXRoZSBmaXJzdCBmaWVsZCBpbiB0aGUgY2xhc3MuCgkqIHRyZWUuYyAobGF5b3V0X2Jhc2V0eXBlcyk6IFVzZSBDTEFTU1RZUEVfTl9CQVNFQ0xBU1NFUy4gIEhhbmRsZQoJc2VlaW5nIFRZUEVfVkZJRUxEIGFzIHRoZSBmaXJzdCBmaWVsZCBpbiB0aGUgY2xhc3MuCgkKCSogY3AtdHJlZS5oIChUWVBFX1ZJUlRVQUxfUCk6IFJlbmFtZSB0byAuLi4KCShUWVBFX1BPTFlNT1JQSElDX1ApOiAuLi4gdGhpcy4KCShUWVBFX1VTRVNfQ09NUExFWF9JTkhFUklUQU5DRSk6IFJlbmFtZSB0byAuLi4KCShUWVBFX0JBU0VfQ09OVlNfTUFZX1JFUVVJUkVfQ09ERV9QKTogLi4uIHRoaXMuCgkoVFJFRV9DQUxMU19ORVcpOiBSZW1vdmUuCgkoVFJFRV9NQU5HTEVEKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYnVpbGRfdmZpZWxkX3JlZik6IFVzZSBUWVBFX0JBU0VfQ09OVlNfTUFZX1JFUVVJUkVfQ09ERV9QLAoJYW5kIFRZUEVfUE9MWU1PUlBISUNfUC4KCSogY2xhc3MuYyAoY2hlY2tfYmFzZXMpOiBMaWtld2lzZS4KCShmaW5pc2hfYmFzZV9zdHJ1Y3QpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0X2JpdHMpOiBMaWtld2lzZS4KCShjaGVja19mb3Jfb3ZlcnJpZGUpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShnZXRfdmZpZWxkX25hbWUpOiBMaWtld2lzZS4KCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2NsYXNzKTogTGlrZXdpc2UuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZnVuY3Rpb25fZGVjbCk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKiByZXBvLmMgKHJlcG9faW5saW5lX3VzZWQpOiBMaWtld2lzZS4KCSogcnR0aS5jIChidWlsZF9oZWFkb2YpOiBMaWtld2lzZS4KCShnZXRfdGluZm9fZm5fZHluYW1pYyk6IExpa2V3aXNlLgoJKGJ1aWxkX3hfdHlwZWlkKTogTGlrZXdpc2UuCgkoZ2V0X3RpbmZvX3Zhcik6IExpa2V3aXNlLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogTGlrZXdpc2UuCgkoc3ludGhlc2l6ZV90aW5mb19mbik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBMaWtld2lzZS4KCShkZnNfZGVidWdfbWFyayk6IExpa2V3aXNlLgoJKG1heWJlX3N1cHByZXNzX2RlYnVnX2luZm8pOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9jb21wb25lbnRfYWRkcik6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJCjE5OTktMTItMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiB0eXBlY2suYyAoc3RyaXBfYWxsX3BvaW50ZXJfcXVhbHMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGJ1aWxkX3N0YXRpY19jYXN0KTogVXNlIGl0LiBEb24ndCB1c2UgYXRfbGVhc3RfYXNfcXVhbGlmaWVkX3AuCgoxOTk5LTEyLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChjcF90cmVlX2luZGV4KTogQWRkIENQVElfRFNPX0hBTkRMRS4KCShkc29faGFuZGxlX25vZGUpOiBOZXcgbWFjcm8uCgkoZmxhZ191c2VfY3hhX2F0ZXhpdCk6IE5ldyB2YXJpYWJsZS4KCShkZWNsYXJlX2dsb2JhbF92YXIpOiBOZXcgZnVuY3Rpb24uCgkoc3RhcnRfYW5vbl9mdW5jKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGVuZF9hbm9uX2Z1bmMpOiBMaWtld2lzZS4KCSogZGVjbC5jIChnZXRfYXRleGl0X25vZGUpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglkZXN0cm95X2xvY2FsX3N0YXRpYy4gIEhhbmRsZSBmbGFnX3VzZV9jeGFfYXRleGl0LgoJKGdldF9kc29faGFuZGxlX25vZGUpOiBMaWtld2lzZS4KCShzdGFydF9jbGVhbnVwX2ZuKTogUmVuYW1lZCBmcm9tIHN0YXJ0X2Fub25fZnVuYy4gIE1vdmVkIGhlcmUgZnJvbQoJZXhjZXB0LmMuICBIYW5kbGUgZmxhZ191c2VfY3hhX2F0ZXhpdC4KCShlbmRfY2xlYW51cF9mbik6IFJlbmFtZWQgZnJvbSBlbmRfYW5vbl9mdW5jLiAgTW92ZWQgaGVyZSBmcm9tCglleGNlcHQuYy4KCShkZWNsYXJlX2dsb2JhbF92YXIpOiBOZXcgdmFyaWFibGUuCgkoZGVzdHJveV9sb2NhbF9zdGF0aWMpOiBIYW5kbGUgZmxhZ191c2VfY3hhX2F0ZXhpdC4KCSogZGVjbDIuYyAoZmxhZ191c2VfY3hhX2F0ZXhpdCk6IE5ldyB2YXJpYWJsZS4KCShsYW5nX2Zfb3B0aW9ucyk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoc3RhcnRfYW5vbl9mdW5jKTogUmVtb3ZlLgoJKGVuZF9hbm9uX2Z1bmMpOiBMaWVrd2lzZS4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZnVzZS1jeGEtYXRleGl0IGFuZCAtZm5vLXVzZS1jeGEtYXRleGl0LgoJKiBydHRpLmMgKGdldF90aW5mb192YXIpOiBVc2UgZGVjbGFyZV9nbG9iYWxfdmFyLgoKMTk5OS0xMi0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGNoZWNrX2ZpZWxkX2RlY2xzKTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkoYXZvaWRfb3ZlcmxhcCk6IE1vdmVkIGhlcmUgZnJvbSB0cmVlLmMuCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBMaWtld2lzZS4KCShjaGVja19iYXNlcyk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gZmluaXNoX2Jhc2Vfc3RydWN0LgoJKGNoZWNrX2Jhc2VzX2FuZF9tZW1iZXJzKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSAKCWZpbmlzaF9zdHJ1Y3RfMS4KCShzdHJ1Y3QgYmFzZV9pbmZvKTogUmVtb3ZlIGNhbnRfaGF2ZV9kZWZhdWx0X2N0b3IsCgljYW50X2hhdmVfY29uc3RfY3RvciwgY2FudF9oYXZlX2Fzbl9yZWYuCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogU3BsaXQgc2VtYW50aWMgYW5hbHlzaXMgaW50byBjaGVja19iYXNlcy4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBGaXggYm9ndXMgYXNzZXJ0aW9uLgoJKGNoZWNrX2ZpZWxkX2RlY2xzKTogQ2FsbCBmaW5pc2hfc3RydWN0X2Fub24gaGVyZS4KCShidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IFVzZSBDTEFTU1RZUEVfTl9CQVNFQ0xBU1NFUy4KCShmaW5pc2hfc3RydWN0XzEpOiBVc2UgY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMuICBSZW9yZ2FuaXplLgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9WQkFTRUNMQVNTRVMpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24uCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBEb24ndCBkZWNsYXJlLgoJKiB0cmVlLmMgKGF2b2lkX292ZXJsYXApOiBSZW1vdmUuCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBMaWtld2lzZS4KCQoJKiBvcHRpbWl6ZS5jIChzdHJ1Y3QgaW5saW5lX2RhdGEpOiBSZW1vdmUgc2NvcGVfc3RtdC4KCShyZW1hcF9ibG9jayk6IERvbid0IHVzZSBpbnNlcnRfYmxvY2tfYWZ0ZXJfbm90ZS4gIERvbid0IHVwZGF0ZQoJc2NvcGVfc3RtdC4KCShleHBhbmRfY2FsbF9pbmxpbmUpOiBEb24ndCB1cGRhdGUgc2NvcGVfc3RtdC4KCShvcHRpbWl6ZV9mdW5jdGlvbik6IERvbid0IGluaXRpYWxpemUgc2NvcGVfc3RtdC4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogU2V0IE5PVEVfQkxPQ0sgZm9yIG5ld2x5IGVtaXR0ZWQKCU5PVEVfSU5TTl9CTE9DS19CRUcvTk9URV9JTlNOX0JMT0NLX0VORCBub3Rlcy4KCjE5OTktMTItMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChoYW5kbGVfdXNpbmdfZGVjbCk6IEdldCBUWVBFX0ZJRUxEUyBhbmQgVFlQRV9NRVRIT0RTCglvdXQgb2YgdGhlIGNsYXNzLCByYXRoZXIgdGhhbiB0YWtpbmcgdGhlbSBhcyBwYXJhbWV0ZXJzLgoJKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogTW92ZSBoZXJlIGZyb20gdHJlZS5jLgoJKGJ1aWxkX3Z0Ymxfb3JfdmJhc2VfZmllbGQpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfbWV0aG9kcyk6IExpa2V3aXNlLgoJKHJlbW92ZV96ZXJvX3dpZHRoX2JpdGZpZWxkcyk6IExpa2V3aXNlLgoJKGFkZF92aXJ0dWFsX2Z1bmN0aW9uKTogVXNlIHRyZWVfY29ucyBpbnN0ZWFkIG9mIHRlbXBfdHJlZV9jb25zLgoJKGRlbGV0ZV9kdXBsaWNhdGVfZmllbGRzXzEpOiBUaWR5LiAgRG9uJ3QgZGVsZXRlIGR1cGxpY2F0ZQoJVVNJTkdfREVDTHMgaGVyZS4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGhlcmUgYXJlIG5vCgltZXRob2RzIGhlcmUuCgkoZ2V0X2Jhc2VmbmRlY2xzKTogVXNlIHRyZWVfY29ucyBpbnN0ZWFkIG9mIHRlbXBfdHJlZV9jb25zLgoJKGNoZWNrX2ZpZWxkX2RlY2xzKTogQ2FsbCBkZWxldGVfZHVwbGljYXRlX2ZpZWxkcyBoZXJlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IFRpZHkuICBVc2UgY2hlY2tfbWV0aG9kcyBhbmQKCXJlbW92ZV96ZXJvX3dpZHRoX2JpdGZpZWxkcy4KCSogY3AtdHJlZS5oIChidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IFJlbW92ZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSB0cmVlX2NvbnMgaW5zdGVhZCBvZgoJdGVtcF90cmVlX2NvbnMuCgkqIGRlY2wyLmMgKHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogVXNlIHRyZWVfY29ucwoJaW5zdGVhZCBvZiB0ZW1wX3RyZWVfY29ucy4KCSogbGV4LmMgKGNvbnNfdXBfZGVmYXVsdF9mdW5jdGlvbik6IFJlbW92ZSBkZWFkIGNvZGUuCgkqIG1ldGhvZC5jIChmaXh1cF9wZW5kaW5nX2lubGluZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20JLi4uCgkoZG9faW5saW5lX2Z1bmN0aW9uX2hhaXIpOiAuLi4gaGVyZS4KCSogdHJlZS5jIChidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IFJlbW92ZS4KCQoxOTk5LTEyLTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAod2Fsa190cmVlKTogV2FsayBvcGVyYW5kIHN1YnRyZWVzIGluIGZvcndhcmQgb3JkZXIuCgkqIG9wdGltaXplLmMgKGV4cGFuZF9jYWxsX2lubGluZSk6IExpa2V3aXNlLgoJKG9wdGltaXplX2Z1bmN0aW9uKTogSW5pdGlhbGl6ZSBpZC0+c2NvcGVfc3RtdCB0byBzb21ldGhpbmcgdXNlZnVsLgoJKHJlbWFwX2Jsb2NrKTogQXNzdW1lIGlkLT5zY29wZV9zdG10IGhhcyBhIHVzZWZ1bCB2YWx1ZS4KCjE5OTktMTItMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiB0eXBlY2suYyAoYnVpbGRfY19jYXN0KTogRXhwYW5kIHdhcm5pbmcgbWVzc2FnZS4gTW92ZSBwb2ludGVyCglhbGlnbm1lbnQgd2FybmluZyB0byBhZnRlciB0aGUgY2FzdC4gRG9uJ3Qgd2FybiBhYm91dCBwb2ludGVyCglhbGlnbm1lbnQgd2hlbiBnaXZlbiBhIHBvaW50ZXIgdG8gaW5jb21wbGV0ZS4KCjE5OTktMTItMTUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKG1ha2VfYWdncl90eXBlKTogRGVjbGFyZS4KCSogbGV4LmMgKGNwX21ha2VfbGFuZ190eXBlKTogRG9uJ3QgU0VUX0lTX0FHR1JfVFlQRS4KCShtYWtlX2FnZ3JfdHlwZSk6IE5ldy4KCgkqIGRlY2wuYyAoYnVpbGRfdHlwZW5hbWVfdHlwZSwgaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVc2UgaXQuCgkoYnVpbGRfcHRybWVtZnVuY190eXBlLCB4cmVmX3RhZyk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoaW5pdF9pbml0X3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtLCBsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCSogcnR0aS5jIChleHBhbmRfY2xhc3NfZGVzYyk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbiwgZmluaXNoX3R5cGVvZik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGNvcHlfdGVtcGxhdGVfdGVtcGxhdGVfcGFybSk6IExpa2V3aXNlLgoKMTk5OS0xMi0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5kZWYgKFRFTVBMQVRFX1BBUk1fSU5ERVgpOiBDYWxjdWxhdGUgc2l6ZSB1c2luZwoJc2l6ZW9mIChzdHJ1Y3QgdHJlZV9jb21tb24pLgoKMTk5OS0xMi0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBvcHRpbWl6ZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBTZXQgQkxPQ0tfQUJTVFJBQ1RfT1JJR0lOIG9uIHRoZQoJb3V0ZXJtb3N0IGJsb2NrIHRvIHBvaW50IHRvIHRoZSBpbmxpbmVkIGZ1bmN0aW9uIGRlY2wuCgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBvcGVyYXRvcj09LCBub3Qgb3BlcmF0b3IgPT0uCgkob3BfdG9fc3RyaW5nKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGNvbXB1dGVfYXJyYXlfaW5kZXhfdHlwZSk6IEhhbmRsZSBudWxsIG5hbWUuCgoJKiBkZWNsMi5jIChhbWJpZ3VvdXNfZGVjbCk6IEZpeCB0byBtYXRjaCBjb21tZW50LgoJKGxvb2t1cF91c2luZ19uYW1lc3BhY2UpOiBBZGp1c3QuCgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2NsYXNzKTogRG9uJ3QgaWdub3JlIGRsbGltcG9ydC4KCjE5OTktMTItMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNscyk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IC4uLiBoZXJlLiAgVXNlIGl0LiAgVGlkeS4KCgkqIGNwLXRyZWUuaCAocmVtYXBfc2F2ZV9leHByKTogQWRkIHdhbGtfc3VidHJlZXMgcGFyYW1ldGVyLgoJKiBvcHRpbWl6ZS5jIChjb3B5X2JvZHlfcik6IFBhc3MgaXQuCgkqIHRyZWUuYyAocmVtYXBfc2F2ZV9leHByKTogQ2xlYXIgd2Fsa19zdWJ0cmVlcyBmb3IgYW4KCWFscmVhZHktaGFuZGxlZCBTQVZFX0VYUFIuCgkoY3BfdW5zYXZlX3IpOiBQYXNzIHdhbGtfc3VidHJlZXMgdG8gcmVtYXBfc2F2ZV9leHByLgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRHVtcCBERUNMX05BTUVTUEFDRV9BTElBUy4KCSogaXIudGV4aSAoREVDTF9OQU1FU1BBQ0VfQUxJQVMpOiBEb2N1bWVudCBpdC4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBFWFBSX1dJVEhfRklMRV9MT0NBVElPTi4KCjE5OTktMTItMTQgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogY2xhc3MuYyAoZmluaXNoX2Jhc2Vfc3RydWN0KTogQWxsb3cgbXVsdGlwbGUgQ09NIGJhc2UgY2xhc3NlcwoJYXMgd2VsbCBhcyBub24tQ09NIGJhc2VzIGFzIGxvbmcgYXMgaXQncyBub3QgdGhlIGxlZnRtb3N0LgoKMTk5OS0xMi0xMyAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBsZXguYyAoc2F2aW5nX3BhcnNlX3RvX29ic3RhY2spOiBOZXcgZ2xvYmFsLgoJKHJlaW5pdF9wYXJzZV9mb3JfYmxvY2spOiBVc2UuCgkocmVpbml0X3BhcnNlX2Zvcl9leHByKTogVXNlLgoJKGNoZWNrX25ld2xpbmUpOiBVc2UuCgoxOTk5LTEyLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0aW1pemUuYyAoaW5pdGlhbGl6ZV9pbmxpbmVkX3BhcmFtZXRlcnMpOiBUYWtlIEZOIHRvIHdoaWNoIHRoZQoJcGFyYW1ldGVycyBiZWxvbmcgYXMgYW4gYXJndW1lbnQuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogRXhwYW5kIGNhbGxzIGludG8gdGhlIHBhcmFtZXRlcgoJaW5pdGlhbGl6YXRpb25zIGJlZm9yZSBwdXNoaW5nIHRoZSBmdW5jdGlvbiBvbnRvIHRoZSBsaXN0IG9mCglmdW5jdGlvbnMgd2UgYXJlIHByZXNlbnRseSBleHBhbmRpbmcuCgoxOTk5LTEyLTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGFzcy5jIChnZXRfdnRhYmxlX25hbWUpOiBVc2UgYSBsaXRlcmFsIGZvcm1hdCBzdHJpbmcgYW5kCglWVEFCTEVfTkFNRV9QUkVGSVggbWFjcm8gaW5zdGVhZCBvZiBWVEFCTEVfTkFNRV9GT1JNQVQuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBMaWtld2lzZS4KCgkqIGNwLXRyZWUuaCAoVlRBQkxFX05BTUVfUFJFRklYKTogRGVmaW5lIHRoaXMgaW5zdGVhZCBvZgoJVlRBQkxFX05BTUVfRk9STUFULgoKCSogZGVjbC5jIChtYWtlX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgdHlwZScuCgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19pbml0KTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgdHJ5X2JvZHknLgoKCSogbGV4LmMgKHl5ZXJyb3IpOiBEb24ndCBjYWxsIGEgdmFyaWFkaWMgZnVuY3Rpb24gd2l0aCBhCglub24tbGl0ZXJhbCBmb3JtYXQgc3RyaW5nLgoKCSogb3B0aW1pemUuYyAob3B0aW1pemVfZnVuY3Rpb24pOiBDYWxsIG1lbXNldCwgbm90IGJ6ZXJvLgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybV9yKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoxOTk5LTEyLTA5ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogQWRkIHN0YXRpYyBhdHRyaWJ1dGUgdG8gbWF0Y2gKCXByb3RvdHlwZS4KCgkqIE1ha2VmaWxlLmluIChzZW1hbnRpY3Mubyk6IEFkZCBkZXBlbmRlbmN5IG9uIG91dHB1dC5oLgoJKiBzZW1hbnRpY3MuYzogSW5jbHVkZSBvdXRwdXQuaCBmb3IgZGVjbGFyYXRpb24gb2YKCW1ha2VfZnVuY3Rpb25fcnRsLgoKMTk5OS0xMi0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZWVuYWJsZSBpbmxpbmluZyBvbiB0cmVlcy4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGhhbmRsZSBBR0dSX0lOSVRfRVhQUiBoZXJlLgoJKiBzZW1hbnRpY3MuYyAoc2ltcGxpZnlfYWdncl9pbml0X2V4cHJzKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9ib2R5KTogVXNlIGl0LgoJKiB0cmVlLmMgKHdhbGtfdHJlZSk6IFNwZWNpYWwtY2FzZSBUQVJHRVRfRVhQUnMgc2luY2UgdGhleQoJc29tZXRpbWVzIHByZXNlbnQgdGhlIHNhbWUgc3ViLXRyZWUgdHdpY2UuCgkKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogQWJicmV2aWF0ZSBgY2xhc3MnIGFzIGBjbHMnLCBub3QKCWBjc2wnLgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zd2l0Y2hfY29uZCk6IERvIGNvbnZlcnNpb25zIGhlcmUsIG5vdCAuLi4KCSogdHlwZWNrLmMgKGNfZXhwYW5kX3N0YXJ0X2Nhc2UpOiBIZXJlLgoKCSogc2VtYW50aWNzLmMgKGRvX3BvcGxldmVsKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCQoxOTk5LTEyLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5jICh3YWxrX3RyZWUpOiBEb24ndCByZWN1cnNlIGludG8gREVDTF9JTklUSUFMIG9yIERFQ0xfU0laRQoJdW5sZXNzIHdlJ3JlIGRlY2xhcmluZyB0aGUgdmFyaWFibGUgaW4gcXVlc3Rpb24uCgoxOTk5LTEyLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6ICNpZiAwIGxhc3QgcGF0Y2guCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoxOTk5LTEyLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBmbGFnX2lubGluZV90cmVlcyBpZgoJIWZsYWdfbm9faW5saW5lLgoKCSogY3AtdHJlZS5oIChjYWxsc19zZXRqbXBfcCk6IERlY2xhcmUuCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogTWFyayBmdW5jdGlvbnMgdGhhdCBjYWxsIHNldGptcCBhcwoJdW5pbmxpbmFibGUuCgkqIG9wdGltaXplLmMgKGNhbGxzX3NldGptcF9yKTogTmV3IGZ1bmN0aW9uLgoJKGNhbGxzX3NldGptcF9wKTogTGlrZXdpc2UuCgoxOTk5LTEyLTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0aW1pemUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogV3JhcCB0aGUgZXhwYW5kZWQgY2FsbCBpbiBhbgoJRVhQUl9XSVRIX0ZJTEVfTE9DQVRJT04gbm9kZSB0byBnZXQgY29ycmVjdCBsaW5lIG51bWJlcnMgZm9yCglpbmxpbmVkIGZ1bmN0aW9ucy4KCgkqIG9wdGltaXplLmMgKGlubGluZV9kYXRhKTogUmVtb3ZlIGZuc190b3AuICBBZGQgc2NvcGVfc3RtdC4gIEFkZAoJaW5fdGFyZ2V0X2NsZWFudXBfcC4KCShyZW1hcF9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKHJlbWFwX2Jsb2NrKTogTGlrZXdpc2UuCgkoY29weV9zY29wZV9zdG10KTogTGlrZXdpc2UuCgkoY29weV9ib2R5X3IpOiBVc2UgcmVtYXBfZGVjbCBhbmQgY29weV9zY29wZV9zdG10LgoJKGNvcHlfYm9keSk6IFVzZSBWQVJSQVlfVE9QX1RSRUUuCgkoaW5pdGlhbGl6ZV9pbmxpbmVkX3BhcmFtZXRlcnMpOiBMaWtld2lzZS4KCShkZWNsYXJlX3JldHVybl92YXJpYWJsZSk6IExpa2V3aXNlLgoJKGlubGluYWJsZV9mdW5jdGlvbl9wKTogQ2hlY2sgZmxhZ19pbmxpbmVfdHJlZXMuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogSGFuZGxlIFNDT1BFX1NUTVRzIGFuZCBUQVJHRVRfRVhQUnMKCXNwZWNpYWxseS4gIFVzZSBWQVJSQVlfUFVTSF9UUkVFLiAgQ3JlYXRlIGEgQkxPQ0sgZm9yIHRoZQoJcGFyYW1ldGVycyBvZiB0aGUgaW5saW5lZCBmdW5jdGlvbi4KCShvcHRpbWl6ZV9mdW5jdGlvbik6IFByZXZlbnQgcmVjdXJzaW9uIGludG8gcGFydGlhbGx5IGNvbXBsZXRlCglmdW5jdGlvbnMuCgkKCSogY3AtdHJlZS5kZWYgKFNDT1BFX1NUTVQpOiBUYWtlIG9uZSBvcGVyYW5kLgoJKiBjcC10cmVlLmggKFNDT1BFX1NUTVRfQkxPQ0spOiBOZXcgbWFjcm8uCgkoU0NPUEVfTlVMTElGSUVEX1ApOiBSZWRlZmluZS4KCShTQ09QRV9OT19DTEVBTlVQU19QKTogTmV3IG1hY3JvLgoJKGFkZF9zY29wZV9zdG10KTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZGVjbC5jIChwb3BsZXZlbCk6IFRpZHkuICBXYXJuIGFib3V0IHVudXNlZCB2YXJpYWJsZXMgaGVyZS4KCVJlY29yZCBTQ09QRV9TVE1UX0JMT0NLcy4KCShmaW5pc2hfZnVuY3Rpb24pOiBLZWVwIERFQ0xfSU5JVElBTCBmb3IgZnVuY3Rpb25zIHRoYXQgbWlnaHQgYmUKCWlubGluZWQuCgkqIGlyLnRleGk6IERvY3VtZW50IFNDT1BFX05PX0NMRUFOVVBTX1AuCgkqIHNlbWFudGljcy5jOiBJbmNsdWRlIHJ0bC5oLgoJKGFkZF9zY29wZV9zdG10KTogUmV0dXJuIHRoZSBuZXcgc2NvcGUgc3RhdGVtZW50IGFuZCwgZm9yIGFuCgllbmQtb2Ytc2NvcGUgc3RhdGVtZW50LCBpdHMgbWF0Y2hpbmcgYmVnaW4gc3RhdGVtZW50LiAgRG9uJ3Qgc2V0CglTQ09QRV9OVUxMSUZJRURfUC4KCShkb19wdXNobGV2ZWwpOiBTaW1wbGlmeSwgbm93IHRoYXQgd2UgYXJlIGFsd2F5cwoJZnVuY3Rpb24tYXQtYS10aW1lLgoJKGRvX3BvcGxldmVsKTogTGlrZXdpc2UuICBSZWNvcmQgU0NPUEVfU1RNVF9CTE9DS3MuCgkoZXhwYW5kX3N0bXQpOiBEb24ndCBjYWxsIGV4cGFuZF9zdGFydF9iaW5kaW5ncyBvcgoJZXhwYW5kX2VuZF9iaW5kaW5ncyBmb3IgYSBzY29wZSB3aXRoIFNDT1BFX05PX0NMRUFOVVBTX1Agc2V0LgoJKiB0cmVlLmMgKGNvcHlfdHJlZV9yKTogQ2xlYXIgU0NPUEVfU1RNVF9CTE9DSyByYXRoZXIgdGhhbiBzZXR0aW5nCglTQ09QRV9OVUxMSUZJRURfUC4KCSogTWFrZWZpbGUuaW4gKHNlbWFudGljcy5vKTogRGVwZW5kIG9uIFJUTF9ILgoJCgkqIGRlY2wyLmMgKHBlbmRpbmdfc3RhdGljc191c2VkKTogTWFrZSBpdCBhIG1hY3JvLgoJKHNhdmVkX2lubGluZXNfdXNlZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCk6IFVzZSBWQVJSQVlfUFVTSF9UUkVFLgoJKG1hcmtfaW5saW5lX2Zvcl9vdXRwdXQpOiBMaWtld2lzZS4KCShzc2RmX2RlY2xzX3VzZWQpOiBSZW1vdmUuCgkoc3RhcnRfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBVc2UgVkFSUkFZX1BVU0hfVFJFRS4KCShnZW5lcmF0ZV9jdG9yX29yX2R0b3JfZnVuY3Rpb24pOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkKMTk5OS0xMS0yNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoJICAgIEdyZWcgTWNHYXJ5ICA8Z2ttQGdudS5vcmc+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IE1lcmdlCiAJREVDTF9OT19JTlNUUlVNRU5UX0ZVTkNUSU9OX0VOVFJZX0VYSVQsCiAJREVDTF9OT19DSEVDS19NRU1PUllfVVNBR0UsIERFQ0xfTk9fTElNSVRfU1RBQ0suCgoxOTk5LTEyLTAyICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBpbml0LmMgKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBIYW5kbGUgcGFyc2UgZXJyb3JzIGJldHRlci4KCjE5OTktMTItMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKG1pbl90cmVlX2NvbnMpOiBSZW1vdmUuCgkoc2NyYXRjaF9vdmxfY29ucyk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHNhdmVhYmxlX29ic3RhY2spOiBEb24ndCBkZWNsYXJlLgoJKGR1cGxpY2F0ZV9kZWNscyk6IFR3ZWFrIGVycm9yLW1lc3NhZ2UuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBFeHBsaWNpdGx5IG1hcmsgdGhlIGRlZmluaXRpb24gYXMgc3RhdGljLgoJKGZpbmlzaF9mdW5jdGlvbik6IENhbGwgcGVybWFuZW50X2FsbG9jYXRpb24sIGp1c3Qgc28KCXRoYXQgdGhlIG1pZGRsZS1lbmQgc2VlcyB0aGUgb2JzdGFja3MgaXQgZXhwZWN0cy4KCShtYXJrX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBEb24ndCB1c2UgbWluX3RyZWVfY29ucy4KCSogbGV4LmMgKHBlcm1hbmVudF9vYnN0YWNrKTogRG9uJ3QgZGVjbGFyZS4KCShjdXJyZW50X29ic3RhY2ssIHNhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCSogc3Bldy5jIChjdXJyZW50X29ic3RhY2ssIHNhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCSogdHJlZS5jIChjdXJyZW50X29ic3RhY2ssIHNhdmVhYmxlX29ic3RhY2spOiBMaWtld2lzZS4KCShzY3JhdGNoX292bF9jb25zKTogUmVtb3ZlLgoJKGJ1aWxkX21pbl9udCk6IERvbid0IG1lc3Mgd2l0aCBvYnN0YWNrcy4KCShidWlsZF9taW4pOiBMaWtld2lzZS4KCShtaW5fdHJlZV9jb25zKTogUmVtb3ZlCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRG9uJ3QgdXNlIHNjcmF0Y2hfb3ZsX2NvbnMuCgkoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfY19jYXN0KTogRG9uJ3QgdXNlIG1pbl90cmVlX2NvbnMuCgkKMTk5OS0xMS0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogUm9idXN0aWZ5LgoKMTk5OS0xMS0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogQ2FsbCBleHBhbmRfYm9keSBmb3IgaW5saW5lIGZ1bmN0aW9ucwoJdGhhdCB3aWxsIGJlIHdyaXR0ZW4gb3V0IGJ1dCB0aGF0IGRvIG5vdCB5ZXQgaGF2ZSBSVEwuCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IERvIG5vdCBnZW5lcmF0ZSBSVEwgRm9yIGlubGluZQoJZnVuY3Rpb25zIHRoYXQgZG8gbm90IHlldCBuZWVkIHRvIGJlIHdyaXR0ZW4gb3V0LgoKMTk5OS0xMS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX1NSQ1MpOiBBZGQgb3B0aW1pemUuYy4gIAoJKiBNYWtlZmlsZS5pbiAoQ1hYX09CSlMpOiBBZGQgb3B0aW1pemUuby4KCShDWFhfVFJFRV9IKTogQWRkIHNwbGF5LXRyZWUuaCwgc3lzdGVtLmgsIGFuZCAkKENPTkZJR19IKS4KCShzcGV3Lm8sIGxleC5vLCBkZWNsLm8sIGRlY2wyLm8sIHR5cGVjazIubywgdHlwZWNrLm8pOiBBZGp1c3QuCgkoY2xhc3MubywgY2FsbC5vLCBmcmllbmQubywgaW5pdC5vLCBtZXRob2QubywgY3Z0Lm8pOiBMaWtld2lzZS4KCShzZWFyY2gubywgdHJlZS5vLCBwdHJlZS5vLCBydHRpLm8sIGV4Y2VwdC5vLCBleHByLm8pOiBMaWtld2lzZS4KCSh4cmVmLm8sIHB0Lm8sIGVycm9yLm8sIGVycmZuLm8sIHJlcG8ubywgc2VtYW50aWNzLm8pOiBMaWtld2lzZS4KCShkdW1wLm8pOiBMaWtld2lzZS4KCShvcHRpbWl6ZS5vKTogTmV3IHRhcmdldC4gIAoJKiBjbGFzcy5jOiBEb24ndCBpbmNsdWRlIHNwbGF5LXRyZWUuaC4KCSogY3AtdHJlZS5kZWYgKENUT1JfQ09NUExFVEUpOiBSZW5hbWUgdG8gQ1RPUl9TVE1ULiAgCgkqIGNwLXRyZWUuaDogSW5jbHVkZSBzcGxheS10cmVlLmguCgkoREVDTF9VTklOTElOQUJMRSk6IE5ldyBtYWNyby4KCShDVE9SX0JFR0lOX1AsIENUT1JfRU5EX1ApOiBOZXcgbWFjcm9zLgoJKGZsYWdfaW5saW5lX3RyZWVzKTogTmV3IHZhcmlhYmxlLgoJKGxvY2FsX3ZhcmlhYmxlX3ApOiBOZXcgZnVuY3Rpb24uCgkobm9uc3RhdGljX2xvY2FsX2RlY2xfcCk6IExpa2V3aXNlLgoJKG9wdGltaXplX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoY3BsdXNfdW5zYXZlX2V4cHJfbm93KTogUmVtb3ZlLgoJKGNvcHlfdHJlZV9yKTogRGVjbGFyZS4KCShyZW1hcF9zYXZlX2V4cHIpOiBMaWtld2lzZS4gIAoJKiBkZWNsLmMgKGxvY2FsX3ZhcmlhYmxlX3ApOiBEb24ndAoJbWFrZSBpdCBzdGF0aWMuCgkobG9jYWxfdmFyaWFibGVfcF93YWxrZm4pOiBOZXcgZnVuY3Rpb24uCgkobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IFJlbW92ZSBjb2RlIHRvIHRyeSB0byBhdm9pZCB3cml0aW5nCglvdXQgc3RhdGljIGNvbnN0YW50cy4KCShlbWl0X2xvY2FsX3Zhcik6IEZpeCBpbmRlbnRhdGlvbi4KCShub25zdGF0aWNfbG9jYWxfZGVjbF9wKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2RlZmF1bHRfYXJndW1lbnQpOiBVc2UgbG9jYWxfdmFyaWFibGVfcF93YWxrZm4sIG5vdAoJbG9jYWxfdmFyaWFibGVfcCwgd2hlbiB3YWxraW5nIHRoZSB0cmVlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogU2V0IHRoZSBERUNMX0NPTlRFWFQgZm9yIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCglsYWJlbHMuCgkoZmluaXNoX2NvbnN0cnVjdG9yX2JvZHkpOiBVc2UgQ1RPUl9TVE1UIHRvIG1hcmsgdGhlIGVuZCBvZiBhCgljb25zdHJ1Y3Rvci4gIAoJKiBkZWNsMi5jOiBEb24ndCBpbmNsdWRlIHNwbGF5LXRyZWUuaC4KCShmbGFnX2lubGluZV90cmVlcyk6IERlZmluZS4gIAoJKiBkdW1wLmM6IERvbid0IGluY2x1ZGUKCXNwbGF5LXRyZWUuaC4gIAoJKiBleGNlcHQuYyAoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IEZpeCBjb21tZW50IGZvcm1hdHRpbmcuCgkoZXhwYW5kX2VuZF9laF9zcGVjKTogU2V0IERFQ0xfQ09OVEVYVCBvbiB0ZW1wb3JhcnkgdmFyaWFibGVzLgoJKGV4cGFuZF90aHJvdyk6IFRpZHkgY29tbWVudC4gIAoJKiBpbml0LmMgKGJ1aWxkX3ZlY19kZWxldGVfMSk6IFVzZSBjcmVhdGVfdGVtcG9yYXJ5X3Zhci4gIAoJKiBsZXguYyAoY3BsdXNfdHJlZV9jb2RlX3R5cGUpOiBNYWtlIGl0IHN0YXRpYy4KCShjcGx1c190cmVlX2NvZGVfbGVuZ3RoKTogTGlrZXdpc2UuCgkoY3BsdXNfdHJlZV9jb2RlX25hbWUpOiBMaWtld2lzZS4gIAoJKiBvcHRpbWl6ZS5jOiBOZXcgZmlsZS4gIAoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2dvdG9fc3RtdCk6IFNldCBERUNMX1VOTElOQUJMRSBmb3IgZnVuY3Rpb25zCgl3aXRoIGNvbXB1dGVkIGdvdG9zLgoJKHNldHVwX3Z0YmxfcHRyKTogTWFyayB0aGUgYmVnaW5uaW5ncyBvZiBjb25zdHJ1Y3RvcnMgd2l0aAoJQ1RPUl9TVE1ULgoJKGV4cGFuZF9zdG10KTogSGFuZGxlIENUT1JfU1RNVCwgbm90IENUT1JfQ09NUExFVEUuCgkoZXhwYW5kX2JvZHkpOiBDYWxsIG9wdGltaXplX2Z1bmN0aW9uLiAgU2F2ZSBib2RpZXMgaWYgd2UncmUgZG9pbmcKCWlubGluaW5nIG9uIHRyZWVzLgoJKiB0cmVlLmM6IERvbid0IGluY2x1ZGUgc3BsYXktdHJlZS5oLiAgSW5jbHVkZSBpbnNuLWNvbmZpZy5oIGFuZAoJaW50ZWdyYXRlLmguCgkoY29weV90cmVlX3IpOiBNYWtlIGl0IHB1YmxpYy4KCShzdGF0ZW1lbnRfY29kZV9wKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfbG9jYWxfZm9yX3JlbWFwX3IpOiBMaWtld2lzZS4KCShjcF91c2F2ZV9yKTogTGlrZXdpc2UuCgkoY3BfdW5zYXZlKTogTGlrZXdpc2UuCgkoYnVpbGRfY3BsdXNfbmV3KTogU2V0IERFQ0xfQ09OVEVYVCBmb3IgdGVtcG9yYXJ5IHZhcmlhYmxlcy4KCSh3YWxrX3RyZWUpOiBXYWxrIGludG8gYHMnIGNsYXNzIG5vZGVzLiAgV2FsayBzdGF0ZW1lbnQgY2hhaW5zLgoJKGNvcHlfdHJlZV9yKTogSGFuZGxlICdzJyBjbGFzcyBub2Rlcy4gIFJlc3RvcmUgY2hhaW5zIGZvcgoJc3RhdGVtZW50cy4gIE51bGxpZnkgc2NvcGVzLiAgRG9uJ3QgY29weSB0eXBlcy4KCShpbml0X3RyZWUpOiBTZXQgbGFuZ191bnNhdmUgdG8gY3BfdW5zYXZlLgoJKHJlbWFwX3NhdmVfZXhwcik6IERlZmluZS4KCSogaXIudGV4aTogRG9jdW1lbnQgQ1RPUl9TVE1ULgoJCjE5OTktMTEtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKG5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiBEbyBwZXJmb3JtIHRoaXMgb3B0aW1pemF0aW9uCglmb3IgZHdhcmYyLiAgCgkobWF5YmVfc3VwcHJlc3NfZGVidWdfaW5mbyk6IExpa2V3aXNlLiAgU3RhcnQgYnkgY2xlYXJpbmcKCVRZUEVfREVDTF9TVVBQUkVTU19ERUJVRy4KCjE5OTktMTEtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IENvcHkgVFJFRV9BU01fV1JJVFRFTiBmb3IgVkFSX0RFQ0xzLgoKCSogZGVjbDIuYyAoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogRG9uJ3QgcHJ1bmUgdnRhYmxlcyBoZXJlLgoKMTk5OS0xMS0yMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVjbC5jIChwdXNoZGVjbCwgZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBjYWxsIGEgdmFyaWFkaWMKCWZ1bmN0aW9uIHdpdGggYSBub24tbGl0ZXJhbCBmb3JtYXQgc3RyaW5nLgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoKMTk5OS0xMS0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoREVDTF9ORUVERURfUCk6IFR3ZWFrIHRvIG1hdGNoIGRvY3VtZW50YXRpb24uCgoxOTk5LTExLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5kZWYgKENUT1JfQ09NUExFVEUpOiBOZXcgdHJlZSBub2RlLgoJKiBkZWNsLmMgKGZpbmlzaF9jb25zdHJ1Y3Rvcl9ib2R5KTogQWRkIGl0LCB0byBtYXJrIHRoZSBlbmQgb2YgdGhlCgljb25zdHJ1Y3Rvci4KCShmaW5pc2hfZnVuY3Rpb24pOiBEb24ndCBjYWxsIGVuZF9wcm90ZWN0X3BhcnRpYWxzIGhlcmUuCgkqIGlyLnRleGkgKENUT1JfQ09NUExFVEUpOiBEb2N1bWVudCBpdC4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogSGFuZGxlIGl0LgoJCgkqIGNwLXRyZWUuZGVmIChGVU5DVElPTl9OQU1FKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChjdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBUd2VhayBkb2N1bWVudGF0aW9uLgoJKGxhbmdfZGVjbF9mbGFncyk6IEFkZCBwcmV0dHlfZnVuY3Rpb25fcCwgYWRqdXN0IGR1bW15LgoJKERFQ0xfUFJFVFRZX0ZVTkNUSU9OX1ApOiBOZXcgbWFjcm8uCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBIYW5kbGUgZGVjbGFyYXRpb25zIG9mIF9fRlVOQ1RJT05fXywKCWV0Yy4sIGluIGEgdGVtcGxhdGUgZnVuY3Rpb24uICBVc2UgYXRfZnVuY3Rpb25fc2NvcGVfcCBpbnN0ZWFkIG9mCglleHBhbmRpbmcgaXQgaW5saW5lLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IEhhbmRsZSBERUNMX1BSRVRUWV9GVU5DVElPTl9QIGRlY2xhcmF0aW9ucwoJc3BlY2lhbGx5LgoJKHRzdWJzdCk6IEhhbmRsZSBGVU5DVElPTl9OQU1FLgoJKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfZGVjbCk6IFByZXZlbnQgcmVkZWNsYXJhdGlvbnMgb2YgX19QUkVUVFlfRlVOQ1RJT05fXywKCWV0Yy4gaW4gaW5zdGFudGlhdGlvbi4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NvbXBvdW5kX3N0bXQpOiBEZWNsYXJlIF9fRlVOQ1RJT05fXywgZXRjLiwKCWV2ZW4gaW4gdGVtcGxhdGUgZnVuY3Rpb25zLgoJKHNldHVwX3Z0YmxfcHRyKTogRG9uJ3QgZGVjbGFyZSBfX1BSRVRUWV9GVU5DVElPTiBpbiB0aGUKCWNvbmRpdGlvbmFsIHNjb3BlIGF0IHRoZSB0b3Agb2YgYSBkZXN0cnVjdG9yLgoJCgkqIGVycm9yLmMgKGR1bXBfZnVuY3Rpb25fZGVjbCk6IFVzZSBgWyB3aXRoIC4uLiBdJyBzeW50YXggZm9yCglzcGVjaWFsaXphdGlvbnMgdG9vLgoKMTk5OS0xMS0yMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdW5hcnlfb3BfZXhwcik6IE9ubHkgc2V0IFRSRUVfTkVHQVRFRF9JTlQKCXdoZW4gYWN0dWFsbHkgbmVnYXRpdmUuCgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEV4cGFuZCBjb21tZW50IGFib3V0CglzdHJhbmdlIE5VTEwgY2hlY2ssIG1vdmVkIGZyb20gLi4uCgkoY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiAuLi4gaGVyZS4gUmVtb3ZlIHVubmVlZGVkCgljb2RlLgoKMTk5OS0xMS0yMSAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAbHNkLmljLnVuaWNhbXAuYnI+CgoJKiBjcC10cmVlLmggKGJ1aWxkX3ZlY19kZWxldGUpOiBSZW1vdmUgYGF1dG9fZGVsZXRlJyBhcmd1bWVudC4KCSogaW5pdC5jIChidWlsZF92ZWNfZGVsZXRlLCBidWlsZF92ZWNfZGVsZXRlXzEpOiBMaWtld2lzZS4KCUFsd2F5cyBkZXN0cnVjdCB2aXJ0dWFsIGJhc2VzIG9mIGFycmF5IGNvbXBvbmVudHMsIGJ1dCBuZXZlcgoJZGVsZXRlIHRoZW0uCgkoYnVpbGRfdmVjX2luaXQpOiBBZGp1c3QgaW52b2NhdGlvbnMuCgkoYnVpbGRfZGVsZXRlKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiBMaWtld2lzZS4KCjE5OTktMTEtMTkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjcC10cmVlLmggKGdyb2tfbWV0aG9kX3F1YWxzKTogUmV0dXJuIHRoaXMgcG9pbnRlciBxdWFsaWZpZXJzLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWRqdXN0IGNhbGxzIHRvIGdyb2tfbWV0aG9kX3F1YWxzLgoJKiBkZWNsMi5jIChncm9rX21ldGhvZF9xdWFscyk6IEFjY2VwdCBgcmVzdHJpY3QnIGFzIGFwcGx5aW5nIHRvCgl0aGUgb2JqZWN0IHBvaW50ZXIuIFJldHVybiBzdWNoIHF1YWxpZmllcnMuCgkoZ3Jva2NsYXNzZm4pOiBBcHBseSB0aGlzIHBvaW50ZXIgcXVhbGlmaWVycy4gQ2xlYW51cCB1bnVzZWQKCXZhcmlhYmxlcy4KCjE5OTktMTEtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IEZpeCB0eXBvLgoJKGV4cGFuZF9leGNlcHRpb25fYmxvY2tzKTogU2ltcGxpZnkuICBEb24ndCBjYWxsCglleHBhbmRfbGVmdG92ZXJfY2xlYW51cHMuCgoxOTk5LTExLTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCwgZGVjbC5jIChjb21wdXRlX2FycmF5X2luZGV4X3R5cGUpOiBNYWtlIG5vbnN0YXRpYy4KCSogcHQuYyAodHN1YnN0LCBjYXNlIElOVEVHRVJfVFlQRSk6IENhbGwgaXQuICAKCUNoZWNrIHVzZXNfdGVtcGxhdGVfcGFybXMuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogSWYgd2UncmUgYSBsb2NhbCBjbGFzcyBpbiBhIHRlbXBsYXRlCglmdW5jdGlvbiwgYWRkIGEgVEFHX0RFRk4uCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IElmIHRoaXMgaXMgYSBsb2NhbCBjbGFzcyBpbiBhCgl0ZW1wbGF0ZSBmdW5jdGlvbiwgY2FsbCBwdXNodGFnLgoJKHRzdWJzdF9leHByLCBjYXNlIFRBR19ERUZOKTogSGFuZGxlIGNsYXNzZXMsIHRvby4KCglFbWl0IGRlYnVnIGluZm8gd2l0aCB0aGUgdnRhYmxlLgoJKiBzZWFyY2guYyAobWF5YmVfc3VwcHJlc3NfZGVidWdfaW5mbyk6IE5ldyBmdW5jdGlvbi4uLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiAuLi5zcGxpdCBvdXQgZnJvbSBoZXJlLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaXQuCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IE92ZXJyaWRlIFRZUEVfREVDTF9TVVBQUkVTU19ERUJVRwoJaWYgd2UncmUgd3JpdGluZyBvdXQgdGhlIHZ0YWJsZS4KCSogZGVjbC5jLCBzZWFyY2guYyAoZGZzX2RlYnVnX21hcmssIGRmc19kZWJ1Z191bm1hcmtlZF9wLCAKCW5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiAjaWYgMCBvdXQuCgoxOTk5LTExLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX0xPQ0FMX0ZVQ05USU9OX1ApOiBOZXcgbWFjcm8uCgkqIGNhbGwuYyAoZXF1YWxfZnVuY3Rpb25zKTogVXNlIERFQ0xfTE9DQUxfRlVDTlRJT05fUCwgbm90CglUUkVFX1BFUk1BTkVOVC4KCSogZGVjbC5jIChwdXNoZGVjbCk6IFNldCBERUNMX0xPQ0FMX0ZVTkNUSU9OX1AuCgkqIGRlY2wyLmMgKGxvb2t1cF9hcmdfZGVwZW5kZW50KTogVXNlIGl0LgoJCgkqIGNwLXRyZWUuaCAoY3BfZmluaXNoX2RlY2wpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCk6IExpa2V3aXNlLgoJKHB1c2hfcGVybWFuZW50X29ic3RhY2spOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkocHVzaF9leHByZXNzaW9uX29ic3RhY2spOiBMaWtld2lzZS4KCShwdXNoX3NjcmF0Y2hfb2JzdGFjayk6IExpa2V3aXNlLgoJKERFQ0xfVEVNUExBVEVfUEFSTV9QKTogUm9idXN0aWZ5LgoJKFNFVF9ERUNMX1RFTVBMQVRFX1BBUk1fUCk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IERvbid0IG1hbmlwdWxhdGUgb2JzdGFja3MuCgkoZmluaXNoX3Z0YmxzKTogTGlrZXdpc2UuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBBZGp1c3QgY2FsbHMgdG8gY3BfZmluaXNoX2RlY2wuCgkqIGRlY2wuYyAoYmluZGluZ19mb3JfbmFtZSk6IERvbid0IG1hbmlwdWxhdGUgb2JzdGFja3MuCgkobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBMaWtld2lzZS4KCShwdXNoZGVjbCk6IExpa2V3aXNlLgoJKGltcGxpY2l0bHlfZGVjbGFyZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3R5cGVuYW1lX3R5cGUpOiBMaWtld2lzZS4KCShzdGFydF9kZWNsKTogTGlrZXdpc2UuCgkoY3BfZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCShmaW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKGRlc3Ryb3lfbG9jYWxfc3RhdGljKTogTGlrZXdpc2UuCgkoZXhwYW5kX3N0YXRpY19pbml0KTogTGlrZXdpc2UuCgkoY29tcGxldGVfYXJyYXlfdHlwZSk6IExpa2V3aXNlLgoJKGdyb2t2YXJkZWNsKTogTGlrZXdpc2UuCgkoYnVpbGRfcHRybWVtZm5jX3R5cGUpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHhyZWZfdGFnKTogTGlrZXdpc2UuCgkoeHJlZl9iYXNldHlwZXMpOiBMaWtld2lzZS4KCShzdGFydF9lbnVtKTogTGlrZXdpc2UuCgkoZmluaXNoX2VudW0pOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHN0YXJ0X21ldGhvZCk6IEFkanVzdCBjYWxsIHRvIGNwX2ZpbmlzaF9kZWNsLgoJKiBkZWNsMi5jIChmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBEb24ndCBtYW5pcHVsYXRlCglvYnN0YWNrcy4KCShncm9rZmllbGQpOiBMaWtld2lzZS4KCShncm9rYml0ZmllbGQpOiBMaWtld2lzZS4KCShnZXRfdGVtcF9uYW1lKTogTGlrZXdpc2UuCgkoZ2V0X3NlbnRyeSk6IExpa2V3aXNlLgoJKGZuaXNoX2ZpbGUpOiBMaWtld2lzZS4KCShsb29rdXBfYXJnX2RlcGVuZGVudCk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogTGlrZXdpc2UuCgkocHVzaF9laF9pbmZvKTogTGlrZXdpc2UuCgkoZG9fcG9wX2V4Y2VwdGlvbik6IExpa2V3aXNlLgoJKGluaXRpYWxpemVfaGFuZGxlcl9wYXJtKTogTGlrZXdpc2UuCgkoZXhwYW5kX2VuZF9laF9zcGVjKTogTGlrZXdpc2UuCgkoYWxsb2NfZWhfb2JqZWN0KTogTGlrZXdpc2UuCgkoZXhwYW5kX3Rocm93KTogTGlrZXdpc2UuCgkqIGV4cHIuYyAoZXh0cmFjdF9zY2FsYXJfaW5pdCk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogTGlrZXdpc2UuCgkqIGxleC5jIChnZXRfdGltZV9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoc25hcmZfZGVmYXJnKTogTGlrZXdpc2UuCgkoYWRkX2RlZmFyZ19mbik6IExpa2V3aXNlLgoJKGlzX2dsb2JhbCk6IFNpbXBsaWZ5LgoJKGRvX2lkZW50aWZpZXIpOiBEb24ndCBjaGVjayBUUkVFX1BFUk1BTkVOVC4KCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBEb24ndCBtYW5pcHVsYXRlIG9ic3RhY2tzLgoJKiBwYXJzZS55IChjb25kaXRpb24pOiBBZGp1c3QgY2FsbCB0byBjcF9maW5pc2hfZGVjbC4KCShwcmltYXJ5KTogTGlrZXdpc2UuCgkoaW5pdGRjbCk6IExpa2V3aXNlLgoJKGluaXRkY2wwX2lubmFyZHMpOiBMaWtld2lzZS4KCShub21vZHNfaW5pdGRjbDApOiBMaWtld2lzZS4KCSogcHQuYyAocHVzaF9pbmxpbmVfdGVtcGxhdGVfcGFybXNfcmVjdXJzaXZlKTogVXNlCglTRVRfREVDTF9URU1QTEFURV9QQVJNX1AuCgkocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3QgbWFuaXB1bGF0ZSBvYnN0YWNrcy4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IEFkanVzdCBjYWxsIHRvCglmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wuCgkodHN1YnN0X2RlY2wpOiBEb24ndCBtYW5pcHVsYXRlIG9ic3RhY2tzLgoJKHRzdWJzdF9leHByKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogQWRqdXN0IGNhbGxzIHRvIGNwX2ZpbmlzaF9kZWNsLgoJKiBydHRpLmMgKGNhbGxfdm9pZF9mbik6IERvbid0IG1hbmlwdWxhdGUgb2JzdGFja3MuCgkoZ2V0X3RpbmZvX3Zhcik6IExpa2V3aXNlLgoJKGdldF90aW5mb19mbl91bnVzZWQpOiBMaWtld2lzZS4KCShidWlsZF9keW5hbWljX2Nhc3RfMSk6IExpa2V3aXNlLgoJKGV4cGFuZF9zaV9kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NsYXNzX2Rlc2MpOiBMaWtld2lzZS4KCShleHBhbmRfcHRyX2Rlc2MpOiBMaWtld2lzZS4KCShleHBhbmRfYXR0cl9kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX2dlbmVyaWNfZGVzYyk6IExpa2V3aXNlLgoJKHN5bnRoZXNpemVfdGluZm9fZm4pOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYXNtX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfbmFtZWRfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuCgkoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9jbGFzc19kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX3R5cGVvZik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX21ldGhvZF90eXBlKTogTGlrZXdpc2UuCgkocmV2ZXJzZV9wYXRoKTogTGlrZXdpc2UuCgkoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogTGlrZXdpc2UuCgkoYnVpbGRfZXhwcl9wdHJfd3JhcHBlcik6IExpa2V3aXNlLgoJKHB1c2hfZXhwcmVzc2lvbl9vYnN0YWNrKTogUmVtb3ZlLgoJKHB1c2hfcGVybWFuZW50X29ic3RhY2spOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBMaWtld2lzZS4KCQoxOTk5LTExLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogVXNlIGJ1aWxkX3RhcmdldF9leHByX3dpdGhfdHlwZS4KCShjb252ZXJ0X2xpa2UpOiBMaWtld2lzZS4KCShidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChidWlsZF90YXJnZXRfZXhwcik6IFJlbW92ZS4KCShidWlsZF90YXJnZXRfZXhwcl93aXRoX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBVc2UgZ2V0X3RhcmdldF9leHByLgoJKiBkZWNsLmMgKGJ1aWxkX3RhcmdldF9leHByKTogTW92ZSB0byAuLi4KCSogdHJlZS5jIChidWlsZF90YXJnZXRfZXhwcik6IEhlcmUuICBNYWtlIGl0IHN0YXRpYy4KCShidWlsZF90YXJnZXRfZXhwcl93aXRoX3R5cGUpOiBOZXcgZnVuY3Rpb24uICBTZXQgREVDTF9DT05URVhUIG9uCgl0aGUgdGVtcG9yYXJ5IFZBUl9ERUNMcy4KCShnZXRfdGFyZ2V0X2V4cHIpOiBVc2UgaXQuCgoxOTk5LTExLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFByb3BhZ2F0ZSBERUNMX0RFRkVSX09VVFBVVC4KCSogZGVjbDIuYyAoY29tZGF0X2xpbmthZ2UpOiBTZXQgREVDTF9ERUZFUl9PVVRQVVQuCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2ZuX3VudXNlZCk6IFNwbGl0IG91dCBmcm9tIGdldF90aW5mb19mbi4KCSogY2xhc3MuYyAoc2V0X3J0dGlfZW50cnkpOiBVc2UgaXQuCgoxOTk5LTExLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChjcGx1c19leHBhbmRfZXhwcl9zdG10KTogRG9uJ3QgY2FsbCBicmVha19vdXRfY2xlYW51cHMKCWhlcmUuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZXhwcl9zdG10KTogQ2FsbCBpdCBoZXJlIGluc3RlYWQuICBNb3ZlCglkZWZhdWx0X2NvbnZlcnNpb24gbG9naWMgdG8gc2VtYW50aWMtYW5hbHlzaXMgdGltZS4KCjE5OTktMTEtMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoc3ludGhlc2l6ZV90aW5mb19mbik6IFNldCBERUNMX0RFRkVSX09VVFBVVC4KCkZyaSBOb3YgMTIgMTI6NTY6MzIgTVNUIDE5OTkJRGllZ28gTm92aWxsbyA8ZG5vdmlsbG9AY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoaW5pdF9pbml0X3Byb2Nlc3NpbmcpOiBSZS1pbnN0YXRlZCBOb3YgMTEgcGF0Y2ggYWZ0ZXIKCWFwcHJvdmFsLgoKRnJpIE5vdiAxMiAxMDo0MjowMiBNU1QgMTk5OQlEaWVnbyBOb3ZpbGxvIDxkbm92aWxsb0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChpbml0X2luaXRfcHJvY2Vzc2luZyk6IFVuZG8gcGF0Y2ggZnJvbSBOb3YgMTEsIDE5OTkuCglQYXRjaCBoYWQgbm90IGJlZW4gYXBwcm92ZWQgeWV0LgoKMTk5OS0xMS0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoY29tcHV0ZV9hcnJheV9pbmRleF90eXBlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJZ3Jva2RlY2xhcmF0b3IuCgkoY3JlYXRlX2FycmF5X3R5cGVfZm9yX2RlY2wpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IFVzZSB0aGVtLgoKCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogRG9uJ3Qgc3VzcGVuZF9tb21lbnRhcnkgb3IKCXJlc3VtZV9tb21lbnRhcnkuCgpUaHUgTm92IDExIDEyOjQyOjExIE1TVCAxOTk5CURpZWdvIE5vdmlsbG8gPGRub3ZpbGxvQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGluaXRfaW5pdF9wcm9jZXNzaW5nKTogSGVhZGVyIGluZm9ybWF0aW9uIGZvcgoJYXJyYXlzIGFsbG9jYXRlZCB2aWEgYG5ldycgc2hvdWxkIGhhdmUgdGhlIHNhbWUgYWxpZ25tZW50IHVzZWQgYnkKCW1hbGxvYy4KCjE5OTktMTEtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX25hbWUpOiBEb24ndCBjcmFzaCBpZiBnaXZlbiBhIGZyaWVuZAoJcHNldWRvLWluc3RhbnRpYXRpb24uCgoJKiBjcC10cmVlLmggKGJ1aWxkX2VudW1lcmF0b3IpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGVudW1fbmV4dF92YWx1ZSk6IFJlbW92ZS4KCShlbnVtX292ZXJmbG93KTogTGlrZXdpc2UuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCByZWdpc3RlciBlbnVtX25leHRfdmFsdWUgYXMgYSByb290LgoJKHN0YXJ0X2VudW0pOiBDbGVhciBUWVBFX1ZBTFVFUyBmb3IgYSByZWRlZmluZWQgZW51bS4KCShmaW5pc2hfZW51bSk6IFJlc2V0IHRoZSB0eXBlIG9mIGVudW1lcmF0aW9uIGNvbnN0YW50cy4KCShidWlsZF9lbnVtZXJhdG9yKTogRml4IGluZGVudGF0aW9uLiAgRG9uJ3QgY29weSBDT05TVF9ERUNMcyB3aGVuCgl3ZSBkb24ndCBuZWVkIHRvLiAgTWFpbnRhaW4gdGhlIFRZUEVfVkFMVUVTIGxpc3QgYW5kIGxvb2sgdGhlcmUKCWZvciB0aGUgcHJldmlvdXNseSBkZWZpbmVkIGVudW1lcmF0aW9uIGNvbnN0YW50LiAgTGV0IGVudW1lcmF0aW9uCgljb25zdGFudHMgaGF2ZSB0aGUgdHlwZSBvZiB0aGVpciB2YWx1ZXMgdW50aWwgdGhlIGVudW1lcmF0aW9uIHR5cGUKCWlzIGNvbXBsZXRlLgoJKiBwYXJzZS55IChlbnVtbGlzdF9vcHQsIGVudW1saXN0LCBlbnVtZXJhdG9yKTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkoc3RydWN0c3ApOiBBZGp1c3QuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBwdC5jICh0c3Vic3RfZW51bSk6IEFkanVzdCBhY2NvcmRpbmcgdG8gYnVpbGRfZW51bWVyYXRvciBjaGFuZ2VzLgoJCldlZCBOb3YgMTAgMTI6NDM6MjEgMTk5OSAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgkgICAgICAgICAgICAgICAgICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC10cmVlLmg6IFRlc3QgYEdDQ19WRVJTSU9OJywgbm90IGBIQVZFX0dDQ19WRVJTSU9OJy4KCjE5OTktMTEtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHhfbGFzdF9kdG9yX2luc24gYW5kCgl4X2xhc3RfcGFybV9jbGVhbnVwX2luc24uCgkqIGRlY2wuYyAobGFzdF9kdG9yX2luc24pOiBSZW1vdmUuCgkobGFzdF9wYXJtX2NsZWFudXBfaW5zbik6IExpa2V3aXNlLgoJKGV4cGFuZF9zdGFydF9lYXJseV90cnlfc3RtdHMpOiBEb24ndCBzZXQgdGhlbS4KCShzdG9yZV9wYXJtX2RlY2xzKTogTGlrZXdpc2UuCgkoc2F2ZV9mdW5jdGlvbl9kYXRhKTogT3Igc2F2ZSB0aGVtLgoJKG1hcmtfbGFuZ19mdW5jdGlvbik6IE9yIG1hcmsgdGhlbS4KCjE5OTktMTEtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHMpOiBHZW5lcmF0ZSBjbGVhbnVwIGNvZGUgYXQKCXNlbWFudGljLWFuYWx5c2lzIHRpbWUuICBEZXN0cm95IG9iamVjdHMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIuCgoxOTk5LTExLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChiZWdpbl9uZXdfcGxhY2VtZW50KTogUmVtb3ZlLgoJKGZpbmlzaF9uZXdfcGxhY2VtZW50KTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IERvbid0IHN1c3BlbmRfbW9tZW50YXJ5IG9yCglyZXN1bWVfbW9tZW50YXJ5LgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkobWF5YmVfYnVpbGRfY2xlYW51cF8xKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChwdXNoX2VoX2NsZWFudXApOiBMaWtld2lzZS4KCShidWlsZF90ZXJtaW5hdGVfaGFuZGxlcik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHBhcnNlX2RlY2wpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGluaXRkZWNscywgbm90eXBlX2luaXRkZWNscywgaW5pdGRjbCk6IERvbid0IHJldHVybiBpbnQuCgkoaW5pdGRjbDAsIG5vdHlwZV9pbml0ZGNsMCwgaW5pdGRjbDBfaW5uYXJkcyk6IExpa2V3aXNlLgoJKC5iZWdpbl9uZXdfcGxhY2VtZW50KTogUmVtb3ZlLgoJKC5maW5pc2hfbmV3X3BsYWNlbWVudCk6IExpa2V3aXNlLgoJKG5vbm1vbWVudGFyeV9leHByKTogTGlrZXdpc2UuCgkoc3VzcGVuZF9tb20pOiBMaWtld2lzZS4KCShjb25kaXRpb24pOiBEb24ndCBzdXNwZW5kX21vbWVudGFyeSwgcmVzdW1lX21vbWVudGFyeSwgb3Iga2VlcAoJdHJhY2sgb2YgbmVlZCB0byByZXN1bWUuCgkodW5hcnlfZXhwcik6IExpa2V3aXNlLgoJKG5ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCShkZWNsKTogTGlrZXdpc2UuCgkoc3RydWN0c3ApOiBMaWtld2lzZS4KCShuZXdfdHlwZV9pZCk6IExpa2V3aXNlLgoJKG1heWJlX3Bhcm1saXN0KTogTGlrZXdpc2UuCgkoZGlyZWN0X2FmdGVyX3R5cGVfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCShkaXJlY3RfbmV3X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShkaXJlY3RfYWJzdHJhY3RfZGVjbGFyYXRpb24pOiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogRG9uJ3Qgc3VzcGVuZF9tb21lbnRhcnkgb3IgcmVzdW1lX21vbWVudGFyeS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX25ld19wbGFjZW1lbnQpOiBSZW1vdmUuCgkoZmluaXNoX25ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCQoxOTk5LTExLTA1ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjcC10cmVlLmggKFZBUl9URU1QTF9UWVBFX09SX0ZVTkNUSU9OX0RFQ0xfQ0hFQ0spOiBOZXcgbWFjcm8uCgkoREVDTF9URU1QTEFURV9JTkZPKTogVXNlIGl0LgoJKiBkZWNsLmMgKHdhcm5fZXh0ZXJuX3JlZGVjbGFyZWRfc3RhdGljKTogRG8gbm90aGluZyBmb3IKCVRFTVBMQVRFX0RFQ0xzLgoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBFeHBsaWNpdGx5IGNoZWNrIGZvciBmdW5jdGlvbiBvciB2YXJpYWJsZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF91bmFyeV9vcF9leHByKTogQ2hlY2sgd2hldGhlciByZXN1bHQgaXMgYWxzbwoJYW4gSU5URUdFUl9DU1QuCgoxOTk5LTExLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHR5cGVjazIubyk6IERlcGVuZCBvbiBvdXRwdXQuaC4KCSogdHlwZWNrMi5jOiBJbmNsdWRlIG91dHB1dC5oLgoKCSogZGVjbC5jIChmbGFnX2Fuc2kpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgoJKiBwdC5jICh0aW5zdF9sZXZlbF90aWNrKTogTWFrZSBpdCBzdGF0aWMuCgkobGFzdF90ZW1wbGF0ZV9lcnJvcl90aWNrKTogTGlrZXdpc2UuCgkKCSogY3AtdHJlZS5oIChtYXBjYXIpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoc2VhcmNoX3RyZWUpOiBMaWtld2lzZS4KCSh3YWxrX3RyZWVfZm4pOiBOZXcgdHlwZWRlZi4KCSh3YWxrX3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuYyAoYm90X21hbmlwKTogQ2hhbmdlIHByb3RvdHlwZS4gIEFkanVzdCB0byBiZSBjYWxsZWQgdmlhCgl3YWxrX3RyZWUuCgkoYm90X3JlcGxhY2UpOiBMaWtld2lzZS4KCShub19saW5rYWdlX2hlbHBlcik6IExpa2V3aXNlLgoJKGNvcHlfdHJlZV9yKTogTmV3IGZ1bmN0aW9uLgoJKHNlYXJjaF90cmVlKTogUmVuYW1lLCBhbmQgYWRqdXN0LCB0byBiZWNvbWUgLi4uCgkod2Fsa190cmVlKTogTmV3IGZ1bmN0aW9uLgoJKG1hcGNhcik6IFJlbW92ZS4KCSh0YXJnZXRfcmVtYXApOiBSZW1vdmUuCgkodGFyZ2V0X3JlbWFwX2NvdW50KTogTGlrZXdpc2UuCgkoYnJlYWtfb3V0X3RhcmdldF9leHBycyk6IFVzZSB3YWxrX3RyZWUuCgkqIGRlY2wuYyAobG9jYWxfdmFyaWFibGVfcCk6IENoYW5nZSBwcm90b3R5cGUuCgkoY2hlY2tfZGVmYXVsdF9hcmd1bWVudCk6IFVzZSB3YWxrX3RyZWUuCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm1fcik6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gLi4uCgkoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IEhlcmUuICBVc2UgaXQsIHZpYSB3YWxrX3RyZWUuCgkKMTk5OS0xMS0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGNoZWNrX2JpdGZpZWxkX2RlY2wpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglmaW5pc2hfc3R1Y3RfMS4KCShjaGVja19maWVsZF9kZWNsKTogTGlrZXdpc2UuICBSZWN1cnNpdmVseSBleGFtaW5lIG1lbWJlcnMgb2YKCWFub255bW91cyBzdHJ1Y3RzLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSB0aGVtLgoJKiBjcC10cmVlLmggKEFOT05fVU5JT05fVFlQRV9QKTogTmV3IG1hY3JvLgoJCjE5OTktMTEtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBSZW1vdmUgZGVhZCBjb2RlLgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRml4IHRoaW5rbyBmb3IgY2F0Y2gtY2xhdXNlcy4KCjE5OTktMTEtMDIgIFNjb3R0IFNueWRlciAgPHNueWRlckBmbmFsLmdvdj4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSGFuZGxlIFJFQUxQQVJUX0VYUFIgYW5kCglJTUFHUEFSVF9FWFBSLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoKMTk5OS0xMS0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAobWF5YmVfbWFrZV9vbmVfb25seSk6IEFsd2F5cyBtYWtlIHRoaW5ncyBjb21kYXQgb24KCUVMRiB0YXJnZXRzLCB0b28uCgoxOTk5LTEwLTMxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBDYWxsIGZyZWVfYWZ0ZXJfcGFyc2luZyBmb3IgZnVuY3Rpb25zCgl3ZSBhcmUgbm90IGltbWVkaWF0ZWx5IHR1cm5pbmcgaW50byBSVEwuCgoxOTk5LTEwLTMxICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChmbGFnX2R1bXBfdHJhbnNsYXRpb25fdW5pdCk6IEFkZCBkZWNsLgoKU2F0IE9jdCAzMCAyMjo0Mjo1MCAxOTk5ICBTdGVwaGVuIEwgTW9zaGllciA8bW9zaGllckBtZWRpYW9uZS5uZXQ+CgoJKiBsZXguYyAoeXlsZXgpOiBBY2NlcHQgJ2YnIGluIG1hbnRpc3NhIG9mIGhleCBmbG9hdCBjb25zdGFudC4KCjE5OTktMTAtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHBvcF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3QgY2FsbCBmcmVlIG9uIGEgTlVMTAoJcG9pbnRlci4KCSogc2VtYW50aWNzLmM6IEluY2x1ZGUgZ2djLmguCgkoZXhwYW5kX2JvZHkpOiBEbyBnYXJiYWdlLWNvbGxlY3Rpb24gYWZ0ZXIgcHJvY2Vzc2luZyBhIHRlbXBsYXRlCglmdW5jdGlvbi4gIENsZWFyIERFQ0xfU0FWRURfVFJFRSBhZnRlciBnZW5lcmF0aW5nIFJUTCBmb3IgYQoJZnVuY3Rpb24uCgkqIE1ha2VmaWxlLmluIChzZW1hbnRpY3Mubyk6IERlcGVuZCBvbiBnZ2MuaC4KCQoxOTk5LTEwLTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IE9ubHkgY29tcGxhaW4gaWYgc28gcmVxdWVzdGVkLgoJKiBwYXJzZS55IChuZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBBZGp1c3QgY2FsbHMuCgkodHlwZW5hbWVfc3ViMCk6IExpa2V3aXNlLgoJKHR5cGVuYW1lX3N1YjEpOiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKGNvbnZlcnRfdGVtcGxhdGVfYXJndW1lbnQpOiBQYXNzIGNvbXBsYWluIHRvCgltYWtlX3R5cGVuYW1lX3R5cGUuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkKMTk5OS0xMC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfaGFuZGxlcik6IEVuZCB0aGUgc2NvcGUgb2YgdGhlIGhhbmRsZXIKCWJlZm9yZSBhdHRhY2hpbmcgaXQgdG8gdGhlIHN0YXRlbWVudC10cmVlLgoKMTk5OS0xMC0yOCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB6ZW1idS5jb20+CgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogR2l2ZSBhIGJldHRlciBlcnJvciBtZXNzYWdlIGZvcgoJYW4gYXR0ZW1wdCB0byBkeW5hbWljX2Nhc3QgZnJvbSBhIG5vbi1wb2x5bW9ycGhpYyB0eXBlLgoKMTk5OS0xMC0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobWFrZV90ZW1wX3ZlYyk6IFJlbW92ZS4KCShtYWtlX3NjcmF0Y2hfdmVjKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IFVzZSBtYWtlX3RyZWVfdmVjLgoJKGFkZF9jb252X2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2J1aWx0aW5fY2FuZGlkYXRlKTogTGlrZXdpc2UuCgkoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBmb29sIHdpdGggdGhlIG1vbWVudGFyeSBvYnN0YWNrLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGV4cGFuZF9kaXJlY3RfdnRibHNfaW5pdCk6IExpa2V3aXNlLgoJKGJlZ2luX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCShmaW5pc2hfaW5pdF9zdG10cyk6IExpa2V3aXNlLgoJKiBwdC5jIChhZGRfdG9fdGVtcGxhdGVfYXJncyk6IFVzZSBtYWtlX3RyZWVfdmVjLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3QgZm9vbCB3aXRoIHRoZSBtb21lbnRhcnkgb2JzdGFjay4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKHRzdWJzdF90ZW1wbGF0ZV9hcmdfdmVjdG9yKTogVXNlIG1ha2VfdHJlZV92ZWMuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IERvbid0IGZvb2wgd2l0aCB0aGUgbW9tZW50YXJ5IG9ic3RhY2suCgkodHN1YnN0X2RlY2wpOiBMaWtld2lzZS4gIFVzZSBtYWtlX3RyZWVfdmVjLgoJKHRyeV9vbmVfb3ZlcmxvYWQpOiBMaWtld2lzZS4KCSh0cnlfY2xhc3NfdW5pZmljYXRpb24pOiAgRG9uJ3QgZm9vbCB3aXRoIHRoZSBtb21lbnRhcnkgb2JzdGFjay4KCShnZXRfYmluZGluZ3NfcmVhbCk6IFVzZSBtYWtlX3RyZWVfdmVjLgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCSogcnR0aS5jIChzeW50aGVzaXplX3RpbmZvX2ZuKTogRG9uJ3QgZm9vbCB3aXRoIHRoZSBtb21lbnRhcnkgb2JzdGFjay4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfZG9fc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3JfZXhwcik6IExpa2V3aXNlLgoJKGZpbmlzaF9zd2l0Y2hfY29uZCk6IExpa2V3aXNlLgoJKGRvX3B1c2hsZXZlbCk6IExpa2V3aXNlLgoJKGRvX3BvcGxldmVsKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAobWFrZV90ZW1wX3ZlYyk6IFJlbW92ZS4KCQoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEdW1wIEhBTkRMRVJzIGFuZCBTQVZFX0VYUFJzLiAgRHVtcAoJQ0xFQU5VUF9QIGZvciBhIFRSWV9CTE9DSy4KCSogaXIudGV4aTogRG9jdW1lbnQgU0FWRV9FWFBSLgoKVHVlIE9jdCAyNiAyMzoyOTo1NiAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6ICBDaGVjayB0aGF0IHRoZSBidWlsdC1pbiBmdW5jdGlvbiBpcwoJb2YgY2xhc3MgQlVJTFRfSU5fTk9STUFMIGJlZm9yZSB0cnlpbmcgdG8gcmVjb25naXplIGl0IGFzIEJVSUxUX0lOX0FCUy4KCSogdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IFNpbWlsYXJseS4gCgoxOTk5LTEwLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChwb3BsZXZlbCk6IERvbid0IHNldCBCTE9DS19UWVBFX1RBR1MuICBEb24ndCBjYWxsCglyZW1lbWJlcl9lbmRfbm90ZS4KCjE5OTktMTAtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHB1c2hfb3ZlcmxvYWRlZF9kZWNsXzEpOiBVc2UgcHVzaGRlY2wuCgkKCSogZGVjbC5jIChhdXRvX2Z1bmN0aW9uKTogUmVwbGFjZSAjaWZkZWYnZCBfX2lubGluZSB3aXRoIGp1c3QKCXBsYWluIGlubGluZS4KCSogbGV4LmMgKG15X2dldF9ydW5fdGltZSk6IExpa2Vpc2UuCgkoeXlwcmludCk6IExpa2V3aXNlLgoJKGlkZW50aWZpZXJfdHlwZSk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoc3RhcnRfc3F1YW5nbGluZyk6IExpa2V3aXNlLgoJKGVuZF9zcXVhbmdsaW5nKTogTGlrZXdpc2UuCgkoaWNhdCk6IExpa2V3aXNlLgoJKG9sZF9iYWNrcmVmX2luZGV4KTogTGlrZXdpc2UuCgkoZmx1c2hfcmVwZWF0cyk6IExpa2V3aXNlLgoJKGlzc3VlX2t0eXBlKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGVtcHR5X3Bhcm1zKTogTGlrZXdpc2UuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJCjE5OTktMTAtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBSZXBsYWNlIHNldmVyYWwgdXNlcyBvZgoJcXVldWVfYW5kX2R1bXBfaW5kZXggd2l0aCBkdW1wX2NoaWxkLgoKMTk5OS0xMC0yMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXhwci5jOiBJbmNsdWRlIHRtX3AuaC4KCjE5OTktMTAtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKFNDT1BFX1BBUlRJQUxfUCk6IE5ldyBtYWNyby4KCShwdXNobGV2ZWxfdGVtcG9yYXJ5KTogUmVtb3ZlLgoJKGFkZF9zY29wZV9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKHB1c2hsZXZlbF90ZW1wb3JhcnkpOiBSZW1vdmUuCgkocG9wbGV2ZWwpOiBVc2UgYWRkX3Njb3BlX3N0bXQuCgkoc3RhcnRfZGVjbF8xKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChhZGRfc2NvcGVfc3RtdCk6IE5ldyBmdW5jdGlvbi4KCShkb19wdXNobGV2ZWwpOiBVc2UgaXQuCgkoZG9fcG9wbGV2ZWwpOiBVc2UgaXQuCgkoZXhwYW5kX3N0bXQpOiBDaGVjayBTQ09QRV9QQVJUSUFMX1AuCgkKCSogY3AtdHJlZS5kZWYgKEVNUFRZX0NMQVNTX0VYUFIpOiBOZXcgdHJlZSBub2RlLgoJKiBjYWxsLmMgKGJ1aWxkX2NhbGwpOiBVc2UgRU1QVFlfQ0xBU1NfRVhQUiBpbnN0ZWFkIG9mIFJUTF9FWFBSLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogRXhwYW5kIGl0LgoJKiBpci50ZXhpOiBEb2N1bWVudCBFTVBUWV9DTEFTU19FWFBSLgoJCjE5OTktMTAtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKERFQ0xfTkFNRVNQQUNFX1NDT1BFX1ApOiBEb24ndCB0cmVhdCB0ZW1wbGF0ZQoJcGFyYW1ldGVycyBhcyBoYXZpbmcgbmFtZXNwYWNlIHNjb3BlLgoKMTk5OS0xMC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1ldGhvZC5jIChQQVJNX0NBTl9CRV9BUlJBWV9UWVBFKTogUmVtb3ZlLgoJKG1hbmdsaW5nX2ZsYWdzKTogTmV3IHR5cGUuCgkoYnVpbGRfb3ZlcmxvYWRfaW50KTogQ2hhbmdlIHByb3RvdHlwZS4KCShidWlsZF9vdmVybG9hZF92YWx1ZSk6IExpa2V3aXNlLgoJKG51bWVyaWNfb3V0cHV0X25lZWRfYmFyKTogSW1wcm92ZSBjb21tZW50LgoJKG1hbmdsZV9leHByZXNzaW9uKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IGZyb20gLi4uCgkoYnVpbGRfb3ZlcmxvYWRfaW50KTogSGVyZS4KCShidWlsZF9vdmVybG9hZF92YWx1ZSk6IEFkanVzdCBmb3IgdXNlIG9mIG1hbmdsaW5nIGZsYWdzLiAgRG9uJ3QKCXdhcm4gYWJvdXQgcmVhbC12YWx1ZWQgdGVtcGxhdGUgcGFyYW1ldGVycyBoZXJlLiAgRG8gaGFuZGxlCgljb21wbGV4IGV4cHJlc3Npb25zIGludm9sdmluZyByZWFsLXZhbHVlZCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBFbmNhc2Ugbm9uLXR5cGUgdGVtcGxhdGUgcGFyYW1ldGVycwoJaW4gdW5kZXJzY29yZXMsIGlmIG5lY2Vzc2FyeS4KCShwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiBSZW1vdmUgY29uZGl0aW9uYWwgb24KCVBBUk1fQ0FOX0JFX0FSUkFZX1RZUEUuCgoxOTk5LTEwLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlIENMRUFOVVBfUE9JTlRfRVhQUi4KCgkqIGlyLnRleGk6IENsZWFuIHVwIGRvY3VtZW50YXRpb24gb2YgUkVUVVJOX0lOSVQuCgkKMTk5OS0xMC0xNSAgR3JlZyBNY0dhcnkgIDxna21AZ251Lm9yZz4KCgkqIGxleC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IFNldCBmbGFnX2JvdW5kc19jaGVjayBhcyAidW5zcGVjaWZpZWQiLgoJKGxhbmdfaW5pdCk6IFNldCBkZWZhdWx0IGZvciBmbGFnX2JvdW5kc19jaGVjayBpZiBzdGlsbCAidW5zcGVjaWZpZWQiLgoKMTk5OS0xMC0xMyAgQW5kcmV3IEhhbGV5ICA8YXBoQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBGb3JjZSBhbGlnbm1lbnQgb2Ygbm9uLWJpdGZpZWxkcyB0bwoJQklUU19QRVJfVU5JVC4KCldlZCBPY3QgMTMgMjI6MDE6MzUgMTk5OSAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBIYW5kbGUgZW1wdHkgY29uc3RydWN0b3JzLgoKMTk5OS0xMC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsYW5nX21hcmtfdHJlZSk6IE1hcmsgTkFNRVNQQUNFX0xFVkVMLgoKCSogcHQuYyAodHN1YnN0LCBjYXNlIElOVEVHRVJfVFlQRSk6IEJlIG1vcmUgZXhwbGljaXQgaW4gemVyby1zaXplCglhcnJheSBlcnJvci4KCjE5OTktMTAtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBEb24ndCBjcmVhdGUgcmVnaXN0ZXIgUlRMCglmb3IgYWRkcmVzc2FibGUgY29uc3RhbnRzLgoKMTk5OS0xMC0xMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfeF92YV9hcmcpOiBQcm90b3R5cGUgbmV3IGZ1bmN0aW9uLgoJKiBjYWxsLmMgKGJ1aWxkX3hfdmFfYXJnKTogRGVmaW5lIGl0LgoJKiBwYXJzZS55ICh1bmFyeV9leHByKTogQ2FsbCBidWlsZF94X3ZhX2FyZy4KCQoJKiBjcC10cmVlLmggKGNvbnZlcnRfdHlwZV9mcm9tX2VsbGlwc2lzKTogUHJvdG90eXBlIG5ldyBmdW5jdGlvbi4KCSogY2FsbC5jIChjb252ZXJ0X3R5cGVfZnJvbV9lbGxpcHNpcyk6IERlZmluZSBpdC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBsYW5nX3R5cGVfcHJvbW90ZXNfdG8uCgoJKiB0cmVlLmMgKGx2YWx1ZV9wXzEpOiBBY2NlcHQgVkFfQVJHX0VYUFIgd2l0aCBhZ2dyZWdhdGVzLgoKMTk5OS0xMC0xMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZml4ZWRfdHlwZV9vcl9udWxsKTogQWx3YXlzIHNldCAqbm9ubnVsbC4KCjE5OTktMTAtMTAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLXRyZWUuaDogVXNlIEhBVkVfR0NDX1ZFUlNJT04gaW5zdGVhZCBvZiBleHBsaWNpdGx5IHRlc3RpbmcKCV9fR05VQ19fIGFuZCBfX0dOVUNfTUlOT1JfXy4KCjE5OTktMTAtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBOZXcgZnVuY3Rpb24uICAKCSogZGVjbC5jIChtYWtlX3J0bF9mb3Jfbm9ubG9jYWxfZGVjbCk6IE1vdmUgY29kZSB0byBjcmVhdGUgUlRMIGZvcgoJbG9jYWwgc3RhdGljcyAuLi4KCShtYWtlX3J0bF9mb3JfbG9jYWxfc3RhdGljKTogSGVyZS4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogVXNlIG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMuCgkKMTk5OS0xMC0wOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWV0aG9kLmM6IEluY2x1ZGUgdG1fcC5oLgoKMTk5OS0xMC03ICAgRnJhbnogU2lybCAgPEZyYW56LlNpcmwta2VybmVsQGxhdXRlcmJhY2guY29tPgoKCSogY3AtdHJlZS5oIChjcF9tYWtlX2xha2VfdHlwZSk6IFJlbmFtZWQgZnJvbSBtYWtlX2xhbmdfdHlwZS4KCSogbGV4LmMgKGNwX21ha2VfbGFrZV90eXBlKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoaW5pdF90cmVlKTogSW5pdCBtYWtlX2xhbmdfdHlwZV9mbi4KCQoxOTk5LTEwLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2V4cHIpOiBTZXQgREVDTF9URU1QTEFURV9JTlNUQU5USUFURUQgZm9yIGEgY2F0Y2gKCXBhcmFtZXRlci4KCQoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXQpOiBEb24ndCBwcmV0ZW5kIHRvIGhhdmUgYXNtc3BlY3MgZm9yCglsb2NhbCBzdGF0aWNzIGlmIHdlIGRvbid0IHJlYWxseSBoYXZlIHRoZW0uCgoJKiBpci50ZXhpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gZm9yIFNUTVRfRVhQUi4gIERlc2NyaWJlCglDTEVBTlVQX1BPSU5UX0VYUFIuCgoxOTk5LTEwLTA3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnlfcmVmKTogVXNlIGZpbmlzaF9hc21fc3RtdC4KCjE5OTktMTAtMDcgIEdyZWcgTWNHYXJ5ICA8Z2ttQGdudS5vcmc+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBVc2Ugc2ltcGxlciBtZXRob2Qgb2YKCXJlbW92aW5nIGVsZW1lbnRzIG9mIGEgc2luZ2x5LWxpbmtlZCBsaXN0IHdoaWNoIGRvZXNuJ3QKCWxvc2UgZm9yIGNsYXNzZXMgd2l0aG91dCBkYXRhIG1lbWJlcnMuCgoxOTk5LTEwLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnJpZW5kLmMgKG1ha2VfZnJpZW5kX2NsYXNzKTogUm9idXN0aWZ5LgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vYmplY3RfY2FsbF9leHByKTogUmVqZWN0IGNhbGxzIHRvIHRlbXBsYXRlCgl0eXBlcy4KCjE5OTktMTAtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEdW1wIGFsbCB0aHJlZSBvcGVyYW5kcyB0byBhIENPTkRfRVhQUi4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX1ZGSUVMRCk6IFJlbW92ZS4KCSogY2FsbC5jIChidWlsZF92ZmllbGRfcmVmKTogVXNlIFRZUEVfVkZJRUxELCBub3QKCUNMQVNTVFlQRV9WRklFTEQuCgkqIGNsYXNzLmMgKGdldF92ZmllbGRfb2Zmc2V0KTogTGlrZXdpc2UuCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogTGlrZXdpc2UuCgkobW9kaWZ5X29uZV92dGFibGUpOiBMaWtld2lzZS4KCShmaXh1cF92dGFibGVfZGVsdGFzKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoZXhwYW5kX3ZpcnR1YWxfaW5pdCk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBMaWtld2lzZS4KCShleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBMaWtld2lzZS4KCQoJKiBkdW1wLmMgKGRxdWV1ZV9hbmRfZHVtcCk6IER1bXAgVFlQRV9WRklFTEQuCgkqIGlyLnRleGk6IERvY3VtZW50IFRZUEVfVkZJRUxELgoKMTk5OS0xMC0wNiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBPbmx5IHdhcm4gYWJvdXQgbm9uemVybyBhcnJheXMgaWYKCSFpbl9zeXN0ZW1faGVhZGVyIChsaW51eCBzb2NrZXRiaXRzLmggY2FuIGdpdmUgdGhpcyBmb3IKCV9fY21zZ19kYXRhLCB3aGljaCBpcyB1c2luZyBhIEdOVSBleHRlbnNpb24pLgoKMTk5OS0xMC0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKHN0YXJ0X3N0YXRpY19zdG9yYWdlX2R1cmF0aW9uX2Z1bmN0aW9uKTogUHVzaCB0aGUKCWZ1bmN0aW9uIGRlY2xhcmF0aW9uIHNvIGl0IGVuZHMgdXAgaW4gbmFtZXNwYWNlIHNjb3BlLgoKCSogZHVtcC5jIChEVU1QX0NISUxEUkVOKTogUmVtb3ZlLgoJKERVTVBfQklORk8pOiBBZGp1c3QuCgkoc3RydWN0IGR1bXBfbm9kZV9pbmZvKTogUmVtb3ZlIGR1bXBfY2hpbGRyZW5fcC4KCShxdWV1ZV9hbmRfZHVtcF90eXBlKTogUmVtb3ZlIGR1bXBfY2hpbGRyZW5fcCBwYXJhbWV0ZXIuCgkocXVldWUpOiBEb24ndCBzZXQgZHVtcF9jaGlsZHJlbl9wLgoJKGR1bXBfY2hpbGQpOiBQYXNzIERVTVBfTk9ORSwgaW5zdGVhZCBvZiBEVU1QX0NISUxEUkVOLCB0bwoJcXVldWVfYW5kX2R1bXBfaW5kZXguCgkoZGVxdWV1ZV9hbmRfZHVtcCk6IFVuY29uZGl0aW9uYWxseSBwcmludCBjaGlsZHJlbi4gIEFkanVzdCBjYWxscwoJdG8gZnVuY3Rpb25zIG1lbnRpb25lZCBhYm92ZS4KCShkdW1wX25vZGUpOiAgUGFzcyBEVU1QX05PTkUsIGluc3RlYWQgb2YgRFVNUF9DSElMRFJFTiB0byBxdWV1ZS4KCQoJKiBpci50ZXhpOiBEb2N1bWVudCBCSU5EX0VYUFIsIExPT1BfRVhQUiwgYW5kIEVYSVRfRVhQUi4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRHVtcCB0aGVtLgoJCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IENhbGwgc2V0dXBfdnRibF9wdHIgZm9yIGRlc3RydWN0b3JzLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IFNldCBjdXJyZW50X2luX2NoYXJnZV9wYXJtIGZvcgoJY29uc3RydWN0b3JzLCB0b28sIHdoZXJlIGFwcHJvcHJpYXRlLgoJKiBzZWFyY2guYyAoZml4dXBfYWxsX3ZpcnR1YWxfdXBjYXN0X29mZnNldHMpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2luZGlyZWN0X3Z0YmxzX2luaXQpOiBVc2UgaXQuCgkKMTk5OS0xMC0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wyLmMgKGdyb2tfYWxpZ25vZik6IERvbid0IGRlY2F5IGx2YWx1ZXMuCgkKCSogaW5pdC5jIChidWlsZF9uZXcpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKMTk5OS0xMC0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHN0YXRpY19sYWJlbG5vLgoJKHN0YXRpY19sYWJlbG5vKTogUmVtb3ZlIG1hY3JvLgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBNYWtlIHN0YXRpY19sYWJlbG5vCglzdGF0aWMgaGVyZS4KCQoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogVXNlIERFQ0xfU0FWRURfVFJFRSwgbm90IERFQ0xfSU5JVElBTCwKCXRvIGRlY2lkZSB3aGV0aGVyIG9yIG5vdCBhIGZ1bmN0aW9uIGlzIGRlZmluZWQuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IERvbid0IHNldCBUUkVFX1NJREVfRUZGRUNUUyBmb3IKCXNpdHVhdGlvbnMgd2hlcmUgbWFrZV9ub2RlIHdpbGwgZG8gaXQgYXV0b21hdGljYWxseS4KCSogZGVjbC5jIChncm9rX3JlZmVyZW5jZV9pbml0KTogTGlrZXdpc2UuCgkoZXhwYW5kX3N0YXRpY19pbml0KTogTGlrZXdpc2UuCgkoZG9fc3RhdGljX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9hZ2dyX2luaXRfMSk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld18xKTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkoZG9fYnVpbGRfYXNzaWduX3JlZik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoZXhwYW5kX3VwY2FzdF9maXh1cHMpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zdG10X2V4cHIpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkoY2hlY2tfcmV0dXJuX2V4cHIpOiBMaWtld2lzZS4KCjE5OTktMTAtMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfdmVjX2RlbGV0ZV8xKTogRm9sZCBDT05EX0VYUFJzLgoKMTk5OS0xMC0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuZGVmIChWRUNfSU5JVF9FWFBSKTogUmVtb3ZlLgoJKiBjcC10cmVlLmggKHN0cnVjdCBzdG10X3RyZWUpOiBOZXcgdHlwZS4KCShzdHJ1Y3Qgc2F2ZWRfc2NvcGUpOiBSZW1vdmUgZmlyc3RvYmouICBBZGQgeF9zYXZlZF90cmVlLAoJeF9zdG10X3RyZWUuCgkoY2xhc3NfY2FjaGVfZmlyc3RvYmopOiBSZW1vdmUuCgkoc3RydWN0IGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHN0bXRzX2FyZV9mdWxsX2V4cHJzX3AsCgl4X2xhc3RfdHJlZSwgYW5kIHhfbGFzdF9leHByX3R5cGUuICBBZGQgeF9zdG10X3RyZWUuCgkoY3VycmVudF9zdG10X3RyZWUpOiBOZXcgbWFjcm8uCgkobGFzdF90cmVlKTogQWRqdXN0LgoJKGxhc3RfZXhwcl90eXBlKTogTGlrZXdpc2UuCgkoZG9pbmdfc2VtYW50aWNfYW5hbHlzaXNfcCk6IFNpbXBsaWZ5LgoJKHN0bXRzX2FyZV9mdWxsX2V4cHJzX3ApOiBBZGp1c3QuCgkoYmVnaW5fdHJlZSk6IFJlbW92ZSBwcm90b3R5cGUuCgkoZW5kX3RyZWUpOiBMaWtld2lzZS4KCShiZWdpbl9zdG10X3RyZWUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGZpbmlzaF9zdG10X3RyZWUpOiBMaWtld2lzZS4KCShidWlsZGluZ19zdG10X3RyZWUpOiBTaW1wbGlmeS4KCSogZGVjbC5jIChtYXJrX3N0bXRfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCShtYXJrX3NhdmVkX3Njb3BlKTogVXNlIGl0LgoJKHN0YXJ0X2Z1bmN0aW9uKTogUmVhcnJhbmdlIHNsaWdodGx5IHRvIGNhbGwgYmVnaW5fc3RtdF90cmVlIAoJZWFybGllci4KCShzYXZlX2Z1bmN0aW9uX2RhdGEpOiBUd2Vhay4KCShmaW5pc2hfZnVuY3Rpb24pOiBBZGp1c3QgY2FsbCB0byBmaW5pc2hfc3RtdF90cmVlLgoJKG1hcmtfbGFuZ19mdW5jdGlvbik6IFVzZSBtYXJrX3N0bXRfdHJlZS4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGhhbmRsZSBWRUNfSU5JVF9FWFBSLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogUmVtb3ZlIGNyZWF0aW9uIG9mIFZFQ19JTklUX0VYUFIuCgkoYnVpbGRfdmVjX2luaXQpOiBSZW1vdmUgY3JlYXRpb24gb2Ygc3RhbmQtaW4gaW5pdGlhbGl6ZXIuCgkqIHB0LmMgKGJlZ2luX3RyZWUpOiBSZW1vdmUuCgkoZW5kX3RyZWUpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKFNFVF9MQVNUX1NUTVQpOiBOZXcgbWFjcm8uICBVc2UgaXQgdGhyb3VnaG91dC4KCShiZWdpbl9jb21wb3VuZF9zdG10KTogSGFuZGxlIGEgY29tcG91bmQtc3RhdGVtZW50IG91dHNpZGUgb2YgYQoJZnVuY3Rpb24uCgkoYmVnaW5fc3RtdF9leHByKTogSGFuZGxlIGEgc3RhdGVtZW50LWV4cHJlc3Npb24gb3V0c2lkZWYgb2YgYQoJZnVuY3Rpb24uCgkoZmluaXNoX3N0bXRfZXhwcik6IExpa2V3aXNlLgoJKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBEb24ndCBjYWxsIGJlZ2luX3RyZWUuCgkoZmluaXNoX2lubGluZV9kZWZpbml0aW9ucyk6IERvbid0IGNhbGwgZW5kX3RyZWUuCgkoYmVnaW5fc3RtdF90cmVlKTogVGFrZSBhIHBvaW50ZXIgdG8gdHJlZSwgbm90IGEgZnVuY3Rpb24gYXMgaW5wdXQuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogRG9uJ3QgaGFuZGxlIFZFQ19JTklUX0VYUFIuCgkobWFwY2FyKTogTGlrZXdpc2UuCgkKCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBEb24ndCBjYWxsIGZpbmlzaF9zdG10IHVubmVjZXNzYXJpbHkuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJCgkqIGR1bXAuYyAoZHF1ZXVlX2FuZF9kdW1wKTogRHVtcCBiaXRmaWVsZG5lc3MuCgkKCSogdHJlZS5jIChsdmFsdWVfcF8xKTogVXNlIERFQ0xfQ19CSVRfRklFTEQgdG8gY2hlY2sgZm9yCgliaXRmaWVsZHMsIHJhdGhlciB0aGFuIERFQ0xfQklUX0ZJRUxELgoJKiBpci50ZXhpOiBEb2N1bWVudCBob3cgdG8gdGVsbCB3aGV0aGVyIG9yIG5vdCBhIGZpZWxkIGlzIGEKCWJpdGZpZWxkLgoJCgkqIGxleC5jIChtYWtlX2xhbmdfdHlwZSk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoxOTk5LTEwLTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IFN0cmlwIGN2LXF1YWxzIGZyb20gbm9uLWNsYXNzIHJ2YWx1ZXMuCgoxOTk5LTEwLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBJZiB0aGUgdHlwZSBvZiBhIHRlbXBsYXRlIGluc3RhbnRpYXRpb24gaXMKCWJvZ3VzLCBzbyBpcyB0aGUgd2hvbGUgaW5zdGFudGlhdGlvbi4KCjE5OTktMDktMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGluaXRpYWxpemVfbG9jYWxfdmFyKTogSGFuZGxlIHN0YXRpYyB2YXJpYWJsZXMgaGVyZS4KCShjcF9maW5pc2hfZGVjbCk6IFR3ZWFrIGhhbmRsaW5nIG9mIGZ1bmN0aW9uLXNjb3BlIHN0YXRpYwoJdmFyaWFibGVzLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXQpOiBIYW5kbGUgREVDTF9TVE1UcyBmb3Igc3RhdGljCgl2YXJpYWJsZXMuCgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IERvbid0IGNyYXNoIHdoZW4gLWZzeW50YXgtb25seS4KCgkqIGNwLXRyZWUuaCAobGFuZ19kZWNsX2ZsYWdzKTogQWRkIGdsb2JhbF9jdG9yX3AgYW5kCglnbG9iYWxfZHRvcl9wLiAgQWRkIGluaXRfcHJpb3JpdHkuCgkoREVDTF9BQ0NFU1MpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoREVDTF9HTE9CQUxfQ1RPUl9QLCBERUNMX0dMT0JBTF9EVE9SX1ApOiBOZXcgbWFjcm9zLgoJKEdMT0JBTF9JTklUX1BSSU9SSVRZKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobGFuZ19tYXJrX3RyZWUpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoc3RhcnRfb2JqZWN0cyk6IFNldCBERUNMX0dMT0JBTF9DVE9SX1AsIERFQ0xfR0xPQkFMX0RUT1JfUCwgCglhbmQgR0xPQkFMX0lOSVRfUFJJT1JJVFkuCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IFByaW50IHRoZW0uCgkqIGlyLnRleGk6IERvY3VtZW50IHRoZW0uCgoJKiBkZWNsMi5jIChzdHJ1Y3QgcHJpb3JpdHlfaW5mb19zKTogUmVtb3ZlIGluaXRpYWxpemF0aW9uX3NlcXVlbmNlCglhbmQgZGVzdHJ1Y3Rpb25fc2VxdWVuY2UuCgkoc3RhcnRfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBSZXR1cm4gdGhlIGJvZHkgb2YgdGhlCglmdW5jdGlvbi4gIENvbnZlcnQgZm9yIGZ1bmN0aW9uLWF0LWEtdGltZSBtb2RlLgoJKGdlbmVyYXRlX2luaXRzX2Zvcl9wcmlvcml0eSk6IFJlbW92ZS4KCShmaW5pc2hfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBDaGFuZ2UgcHJvdG90eXBlLgoJQWRqdXN0IGZvciBmdW5jdGlvbi1hdC1hLXRpbWUgbW9kZS4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCShkb19zdGF0aWNfZGVzdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb25fYW5kX2Rlc3RydWN0aW9uKTogUmVtb3ZlLgoJKHN0YXJ0X3N0YXRpY19pbml0aWFsaXphdGlvbl9vcl9kZXN0cnVjdGlvbik6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfc3RhdGljX2luaXRpYWxpemF0aW9uX29yX2Rlc3RydWN0aW9uKTogTGlrZXdpc2UuCgkoZ2V0X3ByaW9yaXR5X2luZm8pOiBEb24ndCBtYW5pcHVsYXRpb24gaW5pdGlhbGl6YXRpb25fc2VxdWVuY2Ugb3IKCWRlc3RydWN0aW9uX3NlcXVlbmNlLgoJKHBydW5lX3ZhcnNfbmVlZGluZ19ub19pbml0aWFsaXphdGlvbik6IE5ldyBmdW5jdGlvbi4KCSh3cml0ZV9vdXRfdmFycyk6IExpa2V3aXNlLgoJKGZpbmlzaF9maWxlKTogVXNlIHRoZSB2YXJpb3VzIG5ldyBmdW5jdGlvbnMgaW5zdGVhZCBvZiB0aGUgb2xkLgoJClRodSBTZXAgMzAgMDA6MTM6MjcgMTk5OSAgRGlyayBab2xsZXIgIDxkdXpAcnRzZmZtLmNvbT4KCgkqIGNwLXRyZWUuaCAod2Fybl9mbG9hdF9lcXVhbCk6IERlY2xhcmUuCgkqIGRlY2wyLmMgKHdhcm5fZmxvYXRfZXF1YWwpOiBEZWZpbmUuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogUmVjb2duaXplIC1XW25vLV1mbG9hdC1lcXVhbC4KCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBDb25kaXRpb25hbGx5IHdhcm4KCWFib3V0IGVxdWFsaXR5IHRlc3RzIG9mIGZsb2F0aW5nIHBvaW50IHR5cGVzLgoKMTk5OS0wOS0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCVN1cHBvcnQgbm9ybWFsIHR5cGVfaW5mby1iYXNlZCBFSCBtZWNoYW5pc21zIHdpdGggLWZuby1ydHRpLgoJKiBleGNlcHQuYyAoYnVpbGRfZWhfdHlwZV90eXBlKTogUmVtb3ZlIHNwZWNpYWwgLWZuby1ydHRpIGhhbmRsaW5nLgoJKGJ1aWxkX2VoX3R5cGVfdHlwZV9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9laF90eXBlKTogUmVtb3ZlLgoJKGV4cGFuZF90aHJvdyk6IENhbGwgYnVpbGRfZWhfdHlwZV90eXBlLCBub3QgYnVpbGRfZWhfdHlwZS4KCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogRG9uJ3QgYXNzb2NpYXRlIHRoZSB0aW5mbyBmbiB3aXRoCgl0aGUgdnRhYmxlIGlmIC1mbm8tcnR0aS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFsd2F5cyBpbml0X3J0dGlfcHJvY2Vzc2luZy4KCgkqIHJ0dGkuYyAoZ2V0X3R5cGVpZCk6IERvbid0IGNvbXBsYWluIGFib3V0IC1mbm8tcnR0aS4KCgkqIGNsYXNzLmMgKGNsYXNzX2NhY2hlX29ic3RhY2ssIGNsYXNzX29ic3RhY2spOiBSZW1vdmUuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogRG9uJ3QgaW5pdGlhbGl6ZSBjbGFzc19vYnN0YWNrLgoJKHB1c2hfY2FjaGVfb2JzdGFjayk6IFJlbW92ZS4KCShwdXNoY2xhc3MpOiBEb24ndCBjYWxsIGl0LgoJKiBjcC10cmVlLmg6IFJlbW92ZSBwcm90b3R5cGUgZm9yIHB1c2hfY2FjaGVfb2JzdGFjay4KCSogZGVjbC5jIChkZWNsX29ic3RhY2ssIGRlY2xfc3RhY2ssIHB1c2hfZGVjbF9sZXZlbCk6IFJlbW92ZS4KCShwdXNobGV2ZWxfY2xhc3MpOiBEb24ndCBwdXNoX2RlY2xfbGV2ZWwuCgkocG9wbGV2ZWxfY2xhc3MpOiBEb24ndCBwb3Bfc3RhY2tfbGV2ZWwuCgkocHVzaF9jbGFzc19sZXZlbF9iaW5kaW5nKTogRG9uJ3QgcHVzaF9jYWNoZV9vYnN0YWNrLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgaW5pdGlhbGl6ZSBkZWNsX29ic3RhY2suCgkqIHNlYXJjaC5jIChwdXNoX2NsYXNzX2RlY2xzKTogRG9uJ3QgcHVzaF9jYWNoZV9vYnN0YWNrLgoJKiB0cmVlLmMgKGxpc3RfaGFzaF9hZGQpOiBQdXQgaGFzaCBub2RlIG9uIHBlcm1hbmVudF9vYnN0YWNrLgoJKGhhc2hfdHJlZV9jb25zKTogRG9uJ3QgbWVzcyB3aXRoIG9ic3RhY2tzLgoJKHByaW50X2xhbmdfc3RhdGlzdGljcyk6IERvbid0IHByaW50IHN0YXRzIGZvciBjbGFzc19vYnN0YWNrIGFuZAoJZGVjbF9vYnN0YWNrLgoKMTk5OS0wOS0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgREVDTF9FWFRFUk5BTC4KCSogaXIudGV4aTogRG9jdW1lbnQgREVDTF9FWFRFUk5BTC4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEltcHJvdmUgc3VwcG9ydCBmb3IgZHVtcGluZyBUSFVOS19ERUNMcy4KCSogaXIudGV4aTogRG9jdW1lbnQgVEhVTktfREVDTHMuCgoJKiBjcC10cmVlLmggKFRNUExfQVJHU19IQVZFX01VTFRJUExFX0xFVkVMUyk6IE1vdmUgaGVyZSBmcm9tIHB0LmMuCgkoVE1QTF9BUkdTX0RFUFRILCBUTVBMX0FSR1NfTEVWRUwsIFNFVF9UTVBMX0FSR1NfTEVWRUwpOiBMaWtld2lzZS4KCShUTVBMX0FSRywgU0VUX1RNUExfQVJHLCBOVU1fVE1QTF9BUkdTLCBUTVBMX1BBUk1TX0RFUFRIKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfdGVtcGxhdGVfYmluZGluZ3MpOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlci4KCUhhbmRsZSBtdWx0aXBsZSBsZXZlbHMgb2YgdGVtcGxhdGUgcGFyYW1ldGVycy4KCShkdW1wX3RlbXBsYXRlX2RlY2wpOiBVc2UgYHBhcm1zJywgbm90IGBhcmdzJywgZm9yIHRlbXBsYXRlCglwYXJhbWV0ZXJzLiAgRml4IHRoaW5rby4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBVc2UgREVDTF9URU1QTEFURV9JTlNUQU5USUFUSU9OLiAgRG9uJ3QgcGFzcwoJZmxhZ3MgdG8gZHVtcF90ZW1wbGF0ZV9iaW5kaW5ncy4KCSogcHQuYyAoVE1QTF9BUkdTX0hBVkVfTVVMVElQTEVfTEVWRUxTKTogTW92ZSB0byBjcC10cmVlLmguCgkoVE1QTF9BUkdTX0RFUFRILCBUTVBMX0FSR1NfTEVWRUwsIFNFVF9UTVBMX0FSR1NfTEVWRUwpOiBMaWtld2lzZS4KCShUTVBMX0FSRywgU0VUX1RNUExfQVJHLCBOVU1fVE1QTF9BUkdTLCBUTVBMX1BBUk1TX0RFUFRIKTogTGlrZXdpc2UuCgkodHN1YnN0X2NvcHkpOiBDbGFyaWZ5IHZhcmlhYmxlIG5hbWUuCgkobW9zdF9nZW5lcmFsX3RlbXBsYXRlKTogUm9idXN0aWZ5LgoJCjE5OTktMDktMjkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBlcnJvci5jIChkdW1wX3RlbXBsYXRlX3Bhcm1zKTogRG9uJ3QgdXNlIFRTX1BFREFOVElDX05BTUUKCXRvIGNoYW5nZSBwcmltYXJ5IHRlbXBsYXRlIHJlbmRlcmluZy4KCjE5OTktMDktMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKFVQVF9URU1QTEFURSk6IFJlbW92ZS4KCShVUFRfUEFSTVMpOiBMaWtld2lzZS4KCShERUNMX05FRURFRF9QKTogTmV3IG1hY3JvLgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBVc2UgaXQuCgkoZmluaXNoX29iamVjdHMpOiBEb24ndCBjcmFzaCB3aXRoIC1mc3ludGF4LW9ubHkuCgkoZmluaXNoX2ZpbGUpOiBVc2UgREVDTF9ORUVERURfUC4gIERvbid0IHBydW5lIHZ0YWJsZXMgd2hlbgoJLWZzeW50YXgtb25seS4KCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IFJlbW92ZSBGSVhNRSB0aGF0IHRhbGtzIGFib3V0CglvYnN0YWNrcy4KCSh0c3Vic3RfZXhwcik6IENvcnJlY3QgaGFuZGxpbmcgb2YgZnVuY3Rpb24gdHJ5LWJsb2Nrcy4KCSogc2VtYW50aWNzLmM6IEluY2x1ZGUgZmxhZ3MuaC4KCShleHBhbmRfYm9keSk6IERvbid0IGRvIFJUTCBnZW5lcmF0aW9uIGlmIC1mc3ludGF4LW9ubHkuCgkqIE1ha2VmaWxlLmluIChzZW1hbnRpY3Mubyk6IERlcGVuZHMgb24gZmxhZ3MuaC4KCQoxOTk5LTA5LTI4ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChtb3N0X2dlbmVyYWxfdGVtcGxhdGUpOiBBZGp1c3QgZGVjbGFyYXRpb24uCgoJKiBjcC10cmVlLmg6IChtb3N0X2dlbmVyYWxfdGVtcGxhdGUpOiBEZWNsYXJlLgoKCSogZXJyb3IuYyAoZHVtcF90ZW1wbGF0ZV92YWx1ZSk6IFJlbmFtZSB0byAuLi4KCShkdW1wX3RlbXBsYXRlX2FyZ3VtZW50KTogVGhpcy4KCShkdW1wX3RlbXBsYXRlX2FyZ3VtZW50X2xpc3QpOiBOZXcgZnVuY3Rpb24uCgkoZHVtcF90eXBlKTogVXNlIGl0LgoJKGR1bXBfdGVtcGxhdGVfcGFyYW1ldGVyKTogTmV3IGZ1bmN0aW9uLgoJKGR1bXBfdGVtcGxhdGVfZGVjbCk6IFVzZSBpdC4KCShkdW1wX3RlbXBsYXRlX2JpbmRpbmdzKTogTmV3IGZ1bmN0aW9uLgoJKGR1bXBfZnVuY3Rpb25fZGVjbCk6IFVzZSBpdC4gUHJldHR5IHByaW50IGZ1bmN0aW9uIHRlbXBsYXRlCglpbnN0YW50aWF0aW9ucy4KCjE5OTktMDktMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRGlzdGluZ3Vpc2ggcGFyYW1ldGVyIGNvbnRleHQgZm9yCglkaWFnbm9zdGljcy4gVGlkeSB1cCBtaXNzaW5nIHR5cGUgZGlhZ25vc3RpYy4KCURpYWdub3NlIGBleHBsaWNpdCcgaW4gb25lIHBsYWNlLiBEaWFnbm9zZSBgbXV0YWJsZScgaW4gb25lIHBsYWNlLgoKMTk5OS0wOS0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlyLnRleGk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBmb3IgVEFSR0VUX0VYUFIuCgoxOTk5LTA5LTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCUF1Z21lbnQgc3RyaW5naWZpY2F0aW9uIG9mIHRyZWVzLgoJKiBjcC10cmVlLmggKHRyZWVfc3RyaW5nX2ZsYWdzKTogTmV3IGVycm9yIHN0cmluZ2lmeWluZyBlbnVtZXJhdGlvbi4KCShmbmRlY2xfYXNfc3RyaW5nLCB0eXBlX2FzX3N0cmluZ19yZWFsLCBhcmdzX2FzX3N0cmluZywKCWNvZGVfYXNfc3RyaW5nLCBsYW5ndWFnZV9hc19zdHJpbmcsIHBhcm1fYXNfc3RyaW5nLAoJb3BfYXNfc3RyaW5nLCBhc3NvcF9hc19zdHJpbmcsIGN2X2FzX3N0cmluZyk6IFJlbW92ZS4KCSh0eXBlX2FzX3N0cmluZywgZGVjbF9hc19zdHJpbmcsIGV4cHJfYXNfc3RyaW5nKTogQWRqdXN0IHByb3RvdHlwZS4KCShjb250ZXh0X2FzX3N0cmluZyk6IERlY2xhcmUgbmV3IGZ1bmN0aW9uLgoJKiBlcnJvci5jIChjcF9wcmludGVycyk6IE1vdmUgZGVmaW5pdGlvbi4KCShPQl9VTlBVVCk6IFJlbW92ZS4KCShPQl9FTkRfVEVNUExBVEVfSUQpOiBBZGp1c3QuCgkoaW50ZXJlc3Rpbmdfc2NvcGVfcCk6IFJlbW92ZS4KCShkdW1wX3Njb3BlKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShkdW1wX3F1YWxpZmllcnMpOiBBZGp1c3QgcHJvdG90eXBlLCByZWltcGxlbWVudC4KCShkdW1wX3RlbXBsYXRlX3ZhbHVlKTogVXNlIHRyZWVfc3RyaW5nX2ZsYWdzLgoJKGR1bXBfdHlwZV9yZWFsKTogTW92ZSBiYWNrIHRvIGR1bXBfdHlwZS4KCShkdW1wX3R5cGUpOiBBZGp1c3QgcHJvdG90eXBlLiBVc2UgdHJlZV9zdHJpbmdfZmxhZ3MuCgkoZHVtcF9hZ2dyX3R5cGUpOiBMaWtld2lzZS4gVXNlIGR1bXBfdGVtcGxhdGVfcGFybXMuCgkoZHVtcF90eXBlX3ByZWZpeCk6IEFkanVzdCBwcm90b3R5cGUuIFVzZSB0cmVlX3N0cmluZ19mbGFncy4KCVJldHVybiBwYWQgZmxhZy4KCShkdW1wX3R5cGVfc3VmZml4KTogQWRqdXN0IHByb3RvdHlwZS4gVXNlIHRyZWVfc3RyaW5nX2ZsYWdzLgoJKGR1bXBfc2ltcGxlX2RlY2wpOiBMaWtld2lzZS4KCShkdW1wX2RlY2wpOiBMaWtld2lzZS4gVXNlIGR1bXBfdGVtcGxhdGVfZGVjbC4KCShkdW1wX3RlbXBsYXRlX2RlY2wpOiBOZXcgc3RhdGljIGZ1bmN0aW9uIGJyb2tlbiBvdXQgb2YgZHVtcF9kZWNsLgoJKGR1bXBfZnVuY3Rpb25fZGVjbCk6IEFkanVzdCBwcm90b3R5cGUuIFVzZSB0cmVlX3N0cmluZ19mbGFncy4KCShkdW1wX3BhcmFtZXRlcnMpOiBMaWtld2lzZS4gUHJlZml4IHNwYWNlLgoJKGR1bXBfZXhjZXB0aW9uX3NwZWMpOiBBZGp1c3QgcHJvdG90eXBlLiBVc2UgdHJlZV9zdHJpbmdfZmxhZ3MuCgkoZHVtcF9mdW5jdGlvbl9uYW1lKTogTGlrZXdpc2UuIFVzZSBkdW1wX3RlbXBsYXRlX3Bhcm1zLgoJKGR1bXBfdGVtcGxhdGVfcGFybXMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uIGJyb2tlbiBvdXQgb2YKCWR1bXBfZnVuY3Rpb25fbmFtZS4KCShkdW1wX2V4cHJfbGlzdCk6IEFkanVzdCBwcm90b3R5cGUuIFVzZSB0cmVlX3N0cmluZ19mbGFncy4KCShkdW1wX2V4cHIpOiBMaWtld2lzZS4KCShmbmRlY2xfYXNfc3RyaW5nKTogUmVtb3ZlZAoJKHR5cGVfYXNfc3RyaW5nX3JlYWwpOiBSZW1vdmVkCgkoZHVtcF9iaW5hcnlfb3ApOiBBZGp1c3QgcHJvdG90eXBlLiBVc2UgdHJlZV9zdHJpbmdfZmxhZ3MuCgkoZHVtcF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKHR5cGVfYXNfc3RyaW5nKTogTGlrZXdpc2UuCgkoZXhwcl9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShkZWNsX2FzX3N0cmluZyk6IExpa2V3aXNlLgoJKGNvbnRleHRfYXNfc3RyaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGxhbmdfZGVjbF9uYW1lKTogQWRqdXN0LgoJKGRlY2xfdG9fc3RyaW5nKTogTmV3IHN0YXRpYyBwcmludCBjYWxsYmFjay4KCShleHByX3RvX3N0cmluZyk6IExpa2V3aXNlLgoJKGZuZGVjbF90b19zdHJpbmcpOiBMaWtld2lzZS4KCShjb2RlX2FzX3N0cmluZyk6IFJlbmFtZWQgdG8gLi4uCgkoY29kZV90b19zdHJpbmcpOiAuLi4gaGVyZS4gQWRqdXN0LgoJKGxhbmd1YWdlX2FzX3N0cmluZyk6IFJlbmFtZWQgdG8gLi4uCgkobGFuZ3VhZ2VfdG9fc3RyaW5nKTogLi4uIGhlcmUuIEFkanVzdC4KCShwYXJtX2FzX3N0cmluZyk6IFJlbmFtZWQgdG8gLi4uCgkocGFybV90b19zdHJpbmcpOiAuLi4gaGVyZS4KCShvcF9hc19zdHJpbmcpOiBSZW5hbWVkIHRvIC4uLgoJKG9wX3RvX3N0cmluZyk6IC4uLiBoZXJlLgoJKGFzc29wX2FzX3N0cmluZyk6IFJlbmFtZWQgdG8gLi4uCgkoYXNzb3BfdG9fc3RyaW5nKTogLi4uIGhlcmUuCgkodHlwZV90b19zdHJpbmcpOiBOZXcgc3RhdGljIHByaW50IGNhbGxiYWNrLgoJKGFyZ3NfYXNfc3RyaW5nKTogUmVuYW1lZCB0byAuLi4KCShhcmdzX3RvX3N0cmluZyk6IC4uLiBoZXJlLiBBZGp1c3QuCgkoY3ZfYXNfc3RyaW5nKTogUmVuYW1lZCB0byAuLi4KCShjdl90b19zdHJpbmcpOiAuLi4gaGVyZS4gQWRqdXN0LgoJKiBwdC5jIChtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBVc2UgdHJlZV9zdHJpbmdfZmxhZ3MuCgkocHJpbnRfdGVtcGxhdGVfY29udGV4dCk6IExpa2V3aXNlLgoKMTk5OS0wOS0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZXhwYW5kX3Rocm93KTogUmVtb3ZlIHByb3RvdHlwZS4KCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IE1ha2UgaXQgc3RhdGljLiAgVXNlIHRyZWUtZ2VuZXJhdGlvbgoJZnVuY3Rpb25zLCByYXRoZXIgdGhhbiBSVEwtZ2VuZXJhdGlvbiBmdW5jdGlvbnMuCgkoYnVpbGRfdGhyb3cpOiBVc2UgaXQuCgkqIGV4cHIuYzogSW5jbHVkZSBleGNlcHQuaC4KCShjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGNhbGwgZXhwYW5kX3Rocm93IGhlcmUuCgkqIE1ha2VmaWxlLmluIChleHByLm8pOiBEZXBlbmQgb24gZXhjZXB0LmguCgkqIGlyLnRleGk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIGZvciBUSFJPV19FWFBSLgoJCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBTZXQgeF9kb250X3NhdmVfcGVuZGluZ19zaXplcyByYXRoZXIKCXRoYW4gY2FsbGluZyBnZXRfcGVuZGluZ19zaXplcy4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBEb24ndCBzYXZlIGFuZCByZXN0b3JlCglpbW1lZGlhdGVfc2l6ZV9leHBhbmQ7IGluc3RlYWQsIGFzc2VydCB0aGF0IGl0IGhhcyB0aGUgZXhwZWN0ZWQKCXZhbHVlIGFscmVhZHkuCgoxOTk5LTA5LTI2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsZXguYyAoY29tcGlsZXJfZXJyb3IpOiBBZGQgbWlzc2luZyBjYWxsIHRvIHZhX2VuZCgpLgoKMTk5OS0wOS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEhhbmRsZSBSRVNVTFRfREVDTC4KCSogaXIudGV4aTogRG9jdW1lbnQgUkVTVUxUX0RFQ0wgYW5kIERFQ0xfUkVTVUxULgoKCSogY3AtdHJlZS5oIChjaGVja19yZXR1cm5fZXhwcik6IE5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChmaW5pc2hfY29uc3RydWN0b3JfYm9keSk6IE5ldyBmdW5jdGlvbi4KCShwdXNoZGVjbCk6IFB1dCBnbG9iYWwgZnJpZW5kIGZ1bmN0aW9ucyBpbiBuYW1lc3BhY2UgYmluZGluZwoJbGV2ZWwsIG5vdCB0aGUgY2xhc3MgYmluZGluZyBsZXZlbC4KCShmaW5pc2hfZGVzdHJ1Y3Rvcl9ib2R5KTogTWFrZSBzdXJlIHRoZSBkdG9yX2xhYmVsIGlzIGFsd2F5cwoJZGVmaW5lZC4gIEZpeCB0eXBvIGluIGNvbW1lbnQuCgkoZmluaXNoX2Z1bmN0aW9uKTogTW92ZSBnZW5lcmF0aW9uIG9mIGNvbnN0cnVjdG9yLXRlcm1pbmF0aW9uIGNvZGUKCXRvIHNlbWFudGljLWFuYWx5c2lzIHRpbWUuICBNb3ZlIGdlbmVyYXRpb24gb2YgaW1wbGljaXQgYG1haW4nCglyZXR1cm4gdmFsdWUgdG8gc2VtYW50aWMtYW5hbHlzaXMgdGltZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9yZXR1cm5fc3RtdCk6IEdlbmVyYXRlIGdvdG8ncyB0bwoJY3Rvcl9sYWJlbC9kdG9yX2xhYmVsIGhlcmUuICBVc2UgY2hlY2tfcmV0dXJuX2V4cHIgdG8gZG8gc2VtYW50aWMKCWFuYWx5c2lzIG9uIHRoZSByZXR1cm5lZCBleHByZXNzaW9uLgoJKiB0eXBlY2suYyAobWF5YmVfd2Fybl9hYm91dF9yZXR1cm5pbmdfYWRkcmVzc19vZl9sb2NhbCk6IE5ldwoJZnVuY3Rpb24gc3BsaXQgb3V0IGZyb20gY19leHBhbmRfcmV0dXJuLgoJKGNoZWNrX3JldHVybl9leHByKTogTGlrZXdpc2UuCgkoY19leHBhbmRfcmV0dXJuKTogSnVzdCBnZW5lcmF0ZSB0aGUgUlRMIGZvciB0aGUgcmV0dXJuLgoJCjE5OTktMDktMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENQVElfQ0xFQU5VUF9UWVBFKTogTmV3IG1hY3JvLgoJKGNsZWFudXBfdHlwZSk6IExpa2V3aXNlLgoJKHNlYXJjaF90cmVlKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZGVjbC5jIChsb2NhbF92YXJpYWJsZV9wKTogQWRqdXN0IGZvciBuZXcgaW50ZXJmYWNlIHRvCglzZWFyY2hfdHJlZS4KCShjaGVja19kZWZhdWx0X2FyZ3VtZW50KTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBJTklUX0VYUFIuCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBEb24ndCBtYWtlIGNsZWFudXBfdHlwZSBhIGxvY2FsIHN0YXRpYy4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGhhbmRsZSBORVdfRVhQUi4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBDYWxsIGJ1aWxkX25ld18xIGRpcmVjdGx5LCByYXRoZXIgdGhhbgoJYnVpbGRpbmcgYSBORVdfRVhQUi4KCShidWlsZF9uZXdfMSk6IFRpZHkuICBEb24ndCBidWlsZCBhIFZFQ19JTklUX0VYUFIgZXhjZXB0IHdoZW4KCXByb2Nlc3NpbmcgZmlsZS1zY29wZSBpbml0aWFsaXplcnMuCgkqIGxleC5jIChpbml0X3BhcnNlKTogQWRkIGFuIG9wbmFtZV90YWIgZW50cnkgZm9yIElOSVRfRVhQUi4KCSogdHJlZS5jOiBJbmNsdWRlIHNwbGF5LXRyZWUuaAoJKG5vX2xpbmthZ2VfaGVscGVyKTogQWRqdXN0IGZvciBuZXcgaW50ZXJmYWNlIHRvIHNlYXJjaF90cmVlLgoJKHNlYXJjaF90cmVlKTogUGFzcyBhcm91bmQgcG9pbnRlcnMgdG8gdHJlZSBub2RlcywgcmF0aGVyIHRoYW4gdGhlCglub2RlcyB0aGVtc2VsdmVzLiAgSGFuZGxlIFZFQ19JTklUX0VYUFIuCgkobm9fbGlua2FnZV9jaGVjayk6IEFkanVzdCBmb3IgbmV3IGludGVyZmFjZSB0byBzZWFyY2hfdHJlZS4KCShtYXBjYXIpOiBIYW5kbGUgVkVDX0lOSVRfRVhQUi4KCSh0YXJnZXRfcmVtYXApOiBOZXcgdmFyaWFibGUuCgkoYm90X21hbmlwKTogVXNlIGl0LgoJKGJvdF9yZXBsYWNlKTogTmV3IGZ1bmN0aW9uLgoJKGJyZWFrX291dF90YXJnZXRfZXhwcnMpOiBVc2UgaXQgdG8gcmVtYXAgYWxsIHZhcmlhYmxlcyB1c2VkIGluIGEKCWRlZmF1bHQgYXJndW1lbnQgZXhwcmVzc2lvbi4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogRG9uJ3QgY3Jhc2ggd2hlbiBvdXRzaWRlIGEKCWZ1bmN0aW9uIGFuZCBwcmVzZW50ZWQgd2l0aCBhbiBJTklUX0VYUFIgYXNzaWdubWVudAoJKiBNYWtlZmlsZS5pbiAodHJlZS5vKTogRGVwZW5kIG9uIHNwbGF5LXRyZWUuaC4KCkZyaSBTZXAgMjQgMTA6NDg6MTAgMTk5OSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFVzZSBERUNMX0JVSUxUX0lOX0NMQVNTIHJhdGhlciB0aGFuCglERUNMX0JVSUxUX0lOLgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBOZXcgYXJnIENMQVNTLiAgQXJnIENPREUgbm93IG9mIHR5cGUgaW50LiAgQWxsCgljYWxsZXJzIGNoYW5nZWQuCglTZXQgdGhlIGJ1aWx0aW4ncyBERUNMX0JVSUxUX0lOX0NMQVNTLgoKMTk5OS0wOS0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBEb24ndCBtYWtlIGxvY2FsIGRlY2xhcmF0aW9ucyBvZiBleHRlcm4KCXZhcmlhYmxlcyBnaXZlIHRoZSB2YXJpYWJsZSBhIERFQ0xfQ09OVEVYVCBmb3IgdGhlIGZ1bmN0aW9uLgoJKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKTogRG9uJ3QgZnVzcyB3aXRoIG9ic3RhY2tzLiAgU2ltcGxpZnkuCglEb24ndCBhY2NpZGVudGFsbHkgbWFrZSBSVEwgZm9yIGxvY2FsIGRlY2xhcmF0aW9ucy4KCShlbWl0X2xvY2FsX3Zhcik6IEhhbmRsZSBkZWNsYXJhdGlvbnMgd2l0aCBhc20tc3BlY2lmaWVycyBoZXJlLgoJCjE5OTktMDktMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpci50ZXhpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gZm9yIFRBUkdFVF9FWFBScy4gIERpc2N1c3MKCVNUTVRfSVNfRlVMTF9FWFBSX1AuCgoJKiBjcC10cmVlLmggKGxhbmd1YWdlX2Z1bmN0aW9uKTogQWRkIGNhbm5vdF9pbmxpbmUuCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBSZXN0b3JlIGN1cnJlbnRfZnVuY3Rpb25fY2Fubm90X2lubGluZQoJZnJvbSB0aGUgc2F2ZWQgdmFsdWUuCgkoc2F2ZV9mdW5jdGlvbl9kYXRhKTogU2F2ZSBjdXJyZW50X2Z1bmN0aW9uX2Nhbm5vdF9pbmxpbmUuCgkqIGRlY2wyLmMgKHN0YXJ0X29iamVjdHMpOiBDaGFuZ2UgcHJvdG90eXBlLiAgQnVpbGQgdGhlIGZ1bmN0aW9uCglpbiBmdW5jdGlvbi1hdC1hLXRpbWUgbW9kZS4KCShmaW5pc2hfb2JqZWN0cyk6IExpa2V3aXNlLgoJKGdlbmVyYXRlX2N0b3Jfb3JfZHRvcl9mdW5jdGlvbik6IEFkanVzdCBhY2NvcmRpbmdseS4KCQoJKiBjcC10cmVlLmggKERFQ0xfQU5PTl9VTklPTl9FTEVNUyk6IE5ldyBtYWNyby4KCSogZGVjbDIuYyAoZmluaXNoX2Fub25fdW5pb24pOiBTZXQgREVDTF9BTk9OX1VOSU9OX0VMRU1TLgoJRG9uJ3QgY2FsbCBleHBhbmRfYW5vbl91bmlvbl9kZWNsIGhlcmUKCSogc2VtYW50aWNzLmMgKGV4YXBuZF9zdG10KTogQ2FsbCBpdCBoZXJlLCBpbnN0ZWFkLgoJKiB0eXBlY2suYyAobWFya19hZGRyZXNzYWJsZSk6IEFkZHJlc3NlZCB2YXJpYWJsZXMgYXJlIGltcGxpY2l0bHkKCXVzZWQuCgkKMTk5OS0wOS0yMyAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogY3AtdHJlZS5oIChWQVJfT1JfRlVOQ1RJT05fREVDTF9DSEVDSyk6IE5ldyBtYWNyby4KCShSRUNPUkRfT1JfVU5JT05fVFlQRV9DSEVDSywgTEFOR19JREVOVElGSUVSX0NBU1QpOiBMaWtld2lzZS4KCShERUZBUkdfTk9ERV9DSEVDSyk6IFJlbW92ZTsgcmVwbGFjZSB3aXRoIERFRkFVTFRfQVJHX0NIRUNLLgoJKiBjcC10cmVlLmg6IEFkZCB0cmVlIGNoZWNraW5nIG1hY3JvcyB0byB2YXJpb3VzIHRyZWUgYWNjZXNzCgltYWNyb3MuCQoJKiBwdHJlZS5jIChwcmludF9sYW5nX2RlY2wpOiBUZXN0IGZvciBmdW5jdGlvbiBvciB2YXJpYWJsZQoJYmVmb3JlIGFjY2Vzc2luZyB0ZW1wbGF0ZSBpbmZvLgoKMTk5OS0wOS0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmM6IEdldCBXQ0hBUl9UWVBFX1NJWkUgZnJvbSB3Y2hhcl90eXBlX25vZGUuCgkqIGxhbmctc3BlY3MuaDogSWYgLWZzaG9ydC13Y2hhciwgb3ZlcnJpZGUgX19XQ0hBUl9UWVBFX18uCgkqIGRlY2wyLmMgKGxhbmdfZl9vcHRpb25zKTogQWRkIC1mc2hvcnQtd2NoYXIuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBmbGFnX3Nob3J0X3djaGFyLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSWYgLWZzaG9ydC13Y2hhciwgdXNlICdzaG9ydCB1bnNpZ25lZCAKCWludCcgZm9yIHdjaGFyX3QuCgoxOTk5LTA5LTIzICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBpci50ZXhpOiBGaXggZm9ybWF0dGluZyBlcnJvcnMgYW5kIHR5cG9zLgoKMTk5OS0wOS0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlyLnRleGk6IERvY3VtZW50IENMRUFOVVBfU1RNVCwgU0NPUEVfU1RNVCwgYW5kIFNUQVJUX0NBVENIX1NUTVQuCgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogRG8gY3JlYXRlIGEgYmluZGluZyBmb3IgZXh0ZXJuICJDIiBmdW5jdGlvbnMsCglidXQgbm90IGZvciB0aGVpciBERUNMX0FTU0VNQkxFUl9OQU1Fcy4KCShsb29rdXBfbmFtZV9jdXJyZW50X2xldmVsKTogRml4IGZvcm1hdHRpbmcuCgkoeHJlZl90YWcpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoc3RhcnRfb2JqZWN0cyk6IE1hcmsgc3RhdGljIGNvbnN0cnVjdG9ycyBhbmQKCWRlc3RydWN0b3JzIGFzIHVzZWQuCgoxOTk5LTA5LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGRlZmluZV9jYXNlX2xhYmVsKTogRG9uJ3QgY3Jhc2ggaWYgd2UncmUgbm90IGluIGEgc3dpdGNoLgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogRG9uJ3QgYm90aGVyIGV4cGxpY2l0bHkgaWdub3JpbmcgZmxhZ3MuCgkqIGxhbmctb3B0aW9ucy5oOiBSZXN0b3JlIC1mdGhpcy1pcy12YXJpYWJsZS4gIFJlbW92ZSBoZWxwIHN0cmluZ3MKCWZvciB1bnN1cHBvcnRlZCBmbGFncy4KCjE5OTktMDktMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEFjY2VwdCBhbmQgaWdub3JlIC1maW5pdC1wcmlvcml0eS4KCUFjY2VwdCBhbmQgd2FybiBhYm91dCAtZnRoaXMtaXMtdmFyaWFibGUuCgoxOTk5LTA5LTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlIFNUQVJUX0NBVENIX1NUTVQsCglDTEVBTlVQX1NUTVQsIGFuZCBTQ09QRV9TVE1ULgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogQWRqdXN0LCBpbiB0aGUgd2FrZSBvZiByZWNlbnQKCWNoYW5nZXMgdG8gb3B0aW9uIHByb2Nlc3NpbmcuCgoxOTk5LTA5LTIxICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiB0eXBlY2suYyAoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiBBbGxvdyBleHRyYWN0aW9uIG9mCglmdW5jdGlvbiBwb2ludGVyIGZyb20gcG1mcyB3aXRoIG5vIG9iamVjdCBnaXZlbi4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogRG8gbm90IHJldHVybiBlcnJvciB3aGVuIGNvbnZlcnRpbmcKCXBtZnMuCgoxOTk5LTA5LTIxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogbGV4LmMgKGludGVybmFsX2ZpbGVuYW1lKTogTmV3IHZhcmlhYmxlLgoJKElOVEVSTkFMX0ZJTEVOQU1FKTogTmV3IG1hY3JvLgoJKGluaXRfcGFyc2UpOiBBbGxvY2F0ZSBpbnRlcm5hbF9maWxlbmFtZSBhbmQgbWFyayBhcyByb290LiAgVXNlIGl0CglpbnN0ZWFkIG9mIGEgc3RyaW5nIGNvbnN0YW50LgoKMTk5OS0wOS0yMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCglSZWltcGxlbWVudCBkeW5hbWljIGNhc3QgYW5kIGNhdGNoIG1hdGNoaW5nLgoJKiBjcC10cmVlLmggKGdldF9keW5hbWljX2Nhc3RfYmFzZV90eXBlKTogUHJvdG90eXBlIG5ldyBmdW5jdGlvbgoJKiBzZWFyY2guYyAoZHluYW1pY19jYXN0X2Jhc2VfcmVjdXJzZSk6IE5ldyBmdW5jdGlvbi4KCShnZXRfZHluYW1pY19jYXN0X2Jhc2VfdHlwZSk6IE5ldyBmdW5jdGlvbiBmb3IgZHluYW1pYyBjYXN0LgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogRGV0ZXJtaW5lIHNvdXJjZSBhbmQgdGFyZ2V0CgljbGFzcyByZWxhdGlvbnNoaXAuIENhbGwgX19keW5hbWljX2Nhc3RfMi4KCSogdGluZm8uaCAoX191c2VyX3R5cGVfaW5mbzo6dXBjYXN0KTogTmV3IGNhdGNoIGRpc3BhdGNoZXIuCgkoX191c2VyX3R5cGVfaW5mbzo6ZHluY2FzdCk6IE5ldyBkeW5hbWljIGNhc3QgZGlzcGF0Y2hlci4KCShfX3VzZXJfdHlwZV9pbmZvOjpzdWJfa2luZCk6IE5ldyBuZXN0ZWQgZW51bWVyYXRpb24uCgkoX191c2VyX3R5cGVfaW5mbzo6Y29udGFpbmVkX3ApOiBzdWJfa2luZCBwcmVkaWNhdGUuCgkoX191c2VyX3R5cGVfaW5mbzo6Y29udGFpbmVkX3B1YmxpY19wKTogTGlrZXdpc2UuCgkoX191c2VyX3R5cGVfaW5mbzo6Y29udGFpbmVkX25vbnB1YmxpY19wKTogTGlrZXdpc2UuCgkoX191c2VyX3R5cGVfaW5mbzo6Y29udGFpbmVkX25vbnZpcnR1YWxfcDogTGlrZXdpc2UuCgkoX191c2VyX3R5cGVfaW5mbzo6dXBjYXN0X3Jlc3VsdCk6IE5ldyBuZXN0ZWQgc3RydWN0LgoJKF9fdXNlcl90eXBlX2luZm86OmR5bmNhc3RfcmVzdWx0KTogTmV3IG5lc3RlZCBzdHJ1Y3QuCgkoKjo6ZG9fdXBjYXN0KTogTmV3IGNhdGNoIGZ1bmN0aW9uLgoJKCo6OmRvX2R5bmNhc3QpOiBOZXcgZHluYW1pYyBjYXN0IGZ1bmN0aW9uLgoJKF9fdXNlcl90eXBlX2luZm86OmZpbmRfcHVibGljX3N1Ym9iaik6IE5ldyBkeW5hbWljIGNhc3QKCWhlbHBlciBkaXNwYXRjaGVyLgoJKCo6OmRvX2ZpbmRfcHVibGljX3N1Ym9iaik6IE5ldyBkeW5hbWljIGNhc3QgaGVscGVyIGZ1bmN0aW9uLgoJKiB0aW5mby5jYyAoX191c2VyX3R5cGVfaW5mbzo6dXBjYXN0KTogRGVmaW5lIGNhdGNoIGRpc3BhdGNoZXIuCgkoX191c2VyX3R5cGVfaW5mbzo6ZHluY2FzdCk6IERlZmluZSBkeW5hbWljIGNhc3QgZGlzcGF0Y2hlci4KCSgqOjpkb191cGNhc3QpOiBEZWZpbmUgY2F0Y2ggZnVuY3Rpb24uCgkoKjo6ZG9fZHluY2FzdCk6IERlZmluZSBkeW5hbWljIGNhc3QgZnVuY3Rpb24uCgkoKjo6ZG9fZmluZF9wdWJsaWNfc3Vib2JqKTogRGVmaW5lIGR5bmFtaWMgY2FzdCBoZWxwZXIgZnVuY3Rpb24uCgkqIHRpbmZvMi5jYyAoX190aHJvd190eXBlX21hdGNoX3J0dGlfMik6IFVzZSB1cGNhc3QuCgkoX19keW5hbWljX2Nhc3QpOiBCYWNrd2FyZHMgY29tcGF0aWJpbGl0eSB3cmFwcGVyLiBVc2UgZHluY2FzdC4KCShfX2R5bmFtaWNfY2FzdF8yKTogTmV3IGR5bmFtaWMgY2FzdCBydW50aW1lLgoKMTk5OS0wOS0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX3N0bXRfZXhwcik6IENoYW5nZSBwcm90b3R5cGUuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBBZGp1c3QgY2FsbCBhY2NvcmRpbmdseS4KCSogaW5pdC5jIChmaW5pc2hfaW5pdF9zdG10cyk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChwcmltYXJ5KTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfc3RtdF9leHByKTogRG9uJ3QgdGFrZSB0d28gcGFyYW1ldGVycy4KCURvbid0IHJlbW92ZSBnZW5lcmF0ZWQgQkxPQ0tzIGZyb20gdGhlIGJsb2NrLXRyZWUuCgoJUmVtb3ZlIHN1cHBvcnQgZm9yIGFzc2lnbmluZyB0byBgdGhpcycuCgkqIE5FV1M6IE5vdGUgdGhhdCBmYWN0LgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wYXRoKTogRG9uJ3QgY2hlY2sgZmxhZ190aGlzX2lzX3ZhcmlhYmxlLgoJKiBjcC10cmVlLmggKEVYUFJfU1RNVF9BU1NJR05TX1RISVMpOiBSZW1vdmUuCgkobGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW1vdmUgYXNzaWduc190aGlzLCBqdXN0X2Fzc2lnbmVkX3RoaXMsIGFuZAoJeF9iYXNlX2luaXRfZXhwci4gIEFkZCB4X3ZjYWxsc19wb3NzaWJsZV9wLiAgQWRkIHZ0YmxzX3NldF91cF9wLgoJKGJhc2VfaW5pdF9leHByKTogUmVtb3ZlLgoJKGN1cnJlbnRfdmNhbGxzX3Bvc3NpYmxlX3ApOiBOZXcgbWFjcm8uCgkodnRibHNfc2V0X3VwX3ApOiBMaWtld2lzZS4KCShlbWl0X2Jhc2VfaW5pdCk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGRlY2wuYyAoZmluaXNoX2Rlc3RydWN0b3JfYm9keSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCWZpbmlzaF9mdW5jdGlvbi4KCShjdXJyZW50X2Z1bmN0aW9uX2Fzc2lnbnNfdGhpcyk6IFJlbW92ZS4KCShjdXJyZW50X2Z1bmN0aW9uX2p1c3RfYXNzaWduZWRfdGhpcyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3Qgc2V0IHRoZW0uCgkoZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3QgY2hlY2sgdGhlbS4gIERvbid0IGVtaXQKCWJhc2UtaW5pdGlhbGl6YXRpb24gY29kZSBoZXJlLiAgR2VuZXJhdGUgY29kZSBmb3IgZGVzdHJ1Y3RvcnMgd2hlbgoJZG9pbmcgc2VtYW50aWMgYW5hbHlzaXMuCgkoZmluaXNoX3N0bXQpOiBEb24ndCBjaGVjayBjdXJyZW50X2Z1bmN0aW9uX2p1c3RfYXNzaWduZWRfdGhpcy4KCSogZGVjbDIuYyAobGFuZ19mX29wdGlvbnMpOiBSZW1vdmUgdGhpcy1pcy12YXJpYWJsZS4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBMaWtld2lzZS4KCShncm9rY2xhc3Nmbik6IERvbid0IGNoZWNrIGZsYWdfdGhpc19pc192YXJpYWJsZS4KCSogaW5pdC5jIChlbWl0X2Jhc2VfaW5pdCk6IFJldHVybiB0aGUgZXhwcmVzc2lvbiBnZW5lcmF0ZWQuCgkoY29uc3RydWN0X3ZpcnR1YWxfYmFzZXMpOiBEb24ndCBwdXNoL3BvcCBvYnN0YWNrcy4gIEZpeAoJdHlwby4KCShidWlsZF9uZXdfMSk6IERvbid0IGNoZWNrIGZsYWdfdGhpc19pc192YXJpYWJsZS4KCShnZXRfdGVtcF9yZWd2YXIpOiBEb24ndCBzZXQgREVDTF9SRUdJU1RFUi4KCShidWlsZF92ZWNfaW5pdCk6IERvbid0IGNhbGwgdXNlX3ZhcmlhYmxlLgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlICItZnRoaXMtaXMtdmFyaWFibGUiIGFuZAoJIi1mbm8tdGhpcy1pcy12YXJpYWJsZSIuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogRG9uJ3QgY2hlY2sgRVhQUl9TVE1UX0FTU0lHTlNfVEhJUy4KCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogVXNlIGZpbmlzaF9leHByX3N0bXQsIG5vdAoJZXhwYW5kX2V4cHJfc3RtdC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9leHByX3N0bXRfcmVhbCk6IFJlbmFtZSB0byAuLi4KCShmaW5pc2hfZXhwcl9zdG10KTogVGhpcy4gIFJlbW92ZSBhc3NpZ25lZF90aGlzIHBhcmFtZXRlci4KCShiZWdpbl9pZl9zdG10KTogQ2FsbCBkb19wdXNobGV2ZWwgYmVmb3JlIHN0YXJ0aW5nIHRoZSBzdGF0ZW1lbnQuCgkoYmVnaW5fY29tcG91bmRfc3RtdCk6IERvbid0IGRlY2xhcmUgX19GVU5DVElPTl9fIGluIHNjb3BlLWxlc3MKCWJsb2Nrcy4KCShzZXR1cF92dGJsX3B0cik6IEVtaXQgaW5pdGlhbGl6YXRpb24gY29kZSBmb3IgYmFzZXMgYW5kIG1lbWJlcnMKCWF0IHNlbWFudGljLWFuYWx5c2lzIHRpbWUuICBFbWl0IGNvZGUgdG8gaW5pdGlhbGl6ZSB2dGFibGVzIGluCglkZXN0cnVjdG9ycyBoZXJlLgoJKGV4cGFuZF9zdG10KTogVXNlIGZpbmlzaF9leHByX3N0bXQsIG5vdCBmaW5pc2hfZXhwcl9zdG10X3JlYWwuCglEb24ndCBoYW5kbGUgQ1RPUl9JTklUSUFMSVpFUiBhbnkgbW9yZS4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogRG9uJ3QgY2hlY2sgZm9yIGFzc2lnbm1lbnRzIHRvCgl0aGlzLgoJKGNfZXhwYW5kX3JldHVybik6IERvbid0IHN1Z2dlc3QgYXNzaWduaW5nIHRvIGB0aGlzJy4KCQoJKiBNYWtlZmlsZS5pbiAoZGVjbC5vKTogRGVwZW5kIG9uIFJUTF9ILgoJKGRlY2wyLm8pOiBMaWtld2lzZS4KCShjbGFzcy5vKTogTGlrZXdpc2UuCgkoY2FsbC5vKTogTGlrZXdpc2UuCgkobWV0aG9kLm8pOiBMaWtld2lzZS4KCShzZWFyY2gubyk6IExpa2V3aXNlLgoJKHRyZWUubyk6IExpa2V3aXNlLgoJKHB0Lm8pOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogV2hlbiBhIGJ1aWx0aW4gZnVuY3Rpb24gaXMgcmVkZWNsYXJlZAoJYXMgc3RhdGljLCBtYWtlIHN1cmUgaXQgaXMgbWFuZ2xlZCBjb3JyZWN0bHkuCgoJKiBpci50ZXhpIChDVE9SX0lOSVRJQUxJWkVSKTogUmVtb3ZlIG1lbnRpb24uICBGaXggdHlwby4gIEFkZAoJZGV0YWlsIGFib3V0IHRoZSBzdGF0ZW1lbnQtdHJlZS4KCQoxOTk5LTA5LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogcGFyc2UueSAocHJpbWFyeSk6IFVzZSBidWlsZF9mdW5jdGlvbmFsX2Nhc3QgZm9yIENWX1FVQUxJRklFUi4KCjE5OTktMDktMjAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBFeHRlbmQgY29tbWVudC4KCk1vbiBTZXAgMjAgMTA6NDk6MDUgMTk5OSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiB0eXBlY2suYzogSW5jbHVkZSAidG1fcC5oIi4KCjE5OTktMDktMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpci50ZXhpOiBOZXcgZmlsZS4KCjE5OTktMDktMTkgIFBhdWwgQnVyY2hhcmQgPGJ1cmNoYXJkQHBvYm94LmNvbT4KCgkqIHNlbWFudGljcy5jIChleHBhbmRfc3RtdCk6IEluaXRpYWxpemUgcmV0dXJuIHZhbHVlLgoKMTk5OS0wOS0xOCAgUGF1bCBCdXJjaGFyZCA8YnVyY2hhcmRAcG9ib3guY29tPgoKCSogZ3h4aW50LnRleGk6IEcrKyBub3cgaW1wbGVtZW50cyBuYW1lc3BhY2VzLgoJCjE5OTktMDktMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHBvcF9sYWJlbCk6IERvbid0IHdhcm4gYWJvdXQgdW51c2VkIGxhYmVscyBtb3JlIHRoYW4KCW9uY2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZ290b19zdG10KTogQWx3YXlzIG1hcmtlZCB1c2VkIGxhYmVscyBhcwoJdXNlZC4KCgkqIGRlY2wuYyAobGF5b3V0X3Zhcl9kZWNsKTogQ2hhbmdlIHByb3RvdHlwZS4gIENhbGwgbGF5b3V0X2RlY2wKCWV2ZW4gd2hlbiB0aGUgZGVjbGFyYXRpb24gaXMgZXh0ZXJuYWwuCgkoY3BfZmluaXNoX2RlY2wpOiBBZGp1c3QgY2FsbCB0byBsYXlvdXRfdmFyX2RlY2wuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogTWFrZSBzdXJlIHRvIGluaXRpYWxpemUgc3RtdCBiZWZvcmUgdXNpbmcgaXQuCgoxOTk5LTA5LTE4ICBNYXJ0aW4gdm9uIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHR5cGVjay5jIChnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IEFsd2F5cyBjb25zaWRlcgoJdmlydHVhbGl0eSBpbnNpZGUgbWVtYmVyIHBvaW50ZXIuCgoxOTk5LTA5LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVR1cm4gb24gZnVuY3Rpb24tYXQtYS10aW1lIHByb2Nlc3NpbmcuICAKCSogY3AtdHJlZS5oIChkb2luZ19zZW1hbnRpY19hbmFseXNpc19wKTogTmV3IG1hY3JvLgoJKFNGX0RFRkFVTFQpOiBEZWZpbmUgdG8gemVybywgbm90IFNGX0VYUEFORC4KCShzdGFydF9oYW5kbGVyX3Bhcm1zKTogQ2hhbmdlIHByb3RvdHlwZS4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4KCShleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuCgkoZXhwYW5kX3N0YXJ0X2VoX3NwZWMpOiBMaWtld2lzZS4KCShleHBhbmRfZW5kX2VoX3NwZWMpOiBEZWNsYXJlLgoJKGZpbmlzaF9oYW5kbGVyX3Bhcm1zKTogQ2hhbmdlIHByb3RvdHlwZS4KCShiZWdpbl9jYXRjaF9ibG9jayk6IERlY2xhcmUuCgkoZmluaXNoX2hhbmRsZXIpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGRvX3B1c2hsZXZlbCk6IERlY2xhcmUuCgkoZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4gIAoJKiBkZWNsLmMgKHB1c2hsZXZlbCk6IERvbid0IGNyZWF0ZQoJYmluZGluZyBsZXZlbHMgd2hlbiBub3QgZG9pbmcgc2VtYW50aWMgYW5hbHlzaXMuCgkocG9wbGV2ZWwpOiBEb24ndCBwb3AgdGhlbS4KCShwdXNoZGVjbCk6IEFzc2VydCB0aGF0IHdlIGFyZSBuZXZlciBjYWxsZWQgd2hlbiBub3QgZG9pbmcKCXNlbWFudGljIGFuYWx5c2lzLgoJKHB1c2hkZWNsX3RvcF9sZXZlbCk6IFVzZSBwdXNoX3RvX3RvcF9sZXZlbC4KCShtYWtlX2xhYmVsX2RlY2wpOiBEb24ndCBmaWRkbGUgd2l0aCBvYnN0YWNrcy4gIE1ha2UgUlRMIEZvciB0aGUKCWxhYmVsIHdoZW4gZXhwYW5kaW5nLgoJKGNwX2ZpbmlzaF9kZWNsKTogT25seSBpbmplY3QgZm9yLXNjb3BlIHZhcmlhYmxlcyB3aGVuIGRvaW5nCglzZW1hbnRpYyBhbmFseXNpcy4gIEFkZCBjb21tZW50cy4KCShzdGFydF9oYW5kbGVyX3Bhcm1zKTogUmV0dXJuIHRoZSBoYW5kbGVyIHBhcm0uCgkoc3RhcnRfZnVuY3Rpb24pOiBSZW9yZ2FuaXplLiAgRG9uJ3QgY2xlYXIgREVDTF9JTklUSUFMIGlmIGl0IGlzCglhbHJlYWR5IHNldC4gIFJlaW5pdGlhbGl6ZSBmcm9tIHNhdmVkIGZ1bmN0aW9uIGRhdGEgaWYgYXZhaWxhYmxlLgoJRG9uJ3QgcHVzaGxldmVsIHdoZW4gbm90IGRvaW5nIHNlbWFudGljIGFuYWx5c2lzLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBPbmx5IGdlbmVyYXRlIFJUTCB3aGVuIGV4cGFuZGluZy4gIE9ubHkKCXB1c2hkZWNsIHdoZW4gZG9pbmcgc2VtYW50aWMgYW5hbHlzaXMuICBTZXQKCWN1cnJlbnRfZWhfc3BlY190cnlfYmxvY2sgaWYgYXBwcm9wcmlhdGUuCgkoZmluaXNoX2Z1bmN0aW9uKTogU2ltcGxpZnkuICBVc2UgZG9fcHVzaGxldmVsIGFuZCBkb19wb3BsZXZlbC4KCUNvbWJpbmUgY29tbW9uIGNvZGUuICBEb24ndCBwb3BsZXZlbCB3aGVuIG5vdCBkb2luZyBzZW1hbnRpYwoJYW5hbHlzaXMuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3QgZXhwYW5kIGZ1bmN0aW9ucyB3aXRob3V0IGFuCglleHBsaWNpdCBjYWxsIHRvIGV4cGFuZF9ib2R5LgoJKG1hcmtfbGFuZ19mdW5jdGlvbik6IE1ha2UgZWhfc3BlY190cnlfYmxvY2sgYW5kCgl4X3Njb3BlX3N0bXRfc3RhY2suICAKCSogZXhjZXB0LmMgKGV4cGFuZF9lbmRfZWhfc3BlYyk6IERvbid0CglkZWNsYXJlLgoJKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4KCShwdXNoX2VoX2NsZWFudXApOiBVc2UgZmluaXNoX2RlY2xfY2xlYW51cC4KCShpbml0aWFsaXplX2hhbmRsZXJfcGFybSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBVc2UgaXQuCgkoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IFVzZSB0cmVlLWdlbmVyYXRpb24gZnVuY3Rpb25zLCBub3QKCVJUTC1nZW5lcmF0aW9uIGZ1bmN0aW9ucy4KCShleHBhbmRfc3RhcnRfZWhfc3BlYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9lbmRfZWhfc3BlYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9leGNlcHRpb25fYmxvY2tzKTogU2ltcGxpZnkuCgkoc3RhcnRfYW5vbl9mdW5jKTogVXNlIGRvX3B1c2hsZXZlbC4KCShlbmRfYW5vbl9mdW5jKTogVXNlIGRvX3BvcGx2ZWwuICBDYWxsIGV4cGFuZF9ib2R5IGZvciB0aGUKCWZ1bmN0aW9uLiAgCgkqIGV4cHIuYyAoZG9fY2FzZSk6IERvbid0IGNhbGwgZGVmaW5lX2Nhc2VfbGFiZWwuICAKCSogaW5pdC5jIChjcmVhdGVfdGVtcG9yYXJ5X3Zhcik6IFNldCBERUNMX0NPTlRFWFQgZm9yIGxvY2FsCgl2YXJpYWJsZXMuICAKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBDYWxsIGV4cGFuZF9ib2R5IGZvciB0aGUKCXRodW5rLgoJKHN5dGhlc2l6ZV9tZXRob2QpOiBMaWtld2lzZS4gIAoJKiBwYXJzZS55IChoYW5kbGVyX2FyZ3MpOiBHaXZlIGl0IHR0eXBlLgoJKGVhdF9zYXZlZF9pbnB1dCk6IENhbGwgZXhwYW5kX2JvZHkuCgkoYmFzZV9pbml0KTogVXNlIGRvX3B1c2hsZXZlbC4KCShwZW5kaW5nX2lubGluZSk6IENhbGwgZXhwYW5kX2JvZHkuCgkoaGFuZGxlcik6IEFkanVzdCBjYWxscyB0byBmaW5pc2hfaGFuZGxlcl9wYXJtcyBhbmQKCWZpbmlzaF9oYW5kbGVyLgoJKGhhbmRsZXJfYXJncyk6IERvbid0IGNhbGwgZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrLiAgUmV0dXJuIHRoZQoJY2F0Y2ggcGFyYW1ldGVyLiAgKiBwdC5jICh0c3Vic3RfZXhwcik6IEFkanVzdCBIQU5ETEVSIGhhbmRsaW5nLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcnR0aS5jIChzeW50aGVzaXplX3RpbmZvX2ZuKTogQ2FsbCBmaW5pc2hfZnVuY3Rpb24uICAKCSogc2VtYW50aWNzLmMgKGRvX3B1c2hsZXZlbCk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4gIEJ1aWxkCglTQ09QRV9TVE1Ucy4KCShkb19wb3BsZXZlbCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jYXNlX2xhYmVsKTogQ2FsbCBkZWZpbmVfY2FzZV9sYWJlbCB3aGVuIGRvaW5nIHNlbWFudGljCglhbmFseXNpcy4KCShmaW5pc2hfZ290b19zdG10KTogQ3JlYXRlIFJUTCBmb3IgbGFiZWxzLgoJKGZpbmlzaF9mdW5jdGlvbl90cnlfYmxvY2spOiBTZXQgaW5fZnVuY3Rpb25fdHJ5X2hhbmRsZXIKCXVuY29uZGl0aW9uYWxseS4KCShmaW5pc2hfZnVuY3Rpb25faGFuZGxlcl9zZXF1ZW5jZSk6IFVuc2V0IGl0LgoJKGZpbmlzaF9oYW5kbGVyX3Bhcm1zKTogVXNlIGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayBldmVuIHdoZW4KCWJ1aWxkaW5nIGEgc3RhdGVtZW50LXRyZWUuCgkoYmVnaW5fY2F0Y2hfYmxvY2spOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2hhbmRsZXIpOiBNb3ZlIGEgbGl0dGxlIFJUTC1nZW5lcmF0aW9uIGxvZ2ljIGhlcmUuCgkoZmluaXNoX2RlY2xfY2xlYW51cCk6IEFsbG93IGNsZWFudXBzIGZvciBlbXB0eSBkZWNsYXJhdGlvbnMuCgkoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IERvbid0IHB1c2hkZWNsIHdoZW4gbm90IGRvaW5nCglzZW1hbnRpYyBhbmFseXNpcy4KCShleHBhbmRfc3RtdCk6IERvbid0IGRvIHNlbWFudGljIGFuYWx5c2lzIGZvciB2YXJpYWJsZQoJZGVjbGFyYXRpb25zLiAgSGFuZGxlIFNUQVJUX0NBVENIX1NUTVQuICBDYWxsIGV4cGFuZF9sYWJlbAoJZGlyZWN0bHkgZm9yIGEgTEFCRUxfU1RNVC4gIFR3ZWFrIGhhbmRsaW5nIG9mIEdPVE9fU1RNVC4gIEFkanVzdAoJSEFORExFUnMuICBIYW5kbGUgU0NPUEVfU1RNVCwgQ1RPUl9JTklUSUFMSVpFUiwgYW5kIFJFVFVSTl9JTklULgoJKGV4cGFuZF9ib2R5KTogTGV0IGV4cGFuZF9zdG10IGhhbmRsZSBDVE9SX0lOSVRJQUxJWkVSLAoJUkVUVVJOX0lOSVQgYW5kIGZ1bmN0aW9uIHRyeSBibG9ja3MuCgkKCSogY3AtdHJlZS5oIChsYW5ndWFnZV9mdW5jdGlvbik6IEFkZCB4X2VoX3NwZWNfdHJ5X2Jsb2NrLiAgQWRkCgl4X3Njb3BlX3N0bXRfc3RhY2suICBBZGQgeF9pbl9jaGFyZ2VfcGFybS4KCShjdXJyZW50X2VoX3NwZWNfdHJ5X2Jsb2NrKTogTmV3IG1hY3JvLgoJKGN1cnJlbnRfc2NvcGVfc3RtdF9zdGFjayk6IExpa2V3aXNlLgoJKGN1cnJlbnRfaW5fY2hhcmdlX3Bhcm0pOiBMaWtld2lzZS4KCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IEluaXRpYWxpemUgY3VycmVudF9pbl9jaGFyZ2VfcGFybS4KCShmaW5pc2hfZnVuY3Rpb24pOiBVc2UgY3VycmVudF9pbl9jaGFyZ2VfcGFybSByYXRoZXIgdGhhbiBsb29raW5nCgl1cCBfX2luX2NocmcuCgkqIHNlYXJjaC5jIChleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5kZWYgKENMRUFOVVBfU1RNVCk6IEZpeCBzcGVsbGluZyBpbiBkdW1wcy4KCShUUllfQkxPQ0spOiBMaWtld2lzZS4KCShIQU5ETEVSKTogTGlrZXdpc2UuCgkoU1RBUlRfQ0FUQ0hfU1RNVCk6IE5ldyB0cmVlIG5vZGUuCgkoU0NPUEVfU1RNVCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKFNDT1BFX0JFR0lOX1ApOiBOZXcgbWFjcm8uCgkoU0NPUEVfTlVMTElGSUVEX1ApOiBMaWtld2lzZS4KCShzdHJ1Y3QgbGFuZ19kZWNsX2ZsYWdzKTogQWRkIHBlbmRpbmdfaW5saW5lX3AuICBBZGp1c3QgZHVtbXkuCgkoc3RydWN0IGxhbmdfZGVjbCk6IEFkZCBzYXZlZF9sYW5ndWFnZV9mdW5jdGlvbi4KCShERUNMX1BFTkRJTkdfSU5MSU5FX0lORk8pOiBBZGp1c3QgZG9jdW1lbnRhdGlvbi4KCShERUNMX1BFTkRJTkdfSU5MSU5FX1ApOiBOZXcgbWFjcm8uCgkoVFlQRV9USV9BUkdTKTogRml4IHR5cG8gaW4gY29tbWVudC4KCShERUNMX1NBVkVEX1RSRUUpOiBBZGQgdG8gZG9jdW1lbnRhdGlvbi4KCShERUNMX1NBVkVEX0ZVTkNUSU9OX0RBVEEpOiBOZXcgbWFjcm8uCgkoU1RBUlRfQ0FUQ0hfVFlQRSk6IExpa2V3aXNlLgoJKFNDT1BFX0VORF9QKTogTmV3IG1hY3JvLgoJKGRlY2xhcmVfcGFybV9sZXZlbCk6IERvbid0IGRlY2xhcmUuCgkqIGRlY2wuYyAobWFya19sYW5nX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJbWFya19jcF9mdW5jdGlvbl9jb250ZXh0LgoJKHNhdmVfZnVuY3Rpb25fZGF0YSk6IE5ldyBmdW5jdGlvbi4KCShkZWNsYXJlX3Bhcm1fbGV2ZWwpOiBSZW1vdmUuCgkoZmluaXNoX2Z1bmN0aW9uKTogVXNlIHNhdmVfZnVuY3Rpb25fZGF0YSB0byBzcXVpcnJlbCBhd2F5CglpbXBvcnRhbnQgc3R1ZmYgZm9yIGxhdGVyIHVzZS4KCShtYXJrX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBVc2UgbWFya19mdW5jdGlvbl9kYXRhLgoJKGxhbmdfbWFya190cmVlKTogTGlrZXdpc2UuCgkqIGxleC5jIChiZWdpbl9kZWZpbml0aW9uX29mX2luY2xhc3NfaW5saW5lKTogU2V0CglERUNMX1BFTkRJTkdfSU5MSU5FX1AuCgkoc3RvcmVfcGVuZGluZ19pbmxpbmUpOiBDbGVhciBpdC4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBMaWtld2lzZS4KCjE5OTktMDktMTcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKHBlcmZvcm1faW1wbGljaXRfY29udmVyc2lvbik6IERlYWwgd2l0aCBlcnJvcl9tYXJrX25vZGUuCgoxOTk5LTA5LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jICh3YXJuX2V4dGVybl9yZWRlY2xhcmVkX3N0YXRpYyk6IERvbid0IGdldCBjb25mdXNlZCBieQoJc3RhdGljIG1lbWJlciBmdW5jdGlvbnMuCgkoZHVwbGljYXRlX2RlY2xzKTogTWVyZ2UgREVDTF9USElTX1NUQVRJQy4KCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogTWFrZSBzdXJlIGFzc2lnbm1lbnRzIHRvIGxvY2FsCglzdGF0aWNzIGFjdHVhbGx5IG9jY3VyLgoKMTk5OS0wOS0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAocG9wbGV2ZWxfY2xhc3MpOiBEZWNsYXJlLgoJKiBjbGFzcy5jIChwb3BjbGFzcyk6IFVzZSBwb3BsZXZlbF9jbGFzcywgbm90IHBvcGxldmVsLgoJKiBkZWNsLmMgKHBvcGxldmVsX2NsYXNzKTogRG9uJ3QgbWFrZSBpdCBzdGF0aWMuICBEb24ndCByZXR1cm4gYQoJdmFsdWUuCgkocG9wbGV2ZWwpOiBEb24ndCBjYWxsIHBvcGxldmVsX2NsYXNzOyBhYm9ydCBpbiBhIGNsYXNzCgliaW5kaW5nIGxldmVsIGlzIHNlZW4uCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHJhbnNsYXRpb25fdW5pdCk6IFVzZSBwb3BfZXZlcnl0aGluZy4KCSogcGFyc2UueSAobWVtYmVyX2luaXQpOiBBbGxvdyBlcnJvcnMuCgkocGVuZGluZ19pbmxpbmUpOiBDYWxsIGZpbmlzaF9mdW5jdGlvbi4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBBZGp1c3QuCgoxOTk5LTA5LTE3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgkKCSogZXJyb3IuYzogUmVkdWNlIGNvZGUgZHVwbGljYXRpb24uCgkoZHVtcF90ZW1wbGF0ZV92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCShkdW1wX3R5cGVfcmVhbCk6IFVzZSBpdC4KCShkdW1wX2RlY2wpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX25hbWUpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBEb24ndCBiZSB0b28gdGFsa2F0aXZlIGFib3V0IGZ1bmN0aW9uIHJldHVybgoJdHlwZSB2YXJpZXR5LgoKMTk5OS0wOS0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbGV4LmMgKGluaXRfY3BwX3BhcnNlKTogQ2FsbCB4Y2FsbG9jLCBub3QgbWFsbG9jL2J6ZXJvLgoKCSogeHJlZi5jIChTQUxMT0MpOiBDYWxsIHhzdHJkdXAsIG5vdCB4bWFsbG9jL3N0cmNweS4KCjE5OTktMDktMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogQWxzbyBjYWxsIGNoZWNrX2dsb2JhbF9kZWNsYXJhdGlvbnMgZm9yCgl0aGUgcGVuZGluZ19zdGF0aWNzIGxpc3QuCgoxOTk5LTA5LTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoY3BfcHJhZ21hX2ltcGxlbWVudGF0aW9uKTogQWxsb3cgI3ByYWdtYSBpbXBsZW1lbnRhdGlvbgoJaW4gaGVhZGVyIGZpbGVzLgoKMTk5OS0wOS0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChtYXJrX2ltcGxfZmlsZV9jaGFpbik6IEZvbGxvdyB0aGUgbmV4dCBjaGFpbi4KCjE5OTktMDktMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHdhcm5fZXh0ZXJuX3JlZGVjbGFyZWRfc3RhdGljKTogU2ltcGxpZnkuICBDYXRjaAoJcHJvYmxlbXMgd2l0aCBleHRlcm4gIkMiIGZ1bmN0aW9ucyByZWRlY2xhcmVkIGFzIHN0YXRpYy4KCShkdXBsaWNhdGVfZGVjbHMpOiBXaGVuIGEgYnVpbHRpbiBpcyByZWRlY2xhcmVkIHN0YXRpYywgbWFrZSB0aGUKCW5ldyBmdW5jdGlvbiBoYXZlIGludGVybmFsIGxpbmthZ2UuCgkKMTk5OS0wOS0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSGFuZGxlIFZBX0FSR19FWFBSLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkobWFwY2FyKTogTGlrZXdpc2UuCgoxOTk5LTA5LTE1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB0eXBlY2syLmMgKGFjayk6IERvbid0IGRlY2xhcmUgcHJvZ25hbWUuCgoxOTk5LTA5LTE0ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBsc2QuaWMudW5pY2FtcC5icj4KCgkqIGxleC5jIChjcF9wcmFnbWFfaW50ZXJmYWNlLCBjcF9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBDb3B5CglmaWxlbmFtZXMgd2l0aCBnZ2NfYWxsb2Nfc3RyaW5nLgoKMTk5OS0wOS0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfdGFyZ2V0X2V4cHIpOiBTZXQgVFJFRV9TSURFX0VGRkVDVFMgb24gdGhlIAoJVEFSR0VUX0VYUFIuCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRG9uJ3Qgc2V0IFRSRUVfU0lERV9FRkZFQ1RTIG9uCgl0aGUgVEFSR0VUX0VYUFIuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19uZXcpOiBMaWtld2lzZS4KCShnZXRfdGFyZ2V0X2V4cHIpOiBMaWtld2lzZS4KCQpUdWUgU2VwIDE0IDAxOjQ1OjEwIDE5OTkgIE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIE1ha2VmaWxlLmluOiAgUHJlcGVuZCAkKFNIRUxMKSB0byBtb3ZlLWlmLWNoYW5nZSBjYWxscy4KCjE5OTktMDktMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGJ1aWxkX3RhcmdldF9leHByKTogTmV3IGZ1bmN0aW9uLgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBVc2UgYnVpbGRfdGFyZ2V0X2V4cHIuCgkoY29udmVydF9saWtlKTogTGlrZXdpc2UuCgkoYnVpbGRfb3Zlcl9jYWxsKTogTGlrZXdpc2UuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogZGVjbC5jIChidWlsZF9jbGVhbnVwX29uX3NhZmVfb2JzdGFjayk6IEZvbGQgaW50byAuLi4KCShkZXN0cm95X2xvY2FsX3Zhcik6IEhlcmUuCgkoYnVpbGRfdGFyZ2V0X2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfbmV3KTogVXNlIGl0LgoJKGdldF90YXJnZXRfZXhwcik6IExpa2V3aXNlLgoKMTk5OS0wOS0xMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIHR5cGVjay5jIChleHByX3NpemVvZik6IERvbid0IGRlY2F5IGFycmF5cyBhbmQgZnVuY3Rpb25zLgoJUmVtb3ZlIG1pc2xlYWRpbmcgY29tbWVudC4KCShidWlsZF9jb21wb3VuZF9leHByKTogRG9uJ3QgZGVjYXkgYXJyYXlzLgoKMTk5OS0wOS0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogQWx3YXlzIHVzZSBhIFRBUkdFVF9FWFBSIGZvcgoJY2xhc3MgcnZhbHVlcyBhZ2Fpbi4KClN1biBTZXAgMTIgMjM6Mjk6MDcgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChnKytzcGVjLm8pOiBEZXBlbmQgb24gc3lzdGVtLmggYW5kIGdjYy5oLgoKCSogZysrc3BlYy5jOiBJbmNsdWRlIGdjYy5oLgoJKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogQ29uc3RpZnkgYSBjaGFyKi4gIENhbGwgeGNhbGxvYywgbm90CiAJeG1hbGxvYy9iemVyby4gIEFsbCBjYWxscyB0byB0aGUgZnVuY3Rpb24gcG9pbnRlciBwYXJhbWV0ZXIgbm93CiAJZXhwbGljaXRseSBjYWxsIGBmYXRhbCcuCgoxOTk5LTA5LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChpbXBsaWNpdF9jb252ZXJzaW9uKTogUm9idXN0aWZ5LiAgSGFuZGxlIE9GRlNFVF9SRUZzLgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBDb21wbGV0ZSB0aGUgZnJvbSBhbmQgZGVzdGluYXRpb24gdHlwZXMuCglBZGp1c3Qgd2FybmluZyBhYm91dCBmdW5jdGlvbnMgYWx3YXlzIGJlaW5nIGB0cnVlJyBpbiBjb25kaXRpb25hbHMuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgcGxheSBmdW5ueSBnYW1lcyB3aXRoIGFib3J0LgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBIYW5kbGUgT1ZFUkxPQURzLgoJKiBzcGV3LmMgKHByb2JlX29ic3RhY2spOiBSZW1vdmUuCgkqIHR5cGVjay5jIChjb25kaXRpb25fY29udmVyc2lvbik6IFVzZSBwZXJmb3JtX2ltcGxpY2l0X2NvbnZlcnNpb24uCgkKMTk5OS0wOS0xMiAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBjcC10cmVlLmggKGF1dG9fZnVuY3Rpb24sIGRlZmluZV9mdW5jdGlvbik6IEFkanVzdCBwcm90b3R5cGVzLgoJKiBkZWNsLmMgKGRlZmluZV9mdW5jdGlvbik6IExvc2UgRlVOQ1RJT05fQ09ERSBhcmcuICBBbGwgY2FsbGVycwoJY2hhbmdlZC4KCShhdXRvX2Z1bmN0aW9uKTogTGlrZXdpc2UsIGZvciBDT0RFIGFyZy4KCU1vdmUgY29kZSB0byBzZXQgREVDTF9CVUlMVF9JTiBhbmQgREVDTF9GVU5DVElPTl9DT0RFIHRvLi4uCgkoYnVpbHRpbl9mdW5jdGlvbik6IC4uLiBoZXJlLgoKMTk5OS0wOS0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoYWRkX2RlY2xfdG9fbGV2ZWwpOiBSZW1vdmUgVFJFRV9QRVJNQU5FTlQgYXNzZXJ0aW9uLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3Qgc2V0IFRSRUVfUEVSTUFORU5UIGZvciB0aGUKCWVycm9yX21hcmtfbm9kZS4KCShzdGFydF9kZWNsKTogRG9uJ3QgcmVidWlsZCBub24tcGVybWFuZW50IEFSUkFZX1RZUEVzLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZ3Jva3Bhcm1zKTogRG9uJ3QgY2hlY2sgVFJFRV9QRVJNQU5FTlQgd2hlbiBidWlsZGluZyB1cCBsaXN0cy4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogRG9uJ3QgYXNzZXJ0IFRSRUVfUEVSTUFORU5ULgoJKG1hcmtfaW5saW5lX2Zvcl9vdXRwdXQpOiBMaWtld2lzZS4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IERvbid0IGNoZWNrIFRSRUVfUEVSTUFORU5ULgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBEb24ndCBjaGVjayBUUkVFX1BFUk1BTkVOVC4KCSogbGV4LmMgKGNoZWNrX25ld2xpbmUpOiBEb24ndCBjaGVjayBnZ2NfcDsgaXQgaXMgYWx3YXlzIG9uZS4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogRG9uJ3QgY2hlY2sgVFJFRV9QRVJNQU5FTlQuCgkqIHNwZXcuYyAoeXlsZXgpOiBEb24ndCBjb3B5X25vZGUgb3IgcHJvYmVfb2JzdGFja3MgZm9yCglub24tcGVybWFuZW50IENPTlNUQU5UcyBhbmQgU1RSSU5Hcy4KCSogdHJlZS5jIChidWlsZF9jcGx1c19hcnJheV90eXBlXzEpOiBEb24ndCBmdXNzIHdpdGgKCVRSRUVfUEVSTUFORU5UIG9uIEFSUkFZX1RZUEVzLgoJCgkqIGNwLXRyZWUuZGVmIChDTEVBTlVQX1NUTVQpOiBOZXcgbm9kZS4KCSogY3AtdHJlZS5oIChsYW5ndWFnZV9mdW5jdGlvbik6IEFkZCBuYW1lX2RlY2xhcmVkLgoJKGN1cnJlbnRfZnVuY3Rpb25fbmFtZV9kZWNsYXJlZCk6IE5ldyBtYWNyby4KCShDTEVBTlVQX0RFQ0wpOiBOZXcgbWFjcm8uCgkoQ0xFQU5VUF9FWFBSKTogTGlrZXdpc2UuCgkoZW1pdF9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShmaW5pc2hfZGVjbF9jbGVhbnVwKTogTmV3IGZ1bmN0aW9uLgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogU2ltcGxpZnkuCgkob2NwX2NvbnZlcnQpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBSZW1vdmUgY2FsbCB0byBhZGRfZGVjbF9zdG10LgoJKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBBZGp1c3QsIHRvIGhhbmRsZSBiaW5kaW5ncyB0ZW1wb3JhcmllcyB0bwoJcmVmZXJlbmNlcy4gIFJlbW92ZSBkZWFkIGNvZGUuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBEb24ndCBnZW5lcmF0ZSBSVEwgZm9yCglkZWNsYXJhdGlvbnMgaGVyZSwgb3IgYnVpbGQgY2xlYW51cHMgaGVyZS4gIERvbid0IGZ1c3Mgd2l0aAoJb2JzdGFja3MuICBSZXBsYWNlIGV4cGFuZF9zdGFydF90YXJnZXRfdGVtcHMgY2FsbHMgd2l0aCBleHBsaWNpdAoJc2V0dGluZyBvZiBzdG1zX2FyZV9mdWxsX2V4cHJzX3AuCgkoZGVzdHJveV9sb2NhbF92YXIpOiBOZXcgZnVuY3Rpb24uCgkoZW1pdF9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShjcF9maW5pc2hfZGVjbCk6IFVzZSB0aGVtLCBhcyBhcHByb3ByaWF0ZS4KCShzdGFydF9mdW5jdGlvbik6IEFubm91bmNlIHRlbXBsYXRlIGZ1bmN0aW9ucy4KCShzdG9yZV9wYXJtX2RlY2xzKTogRG9uJ3QgY2FsbCBkZWNsYXJlX2Z1bmN0aW9uX25hbWUgaGVyZS4KCShmaW5pc2hfc3RtdCk6IERvbid0IHN0YXJ0IGVtaXQgYmFzZS1pbml0aWFsaXphdGlvbiBjb2RlIHdoZW4ganVzdAoJYnVpbGRpbmcgdGhlIHN0YXRlbWVudC10cmVlLgoJKiBpbml0LmMgKGNyZWF0ZV90ZW1wb3JhcnlfdmFyKTogTW92ZSBhZGRfZGVjbF9zdG10IGNhbGwgLi4uCgkoZ2V0X3RlbXBfcmVndmFyKTogSGVyZS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBNYWtlIERFQ0xfSU5JVElBTCBsb29rIGxpa2Ugd2hhdAoJY3BfZmluaXNoX2RlY2wgd291bGQgZXhwZWN0LiAgRG9uJ3QgY2FsbCBhZGRfZGVjbF9zdG10LgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY29tcG91bmRfc3RtdCk6IENhbGwgZGVjbGFyZV9mdW5jdGlvbl9uYW1lLAoJaWYgYXBwcm9wcmlhdGUuCgkoZmluaXNoX2RlY2xfY2xlYW51cCk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RtdCk6IFVzZSBlbWl0X2xvY2FsX3ZhciB0byBvdXRwdXQgdmFyaWFibGVzLgkJCgkoZXhwYW5kX2JvZHkpOiBTZXQgY3VycmVudF9mdW5jdGlvbl9uYW1lX2RlY2xhcmVkLgoJCjE5OTktMDktMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGZpbmlzaF9jbGVhbnVwX3RyeV9ibG9jayk6IE5ldyBmdW5jdGlvbi4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jbGVhbnVwX3RyeV9ibG9jayk6IEFkZCBjb21tZW50LgoKRnJpIFNlcCAxMCAxMDozMjozMiAxOTk5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNwLXRyZWUuaDogRGVsZXRlIGRlY2xhcmF0aW9ucyBmb3IgYWxsIHRyZWUgbm9kZXMgbm93IG1vdmVkIHRvCglnbG9iYWxfdHJlZXMuCgkqIGRlY2wuYzogRGVsZXRlIHRoZWlyIGRlZmluaXRpb25zLgoJKFNIT1JUX1RZUEVfU0laRSwgSU5UX1RZUEVfU0laRSwgTE9OR19UWVBFX1NJWkUsIExPTkdfTE9OR19UWVBFX1NJWkUsCglGTE9BVF9UWVBFX1NJWkUsIERPVUJMRV9UWVBFX1NJWkUsIExPTkdfRE9VQkxFX1RZUEVfU0laRSk6IERvbid0Cglwcm92aWRlIGRlZmF1bHRzLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbCBidWlsZF9jb21tb25fdHJlZV9ub2RlcyBhbmQKCWJ1aWxkX2NvbW1vbl90cmVlX25vZGVzXzIgaW5zdGVhZCBvZiBidWlsZGluZyB0aGVpciBub2RlcyBoZXJlLgoJRG9uJ3QgYWRkIGdjIHJvb3RzIGZvciB0aGVtLgoKMTk5OS0wOS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ3VhZ2VfZnVuY3Rpb24pOiBSZW5hbWUgZXhwYW5kaW5nX3AgdG8KCXhfZXhwYW5kaW5nX3AuICBSZW5hbWUgbmFtZWRfbGFiZWxfdXNlcyB0byB4X25hbWVkX2xhYmVsX3VzZXMuCgkoZXhwYW5kaW5nX3ApOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoVFJFRV9WSUFfUFJJVkFURSk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkoREVDTF9SRUZFUkVOQ0VfU0xPVCk6IFJlbW92ZS4KCShTRVRfREVDTF9SRUZFUkVOQ0VfU0xPVCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKG5hbWVkX2xhYmVsX3VzZXMpOiBBZGp1c3QuIFJlbW92ZSBjaGlja2VuIGNvbW1lbnQuCgkocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBEb24ndCB0cnVuY2F0ZSB0aGUgY2hhaW4gb2YgYmluZGluZ3Mgd2hlbgoJYWRkaW5nIGFuIG92ZXJsb2FkZWQgZnVuY3Rpb24uCgkoZ3Jva19yZWZlcmVuY2VfaW5pdCk6IERvbid0IHVzZSBERUNMX1JFRkVSRU5DRV9TTE9ULgoJKGluaXRpYWxpemVfbG9jYWxfdmFyKTogRml4IHR5cG8gaW4gY29tbWVudC4KCShzdG9yZV9wYXJtX2RlY2xzKTogRG9uJ3Qgc2V0IERFQ0xfUkVGRVJFTkNFX1NMT1QuICBUaWR5IHVwLgoJKiBkZWNsMi5jIChzdGFydF9vYmplY3RzKTogTWFrZSB0aGUgZmFjdCB0aGF0IHdlIGFyZSBleHBhbmRpbmcKCXRoZSBnZW5lcmF0ZWQgZnVuY3Rpb24gcmlnaHQgYXdheSBleHBsaWNpdC4KCShzdGFydF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9maWxlKTogRml4IHR5cG8gaW4gY29tbWVudC4KCSogaW5pdC5jIChidWlsZF92ZWNfaW5pdCk6IENvcnJlY3QgYnVncyBpbiBoYW5kbGluZyBjbGVhbnVwcy4KCSogc2VtYW50aWNzLmMgKG1heWJlX2NvbnZlcnRfY29uZCk6IE5ldyBmdW5jdGlvbi4KCShGSU5JU0hfQ09ORCk6IEFsd2F5cyBzdG9yZSB0aGUgY29uZGl0aW9uLCBldmVuIGlmIHRoZXJlJ3MKCWEgZGVjbGFyYXRpb24uCgkoZmluaXNoX2lmX3N0bXRfY29uZCk6IFVzZSBtYXliZV9jb252ZXJ0X2NvbmQuCgkoZmluaXNoX3doaWxlX3N0bXRfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9kb19zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9jb25kKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NvbmQpOiBBZGp1c3QuCgkKCSogY3AtdHJlZS5oIChGTl9UUllfQkxPQ0tfUCk6IE5ldyBtYWNyby4KCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogUmVtb3ZlIG9ic3RhY2sgbWFjaGluYXRpb25zLgoJKGV4cGFuZF9jbGVhbnVwX2Zvcl9iYXNlKTogTGlrZXdpc2UuCgkoZmluaXNoX2luaXRfc3RtdHMpOiBNYXJrIHRoZSBzdGF0ZW1lbnQtZXhwcmVzc2lvbiBhcyB1c2VkLgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IFVzZSB0cmVlLWdlbmVyYXRpbmcgZnVuY3Rpb25zLCBub3QKCVJUTC4KCShkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkoZG9fYnVpbGRfYXNzaWduX3JlZik6IExpa2V3aXNlLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogTGlrZXdpc2UuICBLZWVwIHRyYWNrIG9mIGxpbmUgbnVtYmVycy4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBIYW5kbGUgdmFyaW91cyBraW5kcyBvZiB0cnkgYmxvY2tzLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXRzKTogUmVtb3ZlLgoJKGJlZ2luX2Z1bmN0aW9uX3RyeV9ibG9jayk6IFNldCBGTl9UUllfQkxPQ0tfUC4KCShmaW5pc2hfZnVuY3Rpb25fdHJ5X2Jsb2NrKTogQmUgY2FyZWZ1bCByZWNoYWluaW5nIAoJZnVuY3Rpb24gdHJ5IGJsb2Nrcy4KCShleHBhbmRfc3RtdCk6IExvb3AgdGhyb3VnaCBhbGwgdGhlIHN0YXRlbWVudHMgYXQgYSBnaXZlbiBsZXZlbC4KCShleGFwbmRfYm9keSk6IEJlIGNhcmVmdWwgd2l0aCBsaW5lLW51bWJlcnMgaGVyZSB0b28uICBQcmVwYXJlIGZvcgoJYmVpbmcgY2FsbGVkIGRpcmVjdGx5IGZyb20gdGhlIHBhcnNlci4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX2Z1bmN0aW9uKTogQWRqdXN0IHByb3RvdHlwZS4KCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBSZXR1cm4gdGhlIGZ1bmN0aW9uIGNvbXBpbGVkLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogRG9uJ3QgcGxheSBnYW1lcyB3aXRoIG9ic3RhY2tzLgoJKiB0cmVlLmMgKG1hcGNhcik6IEhhbmRsZSBPRkZTRVRfUkVGIGFuZCBCSVRfRklFTERfUkVGLgoJKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiB0eXBlY2syLmMgKHN0b3JlX2luaXRfdmFsdWUpOiBBZGQgY29tbWVudC4KCgkqIGNwLXRyZWUuaCAoQ1BUSV9BVEVYSVQpOiBOZXcgbWFjcm8uCgkoYXRleGl0X25vZGUpOiBMaWtld2lzZS4KCSogZGVjbC5jIChkZXN0cm95X2xvY2FsX3N0YXRpYyk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBmcm9tIC4uLgoJKGV4cGFuZF9zdGF0aWNfaW5pdCk6IEhlcmUuCgoJKiBydHRpLmMgKGdldF90aW5mb192YXIpOiBUaGVzZSBzaG91bGQgYWx3YXlzIGJlIGdsb2JhbAoJKGV4cGFuZF9zaV9kZXNjKTogVXNlIHRyZWUsIG5vdCBSVEwsIGZ1bmN0aW9ucyB0byBnZW5lcmF0ZSBjb2RlLgoJKGV4cGFuZF9jbGFzc19kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX3B0cl9kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX2F0dHJfZGVzYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9nZW5lcmljX2Rlc2MpOiBMaWtld2lzZS4KCShzeW50aGVzaXplX3RpbmZvX2ZuKTogTGlrZXdpc2UuCgoxOTk5LTA5LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VtYW50aWNzLmMgKFJFQ0hBSU5fU1RNVFMpOiBSZW1vdmUgYGxhc3QnIHBhcmFtZXRlci4KCShSRUNIQUlOX1NUTVRTX0ZST01fTEFTVCk6IFJlbW92ZS4gIFJlcGxhY2UgYWxsIHVzZXMgd2l0aAoJUkVDSEFJTl9TVE1UUy4gCgkoUkVDSEFJTl9TVE1TVF9GUk9NX0NIQUlOKTogTGlrZXdpc2UuCgoJKiBwYXJzZS55IChzaW1wbGVfc3RtdCk6IEZpeCB0eXBvIGluIGxhc3QgY2hhbmdlLgoKCSogY3AtdHJlZS5oIChFWFBSX1NUTVRfQVNTSUdOU19USElTKTogTmV3IG1hY3JvLgoJKFNUTVRfSVNfRlVMTF9FWFBSX1ApOiBMaWtld2lzZS4KCShTVE1UX0xJTkVOT19GT1JfRk5fUCk6IExpa2V3aXNlLgoJKHByZXBfc3RtdCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZGluZ19zdG10X3RyZWUpOiBUd2VhayBmb3Igc2FmZXR5LgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IFVzZSBwcmVwX3N0bXQgdGhyb3VnaG91dC4KCShhZGRfdHJlZSk6IE1vdmUgaXQgdG8gc2VtYW50aWNzLmMKCSogc2VtYW50aWNzLmMgKGFkZF90cmVlKTogTW92ZSBpdCBoZXJlLgoJKGZpbmlzaF9leHByX3N0bXRfcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfZXhwcl9zdG10KTogVXNlIGl0LgoJKGZpbmlzaF9pZl9zdG10X2NvbmQpOiBVc2UgRklOSVNIX0NPTkQuCgkoZmluaXNoX3doaWxlX3N0bXRfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3JfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdG10X3RyZWUpOiBUd2VhayBsaW5lLW51bWJlciBoYW5kbGluZy4KCShwcmVwX3N0bXQpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX3N0bXQpOiBVc2UgaXQuCgkKCSogY3AtdHJlZS5oIChiZWdpbl9zd2l0Y2hfc3RtdCk6IEFkanVzdCBwcm90b3R5cGUuCgkoZmluaXNoX3N3aXRjaF9jb25kKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHNpbXBsZV9zdG10KTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIHNlbWFudGljcy5jIChleHBhbmRfY29uZCk6IE5ldyBmdW5jdGlvbi4KCShGSU5JU0hfQ09ORCk6IE5ldyBtYWNyby4KCShiZWdpbl9zd2l0Y2hfc3RtdCk6IEJ1aWxkIHRoZSBTV0lUQ0hfU1RNVCBoZXJlLgoJKGZpbmlzaF9zd2l0Y2hfc3RtdF9jb25kKTogTm90IGhlcmUuCgkoZXhwYW5kX3N0bXQpOiBBZGp1c3QgY2FsbHMgdG8gYmVnaW5fc3dpdGNoX3N0bXQgYW5kCglmaW5pc2hfc3dpdGNoX2NvbmQuICBVc2UgZXhwYW5kX2NvbmQgdGhyb3VnaG91dC4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgdHlwZXMgZm9yIGNvbnN0YW50cy4KCURlc2NyaWJlIERFQ0xfQVJHX1RZUEUgbW9yZSBpbnR1aXRpdmVseS4KCUhhbmRsZSBBUlJBWV9SRUYuCgoJKiBkZWNsLmMgKGxhbmdfbWFya190cmVlKTogTWFyayBUWVBFX0xBTkdfU1BFQ0lGSUMuCgkobGFuZ19jbGVhbnVwX3RyZWUpOiBSZW1vdmUuCgkqIGxleC5jIChtYWtlX2xhbmdfdHlwZSk6IFVzZSBnZ2NfYWxsb2MgdG8gYWxsb2NhdGUKCVRZUEVfTEFOR19TUEVDSUZJQy4KCglSZW9yZ2FuaXplIHBlci1mdW5jdGlvbiBkYXRhLgoJKiBjcC10cmVlLmggKHNhdmVkX3Njb3BlKTogQWRkIGZ1bmN0aW9uX2RlY2wsIGJpbmRpbmdzLgoJKGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVuYW1lIGJpbmRpbmdfbGV2ZWwgdG8gYmluZGluZ3MuCgkoY3BfZnVuY3Rpb25fY2hhaW4pOiBVc2UgdGhlIGN1cnJlbnRfZnVuY3Rpb24sIG5vdCB0aGUKCW91dGVyX2Z1bmN0aW9uX2NoYWluLgoJKGN1cnJlbnRfY2xhc3NfcHRyKTogTWFrZSBpdCB3b3JrLCBldmVuIHdoZW4gdGhlcmUncyBubyAKCWN1cnJlbnQgZnVuY3Rpb24uCgkoY3VycmVudF9jbGFzc19yZWYpOiBMaWtld2lzZS4KCShTRl9ERUZBVUxULCBTRl9QUkVfUEFSU0VELCBTRl9JTkNMQVNTX0lOTElORSwgU0ZfRVhQQU5EKTogTmV3IAoJbWFjcm9zLgoJKGNsZWFyX3RlbXBfbmFtZSk6IFJlbW92ZS4KCSogZGVjbC5jIChjaGVja19mdW5jdGlvbl90eXBlKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IGZyb20KCXN0YXJ0X2Z1bmN0aW9uLgoJKGN1cnJlbnRfYmluZGluZ19sZXZlbCk6IEFkanVzdCBkZWZpbml0aW9uLgoJKHB1c2hsZXZlbCk6IFNpbXBsaWZ5LgoJKHBvcGxldmVsKTogRG9uJ3QgdXNlIG5hbWVkX2xhYmVsX3VzZXMgd2hlbiB3ZSdyZSBvdXRzaWRlCglhIGZ1bmN0aW9uIHNjb3BlLgoJKG1hcmtfc2F2ZWRfc2NvcGUpOiBNYXJrIGZ1bmN0aW9uX2RlY2wgYW5kIGJpbmRpbmdzLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogRG9uJ3QgdW5jb25kaXRpb25hbGx5IHB1c2ggYSBuZXcKCWZ1bmN0aW9uIGNvbnRleHQuICBTYXZlIGJpbmRpbmdzIGFuZCB0aGUgY3VycmVudF9mdW5jdGlvbl9kZWNsLgoJRG9uJ3QgY2xlYXIgbmFtZWRfbGFiZWxzLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFBvcCBmdW5jdGlvbiBjb250ZXh0IGlmIGFwcHJvcHJpYXRlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IGluaXRfbGFuZ19zdGF0dXMgYW5kIGZyZWVfbGFuZ19zdGF0dXMsCglyYXRoZXIgdGhhbiBzYXZlX2xhbmdfc3RhdHVzIGFuZCByZXN0b3JlX2xhbmdfc3RhdHVzLgoJKHN0YXJ0X2Z1bmN0aW9uKTogVGFrZSBTRl8qIGZsYWdzLiAgRG9uJ3QgY2xlYXIgcGVyLWZ1bmN0aW9uIGRhdGEuCglSZW9yZGVyIGFuZCBzaW1wbGlmeSB0byB1c2UgbmV3IHBlci1mdW5jdGlvbiBkYXRhIGNvZGUuICBBZGQKCWFzc2VydHMuCgkoc3RvcmVfcGFybV9kZWNscyk6IERvbid0IGNhbGwgaW5pdF9mdW5jdGlvbl9zdGFydCBoZXJlLgoJKGZpbmlzaF9mdW5jdGlvbik6IEFkanVzdCBmb3IgbmV3IGhhbmRsaW5nIG9mIHBlci1mdW5jdGlvbiBkYXRhLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IFNpbXBsaWZ5LgoJKG1hcmtfY3BfZnVuY3Rpb25fY29udGV4dCk6IENoYW5nZSBiaW5kaW5nX2xldmVsIHRvIGJpbmRpbmdzLgoJKiBkZWNsMi5jIChjbGVhcl90ZW1wX25hbWUpOiBSZW1vdmUuCgkoc3RhcnRfb2JqZWN0cyk6IFVzZSBTRiBmbGFncyB0byBzdGFydF9mdW5jdGlvbi4KCShzdGFydF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoc3RhcnRfYW5vbl9mdW5jKTogUmVtb3ZlIHJlZHVuZGFudCBjYWxscyB0byAKCXB1c2hfZnVuY3Rpb25fY29udGV4dF90by4gIFVzZSBTRiBmbGFncyB0byBzdGFydCBmdW5jdGlvbi4KCShlbmRfYW5vbl9mdW5jKTogUmVtb3ZlIHJlZHVuZGFudCBjYWxsIHRvIHBvcF9mdW5jdGlvbl9jb250ZXh0Cglmcm9tLgoJKiBsZXguYyAocmVpbml0X3BhcnNlX2Zvcl9mdW5jdGlvbik6IERvbid0IGluaXRpYWxpemUgcGVyLWZ1bmN0aW9uIAoJZGF0YS4KCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBDbGVhciBjdXJyZW50X2Z1bmN0aW9uIGFmdGVyIGNhbGxpbmcKCWFzc2VtYmxlX2VuZF9mdW5jdGlvbi4gIFVzZSBTRiBmbGFncyBmb3Igc3RhcnRfZnVuY3Rpb24uCgkoc3ludGhlc2l6ZV9tZXRob2QpOiBVc2UgU0YgZmxhZ3MgZm9yIHN0YXJ0X2Z1bmN0aW9uLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcGFyc2UueSAoZm4uZGVmcGVuKTogTGlrZXdpc2UuCgkocGVuZGluZ19pbmxpbmUpOiBDbGVhciBjdXJyZW50X2Z1bmN0aW9uLCBldmVuIGlmIHNvbWV0aGluZyBnb2VzCgl3cm9uZy4KCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IFVzZSBTRiBmbGFncyB0byBzdGFydF9mdW5jdGlvbi4KCURvbid0IHNhdmUgYW5kIHJlc3RvcmUgZXhwYW5kaW5nX3AuCgkoYWRkX3RyZWUpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIG91dHNpZGUgYW55IGZ1bmN0aW9uLgoJKGVuZF90cmVlKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoc3l0aGVzaXplX3RpbmZvX2ZuKTogVXNlIFNGIGZsYWdzIHRvIHN0YXJ0X2Z1bmN0aW9uLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fZnVuY3Rpb25fZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKGV4cGFuZF9ib2R5KTogTGlrZXdpc2UuCgkKMTk5OS0wOS0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoY29udmVydF90b192b2lkKTogUHJvdG90eXBlIG5ldyBmdW5jdGlvbi4KCShyZXF1aXJlX2NvbXBsZXRlX3R5cGVfaW5fdm9pZCk6IFJlbW92ZSBwcm90b3R5cGUuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBOZXcgZnVuY3Rpb24uCgkob2NwX2NvbnZlcnQpOiBVc2UgY29udmVydF90b192b2lkLgoJKiBkZWNsLmMgKGNwbHVzX2V4cGFuZF9leHByX3N0bXQpOiBMaWtld2lzZSwgZm9yIGNvbXBsZXRlCglleHByZXNzaW9ucy4KCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZV9pbl92b2lkKTogUmVtb3ZlIGZ1bmN0aW9uLgoJKGJ1aWxkX2NvbXBvdW5kX2V4cHIpOiBVc2UgY29udmVydF90b192b2lkLgoJKGJ1aWxkX3N0YXRpY19jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfY19jYXN0KTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZXhwcl9zdG10KTogRG8gbm90IGRlY2F5IGZ1bGwgZXhwcmVzc2lvbnMuCgkKCSogdHlwZWNrLmMgKGJ1aWxkX3hfY29tcG91bmRfZXhwcik6IEFkZCBGSVhNRS4KCjE5OTktMDktMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHNjcmF0Y2hfdHJlZV9jb25zKTogUmVtb3ZlLgoJKiBjYWxsLmM6IFJlcGxhY2UgYWxsIHVzZXMgb2YgZXhwcl90cmVlX2NvbnMsIHNhdmVhYmxlX3RyZWVfY29ucywKCWFuZCBwZXJtX3RyZWVfY29ucyB3aXRoIHBsYWluIHRyZWVfY29ucy4KCSogY2xhc3MuYzogTGlrZXdpc2UuCgkqIGRlY2wuYzogTGlrZXdpc2UuCgkqIGRlY2wyLmM6IExpa2V3aXNlLgoJKiBleGNlcHQuYzogTGlrZXdpc2UuCgkqIGV4cHIuYzogTGlrZXdpc2UuCgkqIGluaXQuYzogTGlrZXdpc2UuCgkqIGxleC5jOiBMaWtld2lzZS4KCSogbWV0aG9kLmM6IExpa2V3aXNlLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCSogcHQuYzogTGlrZXdpc2UuCgkqIHJlcG8uYzogTGlrZXdpc2UuCgkqIHJ0dGkuYzogTGlrZXdpc2UuCgkqIHNlYXJjaC5jOiBMaWtld2lzZS4KCSogdHlwZWNrLmM6IExpa2V3aXNlLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogdHJlZS5jIChidWlsZF9zcmNsb2MpOiBTaW1wbGlmeS4KCQoxOTk5LTA5LTA4ICBCcnVjZSBLb3JiICBhdXRvZ2VuQGxpbnV4Ym94LmNvbQoKCSogTWFrZWZpbGUuaW46IEdpdmUgdGhlIGdwZXJmIHVzZXIgYSBoaW50IGFib3V0IHdoeSAiZ3BlcmYgLUYiIGZhaWxzLgoKMTk5OS0wOS0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ19kZWNsX2ZsYWdzKTogUmVtb3ZlIHBlcm1hbmVudF9hdHRyLgoJUmVtb3ZlIG5leHQuCgkoTEFOR19ERUNMX1BFUk1BTkVOVCk6IFJlbW92ZS4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBtZXNzIGFib3V0IHdpdGggb2JzdGFja3MgdHJ5aW5nCgl0byBmcmVlIG1lbW9yeS4KCShsYW5nX21hcmtfdHJlZSk6IE1hcmsgREVDTF9MQU5HX1NQRUNJRklDLgoJKiBsZXguYyAoZnJlZV9sYW5nX2RlY2xfY2hhaW4pOiBSZW1vdmUuCgkoYnVpbGRfbGFuZ19kZWNsKTogRG9uJ3QgdXNlIG9ic3RhY2tzLgoJKHJldHJvZml0X2xhbmdfZGVjbCk6IExpa2V3aXNlLgoJKGNvcHlfbGFuZ19kZWNsKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKHNhdmVkX3Njb3BlKTogUmVtb3ZlIG9sZF9iaW5kaW5nX2xldmVsIGFuZCAKCWZ1bmN0aW9uX2RlY2wuICBUaWR5IHVwLgoJKiBkZWNsLmMgKG1hcmtfc2F2ZWRfc2NvcGUpOiBEb24ndCBzZXQgdGhlbS4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IENsZWFyIG1lbW9yeS4KCgkqIGRlY2wuYyAobGF5b3V0X3Zhcl9kZWNsKTogQ2hhbmdlIHByb3RvdHlwZS4gIERvbid0IGNvbXBsZXRlCgl0eXBlcyBmb3IgZXh0ZXJuYWwgb2JqZWN0cy4KCShjaGVja19pbml0aWFsaXplcik6IExpa2V3aXNlLiAgVGlkeS4KCShpbml0aWFsaXplX2xvY2FsX3Zhcik6IENvbXBsZXRlIHR5cGVzIGhlcmUuCgkoY3BfZmluaXNoX2RlY2wpOiBOb3QgaGVyZS4gIFJlb3JnYW5pemUgYSBsaXR0bGUuCgkoZ3Jva3ZhcmRlY2wpOiBEb24ndCBjb21wbGV0ZSB0eXBlcyBoZXJlLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IENsZWFyIGxhc3RfZHRvcl9pbnNuIGFuZAoJbGFzdF9wYXJtX2NsZWFudXBfaW5zbi4gCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogSnVzdCBjb3B5IG92ZXIgYSBsaXR0bGUgb2YKCXRoZSBvbGQgY29udGV4dCwgbm90IGFsbCBvZiBpdC4KCgkqIGNwLXRyZWUuaCAoY29weV90b19wZXJtYW5lbnQpOiBSZW1vdmUuCgkocGVybWFuZW50X3ApOiBMaWtld2lzZS4KCSogZGVjbC5jIChidWlsZGluZ190eXBlbmFtZV90eXBlKTogRG9uJ3QgdXNlIGNvcHlfdG9fcGVybWFuZW50LgoJKHN0YXJ0X2RlY2wpOiBMaWtld2lzZS4KCShncm9rX3JlZmVyZW5jZV9pbml0KTogTGlrZXdpc2UuCgkoY3BfZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IERvbid0IHVzZSBtYXBjYXIuCgkoYnVpbGRfdmVjX2RlbGV0ZV8xKTogRG9uJ3QgdXNlIGNvcHlfdG9fcGVybWFuZW50LgoJKGJ1aWxkX3ZlY19pbml0KTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHByaW1hcnkpOiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogRG9uJ3QgdXNlIGNvcHlfdG9fcGVybWFuZW50LgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKHRzdWJzdF9kZWNsKTogTGlrZXdpc2UuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSh1bmlmeSk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGdldF90aW5mb19mbik6IExpa2V3aXNlLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lmX3N0bXRfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF93aGlsZV9zdG10X2NvbmQpOiBMaWtld2lzZS4KCShmaW5pc2hfZG9fc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3JfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3JfZXhwcik6IExpa2V3aXNlLgoJKGZpbmlzaF9jbGVhbnVwKTogTGlrZXdpc2UuCgkoYWRkX2RlY2xfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9uYW1lZF9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KCShmaW5pc2hfcXVhbGlmaWVkX2NhbGxfZXhwcik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHBlcm1fbWFuaXApOiBSZW1vdmUuCgkoYnVpbGRfZXhjZXB0aW9uX3ZhcmlhbnQpOiBEb24ndCB1c2UgY29weV90b19wZXJtYW5lbnQuCgkocGVybWFuZW50X3ApOiBSZW1vdmUuCgkoY29weV90b19wZXJtYW1lbnQpOiBSZW1vdmUuCgkoYnVpbGRfbWluX250KTogRG9uJ3QgdXNlIGNvcHlfdG9fcGVybWFuZW50LgoJKGJ1aWxkX21pbik6IExpa2V3aXNlLgoJKG1pbl90cmVlX2NvbnMpOiBMaWtld2lzZS4KCSogdHlwZWNrYy5jIChidWlsZF9zdGF0aWNfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9jb25zdF9jYXN0KTogTGlrZXdpc2UuCgkKMTk5OS0wOS0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ2djX3ApOiBTZXQgaXQgdG8gMS4KCShtYXJrX3NhdmVkX3Njb3BlKTogQWRkIHByb3RvdHlwZS4KCjE5OTktMDktMDcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKENfUFJPTU9USU5HX0lOVEVHRVJfVFlQRV9QKTogRGVsZXRlLgoJKiB0eXBlY2suYyAoc2VsZl9wcm9tb3RpbmdfYXJnc19wKTogRGVsZXRlLgoKMTk5OS0wOS0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGJpbmZvX2Zvcl92dGFibGUpOiBVc2UgQ0xBU1NUWVBFX1ZGSUVMRF9QQVJFTlQuCgkoZGZzX2Jmdl9xdWV1ZV9wLCBkZnNfYmZ2X2hlbHBlciwgc3RydWN0IGJmdl9pbmZvKTogUmVtb3ZlLgoKMTk5OS0wOS0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluICh0cmVlLm8pOiBEZXBlbmQgb24gZ2djLmguCgkqIGNsYXNzLmMgKG1ha2VfbWV0aG9kX3ZlYyk6IFJlbW92ZS4KCShmcmVlX21ldGhvZF92ZWMpOiBMaWtld2lzZS4KCShmcmVlX21ldGhvZF92ZWNzKTogUmVtb3ZlLgoJKGFkZF9tZXRob2QpOiBEb24ndCB1c2UgdGhlbS4KCSogY3AtdHJlZS5kZWYgKFBUUk1FTV9DU1QpOiBNYWtlIGl0IGxvbmdlci4KCShURU1QTEFURV9QQVJNX0lOREVYKTogTWFrZSBpdCBzaG9ydGVyLgoJKiBjcC10cmVlLmggKEJJTkRJTkdfSEFTX0xFVkVMX1ApOiBOZXcgbWFjcm8uCgkodGVtcGxhdGVfcGFybV9pbmRleCk6IFJlbW92ZSBSVEwgZmllbGQuCgkocHRybWVtX2NzdCk6IEFkZCBSVEwgZmllbGQuCgkoZmluaXNoX2Z1bmN0aW9uKTogUmVtb3ZlZCBwYXJhbWV0ZXIuCgkocHJvY2Vzc19uZXh0X2lubGluZSk6IENoYW5nZSBwcm90b3R5cGUuCgkoaW5pdF9jcGx1c191bnNhdmUpOiBSZW5hbWUgdG8gaW5pdF90cmVlLgoJKGJpbmRpbmdfaW5pdCk6IFJlbW92ZS4KCSogZGVjbC5jIChmcmVlX2JpbmRpbmdfbm9kZXMpOiBSZW1vdmUuCgkocHVzaF9iaW5kaW5nKTogRG9uJ3QgdXNlIHRoZW0uICBTZXQgQklORElOR19IQVNfTEVWRUxfUC4KCShwb3BfYmluZGluZyk6IERvbid0IHVzZSBmcmVlX2JpbmRpbmdfbm9kZXMuCgkoZnJlZV9iaW5kaW5nX3ZlY3MpOiBSZW1vdmUuCgkoc3RvcmVfYmluZGluZ3MpOiBEb24ndCB1c2UgdGhlbS4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShsb29rdXBfbmFtZXNwYWNlX25hbWUpOiBTaW1wbGlmeS4KCShidWlsZF90eXBlbmFtZV90eXBlKTogRG9uJ3QgdXNlIG9ic3RhY2tfZnJlZS4KCSh1bnF1YWxpZmllZF9uYW1lc3BhY2VfbG9va3VwKTogU2ltcGxpZnkuCgkobG9va3VwX25hbWVfcmVhbCk6IFNpbXBsaWZ5LgoJKHN0YXJ0X2Z1bmN0aW9uKTogUmVtb3ZlIGNvbW1lbnQgYWJvdXQgbGVha3MuCgkoZmluaXNoX2Z1bmN0aW9uKTogUmVtb3ZlZCBuZXN0ZWQgcGFyYW1ldGVyLiAgQ2FsbAoJZXhwYW5kX2VuZF9iaW5kaW5ncyBldmVuIHdoZW4gYnVpbGRpbmdfc3RtdF90cmVlLgoJQ2FsbCBnZ2NfcHVzaF9jb250ZXh0IGFuZCBnZ2NfcG9wX2NvbnRleHQgYXJvdW5kCglyZXN0X29mX2NvbXBpbGF0aW9uLCBpZiBuZWNlc3NhcnkuCgkobWFya19jcF9mdW5jdGlvbl9jb250ZXh0KTogSGFuZGxlIGEgTlVMTCBsYW5ndWFnZS1jb250ZXh0LgoJKGxhbmdfbWFya19mYWxzZV9sYWJlbF9zdGFjayk6IEZpeCB0eXBvLgoJKGxhbmdfbWFya190cmVlKTogSGFuZGxlIENQTFVTX0JJTkRJTkcsIE9WRVJMT0FELAoJVEVNUExBVEVfUEFSTV9JTkRFWC4gIEhhbmRsZSB0aGUgZnVubnkgVFlQRV9MQU5HX1NQRUNJRklDIG9uCglwb2ludGVyIHRvIG1ldGhvZCB0eXBlcy4KCShsYW5nX2NsZWFudXBfdHJlZSk6IFVzZSBmcmVlIHRvIGZyZWUgVFlQRV9MQU5HX1NQRUNJRklDLgoJKiBkZWNsMi5jIChmaW5pc2hfb2JqZWN0cyk6IEFkanVzdCBjYWxsIHRvIGZpbmlzaF9mdW5jdGlvbi4KCShmaW5pc2hfc3RhdGljX3N0b3JlX2R1cmF0aW9uX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZG9fbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBSZW1vdmUgY2FsbCB0byBiaW5kaW5nX2luaXQuCgkqIGV4Y2VwdC5jIChlbmRfYW5vbl9mdW5jKTogQWRqdXN0IGNhbGwgdG8gZmluaXNoX2Z1bmN0aW9uLgoJKiBsZXguYyAobWFya19pbXBsX2ZpbGVfY2hhaW4pOiBOZXcgZnVuY3Rpb24uCgkoaW5pdF9wYXJzZSk6IENhbGwgaW5pdF90cmVlLCBub3QgaW5pdF9jcGx1c191bnNhdmUuCglBZGQgR0Mgcm9vdHMuCgkoY3BfcHJhbWdhX2ludGVyZmFjZSk6IFVzZSB4bWFsbG9jLCBub3QgcGVybWFsbG9jLgoJKGNwX3ByYWdtYV9pbXBsZW1lbnRhdGlvbik6IExpa2V3aXNlLgoJKGJlZ2luX2RlZmluaXRpb25fb2ZfaW5jbGFzc19pbmxpbmUpOiBTaW1wbGlmeS4KCShwcm9jZXNzX25leHRfaW5saW5lKTogQWRqdXN0IHByb3RvdHlwZS4KCShkb19zY29wZWRfaWQpOiBEb24ndCBjYWxsIGJpbmRpbmdfaW5pdC4KCShtYWtlX2xhbmdfdHlwZSk6IEFsbG9jYXRlIFRZUEVfTEFOR19TUEVDSUZJQyB3aXRoIHhtYWxsb2MuCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogQWRqdXN0IGNhbGwgdG8gZmluaXNoX2Z1bmN0aW9uLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKCV1bmlvbik6IEFkZCBhIG5ldyBgcGknIHZhcmlhbnQuCgkoUFJFX1BBUlNFRF9GVU5DVElPTl9ERUNMKTogVXNlIGl0LgoJKGZuLmRlZnBlbik6IExpa2V3aXNlLgoJKGZuZGVmKTogQWRqdXN0IGNhbGwgdG8gZmluaXNoX2Z1bmN0aW9uLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoc3ludGhlaXN6ZV90aW5mb19mbik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX2JvZHkpOiBMaWtld2lzZS4KCSogdHJlZS5jOiBJbmNsdWRlIGdnYy5oLgoJKG1hcmtfbGlzdF9oYXNoKTogTmV3IGZ1bmN0aW9uLgoJKGJpbmRpbmdfaW5pdCk6IFJlbW92ZS4KCShpbml0X2NwbHVzX3Vuc2F2ZSk6IFJlbmFtZSB0byAuLi4KCShpbml0X3RyZWUpOiBUaGlzLiAgQWRkIEdDIHJvb3RzLgoJCjE5OTktMDktMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJR2V0IHJlYWR5IGZvciBnYXJiYWdlIGNvbGxlY3Rpb24uCgkqIE1ha2VmaWxlLmluIChDWFhfVFJFRV9IKTogQWRkIHZhcnJheS5oCgkobGV4Lm8pOiBEZXBlbmQgb24gZ2djLmguCgkoZGVjbC5vKTogTGlrZXdpc2UuCgkoZGVjbDIubyk6IExpa2V3aXNlLgoJKG1ldGhvZC5vKTogTGlrZXdpc2UuCgkoc2VhcmNoLm8pOiBMaWtld2lzZS4KCShwdC5vKTogTGlrZXdpc2UuCgkocmVwby5vKTogTGlrZXdpc2UuCgkqIGNsYXNzLmM6IEluY2x1ZGUgZ2djLmguCgkoY3VycmVudF9jbGFzc19uYW1lKTogUmVtb3ZlLgoJKGN1cnJlbnRfY2xhc3NfdHlwZSk6IExpa2V3aXNlLgoJKGN1cnJlbnRfYWNjZXNzX3NwZWNpZmllcik6IExpa2V3aXNlLgoJKHByZXZpb3VzX2NsYXNzX3R5cGUpOiBMaWtld2lzZS4KCShwcmV2aW91c19jbGFzc192YWx1ZXMpOiBMaWtld2lzZS4KCShjbGFzc19jYWNoZV9maXJzdG9iaik6IExpa2V3aXNlLgoJKGN1cnJlbnRfbGFuZ19iYXNlKTogTGlrZXdpc2UuCgkoY3VycmVudF9sYW5nX3N0YWNrKTogTGlrZXdpc2UuCgkoY3VycmVudF9sYW5nX3N0YWNrc2l6ZSk6IExpa2V3aXNlLgoJKGxhbmdfbmFtZV9jKTogTGlrZXdpc2UuCgkobGFuZ19uYW1lX2NwbHVzcGx1cyk6IExpa2V3aXNlLgoJKGxhbmdfbmFtZV9qYXZhKTogTGlrZXdpc2UuCgkoY3VycmVudF9sYW5nX25hbWUpOiBMaWtld2lzZS4KCShiYXNlX2xheW91dF9kZWNsKTogTGlrZXdpc2UuCgkoYWNjZXNzX2RlZmF1bHRfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wdWJsaWNfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wcm90ZWN0ZWRfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wcml2YXRlX25vZGUpOiBMaWtld2lzZS4KCShhY2Nlc3NfZGVmYXVsdF92aXJ0dWFsX25vZGUpOiBMaWtld2lzZS4KCShhY2Nlc3NfcHVibGljX3ZpcnR1YWxfbm9kZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19wcm90ZWN0ZWRfdmlydHVhbF9ub2RlKTogTGlrZXdpc2UuCgkoYWNjZXNzX3ByaXZhdGVfdmlydHVhbF9ub2RlKTogTGlrZXdpc2UuCgkoc2lnbmVkX3plcm9fbm9kZSk6IExpa2V3aXNlLgoJKGluaXRfY2xhc3NfcHJvY2Vzc2luZyk6IERvbid0IGJ1aWxkIGJhc2VfbGF5b3V0X2RlY2wuCgkocHVzaF9sYW5nX2NvbnRleHQpOiBBZGp1c3Qgbm93IHRoYXQgY3VycmVudF9sYW5nX2Jhc2UgaXMgYSB2YXJyYXkuCgkocG9wX2xhbmdfY29udGV4dCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IEluY2x1ZGUgdmFycmF5LmguCgkoY3BfZ2xvYmFsX3RyZWVzKTogQWRkIGFjY2Vzc19kZWZhdWx0LCBhY2Nlc3NfcHVibGljLAoJYWNjZXNzX3Byb3RlY3RlZCwgYWNjZXNzX3ByaXZhdGUsIGFjY2Vzc19kZWZhdWx0X3ZpcnR1YWwsCglhY2Nlc3NfcHVibGljX3ZpcnR1YWwsIGFjY2Vzc19wcm90ZWN0ZWRfdmlydHVhbCwKCWFjY2Vzc19wcml2YXRlX3ZpcnR1YWwsIGN0b3JfaWRlbnRpZmllciwgZGVsdGEyX2lkZW50aWZpZXIsIAoJZGVsdGFfaWRlbnRpZmllciwgZHRvcl9pZGVudGlmaWVyLCBpbl9jaGFyZ2VfaWRlbnRpZmllciwKCWluZGV4X2lkZW50aWZpZXIsIG5lbHRzX2lkZW50aWZpZXIsIHRoaXNfaWRlbnRpZmllciwKCXBmbl9pZGVudGlmaWVyLCBwZm5fb3JfZGVsdGEyX2lkZW50aWZpZXIsIHZwdHJfaWRlbnRpZmllciwKCWxhbmdfbmFtZV9jLCBsYW5nX25hbWVfY3BsdXNwbHVzLCBsYW5nX25hbWVfamF2YSwKCWVtcHR5X2V4Y2VwdF9zcGVjLCBudWxsLCBqY2xhc3MsIG1pbnVzX29uZSwgdGVybWluYXRlLgoJKHNhdmVkX3Njb3BlKTogTW92ZSBoZXJlIGZyb20gZGVjbC5jLiAgRGVmaW5lIGdsb2JhbHMgaW4gdGVybXMgb2YKCXNhdmVkX3Njb3BlOiBjdXJyZW50X25hbWVzcGFjZSwgY3VycmVudF9jbGFzc19uYW1lLAoJY3VycmVudF9jbGFzc190eXBlLCBjdXJyZW50X2FjY2Vzc19zcGVjaWZpZXIsIGN1cnJlbnRfbGFuZ19zdGFjaywKCWN1cnJlbnRfbGFuZ19iYXNlLCBjdXJyZW50X2xhbmdfbmFtZSwgY3VycmVudF9mdW5jdGlvbl9wYXJtcywKCWN1cnJlbnRfdGVtcGxhdGVfcGFybXMsIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCwKCXByb2Nlc3Npbmdfc3BlY2lhbGl6YXRpb24sIHByb2Nlc3NpbmdfZXhwbGljaXRfaW5zdGFudGlhdGlvbiwKCXByZXZpb3VzX2NsYXNzX3R5cGUsIHByZXZpb3VzX2NsYXNzX3ZhbHVlcywgY2xhc3NfY2FjaGVfZmlyc3RvYmouCgkoc2NvcGVfY2hhaW4pOiBOZXcgdmFyaWFibGUuCgkoaW5pdF9wdCk6IE5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChjdXJyZW50X25hbWVzcGFjZSk6IFJlbW92ZS4KCSh0aGlzX2lkZW50aWZpZXIsIGluX2NoYXJnZV9pZGVudGlmaWVyLCBjdG9yX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShkdG9yX2lkZW50aWZpZXIsIHBmbl9pZGVudGlmaWVyLCBpbmRleF9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoZGVsdGFfaWRlbnRpZmllciwgZGVsdGEyX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShwZm5fb3JfZGVsdGEyX2lkZW50aWZpZXIsIHRhZ19pZGVudGlmaWVyKTogTGlrZXdpc2UKCSh2dF9vZmZfaWRlbnRpZmllciwgZW1wdHlfZXhjZXB0X3NwZWMsIG51bGxfbm9kZSk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZnVuY3Rpb25fcGFybXMsIGN1cnJlbnRfbGFuZ19iYXNlKTogUmVtb3ZlLgoJKGN1cnJlbnRfbGFuZ19zdGFjaywgcHJldmlvdXNfY2xhc3NfdmFsdWVzKTogUmVtb3ZlLgoJKGNsYXNzX2JpbmRpbmdfbGV2ZWwpOiBNYWNyb2l6ZS4KCShzYXZlZF9zY29wZSk6IFJlbW92ZS4KCShjdXJyZW50X3NhdmVkX3Njb3BlKTogUmVuYW1lIHRvIHNjb3BlX2NoYWluLgoJKG1hcmtfc2F2ZWRfc2NvcGUpOiBBZGp1c3QgZm9yIG5ldyBzY29wZSBzdHJ1Y3R1cmUuCgkobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBBZGp1c3Qgbm93IHRoYXQgY3VycmVudF9sYW5nX2Jhc2UgaXMgYSB2YXJyYXkuCgkoYnVpbGRfdHlwZW5hbWVfdHlwZSk6IENhbGwgZ2djX2FkZF90cmVlX2hhc2hfdGFibGVfcm9vdC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgaW5pdF9wdC4gIENhbGwgcHVzaF90b190b3BfbGV2ZWwgdG8KCXNldCB1cCBnbG9iYWxzLiAgQWRkIEdDIHJvb3RzLgoJKHhyZWZfYmFzZXR5cGVzKTogQWRqdXN0IG5vdyB0aGF0IGN1cnJlbnRfbGFuZ19iYXNlIGlzIGEgdmFycmF5LgoJKiBkZWNsLmggKHRoaXNfaWRlbnRpZmllcik6IFJlbW92ZS4KCShpbl9jaGFyZ2VfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKiBkZWNsMi5jOiBEb24ndCBpbmNsdWRlIHZhcnJheS5oLgoJKGN1cnJlbnRfbmFtZXNwYWNlKTogUmVtb3ZlLgoJKGluaXRfZGVjbDIpOiBBZGQgR0Mgcm9vdHMuCgkqIGV4Y2VwdC5jIChUZXJtaW5hdGUpOiBSZW1vdmUuIAoJKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBVc2UgdGVybWluYXRlX25vZGUgaW5zdGVhZC4KCShidWlsZF90ZXJtaW5hdGVfaGFuZGxlcik6IExpa2V3aXNlLgoJKiBpbml0LmMgKG5jX25lbHRzX2ZpZWxkX2lkKTogUmVtb3ZlLgoJKG1pbnVzX29uZSk6IExpa2V3aXNlLgoJKGluaXRfaW5pdF9wcm9jZXNzaW5nKTogVXNlIG1pbnVzX29uZV9ub2RlIGFuZCBuZWx0c19pZGVudGlmaWVyCglpbnN0ZWFkLiAgQWRkIEdDIHJvb3RzLgoJKGpjbGFzc19ub2RlKTogUmVtb3ZlLgoJKGJ1aWxkX25ld18xKTogVXNlIG5lbHRzX2lkZW50aWZpZXIuCgkoYnVpbGRfdmVjX2luaXQpOiBMaWtld2lzZS4KCShidWlsZF92ZWNfZGVsZXRlKTogTGlrZXdpc2UuCgkqIGxleC5jOiBJbmNsdWRlIGdnYy5oLgoJKGRlZmFyZ19mbik6IE1vdmUgZGVjbGFyYXRpb24gZWFybHkuCgkoZGVmYXJnX3Bhcm1zKTogTGlrZXdpc2UuCgkoaW5pdF9wYXJzZSk6IEFkZCBHQyByb290cy4KCShoYW5kbGVfY3BfcHJhZ21hKTogUmVtb3ZlIHJlZHVuZGFudCBkZWNsYXJhdGlvbiBvZgoJcGVuZGluZ192dGFibGVzLgoJKiBtZXRob2QuYzogSW5jbHVkZSBnZ2MuaC4KCShidHlwZWxpc3QpOiBNYWtlIGl0IGEgdmFycmF5LiAgQWxsIHVzZXMgY2hhbmdlZC4KCShrdHlwZWxpc3QpOiBMaWtld2lzZS4KCShpbml0X21ldGhvZCk6IEFkZCBHQyByb290cy4KCSogcHQuYzogRG9uJ3QgaW5jbHVkZSB2YXJyYXkuaC4gIEluY2x1ZGUgZ2djLmguCgkoY3VycmVudF90ZW1wbGF0ZV9wYXJtcyk6IFJlbW92ZS4KCShwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCShwcm9jZXNzaW5nX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkocHJvY2Vzc2luZ19leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkoaW5pdF9wdCk6IE5ldyBmdW5jdGlvbi4KCSogcmVwby5jOiBJbmNsdWRlIGdnYy5oLgoJKGluaXRfcmVwbyk6IEFkZCBHQyByb290cy4KCSogc2VhcmNoLmM6IERvbid0IGluY2x1ZGUgdmFycmF5LmguCgkoX3ZwdHJfbmFtZSk6IFJlbW92ZS4KCShsb29rdXBfZmllbGRfMSk6IFVzZSB2dHByX2lkZW50aWZpZXIgaW5zdGVhZC4KCShleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IFJlbW92ZSByZWR1bmRhbnQgZGVjbGFyYXRpb24gb2YKCWluX2NoYXJnZV9pZGVudGlmaWVyLgoJKGluaXRfc2VhcmNoX3Byb2Nlc3NpbmcpOiBVc2UgdnB0cl9pZGVudGlmaWVyLgoJCjE5OTktMDktMDUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkgICAgQmVybmQgU2NobWlkdCA8YmVybmRzQGN5Z251cy5jby51az4KCSAgICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKHBhcnNlLm8pOiBEZXBlbmQgb24gZ2djLmguCgkoZGVjbDIubyk6IERlcGVuZCBvbiBnZ2MuaC4KCShpbml0Lm8pOiBEZXBlbmQgb24gZ2djLmguCgkqIGNwLXRyZWUuaCAoaW5pdF9kZWNsMik6IERlY2xhcmUuCgkoY3BfcGFyc2VfaW5pdCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGdnY19wKTogRGVmaW5lIHRvIHplcm8uCgkobWFya19zYXZlZF9zY29wZSk6IE5ldyBmdW5jdGlvbi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgY3BfcGFyc2VfaW5pdCwgYW5kIGNwX2RlY2wyLgoJUmVnaXN0ZXIgR0Mgcm9vdHMuCgkoZXhwYW5kX3N0YXRpY19pbml0KTogQWRkIEdDIHJvb3RzLgoJKiBkZWNsMi5jOiBJbmNsdWRlIGdnYy5oLgoJKGluaXRfZGVjbDIpOiBOZXcgZnVuY3Rpb24uCgkqIGluaXQuYzogSW5jbHVkZSBnZ2MuaC4KCShpbml0X2luaXRfcHJvY2Vzc2luZyk6IEFkZCBHQyByb290cy4KCSogcGFyc2UueTogSW5jbHVkZSBnZ2MuaC4KCShjcF9wYXJzZV9pbml0KTogTmV3IGZ1bmN0aW9uLgoJCjE5OTktMDktMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IG1hcmtfbGFuZ19zdGF0dXMuCgkobGFuZ19tYXJrX2ZhbHNlX2xhYmVsX3N0YWNrKTogQWRqdXN0IHByb3RvdHlwZS4KCSogZGVjbDIuYyAoZ3Jva19mdW5jdGlvbl9pbml0KTogUmVtb3ZlIGV4dHJhbmVvdXMgZGVjbGFyYXRpb24gb2YKCWFib3J0X2ZuZGVjbC4KCgkqIE1ha2UtbGFuZy5pbiAoY2MxcGx1cyk6IFJlbW92ZSBkZXBlbmRlbmN5IG9uIEdHQy4KCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBEb24ndCBtZW50aW9uIGdnYy1zaW1wbGUuby4KCShPQkpERVBTKTogRG9uJ3QgbWVudGlvbiBnZ2Mtc2ltcGxlLm8uCgoJKiBNYWtlLWxhbmcuaW4gKGNjMXBsdXMpOiBEZXBlbmQgb24gJChHR0MpLgoJKiBNYWtlZmlsZS5pbiAoT0JKUyk6IEFkZCBnZ2Mtc2ltcGxlLm8uCgkoT0JKREVQUyk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVuYW1lIG1lbWJlcnMgdG8gYHhfJyB2ZXJzaW9uczsKCXdlIG5vdyBoYXZlIHhfbmFtZWRfbGFiZWxzLCB4X2N0b3JfbGFiZWwsIHhfZHRvcl9sYWJlbCwKCXhfYmFzZV9pbml0X2xpc3QsIHhfbWVtYmVyX2luaXRfbGlzdCwgeF9iYXNlX2luaXRfZXhwciwKCXhfY3VycmVudF9jbGFzc19wdHIsIHhfY3VycmVudF9jbGFzc19yZWYsIHhfbGFzdF90cmVlLAoJeF9sYXN0X2V4cHJfdHlwZSwgeF9sYXN0X2R0b3JfaW5zbiwgeF9sYXN0X3Bhcm1fY2xlYW51cF9pbnNuLCBhbmQKCXhfcmVzdWx0X3J0eC4gCgkoZHRvcl9sYWJlbCwgY3Rvcl9sYWJlbCwgY3VycmVudF9iYXNlX2luaXRfbGlzdCwKCWN1cnJlbnRfbWVtYmVyX2luaXRfbGlzdCwgYmFzZV9pbml0X2V4cHIsIGN1cnJlbnRfY2xhc3NfcHRyLAoJY3VycmVudF9jbGFzc19yZWYsIGxhc3RfdHJlZSwgbGFzdF9leHByX3R5cGUpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIGRlY2wuYzogSW5jbHVkZSBnZ2MuaC4KCShsYXN0X2R0b3JfaW5zbik6IEFkanVzdCB0byB1c2UgeF8gbmFtZXMuCgkobGFzdF9wYXJtX2NsZWFudXBfaW5zbik6IExpa2V3aXNlLgoJKG9yaWdpbmFsX3Jlc3VsdF9ydHgpOiBMaWtld2lzZS4KCShuYW1lZF9sYWJlbHMpOiBMaWtld2lzZS4KCShtYXJrX2JpbmRpbmdfbGV2ZWwpOiBOZXcgZnVuY3Rpb24uCgkobWFya19jcF9mdW5jdGlvbl9jb250ZXh0KTogTGlrZXdpc2UuCgkobWFya19mYWxzZV9sYWJlbF9zdGFjayk6IExpa2V3aXNlLgoJKGxhbmdfbWFya190cmVlKTogTGlrZXdpc2UuCgkobGFuZ19jbGVhbnVwX3RyZWUpOiBMaWtld2lzZS4KCQoxOTk5LTA5LTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKENYWF9UUkVFX0gpOiBJbmNsdWRlIGZ1bmN0aW9uLmguCgkoZGVjbC5vKTogRG9uJ3QgZGVwZW5kIG9uIGZ1bmN0aW9uLmguCgkoZGVjbDIubyk6IExpa2V3aXNlLgoJKHR5cGVjay5vKTogTGlrZXdpc2UuCgkoaW5pdC5vKTogTGlrZXdpc2UuCgkobWV0aG9kLm8pOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiBJbmNsdWRlIGZ1bmN0aW9uLmguCgkoY3BfZnVuY3Rpb24pOiBSZW5hbWUgdG8gbGFuZ3VhZ2VfZnVuY3Rpb24uICBSZW1vdmUgbmV4dC4KCShjcF9mdW5jdGlvbl9jaGFpbik6IE1ha2UgaXQgYSBtYWNybywgbm90IGEgdmFyaWFibGUuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3QgZGVjbGFyZS4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IExpa2V3aXNlLgoJKiBkZWNsLmM6IERvbid0IGluY2x1ZGUgZnVuY3Rpb24uaC4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBNYWtlIGl0IHN0YXRpYy4gIE1ha2UgaXQgc3VpdGFibGUgZm9yCglhIHNhdmVfbGFuZ19zdGF0dXMgY2FsbGJhY2suCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IENhbGwgcHVzaF9mdW5jdGlvbl9jb250ZXh0X3RvLCBub3QKCXB1c2hfY3BfZnVuY3Rpb25fY29udGV4dC4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBDYWxsIHBvcF9mdW5jdGlvbl9jb250ZXh0X2Zyb20sIG5vdAoJcG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgU2V0IHNhdmVfbGFuZ19zdGF0dXMgYW5kCglyZXN0b3JlX2xhbmdfc3RhdHVzLiAgQ2FsbCBwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdAoJcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKGNwX2Z1bmN0aW9uX2NoYWluKTogUmVtb3ZlLgoJKiBkZWNsMi5jOiBEb24ndCBpbmNsdWRlIGZ1bmN0aW9uLmguCgkqIGV4Y2VwdC5jOiBEb24ndCBpbmNsdWRlIGZ1bmN0aW9uLmguCgkoc3RhcnRfYW5vbl9mdW5jKTogQ2FsbCBwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdAoJcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKGVuZF9hbm9uX2Z1bmMpOiAgQ2FsbCBwb3BfZnVuY3Rpb25fY29udGV4dF9mcm9tLCBub3QKCXBvcF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKiBpbml0LmM6IERvbid0IGluY2x1ZGUgZnVuY3Rpb24uaC4KCSogbGV4LmMgKGJlZ2luX2RlZmluaXRpb25fb2ZfaW5jbGFzc19pbmxpbmUpOiBDYWxsCglwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdCBwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQuIAoJKHByb2Nlc3NfbmV4dF9pbmxpbmUpOiAgQ2FsbCBwb3BfZnVuY3Rpb25fY29udGV4dF9mcm9tLCBub3QKCXBvcF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKiBtZXRob2QuYzogRG9uJ3QgaW5jbHVkZSBmdW5jdGlvbi5oLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogQ2FsbCBwdXNoX2Z1bmN0aW9uX2NvbnRleHRfdG8sIG5vdAoJcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0LiAgQ2FsbCBwb3BfZnVuY3Rpb25fY29udGV4dF9mcm9tLCBub3QKCXBvcF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKiB0eXBlY2suYzogRG9uJ3QgaW5jbHVkZSBmdW5jdGlvbi5oLgoJCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogVHdlYWsgaGFuZGxpbmcgb2Ygc3RhdGljCglpbml0aWFsaXphdGlvbnMgZm9yIG9iamVjdHMgd2l0aG91dCBjb25zdHJ1Y3RvcnMuCgoxOTk5LTA5LTAzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2luZGlyZWN0X3JlZik6IFJlamVjdCBkZXJlZmVyZW5jZSBvZiBwb2ludGVyIHRvCgl2b2lkLgoKMTk5OS0wOS0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoY3BfZnVuY3Rpb24pOiBNb3ZlIGhlcmUsIGZyb20gZGVjbC5jLgoJKGNwX2Z1bmN0aW9uX2NoYWluKTogRGVjbGFyZS4KCShkdG9yX2xhYmVsKTogTmV3IG1hY3JvLCBpbnN0ZWFkIG9mIHZhcmlhYmxlLgoJKGN0b3JfbGFiZWwpOiBMaWtld2lzZS4KCShjdXJyZW50X2Jhc2VfaW5pdF9saXN0KTogTGlrZXdpc2UuCgkoY3VycmVudF9tZW1iZXJfaW5pdF9saXN0KTogTGlrZXdpc2UuCgkoYmFzZV9pbml0X2V4cHIpOiBMaWtld2lzZS4KCShjdXJyZW50X2NsYXNzX3B0cik6IExpa2V3aXNlLgoJKGN1cnJlbnRfY2xhc3NfcmVmKTogTGlrZXdpc2UuCgkobGFzdF90cmVlKTogTGlrZXdpc2UuCgkobGFzdF9leHByX3R5cGUpOiBMaWtld2lzZS4KCShjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNfdmFsdWUpOiBMaWtld2lzZS4KCShjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNfbnVsbCk6IExpa2V3aXNlLgoJKGN1cnJlbnRfZnVuY3Rpb25fanVzdF9hc3NpZ25lZF90aGlzKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9wYXJtc19zdG9yZWQpOiBMaWtld2lzZS4KCSh0ZW1wX25hbWVfY291bnRlcik6IExpa2V3aXNlLgoJKHN0YXRpY19sYWJlbG5vKTogTGlrZXdpc2UuCgkoZXhwYW5kaW5nX3ApOiBMaWtld2lzZS4KCShzdG10c19hcmVfZnVsbF9leHByc19wKTogTGlrZXdpc2UuCgkoaW5fZnVuY3Rpb25fdHJ5X2hhbmRsZXIpOiBMaWtld2lzZS4KCShsYW5nX3R5cGUpOiBSZW1vdmUgbmVzdGVkIHR5cGVfZmxhZ3MuICBBbGwgdXNlcyBjaGFuZ2VkLgoJKiBjYWxsLmMgKGN0b3JfbGFiZWwpOiBSZW1vdmUuCgkoZHRvcl9sYWJlbCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChjdXJyZW50X2NsYXNzX3B0cik6IFJlbW92ZS4KCShjdXJyZW50X2NsYXNzX3JlZik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHN0YXRpY19sYWJlbG5vKTogUmVtb3ZlLgoJKGR0b3JfbGFiZWwpOiBMaWtld2lzZS4KCShsYXN0X2R0b3JfaW5zbik6IE5ldyBtYWNybywgaW5zdGVhZCBvZiB2YXJpYWJsZS4KCShsYXN0X3Bhcm1fY2xlYW51cF9pbnNuKTogTGlrZXdpc2UuCgkob3JpZ2luYWxfcmVzdWx0X3J0eCk6IExpa2V3aXNlLgoJKGluX2Z1bmN0aW9uX3RyeV9oYW5kbGVyKTogUmVtb3ZlLgoJKG5hbWVkX2xhYmVsX3VzZXMpOiBOZXcgbWFjcm8sIGluc3RlYWQgb2YgdmFyaWFibGUuCgkobmFtZWRfbGFiZWxzKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9yZXR1cm5zX3ZhbHVlKTogUmVtb3ZlLgoJKGN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuc19udWxsKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9hc3NpZ25zX3RoaXMpOiBOZXcgbWFjcm8sIGluc3RlYWQgb2YgdmFyaWFibGUuCgkoY3VycmVudF9mdW5jdGlvbl9qdXN0X2Fzc2lnbmVkX3RoaXMpOiBMaWtld2lzZS4KCShjdXJyZW50X2JpbmRpbmdfbGV2ZWwpOiBMaWtld2lzZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKGNwX2Z1bmN0aW9uKTogTW92ZSB0byBjcC10cmVlLmgKCShjcF9mdW5jdGlvbl9jaGFpbik6IE1ha2UgaXQgZ2xvYmFsLgoJKHRlbXBfbmFtZV9jb3VudGVyKTogUmVtb3ZlLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IFNpbXBsaWZ5LgoJKHBvcF9jcF9mdW5jdGlvbl9jb250ZXh0KTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKHRlbXBfbmFtZV9jb3VudGVyKTogUmVtb3ZlLgoJKiBpbml0X2MgKGN1cnJlbnRfYmFzZV9pbml0X2xpc3QpOiBMaWtld2lzZS4KCShjdXJyZW50X21lbWJlcl9pbml0X2xpc3QpOiBMaWtld2lzZS4KCShiYXNlX2luaXRfZXhwcik6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoc3RhdGljX2xhYmVsbm8pOiBMaWtld2lzZS4KCSogcHQuYyAobGFzdF90cmVlKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChleHBhbmRpbmdfcCk6IExpa2V3aXNlLgoJKHN0bXRzX2FyZV9mdWxsX2V4cHJzX3ApOiBMaWtld2lzZS4KCShsYXN0X2V4cHJfdHlwZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoZHRvcl9sYWJlbCk6IExpa2V3aXNlLgoJKGN0b3JfbGFiZWwpOiBMaWtld2lzZS4KCQoxOTk5LTA5LTAxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoYXJnX2Fzc29jX3RlbXBsYXRlX2FyZyk6IE5ldyBwcm90b3R5cGUuICBOZXcgZnVuY3Rpb24uCgkoYXJnX2Fzc29jX2NsYXNzKTogVXNlIGFyZ19hc3NvY190ZW1wbGF0ZV9hcmcgZm9yIHRlbXBsYXRlCglhcmd1bWVudHMuIAoJKGFyZ19hc3NvYyk6IExpa2V3aXNlLgoJKiBwdC5jIChtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBBbGxvdyBtZW1iZXIgdGVtcGxhdGUKCXRlbXBsYXRlIGFyZ3VtZW50cy4KCjE5OTktMDktMDIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBXYXJuIG9uIGVudW0gbWlzbWF0Y2hlcy4KCShjb252ZXJ0X2FyZ190b19lbGxpcHNpcyk6IE1vdmUgbm9uLXBvZCBjaGVjayB0byBhZnRlcgoJY29udmVyc2lvbi4KCjE5OTktMDktMDEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGd4eC5ncGVyZiAoaGFzaCwgaXNfcmVzZXJ2ZWRfd29yZCk6IEFkZCBwcm90b3R5cGVzLgoKCSogaW5pdC5jIChidWlsZF92ZWNfaW5pdCk6IEluaXRpYWxpemUgdmFyaWFibGUgYHRyeV9ibG9jaycuCgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IENhbGwgbWVtY3B5LCBub3QgYmNvcHksIHRvIGF2b2lkIGNhc3RzLgoJTGlrZXdpc2UgZm9yIGJ6ZXJvL21lbXNldC4KCSh0b2tlbl9nZXRjaCwgdG9rZW5fcHV0X2JhY2spOiBBZGQgc3RhdGljIHByb3RvdHlwZXMuICBSZW1vdmUKCWBpbmxpbmUnIGZyb20gdGhlIGRlZmluaXRpb25zLgoJKHJldHJvZml0X2xhbmdfZGVjbCk6IENhbGwgbWVtc2V0LCBub3QgYnplcm8sIHRvIGF2b2lkIGNhc3RzLgoKMTk5OS0wOS0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ190eXBlKTogTW92ZSBhbGlnbiBpbnRvIHR5cGVfZmxhZ3MuCgkoQ0xBU1NUWVBFX0FMSUdOKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKiBjYWxsLmMgKGRpcmVjdF9yZWZlcmVuY2VfYmluZGluZyk6IFJlbW92ZSBtaXNsZWFkaW5nIGNvbW1lbnQuCgoxOTk5LTA4LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBwYXJzZS55IChsYW5ndWFnZV9zdHJpbmcpOiBDb25zdGlmeS4KCjE5OTktMDgtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJlcG8uYyAoZ2V0cHdkKTogRG9uJ3QgcHJvdG90eXBlLgoJKiB4cmVmLmMgKGdldHB3ZCk6IExpa2V3aXNlCgoxOTk5LTA4LTMwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoTElCUywgTElCREVQUyk6IExpbmsgd2l0aCAmIGRlcGVuZCBvbiBsaWJpYmVydHkuYS4KCVJlbW92ZSBoYWNrcyBmb3Igc3R1ZmYgd2hpY2ggbm93IGNvbWVzIGZyb20gbGliaWJlcnR5LgoKMTk5OS0wOC0zMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChJU19BR0dSX1RZUEVfMik6IEZpeCB0eXBvLgoKMTk5OS0wOC0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoYmVnaW5faW5pdF9zdG10cyk6IERlY2xhcmUuCgkoZmluaXNoX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IFdyYXAgdGhlIGRlY2xhcmF0aW9uIG9mIGEgdGVtcG9yYXJ5CglpbiBhIHN0YXRlbWVudC1leHByZXNzaW9uIHNvIHRoYXQgd2Ugd2lsbCBzZWUgaXQgd2hlbiBleHBhbmRpbmcKCXRyZWUgc3RydWN0dXJlIGxhdGVyLgoJKiBpbml0LmMgKGJlZ2luX2luaXRfc3RtdHMpOiBEb24ndCBtYWtlIGl0IHN0YXRpYy4KCShmaW5pc2hfaW5pdF9zdG10cyk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oIChzdGFydF9oYW5kbGVyX3Bhcm1zKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFRha2Ugb25seSBvbmUgcGFyYW1ldGVyLgoJKHN0YXJ0X2hhbmRsZXJfcGFybXMpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoc3RhcnRfaGFuZGxlcl9wYXJtcyk6IERlZmluZSBpdC4KCSogZXhjZXB0LmMgKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2spOiBUYWtlIG9ubHkgb25lIHBhcmFtZXRlci4KCURvbid0IGNhbGwgZ3Jva2RlY2xhcmF0b3IgaGVyZS4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBEb24ndCBjYWxsIGdyb2tkZWNsYXJhdG9yIGhlcmUsCgllaXRoZXIuCgkqIHBhcnNlLnkgKGhhbmRsZXJfYXJncyk6IEFkanVzdCBjYWxsIHRvCglleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2suICBVc2Ugc3RhcnRfaGFuZGxlcl9wYXJtcy4KCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBNYWtlIHBlcm1hbmVudCBsaXN0cyBoYXZlCglwZXJtYW5lbnQgZWxlbWVudHMuCgkodHN1YnN0X2V4cHIpOiBBZGp1c3QgY2FsbHMgdG8gZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrCglhcHByb3ByaWF0ZWx5LgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXQpOiBMaWtld2lzZS4KCQoxOTk5LTA4LTI5ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBVc2UgdGVtcGxhdGUgZGVjbGFyYXRpb24gZnJvbQoJY2xhc3MgdHlwZSBpZiBpdCBleGlzdHMuCgoxOTk5LTA4LTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChUWVBFX05FRURTX0NPTlNUUlVDVElORyk6IFJlbW92ZSAjaWYgMCdkIGRlZmluaXRpb24uCgkobWF5YmVfaW5qZWN0X2Zvcl9zY29wZV92YXIpOiBEZWNsYXJlIGl0LgoJKGluaXRpYWxpemVfbG9jYWxfdmFyKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobWF5YmVfaW5qZWN0X2Zvcl9zY29wZV92YXIpOiBNYWtlIGl0IGdsb2JhbC4KCShpbml0aWFsaXplX2xvY2FsX3Zhcik6IExpa2V3aXNlLiAgTW92ZSBjbGVhbnVwIGhhbmRsaW5nIGhlcmUsCglmcm9tIGNwX2ZpbmlzaF9kZWNsLgoJKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKTogVXNlCglwdXNoX29ic3RhY2tzX25vY2hhbmdlL3BvcF9vYnN0YWNrcywgcmF0aGVyIHRoYW4KCWVuZF90ZW1wb3JhcnlfYWxsb2NhdGlvbi9yZXN1bWVfdGVtcG9yYXJ5X2FsbG9jYXRpb24uCgkoY3BfZmluaXNoX2RlY2wpOiBUcnkgdG8gY29tcGxldGUgdGhlIHR5cGUgb2YgYSB2YXJpYWJsZSB3aGVuIGl0CglpcyBkZWNsYXJlZC4gIE1vdmUgY2xlYW51cC1oYW5kbGluZyB0byBpbml0aWFsaXplX2xvY2FsX3Zhci4KCShleHBhbmRfc3RhdGljX2luaXQpOiBVc2UgdHJlZS1idWlsZGluZyBjb2RlLCByYXRoZXIgdGhhbgoJUlRMLWJ1aWxkaW5nIGNvZGUuCgkqIGRlY2wyLmMgKGdldF90ZW1wX25hbWUpOiBBc3NlcnQgbm9uLWluaXRpYWxpemVkbmVzcyBvZgoJdGVtcG9yYXJpZXMuCgkqIGluaXQuYyAoY3JlYXRlX3RlbXBvcmFyeV92YXIpOiBNb3ZlIFJUTC1hc3NpZ25pbmcgY29kZSB0byAuLi4KCShnZXRfdGVtcF9yZWd2YXIpOiBIZXJlLgoJKiBwdC5jICh0c2J1c3RfZXhwcik6IEZpeCBpbmRlbnRhdGlvbi4gIENhbGwgY3BfZmluaXNoX2RlY2wgaGVyZS4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9zdG10KTogRG9uJ3QgY2FsbCBjcF9maW5pc2hfZGVjbCBoZXJlLiAgSnVzdAoJY2FsbCBpbml0aWFsaXplX2xvY2FsX3ZhciB0byBnZW5lcmF0ZSBpbml0aWFsaXphdGlvbiBjb2RlLgoJCjE5OTktMDgtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLXRyZWUuaCAoZm5kZWNsX2FzX3N0cmluZywgdHlwZV9hc19zdHJpbmcsCgl0eXBlX2FzX3N0cmluZ19yZWFsLCBhcmdzX2FzX3N0cmluZywgZGVjbF9hc19zdHJpbmcsCglleHByX2FzX3N0cmluZywgY29kZV9hc19zdHJpbmcsIGxhbmd1YWdlX2FzX3N0cmluZywKCXBhcm1fYXNfc3RyaW5nLCBvcF9hc19zdHJpbmcsIGFzc29wX2FzX3N0cmluZywgY3ZfYXNfc3RyaW5nLAoJbGFuZ19kZWNsX25hbWUsIGNwX2ZpbGVfb2YsIGxhbmdfcHJpbnRhYmxlX25hbWUpOiBDb25zdGlmeSBhIGNoYXIqLgoKCSogZXJyZm4uYyAoY3BfcHJpbnRlcik6IExpa2V3aXNlLgoKCSogZXJyb3IuYyAoY3BfcHJpbnRlciwgZm5kZWNsX2FzX3N0cmluZywgdHlwZV9hc19zdHJpbmdfcmVhbCwKCXR5cGVfYXNfc3RyaW5nLCBleHByX2FzX3N0cmluZywgZGVjbF9hc19zdHJpbmcsIGxhbmdfZGVjbF9uYW1lLAoJY3BfZmlsZV9vZiwgY29kZV9hc19zdHJpbmcsIGxhbmd1YWdlX2FzX3N0cmluZywgcGFybV9hc19zdHJpbmcsCglvcF9hc19zdHJpbmcsIGFzc29wX2FzX3N0cmluZywgYXJnc19hc19zdHJpbmcsIGN2X2FzX3N0cmluZyk6CglMaWtld2lzZS4KCgkqIHRyZWUuYyAobGFuZ19wcmludGFibGVfbmFtZSk6IExpa2V3aXNlLgoKMTk5OS0wOC0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvY19jbGFzcyk6IEJhaWwgaWYgdGhlIGNsYXNzIGlzIGEgYnVpbHRpbiB0eXBlLgoKMTk5OS0wOC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoc3RyaXBfYXJyYXlfdHlwZXMpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAobWF5YmVfZGVkdWNlX3NpemVfZnJvbV9hcnJheV9pbml0KTogTmV3IGZ1bmN0aW9uLCBzcGxpdAoJb3V0IGZyb20gY3BfZmluaXNoX2RlY2wuCgkobGF5b3V0X3Zhcl9kZWNsKTogTGlrZXdpc2UuCgkobWF5YmVfY29tbW9uaXplX3Zhcik6IExpa2V3aXNlLgoJKG1heWJlX2luamVjdF9mb3Jfc2NvcGVfdmFyKTogTGlrZXdpc2UuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShidWlsZF9jbGVhbnVwX29uX3NhZmVfb2JzdGFjayk6IExpa2V3aXNlLgoJKGNoZWNrX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkobWFrZV9ydGxfZm9yX25vbmxvY2FsX2RlY2wpOiBMaWtld2lzZS4KCShjcF9maW5pc2hfZGVjbCk6IFVzZSB0aGVtLgoJKiB0eXBlY2suYyAoc3RyaXBfYXJyYXlfdHlwZXMpOiBOZXcgZnVuY3Rpb24uCgkKCSogY3AtdHJlZS5kZWYgKExBQkVMX1NUTVQpOiBOZXcgdHJlZSBub2RlLgoJKiBjcC10cmVlLmggKExBQkVMX1NUTVRfTEFCRUwpOiBOZXcgbWFjcm8uCgkoc2hhZG93X2xhYmVsKTogUmVtb3ZlLgoJKGRlY2xhcmVfbG9jYWxfbGFiZWwpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2xhYmVsX2RlY2wpOiBMaWtld2lzZS4KCSogZGVjbC5jIChtYWtlX2xhYmVsX2RlY2wpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglsb29rdXBfbGFiZWwuCgkoc2hhZG93ZWRfbGFiZWxzKTogUmVtb3ZlLgoJKGJpbmRpbmdfbGV2ZWwpOiBBZGQgc2hhZG93ZWRfbGFiZWxzLgoJKGNsZWFyX2JpbmRpbmdfbGV2ZWwpOiBSZW1vdmUuCgkocHVzaF9iaW5kaW5nX2xldmVsKTogSnVzdCBiemVybyB0aGUgbmV3IGJpbmRpbmcgbGV2ZWwuCgkocHVzaGxldmVsKTogRml4IGluZGVudGF0aW9uLgoJKHBvcF9sYWJlbCk6IE5ldyBmdW5jdGlvbi4KCShwb3BfbGFiZWxzKTogTGlrZXdpc2UsIHNwbGl0IG91dCBmcm9tIHBvcGxldmVsLgoJKHBvcGxldmVsKTogUG9wIGxvY2FsIGxhYmVscy4gIFVzZSBwb3BfbGFiZWxzLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogRG9uJ3QgY2xlYXIgc2hhZG93ZWRfbGFiZWxzLgoJKGxvb2t1cF9sYWJlbCk6IFVzZSBtYWtlX2xhYmVsX2RlY2wuCgkoc2hhZG93X2xhYmVsKTogUmVtb3ZlLgoJKGRlY2xhcmVfbG9jYWxfbGFiZWwpOiBOZXcgZnVuY3Rpb24uCgkoZGVmaW5lX2xhYmVsKTogU2ltcGxpZnkuCgkoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBjbGVhciBzaGFkb3dlZF9sYWJlbHMuCgkoY3BfZnVuY3Rpb24pOiBSZW1vdmUgc2hhZG93ZWRfbGFiZWxzLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IERvbid0IHNhdmUgc2hhZG93ZWRfbGFiZWxzLgoJKHBvcF9jcF9mdW5jdGlvbl9jb250ZXh0KTogRG9uJ3QgcmVzdG9yZSBpdC4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlIExBQkVMX1NUTVQuCgkqIHBhcnNlLnkgKGxhYmVsX2RlY2wpOiBVc2UgZmluaXNoX2xhYmVsX2RlY2wuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogSGFuZGxlIExBQkVMX1NUTVRzLCBhbmQgbG9jYWwgbGFiZWwKCWRlY2xhcmF0aW9ucy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9sYWJlbF9zdG10KTogQWRkIGEgTEFCRUxfU1RNVCB3aGVuCglidWlsZGluZ19zdG10X3RyZWUuCgkoZmluaXNoX2xhYmVsX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX3N0bXQpOiBIYW5kbGUgTEFCRUxfU1RNVHMgYW5kIGxvY2FsIGxhYmVsIGRlY2xhcmF0aW9ucy4KCQoxOTk5LTA4LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbGFiZWwpOiBCdWlsZCBsYWJlbHMgb24gdGhlIHBlcm1hbmVudCBvYnN0YWNrCgl3aGVuIGJ1aWxkaW5nIHN0YXRlbWVudCB0cmVlcy4gIERvbid0IGJ1aWxkIFJUTCBmb3IgbGFiZWxzIHdoZW4KCWJ1aWxkaW5nIHN0YXRlbWVudCB0cmVlcy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9nb3RvX3N0bXQpOiBVc2UgTEFCRUxfREVDTHMgZXZlbiB3aGVuCglidWlsZGluZyBzdGF0ZW1lbnQgdHJlZXMuCgkoZmluaXNoX2xhYmVsX3N0bXQpOiBMaWtld2lzZS4KCShleHBhbmRfc3RtdCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOyBMaWtld2lzZS4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBSb2J1c3RpZnkuCgkKCSogY3AtdHJlZS5oIChBR0dSX0lOSVRfVklBX0NUT1JfUCk6IE5ldyBtYWNyby4KCSogdHJlZS5jIChidWlsZF9jcGx1c19uZXcpOiBTZXQgaXQuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBVc2UgaXQuCgkqIGR1bXAuYyAoZGVxdWVfYW5kX2R1bXApOiBIYW5kbGUgQUdHUl9JTklUX0VYUFIuCgkKCSogZGVjbC5jIChzdG9yZV9wYXJtX2RlY2xzKTogUmVzZXQgaW1tZWRpYXRlX3NpemVfZXhwYW5kLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJCgkqIHRyZWUuYyAoY3BsdXNfdW5zYXZlX2V4cHJfbm93KTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgoJKiBzZW1hbnRpY3MuYyAoZG9fcG9wbGV2ZWwpOiBBbHdheXMgaW5pdGlhbGl6ZSB0aGUgcmV0dXJuIHZhbHVlLgoKMTk5OS0wOC0yNiAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKGNwbHVzX3Vuc2F2ZV9leHByX25vdykgOiBDb3JyZWN0IHJldHVybiB0eXBlLgoJKiB0cmVlLmggKGNwbHVzX3Vuc2F2ZV9leHByX25vdykgOiBTYW1lLgoKMTk5OS0wOC0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBbWVuZCBjb21tZW50LgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogQ2FsbCBwdXNoX3RlbXBsYXRlX2RlY2wgZm9yCgljYXRjaC1ibG9jayBwYXJhbWV0ZXJzLgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBCdWlsZCBhbiBlbXB0eSBjb21wb3VuZCBzdGF0ZW1lbnQKCWZvciB0aGUgYm9keSBvZiBhIGNvbnN0cnVjdG9yLgoKMTk5OS0wOC0yNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogSWYgd2UncmUgYXNraW5nIGZvciB0aGUKCXNhbWUgcXVhbHMgd2UgYWxyZWFkeSBoYXZlLCBqdXN0IHJldHVybi4KCjE5OTktMDgtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmRlZiAoU1VCT0JKRUNUKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChDTEVBTlVQX1ApOiBOZXcgbWFjcm8uCgkoU1VCT0JKRUNUX0NMRUFOVVApOiBMaWtld2lzZS4KCShrZWVwX25leHRfbGV2ZWwpOiBBZGQgcGFyYW1ldGVyLgoJKGdldF90ZW1wX3JlZ3Zhcik6IERvbid0IGRlY2xhcmUuCgkoZW1pdF9iYXNlX2luaXQpOiBSZW1vdmUgcGFyYW1ldGVyLgoJKGV4cGFuZF9hZ2dyX2luaXQpOiBSZW5hbWUgdG8gYnVpbGRfYWdncl9pbml0LgoJKGV4cGFuZF92ZWNfaW5pdCk6IFJlbmFtZSB0byBidWlsZF92ZWNfaW5pdC4KCShkb19wdXNobGV2ZWwpOiBSZW1vdmUuCgkoZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4KCShmaW5pc2hfY2xlYW51cCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfc3Vib2JqZWN0KTogTGlrZXdpc2UuCgkoc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCk6IE5ldyB2YXJpYWJsZS4KCSogZGVjbC5jIChrZWVwX25leHRfbGV2ZWwpOiBBZGQgcGFyYW1ldGVyLgoJKGNwX2ZpbmlzaF9kZWNsKTogVXNlIGJ1aWxkX2FnZ3JfaW5pdCwgbm90CglleHBhbmRfYWdncl9pbml0LiAgVXNlIGZpbmlzaF9leHByX3N0bXQgdG8gZXhwYW5kIHRoZSBjb2RlLgoJKGV4cGFuZF9zdGF0aWNfaW5pdCk6IFVzZSB0cmVlLWdlbmVyYXRpbmcsIG5vdCBSVEwtZ2VuZXJhdGluZywKCWZ1bmN0aW9ucyB0byBoYW5kbGUgdGhlIGluaXRpYWxpemF0aW9uLgoJKHN0YXJ0X2Z1bmN0aW9uKTogUmVtb3ZlIGRlYWQgY29kZS4gIEFsd2F5cyBoYXZlIGEgbW9tZW50YXJ5CglvYnN0YWNrIGluc2lkZSB0aGUgZnVuY3Rpb24sIGV2ZW4gYmVmb3JlIGhpdHRpbmcgdGhlIGZpcnN0IGN1cmx5CglicmFjZS4KCShjcGx1c19leHBhbmRfZXhwcl9zdG10KTogTW92ZSBjYWxscyB0bwoJZXhwYW5kX3tzdGFydCxlbmR9X3RhcmdldF90ZW1wcyBpbnRvIHNlbWFudGljcy5jLgoJKGNwX2Z1bmN0aW9uKTogQWRkIHN0bXRzX2FyZV9mdWxsX2V4cHJzX3AuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogU2F2ZSBpdC4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IFJlc3RvcmUgaXQuCgkqIGRlY2wyLmMgKGdldF90ZW1wX3JlZ3Zhcik6IE1vdmUgdG8gaW5pdC5jLgoJKGRvX3N0YXRpY19pbml0aWFsaXphdGlvbik6IFVzZSBidWlsZF97YWdncix2ZWN9X2luaXQuCgkoZG9fc3RhdGljX2Rlc3RydWN0aW9uKTogRml4IHR5cG8gaW4gY29tbWVudC4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogSGFuZGxlIElOSVRfRVhQUi4KCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IFVzZSBjcmVhdGVfdGVtcG9yYXJ5X3Zhci4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IFVzZSBidWlsZF97YWdncix2ZWN9X2luaXQuCgkqIGluaXQuYyAoZXhwYW5kX3ZlY19pbml0X3RyeV9ibG9jayk6IFJlbW92ZS4KCShleHBhbmRfdmVjX2luaXRfY2F0Y2hfY2xhdXNlKTogTGlrZXdpc2UuCgkoZ2V0X3RlbXBfcmVndmFyKTogTmV3IGZ1bmN0aW9uLgoJKGJlZ2luX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCShmaW5pc2hfaW5pdF9zdG10cyk6IExpa2V3aXNlLgoJKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBVc2UgYnVpbGRfe2FnZ3IsdmVjfV9pbml0LiAgQnVpbGQgdXAgdHJlZQoJc3RydWN0dXJlIGhlcmUuCgkoZW1pdF9iYXNlX2luaXQpOiBMaWtld2lzZS4gIFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLgoJKGV4cGFuZF92aXJ0dWFsX2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfY2xlYW51cF9mb3JfYmFzZSk6IFVzZSBmaW5pc2hfc3Vib2JqZWN0LgoJKGV4cGFuZF9hZ2dyX3ZiYXNlX2luaXRfMSk6IFNpbXBsaWZ5LgoJKGNvbnN0cnVjdF92aXJ0dWFsX2Jhc2VzKTogVXNlIHRyZWUtZ2VuZXJhdGluZyBmdW5jdGlvbnMgdG8gYnVpbGQKCXVwIGluaXRpYWxpemF0aW9uLgoJKGV4cGFuZF9hZ2dyX2luaXQpOiBMaWtld2lzZS4gIFJlbmFtZSB0byBidWlsZF9hZ2dyX2luaXQuCgkoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9hZ2dyX2luaXRfMSk6IExpa2V3aXNlLgoJKGV4cGFuZF92ZWNfaW5pdCk6IFJlbmFtZSB0byBidWlsZF92ZWNfaW5pdC4KCSogbWV0aG9kLmMgKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBVc2UgdHJlZS1nZW5lcmF0aW5nCglmdW5jdGlvbnMuICBEb24ndCBjYWxsIGNsZWFyX2xhc3RfZXhwci4KCShkb19idWlsZF9hc3NpZ25fcmVmKTogTGlrZXdpc2UuCgkoc3ludGhlc2l6ZV9tZXRob2QpOiBDYWxsIGNsZWFyX2xhc3RfZXhwciBoZXJlLgoJKiBwYXJzZS55IChiYXNlX2luaXQpOiBEb24ndCBjYWxsIGNsZWFyX2xhc3RfZXhwciBoZXJlLgoJKG5vZGVjbHMpOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBIYW5kbGUgYSBUUllfQkxPQ0sgd2l0aCBDTEVBTlVQX1Agc2V0LgoJKiBzZW1hbnRpY3MuYyAoZG9fcHVzaGxldmVsKTogTW92ZSB0byBoZXJlLgoJKGRvX3BvcGxldmVsKTogTGlrZXdpc2UuCgkoc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCk6IE5ldyB2YXJpYWJsZS4KCShmaW5pc2hfZXhwcl9zdG10KTogSGFuZGxlIGxvZ2ljIGZvciB0ZW1vcHJhcnkgY2xlYW51cCBoZXJlLgoJKGZpbmlzaF9mb3Jfc3RtdCk6IFVzZSBmaW5pc2hfZXhwcl9zdG10LgoJKGZpbmlzaF9jbGVhbnVwKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9mdW5jdGlvbl90cnlfYmxvY2spOiBGaXggaW5kZW50YXRpb24uCgkoZmluaXNoX3N1Ym9iamVjdCk6IE5ldyBmdW5jdGlvbi4KCShzZXR1cF92dGJsX3B0cik6IENhbGwga2VlcF9uZXh0X2xldmVsIGhlcmUuCgkoZmluaXNoX3N0bXRfZXhwcik6IEhhbmRsZSBhIGJsb2NrIHdpdGggbm8gc2NvcGUgaW5zaWRlIHRoZQoJc3RhdGVtZW50LWV4cHJlc3Npb24uCgkoZXhwYW5kX3N0bXQpOiBIYW5kbGUgYSBUUllfQkxPQ0sgd2l0aCBDTEVBTlVQX1Agc2V0LiAgSGFuZGxlCglTVUJPQkpFQ1QuCgkqIHRyZWUuYyAoc2VhcmNoX3RyZWUpOiBIYW5kbGUgSU5JVF9FWFBSLgoJKG1hcGNhcik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBEb24ndCBidWlsZCBhbiBSVExfRVhQUi4KCSogdHlwZWNrMi5jIChzdG9yZV9pbml0X3ZhbHVlKTogQ2hhbmdlIGV4cGFuZF9hZ2dyX2luaXQgdG8KCWJ1aWxkX2FnZ3JfaW5pdCBpbiBjb21tZW50LgoJCjE5OTktMDgtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEdW1wIFRBUkdFVF9FWFBScy4KCjE5OTktMDgtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBkZWNsMi5jIChoYW5kbGVfY2xhc3NfaGVhZCk6IEJlIGdyYWNlZnVsIGFib3V0IGFkZGl0aW9uYWwKCXNjb3BlIHF1YWxpZmllcnMuIEFkanVzdCBjb21tZW50cyB0byByZWZsZWN0IHJlYWxpdHkuCgoxOTk5LTA4LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBGaXggdHlwby4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByLCBDT05EX0VYUFIpOiBNYWtlIHN1cmUgd2UndmUgZ290IGFuCglsdmFsdWUgYmVmb3JlIHRyeWluZyB0byBtZXNzIHdpdGggdGhlIHNpZGVzLgoKCSogZXJyb3IuYyAoZHVtcF9leHByLCBDT05WRVJUX0VYUFIpOiBIYW5kbGUgKHZvaWQpIHByb3Blcmx5LgoKTW9uIEF1ZyAyMyAyMjoxNzoyMCAxOTk5ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGcrK3NwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBBZGQgcm9vbSBmb3IgTlVMTCBpbiBhcmdsaXN0LgoKMTk5OS0wOC0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjIChfX2NwbHVzX3R5cGVfbWF0Y2hlcik6IENhbGwgX190aHJvd190eXBlX21hdGNoX3J0dGlfMi4KCVJldHVybiBhcmJpdHJhcnkgcG9pbnRlciBvciBOVUxMLgoJKGNoZWNrX2VoX3NwZWMpOiBDYWxsIF9fdGhyb3dfdHlwZV9tYXRjaF9ydHRpXzIuCgkqIHRpbmZvLmggKCo6OmRjYXN0KTogUmV0dXJuIGludC4gIEFkZCB2YWxwIHBhcm0uCgkqIHRpbmZvLmNjICgqOjpkY2FzdCk6IExpa2V3aXNlLiAgQWRqdXN0IHRvIGFsbG93IGZvciBudWxsIHBvaW50ZXJzLgoJKiB0aW5mbzIuY2MgKF9fdGhyb3dfdHlwZV9tYXRjaF9ydHRpXzIpOiBMaWtld2lzZS4KCShfX3Rocm93X3R5cGVfbWF0Y2hfcnR0aSk6IE5vdyBqdXN0IGEgd3JhcHBlci4KCgkqIGV4Y2VwdC5jOiBMb3NlIENhdGNoTWF0Y2gsIEZpcnN0RXhjZXB0aW9uTWF0Y2gsIGFuZCBVbndpbmQuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IERvbid0IGluaXRpYWxpemUgdGhlbS4KCjE5OTktMDgtMjMgIFBhdWwgQnVyY2hhcmQgPGJ1cmNoYXJkQHBvYm94LmNvbT4KCgkqIGRlY2wuYyAoY2hlY2tfZGVmYXVsdF9hcmd1bWVudCk6IEZpeCB0eXBvLgoKMTk5OS0wOC0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuZGVmIChTVE1UX0VYUFIpOiBGaXggdHlwbyBpbiBub2RlIG5hbWUuCgoJKiBkdW1wLmMgKGR1bXBfbmV4dF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGRlcXVldWVfYW5kX2R1bXApOiBVc2UgaXQuCgkKCSogcHQuYyAodHN1YnN0X2NvcHkpOiBNYWtlIHN1cmUgdG8gaW5pdGlhbGl6ZSByZXR1cm4gdmFsdWUgZm9yIGEKCVNUTVRfRVhQUiwgZXZlbiB3aGVuIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zdG10X2V4cHIpOiBBIHN0YXRlbWVudC1leHByZXNzaW9uIHdob3NlCglsYXN0IHN0YXRlbWVudCBpcyBub3QgYW4gZXhwcmVzc2lvbi1zdGF0ZW1lbnQgaGFzIHR5cGUgYHZvaWQnLgkKCQoxOTk5LTA4LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zdG10X2V4cHIpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogSGFuZGxlIEVYSVRfRVhQUiwgTE9PUF9FWFBSLgoJKG1hcGNhcik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19kZWxldGVfMSk6IE1ha2UgdGhlIGNoaWxkcmVuIG9mIGEgcGVybWFuZW50CglCSU5EX0VYUFIgcGVybWFuZW50LgoJKiBwdC5jIChyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IERvbid0IHJlZ2lzdGVyIGEgc3BlY2lhbGl6YXRpb24KCW1vcmUgdGhhbiBvbmNlLgoJCjE5OTktMDgtMTggIEFuZHJldyBIYWxleSAgPGFwaEBjeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IENhbGwgYnVpbGRfbWFuZ2xlZF9DOXhfbmFtZSAoKQoJZm9yIGFsbCBpbnRlZ2VyIHBhcmFtZXRlciB0eXBlcyBsYXJnZXIgdGhhbiBsb25nIGxvbmcuCgoxOTk5LTA4LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogTWVyZ2UgZGVmYXVsdCB0ZW1wbGF0ZQoJYXJndW1lbnRzIGluIGJvdGggZGlyZWN0aW9ucy4KCgkqIHR5cGVjay5jIChjb21tb25fdHlwZSk6IFVuZG8gMTk5OS0wOC0xOCBjaGFuZ2UuICBSZW1vdmUKCWNvbXBpbGVyX2Vycm9yIG1lc3NhZ2UuCgoxOTk5LTA4LTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmg6IERlY2xhcmUgZmxhZ191c2VfcmVwb3NpdG9yeS4KCSogcHQuYyAoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgZHVwbGljYXRlCglpbnN0YW50aWF0aW9uIHdpdGggLWZyZXBvLgoJKGRvX3R5cGVfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBDb21wbGFpbiBhYm91dCBldmVyeXRoaW5nCgl0aGF0IGlzbid0IGEgdmFsaWQgdGVtcGxhdGUuCgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBJZiAtZm5ldy1hYmksIGNsYXNzIGxpbmthZ2UgZG9lc24ndAoJYWZmZWN0IGlubGluZXMuCgoxOTk5LTA4LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5kZWYgKFBTRVVET19EVE9SX0VYUFIpOiBOZXcgdHJlZSBjb2RlLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IEhhbmRsZSBpdC4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogTGlrZXdpc2UuCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBMaWtld2lzZS4KCSh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfcHNldWRvX2Rlc3RydWN0b3JfY2FsbCk6IENyZWF0ZSBpdC4KCQoxOTk5LTA4LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VhcmNoLmMgKHNldHVwX2NsYXNzX2JpbmRpbmdzKTogUm9idXN0aWZ5LgoJKiB0eXBlY2suYyAoY29tbW9uX3R5cGUpOiBVc2Ugc2FtZV90eXBlX3AsIG5vdCBwb2ludGVyIGVxdWFsaXR5LAoJdG8gY29tcGFyZSB0eXBlcy4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfbGFuZ19maWVsZF9kZWNsKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChidWlsZF92dGFibGUpOiBSZXBsYWNlIGNhbGxzIHRvIGJ1aWxkX2xhbmdfZmllbGRfZGVjbAoJd2l0aCBidWlsZF9sYW5nX2RlY2wuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogZGVjbC5jIChwdXNoX3VzaW5nX2RlY2wpOiBMaWtld2lzZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKGdyb2t2YXJkZWNsKTogTGlrZXdpc2UuCgkoYnVpbGRfcHRybWVtZnVuY190eXBlKTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShidWlsZF9lbnVtZXJhdG9yKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogTGlrZXdpc2UuCgkoZG9fY2xhc3NfdXNpbmdfZGVjbCk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoaW5pdF9pbml0X3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogcnR0aS5jIChleHBhbmRfY2xhc3NfZGVjbCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2Jhc2VfZmllbGRzKTogTGlrZXdpc2UuCgkoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBMaWtld2lzZS4KCSogbGV4LmMgKGJ1aWxkX2xhbmdfZGVjbCk6IEJ1aWxkIGRlY2xhcmF0aW9ucyBvbiB0aGUgcGVybWFuZW50CglvYnN0YWNrIGlmIHdlJ3JlIGJ1aWxkaW5nIHN0YXRtZWVudCB0cmVlcy4KCShyZXRyb2ZpdF9sYW5nX2RlY2wpOiBIYW5kbGUgYm90aCB0aGUgZnVsbCBsYW5nX2RlY2wgYW5kIGFsc28gdGhlCglzbWFsbGVyIGxhbmdfZGVjbF9mbGFncyBoZXJlLgoJKGJ1aWxkX2xhbmdfZmllbGRfZGVjbCk6IFJlbW92ZS4KCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBJc3N1ZSBlcnJvcnMgZm9yIHZhcmlhYmxlCglkZWNsYXJhdGlvbnMgdGhhdCBhcmUgbm90IHN0YXRpYyBtZW1iZXJzLgoKMTk5OS0wOC0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoc2VhcmNoX3RyZWUpOiBIYW5kbGUgVFJVVEhfe0FORCxPUixYT1J9X0VYUFIgdG9vLgoJKG1hcGNhcik6IExpa2V3aXNlLgoKMTk5OS0wOC0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoYmFja19lbmRfaG9vayk6IE5ldyB2YXJpYWJsZS4KCSogZGVjbDIuYyAoYmFja19lbmRfaG9vayk6IERlZmluZSBpdC4KCShmaW5pc2hfZmlsZSk6IElmIGl0J3Mgbm9uLU5VTEwsIGNhbGwgaXQuCgoJKiBkZWNsLmMgKGFkZF9kZWNsX3RvX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfbG9jYWxfYmluZGluZyk6IFVzZSBpdC4KCShmaW5kX2JpbmRpbmcpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKHB1c2hkZWNsKTogVXNlIGFkZF9kZWNsX3RvX2xldmVsLiAgUHV0IHRlbXBsYXRlcyBvbiB0aGUKCWNvcnJlc3BvbmRpbmcgbmFtZXNwYWNlLXNjb3BlIGJpbmRpbmcgbGV2ZWxzLgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBQcmludCB0aGUgc3BlY2lhbGl6YXRpb25zIG9mIGEKCXRlbXBsYXRlLgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IERvbid0IHB1c2ggYSB0ZW1wbGF0ZSBtdWx0aXBsZQoJdGltZXMuCgoxOTk5LTA4LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChDQUxMX0RFQ0xBUkFUT1JfUEFSTVMpOiBOZXcgbWFjcm8uCgkoQ0FMTF9ERUNMQVJBVE9SX1FVQUxTKTogTGlrZXdpc2UuCgkoQ0FMTF9ERUNBUkFUT1JfRVhDRVBUSU9OX1NQRUMpOiBMaWtld2lzZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFkanVzdCB0byB1c2UgdGhlbS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgkocmVwYXJzZV9hYnNkY2xfYXNfY2FzdHMpOiBMaWtld2lzZS4KCSogbGV4LmMgKG1ha2VfY2FsbF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoc2V0X3F1YWxzX2FuZF9zcGVjKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKG1hcGNhcik6IFJlbW92ZSBzcGVjaWFsIGhhY2sgdG8gaGFuZGxlIHRoaXJkIG9wZXJhbmQgb2YKCWEgQ0FMTF9FWFBSLgoKMTk5OS0wOC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0FOX0hBVkVfRlVMTF9MQU5HX0RFQ0xfUCk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlKTogVXNlIGJ1aWxkX2xhbmdfZmllbGRfZGVjbCB0byBidWlsZCB0aGUKCVZBUl9ERUNMcyBmb3IgdnRhYmxlcy4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IE9ubHkgY29weSBERUNMX1NBVkVEX1RSRUUgaWYKCUNBTl9IQVZFX0ZVTExfTEFOR19ERUNMX1AuCgkocHVzaF91c2luZ19kZWNsKTogVXNlIGJ1aWxkX2xhbmdfZGVjbCB0byBidWlsZCBVU0lOR19ERUNMcy4KCShncm9rZGVjbGFyYXRvcik6IFVzZSBidWlsZF9sYW5nX2RlY2wgdG8gYnVpbGQgVFlQRV9ERUNMcy4KCSogbGV4LmMgKHJldHJvZml0X2xhbmdfZGVjbCk6IENoZWNrIENBTl9IQVZFX0ZVTExfTEFOR19ERUNMX1AuCgkoYnVpbGRfbGFuZ19maWVsZF9kZWNsKTogTGlrZXdpc2UuCgkoY29weV9sYW5nX2RlY2wpOiBVc2UgQ0FOX0hBVkVfRlVMTExBTkdfREVDTF9QIHRvIGRlY2lkZSBob3cgbXVjaAoJdG8gY29weS4KCQoJKiBjcC10cmVlLmRlZiAoU1RNVF9FWFBSKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChTVE1UX0VYUFJfU1RNVCk6IE5ldyBtYWNyby4KCShzdG9yZV9yZXR1cm5faW5pdCk6IENoYW5nZSBwcm90b3R5cGUuCgkoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9ib2R5KTogTGlrZXdpc2UuCgkoYmVnaW5fc3RtdF90cmVlKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGV4cGFuZGluZ19wKTogTmV3IHZhcmlhYmxlLgoJKGxhc3RfZXhwcl90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRpbmdfc3RtdF90cmVlKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIGJ1aWxkaW5nX3N0bXRfdHJlZSwgbm90Cglwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wsIHdoZXJlIGFwcHJvcHJpYXRlLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCShzdG9yZV9yZXR1cm5faW5pdCk6IE1vdmUgbW9zdCBvZiB0aGUgYm9keSB0byBzZW1hbnRpY3MuYy4KCShmaW5pc2hfZnVuY3Rpb24pOiBVc2UgYnVpbGRpbmdfc3RtdF90cmVlLgoJKGZpbmlzaF9zdG10KTogQ2xlYXIgbGFzdF9leHByX3R5cGUgaGVyZS4KCShjcF9mdW5jdGlvbik6IEFkZCBleHBhbmRpbmdfcCwgbGFzdF90cmVlLCBsYXN0X2V4cHJfdHlwZS4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBTYXZlIHRoZW0uCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBSZXN0b3JlIHRoZW0uCgkqIGRlY2wyLmMgKHNldHVwX3Z0YmxfcHRyKTogTW92ZSB0byBzZW1hbnRpY3MuYy4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIFNUTVRfRVhQUi4KCSogZXhjZXB0LmMgKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFVzZSBidWlsZGluZ19zdG10X3RyZWUuCglVc2UgYWRkX2RlY2xfc3RtdC4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IEhhbmRsZSBTVE1UX0VYUFIuCgkoZG9fY2FzZSk6IE1vdmUgYWRkX3RyZWUgY2FsbCB0byBzZW1hbnRpY3MuYy4KCSogcGFyc2UueSAocmV0dXJuX2luaXQpOiBVc2UgZmluaXNoX25hbWVkX3JldHVybl92YWx1ZS4KCShmb3IuaW5pdC5zdGF0ZW1lbnQpOiBVc2UgZmluaXNoX2V4cHJfc3RtdC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKGRvX3B1c2hsZXZlbCk6IE1vdmUgdG8gc2VtYW50aWNzLmMuCgkoZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4KCSh0c3Vic3RfY29weSk6IEhhbmRsZSBTVE1UX0VYUFIgaW5zdGVhZCBvZiBCSU5EX0VYUFIuCgkodHN1YnN0X2V4cHIpOiBEb24ndCBleHBhbmQgYWxsIHRoZSB3YXkgdG8gUlRMIGhlcmUuICBIYW5kbGUKCVJFVFVSTl9JTklUIGFuZCBDVE9SX0lOSVRJQUxJWkVSLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBDYWxsIGV4cGFuZF9ib2R5IGFmdGVyIHRzdWJzdCdpbmcgaW50bwoJREVDTF9TQVZFRF9UUkVFLgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXRzKTogTmV3IGZ1bmN0aW9uLgoJKGV4cGFuZGluZ19wKTogTmV3IHZhcmlhYmxlLgoJKGxhc3RfZXhwcl90eXBlKTogTGlrZXdpc2UuCgkoZmluaXNoX2V4cHJfc3RtdCk6IFVzZSBidWlsZGluZ19zdG10X3RyZWUuCgkoYmVnaW5faWZfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9pZl9zdG10X2NvbmQpOiBMaWtld2lzZS4KCShmaW5pc2hfdGhlbl9jbGF1c2UpOiBMaWtld2lzZS4KCShiZWdpbl9lbHNlX2NsYXVzZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9lbHNlX2NsYXVzZSk6IExpa2V3aXNlLgoJKGJlZ2luX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfd2hpbGVfc3RtdF9jb25kKTogTGlrZXdpc2UuCgkoZmluaXNoX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfZG9fYm9keSk6IExpa2V3aXNlLgoJKGZpbmlzaF9kb19zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgkoYmVnaW5fZm9yX3N0bXQpOiBMaWtld2lzZS4KCShmbmlzaF9mb3JfaW5pdF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9jb25kKTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9leHByKTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zd2l0Y2hfY29uZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zd2l0Y2hfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jYXNlX2xhYmVsKTogQ2FsbCBhZGRfdHJlZSBoZXJlIGlmIG5lY2Vzc2FyeS4KCShmaW5pc2hfZ290b19zdGF0ZW1lbnQpOiBVc2UgYnVpbGRpbmdfc3RtdF90cmVlLgoJKGJlZ2luX3RyeV9ibG9jayk6IExpa2V3aXNlLgoJKGJlZ2luX2Z1bmN0aW9uX3RyeV9ibG9jayk6IExpa2V3aXNlLgoJKGZpbmlzaF90cnlfYmxvY2spOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb25fdHJ5X2Jsb2NrKTogTGlrZXdpc2UuCgkoZmluaXNoX2hhbmRsZXJfc2VxdWVuY2UpOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb25faGFuZGxlcl9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKGJlZ2luX2hhbmRsZXIpOiBMaWtld2lzZS4KCShmaW5pc2hfaGFuZGxlcl9wYXJtcyk6IExpa2V3aXNlLgoJKGZpbmlzaF9oYW5kbGVyKTogTGlrZXdpc2UuCgkoYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2xhYmVsX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfbmFtZWRfcmV0dXJuX3ZhbHVlKTogTmV3IGZ1bmN0aW9uLgoJKHNldHVwX3Z0YmxfcHRyKTogTW92ZWQgaGVyZSBmcm9tIGRlY2wyLmMuCgkoZG9fcHVzaGxldmVsKTogTW92ZWQgaGVyZSBmcm9tIHB0LmMuCgkoZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4KCShiZWdpbl9zdG10X2V4cHIpOiBVc2UgYnVpbGRpbmdfc3RtdF90cmVlLgoJKGZpbmlzaF9zdG10X2V4cHIpOiBMaWtld2lzZS4gIEJ1aWxkIGEgU1RNVF9FWFBSLCBub3QgYSBCSU5EX0VYUFIsCgl3aGVuIGJ1aWxkaW5nX3N0bXRfdHJlZS4KCShiZWdpbl9zdG10X3RyZWUpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGV4cGFuZF9zdG10KTogTGlrZXdpc2UuCgkoZXhwYW5kX2JvZHkpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19tZXRob2RfdHlwZSk6IE1ha2Ugc3VyZSB0aGUgYXJndW1lbnQgdHlwZXMKCWVuZCB1cCBvbiB0aGUgc2FtZSBvYnN0YWNrIGFzIHRoZSBNRVRIT0RfVFlQRS4KCShzZWFyY2hfdHJlZSk6IEhhbmRsZSBDT01QT1VORF9FWFBSLCBNT0RJRllfRVhQUiwKCVRIUk9XX0VYUFIsIFNUTVRfRVhQUi4KCShtYXBjYXIpOiBCcmVhayBvdXQgY29tbW9uIGNhc2VzLiAgSGFuZGxlIENPTVBPVU5EX0VYUFIsCglNT0RJRllfRVhQUiwgVEhST1dfRVhQUiwgU1RNVF9FWFBSLCBSVExfRVhQUi4gIEFib3J0LCByYXRoZXIgdGhhbgoJc29ycnksIGlmIGFuIHVuc3VwcG9ydGVkIG5vZGUgaXMgZW5jb3VudGVyZWQuCgkqIHR5cGVjay5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGVfaW5fdm9pZCk6IEhhbmRsZSBCSU5EX0VYUFIuCgkoY19leHBhbmRfcmV0dXJuKTogRG9uJ3QgY2FsbCBhZGRfdHJlZSBoZXJlLgoJCjE5OTktMDgtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChjaGVja19kZWZhdWx0X3RtcGxfYXJncyk6IERvbid0IGNoZWNrIGluIGxvY2FsIHNjb3Blcy4KCSh0c3Vic3RfZGVjbCk6IE1ha2Ugc3VyZSB0aGUgZGVjbGFyYXRpb24gaXMgb24gYSBzYXZlYWJsZQoJb2JzdGFjay4gIENsZWFyIERFQ0xfREVBRF9GT1JfTE9DQUwgd2hlbiBtYWtpbmcgYSBjb3B5IG9mIGEgbG9jYWwKCXZhcmlhYmxlLgoJKHRzdWJzdF9leHByKTogQWRqdXN0IG5vdyB0aGF0IERFQ0xfU1RNVHMgcmVhbGx5IGNvbnRhaW4gREVDTHMuCgkKMTk5OS0wOC0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCVNwZWVkIHVwIEtvZW5pZyBsb29rdXAuCgkqIGRlY2wuYyAodW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCk6IE5vbnN0YXRpYy4gIEFkZCBzcGFjZXAgcGFybQoJdG8gcmV0dXJuIG5hbWVzcGFjZXMgd2UndmUgbG9va2VkIGF0LgoJKiBkZWNsMi5jIChsb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogTGlrZXdpc2UuCgkoYWRkX2Z1bmN0aW9uKTogRG9uJ3QgY2FsbCBvdmxfbWVtYmVyLgoJKGxvb2t1cF9hcmdfZGVwZW5kZW50KTogSW5pdGlhbGl6ZSBrLm5hbWVzcGFjZXMgdG8gdGhlIGxpc3Qgb2YgCgluYW1lc3BhY2VzIHNlZW4gaW4gdW5xdWFsaWZpZWQgbG9va3VwLgoJKiBjYWxsLmMgKGVxdWFsX2Z1bmN0aW9ucyk6IE1vdmUgaGVyZSBmcm9tIHRyZWUuYy4KCShqb3VzdCk6IFVzZSBpdCB0byBoYW5kbGUgZHVwbGljYXRlIGNhbmRpZGF0ZXMuCgkqIHRyZWUuYyAob3ZsX21lbWJlcik6IFVzZSA9PS4KCjE5OTktMDgtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmRlZiAoREVDTF9TVE1UKTogTWFrZSBpdCBzbWFsbGVyLgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IE1vdmUgc2F2ZWRfdHJlZSB0byAuLi4KCShsYW5nX2RlY2wpOiAuLi4gaGVyZS4gIEFkZCBuZXh0LgoJKERFQ0xfU0FWRURfVFJFRSk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShERUNMX0lNUExJQ0lUX1RZUEVERUZfUCk6IE5ldyBtYWNyby4KCShTRVRfREVDTF9JTVBMSUNJVF9UWVBFREVGX1ApOiBMaWtld2lzZS4KCShERUNMX1NUTVRfREVDTCk6IExpa2V3aXNlLgoJKGNyZWF0ZV9pbXBsaWNpdF90eXBlZGVmKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX3B1c2hfZGVjbCk6IExpa2V3aXNlLgoJKHRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50KTogTmV3IGZ1bmN0aW9uLgoJKGF0X2Z1bmN0aW9uX3Njb3BlX3ApOiBMaWtld2lzZS4KCShhZGRfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkocHVzaF9wZXJtYW5lbnRfb2JzdGFjayk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGNvbnZlcnRfZGVmYXVsdF9hcmcpOiBVc2UgdHN1YnN0X2RlZmF1bHRfYXJndW1lbnQuCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBVc2UgcHVzaF9wZXJtYW5lbnRfb2JzdGFjay4KCShidWlsZF9zZWxmX3JlZmVyZW5jZSk6IENyZWF0ZSBhIFRFTVBMQVRFX0RFQ0wgZm9yIHRoZQoJc2VsZi1yZWZlcmVuY2UsIGlmIG5lY2Vzc2FyeS4KCSogZGVjbC5jIChwc2V1ZG9fZ2xvYmFsX2xldmVsX3ApOiBPbmx5IGxvb2sgYXQgdGhlIGN1cnJlbnQgYmluZGluZwoJbGV2ZWwuCgkocHVzaF9iaW5kaW5nKTogVXNlIHB1c2hfcGVybWFuZW50X29ic3RhY2suCgkoY3JlYXRlX2ltcGxpY2l0X3R5cGVkZWYpOiBOZXcgZnVuY3Rpb24uCgkocHVzaHRhZyk6IFVzZSBpdC4KCShkdXBsaWNhdGVfZGVjbHMpOiBVc2UgcHVzaF9wZXJtYW5lbnRfb2JzdGFjay4KCShtYXliZV9wdXNoX2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkoc3RhcnRfZGVjbCk6IFVzZSBpdC4gIFJlbW92ZSBkZWFkIGNvZGUuICBVc2UgYWRkX2RlY2xfc3RtdC4KCShzdGFydF9kZWNsXzEpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKGNwX2ZpbmlzaF9kZWNsKTogUmVtb3ZlIERFQ0xfU1RNVCBoYW5kbGluZyBoZXJlLiAgRG9uJ3QgdXNlCglwc2V1ZG9fZ2xvYmFsX2xldmVsX3AuCgkoZ3Jva3ZhcmRlY2wpOiBDcmVhdGUgREVDTF9MQU5HX1NQRUNJRklDIGZvciBhIFZBUl9ERUNMIGluIGEKCXRlbXBsYXRlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UsIGZvciBUWVBFX0RFQ0xzLiAgRG9uJ3QgdXNlCglwc2V1ZG9fZ2xvYmFsX2xldmVsX3AuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IENhbGwgcHVzaF90ZW1wbGF0ZV9kZWNsIGZvciBhIFRZUEVfREVDTCBpbgoJYSB0ZW1wbGF0ZS4KCShnZXRfc2VudHJ5KTogVXNlIHB1c2hfcGVybWFuZW50X29ic3RhY2suCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEVuYWJsZSBERUNMX1NUTVQuCgkqIGV4Y2VwdC5jIChjYWxsX2VoX2luZm8pOiBVc2UgcHVzaF9wZXJtYW5lbnRfb2JzdGFjay4KCShidWlsZF9laF90eXBlX3JlZik6IExpa2V3aXNlLgoJKGRvX3BvcF9leGNlcHRpb24pOiBMaWtld2lzZS4KCShleHBhbmRfZWhfc3BlYyk6IExpa2V3aXNlLgoJKGFsbG9jX2VoX29iamVjdCk6IExpa2V3aXNlLgoJKGV4cGFuZF90aHJvdyk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogTGlrZXdpc2UuCgkqIGxleC5jIChnZXRfdGltZV9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoZnJlZV9sYW5nX2RlY2xfY2hhaW4pOiBDb3JyZWN0IHR5cGUuCgkocmV0cm9maXRfbGFuZ19kZWNsKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKGJ1aWxkX2xhbmdfZmllbGRfZGVjbCk6IExpa2V3aXNlLgoJKiBsZXguaCAoZnJlZV9sYW5nX2RlY2xfY2hhaW4pOiBMaWtld2lzZS4KCSogcGFyc2UueSAobGFuZ19leHRkZWYpOiBEb24ndCB1c2UgcHNldWRvX2dsb2JhbF9sZXZlbF9wLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAodHN1YnN0X2RlZmF1bHRfYXJndW1lbnRzKTogTmV3IGZ1bmN0aW9uLgoJKHJldHJpZXZlX2xvY2FsX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkocmVnaXN0ZXJfbG9jYWxfc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IFVzZSBERUNMX0lNUExJQ0lUX1RZUEVERUZfUC4gIEp1c3QgdXNlCglwc2V1ZG9fZ2xvYmFsX2xldmVsX3AgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEgdGVtcGxhdGUgaXMKCXByaW1hcnkuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuICBVc2UgY3JlYXRlX2ltcGxpY2l0X3R5cGVkZWYuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDYWxsIHRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50cyBmb3IKCW1lbWJlciBmdW5jdGlvbnMsIGlmIGFwcHJvcHJpYXRlLgoJKHRzdWJzdF9kZWZhdWx0X2FyZ3VtZW50KTogTmV3IGZ1bmN0aW9uLgoJKHRzdWJzdF9kZWNsKTogVXNlIGl0LiAgQ2hhbmdlIFRZUEVfREVDTCBoYW5kbGluZyB0byBtYXRjaCBWQVJfREVDTHMuCgkqIHNlYXJjaC5jIChhdF9mdW5jdGlvbl9zY29wZV9wKTogTmV3IGZ1bmN0aW9uLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogVXNlIHB1c2hfcGVybWFuZW50X29ic3RhY2suCgkoZmluaXNoX2xhYmVsX3N0bXQpOiBMaWtld2lzZS4KCShhZGRfZGVjbF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfdHlwZW9mKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogTGlrZXdpc2UuCgkoY29weV90b19wZXJtYW5lbnQpOiBMaWtld2lzZS4KCShwdXNoX3Blcm1hbmVudF9vYnN0YWNrKTogRGVmaW5lLgoJKG1hcmtfYWRkcmVzc2FibGUpOiBVc2UgaXQuCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogTGlrZXdpc2UuCgkKMTk5OS0wOC0xMyAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKGluaXRfY3BsdXNfdW5zYXZlKTogTmV3LgoJKGNwbHVzX3Vuc2F2ZV9leHByX25vdyk6IE5ldy4KCSogbGV4LmMgKGluaXRfcGFyc2UpOiBDYWxsIGluaXRfY3BsdXNfdW5zYXZlLgoJKiB0cmVlLmMgKGluaXRfY3BsdXNfdW5zYXZlKTogTmV3LgoJKGNwbHVzX3Vuc2F2ZV9leHByX25vdyk6IE5ldy4KCjE5OTktMDgtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBCYWNrIG91dCAxOTk5LTA4LTA2IHBhdGNoLiAgVXNlIGZvbGQgYW5kCglkZWNsX2NvbnN0YW50X3ZhbHVlIHRvIHNpbXBsaWZ5IGFycmF5IGJvdW5kcy4KCjE5OTktMDgtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZtcy1leHRlbnNpb25zLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgZmxhZ19tc19leHRlbnNpb25zLgoJKiBkZWNsMi5jOiBEZWZpbmUgaXQuCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBEb24ndCBjb21wbGFpbiBhYm91dCB0YWtpbmcgdGhlIGFkZHJlc3MKCW9mIGEgYm91bmQgbWVtYmVyIGZ1bmN0aW9uIGlmIC1mbXMtZXh0ZW5zaW9ucy4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBPciBhYm91dCBpbXBsaWNpdCBpbnQuCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogT3IgYWJvdXQgaW1wbGljaXQgJyYnLgoKMTk5OS0wOC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobWluaW1hbF9wYXJzZV9tb2RlKTogUmVtb3ZlLgoJKGZpbmlzaF9sYWJlbF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKHNhdmVkX3Njb3BlKTogUmVtb3ZlIG1pbmltYWwgcGFyc2UgbW9kZS4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IERvbid0IHNhdmUgaXQuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogRG9uJ3QgcmVzdG9yZSBpdC4KCShkZWZpbmVfbGFiZWwpOiBTcGxpdCBvdXQgdGVtcGxhdGUtaGFuZGxpbmcgY29kZSB0byBzZW1hbnRpY3MuYy4KCShzdGFydF9kZWNsKTogRG9uJ3QgdXNlIG1pbmltYWxfcGFyc2VfbW9kZS4KCShjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgaW5jcmVtZW50IGl0LgoJKHN0b3JlX3JldHVybl9pbml0KTogRG9uJ3QgdXNlIGl0LgoJKGZpbmlzaF9mdW5jdGlvbik6IERvbid0IGRlY3JlbWVudCBpdC4KCSogcGFyc2UueSAobGFiZWxfY29sb24pOiBVc2UgZmluaXNoX2xhYmVsX3N0bXQgdGhyb3VnaG91dC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKG1pbmltYWxfcGFyc2VfbW9kZSk6IERvbid0IGRlZmluZSBpdC4KCSh0c3Vic3RfZXhwcik6IFVzZSBmaW5pc2hfbGFiZWxfc3RtdC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9sYWJlbF9zdG10KTogTmV3IGZ1bmN0aW9uLgoKCSogZHVtcC5jIChxdWV1ZSk6IEJlIGNhcmVmdWwgd2hlbiBjb21wdXRpbmcgYml0bWFza3MuCgkoZGVxdWV1ZV9hbmRfZHVtcCk6IERlc2NyaWJlIGJpbmZvcyBhcyBiaW5mb3MsIG5vdCBhcwoJdmVjdG9ycy4KCQoJKiBwYXJzZS55IChwZWRhbnRpYyk6IEdpdmUgaXQgaXR5cGUuICBBZGp1c3QgdXNhZ2UgYWNjb3JkaW5nbHkKCXRocm91Z2hvdXQuIAkKCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkKCSogTWFrZS1sYW5nLmluIChDWFhfU1JDUyk6IFJlbW92ZSBzaWcuYy4KCSogTWFrZWZpbGUuaW4gKENYWF9PQkpTKTogUmVtb3ZlIHNpZy5vLgoJKHNpZy5vKTogUmVtb3ZlLgoJKiBjcC10cmVlLmggKENQVElfT1BBUVVFX1RZUEUpOiBSZW1vdmUuCgkoQ1BUSV9TSUdOQVRVUkVfVFlQRSk6IExpa2V3aXNlLgoJKENQVElfU0lHVEFCTEVfRU5UUllfVFlQRSk6IExpa2V3aXNlLgoJKG9wYXF1ZV90eXBlX25vZGUpOiBMaWtld2lzZS4KCShzaWduYXR1cmVfdHlwZV9ub2RlKTogTGlrZXdpc2UuCgkoc2lndGFibGVfZW50cnlfdHlwZSk6IExpa2V3aXNlLgoJKGZsYWdfaGFuZGxlX3NpZ25hdHVyZXMpOiBMaWtld2lzZS4KCShsYW5nX3R5cGUpOiBSZW1vdmUgaXNfc2lnbmF0dXJlLCBpc19zaWduYXR1cmVfcG9pbnRlciwKCWlzX3NpZ25hdHVyZV9yZWZlcmVuY2UsIGhhc19vcGFxdWVfdHlwZWRlY2xzLAoJc2lndGFibGVzX2hhc19iZWVuX2dlbmVyYXRlZC4gIEFkanVzdCBkdW1teS4gIFJlbW92ZSBzaWduYXR1cmUsCglzaWduYXR1cmVfcG9pbnRlcl90bywgc2lnbmF0dXJlX3JlZmVyZW5jZV90by4KCShJU19TSUdOQVRVUkUpOiBSZW1vdmUuCgkoU0VUX1NJR05BVFVSRSk6IFJlbW92ZS4KCShDTEVBUl9TSUdOQVRVUkUpOiBSZW1vdmUuCgkoSVNfU0lHTkFUVVJFX1BPSU5URVIpOiBSZW1vdmUuCgkoSVNfU0lHTkFUVVJFX1JFRkVSRU5DRSk6IFJlbW92ZS4KCShTSUdOQVRVUkVfSEFTX09QQVFVRV9UWVBFREVDTFMpOiBSZW1vdmUuCgkoU0lHVEFCTEVfSEFTX0JFRU5fR0VORVJBVEVEKTogUmVtb3ZlLgoJKENMQVNTVFlQRV9TSUdOQVRVUkUpOiBSZW1vdmUuCgkoU0lHTkFUVVJFX1RZUEUpOiBSZW1vdmUuCgkoU0lHTkFUVVJFX01FVEhPRF9WRUMpOiBSZW1vdmUuCgkoU0lHTkFUVVJFX1BPSU5URVJfVE8pOiBSZW1vdmUuCgkoU0lHTkFUVVJFX1JFRkVSRU5DRV9UTyk6IFJlbW92ZS4KCShsYW5nX2RlY2xfZmxhZ3MpOiBSZW1vdmUgaXNfZGVmYXVsdF9pbXBsZW1lbnRhdGlvbi4gIFJlbmFtZQoJbWVtZnVuY19wb2ludGVyX3RvIHRvIHNhdmVkX3RyZWUuCgkoSVNfREVGQVVMVF9JTVBMRU1FTlRBVElPTik6IFJlbW92ZS4KCShERUNMX01FTUZVTkNfUE9JTlRFUl9UTyk6IFJlbW92ZS4KCShERUNMX01FTUZVTkNfUE9JTlRJTkdfVE8pOiBSZW1vdmUuCgkoREVDTF9TQVZFRF9UUkVFKTogQWRqdXN0IGRlZmluaXRpb24uCgkodGFnX3R5cGVzKTogUmVtb3ZlIHNpZ25hdHVyZV90eXBlX25vZGUuCgkoU0lHTkFUVVJFX0ZJRUxEX05BTUUpOiBSZW1vdmUuCgkoU0lHTkFUVVJFX0ZJRUxEX05BTUVfRk9STUFUKTogTGlrZXdpc2UuCgkoU0lHTkFUVVJFX09QVFJfTkFNRSk6IExpa2V3aXNlLgoJKFNJR05BVFVSRV9TUFRSX05BTUUpOiBMaWtld2lzZS4KCShTSUdOQVRVUkVfUE9JTlRFUl9OQU1FKTogTGlrZXdpc2UuCgkoU0lHTkFUVVJFX1BPSU5URVJfTkFNRV9GT1JNQVQpOiBMaWtld2lzZS4KCShTSUdOQVRVUkVfUkVGRVJFTkNFX05BTUUpOiBMaWtld2lzZS4KCShTSUdOQVRVUkVfUkVGRVJORUNFX05BTUVfRk9STUFUKTogTGlrZXdpc2UuCgkoU0lHVEFCTEVfUFRSX1RZUEUpOiBMaWtld2lzZS4KCShTSUdUQUJMRV9OQU1FX0ZPUk1BVCk6IExpa2V3aXNlLgoJKFNJR1RBQkxFX05BTUVfRk9STUFUX0xPTkcpOiBMaWtld2lzZS4KCShTSUdUQUJMRV9UQUdfTkFNRSk6IExpa2V3aXNlLgoJKFNJR1RBQkxFX1ZCX09GRl9OQU1FKTogTGlrZXdpc2UuCgkoU0lHVEFCTEVfVlRfT0ZGX05BTUUpOiBMaWtld2lzZS4KCShmaW5pc2hfYmFzZV9zcGVjaWZpZXJzKTogQ2hhbmdlIHByb3RvdHlwZS4KCShidWlsZF9zaWduYXR1cmVfcG9pbnRlcl90eXBlKTogUmVtb3ZlLgoJKGJ1aWxkX3NpZ25hdHVyZV9yZWZlcmVuY2VfdHlwZSk6IFJlbW92ZS4KCShidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9jb25zdHJ1Y3Rvcik6IFJlbW92ZS4KCShidWlsZF9zaWduYXR1cmVfbWV0aG9kX2NhbGwpOiBSZW1vdmUuCgkoYnVpbGRfb3B0cl9yZWYpOiBMaWtld2lzZS4KCShhcHBlbmRfc2lnbmF0dXJlX2ZpZWxkcyk6IExpa2V3aXNlLgoJKHNpZ25hdHVyZV9lcnJvcik6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX3RoaXMpOiBSZW1vdmUgc2lnbmF0dXJlIHN1cHBvcnQuCgkoYnVpbGRfb3Zlcl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGFkZF9pbXBsaWNpdGx5X2RlY2xhcmVkX21lbWJlcnMpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0KTogTGlrZXdpc2UuCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBMaWtld2lzZS4KCShjb252ZXJ0X3RvX3BvaW50ZXJfZm9yY2UpOiBMaWtld2lzZS4KCShvY3BfY29udmVydCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHNpZ3RhYmxlX2RlY2xfcCk6IFJlbW92ZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbW92ZSBzdXBwb3J0IGZvciBzaWduYXR1cmVzLgoJKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShncm9rcGFybXMpOiBMaWtld2lzZS4KCSh4cmVmX3RhZyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoc3RhcnRfbWV0aG9kKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGZpbmlzaF9zaWd0YWJsZV92YXJkZWNsKTogUmVtb3ZlLgoJKGZsYWdfaGFuZGxlX3NpZ25hdHVyZXMpOiBSZW1vdmUuCgkobGFuZ19mX29wdGlvbnMpOiBSZW1vdmUgaGFuZGxlLXNpZ25hdHVyZXMuCgkoZ3Jva2ZpZWxkKTogUmVtb3ZlIHN1cHBvcnQgZm9yIHNpZ25hdHVyZXMuCgkoZ3Jva2JpdGZpZWxkKTogTGlrZXdpc2UuCgkoZmluaXNoX2ZpbGUpOiBMaWtld2lzZS4KCShyZXBhcnNlX2Fic2RjbF9hc19jYXN0cyk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX3R5cGVfcmVhbCk6IExpa2V3aXNlLgoJKGR1bXBfZnVuY3Rpb25fZGVjbCk6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBMaWtld2lzZS4KCSogZ3h4LmdwZXJmOiBSZW1vdmUgX19zaWduYXR1cmVfXywgc2lnbmF0dXJlLCBfX3NpZ29mX18sIHNpZ29mLgoJKiBoYXNoLmg6IFJlZ2VuZXJhdGVkLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogUmVtb3ZlIHN1cHBvcnQgZm9yIHNpZ25hdHVyZXMuCgkqIGxhbmctb3B0aW9ucy5oOiBSZW1vdmUgLWZoYW5kbGUtc2lnbmF0dXJlcywKCS1mbm8taGFuZGxlLXNpZ25hdHVyZXMuIAoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IFJlbW92ZSBzdXBwb3J0IGZvciBzaWduYXR1cmVzLgoJKHl5cHJpbnQpOiBMaWtld2lzZS4KCSogbGV4LmggKHJpZCk6IFJlbW92ZSBSSURfU0lHTkFUVVJFLgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogUmVtb3ZlIHN1cHBvcnQgZm9yCglzaWduYXR1cmVzLiAKCShoYWNrX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoYmFzZV9jbGFzcyk6IExpa2V3aXNlLgoJKGJhc2VfY2xhc3MuMSk6IExpa2V3aXNlLgoJKGFjY2Vzc19zcGVjaWZpZXIpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGxvb2t1cF9tZW1iZXIpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9xdWFsaWZpZWRfb2JqZWN0X2NhbGxfZXhwcik6IExpa2V3aXNlLgoJKGZpbmlzaF90ZW1wbGF0ZV90eXBlX3Bhcm0pOiBMaWtld2lzZS4KCShiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX2Jhc2Vfc3BlY2lmaWVyKTogTGlrZXdpc2UuCgkqIHNpZy5jOiBSZW1vdmUuCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfbWV0aG9kX3R5cGUpOiBSZW1vdmUgc3VwcG9ydCBmb3Igc2lnbmF0dXJlcy4KCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZSk6IExpa2V3aXNlLgoJKGNfc2l6ZW9mKTogTGlrZXdpc2UuCgkoY19hbGlnbm9mKTogTGlrZXdpc2UuCgkoYnVpbGRfb2JqZWN0X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9pbmRpcmVjdF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9jX2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoc2lnbmF0dXJlX2Vycm9yKTogUmVtb3ZlLgoJKHN0b3JlX2luaXRfdmFsdWUpOiBSZW1vdmUgc3VwcG9ydCBmb3Igc2lnbmF0dXJlcy4KCShkaWdlc3RfaW5pdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3hfYXJyb3cpOiBMaWtld2lzZS4KCShidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBMaWtld2lzZS4KCSogeHJlZi5jIChHTlVfeHJlZl9kZWNsKTogTGlrZXdpc2UuCgkKMTk5OS0wOC0xMCAgTWFydGluIHYuIExvZXdpcyAgPG1hcnRpbkBtaXJhLmlzZG4uY3MudHUtYmVybGluLmRlPgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBSZW1vdmUgdW5uZWNlc3NhcnkgbG9va3VwIG9mIGNsYXNzIGZpZWxkLgoKMTk5OS0wOC0wOSAgTWFydGluIHYuIExvZXdpcyAgPG1hcnRpbkBtaXJhLmlzZG4uY3MudHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAoc2V0X2RlY2xfbmFtZXNwYWNlKTogRG8gbm90IGNvbXBsYWluIGFib3V0IG5vbi1tYXRjaGluZwoJZGVjbHMgaWYgcHJvY2Vzc2luZyBhIHRlbXBsYXRlLgoKMTk5OS0wOC0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfcHRybWVtZnVuY190eXBlKTogSGFuZGxlIHF1YWxpZmllZAoJcG9pbnRlci10by1tZW1iZXIgdHlwZXMgaGVyZS4KCSogdHJlZS5jIChjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogU2ltcGxpZnkgaGFuZGxpbmcgaGVyZS4KCjE5OTktMDgtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxleC5jIChsYW5nX2lkZW50aWZ5KTogTGlrZXdpc2UuCgoxOTk5LTA4LTA5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIE1ha2VmaWxlLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBEb24ndCBpbml0aWFsaXplIERFQ0xfU0FWRURfSU5TTlMgd2l0aAoJTlVMTF9SVFguCgkqIGRlY2wuYzogSW5jbHVkZSAiZnVuY3Rpb24uaCIKCShjbGVhbnVwX2xhYmVsLCByZXR1cm5fbGFiZWwpOiBEZWxldGUgZGVjbGFyYXRpb25zLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiAgRG9uJ3QgaW5pdGlhbGl6ZSBERUNMX1NBVkVEX0lOU05TIHdpdGggTlVMTF9SVFguCgkoZmluaXNoX2Z1bmN0aW9uKTogUmVuYW1lIGxhc3RfcGFybV9pbnNuIHZhcmlhYmxlIHRvCglmbl9sYXN0X3Bhcm1faW5zbi4gIERvbid0IGNvbXBhcmUgREVDTF9TQVZFRF9JTlNOUyB0byBOVUxMX1JUWC4KCSogZGVjbDIuYzogSW5jbHVkZSAiZnVuY3Rpb24uaCIuCgkocnRsX2V4cHJfY2hhaW4pOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIG1ldGhvZC5jOiBJbmNsdWRlICJmdW5jdGlvbi5oIgoJKiB0cmVlLmMgKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogRG9uJ3QgaW5pdGlhbGl6ZQoJREVDTF9TQVZFRF9JTlNOUyB3aXRoIE5VTExfUlRYLgoJKiB0eXBlY2suYzogSW5jbHVkZSAiZnVuY3Rpb24uaCIKCjE5OTktMDgtMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlbWFudGljcy5jIChiZWdpbl9mdW5jdGlvbl90cnlfYmxvY2ssIGZpbmlzaF9mdW5jdGlvbl90cnlfYmxvY2ssCglmaW5pc2hfZnVuY3Rpb25faGFuZGxlcl9zZXF1ZW5jZSk6IE5ldyBmbnMuCgkqIHBhcnNlLnkgKGZ1bmN0aW9uX3RyeV9ibG9jayk6IFVzZSB0aGVtLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaW5fZnVuY3Rpb25fdHJ5X2hhbmRsZXIuCgkqIGRlY2wuYzogRGVmaW5lIGl0LgoJKHN0YXJ0X2Z1bmN0aW9uKTogQ2xlYXIgaXQuCgkoc3RydWN0IGNwX2Z1bmN0aW9uLCBwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBTYXZlIGl0LgoJKHBvcF9jcF9mdW5jdGlvbl9jb250ZXh0KTogUmVzdG9yZSBpdC4KCSogcGFyc2UueSAoZnVuY3Rpb25fdHJ5X2Jsb2NrKTogU2V0IGFuZCBjbGVhciBpdC4KCSogZXhjZXB0LmMgKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBSZXRocm93IGlmIHdlIHJlYWNoIHRoZSBlbmQKCW9mIGEgZnVuY3Rpb24tdHJ5LWJsb2NrIGhhbmRsZXIgaW4gYSBjdG9yIG9yIGR0b3IuCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBDb21wbGFpbiBhYm91dCByZXR1cm5pbmcgZnJvbSBhCglmdW5jdGlvbi10cnktYmxvY2sgaGFuZGxlciBvZiBhIGN0b3IuCgoJKiBwYXJzZS55IChmdW5jdGlvbl90cnlfYmxvY2spOiBDYWxsIGVuZF9wcm90ZWN0X3BhcnRpYWxzCgliZWZvcmUgZXhwYW5kX3N0YXJ0X2FsbF9jYXRjaC4KCjE5OTktMDgtMDggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBBZGQgZWhfcmVnaW9uIGZpZWxkLgoJKHB1c2hfYmluZGluZ19sZXZlbCk6IFNldCBpdC4KCShkZWZpbmVfbGFiZWwpOiBDb21wbGFpbiBhYm91dCBqdW1waW5nIGludG8gYW4gRUggYmxvY2suCgoJKiBwdHJlZS5jIChwcmludF9sYW5nX3R5cGUpOiBQcmludCB0aGUgcmVhbCB0eXBlIG9mIGEgUE1GLgoJUHJpbnQgd2hhdCBleGNlcHRpb25zIGEgZm4gdHlwZSB0aHJvd3MuCgoxOTk5LTA4LTA3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGFzcy5jIChjb3VudF9maWVsZHMsIGFkZF9maWVsZHNfdG9fdmVjKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBjcC10cmVlLmggKG9wbmFtZV90YWIsIGFzc2lnbm9wX3RhYiwgb3BlcmF0b3JfbmFtZV9zdHJpbmcsCglnZXRfaWRfMiwgY29tcG9zaXRlX3BvaW50ZXJfdHlwZSwgZHVtcF9ub2RlX3RvX2ZpbGUpOiBDb25zdGlmeSBhCgljaGFyKi4KCgkqIGRlY2wuYyAobmFtZWRfbGFiZWxfbGlzdCwgY3BfZmluaXNoX2RlY2wsIGdyb2tkZWNsYXJhdG9yKToKCUNvbnN0aWZ5IGEgY2hhciouCgoJKiBkZWNsMi5jIChmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wsIGdyb2tmaWVsZCk6IENvbnN0aWZ5IGEKCWNoYXIqLgoKCSogZHVtcC5jIChxdWV1ZV9hbmRfZHVtcF9pbmRleCwgZHVtcF9pbnQsIGR1bXBfc3RyaW5nLAoJZHVtcF9zdHJpbmdfZmllbGQsIGRlcXVldWVfYW5kX2R1bXAsIGR1bXBfbm9kZV90b19maWxlKTogQ29uc3RpZnkKCWEgY2hhciouCgkoZHVtcF9zdG10KTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBlcnJmbi5jIChjcF90aGluZyk6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBlcnJvci5jIChkdW1wX3VuYXJ5X29wLCBkdW1wX2JpbmFyeV9vcCwgYWdncl92YXJpZXR5LAoJZHVtcF9hZ2dyX3R5cGUsIGR1bXBfZ2xvYmFsX2lvcmQsIGR1bXBfZGVjbCwgZHVtcF9mdW5jdGlvbl9uYW1lLAoJZHVtcF9leHByKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIGxleC5jIChleHRlbmRfdG9rZW5fYnVmZmVyX3RvLCBwcmFnbWFfZ2V0YywgcHJhZ21hX3VuZ2V0YywKCXJlYWRfbGluZV9udW1iZXIpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCShvcG5hbWVfdGFiLCBhc3NpZ25vcF90YWIsIG9wZXJhdG9yX25hbWVfc3RyaW5nKTogQ29uc3RpZnkgYSBjaGFyKi4KCShyZWFsX3l5bGV4KTogTW92ZSBsYWJlbCBgbGV0dGVyJyBpbnRvIHRoZSBzY29wZSB3aGVyZSBpdCBpcyB1c2VkLgoKCSogbWV0aG9kLmMgKGJ1aWxkX21hbmdsZWRfdGVtcGxhdGVfcGFybV9pbmRleCwgYnVpbGRfb3ZlcmxvYWRfaW50LAoJYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsLCBnZXRfaWRfMik6IENvbnN0aWZ5IGEgY2hhciouCgoJKiBzZWFyY2guYyAoY2hlY2tfZmluYWxfb3ZlcnJpZGVyKTogTWFrZSBzdGF0aWMuCgoJKiB0eXBlY2suYyAoY29tcG9zaXRlX3BvaW50ZXJfdHlwZSk6IENvbnN0aWZ5IGEgY2hhciouCgoxOTk5LTA4LTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChtYXliZV9nZXRfdGVtcGxhdGVfZGVjbF9mcm9tX3R5cGVfZGVjbCk6IE1ha2Ugc3VyZSB0aGF0Cgl3ZSdyZSBsb29raW5nIGF0IGEgY2xhc3MuCgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBTZXQgdGhlIGNvbXBsYWluIGZsYWcgaWYgd2UncmUKCWxvb2tpbmcgZm9yIGEgbmFtZXNwYWNlIG1lbWJlci4KCgkqIGxleC5jIChyZWFsX3l5bGV4KTogV2UgY2FuIGhhdmUgYSBudW1iZXIgd2l0aCBubyBkaWdpdHMuCgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogRG9uJ3QgZm9yY2UgcG1mIGNvbnZlcnNpb25zLgoKCSogc2VhcmNoLmMgKGJpbmZvX2Zyb21fdmJhc2UpOiBOZXcgZm4uCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IFVzZSBpdCB0byBkaWFnbm9zZSBjb252ZXJzaW9uCglmcm9tIHBvaW50ZXIgdG8gbWVtYmVyIG9mIHZpcnR1YWwgYmFzZS4gIAoJKiB0eXBlY2suYyAoZ2V0X2RlbHRhX2RpZmZlcmVuY2UpOiBMaWtld2lzZS4KCjE5OTktMDgtMDYgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogcHQuYyAodHN1YnN0KTogVXNlIGJ1aWxkX2luZGV4X3R5cGUgdG8gYnVpbGQgaW4tdGVtcGxhdGUgYXJyYXkKCWluZGV4IHR5cGUuICBGaXhlcyBnKysub2xpdmEvZHdhcmYxLkMuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZSwganVzdCBmb3IgY29uc2lzdGVuY3ksIGFzIGl0Cglkb2Vzbid0IHNlZW0gdG8gdHJpZ2dlciB0aGUgYnVnIHdpdGhvdXQgaXQuCgoxOTk5LTA4LTA2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKGFkZF9leGNlcHRpb25fc3BlY2lmaWVyKTogVXNlIGNvbXBsZXRlX3R5cGUuCgoxOTk5LTA4LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIEVYQUNUX0RJVl9FWFBSLgoJKGR1bXBfYmluYXJ5X29wKTogQnVsbGV0cHJvb2YuCgkqIGxleC5jIChpbml0X3BhcnNlKTogU2V0IG9wbmFtZV90YWJbRVhBQ1RfRElWX0VYUFJdLgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogRG9uJ3QgZW51bWVyYXRlIGFsbCB0aGUgbm9kZXMgb2YgY2xhc3NlcwoJYDEnLCBgMicsIGFuZCBgPCc7IGhhbmRsZSB0aGVtIGdlbmVyaWNhbGx5LiAgRG9uJ3QgYmUgc29ycnkgYWJvdXQKCSJ1bnJlY29nbml6ZWQgdHJlZSBjb2RlcyI7IGp1c3QgYWJvcnQuCgkobm9fbGlua2FnZV9jaGVjayk6IERvbid0IGRvIGxpbmthZ2UgY2hlY2tzIGZvciB0ZW1wbGF0ZXMuCgkKCSogdHJlZS5jIChjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogSGFuZGxlCglwb2ludGVyLXRvLW1lbWJlci1mdW5jdGlvbiB0eXBlcyBjb3JyZWN0bHkuCgoxOTk5LTA4LTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogT25seSBnaXZlIGFuIGVycm9yIGZvciBzaGFkb3dpbmcgYSBwYXJtIAoJZnJvbSAqdGhpcyogZnVuY3Rpb24uCgpUaHUgQXVnICA1IDAyOjQwOjQyIDE5OTkgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHR5cGVjazIuYzogVXBkYXRlIFVSTHMgYW5kIG1haWwgYWRkcmVzc2VzLgoKMTk5OS0wOC0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoZW1wdHlfZXhjZXB0X3NwZWMpOiBOZXcgZ2xvYmFsIHZhci4KCShjb21wZXhjZXB0dHlwZXMpOiBSZW1vdmUgcHJvdG90eXBlLgoJKGNvbXBfZXhjZXB0X3NwZWNzKTogUHJvdG90eXBlIG5ldyBnbG9iYWwgZnVuY3Rpb24uCgkoYWRkX2V4Y2VwdGlvbl9zcGVjaWZpZXIpOiBQcm90b3R5cGUgbmV3IGdsb2JhbCBmdW5jdGlvbi4KCSogZGVjbC5jIChlbXB0eV9leGNlcHRfc3BlYyk6IERlZmluZSBuZXcgZ2xvYmFsIHZhci4KCShkdXBsaWNhdGVfZGVjbHMpOiBVc2UgY29tcF9leGNlcHRfc3BlY3MsIHJld29yZCBlcnJvciBtZXNzYWdlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBlbXB0eV9leGNlcHRfc3BlYy4KCUFkanVzdCBidWlsZF9leGNlcHRpb25fdmFyaWFudCBjYWxscy4KCSogcGFyc2UueSAoZXhjZXB0aW9uX3NwZWNpZmljYXRpb25fb3B0KTogVXNlIGVtcHR5X2V4Y2VwdF9zcGVjLgoJKGFuc2lfcmFpc2VfaWRlbnRpZmllcik6IENhbGwgY2hlY2tfZm9yX25ld190eXBlLgoJKGFuc2lfcmFpc2VfaWRlbnRpZmllcnMpOiBVc2UgYWRkX2V4Y2VwdGlvbl9zcGVjaWZpZXIuCgkqIHB0LmMgKHRzdWJzdCk6IFVzZSBhZGRfZXhjZXB0aW9uX3NwZWNpZmllciB0byBidWlsZCBleGNlcHRpb24KCXNwZWNpZmllci4KCSogc2VhcmNoLmMgKGNoZWNrX2ZpbmFsX292ZXJyaWRlcik6IE5ldyBzdGF0aWMgZnVuY3Rpb24sIGJyb2tlbgoJb3V0IG9mIGdldF9tYXRjaGluZ192aXJ0dWFsLiBDaGVjayB0aHJvdyBzcGVjaWZpZXJzLCByZXdvcmQKCWRpYWdub3N0aWNzLgoJKGdldF9tYXRjaGluZ192aXJ0dWFsKTogVXNlIGNoZWNrX2ZpbmFsX292ZXJyaWRlci4KCSogdHJlZS5jIChidWlsZF9leGNlcHRpb25fdmFyaWFudCk6IFVzZSBjb21wX2V4Y2VwdF9zcGVjcy4KCSogdHlwZWNrLmMgKGNvbXBleGNlcHR0eXBlcyk6IFJlbW92ZS4KCShjb21wX2V4Y2VwdF90eXBlcyk6IE5ldyBzdGF0aWMgZnVuY3Rpb24sIGhlbHBlciBmb3IKCWNvbXBfZXhjZXB0X3NwZWNzLiBDb21wYXJlIHR3byB0eXBlcyBhcyBleGNlcHRpb24gc3BlY2lmaWVycy4KCShjb21wX2V4Y2VwdF9zcGVjcyk6IE5ldyBnbG9iYWwgZnVuY3Rpb24sIGNvbXBhcmUgdHdvIGV4Y2VwdGlvbgoJc3BlY2lmaWVycy4KCShjb21wdHlwZXMpOiBBZGp1c3QgZm9yIGNvbXBfZXhjZXB0X3NwZWNzLgoJKiB0eXBlY2syLmMgKGFkZF9leGNlcHRpb25fc3BlY2lmaWVyKTogTmV3IGdsb2JhbCBmdW5jdGlvbi4KCQoJKiBjbGFzcy5jIChjaGVja19mb3Jfb3ZlcnJpZGUpOiBSZXdvcmQgZXJyb3IgbWVzc2FnZS4KCjE5OTktMDgtMDMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKGNvbnZlcnRfYXJnX3RvX2VsbGlwc2lzKTogVXNlIHBvZF90eXBlX3AuCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmdfdHlwZSk6IEFkZGVkIG5vbl9wb2RfY2xhc3MgZmxhZy4KCShDTEFTU1RZUEVfTk9OX1BPRF9QKTogTmV3IG1hY3JvIHRvIGFjY2VzcyBpdC4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRGV0ZXJtaW5lIG5vbi1QT0RuZXNzLgoJQ2hlY2sgZm9yIGFycmF5cyBvZiBwb2ludGVycyAoLVdlZmZjKyspLgoJUmVtb3ZlIGFycmF5IGluc3BlY3Rpb24gZHVwbGljYXRlZCBjb2RlLgoJKiB0cmVlLmMgKHBvZF90eXBlX3ApOiBEZXRlY3Qgbm9uLXBvZCBub24tYWdncmVnYXRlIHR5cGVzLgoJVXNlIENMQVNTVFlQRV9OT05fUE9EX1AuCgoxOTk5LTA4LTAzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogY2xhc3MuYyAoZHVwbGljYXRlX3RhZ19lcnJvcik6IFByZXNlcnZlIHRlbXBsYXRlIGluZm9ybWF0aW9uLgoKMTk5OS0wOC0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wuYyAoc3RhcnRfZW51bSk6IFNob3cgbG9jYXRpb24gb2YgcHJldmlvdXMgZGVmaW5pdGlvbi4KCSogcGFyc2UueSAoZW51bWxpc3Rfb3B0KTogTmV3IHJlZHVjdGlvbi4KCShzdHJ1Y3RzcCk6IFNpbXBsaWZ5IGVudW0gcnVsZXMgdG8gdXNlIGVudW1saXN0X29wdC4KCjE5OTktMDgtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jICh5eXByaW50KTogSGFuZGxlIFBGVU5DTkFNRS4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlLCBjYXNlIE1FVEhPRF9DQUxMX0VYUFIpOiBPbmx5CglidWlsZF9leHByX2Zyb21fdHJlZSBvbiB0aGUgYXJncyBvZiBhIFRFTVBMQVRFX0lEX0VYUFIuCgoxOTk5LTA4LTAzICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFNldCBhdHRyaWJ1dGVzIGJlZm9yZSBkdXBsaWNhdGVfZGVjbHMgY2FsbC4KCjE5OTktMDgtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKENYWF9TUkNTKTogQWRkIGR1bXAuYy4KCSogTWFrZWZpbGUuaW4gKENYWF9PQkpTKTogQWRkIGR1bXAuby4KCShkdW1wLm8pOiBOZXcgdGFyZ2V0LgoJKiBjcC10cmVlLmggKERFQ0xfQ09OVl9GTl9QKTogRG9jdW1lbnQuCgkoREVDTF9PVkVSTE9BREVEX09QRVJBVE9SX1ApOiBOZXcgZnVuY3Rpb24uCgkoVFlQRV9QVFJNRU1fQ0xBU1NfVFlQRSk6IE5ldyBtYWNyby4KCShUWVBFX1BUUk1FTV9QT0lOVEVEX1RPX1RZUEUpOiBMaWtld2lzZS4KCShQVFJNRU1fQ1NUX0NMQVNTKTogVXNlIFRZUEVfUFRSTUVNX0NMQVNTX1RZUEUuCgkoQVNNX1ZPTEFUSUxFX1ApOiBOZXcgbWFjcm8uCgkoU1RNVF9MSU5FTk8pOiBMaWtld2lzZS4KCShjcF9uYW1lc3BhY2VfZGVjbHMpOiBOZXcgZnVuY3Rpb24uCgkoZHVtcF9ub2RlX3RvX2ZpbGUpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoY3BfbmFtZXNwYWNlX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKHdhbGtfbmFtZXNwYWNlc19yKTogVXNlIGl0LgoJKHdyYXB1cF9nbG9iYWxzX2Zvcl9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZmxhZ19kdW1wX3RyYW5zbGF0aW9uX3VuaXQpOiBOZXcgdmFyaWFibGUuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1mZHVtcC10cmFuc2xhdGlvbi11bml0LgoJKGZpbmlzaF9maWxlKTogSWYgZmxhZ19kdW1wX3RyYW5zbGF0aW9uX3VuaXQgaXMgc2V0LCBkdW1wIHRoZQoJdHJhbnNsYXRpb24gdW5pdC4KCSogZHVtcC5jOiBOZXcgZmlsZS4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZmR1bXAtdHJhbnNsYXRpb24tdW5pdC4KCSogcHQuYyAodHN1YnN0X3RlbXBsYXRlX3Bhcm1zKTogUm9idXN0aWZ5LgoJKHRzdWJzdF9kZWNsKTogVXNlIERFQ0xfT1ZFUkxPQURFRF9PUEVSQVRPUl9QLgoJKHRzdWJzdF9leHByKTogVXNlIFNUTVRfTElORU5PLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogRWxpbWluYXRlIGR1cGxpY2F0ZSBjb2RlLiAgQ2hlY2sKCWZvciBpbnZhbGlkIGN2LXF1YWxpZmllcnMgZXZlbiB3aGlsZSBidWlsZGluZyB0ZW1wbGF0ZXMuCgkKMTk5OS0wOC0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNhbGwuYzogSW5jbHVkZSBkZWZhdWx0cy5oIGluc3RlYWQgb2YgZXhwci5oLgoJKiBkZWNsLmM6IExpa2V3aXNlLgoJKiBwdC5jOiBMaWtld2lzZS4KCSogdHlwZWNrLmM6IEluY2x1ZGUgZGVmYXVsdHMuaC4KCjE5OTktMDgtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsZXguYyAoZXJyb3Jjb3VudCwgc29ycnljb3VudCk6IERvbid0IGRlY2xhcmUuCgkqIHJlcG8uYyAoZXJyb3Jjb3VudCwgc29ycnljb3VudCk6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKGVycm9yY291bnQsIHNvcnJ5Y291bnQpOiBMaWtld2lzZS4KCjE5OTktMDgtMDIgIEpha3ViIEplbGluZWsgIDxqakB1bHRyYS5saW51eC5jej4KCgkqIGNhbGwuYyAoY29udmVydF9kZWZhdWx0X2FyZywgYnVpbGRfb3Zlcl9jYWxsKTogQ2hhbmdlIGFsbCB1c2VzIG9mCglQUk9NT1RFX1BST1RPVFlQRVMsIHNvIHRoYXQgaXQgdGVzdHMgaXQgYXMgYSBDIGV4cHJlc3Npb24uCglFbnN1cmUgZXhwci5oIGlzIGluY2x1ZGVkLgoJKiBkZWNsLmMgKGdyb2twYXJhbXMpOiBEaXR0by4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBEaXR0by4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogRGl0dG8uCgoxOTk5LTA4LTAyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChtYXJrX292ZXJyaWRlcnMpOiBGaXggb3JkZXIgb2YgYXJncyB0byBvdmVycmlkZXMuCgkod2Fybl9oaWRkZW4pOiBMaWtld2lzZS4gIEZpeCBmb3IgaGF2aW5nIHZpcnR1YWwgYW5kIG5vbi12aXJ0dWFsCglmdW5jdGlvbnMgd2l0aCB0aGUgc2FtZSBuYW1lLgoKMTk5OS0wOC0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoVFlQRV9QVFJNRU1GVU5DX1ApOiBDaGVjayBUWVBFX0xBTkdfU1BFQ0lGSUMgbm9uLW51bGwuCgoxOTk5LTA4LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogRml4IHR5cG8gaW4gY29tbWVudC4KCjE5OTktMDgtMDEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogZGVjbC5jIChmaW5pc2hfc3RtdCk6IERvbid0IGRlY2xhcmUgYW5kIHRlc3QgY29uZF9zdGFjaywgbG9vcF9zdGFjaywKCWNhc2Vfc3RhY2s7IHVzZSBpbl9jb250cm9sX3pvbmVfcC4KCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IExpa2V3aXNlLgoKMTk5OS0wNy0zMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0BjeWdudXMuY28udWs+CgoJKiBleGNlcHQuYyAoY2F0Y2hfY2xhdXNlcyk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCjE5OTktMDctMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBDYWxsIGNvbnZlcnRfZnJvbV9yZWZlcmVuY2UgdG8KCWF2b2lkIHJlZmVyZW5jZS9ub24tcmVmZXJlbmNlIHR5cGUgY29uZnVzaW9uLiAgRml4IHR5cG8uCgoxOTk5LTA3LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogTW92ZWQgdG8gYy1jb21tb24uYy4KCSogY3AtdHJlZS5oIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogUmVtb3ZlLgoKMTk5OS0wNy0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoY29uZGl0aW9uYWxfY29udmVyc2lvbik6IERvbid0IGJ1aWxkIEJBU0VfQ09OVnMgZm9yCgljb252ZXJzaW9ucyBiZXR3ZWVuIHRoaW5ncyB0aGF0IGhhdmUgdGhlIHNhbWUgdHlwZS4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogVHdlYWsuCgkoY29udmVydF9saWtlKTogU29tZSBCQVNFX0NPTlZzIHJlYWxseSBkbyByZXF1aXJlIHRoZSBnZW5lcmF0aW9uCglvZiBjb2RlLgoJCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IERvbid0IGdvIHRocm91Z2ggYnVpbGRfbW9kaWZ5X2V4cHIKCWZvciBzaW1wbGUgaW5pdGlhbGl6YXRpb25zLgoKMTk5OS0wNy0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX1ZJUlRVQUxfQ09OVEVYVCk6IE5ldyBtYWNyby4KCSogdHlwZWNrLmMgKGV4cGFuZF9wdHJtZW1mdW5jX2NzdCk6IENhbGN1bGF0ZSBkZWx0YSBjb3JyZWN0bHkgZm9yCgl2aXJ0dWFsIGZ1bmN0aW9ucyBhbmQgTUkuICBTaW1wbGlmeS4KCgkqIG1ldGhvZC5jOiBSZW1vdmUgcHJvdG90eXBlIGZvciBsYXJnZXN0X3VuaW9uX21lbWJlci4KCSogcHQuYyAoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogRml4IHVuaW5pdGlhbGl6ZWQgd2FybmluZy4KCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBMaWtld2lzZS4KCjE5OTktMDctMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChvdmVycmlkZV9vbmVfdnRhYmxlKTogQWRqdXN0IHRoZSB1c2Ugb2YgQklORk9fVklSVFVBTFMKCWhlcmUgdG9vLgoKCSogY3AtdHJlZS5oIChCSU5GT19WSVJUVUFMUyk6IERvY3VtZW50IG5ldyBmb3JtYXQuCgkqIGNsYXNzLmMgKG1vZGlmeV9vbmVfdnRhYmxlKTogQ2hhbmdlIHByb3RvdHlwZSBhY2NvcmRpbmdseS4KCShtb2RpZnlfYWxsX3Z0YWJsZXMpOiBMaWtld2lzZS4KCShtb2RpZnlfYWxsX2RpcmVjdF92dGFibGVzKTogTGlrZXdpc2UuCgkobW9kaWZ5X2FsbF9pbmRpcmVjdF92dGFibGVzKTogTGlrZXdpc2UuCgkoYnVpbGRfdnRhYmxlX2VudHJ5X2Zvcl9mbik6IE5ldyBmdW5jdGlvbi4KCShzZXRfcnR0aV9lbnRyeSk6IFNpbXBsaWZ5IGZvciBuZXcgQklORk9fVklSVFVBTFMgZm9ybWF0LgoJKG1vZGlmeV92dGFibGVfZW50cnkpOiBMaWtld2lzZS4KCShhZGRfdmlydHVhbF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3Z0YmxzKTogU2ltcGxpZnkgZm9yIG5ldyBCSU5GT19WSVJUVUFMUyBmb3JtYXQuCgkoZml4dXBfdnRhYmxlX2RlbHRhczEpOiBMaWtld2lzZS4KCShmaXh1cF92dGFibGVfZGVsdGFzKTogTGlrZXdpc2UuCgkob3ZlcnJpZGVfb25lX3Z0YWJsZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChnZXRfYWJzdHJhY3RfdmlydHVhbHNfMSk6IExpa2V3aXNlLgoJKGdldF9hYnN0cmFjdF92aXJ0dWFscyk6IExpa2V3aXNlLgoJKGV4cGFuZF91cGNhc3RfZml4dXBzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoZGVidWdfYmluZm8pOiBMaWtld2lzZS4KCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IERvbid0IGJhc2ggYWJzdHJhY3QgdmlydHVhbHMgdG8KCV9fcHVyZV92aXJ0dWFsIGhlcmUuCgkKMTk5OS0wNy0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfbmV3KTogQWRqdXN0IGNhbGwgdG8gYWJzdHJhY3RfdmlydHVhbHNfZXJyb3IKCWFzIHBlciAxOTk5LTA3LTI2IGNoYW5nZS4KCgkqIHR5cGVjay5jIChjX3NpemVvZik6IERvbid0IGFsbG93IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXJzLgoJKGV4cHJfc2l6ZW9mKTogTGlrZXdpc2UuCgoxOTk5LTA3LTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbnB1dC5jIChmZWVkX2lucHV0KTogT25seSB0b3VjaCBsaW5lbm8gYW5kIGlucHV0X2ZpbGVuYW1lCglpZiAhVVNFX0NQUExJQi4gIFNhdmUgdGhlIG9sZCB2YWx1ZXMgYmVmb3JlIHNldHRpbmcgdGhlIG5ldyBvbmVzLgoKCSogaW5wdXQuYyAoZmVlZF9pbnB1dCk6IEFkZCBmaWxlLCBsaW5lIHBhcm1zLgoJKiBsZXguYyAoYmVnaW5fZGVmaW5pdGlvbl9vZl9pbmNsYXNzX2lubGluZSwgZmVlZF9kZWZhcmcpOiBBZGp1c3QuCgkocmVhbF95eWxleCk6IENoZWNrIGxpbmVtb2RlIGJlZm9yZSBpbnB1dF9yZWRpcmVjdGVkKCkuCgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogRG93bmdyYWRlIHBlZHdhcm4gYWJvdXQgcmV0dXJuaW5nIE5VTEwKCWZyb20gb3AgbmV3IHRvIHdhcm5pbmcuCgoxOTk5LTA3LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChuY3BfY29udmVydCk6IFJlbmFtZSB0byBwZXJmb3JtX2ltcGxpY2l0X2NvbnZlcnNpb24uCgkqIGNhbGwuYzogQWxsIHVzZXMgY2hhbmdlZC4KCSogdHlwZWNrLmM6IExpa2V3aXNlLgoKMTk5OS0wNy0yNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGV4Y2VwdGlvbi5jYyAoX19jcGx1c190eXBlX21hdGNoZXIpOiBNYXRjaCBfX2VoX21hdGNoZXIKCXByb3RvdHlwZS4KCjE5OTktMDctMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENQX0lOVEVHUkFMX1RZUEVfUCk6IE5ldyBtYWNyby4KCShBUklUSE1FVElDX1RZUEVfUCk6IEFkanVzdCBkZWZpbml0aW9uIGZvciBzdGFuZGFyZCBjb25mb3JtYW5jZS4KCShzdHJpcF90b3BfcXVhbHMpOiBEZWNsYXJlLgoJKG5jcF9jb252ZXJ0KTogTGlrZXdpc2UuCgkodHlwZV9hZnRlcl91c3VhbF9hcml0aG1ldGljX2NvbnZlcnNpb25zKTogTGlrZXdpc2UuCgkoY29tcG9zaXRlX3BvaW50ZXJfdHlwZSk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKHN0cmlwX3RvcF9xdWFscyk6IERvbid0IG1ha2UgaXQgc3RhdGljLgoJKHByb21vdGVkX2FyaXRobWV0aWNfdHlwZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGNvbmRpdGlvbmFsX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShudWxsX3B0cl9jc3RfcCk6IEFsbG93IGBmYWxzZScgYXMgYSBOVUxMIHBvaW50ZXIgY29uc3RhbnQuCgkoc3RhbmRhcmRfY29udmVyc2lvbik6IFVzZSBzYW1lX3R5cGVfcC4gIERvbid0IGJ1aWxkIEJBU0VfQ09OVnMKCWZvciBjb252ZXJ0aW5nIGEgdHlwZSB0byBpdHNlbGYuCgkocmVmZXJlbmNlX2JpbmRpbmcpOiBIb25vciBMT09LVVBfTk9fVEVNUF9CSU5ELgoJKGltcGxpY2l0X2NvbnZlcnNpb24pOiBNYWtlIHN1cmUgdGhlIGZyb20gYW5kIHRvIHR5cGVzIGFyZQoJY29tcGxldGUuCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlKTogQ29ycmVjdCBoYW5kbGluZyBvZiA/OiBvcGVyYXRvci4KCShhZGRfYnVpbHRpbl9jYW5kaWRhdGVzKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkoY2FuX2NvbnZlcnQpOiBJbXBsZW1lbnQgaW4gdGVybXMgb2YgY2FuX2NvbnZlcnRfYXJnLgoJKG5jcF9jb252ZXJ0KTogTmV3IGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAodHlwZV9hZnRlcl91c3VhbF9hcml0aG1ldGljX2NvbnZlcnNpb25zKTogTmV3CglmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gY29tbW9uX3R5cGUuCgkoY29tcG9zaXRlX3BvaW50ZXJfdHlwZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCWJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIuCgkoY29tbW9uX3R5cGUpOiBVc2UgdHlwZV9hZnRlcl91c3VhbF9hcml0aG1ldGljX2NvbnZlcnNpb25zLgoJUmVtb3ZlIHJlZHVuZGFudCBhdHRyaWJ1dGUgbWVyZ2luZy4KCShjb21wdHlwZXMpOiBUaWR5LiAgSGFuZGxlIENPTVBMRVhfVFlQRS4KCShidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogVXNlIG51bGxfcHRyX2NzdF9wLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBSZW1vdmUuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IFVzZSBuZXcgY29udmVyc2lvbiBmdW5jdGlvbnMuCgkKCSogY3AtdHJlZS5oIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IENoYW5nZSBkZWNsYXJhdGlvbi4KCSogdHlwZWNrMi5jIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IENoZWNrIHRvIHNlZSBpZiBhbiBlcnJvcgoJb2NjdXJyZWQsIGFuZCByZXR1cm4gYSBib29sZWFuIHZhbHVlIGFjY29yZGluZ2x5LgoJKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkqIGN2dC5jIChvY3BfY29udmVydCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkoZ3Jva3BhcmFtcyk6IExpa2V3aXNlLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBMaWtld2lzZS4KCgkqIHB0LmMgKHVuaWZ5KTogRG9uJ3QgZ2V0IGNvbmZ1c2VkIGJ5IHBvaW50ZXJzLXRvLW1lbWJlciBmdW5jdGlvbnMuCgoJKiBzZWFyY2guYyAoYnVpbGRfY3BsdXNfbmV3KTogUm9idXN0aWZ5LgoJCjE5OTktMDctMjQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBneHguZ3BlcmYgKF9fYnVpbHRpbl92YV9hcmcpOiBOZXcuCgkqIHBhcnNlLnkgKFZBX0FSRyk6IE5ldyB0b2tlbi4KCSh1bmFyeV9leHByKTogUmVjb2duaXplIGl0LgoKU3VuIEp1bCAyNSAxNToyNDoyMSAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBnKytGQVEudGV4aTogRGVsZXRlZCBwZXIgSm9lIEJ1Y2sncyByZXF1ZXN0LgoJKiBNYWtlZmlsZS5pbjogQ29ycmVzcG9uZGluZyBjaGFuZ2VzLgoKMTk5OS0wNy0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmM6IFN5bmMgd2l0aCBDIGZyb250ZW5kLgoJKHdoaXRlc3BhY2VfY3IpOiBOZXcgZm4uCgkoc2tpcF93aGl0ZV9zcGFjZSk6IFVzZSBpdC4KCShpbml0X3BhcnNlKTogUmVvcmRlci4KCSh5eXByaW50KTogU3VwcG9ydCBDT05TVEFOVC4KCShwcmFnbWFfZ2V0YywgcHJhZ21hX3VuZ2V0Yyk6IEJyaW5nIGJhY2suCgkocmVhZF9saW5lX251bWJlcik6IENoYW5nZSBpbl9zeXN0ZW1faGVhZGVyIGRpcmVjdGx5LgoJKGhhbmRsZV9nZW5lcmljX3ByYWdtYSwgaGFuZGxlX2NwX3ByYWdtYSwgeXllcnJvcik6IE1vdmUgdXAgaW4gZmlsZS4KCShwYXJzZV9mbG9hdCk6IFVwZGF0ZSB0byBDIHZlcnNpb24uCgkoeXlsZXgpOiBIYW5kbGUgJyQnIHVuZGVyIHRoZSBsZXR0ZXIgY2FzZS4KCVJlbW92ZSBsb29raW5nX2Zvcl90eXBlbmFtZSBoYW5kbGluZy4KCVN1cHBvcnQgaGV4IGZsb2F0aW5nIHBvaW50IGNvbnN0YW50cy4KCUZvbGxvdyBDJ3MgbGVhZCBmb3IgY2hvb3NpbmcgdHlwZSBvZiBpbnRlZ2VyIGNvbnN0YW50cy4KCVJlYXJyYW5nZSBzdHVmZiB0byBtYXRjaCBDIGZyb250ZW5kLgoJKHl5dW5nZXRjLCByZWluaXRfcGFyc2VfZm9yX2Jsb2NrLCB5eWxleCk6IFN1cHBvcnQgaW5kZW50X2xldmVsLgoJKiBzcGV3LmMgKHl5bGV4KTogQ2xlYXIgbG9va2luZ19mb3JfdHlwZW5hbWUgaWYgd2Ugc2VlIGEgVFlQRVNQRUMuCgoxOTk5LTA3LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChyZWZlcmVuY2VfYmluZGluZyk6IFR3ZWFrLgoJKG1heWJsZV9oYW5kbGVfaW1wbGljaXRfb2JqZWN0KTogVXNlIGRpcmVjdF9yZWZlcmVuY2VfYmluZGluZyB0bwoJY3JlYXRlIHRoZSByaWdodCBpbXBsaWNpdCBjb252ZXJzaW9uIHNlcXVlbmNlLgoKMTk5OS0wNy0yMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IERvbid0IGNhbGwgZGVjbF9jb25zdGFudF92YWx1ZQoJaWYgd2UncmUgY29udmVydGluZyB0byBhIHJlZmVyZW5jZSB0eXBlLgoKCSogY2FsbC5jIChORUVEX1RFTVBPUkFSWV9QKTogTmV3IG1hY3JvLgoJKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBTZXQgaXQsIGZvciBkZXJpdmVkLXRvLWJhc2UgY29udmVyc2lvbnMuCgkocmVmZXJlbmNlX3JlbGF0ZWRfcCk6IE5ldyBmdW5jdGlvbi4KCShyZWZlcmVuY2VfY29tcGF0aWJsZV9wKTogTGlrZXdpc2UuCgkoY29udmVydF9jbGFzc190b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCShkaXJlY3RfcmVmZXJlbmNlX2JpbmRpbmcpOiBMaWtld2lzZS4KCShyZWZlcmVuY2VfYmluZGluZyk6IFJld29yayBmb3Igc3RhbmRhcmRzLWNvbXBsaWFuY2UuCgkoY29udmVydF9saWtlKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKG1heWJlX2hhbmRsZV9yZWZfYmluZCk6IFNpbXBsaWZ5OyB0aGUgcmlnaHQgY29udmVyc2lvbiBzZXF1ZW5jZXMKCWFyZSBub3cgYnVpbHQgdXAgaW4gcmVmZXJlbmNlX2JpbmRpbmcuCgkoaW5pdGlhbGl6ZV9yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24uCgkqIGNwLXRyZWUuaCAoSUNTX1VTRVJfRkxBRyk6IERvY3VtZW50LgoJKElDU19USElTX0ZMQUcpOiBMaWtld2lzZS4KCShJQ1NfQkFEX0ZMQUcpOiBMaWtld2lzZS4KCShORUVEX1RFTVBPUkFSWV9QKTogTGlrZXdpc2UuCgkoY3BfbHZhbHVlX2tpbmQpOiBOZXcgdHlwZS4KCShyZWFsX2x2YWx1ZV9wKTogUmV0dXJuIGl0LgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBQcm92aWRlIG1vcmUgYWNjdXJhdGUgcmVwcmVzZW50YXRpb24gZm9yCglBR0dSX0lOSVRfRVhQUnMuCgkqIGluaXQuYyAoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IERvIG5vdCB0cnkgdG8gcGVyZm9ybSBpbXBsaWNpdAoJY29udmVyc2lvbnMgZm9yIGEgYnJhY2UtZW5jbG9zZWQgaW5pdGlhbGl6ZXIuCgkqIHNlYXJjaC5jIChsb29rdXBfY29udmVyc2lvbnMpOiBEb2N1bWVudC4KCSogdHJlZS5jIChsdmFsdWVfcF8xKTogUmV0dXJuIGEgY3BfbHZhbHVlX2tpbmQuICBDYWxjdWxhdGUKCWFwcHJvcHJpYXRlbHkuCgkocmVhbF9sdmFsdWVfcCk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShsdmFsdWVfcCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NwbHVzX25ldyk6IERvbid0IGFsbG93IHRoZSBjcmVhdGlvbiBvZiBhbiBhYnN0cmFjdCBjbGFzcy4KCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogVXNlIGluaXRpYWxpemVfcmVmZXJlbmNlLgoJCjE5OTktMDctMjEgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogbGV4LmMgKHJlYWxfeXlsZXgpIDogQ29ycmVjdCB0aGUgdGVzdCBmb3Igb3ZlcmZsb3cgd2hlbiBsZXhpbmcKCWludGVnZXIgbGl0ZXJhbHMuCgoxOTk5LTA3LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHdhcm5fZXh0ZXJuX3JlZGVjbGFyZWRfc3RhdGljKTogQ2hlY2sgREVDTF9BUlRJRklDSUFMLAoJbm90IERFQ0xfQlVJTFRfSU4sIHRvIGRldGVybWluZSBpZiBhIGZ1bmN0aW9uIGlzIGludGVybmFsbHkgZGVjbGFyZWQuCgkoZHVwbGljYXRlX2RlY2xzKTogTGlrZXdpc2UuICBJbXByb3ZlIGhhbmRsaW5nIG9mIGJ1aWx0aW5zLgoJKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgb2YgYnVpbHRpbnMuCgoJKiBjcC10cmVlLmggKEFOT05fQUdHUl9UWVBFX1ApOiBVc2UgQ0xBU1NfVFlQRV9QLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFB1bGwgb3V0IGRlY2xfY29uc3RhbnRfdmFsdWUgaW4KCXRlbXBsYXRlcywgdG9vLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCwgZmluaXNoX3N0cnVjdF8xKTogUmVtb3ZlICd3YXJuX2Fub24nIHBhcm0uCgkqIGNwLXRyZWUuaCwgcHQuYywgc2VtYW50aWNzLmM6IEFkanVzdC4KCSogbWV0aG9kLmMgKGxhcmdlc3RfdW5pb25fbWVtYmVyKTogUmVtb3ZlLgoKCSogbGFuZy1zcGVjcy5oIChjKystY3BwLW91dHB1dCk6IFBhc3MgLWZwcmVwcm9jZXNzZWQuCgoJKiBsZXguYyAodG9rZW5fZ2V0Y2gsIHRva2VuX3B1dF9iYWNrKTogTmV3IGZucy4KCShyZWFsX3l5bGV4KTogVXNlIHRoZW0uCgoJKiBsZXguYyAobGFuZ19pbml0KTogR2VuZXJhbGl6ZS4KCShsYW5nX2luaXRfb3B0aW9ucyk6IFRlbGwgY3BwbGliIHRoaXMgaXMgQysrLgoJKG5leHRjaGFyKTogUmVtb3ZlLiAgUmVwbGFjZSB1c2VzIHdpdGggcHV0X2JhY2suCgkoc2tpcF93aGl0ZV9zcGFjZSk6IEhhbmRsZSBsaW5lbW9kZSBoZXJlLiAgT3B0aW1pemUgZm9yIGNwcGxpYi4KCShleHRlbmRfdG9rZW5fYnVmZmVyX3RvKTogTmV3IGZuLgoJKGV4dGVuZF90b2tlbl9idWZmZXIpOiBVc2UgaXQuCgkocmVhZF9saW5lX251bWJlciwgY2hlY2tfbmV3bGluZSk6IEp1c3QgZGVhbCB3aXRoIHRva2Vucy4KCShyZWFsX3l5bGV4KTogTW9yZSBjcHBsaWIgb3B0aW1pemF0aW9ucy4gIFNpbXBsaWZ5LiAgRG9uJ3QgcHJvZHVjZQoJRVhURVJOX0xBTkdfU1RSSU5HLCBMRUZUX1JJR0hUIG9yIFBBUkVOX1NUQVJfUEFSRU4gaGVyZS4KCSogc3Bldy5jICh5eWxleCk6IFByb2R1Y2UgTEVGVF9SSUdIVCBhbmQgRVhURVJOX0xBTkdfU1RSSU5HLgoJKiBwYXJzZS55IChQQVJFTl9TVEFSX1BBUkVOKTogUmVtb3ZlLgoJKiBpbnB1dC5jOiBEb24ndCB1c2UgdGhlIHB1dGJhY2sgbWFjaGluZXJ5IHdpdGggY3BwbGliLgoJKHN1Yl9nZXRjaCk6IEZvbGQgYmFjayBpbnRvIGdldGNoLgoJKGdldGNoKTogRG9uJ3QgaGFuZGxlIGxpbmVtb2RlIGhlcmUuCgkoZmVlZF9pbnB1dCk6IFVuZ2V0IGFueSB0ZXh0IGluIHRoZSB0b2tlbiBidWZmZXIuCgoJKiBsZXguYwkoc2V0X3R5cGVkZWNsX2ludGVyZmFjZV9pbmZvLCBzZXRfdmFyZGVjbF9pbnRlcmZhY2VfaW5mbywKCW5leHR5eWNoYXIsIG5leHR5eWx2YWwpOiBSZW1vdmUuCgoxOTk5LTA3LTIwICBNaWNoYWVsIFRpZW1hbm4gIDx0aWVtYW5uQGhvbG9kZWNrLmN5Z251cy5jb20+CgkgICAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKGluZGVudF9sZXZlbCk6IE5ldyB2YXJpYWJsZS4KCShpbml0X3BhcnNlKTogU2V0IGNwcF90b2tlbiB0byBDUFBfRElSRUNUSVZFLgoJKGNvbnN1bWVfc3RyaW5nKTogTWFrZSB0aGlzIHNtYXJ0IGFib3V0IFVTRV9DUFBMSUIuCgkoeXl1bmdldGMpOiBVc2UgcHV0X2JhY2sgZnVuY3Rpb24uCgkocHJhZ21hX2dldGMsIHByYWdtYV91bmdldGMpOiBGdW5jdGlvbnMgZGVsZXRlZC4KCShjaGVja19uZXdsaW5lKTogUmV3cml0ZSB0byBiZSBpbnRlbGxpZ2VudCBhYm91dCBVU0VfQ1BQTElCLgoJQWxzbywgY2FsbCBIQU5ETEVfUFJBR01BIHdpdGggZ2V0Y2gsIHl5dW5nZXRjLCBub3QgcHJhZ21hX2dldGMgYW5kCglwcmFnbWFfdW5nZXRjLgoJKHJlYWxfeXlsZXgpOiBSZXdyaXRlIHRvIGJlIGludGVsbGlnZW50IGFib3V0IFVTRV9DUFBMSUIuCglBbHNvLCBjbGVhbiB1cCBjYXNlcyB3aGVyZSB3ZSByZWR1bmRhbnRseSBzZXQgdG9rZW5fYnVmZmVyWzBdLgoJKHJlYWRfbGluZV9udW1iZXIpOiBOZXcgZm4uCgkqIGlucHV0LmMgKGZlZWRfaW5wdXQpOiBVc2UgaW50ZWdyYXRlZCBjcHBsaWIgaWYgVVNFX0NQUExJQi4KCShlbmRfaW5wdXQpOiBDYWxsIGNwcF9wb3BfYnVmZmVyIGlmIFVTRV9DUFBMSUIuCgkoc3ViX2dldGNoKTogQ29uZGl0aW9uYWxpemUgb3V0IGNvZGUgdGhhdCdzIG5vdCBhcHByb3ByaWF0ZSBpZgoJVVNFX0NQUExJQi4KCShwdXRfYmFjayk6IFJld3JpdGUgaW4gY2FzZSBVU0VfQ1BQTElCIGlzIGRlZmluZWQuCgkoaW5wdXRfcmVkaXJlY3RlZCk6IERpdHRvLgoKVHVlIEp1bCAyMCAxMToyNDoxOSAxOTk5ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGNwLXRyZWUuaDogRGVsZXRlIGxvdHMgb2YgZGVjbGFyYXRpb25zIG9mIHRyZWUgbm9kZXM7IHJlcGxhY2VkIGJ5CgljX2dsb2JhbF90cmVlcyBhbmQgYWNjZXNzb3IgbWFjcm9zIGRlZmluZWQgaW4gYy1jb21tb24uaC4KCShjcF90cmVlX2luZGV4KTogTmV3IGVudW1lcmF0aW9uLgoJKGNwX2dsb2JhbF90cmVlcyk6IERlY2xhcmUgbmV3IGFycmF5LiAgQWRkIGFjY2Vzc29yIG1hY3JvcyBmb3IgaXQsIGFuZAoJZGVsZXRlIGRlY2xhcmF0aW9ucyBvZiB0cmVlIG5vZGVzIHJlcGxhY2VkIGJ5IGl0LgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBEZWxldGUgbWFjcm8sIGFkZCBkZWNsYXJhdGlvbiBmb3IgbmV3IGZ1bmN0aW9uLgoJSW5jbHVkZSBjLWNvbW1vbi5oLgoJKiBkZWNsLmM6IERlbGV0ZSBkZWZpbml0aW9ucyBmb3IgdHJlZSBub2RlcyB0aGF0IHdlcmUgcmVwbGFjZWQgYnkKCWNwX2dsb2JhbF90cmVlcyBhbmQgY19nbG9iYWxfdHJlZXMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGluczsgZGVsZXRlIGNvZGUKCXRvIGdlbmVyYXRlIHRoZSBjb21tb24gYnVpbHRpbnMgaGVyZS4KCShidWlsdGluX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsMi5jIChhYm9ydF9mbmRlY2wpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIGV4Y2VwdC5jIChleHBhbmRfYnVpbHRpbl9yZXR1cm5fYWRkcmVzcyk6IERlbGV0ZSBkZWNsYXJhdGlvbi4KCShidWlsdGluX3JldHVybl9hZGRyZXNzX2ZuZGVjbCk6IERlbGV0ZSB2YXJpYWJsZS4KCShjb25zdF9wdHJfdHlwZV9ub2RlKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKiBsZXguYyAoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogRGVsZXRlIGRlY2xhcmF0aW9uIG9mCgl2b2lkX2xpc3Rfbm9kZS4KCSogcGFyc2UueSAodm9pZF9saXN0X25vZGUpOiBEZWxldGUgZGVjbGFyYXRpb24uCgkqIHJ0dGkuYyAodHlwZV9pbmZvX3R5cGVfbm9kZSwgdGluZm9fZm5faWQsIHRpbmZvX2ZuX3R5cGUpOgoJRGVsZXRlIHZhcmlhYmxlcy4KCShjb25zdF9zdHJpbmdfdHlwZV9ub2RlKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKiBzZWFyY2guYyAoYWJvcnRfZm5kZWNsKTogRGVsZXRlIGRlY2xhcmF0aW9uLgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIGRlcGVuZGVuY2llcy4KCjE5OTktMDctMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChjaGVja19kZWZhdWx0X3RtcGxfYXJncyk6IE1vdmUgdGVzdCBmb3IgbWlzc2luZyBkZWZhdWx0Cglhcmd1bWVudHMgaGVyZSwgZnJvbSAuLi4KCShlbmRfdGVtcGxhdGVfcGFybV9saXN0KTogSGVyZS4KCjE5OTktMDctMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uZXN0ZWRfdHlwZSk6IFJlbW92ZS4KCShwdXNodGFnKTogRG9uJ3QgY2FsbCBpdC4KClNhdCBKdWwgMTcgMjM6NTE6MzAgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKElOVEVSRkFDRSk6IEJ1bXAgdG8gMi4KCjE5OTktMDctMTcgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoJCgkqIHR5cGVjazIuYyAobXlfZnJpZW5kbHlfYWJvcnQpOiBVcGRhdGVkIFVSTCB3aXRoIGJ1ZyByZXBvcnRpbmcKCWluc3RydWN0aW9ucyB0byBnY2MuZ251Lm9yZy4gIFJlbW92ZWQgZS1tYWlsIGFkZHJlc3MuCgoxOTk5LTA3LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogVGlnaHRlbiBlcnJvci1jaGVja2luZy4KCShlbmRfdGVtcGxhdGVfcGFybV9saXN0KTogTGlrZXdpc2UuCgoxOTk5LTA3LTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoY2hlY2tfZGVmYXVsdF90bXBsX2FyZ3MpOiBIYW5kbGUgZnJpZW5kcyBkZWZpbmVkIGluIHRoZQoJY2xhc3MganVzdCBsaWtlIG1lbWJlciBmdW5jdGlvbnMgZGVmaW5lZCBpbiB0aGUgY2xhc3MuCgoxOTk5LTA3LTA5ICBNaWNoYWVsIFRpZW1hbm4gIDx0aWVtYW5uQGhhcHB5LmN5Z251cy5jb20+CgkgICAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsKTogQWRkZWQgZmllbGQgZm9yIHN0b3Jpbmcgc29ydGVkCglGSUVMRF9ERUNMcyAodXNlZCBpbiBUWVBFX0RFQ0xzKS4KCShERUNMX1BFTkRJTkdfSU5MSU5FX0lORk8pOiBBZGp1c3RlZCB0byB1c2UgJ3UnIHVuaW9uLgoJKERFQ0xfU09SVEVEX0ZJRUxEUyk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAobWV0aG9kX25hbWVfY21wKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IE1vZGlmaWVkIHRvIHN1cHBvcnQgc29ydGluZyBhbmQgc2VhcmNoaW5nCgltZXRob2RzLgoJKGZpbmlzaF9zdHJ1Y3RfYW5vbik6IENoYW5nZWQgY29kZSBpbiBpbm5lciBsb29wIHRvIHVzZSBFTFQgcmF0aGVyIAoJdGhhbiBVRUxUICh3aGljaCByZXF1aXJlZCBhbiBleHRyYSBpbmRpcmVjdGlvbiBmb3IgZXZlcnkgcmVmZXJlbmNlKS4KCShmaWVsZF9kZWNsX2NtcCk6IE5ldyBmdW5jdGlvbiB0byBzdXBwb3J0IHNvcnRpbmcgRklFTERfREVDTHMuCgkoZmluaXNoX3N0cnVjdF8xKTogU29ydCBmaWVsZHMuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfMSk6IFVzZSBERUNMX1NPUlRFRF9GSUVMRFMgaWYgd2UgaGF2ZSB0aGVtLgoJKGxvb2t1cF9mbmZpZWxkc18xKTogU2VhcmNoIHNvcnRlZCBtZXRob2RzIGluIE1FVEhPRF9WRUMuCglBbHNvLCBzd2l0Y2ggdG8gdXNpbmcgYXJyYXkgaW5kZXhpbmcgcmF0aGVyIHRoYW4gYSBjaGFuZ2luZyBwb2ludGVyLgoJKiBwdHJlZS5jIChwcmludF9sYW5nX2RlY2wpOiBIYW5kbGUgVFlQRV9ERUNMcyB0aGF0IGhhdmUKCURFQ0xfU09SVEVEX0ZJRUxEUy4KCjE5OTktMDctMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKHJlcGFyc2VfYWJzZGNsX2FzX2Nhc3RzKTogRG9uJ3Qgd2FybiBhYm91dCBvbGQtc3R5bGUKCWNhc3RzIGluIHN5c3RlbSBoZWFkZXJzIG9yIGV4dGVybiAiQyIgYmxvY2tzLgoKCSogcHQuYyAoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogRG93bmdyYWRlIGR1cGxpY2F0ZSBpbnN0YW50aWF0aW9uCgllcnJvcnMgdG8gcGVkd2Fybi4KCjE5OTktMDctMDkgIE1pY2hhZWwgVGllbWFubiAgPHRpZW1hbm5AaGFwcHkuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKHdyaXRlX3ZpcnR1YWxzKTogRGVsZXRlZCBkZWNsYXJhdGlvbi4KCSogY3AtdHJlZS5oICh3cml0ZV92aXJ0dWFscyk6IERlbGV0ZWQgZXh0ZXJuIGRlY2xhcmF0aW9uLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBSZW1vdmVkICNpZiAwJ2QgY29kZSB0aGF0IG1lbnRpb25zCgl3cml0ZV92aXJ0dWFscy4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBSZXdyaXRlIGNvZGUgdG8gbm90IGRlcGVuZAoJb24gd3JpdGVfdmlydHVhbHMuCgoJKiBsZXguYyAoY3BfcHJhZ21hX2ludGVyZmFjZSk6IE5ldyBmdW5jdGlvbi4KCShjcF9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBMaWtld2lzZS4KCShoYW5kbGVfY3BfcHJhZ21hKTogQ2FsbCB0aGVtLgoKCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IFNpbXBsaWZ5IEMgY29kZSBpbiBsb29rX2hhcmQuCgoJKiB4cmVmLmMgKFBBTExPQyk6IFVzZSB4Y2FsbG9jLCBub3QgY2FsbG9jLgoJKFNBTExPQyk6IFVzZSB4bWFsbG9jLCBub3QgbWFsbG9jLgoKCSogcnR0aS5jIChzeW50aGVzaXplX3RpbmZvX2ZuKTogQWRkIG1pc3NpbmcgY2FsbCB0byBwb3BfbW9tZW50YXJ5LgoKCSogc2VhcmNoLmMgKG5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiBEb24ndCBzZWFyY2ggaWYgV1JJVEVfU1lNQk9MUwoJaXMgTk9fREVCVUcuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IElmIGEgcmVkZWNsYXJhdGlvbiBkb2Vzbid0IG1hdGNoIHRoZQoJaW5pdGlhbCBkZWNsYXJhdGlvbiwgdGhlbiBkb24ndCBzYXZlIHRoZSBpbmxpbmUgaW5mbyBhbmQgYnkgYWxsCgltZWFucyBkb24ndCBtYXJrIHRoZSBmdW5jdGlvbiBhcyBhIGJ1aWx0aW4gZnVuY3Rpb24uCgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBTZXQgTk9OQ0xBU1MgdG8gMSBpZiAKCUNVUlJFTlRfQ0xBU1NfVFlQRSBpcyAwLgoKCSogY2xhc3MuYyAoZHVwbGljYXRlX3RhZ19lcnJvcik6IFNldCBUWVBFX05PTkNPUElFRF9QQVJUUyB0bwoJTlVMTF9UUkVFLgoKCSogcHRyZWUuYyAocHJpbnRfbGFuZ190eXBlKTogQWRkZWQgdnRhYmxlLW5lZWRzLXdyaXRpbmcuCgpXZWQgSnVsICA3IDAxOjI2OjQ3IDE5OTkgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IEZpeCBjaGVjayBmb3IgcnR0aSBvZmZzZXQuCgoxOTk5LTA3LTA2ICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jICh1bnNpZ25lZF90eXBlLHNpZ25lZF90eXBlLHNpZ25lZF9vcl91bnNpZ25lZF90eXBlKSA6CglNZXJnZWQgaW50byBjLWNvbW1vbi4KCjE5OTktMDctMDUgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChlcnJvcmNvdW50KTogRGVjbGFyZSBpdC4KCShmaW5pc2hfcGFyc2UpOiBVcGRhdGUgZXJyb3Jjb3VudCBmb3Igd2hlbiB1c2luZyBDUFBMSUIuCgoxOTk5LTA3LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChJU19BR0dSX1RZUEUpOiBJbmNsdWRlIGluc3RhbnRpYXRlZCB0ZW1wbGF0ZSB0ZW1wbGF0ZQoJcGFyYW1ldGVycy4KCShJTVBMSUNJVF9UWVBFTkFNRV9UWVBFX0RFQ0xfUCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChwdXNoX2NsYXNzX2JpbmRpbmcpOiBVc2UgaXQuCgkobG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoKMTk5OS0wNy0wMiAgR2F2aW4gUm9taWctS29jaCAgPGdhdmluQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKHdpZGVzdF9pbnRlZ2VyX2xpdGVyYWxfdHlwZV9ub2RlLAoJd2lkZXN0X3Vuc2lnbmVkX2xpdGVyYWxfdHlwZSkgOiBOZXcuCgkqIGRlY2wuYyAod2lkZXN0X2ludGVnZXJfbGl0ZXJhbF90eXBlX25vZGUsCgl3aWRlc3RfdW5zaWduZWRfbGl0ZXJhbF90eXBlKSA6IE5ldy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEhhbmRsZS91c2UgdGhlIHR3byBuZXcgdHlwZXMuCgkqIGxleC5jIChyZWFsX3l5bGV4KTogU2FtZS4KCSogdHlwZWNrLmMgKHVuc2lnbmVkX3R5cGUsc2lnbmVkX3R5cGUsc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUpIDoKCVNhbWUuIAoKMTk5OS0wNy0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBnaXZlIG5hbWVzICJmb3IgbGlua2FnZSBwdXJwb3NlcyIKCXRvIGFub255bW91cyBjdi1xdWFsaWZpZWQgdHlwZXMuCgoxOTk5LTA3LTAxICBHYXZpbiBSb21pZy1Lb2NoICA8Z2F2aW5AY3lnbnVzLmNvbT4KCgkqIGxleC5jIChyZWFsX3l5bGV4KSA6IENoYW5nZSBpbnRlZ2VyIGxpdGVyYWwgb3ZlcmZsb3cgaGFuZGxpbmcgdG8KCWJlIGxpa2UgYy1sZXguYy4KCgkqIGxleC5jIChyZWFsX3l5bGV4KTogSW1wcm92ZSAnaW50ZWdlciBjb25zdGFudCBvdXQgb2YgcmFuZ2UnIG1lc3NhZ2VzLgoKMTk5OS0wNi0yOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBGaXggdHlwbyBpbiBjcF93YXJuaW5nX2F0IGNhbGwuCgoxOTk5LTA2LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX3R5cGVfcmVhbCk6IEhhbmRsZSBUUkVFX0xJU1QgYWdhaW4uCgoJKiB0eXBlY2suYyAoY29tcF90YXJnZXRfcGFybXMpOiBEb24ndCBjb21wbGFpbiBhYm91dCAKCWNvbnZlcnRpbmcgZnJvbSAoKSB0byAoLi4uKSBpZiAhZmxhZ19zdHJpY3RfcHJvdG90eXBlLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVwZGF0ZSB0aGUgbmFtZXMgb2YgYWxsIHZhcmlhbnRzIHdoZW4KCWRlLWFub255bWl6aW5nLgoKMTk5OS0wNi0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfdmJhc2VfaW5pdCk6IFJlbmFtZSB0bwoJY29uc3RydWN0X3ZpcnR1YWxfYmFzZXMuICBDb25kaXRpb25hbGl6ZSBjb25zdHJ1Y3Rpb24gaGVyZSwgCglyYXRoZXIgdGhhbiAuLi4KCShlbWl0X2Jhc2VfaW5pdCk6IEhlcmUuCgoxOTk5LTA2LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IEFwcGx5IGRlY2F5IGNvbnZlcnNpb25zIHRvCglpbnB1dCBvcGVyYW5kcy4KCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogV2hlbiBidWlsZGluZyBhbiBhbm9ueW1vdXMgZnVuY3Rpb24KCWZvciB1c2Ugd2l0aCBhdGV4aXQsIGNvbXB1dGUgaXRzIGJvZHkgYmVmb3JlIGFuZCBhZnRlciBlbnRlcmluZwoJdGhlIGZ1bmN0aW9uLgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIEJJTkRfRVhQUiwgTE9PUF9FWFBSLCBhbmQKCUVYSVRfRVhQUi4KCQoxOTk5LTA2LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaW5pdC5jIChleHBhbmRfYWdncl92YmFzZV9pbml0KTogQWRkIGZsYWcgcGFyYW1ldGVyLgoJKGJ1aWxkX3BhcnRpYWxfY2xlYW51cF9mb3IpOiBSZW1vdmUsIGlubGluaW5nIGludG8gLi4KCShleHBhbmRfY2xlYW51cF9mb3JfYmFzZSk6IC4uLiBoZXJlLiAgVGFrZSBmbGFnIHBhcmFtZXRlci4KCShlbWl0X2Jhc2VfaW5pdCk6IFBhc3MgdGhlIGluX2NocmcgcGFyYW1ldGVyIHRvCgllbWl0X2FnZ3JfdmJhc2VfaW5pdC4gCgkoZW1pdF9hZ2dyX3ZiYXNlX2luaXQpOiBQYXNzIGl0IHRvIGV4cGFuZF9jbGVhbnVwX2Zvcl9iYXNlLgoJCjE5OTktMDYtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBVc2Ugc2FtZV90eXBlX3AsIHJhdGhlciB0aGFuCglyZWx5aW5nIG9uIHBvaW50ZXItZXF1YWxpdHkgZm9yIHR5cGVzLgoKCSogbWV0aG9kLmMgKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBTaW1wbGlmeS4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBSZW1vdmUgYm9ndXMgY29kZSBmb3IgdHdvLWFyZ3VtZW50CglkZWxldGUuCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBFeHBhbmQgb24gY29tbWVudCwgYW5kIHJlbW92ZSBkZWFkIGNvZGUuCgoJKiBpbml0LmMgKGV4cGFuZF9jbGVhbnVwX2Zvcl9iYXNlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQKCWZyb20gLi4uCgkoZW1pdF9iYXNlX2luaXQpOiBIZXJlLgoJKGV4cGFuZF9hZ2dyX3ZiYXNlX2luaXQpOiBVc2UgaXQuCgoxOTk5LTA2LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChjbGFzc19jYWNoZV9maXJzdG9iaik6IERlY2xhcmUuCgkobWF5YmVfcHVzaF9jYWNoZV9vYnN0YWNrKTogUmVuYW1lIHRvIHB1c2hfY2FjaGVfb2JzdGFjay4KCSogY2xhc3MuYyAocGVybWFuZW50X29ic3RhY2spOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoY2xhc3NfY2FjaGVfZmlyc3RvYmopOiBNYWtlIGl0IGdsb2JhbC4KCShhZGRfbWV0aG9kKTogRG9uJ3QgdXNlIHBlcm1hbmVudF9vYnN0YWNrIGRpcmVjdGx5LgoJKHB1c2hjbGFzcyk6IE9ubHkgZnJlZSB0aGUgY2xhc3NfY2FjaGVfb2JzdGFjayBpZiB3ZSBrbm93IGhvdyBmYXIKCWJhY2sgdG8gZnJlZSBpdC4KCShtYXliZV9wdXNoX2NhY2hlX29ic3RhY2spOiBSZW5hbWUgdG8gcHVzaF9jYWNoZV9vYnN0YWNrLgoJKiBkZWNsLmM6IFJlbW92ZSBkZWFkIGNvbW1lbnQuCgkoc2F2ZWRfc2NvcGUpOiBBZGQgY2xhc3NfY2FjaGVfZmlyc3RvYmouCgkocHVzaF90b190b3BfbGV2ZWwpOiBTYXZlIGl0LgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFJlc3RvcmUgaXQuCgkocHVzaF9jbGFzc19sZXZlbF9iaW5kaW5nKTogVXNlIHB1c2hfY2FjaGVfb2JzdGFjaywgbm90CgltYXliZV9wdXNoX2NhY2hlX29ic3RhY2suCgkqIHNlYXJjaC5jIChwdXNoX2NsYXNzX2RlY2xzKTogTGlrZXdpc2UuCgkKMTk5OS0wNi0xNCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBQdXNoIGludG8gbmFtZXNwYWNlIG9mIGZyaWVuZAoJZnVuY3Rpb24gYmVmb3JlIHB1c2hkZWNsJ2luZyBpdC4KCjE5OTktMDYtMTQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IFJlbW92ZSBSRUZfQklORCBmcm9tIGFsbCBvcGVyYW5kcy4KCjE5OTktMDYtMTMgIEFsZXhhbmRyZSBPbGl2YSAgPG9saXZhQGRjYy51bmljYW1wLmJyPgoKCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IExvb2sgdXAgb3BlcmF0b3IgZGVsZXRlIGV2ZW4gaWYgdGhlcmUgd2FzCglubyBleHBsaWNpdCBuZXcgcGxhY2VtZW50LgoKMTk5OS0wNi0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGV4Y2VwdC5jIChjb21wbGV0ZV9wdHJfcmVmX29yX3ZvaWRfcHRyX3ApOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQKCW9mIC4uLgoJKGJ1aWxkX3Rocm93KTogLi4uIGhlcmUuIENhbGwgaXQuCgkocHJvY2Vzc19zdGFydF9jYXRjaF9ibG9jayk6IENhbGwgaXQuCgoxOTk5LTA2LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VhcmNoLmMgKGNvbnZlcnRfcG9pbnRlcl90b19zaW5nbGVfbGV2ZWwpOiBSZWltcGxlbWVudCB3aXRob3V0Cgl1c2luZyBnZXRfYmluZm8uCgoxOTk5LTA2LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWV0aG9kLmMgKGlzX2JhY2tfcmVmZXJlbmNlYWJsZV90eXBlKTogQmFjay1yZWZlcmVuY2UgYm9vbHMgd2hlbgoJbm90IHNxdWFuZ2xpbmcuCgoxOTk5LTA2LTA3ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBsZXguYyAocmVhbF95eWxleCk6IFJlcGxhY2UgdW51c2VkIGJ5dGVzIGZyb20gYmFkIG11bHRpYnl0ZSBjaGFyLgoJKiBpbnB1dC5jIChwdXRiYWNrX2J1ZmZlcik6IE5ldyBzdHJ1Y3R1cmUgdHlwZS4KCShwdXRiYWNrKTogUmVwbGFjZXMgcHV0YmFja19jaGFyIG1lbWJlci4KCShwdXRiYWNrKTogUmVwbGFjZXMgcHV0YmFja19jaGFyIHN0YXRpYyB2YXJpYWJsZS4KCShmZWVkX2lucHV0KTogVXNlIHB1dGJhY2suCgkoZW5kX2lucHV0KTogVXNlIHB1dGJhY2suCgkoc3ViX2dldGNoKTogVXNlIHB1dGJhY2suCgkocHV0X2JhY2spOiBVc2UgcHV0YmFjay4KCjE5OTktMDYtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRml4IHR5cG8gaW4gbGFzdCBjaGFuZ2UuCgoxOTk5LTA2LTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2lmX3N0bXRfY29uZCk6IENvcHkgY29uZCB0byBwZXJtYW5lbnRfb2JzdGFjay4KCShmaW5pc2hfd2hpbGVfc3RtdF9jb25kLCBmaW5pc2hfZG9fc3RtdCwgZmluaXNoX2Zvcl9jb25kKTogTGlrZXdpc2UuCgoxOTk5LTA2LTA0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogZXhjZXB0LmMgKGJ1aWxkX3Rocm93KTogQ2hlY2sgdGhyb3cgZXhwcmVzc2lvbiB2YWxpZGl0eS4KCjE5OTktMDYtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgdHJlYXQgYXJiaXRyYXJ5IHR5cGVzIGFzIHVuc2lnbmVkCglqdXN0IGJlY2F1c2UgZmxhZ19zaWduZWRfYml0ZmllbGRzIGlzIGZhbHNlLgoKMTk5OS0wNi0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogVXBkYXRlIHRoZSBzdHJ1Y3QncwoJbG9jYXRpb24gaGVyZSAuLi4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IC4uLiByYXRoZXIgdGhhbiBoZXJlLgoKCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBEb24ndCByZWx5IG9uIHVuaW5pdGlhbGl6ZWQKCXZhcmlhYmxlLgoKMTk5OS0wNS0zMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKEFMTF9DRkxBR1MpOiBBZGQgJy1XIC1XYWxsJy4KCjE5OTktMDUtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX2FycmF5X3R5cGVfMSk6IFVzZSBwdXNoX29ic3RhY2tzX25vY2hhbmdlCglhbmQgZnJpZW5kcyByYXRoZXIgdGhhbiBtZXNzaW5nIHdpdGggY3VycmVudF9vYnN0YWNrIGRpcmVjdGx5LgoJKGNwX2J1aWxkX3F1YWxpZmllZF90eXBlX3JlYWwpOiBSZXdvcmsgQVJSQVlfVFlQRQoJYWxsb2NhdGlvbiB0byBtYXRjaCBwcmFjdGljZSB0aHJvdWdob3V0IHRoZSByZXN0IG9mIHRoZSAKCWNvbXBpbGVyLgoKMTk5OS0wNS0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxleC5jIChtYWtlX2xhbmdfdHlwZSk6IENyZWF0ZSBUWVBFX0JJTkZPIGZvcgoJVEVNUExBVEVfVFlQRV9QQVJNcyBqdXN0IGxpa2UgZm9yIG5vbi10ZW1wbGF0ZSB0eXBlcy4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IE1vdmUgY2hlY2tzIG9uIGluaXRpYWxpemF0aW9uIHRvIC4uLgoJKGNwX2ZpbmlzaF9kZWNsKTogSGVyZS4gIFRpZHkgZm9ybWF0dGluZyBzbGlnaHRseS4KCjE5OTktMDUtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGFkZF9iaW5kaW5nKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgYSByZWRlY2xhcmF0aW9uIG9mIGEKCXNlbWFudGljYWxseSBpZGVudGljYWwgdHlwZWRlZiBpbiBhIGxvY2FsIHNjb3BlLgoKMTk5OS0wNS0yOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wuYyAoY29tcGxldGVfYXJyYXlfdHlwZSk6IEFsbG9jYXRlIG9mZiBzYW1lIG9ic3RhY2suIEZpeAoJRE9fREVGQVVMVCBjb21tZW50IHRvIG1hdGNoIHJlYWxpdHkuCgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBGaXggZGlhZ25vc3RpYyB0eXBvLgoKMTk5OS0wNS0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVzcGFjZV9uYW1lKTogSGFuZGxlIGdldHRpbmcgYQoJVEVNUExBVEVfSURfRVhQUi4KCShleHBhbmRfc3RhdGljX2luaXQpOiBEb24ndCBjYWxsIHB1c2hkZWNsIGZvciBpbXBsaWNpdGx5IGRlY2xhcmVkCglgYXRleGl0JyB1c2VkIHRvIHJlZ2lzdGVyIGRlc3RydWN0b3JzLgoKMTk5OS0wNS0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF92dGJscyk6IENvcHkgQklORk9fVklSVFVBTHMgYmVmb3JlIHVzaW5nIGl0IHRvCglpbml0aWFsaXplIGEgdnRhYmxlLgoKCSogY3AtdHJlZS5oIChOQU1FU1BBQ0VfTEVWRUwpOiBSZWZvcm1hdC4KCShsYW5nX2RlY2xfZmxhZ3MpOiBEb2N1bWVudCBNRU1GVU5DX1BPSU5URVJfVE8uICBTYXZlIGZvdXIgYnl0ZXMKCWJ5IGNvbWJpbmluZyBURU1QTEFURV9JTkZPIGFuZCBMRVZFTCBpbnRvIGEgc2luZ2xlIHVuaW9uLgoJKERFQ0xfVEVNUExBVEVfSU5GTyk6IFJlZm9ybWF0LgoJKERFQ0xfU0FWRURfVFJFRSk6IERvY3VtZW50LgoJKERFQ0xfVEVNUExBVEVfSU5KRUNUKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogUmVtb3ZlIGNvZGUgdG8gZGVhbCB3aXRoCglERUNMX1RFTVBMQVRFX0lOSkVDVC4gCgoJKiBkZWNsLmMgKG1heWJlX3Byb2Nlc3NfdGVtcGxhdGVfdHlwZV9kZWNsYXJhdGlvbik6IEhhbmRsZSBhbGwgbmV3Cgl0eXBlcyBpbiB0ZW1wbGF0ZXMgdW5pZm9ybWx5LgoJKiBtZXRob2QuYyAoYnVsaWRfb3ZlcmxvYWRfaWRlbnRpZmllcik6IFVzZSBDUF9ERUNMX0NPTlRFWFQsIG5vdAoJREVDTF9DT05URVhULgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBJbmplY3QgdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMgb2YKCWZvcndhcmQtZGVjbGFyYXRpb25zLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUmVtb3ZlIGNvZGUgcHJvY2Vzc2luZwoJREVDTF9URU1QTEFURV9JTkpFQ1QuCgkKCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogVHdlYWsgbG9va3VwIHRvIGZpbmQgbWVtYmVyCgl0ZW1wbGF0ZXMuCgoJKiBwdC5jICh0c3Vic3RfZXhwciwgY2FzZSBBU01fU1RNVCk6IERvbid0IHRzdWJzdCBpbnRvCglBU01fQ1ZfUVVBTC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IE1ha2Ugc3RyaW5ncyBwZXJtYW5lbnQgaWYgdGhleSdyZQoJdXNlZCBpbiBhIHRlbXBsYXRlLgoJCjE5OTktMDUtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjYXN0c19hd2F5X2NvbnN0bmVzcywgY2FzdHNfYXdheV9jb25zdG5lc3Nfcik6IFN0cmlwIGJvdGgKCXBhcnRzIG9mIHBvaW50ZXIgdG8gZGF0YSBtZW1iZXIgdHlwZXMuCgoxOTk5LTA1LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IERvbid0IG1ha2UgYSBjb3B5IG9mIGEgZnVuY3Rpb24sCglhbmQgdGhlbiBtYWtlIGl0IGxvb2sgbGlrZSBgYWJvcnQnLiAgSnVzdCB1c2UgYGFib3J0JyBpbnN0ZWFkLgoJCgkqIHR5cGVjay5jIChidWlsZF9zdGF0aWNfY2FzdCk6IERvbid0IGFsbG93IHN0YXRpY19jYXN0cyB0aGF0IGNhc3QKCWF3YXkgY29uc3RuZXNzLgoJKGNhc3RzX2F3YXlfY29uc3RuZXNzX3IpOiBOZXcgZnVuY3Rpb24uCgkoY2FzdHNfYXdheV9jb25zdG5lc3MpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAobG9va3VwX3RhZyk6IFJlbW92ZSBjb2RlIG5vIGxvbmdlciBuZWVkZWQgYWZ0ZXIKCW5hbWUtbG9va3VwIGltcHJvdmVtZW50cy4KCSogZGVjbDIuYyAoaGFuZGxlX2NsYXNzX2hlYWQpOiBNYWtlIGVycm9yLXJlY292ZXJ5IG1vcmUgcm9idXN0LgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBSZWplY3QgdGVtcGxhdGVkIHR5cGVuYW1lIHR5cGVzLgoJKiBsZXguYyAoaXNfZ2xvYmFsKTogQSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgaXNuJ3QgZ2xvYmFsLgoJKiBwYXJzZS55IChjbGFzc19oZWFkKTogUm9idXN0aWZ5LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCQoxOTk5LTA1LTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IFdhbGsgaW50byBUWVBFTkFNRV9UWVBFcywKCUlORElSRUNUX1JFRnMsIGFuZCBDT01QT05FTlRfUkVGcy4gIEhhbmRsZSBGSUVMRF9ERUNMcy4KCQoJKiBjcC10cmVlLmggKHB1c2hfbmVzdGVkX25hbWVzcGFjZSk6IERlY2xhcmUuCgkocG9wX25lc3RlZF9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCSogZGVjbC5jIChwdXNoX25lc3RlZF9uYW1lc3BhY2UpOiBOZXcgZnVuY3Rpb24uCgkocG9wX25lc3RlZF9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2UgdGhlbS4KCgkqIHRyZWUuYyAobWFwY2FyKTogSGFuZGxlIE5PTl9MVkFMVUVfRVhQUi4KCgkqIGNwLXRyZWUuaCAoY3BsdXNfZXhwYW5kX2NvbnN0YW50KTogRGVjbGFyZS4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fcG9pbnRlcik6IEV4cGFuZCBQVFJNRU1fQ1NUcyB3aGVuIHRoZXkncmUKCWNvbnZlcnRlZCBmcm9tIG9uZSBwb2ludGVyLXRvLW9iamVjdCB0eXBlIHRvIGFub3RoZXIuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2NvbnN0YW50KTogRG9uJ3QgbWFrZSBpdCBzdGF0aWMuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRG9uJ3QgY3Jhc2ggd2hlbiBwcmVzZW50ZWQgd2l0aAoJYSBjb21wb25lbnQgd2hpY2ggaXMgYSBURU1QTEFURV9ERUNMLgoJKGJ1aWxkX3B0cm1lbWZ1bmMpOiBUaWR5LiAgQ2xhcmlmeSBjb21tZW50LiAgTWFrZSBzdXJlIHRoYXQgZXZlbiBhCgljYXN0IGZyb20gYSBwb2ludGVyLXRvLW1lbWJlciBjb25zdGFudCB0byBpdHMgb3duIHR5cGUgZG9lcyBub3QKCXJlc3VsdCBpbiBhIHZhbGlkIG5vbi10eXBlIHRlbXBsYXRlIGFyZ3VtZW50LgoKMTk5OS0wNS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoJCgkqIE1ha2UtbGFuZy5pbiAoY2MxcGx1cyk6IE1ha2UgaXQgZGVwZW5kIG9uIGd4eC5ncGVyZi4KCSogY3AtdHJlZS5oOiBGaXggdHlwbyBpbiBkb2N1bWVudGF0aW9uIG9uIHBvaW50ZXJzLXRvLW1lbWJlcnMuCgkoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGUpOiBNYWtlIGl0IGEgbWFjcm8uCgkoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGVfcmVhbCk6IERlY2xhcmUuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgbWlzbGVhZGluZyBjb21tZW50LiAgQXZvaWQKCXByb2JsZW0gd2l0aCB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGFuZCByZXN0cmljdC1xdWFsaWZpY2F0aW9uLgoJKiBneHguZ3BlcmY6IFJlcGxhY2UgTk9SSUQgd2l0aCBSSURfVU5VU0VEIHRocm91Z2hvdXQuCgkqIGhhc2guaDogUmVnZW5lcmF0ZWQuCgkqIGxleC5oIChyaWQpOiBNb3ZlIFJJRF9GSVJTVF9NT0RJRklFUiBhbmQgUklEX0xBU1RfTU9ESUZJRVIgaW50bwoJdGhlIGVudW1lcmF0aW9uLgoJKE5PUklEKTogUmVtb3ZlIGRlZmluaXRpb24uCgkqIHB0LmMgKHRzdWJzdF9hZ2dyX3R5cGUpOiBVc2UgY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGVfcmVhbC4KCSh0c3Vic3QpOiBMaWtld2lzZS4gIFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nIGZvciBGVU5DVElPTl9UWVBFcy4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogQ2hlY2sgdGhhdCB0aGUgZnVuY3Rpb24gdHlwZSByZXN1bHRpbmcgZnJvbQoJdGhlIGRlZHVjdGlvbiBpcyBsZWdhbC4KCShjaGVja19jdl9xdWFsc19mb3JfdW5pZnkpOiBEb24ndCBoYW5kbGUgRlVOQ1RJT05fVFlQRXMgc3BlY2lhbGx5LgoJKHVuaWZ5KTogVXNlIGNwX2J1aWxkX3F1YWxpZmllZF90eXBlX3JlYWwuCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfYXJyYXlfdHlwZV8xKTogSGFuZGxlIGVycm9yX21hcmtzIGFzIGlucHV0cy4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZSk6IFJlbmFtZSB0byAuLi4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogQWRkIGFkZGl0aW9uYWwgQ09NUExBSU4gcGFyYW1ldGVyCglhbmQgbW9kaWZ5IGFwcHJvcHJpYXRlbHkuCgkKCSogdHlwZWNrLmMgKGJ1aWxkX3B0cm1lbWZ1bmMpOiBIYW5kbGUgUFRSTUVNX0NTVHMgY2FyZWZ1bGx5IHRvCglyZXZlYWwgb3B0aW1pemF0aW9uIG9wcG9ydHVuaXRpZXMuCgoJKiBwdC5jICh0c3Vic3QpOiBEb24ndCBpc3N1ZSBlcnJvciBtZXNzYWdlcyB3aGVuIHdlJ3JlIG5vdAoJY29tcGxhaW5pbmcsIGV2ZW4gaWYgd2Ugc2VlIGEgcXVhbGlmaWVkIGZ1bmN0aW9uIHR5cGUuCgkoY2hlY2tfY3ZfcXVhbHNfZm9yX3VuaWZ5KTogRG9uJ3QgYWxsb3cgYSBxdWFsaWZpZWQgZnVuY3Rpb24KCXR5cGUuCgoxOTk5LTA1LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogRG93bmdyYWRlIGVycm9ycyBmb3Igb2JqZWN0LWRlcGVuZGVudAoJbWVtZm4gcmVmcyB0byBwZWR3YXJuLgoKMTk5OS0wNS0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCB0cmVhdCBbXSBhcyBpbmRpY2F0aW5nIGEKCXplcm8tc2l6ZWQgYXJyYXkgaW4gYSB0eXBlZGVmLgoKCSogY2FsbC5jIChidWlsZF9vYmplY3RfY2FsbCk6IERvbid0IGxvb2sgYXQgREVDTF9OQU1FIGZvciBhIHR5cGUuCgkocHQuYyk6IE9yIENQX1RZUEVfUVVBTFMgZm9yIGFuIEVSUk9SX01BUksuCgkodHlwZWNrLmMpOiBPciBUWVBFX01BSU5fVkFSSUFOVCBmb3IgYSB0eXBlLgoKIAkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBSZXdvcmsgdG8gbWF0Y2ggZG9jdW1lbnRhdGlvbi4KCURvbid0IGJlIGZvb2xlZCBieSBhIENPTVBPTkVOVF9SRUYgd2l0aCBubyBUUkVFX1RZUEUuCgoxOTk5LTA1LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBTdGlsbCBjaGVjayBmb3IgQU5PTl9BR0dSX1RZUEVfUC4KCgkqIGNsYXNzLmMgKGZpbmlzaF9iYXNlX3N0cnVjdCk6IEFsbG93IG5vbi1DT00gYmFzZXMgZm9yIENPTSBjbGFzc2VzCglleGNlcHQgYXQgdGhlIGxlZnRtb3N0IHBvc2l0aW9uLgoJKG1vZGlmeV9vbmVfdnRhYmxlLCBmaXh1cF92dGFibGVfZGVsdGFzMSwgb3ZlcnJpZGVfb25lX3Z0YWJsZSk6CglQYXNzIHRoZSBiaW5mbydzIGNsYXNzLCBub3QgdGhlIG1vc3QgZGVyaXZlZCwgdG8gc2tpcF9ydHRpX3N0dWZmLgoJKiBzZWFyY2guYyAoZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzLCBleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoKCSogdHJlZS5jIChsdmFsdWVfcF8xKTogQSBOT1BfRVhQUiBjYW4gYmUgYW4gbHZhbHVlLgoJKGJ1aWxkX2NwbHVzX25ldyk6IE1ha2Ugc3VyZSB0aGF0IHdoYXQgd2UgcmV0dXJuIGlzIG9mIHRoZSByaWdodCB0eXBlLgoKMTk5OS0wNS0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobWFrZV9wdHJtZW1fY3N0KTogTmV3IGZ1bmN0aW9uLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9jb25zdGFudCk6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGNwbHVzX2V4cGFuZF9leHByKTogSGVyZS4gIFVzZSBjcGx1c19leHBhbmRfY29uc3RhbnQuCgkoaW5pdF9jcGx1c19leHBhbmQpOiBTZXQgbGFuZ19leHBhbmRfY29uc3RhbnQuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFVzZSBtYWtlX3B0cm1lbV9jc3QuCgoJKiB0cmVlLmMgKG1ha2VfcHRybWVtX2NzdCk6IERlZmluZS4KCSogdHlwZWNrLmMgKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogVXNlIG1ha2VfcHRybWVtX2NzdC4KCSogdHlwZWNrMi5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogVXNlIG1ha2VfcHRybWVtX2NzdC4KCjE5OTktMDUtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChidWlsZF90ZW1wbGF0ZV9kZWNsKTogQ29weSBERUNMX05PTkNPTlZFUlRJTkdfUC4KCgkqIGRlY2wyLmMgKHN0YXJ0X3N0YXRpY19zdG9yYWdlX2R1cmF0aW9uX2Z1bmN0aW9uKTogRml4IGNvbW1lbnQuCgkoZmluaXNoX2ZpbGUpOiBDcmVhdGUgc3RhdGljIHN0b3JhZ2UgZHVyYXRpb24gZnVuY3Rpb25zIGxhemlseS4KCjE5OTktMDUtMTkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglJbXBsZW1lbnQgYW5vbnltb3VzIHN0cnVjdHMuCgkqIGNwLXRyZWUuaCAoQU5PTl9BR0dSX1RZUEVfUCk6IFJlbmFtZSBmcm9tIEFOT05fVU5JT05fVFlQRV9QLgoJKiBjbGFzcy5jLCBkZWNsLmMsIGRlY2wyLmMsIGluaXQuYywgcHQuYywgc2VhcmNoLmMsIHR5cGVjay5jOiBBZGp1c3QuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFJlbW92ZSByZWR1bmRhbnQgY2hlY2sgZm9yIGFub24gc3RydWN0LgoJKiBkZWNsLmMgKGZpeHVwX2Fub255bW91c19hZ2dyKTogUmVuYW1lZCBmcm9tIGZpeHVwX2Fub255bW91c191bmlvbi4KCShjaGVja190YWdfZGVjbCk6IENoZWNrIGZvciBhbm9ueW1vdXMgc3RydWN0IGhlcmUuCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IENhdGNoIGFub24gc3RydWN0IGF0IGZpbGUgc2NvcGUuCgkqIGluaXQuYyAoc29ydF9tZW1iZXJfaW5pdCwgZW1pdF9iYXNlX2luaXQpOiBIYW5kbGUgZ2V0dGluZyBmaWVsZHMKCWFzIHdlbGwgYXMgbmFtZXMgaW4gY3VycmVudF9tZW1iZXJfaW5pdF9saXN0LgoJKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBIYW5kbGUgZ2V0dGluZyBhbiBhbm9uIGFnZ3IuCgkqIG1ldGhvZC5jIChkb19idWlsZF9hc3NpZ25fcmVmKTogRG9uJ3QgZGVzY2VuZCBpbnRvIGFub24gYWdncnMuCgkoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoKMTk5OS0wNS0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGUpOiBEb24ndCBhbGxvdyBxdWFsaWZpZWQgZnVuY3Rpb24KCXR5cGVzLgoKV2VkIE1heSAxOSAwMjo1MDo1MyAxOTk5ICBBcnZpbmQgU2Fua2FyIDxhcnZpbmRzQG1pdC5lZHU+CgoJKiBneHhpbnQudGV4aTogRml4IHR5cG8uCgoxOTk5LTA1LTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGZpbmRfc2NvcGVkX3R5cGUsIHJlc29sdmVfc2NvcGVfdG9fbmFtZSk6IExvc2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBDTEFTU19UWVBFX1AuCgkqIHB0cmVlLmMgKHByaW50X2xhbmdfdHlwZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIsIGNfZXhwYW5kX2FzbV9vcGVyYW5kcyk6IFVzZQoJSVNfQUdHUl9UWVBFX0NPREUuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBMaWtld2lzZS4KCjE5OTktMDUtMTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoam91c3QpOiBDb21wYXJlIHRoZSB0eXBlcyBvZiB0aGUgY29udiBvcHMsIG5vdCB0aGUKCXRhcmdldCB0eXBlcyBvZiB0aGUgY29udmVyc2lvbnMuCgpUdWUgTWF5IDE4IDAwOjIxOjM0IDE5OTkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkucGh5cy5jb2x1bWJpYS5lZHU+CgoJKiBsYW5nLXNwZWNzLmg6IERlZmluZSBfX0dOVUNfXyBhbmQgX19HTlVDX01JTk9SX18gb25seSBpZiAtbm8tZ2NjCgl3YXMgbm90IGdpdmVuLgoKMTk5OS0wNS0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuZGVmIChURU1QTEFURV9JRF9FWFBSKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IERvbid0IGFsbG93IGlubGluZSBkZWNsYXJhdGlvbnMgb2YgZnJpZW5kCgl0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMsIG9yIGZyaWVuZCB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMgd2l0aAoJZGVmYXVsdCBhcmd1bWVudHMuCgkqIHB0LmMgKHRzdWJzdCk6IEhhbmRsZSBzdWJzdGl0dXRpb24gaW50byBhcnJheSB0eXBlcyB0aGF0IGRvZXMKCW5vdCB5aWVsZCBhIGZpeGVkIHVwcGVyIGJvdW5kLCBldmVuIHdoZW4gbm90IHByb2Nlc3NpbmcgYQoJdGVtcGxhdGUuCgkodHN1YnN0X2NvcHkpOiBEZWFsIHdpdGggdGhlIGZhY3QgdGhhdCB0aGUgc2Vjb25kIG9wZXJhbmQgdG8gYQoJVEVNUExBVEVfSURfRVhQUiBtYXkgYmUgTlVMTF9UUkVFLCBhIFRSRUVfTElTVCwgb3IgYSBUUkVFX1ZFQy4KCSogc2VhcmNoLmMgKG1hcmtlZF9wdXNoZGVjbHNfcCk6IERvbid0IGRlc2NlbmQgaW50bwoJVEVNUExBVEVfVFlQRV9QQVJNcyBhbmQgdGhlIGxpa2UuCgkodW5tYXJrZWRfcHVzaGRlY2xzX3ApOiBMaWtld2lzZS4KCQoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IERvbid0IHRocm93IGF3YXkKCWluaXRpYWxpemF0aW9ucy9jb3BpZXMgb2YgZW1wdHkgY2xhc3NlczsgdXNlIE1PRElGWV9FWFBSIGFuZAoJSU5JVF9FWFBSIGFzIGZvciBub24tZW1wdHkgY2xhc3Nlcy4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogUHV0IHRoZSBwYWRkaW5nIGJ5dGUgZm9yIGFuIGVtcHR5CgljbGFzcyBvbiB0aGUgVFlQRV9OT05DT1BJRURfUEFSVFMgbGlzdCBmb3IgdGhlIGNsYXNzLgoKMTk5OS0wNS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSGFuZGxlIENPTVBPTkVOVF9SRUZzIHRoYXQKCWluZGljYXRlIGEgcmVmZXJlbmNlIHRvIGEgZmllbGQgdGhhdCBpcyBhIHF1YWxpZmllZCBuYW1lLgoKMTk5OS0wNS0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX29iamVjdHMpOiBEb24ndCB1c2UgLj90b3JzLiogaWYgd2UgZG9uJ3QgaGF2ZQoJQVNNX09VVFBVVF9DT05TVFJVQ1RPUi4KCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBBZGQgYXR0cmxpc3QgYXJnLiAgUmVtb3ZlIHN1cHBvcnQgZm9yCglnZXR0aW5nIGEgbm9uLWRlY2wgYXMgJ2RlY2wnLgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBSZW1vdmUgYXR0cmxpc3QgYXJnLiAgRG9uJ3Qgc2V0IGF0dHJzIG9yCglydGwuCgkoZ3Jva2RlY2xhcmF0b3IpOiBBZGp1c3QuCgkqIGNwLXRyZWUuaDogQWRqdXN0LgoKMTk5OS0wNS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAocGVybWFuZW50X3ApOiBOZXcgZnVuY3Rpb24uCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBVc2UgbWFwY2FyLCBub3QgY29weV9ub2RlLCB0byBjb3B5IGEKCXBvc3NpYmx5IGNvbXBsZXggdHJlZSBub2RlLgoJKiB0cmVlLmMgKG1hcGNhcik6IEFkanVzdCBjb21tZW50cywgYW5kIGZvbGxvdyBjb2Rpbmcgc3RhbmRhcmRzIGluCgljb25kaXRpb25hbC4KCShwZXJtYW5lbnRfcCk6IE5ldyBmdW5jdGlvbi4KCjE5OTktMDUtMTMgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAocHVzaF9sYW5nX2NvbnRleHQpOiAgVHVybiBvZmYgREVDTF9JR05PUkVEX1AgZm9yCglwcmltaXRpdmUgSmF2YSB0eXBlcywgaWYgd2UgYWN0dWFsbHkgc2VlIGBleHRlcm4gIkphdmEiJy4KCjE5OTktMDUtMTAgMTg6MjEgLTA0MDAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkucGh5cy5jb2x1bWJpYS5lZHU+CgoJKiBsYW5nLXNwZWNzLmg6IFBhc3MgLSQgdG8gdGhlIHByZXByb2Nlc3Nvci4KCjE5OTktMDUtMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IFdyYXAgYmFzZWxpbmtzIGluIE9GRlNFVF9SRUYsIHRvby4KCURvbid0IGJvdGhlciB3cmFwcGluZyBhbiBPRkZTRVRfVFlQRSBhcm91bmQgdW5rbm93bl90eXBlX25vZGUuCgkocmVzb2x2ZV9vZmZzZXRfcmVmKTogRG9uJ3QgaGFuZGxlIGEgcmF3IGJhc2VsaW5rLgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24sIGJ1aWxkX2NfY2FzdCwgY29udmVydF9mb3JfYXNzaWdubWVudCwKCWNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBIYW5kbGUgc2VlaW5nIGEgYmFzZWxpbmsgdW5kZXIgYW4KCU9GRlNFVF9SRUYuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IExpa2V3aXNlLgkKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IExpa2V3aXNlLgoJKHJlc29sdmVfb3ZlcmxvYWRlZF91bmlmaWNhdGlvbik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4sIHJlYWxseV9vdmVybG9hZGVkX2ZuKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChleHByX3NpemVvZik6IEFsc28gY29tcGxhaW4gYWJvdXQgb3RoZXIgcGVybXV0YXRpb25zCglvZiBvdmVybG9hZGVkIGZ1bmN0aW9ucy4KCjE5OTktMDUtMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogRG9uJ3QgcmV0dXJuIGEgcmF3IG1ldGhvZC4KCVVzZSBCQVNFTElOS19QLgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IERvbid0IGhhbmRsZSBhIHJhdyBtZXRob2QuCglSZXNvbHZlIGFsbCBPRkZTRVRfUkVGcy4KCShnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IDAgaXMgYSB2YWxpZCB2dGFibGUgaW5kZXguCgkoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IEhhbmRsZSByZXNvbHZpbmcgb3ZlcmxvYWRlZCBmbnMuICBVc2UKCXNhbWVfdHlwZV9wIGZvciBwbWYgYml0cy4gIERvbid0IHVzZSBidWlsZF9iaW5hcnlfb3AgdG8gY29tcGFyZQoJcmF3IHBvaW50ZXJzIHRvIG1ldGhvZHMuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IENoZWNrIGZvciBPRkZTRVRfUkVGLCBub3QgT0ZGU0VUX1RZUEUsCgl0byBkZWNpZGUgd2hlbiB0byBjYWxsIHJlc29sdmVfb2Zmc2V0X3JlZi4KCShidWlsZF9jX2Nhc3QsIGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkqIGN2dC5jIChidWlsZF9leHByX3R5cGVfY29udmVyc2lvbik6IExpa2V3aXNlLgoKMTk5OS0wNS0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogVXNlIFRZUEVfTUFJTl9WQVJJQU5UIG9mIGNsYXNzLgoKMTk5OS0wNS0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKHN0YXJ0X29iamVjdHMpOiBEb24ndCBsZXQgc3RhdGljIGNvbnN0cnVjdG9ycyBhbmQKCWRlc3RydWN0b3JzIGdldCBpbmxpbmVkLgoKCSogcGFyc2UueSAobmVzdGVkX25hbWVfc3BlY2lmaWVyKTogTWFrZSBzdXJlIG9yZGluYXJ5IHR5cGVzIGFyZQoJY29tcGxldGUsIGp1c3QgbGlrZSB0ZW1wbGF0ZSB0eXBlcy4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEltcHJvdmUgZXJyb3IgbWVzc2FnZXMuCgoxOTk5LTA1LTA0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogdHlwZWNrLmMgKHN0cmluZ19jb252X3ApOiBVc2Ugc2FtZV90eXBlX3AgdG8gY2hlY2sgd2hldGhlciB3ZQoJdHJ5IHRvIGNvbnZlcnQgYmV0d2VlbiBjaGFyIGFuZCB3Y2hhcl90LgoKMTk5OS0wNS0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfcik6IFNldCB0aGUgVFJFRV9UWVBFIG9mIGFuIGFtYmlndW91cwoJbG9va3VwIHRvIGVycm9yX21hcmtfbm9kZSBoZXJlLgoJKGxvb2t1cF9tZW1iZXIpOiBSZXZpc2UgZG9jdW1lbnRhdGlvbi4gIEFkZCBjb21tZW50cy4gIERvbid0IHNldAoJdGhlIFRSRUVfVFlQRSB0byBlcnJvcl9tYXJrX25vZGUgaGVyZSwgYW5kIGRvbid0IGJ1aWxkIHVwIGFuIGV4dHJhCglUUkVFX0xJU1QgZm9yIGFtYmlndW91cyBsb29rdXBzLgoJKHNldHVwX2NsYXNzX2JpbmRpbmdzKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKHB1c2hfY2xhc3NfZGVjbHMpOiBSZXZpc2Ugb3V0LW9mLWRhdGUgY29tbWVudHMuCgkKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbnN0X2Nhc3QpOiBUaWdodGVuIGNoZWNrcyBmb3IgbGVnYWxpdHkuCgoxOTk5LTA1LTAyICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IExvb2t1cCBuYW1lcyBjb21pbmcgZnJvbQoJbmFtZXNwYWNlLXNjb3BlZCBMT09LVVBfRVhQUi4KCjE5OTktMDUtMDMgIEppbSBCbGFuZHkgIDxqaW1iQHp3aW5nbGkuY3lnbnVzLmNvbT4KCgkqIGd4eGludC50ZXhpOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgJ0knLgoKMTk5OS0wNS0wMiAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHRpbmZvLmNjIChvcGVyYXRvcj09KTogUXVhbGlmeSB0eXBlX2luZm8gd2l0aCBzdGQ6Oi4KCjE5OTktMDUtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IFJlbW92ZSBjb21kYXQuICBVcGRhdGVkIGR1bW15LgoJKERFQ0xfQ09NREFUKTogUmVtb3ZlIGRlZmluaXRpb24uCgoxOTk5LTA1LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jICh3cmFwdXBfZ2xvYmFsc19mb3JfbmFtZXNwYWNlKTogRml4IHRoaW5rbyBpbiBwcmV2aW91cwoJY2hhbmdlLgoKMTk5OS0wNC0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZSk6IFVzZSBidWlsZF9sYW5nX2RlY2wgd2hlbiBidWlsZGluZwoJdnRhYmxlcywgbm90IGp1c3QgYnVpbGRfZGVjbC4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHdyYXB1cF9nbG9iYWxzX2Zvcl9uYW1lc3BhY2UpOiBNYXJrIHZ0YWJsZXMgYXMKCURFQ0xfRVhURVJOQUwgd2hlbiBjYWxsaW5nIHdyYXB1cF9nbG9iYWxfZGVjbGFyYXRpb25zLgoJKiBkZWNsMi5jIChwcmlvcml0eV9pbmZvX3MpOiBBZGQgaW5pdGlhbGl6YXRpb25zX3AgYW5kCglkZXN0cnVjdGlvbnNfcCBtZW1iZXJzLgoJKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IFVzZSBUUkVFX1NZTUJPTF9SRUZFUkVOQ0VELCBub3QgVFJFRV9VU0VELAoJd2hlbiBkZWNpZGluZyB3aGF0IHZ0YWJsZXMgdG8gd3JpdGUgb3V0LgoJKHNzZGZfZGVjbHMpOiBOZXcgdmFyaWFibGUuCgkoc3NkZl9kZWNsc191c2VkKTogTGlrZXdpc2UuCgkoc3RhcnRfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBEZWFsIHdpdGggYmVpbmcgY2FsbGVkCgltdWx0aXBsZSB0aW1lcy4gIEF2b2lkIGlubGluaW5nIHRoaXMgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfaW5pdHNfZm9yX3ByaW9yaXR5KTogRGVhbCB3aXRoIHJldXNlIG9mIHByaW9yaXR5IG1hcC4KCShnZXRfcHJpb3JpdHlfaW5mbyk6IENsZWFyIGluaXRpYWxpemF0aW9uc19wIGFuZCBkZXN0cnVjdGlvbnNfcC4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBUd2VhayBjb21tZW50LgoJKGRvX3N0YXRpY19kZXN0cnVjdGlvbik6IExpa2V3aXNlLiAgRml4IGNvbmRpdGlvbiBvbiBzZW50cmllcyBmb3IKCWRlc3RydWN0aW9uLgoJKGdlbmVyYXRlX2N0b3Jfb3JfZHRvcl9mdW5jdGlvbik6IENhbGwgYWxsIG9mIHRoZSBzdGF0aWMgc3RvcmFnZQoJZHVyYXRpb24gZnVuY3Rpb25zLgoJKGdlbmVyYXRlX2N0b3Jfb3JfZHRvcl9mdW5jdGlvbl9mb3JfcHJpb3JpdHkpOiBDaGVjawoJaW5pdGlhbGl6YXRpb25zX3AgYW5kIGRlc3RydWN0aW9uc19wIHRvIHNlZSB3aGF0IHByaW9yaXRpZXMgbmVlZAoJaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zLgoJKGZpbmlzaF9maWxlKTogUmV3b3JrIHRvIGdlbmVyYXRlIG11bHRpcGxlIHN0YXRpYyBzdG9yYWdlIGR1cmF0aW9uCglmdW5jdGlvbnMsIHJhdGhlciB0aGFuIGp1c3Qgb25lLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbnN0X2Nhc3QpOiBUd2VhayBsYXN0IGNoYW5nZSB0byBoYW5kbGUKCXRlbXBsYXRlcyBjb3JyZWN0bHkuCgoJKiB0eXBlY2suYyAoYnVpbGRfY29uc3RfY2FzdCk6IERpc2FsbG93IHVzZSBvZiBjb25zdF9jYXN0IHRvCglhbnl0aGluZyBidXQgYSBwb2ludGVyIG9yIHJlZmVyZW5jZSB0eXBlLgoKMTk5OS0wNC0zMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBEb24ndCBwZXJtaXQgYXJyYXlzIG9mIGFic3RyYWN0IG9yCglzaWduYXR1cmUgdHlwZS4KCjE5OTktMDQtMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChkb19zdGF0aWNfZGVzdHJ1Y3Rpb24pOiBSZW1vdmUgb2Jzb2xldGUgRklYTUUgY29tbWVudC4KCShmaW5pc2hfZmlsZSk6IEluZGVudCBjb21tZW50cyBwcm9wZXJseS4KCjE5OTktMDQtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBDYWxsIGRvX3BlbmRpbmdfc3RhY2tfYWRqdXN0LgoJKGRvX3N0YXRpY19kZXN0cnVjdGlvbik6IExpa2V3aXNlLgoKMTk5OS0wNC0yOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoVFlQRV9OT1RIUk9XX1ApOiBOZXcgbWFjcm8uCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiBXYXJuIG9uIGRlbGV0aW5nIHZvaWQgKi4KCSogaW5pdC5jIChidWlsZF9uZXdfMSk6IFVzZSBUWVBFX05PVEhST1dfUC4KCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IGNwX3BlZHdhcm4gb24gcmV0dXJuaW5nIE5VTEwgZnJvbQoJdGhyb3dpbmcgb3BlcmF0b3IgbmV3LgoKMTk5OS0wNC0yOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfY29tcG9uZW50X2FkZHIpOiBSZW1vdmUgcHJvdG90eXBlLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X2FkZHIpOiBNYWtlIHN0YXRpYy4gUmVtb3ZlIE1TRwoJYXJndW1lbnQuCgkoYnVpbGRfY29tcG9uZW50X2FkZHIpOiBSZW1vdmUgTVNHIHBhcmFtZXRlciwgY2xlYW4gdXAKCWNvbW1lbnQuCgkoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogVXNlIGNwX2Vycm9yLgoJKGJ1aWxkX3VuYXJ5X29wKTogQWRqdXN0IGNhbGwgb2YgYnVpbGRfY29tcG9uZW50X2FkZHIuCgoxOTk5LTA0LTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IENoZWNrIGZvciBOVUxMLgoKV2VkIEFwciAyOCAxMTo0MjoyMiAxOTk5ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5jcy51bmktZG9ydG11bmQuZGU+CgoJKiBzZWFyY2guYyAoYmluZm9fZm9yX3Z0YWJsZSk6IEluaXRpYWxpemUgYmZ2aS52YXIuCgoxOTk5LTA0LTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogcnR0aS5jIChidWlsZF94X3R5cGVpZCk6IENoZWNrIHJ0dGkgaXMgZW5hYmxlZC4KCjE5OTktMDQtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzZWFyY2guYyAoaXNfc3Vib2JqZWN0X29mX3ApOiBNYWtlIHN1cmUgd2UncmUgbG9va2luZyBhdCB0aGUKCXJpZ2h0IGJhc2VjbGFzc2VzLgoKMTk5OS0wNC0yNiAgTWFyYyBFc3BpZSAgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAoY3BsaWIyLnJlYWR5KTogRG9uJ3QgZGVwZW5kIG9uIHBob255IHRhcmdldHMuCgoxOTk5LTA0LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBUd2VhayBoYW5kbGluZyBvZiBleHRlcm4gaW5saW5lcyBzbyB0aGF0Cgl0aGV5IGFyZSBub3QgdW5uZWNlc3NhcmlseSBwdXQgb3V0LgoKCSogc2VhcmNoLmMgKGlzX3N1Ym9iamVjdF9vZl9wKTogSGFuZGxlIFRFTVBMQVRFX1RZUEVfUEFSTXMgYW5kCglzdWNoIGFzIGJhc2UgY2xhc3Nlcy4KCjE5OTktMDQtMjIgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGJ1aWxkX2V4Y2VwdGlvbl92YXJpYW50KTogRml4IHR5cG86IHVzZSB0aGUgY2hhaW4gb2YgVSwKCW5vdCB0cnlpbmcgViwgd2hpbGUgY3ljbGluZyB0aHJvdWdoIFUuCgoxOTk5LTA0LTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX2RlY2xfZmxhZ3MpOiBSZW1vdmUgcmV0dXJuc19maXJzdF9hcmcgYW5kCglwcmVzZXJ2ZXNfZmlyc3RfYXJnLiAgRW5sYXJnZSBkdW1teSBhY2NvcmRpbmdseS4KCShERUNMX1RJTkZPX0ZOX1ApOiBOZXcgbWFjcm8uCgkoU0VUX0RFQ0xfVElORk9fRk5fUCk6IExpa2Vpd3NlLgoJKERFQ0xfUkVUVVJOU19GSVJTVF9BUkcpOiBSZW1vdmUuCgkoREVDTF9QUkVTRVJWRVNfVEhJUyk6IExpa2V3aXNlLgoJKERFQ0xfSU5JVF9QUklPUklUWSk6IE5ldyBtYWNyby4KCShmaW5pc2hfc3RydWN0XzEpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGNhdF9uYW1lc3BhY2VfbGV2ZWxzKTogUmVtb3ZlIHByb3RvdHlwZS4KCSh2dGFibGVfZGVjbF9wKTogTmV3IHByb3RvdHlwZS4KCSh2dHlwZV9kZWNsX3ApOiBMaWtld2lzZS4KCShzaWd0YWJsZV9kZWNsX3ApOiBMaWtld2lzZS4KCSh3YWxrX2dsb2JhbHNfcHJlZCk6IE5ldyB0eXBlZGVmLgoJKHdhbGtfZ2xvYmFsc19mbik6IExpa2V3aXNlLgoJKHdhbGtfZ2xvYmFscyk6IE5ldyBwcm90b3R5cGUuCgkod2Fsa19uYW1lc3BhY2VzX2ZuKTogTmV3IHR5cGVkZWYuCgkod2Fsa19uYW1lc3BhY2VzKTogTmV3IHByb3RvdHlwZS4KCSh3cmFwdXBfZ2xvYmFsc19mb3JfbmFtZXNwYWNlKTogTGlrZXdpc2UuCgkod2Fsa192dGFibGVzKTogUmVtb3ZlIHByb3RvdHlwZS4KCSh3YWxrX3NpZ3RhYmxlcyk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX3BlbmRpbmdfdGVtcGxhdGVzKTogTmV3IHByb3RvdHlwZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkqIGRlY2wuaCAocGVuZGluZ19zdGF0aWNzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBkZWNsLmMgKHdhbGtfbmFtZXNwYWNlc19yKTogTmV3IGZ1bmN0aW9uLgoJKHdhbGtfZ2xvYmFsc19yKTogTGlrZXdpc2UuCgkodnRhYmxlX2RlY2xfcCk6IExpa2V3aXNlLgoJKHZ0eXBlX2RlY2xfcCk6IExpa2V3aXNlLgoJKHNpZ3RhYmxlX2RlY2xfcCk6IExpa2V3aXNlLgoJKHdhbGtfbmFtZXNwYWNlcyk6IExpa2V3aXNlLgoJKHdhbGtfZ2xvYmFsc19kYXRhKTogTmV3IHR5cGUuCgkod2Fsa19nbG9iYWxzKTogTmV3IGZ1bmN0aW9uLgoJKHdyYXB1cF9nbG9iYWxzX2Zvcl9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCShleHBhbmRfc3RhdGljX2luaXQpOiBSZW1vdmUgYXNzZXJ0aW9uLiAgUmVtb3ZlIHJlZHVuZGFuY3kgaW4KCWNvbmRpdGlvbmFsLiAgRG9uJ3QgcHV0IHN0YXRpYyBkYXRhIG1lbWJlcnMgaW4gc3RhdGljX2FnZ3JlZ2F0ZXMKCVRpZHkuCgkoZmluaXNoX2Z1bmN0aW9uKTogUmVtb3ZlIHJlZHVuZGFuY3kgaW4gY29uZGl0aW9uYWwuICBEb24ndCBzZXQKCURFQ0xfUkVUVVJOU19GSVJTVF9BUkcuCgkoY2F0X25hbWVzcGFjZV9sZXZlbHMpOiBSZW1vdmUuCgkqIGRlY2wyLmM6IEluY2x1ZGUgc3BsYXktdHJlZS5oIGFuZCB2YXJyYXkuaC4KCShwcmlvcml0eV9pbmZvX3MpOiBOZXcgc3RydWN0dXJlLgoJKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IENoYW5nZSBwcm90b3R5cGUuICBBZGp1c3QgZm9yIG5ldyBjYWxsaW5nCgljb252ZW50aW9ucy4KCShwcnVuZV92dGFibGVfdmFyZGVjbCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zaWd0YWJsZV92YXJkZWNsKTogTGlrZXdpc2UuCgkoc2V0dXBfaW5pdHApOiBSZW1vdmUuCgkoZG9fZHRvcnMpOiBSZW1vdmUuCgkoZG9fY3RvcnMpOiBSZW1vdmUuCgkoc3RhcnRfc3RhdGljX3N0b3JhZ2VfZHVyYXRpb25fZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoZ2VuZXJhdGVfaW5pdHNfZm9yX3ByaW9yaXR5KTogTGlrZXdpc2UuCgkoZmluaXNoX3N0YXRpY19zdG9yYWdlX2R1cmF0aW9uX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZ2V0X3ByaW9yaXR5X2luZm8pOiBMaWtld2lzZS4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCShkb19zdGF0aWNfZGVzdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCShkb19zdGF0aWNfaW5pdGlhbGl6YXRpb25fYW5kX2Rlc3RydWN0aW9uKTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVfY3Rvcl9vcl9kdG9yX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZ2VuZXJhdGVfY3Rvcl9hbmRfZHRvcl9mdW5jdGlvbnNfZm9yX3ByaW9yaXR5KTogTGlrZXdpc2UuCgkocGVuZGluZ19zdGF0aWNzKTogTWFrZSBpdCBhIHZhcnJheS4KCShwZW5kaW5nX3N0YXRpY3NfdXNlZCk6IE5ldyB2YXJpYWJsZS4KCShzYXZlZF9pbmxpbmVzKTogTWFrZSBpdCBhIHZhcnJheS4KCShzYXZlZF9pbmxpbmVzX3VzZWQpOiBOZXcgdmFyaWFibGUuCgkoZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcik6IENoYW5nZSBtZXRob2Qgb2YgdXBkYXRpbmcKCXBlbmRpbmdfc3RhdGljcy4KCShtYXJrX2lubGluZV9mb3Jfb3V0cHV0KTogUmVtb3ZlICNpZiAwJ2QgY29kZS4gIENoYW5nZSBtZXRob2Qgb2YKCXVwZGF0aW5nIHNhdmVkX2lubGluZXMuCgkod2Fsa192dGFibGVzKTogUmVtb3ZlLgoJKHdhbGtfc2lndGFibGVzKTogTGlrZXdpc2UuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogVXNlIERFQ0xfVElORk9fRk5fUC4KCShwZW5kaW5nX3RlbXBsYXRlcyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShtYXliZV90ZW1wbGF0ZXMpOiBMaWtld2lzZS4KCShzdGF0aWNfYWdncmVnYXRlc19pbml0cCk6IExpa2V3aXNlLgoJKHNldHVwX2luaXRwKTogTGlrZXdpc2UuCgkoZmluaXNoX29iamVjdHMpOiBTaW1wbGlmeS4KCShJTklUSUFMSVpFX1BfSURFTlRJRklFUik6IE5ldyBtYWNyby4KCShQUklPUklUWV9JREVOVElGSUVSKTogTmV3IG1hY3JvLgoJKFNTREZfSURFTlRJRklFUik6IE5ldyBtYWNyby4KCShpbml0aWFsaXplX3BfZGVjbCk6IE5ldyB2YXJpYWJsZS4KCShwcmlvcml0eV9kZWNsKTogTGlrZXdpc2UuCgkoc3NkZl9kZWNsKTogTGlrZXdpc2UuCgkocHJpb3JpdHlfaW5mb19tYXApOiBMaWtld2lzZS4KCShmaW5pc2hfZmlsZSk6IFJlY29kZSBvdXRwdXQgb2Ygc3RhdGljIGludGlhbGl6ZXJzIGFuZCBvdGhlcgoJZmlsZS1zY29wZSBmaW5hbGl6YXRpb24gdGFza3MuCgkqIGVycm9yLmMgKE9CX0VORF9URU1QTEFURV9JRCk6IE5ldyBtYWNyby4KCShkdW1wX3R5cGVfcmVhbCk6IFVzZSBpdC4KCShkdW1wX2RlY2wpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX25hbWUpOiBMaWtld2lzZS4KCSogbGV4LmMgKHNldF90eXBlZGVjbF9pbnRlcmZhY2VfaW5mbyk6IEFkanVzdCBmb3IgbmV3IHdhbGtfZ2xvYmFscwoJaW50ZXJmYWNlLgoJKGNoZWNrX25ld2xpbmUpOiBVc2Ugd2Fsa19nbG9iYWxzLCBub3Qgd2Fsa192dGFibGVzLgoJKiBwdC5jIChwZW5kaW5nX3RlbXBhbHRlX2V4cGFuc2lvbnMpOiBSZW1vdmUuCgkoc2V0X3ZhcmRlY2xfaW50ZXJmYWNlX2luZm8pOiBMaWtld2lzZS4KCShwZW5kaW5nX3RlbXBsYXRlcyk6IE1ha2Ugc3RhdGljLgoJKG1heWJlX3RlbXBsYXRlcyk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogQWRqdXN0IGNhbGwgdG8gZmluaXNoX3N0cnVjdF8xLgoJKGluc3RhbnRpYXRlX3BlbmRpbmdfdGVtcGxhdGVzKTogTmV3IGZ1bmN0aW9uLgoJKiBydHRpLmMgKGdldF90aW5mb19mbik6IFVzZSBTRVRfREVDTF9USU5GT19GTl9QLgoJKiB0cmVlLmMgKHN0YXRpY19hZ2dyZWdhdGVzX2luaXRwKTogUmVtb3ZlLgoJKGNwX3ZhbGlkX2xhbmdfYXR0cmlidXRlKTogRG9uJ3QgdXNlIGl0OyB1c2UgREVDTF9JTklUX1BSSU9SSVRZCglpbnN0ZWFkLgoJKiBNYWtlZmlsZS5pbiAoZGVjbDIubyk6IERlcGVuZCBvbiB2YXJyYXkuaCBhbmQgc3BsYXktdHJlZS5oLgoKCSogZ3h4LmdwZXJmIChSRVRVUk4pOiBSZW5hbWUgdG8gUkVUVVJOX0tFWVdPUkQgdG8gYXZvaWQgY2xhc2hlcwoJd2l0aCB0aGUgUlRMIGNvZGUgUkVUVVJOLgoJKiBoYXNoLmg6IFJlZ2VuZXJhdGVkLgoJKiBsZXguYyAocmVpbml0X3BhcnNlX2Zvcl9ibG9jayk6IFVzZSBSRVRVUk5fS0VZV09SRC4KCSogcGFyc2UueTogUmVwbGFjZSBSRVRVUk4gd2l0aCBSRVRVUk5fS0VZV09SRCB0aHJvdWdob3V0LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYzogSW5jbHVkZSB2YXJyYXkuaC4gIEluY2x1ZGUgcnRsLmggc2luY2UgdmFycmF5LmggcmVxdWlyZXMKCWl0LgoJKGlubGluZV9wYXJtX2xldmVscyk6IE5ldyB2YXJpYWJsZS4KCShpbmxpbmVfcGFybV9sZXZlbHNfdXNlZCk6IExpa2V3aXNlLgoJKG1heWJlX2JlZ2luX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogVXBkYXRlIHRoZW0uCgkobWF5YmVfZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogVXNlIHRoZW0sIHJhdGhlciB0aGFuCglndWVzc2luZyBob3cgbWFueSBsZXZlbHMgdG8gcG9wLgoKCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBUaWdodGVuIGVycm9yLWNoZWNraW5nLgoKMTk5OS0wNC0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfYmluYXJ5X29wKTogUmVtb3ZlIHVubmVlZGVkIHBhcmFtZXRlci4KCSogY2xhc3MuYyAoYnVpbGRfdnJhYmxlX2VudHJ5X3JlZik6IEFkanVzdCBjYWxsIHRvCglidWlsZF9iaW5hcnlfb3AuCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZGVsZXRlX3Nhbml0eSk6IExpa2V3aXNlLgoJKGRvX2R0b3JzKTogTGlrZXdpc2UuCgkoZG9fY3RvcnMpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF90eXBlX3N1ZmZpeCk6IExpa2V3aXNlLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogTGlrZXdpc2UuCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3KTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3XzEpOiBMaWtld2lzZS4KCShidWlsZF92ZWNfZGVsZXRlXzEpOiBMaWtld2lzZS4KCShleHBhbmRfdmVjX2luaXRfY2F0Y2hfY2xhdXNlKTogTGlrZXdpc2UuCgkoYnVpbGRfZGVsZXRlKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdCk6IExpa2V3aXNlLgoJKiBydHRpLmMgKHN5bnRoZXNpemVfdGluZm9fZm4pOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogTGlrZXdpc2UuCgkoZXhwYW5kX2RpcmVjdF92dGJsc19pbml0KTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IExpa2V3aXNlLgoJKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBMaWtld2lzZS4KCShwb2ludF9pbnRfc3VtKTogTGlrZXdpc2UuCgkocG9pbnRlcl9kaWZmKTogTGlrZXdpc2UuCgkoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogTGlrZXdpc2UuCgkoYnVpbGRfcHRybWVtZnVuYyk6IExpa2V3aXNlLgoJKGV4cGFuZF9wdHJtZW1mdW5jX2NzdCk6IExpa2V3aXNlLgoKMTk5OS0wNC0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogQWx3YXlzIGNhbGwgY3BsdXNfZGVjbF9hdHRyaWJ1dGVzLgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBQYXNzIGF0dHJsaXN0IHRvIGdyb2tkZWNsYXJhdG9yLgoKMTk5OS0wNC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX3N0YXRpY19kYXRhX21lbWJlcl9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsMi5jIChmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShncm9rZmllbGQpOiBIZXJlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFVzZSBpdCBoZXJlIGluc3RlYWQgb2YKCXRyeWluZyB0byBmYWtlIGl0LgoJKHRzdWJzdF9kZWNsKTogRG9uJ3Qgc2V0IERFQ0xfQVNTRU1CTEVSX05BTUU7CglmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wgd2lsbCBkbyB0aGF0LiAgRXhwbGljaXQgc2V0CglERUNMX0VYVEVSTkFMIHRvIG1hdGNoIG5vbi10ZW1wbGF0ZSBwcm9jZXNzaW5nLgoKMTk5OS0wNC0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBBZGQgcGFyYW1ldGVyLgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IFVzZSBpdC4gIERvbid0IGNhbGwgcG9wX3Njb3BlIGhlcmUuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBQb3AgaXQgaGVyZS4KCjE5OTktMDQtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHhyZWZfdGFnKTogUmV2aXNlIGhhbmRsaW5nIG9mIG5lc3RlZCB0ZW1wbGF0ZQoJZGVjbGFyYXRpb25zLgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFR3ZWFrIGhhbmRsaW5nIG9mIGZyaWVuZAoJdGVtcGxhdGVzIGluIHRlbXBsYXRlIGNsYXNzZXMuCgkodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IEhhbmRsZSBmcmllbmQgZGVjbGFyYXRpb25zIGZvciBuZXN0ZWQKCW1lbWJlciB0ZW1wbGF0ZSBjbGFzc2VzLgoKMTk5OS0wNC0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKHB1c2hjbGFzcyk6IExpa2V3aXNlLgoJKGludmFsaWRhdGVfY2xhc3NfbG9va3VwX2NhY2hlKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuZGVmIChUWVBFTkFNRV9UWVBFKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKiBkZWNsLmMgKGJ1aWxkX3R5cGVuYW1lX3R5cGUpOiBNYWtlIHN1cmUgVFlQRU5BTUVfVFlQRV9GVUxMTkFNRQoJZG9lc24ndCBnZXQgb2JsaXRlcmF0ZWQuCgkobWFrZV90eXBlbmFtZV90eXBlKTogSGFuZGxlIHRlbXBsYXRlIGNsYXNzZXMgY29ycmVjdGx5LgoKCSogY3AtdHJlZS5oIChUUkVFX05PTkxPQ0FMX0ZMQUcpOiBSZW1vdmUuCgkoc3RvcmV0YWdzKTogRGVjbGFyZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IERvbid0IHVzZSBUUkVFX05PTkxPQ0FMX0ZMQUcuCgkocHVzaGNsYXNzKTogTGlrZXdpc2UuICBVc2Ugc3RvcmV0YWdzIHRvIGluc3RhbGwgdGFnIGRlY2xhcmF0aW9ucywKCW5vdCBwdXNodGFnLgoJKGludmFsaWRhdGVfY2xhc3NfbG9va3VwX2NhY2hlKTogRG9uJ3QgdXNlIFRSRUVfTk9OTE9DQUxfRkxBRy4KCSogZGVjbC5jIChzdG9yZXRhZ3MpOiBNYWtlIGl0IGdsb2JhbC4KCShwdXNoX2NsYXNzX2JpbmRpbmcpOiBTZXQgSU5IRVJJVEVEX1ZBTFVFX0JJTkRJTkdfUCBmb3IgYW4KCWltcGxpY2l0IHR5cGVuYW1lIGRlY2xhcmF0aW9uLgoJKHB1c2h0YWcpOiBUaWR5LiAgRG9uJ3QgdXNlIFRSRUVfTk9OTE9DQUxfRkxBRy4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX21lbWJlcik6IExpa2V3aXNlLgoKCSogZGVjbC5jICh3YXJuX2Fib3V0X2ltcGxpY2l0X3R5cGVuYW1lX2xvb2t1cCk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfbmFtZV9yZWFsKTogVXNlIGl0LiAgUmV3b3JrIGhhbmRsaW5nIG9mIGltcGxpY2l0IHR5cGVuYW1lCglleHRlbnNpb24uCgoxOTk5LTA0LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsb29rdXBfbmVzdGVkX2ZpZWxkKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChwdXNoX25lc3RlZF9jbGFzcyk6IEhhbmRsZSBVTklPTl9UWVBFcy4KCShwb3BfbmVzdGVkX2NsYXNzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IERvbid0IGNhbGwgbG9va3VwX25lc3RlZF9maWVsZC4KCShzdGFydF9kZWNsKTogVXNlIHB1c2hfbmVzdGVkX2NsYXNzLCBub3QganVzdCBwdXNoY2xhc3MuCgkoY3BfZmluaXNoX2RlY2wpOiBVc2UgcG9wX25lc3RlZF9jbGFzcywgbm90IGp1c3QgcG9wY2xhc3MuCgkqIHNlYXJjaC5jIChsb29rdXBfbmVzdGVkX2ZpZWxkKTogUmVtb3ZlLgoKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBBZGQgZG9jdW1lbnRhdGlvbi4KCSogZGVjbDIuYyAoaGFuZGxlX2NsYXNzX2hlYWQpOiBDcmVhdGUgdGVtcGxhdGUgZGVjbGFyYXRpb25zIGhlcmUsCglhcyBhcHByb3ByaWF0ZS4KCSogcGFyc2UueSAoY2xhc3NfaGVhZCk6IFJldHVybiB3aGV0aGVyIG9yIG5vdCB3ZSBlbnRlcmVkIGEgbmV3CglzY29wZSwgYXMgd2VsbCBhcyB0aGUgdHlwZSBuYW1lZC4KCShuYW1lZF9jbGFzc19oZWFkKTogTGlrZXdpc2UuCgkobmFtZWRfY29tcGxleF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGUpOiBMaWtld2lzZS4KCShzdHJ1Y3RzcCk6IEFkanVzdCBhY2NvcmRpbmdseS4gIFBvcCBzY29wZSB3aGVuIHJlcXVpcmVkLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAoY2hlY2tfZGVmYXVsdF90bXBsX2FyZ3MpOiBSb2J1c3RpZnkuCgkocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBBbiBpbnN0YW50aWF0aW9uIG9mIGFuCglhbm9ueW1vdXMgdW5pb24gaXMgaXRzZWxmIGFuIGFub255bW91cyB1bmlvbi4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBEb24ndCBjcmVhdGUgdGVtcGxhdGUKCWRlY2xhcmF0aW9ucyBoZXJlLgoKMTk5OS0wNC0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoYWZ0ZXJfdHlwZV9kZWNsYXJhdG9yX2ludGVybik6IE5ldyBub250ZXJtaW5hbC4KCShhZnRlcl90eXBlX2RlY2xhcmF0b3IpOiBVc2UgaXQuCgkoZGlyZWN0X2FmdGVyX3R5cGVfZGVjbGFyYXRvcik6IExpa2V3aXNlLiAgTW92ZSBhYm92ZQoJbm9ubmVzdGVkX3R5cGUgdG8gZml4IHJlZHVjZS9yZWR1Y2UgY29uZmxpY3QgcmVzb2x1dGlvbi4KCShkZWNsbW9kcyk6IFJlZHVjaW5nIGZyb20ganVzdCAnYXR0cmlidXRlcycgaGFzIEVNUFRZIHByZWNlZGVuY2UuCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBVcGRhdGUuCgoJKiBkZWNsLmMgKGRlZmluZV9sYWJlbCk6IERvd25ncmFkZSBlcnJvciBmb3IganVtcGluZyBvdmVyIGEKCW5vbi1QT0QgZGVjbCB0byBwZWR3YXJuLgoKMTk5OS0wNC0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAocG9wY2xhc3MpOiBDaGFuZ2UgZGVjbGFyYXRpb24uCgkocG9wX25lc3RlZF9jbGFzcyk6IExpa2V3aXNlLgoJKHBvcGxldmVsX2NsYXNzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBjYWxsLmMgKGNvbnZlcnRfZGVmYXVsdF9hcmd1bWVudCk6IFBhc3Mgbm8gYXJndW1lbnRzIHRvCglwb3BjbGFzcy4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdCk6IExpa2V3aXNlLgoJKHBvcGNsYXNzKTogUmVtb3ZlIGFyZ3VtZW50LiAgU2ltcGxpZnkgY29kZSBhY2NvcmRpbmdseS4KCShwb3BfbmVzdGVkX2NsYXNzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocG9wbGV2ZWxfY2xhc3MpOiBEZWNsYXJlIGl0IGhlcmUsIGFuZCBtYWtlIGl0IHN0YXRpYy4KCShwb3BsZXZlbCk6IEhhbmRsZSBjbGFzcyBzY29wZXMuCgkocG9wbGV2ZWxfY2xhc3MpOiBEb24ndCB0YWtlIGFuIHJndW1lbnQuICBTaW1wbGlmeS4KCShwb3BfZXZlcnl0aGluZyk6IFBhc3Mgbm8gYXJndW1lbnRzIHRvIHBvcF9uZXN0ZWRfY2xhc3MuCgkoY3BfZmluaXNoX2RlY2wpOiBQYXNzIG5vIGFyZ3VtZW50cyB0byBwb3BjbGFzcy4KCShncm9rZGVjbGFyYXRvcik6IFBhc3Mgbm8gYXJndW1lbnRzIHRvIHBvcF9uZXN0ZWRfY2xhc3MuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKHBvcF9zY29wZSk6IFBhc3Mgbm8gYXJndW1lbnRzIHRvIHBvcGNsYXNzLgoJKiBsZXguYyAoZG9fcGVuZGluZ19kZWZhcmdzKTogUGFzcyBubyBhcmd1bWVudHMgdG8gcG9wX25lc3RlZF9jbGFzcy4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBNb3ZlIGNhbGwgdG8gcHVzaGNsYXNzLCBhbmQKCWRvY3VtZW50LiAgUGFzcyBubyBhcmd1bWVudHMgdG8gcG9wY2xhc3MuCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBMaWtld2lzZS4KCjE5OTktMDQtMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IEhhbmRsZSB0YWtpbmcgdGhlIGFkZHJlc3Mgb2YgYSB1bmlxdWUKCWJvdW5kIG5vbi1zdGF0aWMgbWVtYmVyIGZ1bmN0aW9uLgoKMTk5OS0wNC0xMyAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBsYW5nLW9wdGlvbnMuaCAoLVdkZXByZWNhdGVkKTogTmV3IGZsYWcuCgkqIGRlY2wyLmMgKHdhcm5fZGVwcmVjYXRlZCk6IE5ldyBmbGFnLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IERlcHJlY2F0ZWQgdGhpcy1pcy12YXJpYWJsZSwKCWV4dGVybmFsLXRlbXBsYXRlcywgYWx0LWV4dGVybmFsLXRlbXBsYXRlcy4KCVN1cHBvcnQgLVdkZXByZWNhdGVkLgoJKiBlcnJmbi5jIChjcF9kZXByZWNhdGVkKTogTmV3IGZ1bmN0aW9uLgoKMTk5OS0wNC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoc2V0dXBfaW5pdHApOiBDb21wYXJlIERFQ0xfQVNTRU1CTEVSX05BTUUgaW5zdGVhZAoJb2YgdGhlIGRlY2xzIHRoZW1zZWx2ZXMuCgoJKiBwdC5jICh0c3Vic3RfZnVuY3Rpb25fdHlwZSk6IENvcHkgYXR0cmlidXRlcyBvdmVyLgoKCSogdHJlZS5jIChjcF92YWxpZF9sYW5nX2F0dHJpYnV0ZSk6IE5ldyBmbi4gIEhhbmRsZSBpbml0X3ByaW9yaXR5CglhbmQgY29tX2ludGVyZmFjZS4KCSogY3AtdHJlZS5oOiBBZGQgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IHZhbGlkX2xhbmdfYXR0cmlidXRlLgoKMTk5OS0wNC0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IExvb2sgYXQgdGhlIGNvbnN0LW5lc3Mgb2YgdGhlIGZpZWxkJ3MKCXR5cGUsIG5vdCB0aGUgVFJFRV9SRUFET05MWS1uZXNzIG9mIHRoZSBkZWNsYXJhdGlvbi4KCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogQ2FsbCBjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCB3aGVuCgljcmVhdGluZyBuZXcgZGVjbGFyYXRpb25zLgoKMTk5OS0wNC0xMyAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogQmVjYXVzZSB2dGFibGVzIGFsd2F5cyByZWZlcmVuY2UKCXZpcnR1YWwgZnVuY3Rpb25zLCBldmVuIGlmIHRoZXkgYXJlIGlubGluZWQsIGRvbid0IGFsbG93CgktZm5vLWltcGxlbWVudC1pbmxpbmVzIHRvIG5vdCBlbWl0IHRoZW0sIGluc3RlYWQsIGVtaXQgdGhlbSB3aXRoCgl0aGUgdnRhYmxlLgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoxOTk5LTA0LTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX3R5cGUpOiBBZGQgY29tX2ludGVyZmFjZS4KCShDTEFTU1RZUEVfQ09NX0lOVEVSRkFDRSk6IE5ldyBtYWNyby4KCSogY2xhc3MuYyAoc2V0X3J0dGlfZW50cnkpOiBDT00gaW50ZXJmYWNlIGNsYXNzZXMgaGF2ZSBubyBSVFRJCgllbnRyaWVzIGluIHRoZWlyIHZ0YWJsZXM7IGFkanVzdC4KCShhZGRfdmlydHVhbF9mdW5jdGlvbiwgZmluaXNoX2Jhc2Vfc3RydWN0LCBza2lwX3J0dGlfc3R1ZmYsCgltb2RpZnlfb25lX3Z0YWJsZSwgZml4dXBfdnRhYmxlX2RlbHRhczEsIG92ZXJyaWRlX29uZV92dGFibGUsCglmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGJ1aWxkX2hlYWRvZiwgZ2V0X3RpbmZvX2ZuX2R5bmFtaWMpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGdldF9hYnN0cmFjdF92aXJ0dWFsc18xLCBnZXRfYWJzdHJhY3RfdmlydHVhbHMsCglleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGRlYnVnX2JpbmZvKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKENPTVBBUkVfTk9fQVRUUklCVVRFUyk6IE5ldyBtYWNyby4KCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IElmIHdlIGdldCBpdCwgaWdub3JlIGF0dHJpYnV0ZXMuCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBVc2UgQkFTRUxJTktfUC4gIENoYW5nZSBjb21wbGFpbgoJcGFyYW1ldGVyIHRvIGZsYWdzOyAyIG1lYW5zIGlnbm9yZSBhdHRyaWJ1dGVzLgoJKiBjYWxsLmMgKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogUGFzcyBpdC4KCgkqIGRlY2wuYyAoeHJlZl90YWcpOiBPbmx5IGNvbXBsYWluIG9uY2UgYWJvdXQgdXNpbmcgYSB0eXBlZGVmLW5hbWUKCXdpdGggJ3N0cnVjdCcuICBEb3duZ3JhZGUgdG8gcGVkd2Fybi4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBbGxvdyBbXSBzeW50YXggZm9yIHplcm8tbGVuZ3RoIGFycmF5LgoKCSogcGFyc2UueSAoYWJzZGNsX2ludGVybik6IE5ldyBub250ZXJtaW5hbC4KCShhYnNkY2wsIGRpcmVjdF9hYnN0cmFjdF9kZWNsYXJhdG9yKTogVXNlIGl0LgoKCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTG9vayB0aHJvdWdoIGltcGxpY3QgdHlwZW5hbWUuCgoxOTk5LTA0LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZnJpZW5kLmMgKGFkZF9mcmllbmQpOiBEZWFsIGdyYWNlZnVsbHkgd2l0aCBlcnJvcl9tYXJrX25vZGUuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IEhhbmRsZSBwb2ludGVycy10by1tZW1iZXJzIGFzCgl0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKCSogZGVjbC5jIChwdXNoX2JpbmRpbmcpOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMTk5OS0wNC0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9yZWFsKTogSWYgYSB0eXBlbmFtZSBpcyBhIHRlbXBsYXRlLWlkLCBwdXQKCW91dCB0aGUgdGVtcGxhdGUgYXJndW1lbnRzLgoJKGR1bXBfZXhwcik6IEhhbmRsZSBURU1QTEFURV9JRF9FWFBSLgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBOb3cgdGhhdCBmdWxsIGFyZ3VtZW50cyBhcmUKCWF2YWlsYWJsZSBldmVyeXdoZXJlLCByZW1vdmUgY29kZSB0aGF0IHRyaWVkIHRvIGd1ZXNzIHRoZW0uCgoxOTk5LTA0LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBDb21wbGFpbiBpZiB3ZSBkb24ndCBmaW5kIGEgdHlwZQoJd2hlbiB0cnlpbmcgdG8gbWFrZSBhIHR5cGVuYW1lIHR5cGUgZm9yIGEgbm9uLXRlbXBsYXRlIHR5cGUuCgoxOTk5LTA0LTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBQYXNzIGF0dHJpYnV0ZXMgdG8gZ3Jva2RlY2xhcmF0b3IuCgkoZ3Jva2RlY2xhcmF0b3IpOiBIYW5kbGUgYXR0cmlidXRlcyBvbiBjb25zdHJ1Y3Rvci1zeW50YXgKCWluaXRpYWxpemVycy4KCjE5OTktMDQtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBEb24ndCBjcmFzaCBvbiBJTkRJUkVDVF9SRUZzIHdob3NlIG9wZXJhbmRzCglkb24ndCBoYXZlIHR5cGVzLgoKCSogc2VhcmNoLmMgKHRlbXBsYXRlX3NlbGZfcmVmZXJlbmNlX3ApOiBUd2Vhay4KCjE5OTktMDQtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBEb24ndCBidWlsZCB5ZXQgYW5vdGhlciB3ZWlyZCBkYXRhCglzdHJ1Y3R1cmUgdG8gZGVzY3JpYmUgb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCgoxOTk5LTA0LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChCQVNFTElOS19QKTogTmV3IG1hY3JvLgoJKFNFVF9CQVNFTElOS19QKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBSZW1vdmUgbmVlZGxlc3MgYXNzaWdubWVudCBpbiBpZgoJc3RhdGVtZW50LgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkX3IpOiBGaXggaGFuZGxpbmcgd2hlbiB3ZSBhcmUgbG9va2luZwoJc3BlY2lmaWNhbGx5IGZvciBhIHR5cGU7IHRoZXNlIGFyZSBub3QgaGlkZGVuIGJ5IGZ1bmN0aW9ucyBhbmQKCXZhcmlhYmxlcy4KCShsb29rdXBfbWVtYmVyKTogVXNlIFNFVF9CQVNFTElOS19QLgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4pOiBVc2UgQkFTRUxJTktfUC4KCShyZWFsbHlfb3ZlcmxvYWVkX2ZuKTogTGlrZXdpc2UuCgkoZ2V0X2ZpcnN0X2ZuKTogTGlrZXdpc2UuCgoxOTk5LTA0LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9jdXJyZW50X2xldmVsKTogVHdlYWssIGFuZCBpbXByb3ZlCglkb2N1bWVudGF0aW9uLgoKCSogY2xhc3MuYyAobWF5YmVfZml4dXBfdnB0cnMpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoYnVpbGRfY2xhc3NfaW5pdF9saXN0KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBDYWxsIGNoZWNrX3RlbXBsYXRlX3NoYWRvdyBoZXJlCgkuLi4KCShwdXNoX2NsYXNzX2xldmVsX2JpbmRpbmcpOiAuLi4gbm90IGhlcmUuCgkqIHNlYXJjaC5jIChkZnNfcHVzaF90eXBlX2RlY2xzKTogT25seSBhdm9pZAoJdGVtcGxhdGUtc2VsZi1yZWZlcmVuY2UgVFlQRV9ERUNMcyBpZiB0aGV5IGFyZSBmcm9tIGJhc2UgY2xhc3Nlcy4KCjE5OTktMDQtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChjaGVja190ZW1wbGF0ZV9zaGFkb3cpOiBEb24ndCB0cmVhdCBPVkVSTE9BRHMgYXMgX0RFQ0wKCW5vZGVzLiAgVGlkeS4KCjE5OTktMDQtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKG1heWJlX2ZpeHVwX3ZwdHJzLCBidWlsZF9jbGFzc19pbml0X2xpc3QpOiBMb3NlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IERvbid0IGNhbGwgYnVpbGRfY2xhc3NfaW5pdF9saXN0LgoKMTk5OS0wNC0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRpbmZvLmggKF9fY2xhc3NfdHlwZV9pbmZvKTogRml4IGlsbGVnYWwgZGVjbGFyYXRpb24uCgoJKiBjcC10cmVlLmRlZiAoVEVNUExBVEVfSURfRVhQUik6IFVwZGF0ZSBjb21tZW50LgoJKiBjcC10cmVlLmggKElOSEVSSVRFRF9WQUxVRV9CSU5ESU5HX1ApOiBOZXcgbWFjcm8uCgkoSURFTlRJRklFUl9DTEFTU19WQUxVRSk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCShpc19wcm9wZXJseV9kZXJpdmVkX2Zyb20pOiBEZWNsYXJlLgoJKGludmFsaWRhdGVfY2xhc3NfbG9va3VwX2NhY2hlKTogTGlrZXdpc2UuCgkobWF5YmVfbWF5YmVfbm90ZV9uYW1lX3VzZWRfaW5fY2xhc3MpOiBMaWtld2lzZS4KCShub3RlX25hbWVfZGVjbGFyZWRfaW5fY2xhc3MpOiBMaWtld2lzZS4KCShwdXNoX3VzaW5nX2RlY2wpOiBSZW1vdmUgZHVwbGljYXRlIGRlY2xhcmF0aW9uLgoJKGlkX2luX2N1cnJlbnRfY2xhc3MpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkocHVzaF9jbGFzc19iaW5kaW5nKTogQ2hhbmdlIHByb3RvdHlwZS4KCShjbGVhcl9pZGVudGl0aWZlcl9jbGFzc192YWx1ZXMpOiBEZWNsYXJlLgoJKiBjYWxsLmMgKGlzX3Byb3Blcmx5X2Rlcml2ZWRfZnJvbSk6IE1ha2UgaXQgZ2xvYmFsLgoJKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogQmUgY2FyZWZ1bCBhYm91dCB1cGRhdGluZyBjYW5kaWRhdGVzLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IEhhbmRsZSBDT01QT05FTlRfUkVGcy4gIERvbid0IGNyYXNoIHdoZW4KCWFza2VkIHRvIG1ha2UgaWxsZWdhbCBjYWxscy4KCSogY2xhc3MuYzogSW5jbHVkZSBzcGxheS10cmVlLmguCgkoY2xhc3Nfc3RhY2tfbm9kZSk6IEFkZCBuYW1lc191c2VkIHNsb3QuCgkoY2hlY2tfbWVtYmVyX2RlY2xfaXNfc2FtZV9pbl9jb21wbGV0ZV9zY29wZSk6IFJlbW92ZS4KCShhZGRfbWV0aG9kKTogRml4IGNvbW1lbnQuICBQdXNoIHRoZSBkZWNsYXJhdGlvbiBpbnRvIGNsYXNzCglzY29wZS4KCShmaW5pc2hfc3RydWN0XzEpOiBXaGVuIHBvcHBpbmcgdGhlIGNsYXNzLCBwb3AgdGhlIGJpbmRpbmdzIHRvby4KCVJlbW92ZSBjaGVjayBmb3IgZGF0YSBtZW1iZXIvZnVuY3Rpb24gbWVtYmVyIGNvbmZsaWN0LgoJKGZpbmlzaF9zdHJ1Y3QpOiBSZW1vdmUgY2FsbHMgdG8KCWNoZWNrX21lbWJlcl9kZWNsX2lzX3NhbWVfaW5fY29tcGxldGVfc2NvcGUuICBDaGFuZ2UgY2FsbHMgdG8KCXBvcGNsYXNzLgoJKHB1c2hjbGFzcyk6IENsZWFyIG5hbWVzX3VzZWQgaW4gdGhlIGNsYXNzIHN0YWNrIGVudHJ5LgoJVXNlIGludmFsaWRhdGVfY2xhc3NfbG9va3VwX2NhY2hlIHRvIHJlbW92ZSBjYWNoZWQgZW50cmllcywgcmF0aGVyCgl0aGFuIG1hZ2ljIHZhbHVlcyB3aXRoIHBvcGNsYXNzLiAgQ2xlYXIgSURFTlRJRklFUl9DTEFTU19WQUxVRQoJYmVmb3JlIGVudGVyaW5nIGEgbmV3IGNsYXNzLiAgUmVtb3ZlIGRlYWQgY29kZS4gIERvbid0IG1lc3Mgd2l0aAoJY3VycmVudF9mdW5jdGlvbl9kZWNsIHdoZW4gcHVzaGluZyBkZWNsYXJhdGlvbnMuCgkoaW52YWxpZGF0ZV9jbGFzc19sb29rdXBfY2FjaGUpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIC4uLgoJKHBvcGNsYXNzKTogSGVyZS4gIENsZWFuIHVwIG5hbWVzX3VzZWQgb24gb3VyIHdheSBvdXQuCgkoaW5zdGFudGlhdGVfdHlwZSk6IEFkanVzdC4KCShidWlsZF9zZWxmX3JlZmVyZW5jZSk6IERvbid0IHB1c2ggdGhlIGRlY2xhcmF0aW9uIGhlcmUuCgkobWF5YmVfbm90ZV9uYW1lX3VzZWRfaW5fY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkobm90ZV9uYW1lX2RlY2xhcmVkX2luX2NsYXNzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoYWRkX2JpbmRpbmcpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGZpbmRfY2xhc3NfYmluZGluZ19sZXZlbCk6IE5ldyBmdW5jdGlvbi4KCShpbm5lcm1vc3Rfbm9uY2xhc3NfbGV2ZWwpOiBMaWtld2lzZS4KCShjdXJyZW50X2JpbmRpbmdfbGV2ZWwpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCShpbm5lcl9iaW5kaW5nX2xldmVsKTogUmVtb3ZlLiAgUmVwbGFjZSB3aXRoIGN1cnJlbnRfYmluZGluZ19sZXZlbAoJdGhyb3VnaG91dC4KCShwdXNoX2JpbmRpbmdfbGV2ZWwpOiBSZW1vdmUgc3BlY2lhbCBoYW5kbGluZyBvZgoJY2xhc3NfYmluZGluZ19sZXZlbC4KCShwb3BfYmluZGluZ19sZXZlbCk6IExpa2V3aXNlLiAgVXNlIGZpbmRfY2xhc3NfYmluZGluZ19sZXZlbC4KCShzdXNwZW5kX2JpbmRpbmdfbGV2ZWwpOiBMaWtld2lzZS4KCShnbG9iYWxfYmluZGluZ3NfcCk6IFVzZSBpbm5lcm1vc3Rfbm9uY2xhc3NfbGV2ZWwuCgkodG9wbGV2ZWxfYmluZGluZ3NfcCk6IExpa2V3aXNlLgoJKG5hbWVzcGFjZV9iaW5kaW5nc19wKTogTGlrZXdpc2UuCgkocHNldWRvX2dsb2JhbF9sZXZlbF9wKTogTGlrZXdpc2UuCgkocHVzaF9iaW5kaW5nKTogQ2xlYXIgSU5IRVJJVEVEX1ZBTFVFX0JJTkRJTkdfUC4KCShhZGRfYmluZGluZyk6IENoZWNrIGZvciBpbGxlZ2FsIG11bHRpcGxlIGRlY2xhcmF0aW9ucy4gIFJldHVybiBhCgl2YWx1ZSBpbmRpY2F0aW5nIHdoZXRoZXIgb3Igbm90IHRoZSBuZXcgYmluZGluZyB3YXMgbGVnYWwuCgkocHVzaF9sb2NhbF9iaW5kaW5nKTogU2tpcCBvdmVyIGNsYXNzIGJpbmRpbmcgbGV2ZWxzLiAgQ2hlY2sKCXJldHVybiB2YWx1ZSBmcm9tIGFkZF9iaW5kaW5nLgoJKHB1c2hfY2xhc3NfYmluZGluZyk6IFNldCBJTkhFUklURURfVkFMVUVfQklORElOR19QLiAgQ2FsbAoJbm90ZV9uYW1lX2RlY2xhcmVkX2luX2NsYXNzLgoJKHB1c2hsZXZlbF9jbGFzcyk6IFJlbW92ZSAiZmFrZSBvdXQgdGhlIHJlc3Qgb2YgdGhlIGNvbXBpbGVyIgoJY29kZS4KCShwb3BsZXZlbF9jbGFzcyk6IFJlc2V0IElERU5USUZJRVJfQ0xBU1NfVkFMVUVzLgoJKGNsZWFyX2lkZW50aWZpZXJfY2xhc3NfdmFsdWVzKTogTmV3IGZ1bmN0aW9uLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFVzZSBpdC4KCShwb3BfZXZlcnl0aGluZyk6IFR3ZWFrLgoJKG1heWJlX3Byb2Nlc3NfdGVtcGxhdGVfdHlwZV9kZWNsYXJhdGlvbik6IERvbid0IHB1c2ggdGhlCglkZWNsYXJhdGlvbiBmb3IgdGhlIHRlbXBsYXRlIGhlcmUuCgkocHVzaHRhZyk6IERvbid0IHB1c2ggdGFnIGRlY2xhcmF0aW9ucyBpbnRvIGNsYXNzIHNjb3BlIGhlcmUuCgkocHVzaGRlY2wpOiBBcHBseSBEZU1vcmdhbidzIGxhdyBmb3IgcmVhZGFiaWxpdHkuCgkocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBSZW1vdmUgc3BlY2lhbC1jYXNlIGNvZGUgZm9yCglUWVBFX0JFSU5HX0RFRklORUQuICBIYW5kbGUgT1ZFUkxPQURzIGFuZCBhbm9ueW1vdXMgdW5pb25zLgoJKHB1c2hfY2xhc3NfbGV2ZWxfYmluZG5nKTogRGVhbCB3aXRoIGluaGVyaXRlZCBiaW5kaW5ncy4KCShsb29rdXBfbmFtZV9yZWFsKTogUmVtb3ZlIHNwZWNpYWwtY2FzZSBjb2RlIGZvcgoJVFlQRV9CRUlOR19ERUZJTkVELCBhbmQgc29tZSBpbXBsaWNpdCB0eXBlbmFtZSBtYWdpYy4KCShncm9rZGVjbGFyYXRvcik6IEhhbmRsZSBDT01QT05FTlRfUkVGIGZvciBhIHRlbXBsYXRlIGZ1bmN0aW9uLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBEb24ndCBjYWxsIHB1c2hkZWNsX2NsYXNzX2xldmVsIGhlcmUuCgkoaWRfaW5fY3VycmVudF9jbGFzcyk6IFJlbW92ZS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogRG9uJ3QgY2FsbCBwdXNoZGVjbF9jbGFzc19sZXZlbCBvcgoJY2hlY2tfdGVtcGxhdGVfc2hhZG93LgoJKiBlcnJmbi5jIChjcF9maWxlX29mKTogRG9uJ3QgZGVjbGFyZS4KCShjcF9saW5lX29mKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEhhbmRsZSBhbiBPVkVSTE9BRC4KCShjcF9maWxlX29mKTogTGlrZXdpc2UuCgkoY3BfbGluZV9vZik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX21lbWJlcl9jYWxsKTogSGFuZGxlIGEgQ09NUE9ORU5UX1JFRi4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBDYWxsIG1heWJlX25vdGVfbmFtZV91c2VkX2luX2NsYXNzLCBub3QKCXB1c2hkZWNsX2NsYXNzX2xldmVsLgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogQnVpbGQgQ09NUE9ORU5UX1JFRnMgZm9yIHJlZmVyZW5jZXMKCXRvIG1lbWJlciB0ZW1wbGF0ZXMgYXMgd2VsbCBhcyBtZW1iZXIgZnVuY3Rpb25zLiAgUmVtb3ZlIGRlYWQKCWNvZGUuCgkqIHBhcnNlLnkgKGxlZnRfY3VybHkpOiBSZW1vdmUuCgkobm9ubmVzdGVkX3R5cGUpOiBDYWxsIG1heWJlX25vdGVfbmFtZV91c2VkX2luX2NsYXNzLCBub3QKCXB1c2hkZWNsX2NsYXNzX2xldmVsLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCShuZXN0ZWRfbmFtZV9zcGVjaWZpZXJfMSk6IExpa2V3aXNlLgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEFkanVzdCwgZm9yIHJvYnVzdG5lc3MuCgkoY2hlY2tfdGVtcGxhdGVfc2hhZG93KTogSGFuZGxlIE9WRVJMT0FEcy4KCShidWlsZF90ZW1wbGF0ZV9kZWNsKTogU2V0IERFQ0xfQ09OU1RSVUNUT1JfUCBvbiB0aGUKCVRFTVBMQVRFX0RFQ0wsIGlmIGFwcHJvcHJpYXRlLgoJKiBzZWFyY2guYyAoZW52ZWxvcGVfYWRkX2RlY2wpOiBSZW1vdmUuCgkoZGZzX3B1c2hkZWNscyk6IExpa2V3aXNlLgoJKGRmc19jb21wcmVzc19kZWNscyk6IExpa2V3aXNlLgoJKGRmc19wdXNoX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKGRmc19wdXNoX3R5cGVfZGVjbHMpOiBMaWtld2lzZS4KCShzZXR1cF9jbGFzc19iaW5kaW5ncyk6IExpa2V3aXNlLgoJKHRlbXBsYXRlX3NlbGZfcmVmZXJlbmNlX3ApOiBMaWtld2lzZS4KCShsb29rdXBfZmllbGRfcik6IFVzZSBpdC4KCShsb291cF9tZW1iZXIpOiBSZW1vdmUgb2xkIGNvbW1lbnQuICBEZWFsIHdpdGggYW1iaWd1aXR5LgoJKHB1c2hfY2xhc3NfZGVjbHMpOiBVc2UgZGZzX3B1c2hfZGVjbHMgYW5kIGRmc19wdXNoX3R5cGVfZGVjbHMsCglhbmQgcmVtb3ZlIGVudmVsb3BlIHByb2Nlc3NpbmcuCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogTGV0IHB1c2hjbGFzcyBwdXNoCglkZWNsYXJhdGlvbnMgZm9yIGJhc2UgY2xhc3Nlcy4KCShmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uKTogUHVzaCBkZWNsYXJhdGlvbnMgaW50byBjbGFzcyBzY29wZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBKdXN0IHB1dCBhbiBPVkVSTE9BRCBpbnRvIHRoZQoJQ09NUE9ORU5UX1JFRiwgbm90IGEgVFJFRV9MSVNUIG9mIGFuIE9WRVJMT0FELgoJKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IERlYWwgd2l0aCBPVkVSTE9BRC4gIEhhbmRsZSB0ZW1wbGF0ZS1pZHMuCgkqIE1ha2VmaWxlLmluIChjbGFzcy5vKTogRGVwZW5kIG9uIHNwbGF5LXRyZWUuaC4KCldlZCBNYXIgMzEgMTE6MzA6NDMgMTk5OSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGN2dC5jIChjb252ZXJ0X3BvaW50ZXJfdG9fcmVhbCk6IFVzZSBzYW1lX3R5cGVfcC4KCSogdHlwZWNrLmMgKGNvbXBfdGFyZ2V0X3R5cGVzKTogVXNlIHNhbWVfdHlwZV9wLgoKMTk5OS0wMy0zMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGJlZ2luX2lubGluZV9kZWZpbml0aW9ucywKCWZpbmlzaF9pbmxpbmVfZGVmaW5pdGlvbnMpOiBSZW5hbWUgZnJvbSBmaW5pc2hfZGVmYXVsdF9hcmdzIGFuZAoJYmVnaW5faW5saW5lX2RlZmluaXRpb25zLCByZXNwZWN0aXZlbHksIHRvIHNvbWV0aGluZyB0aGF0IGlzbid0IGEKCXRvdGFsIGxpZS4gIDopCgkqIHBhcnNlLnkgKHN0cnVjdHNwKTogQWRqdXN0LgoKCSogdHJlZS5jIChoYXNoX3RyZWVfY29ucyk6IFJlbW92ZSBvYnNvbGV0ZSB2aWFfKiBwYXJtcy4KCShsaXN0X2hhc2hfbG9va3VwKTogTGlrZXdpc2UuCgkoaGFzaF90cmVlX2NoYWluKTogQWRqdXN0LgoJKiBwdC5jICh0c3Vic3QpOiBBZGp1c3QuCgkodHN1YnN0X2FyZ190eXBlcyk6IFVzZSBwbGFpbiBoYXNoX3RyZWVfY29ucy4KCSogY3AtdHJlZS5oIChoYXNoX3RyZWVfY29uc19zaW1wbGUpOiBMb3NlLgoJKiBwYXJzZS55IChkZWNsbW9kcywgbm9uZW1wdHlfY3ZfcXVhbGlmaWVycyk6IFVzZSBoYXNoX3RyZWVfY29ucy4KCldlZCBNYXIgMzEgMTA6NDg6MjkgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGhhc2guaCk6IEdlbmVyYXRlIHVzaW5nIGdwZXJmIGxhbmd1YWdlICdDJywgbm90CgknS1ItQycsIHNvIGdwZXJmIHVzZXMgdGhlIGBjb25zdCcga2V5d29yZCBvbiBzdHJpbmdzLgoKCSogZ3h4LmdwZXJmIChyZXN3b3JkKTogQ29uc3QtaWZ5IGEgY2hhciouCgoxOTk5LTAzLTMwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKElERU5USUZJRVJfQVNfREVTQywgSURFTlRJRklFUl9BU19MSVNULAoJQ0xBU1NUWVBFX0JBU0VMSU5LX1ZFQywgQ0xBU1NUWVBFX05fU1VQRVJDTEFTU0VTLAoJQ0xBU1NUWVBFX05fQkFTRUNMQVNTRVMsIENMQVNTVFlQRV9NQVhfREVQVEgsCglDTEFTU1RZUEVfQkFTRV9JTklUX0xJU1QsIENMQVNTVFlQRV9BU19MSVNULCBDTEFTU1RZUEVfSURfQVNfTElTVCwKCUNMQVNTVFlQRV9CSU5GT19BU19MSVNUKTogUmVtb3ZlIGNydWZ0LgoJKiBjbGFzcy5jLCBsZXguYywgcGFyc2UueSwgcHRyZWUuYywgc2VhcmNoLmMsIHNlbWFudGljcy5jLAoJdHJlZS5jOiBBZGp1c3QuCgoxOTk5LTAzLTI5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBSZW1vdmUgLVdzaWduLXByb21vIGZyb20gLVdhbGwuCgoxOTk5LTAzLTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChmbl90eXBlX3VuaWZpY2F0aW9uKTogSWdub3JlICd0aGlzJyBwYXJtIGZyb20gY29udmVyc2lvbiBvcHMuCgoxOTk5LTAzLTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChhZGRfZnJpZW5kKTogRGVjbGFyZS4KCShhZGRfZnJpZW5kcyk6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoYWRkX2ZyaWVuZCk6IE1ha2UgaXQgZ2xvYmFsLiAgRG9uJ3QgYWRkIHRvCglERUNMX0JFRlJJRU5ESU5HX0NMQVNTRVMgaWYgdGhlIGJlZnJpZW5kaW5nIGNsYXNzIGlzIGEgdGVtcGxhdGUuCgkoYWRkX2ZyaWVuZHMpOiBNYWtlIGl0IGdsb2JhbC4KCShtYWtlX2ZyaWVuZF9jbGFzcyk6IERvbid0IGFkZCB0byBERUNMX0JFRlJJRU5ESU5HX0NMQVNTRVMgaWYgdGhlCgliZWZyaWVuZGluZyBjbGFzcyBpcyBhIHRlbXBsYXRlLgoJKiBwYXJzZS55IChjb21wb25lbnRfZGVjbF8xKTogRml4IHR5cG8gaW4gY29tbWVudC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogVXNlIGFkZF9mcmllbmQgYW5kCglhZGRfZnJpZW5kcyByYXRoZXIgdGhhdCBkdXBsaWNhdGluZyBzb21lIG9mIHRoZWlyIGZ1bmN0aW9uYWxpdHkKCWhlcmUuCgoxOTk5LTAzLTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX2ZpZWxkX2NhbGwpOiBVbmlmeSAndGhpcycgYW5kIG5vbi0ndGhpcycgY2FzZXMuCgoJKiB0eXBlY2suYyAoYnVpbGRfaW5kaXJlY3RfcmVmKTogQ2hlY2sgZm9yICd0aGlzJyBzb29uZXIuCgpGcmkgTWFyIDI2IDEwOjIwOjM0IDE5OTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAob3BfZXJyb3IpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShhZGRfY2FuZGlkYXRlLCBzb3VyY2VfdHlwZSwgYWRkX3dhcm5pbmcpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCShwcmludF96X2NhbmRpZGF0ZXMpOiBDb25zdC1pZnkgYSBjaGFyKi4KCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uLAoJZml4ZWRfdHlwZV9vcl9udWxsLCBidWlsZF92dGFibGVfZW50cnlfcmVmKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkoZ2V0X3Z0YWJsZV9uYW1lLCBmaW5pc2hfc3RydWN0XzEpOiBDb25zdC1pZnkgYSBjaGFyKi4KCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoKCSogZGVjbC5jIChyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UsIHJlY29yZF9idWlsdGluX3R5cGUsCglyZWNvcmRfdW5rbm93bl90eXBlLCBtZW1iZXJfZnVuY3Rpb25fb3JfZWxzZSwgYmFkX3NwZWNpZmllcnMpOgoJTGlrZXdpc2UuCgkoZmluZF9iaW5kaW5nLCBzZWxlY3RfZGVjbCwgdW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCwKCWxvb2t1cF9mbGFncywgcXVhbGlmeV9sb29rdXAsIHJlY29yZF9idWlsdGluX2phdmFfdHlwZSwgdGFnX25hbWUpOgoJQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkod2Fybl9leHRlcm5fcmVkZWNsYXJlZF9zdGF0aWMsIGR1cGxpY2F0ZV9kZWNscywgcHVzaGRlY2wsCglpbXBsaWNpdGx5X2RlY2xhcmUsIHJlY29yZF9idWlsdGluX2phdmFfdHlwZSwgZGVmaW5lX2Z1bmN0aW9uLAoJZ3Jva19vcF9wcm9wZXJ0aWVzLCB0YWdfbmFtZSk6IENvbnN0LWlmeSBhIGNoYXIqLgoKCSogY3AtdHJlZS5oIChGT1JNQVRfVkJBU0VfTkFNRSk6IEFsbG93IHBhcmFtZXRlciBgQlVGJyB0byBiZSBjb25zdC4KCShkZWZpbmVfZnVuY3Rpb24sIGZpbmlzaF9idWlsdGluX3R5cGUpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShjcF9lcnJvciwgY3BfZXJyb3JfYXQsIGNwX3dhcm5pbmcsIGNwX3dhcm5pbmdfYXQsIGNwX3BlZHdhcm4sCgljcF9wZWR3YXJuX2F0LCBjcF9jb21waWxlcl9lcnJvciwgY3Bfc3ByaW50Zik6IEFkZCBwcm90b3R5cGUgYXJncy4KCShmaWxlX25hbWVfbm9uZGlyZWN0b3J5KTogQ29uc3QtaWZ5IGEgY2hhciouCgkoaW5pdF9maWxlbmFtZV90aW1lcyk6IERvbid0IHByb3RvdHlwZS4KCShjb21waWxlcl9lcnJvcik6IFByb3RvdHlwZS4KCSh5eWVycm9yLCBpbml0X3JlcG8pOiBDb25zdC1pZnkgYSBjaGFyKi4KCShidWlsZF9zcmNsb2MpOiBEb24ndCBwcm90b3R5cGUuCgkoYnVpbGRfeF9pbmRpcmVjdF9yZWYsIGJ1aWxkX2luZGlyZWN0X3JlZiwgYnVpbGRfY29tcG9uZW50X2FkZHIpOgoJQ29uc3QtaWZ5IGEgY2hhciouCgkod2Fybl9mb3JfYXNzaWdubWVudCk6IERvbid0IHByb3RvdHlwZS4KCShjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbiwgcmVhZG9ubHlfZXJyb3IsIGNoZWNrX2Zvcl9uZXdfdHlwZSwKCUdOVV94cmVmX2JlZ2luLCBHTlVfeHJlZl9maWxlLCBHTlVfeHJlZl9yZWYsIEdOVV94cmVmX2NhbGwpOgoJQ29uc3QtaWZ5IGEgY2hhciouCgoJKiBkZWNsMi5jIChhY2NlcHRhYmxlX2phdmFfdHlwZSwgb3V0cHV0X3Z0YWJsZV9pbmhlcml0LAoJc2V0dXBfaW5pdHAsIHN0YXJ0X29iamVjdHMsIGZpbmlzaF9vYmplY3RzLCBkb19kdG9ycywgZG9fY3RvcnMsCgltZXJnZV9mdW5jdGlvbnMsIGRlY2xfbmFtZXNwYWNlLCB2YWxpZGF0ZV9ub25tZW1iZXJfdXNpbmdfZGVjbCwKCWRvX25vbm1lbWJlcl91c2luZ19kZWNsKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkobGFuZ19mX29wdGlvbnMpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShmaW5pc2hfYnVpbHRpbl90eXBlKTogTGlrZXdpc2UuCgkoYWRkX2Z1bmN0aW9uLCBhcmdfYXNzb2NfbmFtZXNwYWNlLCBhcmdfYXNzb2NfY2xhc3MpOiBBZGQgc3RhdGljCglwcm90b3R5cGUuCgoJKiBlcnJmbi5jOiBJbmNsdWRlIGNwLXRyZWUuaC4KCShjcF90aGluZyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKGNvbXBpbGVyX2Vycm9yKTogRG9uJ3QgcHJvdG9wdHlwZS4KCShjcF9jb21waWxlcl9lcnJvcik6IENhc3QgYGNvbXBpbGVyX2Vycm9yJyB0byBgZXJyb3JmbicgYmVmb3JlCglwYXNzaW5nIGl0IHRvIGBjcF90aGluZycuCgoJKiBlcnJvci5jIChpbnRlcmVzdGluZ19zY29wZV9wKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBleGNlcHQuYyAoYnVpbGRfZWhfdHlwZV90eXBlLCBidWlsZF9laF90eXBlX3R5cGVfcmVmKTogQ29uc3QtaWZ5CglhIGNoYXIqLgoKCSogaW5pdC5jIChjb21waWxlcl9lcnJvcik6IERvbid0IHByb3RvdHlwZS4KCShtZW1iZXJfaW5pdF9va19vcl9lbHNlKTogQ29uc3QtaWZ5IGEgY2hhciouCgkoYnVpbGRfamF2YV9jbGFzc19yZWYpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCgkqIGxleC5jIChjb21waWxlcl9lcnJvcik6IERvbid0IHByb3RvdHlwZS4KCShnZXRfdGltZV9pZGVudGlmaWVyLCBpbnRlcmZhY2Vfc3RyY21wLCBleHRlbmRfdG9rZW5fYnVmZmVyLAoJaGFuZGxlX2NwX3ByYWdtYSk6IENvbnN0LWlmeSBhIGNoYXIqLgoJKGlzX2dsb2JhbCwgaW5pdF9maWxlbmFtZV90aW1lcyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKGZpbGVfbmFtZV9ub25kaXJlY3RvcnksIGNwbHVzX3RyZWVfY29kZV9uYW1lKTogQ29uc3QtaWZ5IGEgY2hhciouCgkoY29tcGlsZXJfZXJyb3IpOiBDaGFuZ2UgZnJvbSBmaXhlZCBhcmdzIHRvIHZhcmlhYmxlIGFyZ3MuCgkoeXllcnJvcik6IENvbnN0LWlmeSBhIGNoYXIqLgoKCSogcGFyc2UueSAoY29uZF9zdG10X2tleXdvcmQpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShwYXJzZV9kZWNsKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgoJKiBwdC5jICh0ZW1wbGF0ZV9hcmdzX2VxdWFsLCBwcmludF90ZW1wbGF0ZV9jb250ZXh0KTogTGlrZXdpc2UuCgkocHJpbnRfY2FuZGlkYXRlcywgY2hlY2tfZGVmYXVsdF90bXBsX2FyZ3MpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoKCSogcmVwby5jIChnZXRfYmFzZV9maWxlbmFtZSwgb3Blbl9yZXBvX2ZpbGUsIGluaXRfcmVwbyk6IExpa2V3aXNlLgoKCSogcnR0aS5jIChjYWxsX3ZvaWRfZm4sIGV4cGFuZF9nZW5lcmljX2Rlc2MsIGV4cGFuZF9zaV9kZXNjLAoJZXhwYW5kX2NsYXNzX2Rlc2MsIGV4cGFuZF9wdHJfZGVzYywgZXhwYW5kX2F0dHJfZGVzYyk6IExpa2V3aXNlLgoKCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZF9pbmZvLCBsb29rdXBfbWVtYmVyKTogTGlrZXdpc2UuCgkobG9va3VwX21lbWJlcik6IENhc3QgdGhlIGZpcnN0IGFyZ3VtZW50IG9mIGBiemVybycgdG8gYSBQVFIuCgoJKiBzaWcuYyAoY29tcGlsZXJfZXJyb3IpOiBEb24ndCBwcm90b3R5cGUuCgkoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfb3JfcmVmZXJlbmNlX25hbSk6IENvbnN0LWlmeSBhIGNoYXIqLgoJKGdldF9zaWd0YWJsZV9uYW1lLCBidWlsZF9tZW1iZXJfZnVuY3Rpb25fcG9pbnRlcik6IExpa2V3aXNlLgoKCSogdHJlZS5jIChjb21waWxlcl9lcnJvcik6IERvbid0IHByb3RvdHlwZS4KCShub19saW5rYWdlX2hlbHBlciwgYnVpbGRfc3JjbG9jKTogQWRkIHN0YXRpYyBwcm90b3R5cGUuCgkoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShfX2VwcmludGYpOiBEb24ndCB1bm5lY2Vzc2FyaWx5IGhhbmRsZSBgY29uc3QnIHdoZW4gIV9fU1REQ19fLgoKCSogdHlwZWNrLmMgKGNvbXBpbGVyX2Vycm9yKTogRG9uJ3QgcHJvdG90eXBlLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBDb25zdC1pZnkgYSBjaGFyKi4KCShjb21wX2N2X3RhcmdldF90eXBlcyk6IEFkZCBzdGF0aWMgcHJvdG90eXBlLgoJKGJ1aWxkX3hfaW5kaXJlY3RfcmVmLCBidWlsZF9pbmRpcmVjdF9yZWYsIGNvbnZlcnRfYXJndW1lbnRzLAoJYnVpbGRfY29tcG9uZW50X2FkZHIsIGJ1aWxkX3VuYXJ5X29wLCBjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6CglDb25zdC1pZnkgYSBjaGFyKi4KCgkqIHR5cGVjazIuYyAoYWNrKTogQWRkIHN0YXRpYyBwcm90b3R5cGUgYW5kIGNoYW5nZSBmcm9tIGZpeGVkIGFyZ3MKCXRvIHZhcmlhYmxlIGFyZ3MuCgkocmVhZG9ubHlfZXJyb3IsIGNoZWNrX2Zvcl9uZXdfdHlwZSk6IENvbnN0LWlmeSBhIGNoYXIqLgoKCSogeHJlZi5jIChfWFJFRl9GSUxFLCBmaW5kX2ZpbGUsIGZpbGVuYW1lLCBmY3RuYW1lLCBkZWNsbmFtZSwKCWZpeG5hbWUsIG9wZW5feHJlZl9maWxlLCBjbGFzc25hbWUsIEdOVV94cmVmX2JlZ2luKTogTGlrZXdpc2UuCgkoR05VX3hyZWZfZmlsZSk6IExpa2V3aXNlLiAgQWxzbyB1c2UgYHhtYWxsb2MnIGluc3RlYWQgb2YgYG1hbGxvYycuCgkoR05VX3hyZWZfZW5kX3Njb3BlLCBHTlVfeHJlZl9yZWYsIEdOVV94cmVmX2RlY2wsIEdOVV94cmVmX2NhbGwsCglnZW5fYXNzaWduLCBHTlVfeHJlZl9tZW1iZXIpOiBDb25zdC1pZnkgYSBjaGFyKi4KCjE5OTktMDMtMjUgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBneHhpbnQudGV4aTogUmVtb3ZlIG9sZCBkaXNjdXNzaW9uIG9uIGNvcHlpbmcgdmlydHVhbCBiYXNlcy4KCjE5OTktMDMtMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkuY29sdW1iaWEuZWR1PgoKCSogTWFrZS1sYW5nLmluOiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gZysrLm8vZysrLmMuCglMaW5rIGcrKyBmcm9tIGdjYy5vLgoKMTk5OS0wMy0yNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoY29tZGF0X2xpbmthZ2UpOiBUcmVhdCB2dGFibGVzIGxpa2UgZnVuY3Rpb25zLgoKMTk5OS0wMy0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogdHN1YnN0IGludG8gREVDTF9CRUZSSUVORElOR19DTEFTU0VTLgoKMTk5OS0wMy0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgYHNpZ25lZCcgdHlwZSBhcyBhIHN5bm9ueW0KCWZvciBgaW50Jy4KCjE5OTktMDMtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb21tb25fdHlwZSk6IEhhbmRsZSBjdi1xdWFsIHVuaWZpY2F0aW9uIGZvciBwb2ludGVycwoJdG8gbWVtYmVycy4KCgkqIGRlY2wuYyAodW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCk6IFJldHVybiBlcnJvcl9tYXJrX25vZGUKCW9uIGVycm9yLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBTZXQgTE9PS1VQX0NPTVBMQUlOIHdoZW4gKm5vdCogcGFyc2luZy4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBJZiB3ZSBnb3QgZXJyb3JfbWFya19ub2RlLCBjYWxsCglsb29rdXBfbmFtZSBhZ2Fpbi4KCjE5OTktMDMtMjQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBBbHdheXMgcmVzZXQgVFlQRV9GSUVMRFMgZm9yIGVtcHR5CgljbGFzc2VzLgoKMTk5OS0wMy0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogRG8gbmVzdGVkIGZpZWxkIGxvb2t1cCByZWdhcmRsZXNzIG9mCglUWVBFX0JFSU5HX0RFRklORUQuCgoxOTk5LTAzLTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBSZW1vdmUgaGFzX2Fzc2lnbm1lbnQgYW5kCgloYXNfcmVhbF9hc3NpZ25tZW50LiAgQWRkIGJlZnJpZW5kaW5nX2NsYXNzZXMuCgkoVFlQRV9IQVNfQVNTSUdOTUVOVCk6IFJlbW92ZS4KCShUWVBFX0hBU19SRUFMX0FTU0lHTk1FTlQpOiBMaWtld2lzZS4KCShDTEFTU1RZUEVfQkVGUklFTkRJTkdfQ0xBU1NFUyk6IE5ldyBtYWNyby4KCShsYW5nX2RlY2wpOiBEb2N1bWVudC4KCShERUNMX0JFRlJJRU5ESU5HX0NMQVNTRVMpOiBOZXcgbWFjcm8uCgkoRlJJRU5EX05BTUUpOiBNb3ZlIGRlY2xhcmF0aW9uIHRvIG1vcmUgb2J2aW91cyBsb2NhdGlvbi4KCShGUklFTkRfREVDTFMpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRG9uJ3QgdXNlIFRZUEVfSEFTX1JFQUxfQVNTSUdOTUVOVC4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDb3B5IERFQ0xfQkVGUklFTkRJTkdfQ0xBU1NFUy4KCShmaXh1cF9hbm9ueW1vdXNfdW5pb24pOiBEb24ndCB1c2UgVFlQRV9IQVNfQVNTSUdOTUVOVC4KCShncm9rX29wX3Byb3BlcnRpZXMpOiBMaWtld2lzZS4KCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IFVzZSBGUklFTkRfTkFNRSBhbmQgRlJJRU5EX0RFQ0xTLgoJKGFkZF9mcmllbmQpOiBMaWtld2lzZS4gIERvbid0IGRvIHdlaXJkIHRoaW5ncyB3aXRoIGFzc2lnbm1lbnQKCW9wZXJhdG9ycy4gIFVwZGF0ZSBERUNMX0JFRlJJRU5ESU5HX0NMQVNTRVMuCgkoYWRkX2ZyaWVuZHMpOiBEb24ndCBkbyB3ZWlyZCB0aGluZ3Mgd2l0aCBhc3NpZ25tZW50IG9wZXJhdG9ycy4KCShtYWtlX2ZyaWVuZF9jbGFzcyk6IExpa2V3aXNlLiAgVXBkYXRlCglDTEFTU1RZUEVfQkVGUklFTkRJTkdfQ0xBU1NFUy4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBEb24ndCBzZXQKCVRZUEVfSEFTX0FTU0lHTk1FTlQuCgkodHN1YnN0X2NvcHkpOiBTdWJzdGl0dXRlIHRoZSBUUkVFX1RZUEUgZm9yIG1vcmUgdW5hcnkKCWV4cHJlc3Npb25zLgoJKiBwdHJlZS5jIChwcmludF9sYW5nX3R5cGUpOiBEb24ndCBsb29rIGF0IFRZUEVfSEFTX0FTU0lHTk1FTlQuCgkqIHNlYXJjaC5jIChwcm90ZWN0ZWRfYWNjZXNzaWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGZyaWVuZF9hY2Nlc3NpYmxlX3ApOiBMaWtld2lzZS4KCShhY2Nlc3NpYmxlX3ApOiBVc2UgdGhlbS4KCjE5OTktMDMtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBEb24ndCBjcmVhdGUgdGhpbmdzIHRoYXQgYXJlbid0CglQVFJNRU1fQ1NUcyB3aGVuIGFwcGx5aW5nIGEgcXVhbGlmaWNhdGlvbiBjb252ZXJzaW9uIHRvIGEKCVBUUk1FTV9DU1QuCgoxOTk5LTAzLTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKE9CSlMpOiBEb24ndCBtZW50aW9uIGhhc2guby4KCShPQkpERVBTKTogTGlrZXdpc2UuCgoxOTk5LTAzLTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IFNldCBhdF9lb2YgdG8gMiBhZnRlciBleHBhbmRpbmcgY3RvcnMuCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogTWFrZSBzdXJlIHdlIGRvbid0IGFkZCBhbnkgYWZ0ZXIKCXRoZW4uCgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogTW92ZSBpbnRlbGxpZ2VuY2UgYWJvdXQgaGFuZGxpbmcKCURFQ0xfQ09NREFUIGZvciB2YXJpYWJsZXMgZnJvbSBoZXJlLi4uCgkqIGRlY2wyLmMgKGNvbWRhdF9saW5rYWdlKTogLi4udG8gaGVyZS4KCShtYXliZV9tYWtlX29uZV9vbmx5KTogVHdlYWsuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogQ2FsbCBjb21kYXRfbGlua2FnZSBmb3IgdmFyaWFibGVzLCB0b28uCgkoZmluaXNoX2ZpbGUpOiBIYW5kbGUgdGVtcGxhdGUgc3RhdGljcyBwcm9wZXJseS4KCjE5OTktMDMtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKFRZUEVfUFRSTUVNRlVOQ19QKTogVXNlIFRZUEVfUFRSTUVNRlVOQ19GTEFHLgoJRG9jdW1lbnQgaW50ZXJuYWxzIG9mIHBvaW50ZXItdG8tbWVtYmVyLWZ1bmN0aW9ucy4KCShERUxUQTJfRlJPTV9QVFJNRU1GVU5DKTogTWFrZSBpdCBjYWxsIGRlbHRhMl9mcm9tX3B0cm1lbWZ1bmMuCgkoUEZOX0ZST01fUFRSTUVNRlVOQyk6IExpa2V3aXNlLgoJKGJ1aWxkX3R5cGVfY29udmVyc2lvbik6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLgoJKGJ1aWxkX3B0cm1lbWZ1bmMxKTogRGVjbGFyZS4KCShleHBhbmRfcHRybWVtZnVuY19jc3QpOiBOZXcgZnVuY3Rpb24uCgkoZGVsdGEyX2Zyb21fcHRybWVtZnVuYyk6IExpa2V3aXNlLgoJKHBmbl9mcm9tX3B0cm1lbWZ1bmMpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyIHRvCglidWlsZF90eXBlX2NvbnZlcnNpb24uICBVc2UgVFlQRV9QVFJNRU1fUCBmb3IgcmVhZGFiaWxpdHkuCgkoY29udmVydF90b19yZWZlcmVuY2UpOiBSZW1vdmUgdW51c2VkIHBhcmFtZXRlciB0bwoJYnVpbGRfdHlwZV9jb252ZXJzaW9uLgoJKG9jcF9jb252ZXJ0KTogTGlrZXdpc2UuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIE5VTEwgcG9pbnRlci10by1tZW1iZXIgZnVuY3Rpb25zLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogSGFuZGxlIFBUUk1FTV9DU1RzIGZvciBmdW5jdGlvbnMuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IERvbid0IGdvIHNwbGl0dGluZyBDT05TVFJVQ1RPUnMKCW9wZW4gd2hlbiBoYW5kbGluZyBwb2ludGVyLXRvLW1lbWJlciBmdW5jdGlvbnMuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IENsZWFuIHVwIGVycm9yIG1lc3NhZ2VzLiAgQmUKCW1vcmUgc3RyaW5nZW50IHdpdGggcG9pbnRlcnMtdG8tbWVtYmVycy4KCSogdHlwZWNrLmMgKGJ1aWxkX3B0cm1lbWZ1bmMxKTogRG9uJ3QgZGVjbGFyZS4gIE1ha2UgaXQgZ2xvYmFsLgoJKGJ1aWxkX3VuYXJ5X29wKTogVGlkeSBldmVyLXNvLXNsaWdodGx5LgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBSZW1vdmUgZXh0cmEgcGFyYW1ldGVyIHRvCglidWlsZF90eXBlX2NvbnZlcnNpb24uCgkoYnVpbGRfcHRybWVtZnVuYyk6IEJ1aWxkIFBUUk1FTV9DU1RzIGlmIHdlIGtub3cgd2hhdCBmdW5jdGlvbgoJd2UncmUgdXNpbmcuCgkoZXhwYW5kX3B0cm1lbWZ1bmNfY3N0KTogRGVmaW5lLgoJKGRlbHRhMl9mcm9tX3B0cm1lbWZ1bmMpOiBMaWtld2lzZS4KCShwZm5fZnJvbV9wdHJtZW1mdW5jKTogTGlrZXdpc2UuCgoxOTk5LTAzLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IEhhbmRsZSB0ZW1wbGF0ZS1pZCBleHByZXNzaW9ucwoJY29ycmVjdGx5LgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgoxOTk5LTAzLTE5ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBlcmxzdXBwb3J0LmNvbT4KCgkqIGZyaWVuZC5jIChtYWtlX2ZyaWVuZF9jbGFzcyk6IEF2b2lkIGNvcmUgZHVtcCB3aGVuCglub3QteWV0LWRlZmluZWQgZnJpZW5kIHR5cGUgbGFja3MgVFlQRV9MQU5HX1NQRUNJRklDKCkuCgoxOTk5LTAzLTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogU3VwcHJlc3Mgbm9ybWFsIGxpbmthZ2UgaGV1cmlzdGljcwoJZm9yICNwcmFnbWEgaW50ZXJmYWNlIHVuZGVyIE1VTFRJUExFX1NZTUJPTF9TUEFDRVMuCgoxOTk5LTAzLTE5ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIE1ha2UtbGFuZy5pbjogKCQoSU5UTF9UQVJHRVRTKSk6IERlcGVuZCBvbiBjcC9wYXJzZS5jLgoJKCQoc3JjZGlyKS9jcC9wYXJzZS5jKTogTW92ZWQgZnJvbSAuLi9NYWtlZmlsZS5pbi4KCjE5OTktMDMtMTcgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBwYXJzZS55IChuYW1lZF9jb21wbGV4X2NsYXNzX2hlYWRfc2Fuc19iYXNldHlwZSk6CglEbyBub3QgcHVzaCBhIHNjb3BlIGZvciBlcnJvcl9tYXJrX25vZGUuCgkobWF5YmVfYmFzZV9jbGFzc19saXN0KTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlIGFzIGEgdHlwZS4KCURldGVjdGVkIGJ5IGcrKy5icmVuZGFuL2FycmF5LXJlZnMuQy4KCShzdGFydF9kZWNsXzEpOiBMaWtld2lzZS4gIERldGVjdGVkIGJ5IGcrKy5idWdzLzkwMDMyMl8wMS5DLgoJKG1heWJlX2J1aWxkX2NsZWFudXBfMSk6IExpa2V3aXNlLiAgRGV0ZWN0ZWQgYnkKCWcrKy5qYXNvbi9pbmNvbXBsZXRlMS5DLgoKCSogdHJlZS5jIChidWlsZF9kdW1teV9vYmplY3QpOiBVc2Ugdm9pZF96ZXJvX25vZGUgaW5zdGVhZCBvZiB0aGUKCWVycm9yX21hcmtfbm9kZS4KCShpc19kdW1teV9vYmplY3QpOiBDaGVjayBmb3Igc3VjaCBhIG5vZGUuCglEZXRlY3RlZCBieSBnKysuYm9iL2luaGVyaXQxLkMKCjE5OTktMDMtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChvbGRfYmFja3JlZl9pbmRleCk6IFNwbGl0IG91dC4uLgoJKGZsdXNoX3JlcGVhdHMpOiBGcm9tIGhlcmUuICBSZW5hbWUgYmFjayBmcm9tIHRyeV9vbGRfYmFja3JlZi4KCShidWlsZF9tYW5nbGVkX25hbWUpOiBQdXQgYmFjayBzb21lIG9sZC1zdHlsZSByZXBlYXQgaGFuZGxpbmcuCgpNb24gTWFyIDE1IDIxOjU3OjE2IDE5OTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGxleC5jOiBEb24ndCBpbmNsdWRlIHNldGptcC5oLgoJKHBhcnNlX2Zsb2F0KTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShwZl9hcmdzKTogTmV3IHN0cnVjdC4KCShyZWFsX3l5bGV4KTogVXNlIHRoZW0gaW4gY2FsbCB0byBgZG9fZmxvYXRfaGFuZGxlcicuCgoxOTk5LTAzLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IFNldCBDTEFTU1RZUEVfVkJBU0VDTEFTU0VTIGhlcmUuCgkqIHRyZWUuYyAobGF5b3V0X2Jhc2V0eXBlcyk6IE5vdCBoZXJlLgoJKiBzZWFyY2guYyAoZGZzX3NlYXJjaCk6IFJlbW92ZTsgbm8gbG9uZ2VyIHVzZWQuCgoxOTk5LTAzLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbDIuYyAodmFsaWRhdGVfbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBJc3N1ZSBzZW5zaWJsZQoJZXJyb3ItbWVzc2FnZXMgb24gYm9ndXMgcXVhbGlmaWVycy4KCjE5OTktMDMtMTQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IEZpeCB1bmluaXRpYWxpemVkIHZhcmlhYmxlLgoKCSogTWFrZWZpbGUuaW4gKHNlYXJjaC5vKTogQWRkIGRlcGVuZGVuY3kgb24gdmFycmF5LmguCgoxOTk5LTAzLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFVzZSBzYW1lX3R5cGVfcC4KCSogbWV0aG9kLmMgKHRyeV9vbGRfYmFja3JlZik6IFJlbmFtZWQgZnJvbSBmbHVzaF9yZXBlYXRzLiAgVXNlCglzYW1lX3R5cGVfcC4gIERvbid0IHRyeSB0byBoYW5kbGUgcmVwZWF0cy4gIFJldHVybiBzdWNjZXNzLgoJKGlzX2JhY2tfcmVmZXJlbmNlYWJsZV90eXBlKTogUmV0dXJuIDAgaWYgVFlQRV9GT1JfSkFWQS4gIFN1cHBvcnQKCWNhbGxzIGZyb20gb2xkLXN0eWxlIGNvZGUsIHRvby4KCShjaGVja19rdHlwZSk6IFVzZSBzYW1lX3R5cGVfcC4KCShjaGVja19idHlwZSk6IFVzZSBzYW1lX3R5cGVfcC4gIERvbid0IHB1bGwgb3V0IFRZUEVfTUFJTl9WQVJJQU5ULgoJKGJ1aWxkX3F1YWxpZmllZF9uYW1lKTogU2ltcGxpZnkgbG9naWMuCgkocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogU3RyaXAgdHlwZWRlZnMgYW5kIHF1YWxzIGF0IHRoZSB0b3AuCgkoYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlX3dpdGhfR2NvZGUpOiBSZW1vdmUgY2FsbCB0bwoJdHlwZV9jYW5vbmljYWxfdmFyaWFudC4KCShidWlsZF9tYW5nbGVkX25hbWUpOiBMaWtld2lzZS4gIFJlbW92ZSBzdXBwb3J0IGZvciBvbGQtc3R5bGUKCXJlcGVhdHMsIHdoaWNoIGhhdmUgYmVlbiBkaXNhYmxlZCBzaW5jZSAyLjcuMi4gIERvbid0IG1lc3Mgd2l0aAoJVFJFRV9VU0VELgoJKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IERvbid0IG1lc3Mgd2l0aCBUUkVFX1VTRUQuCgoxOTk5LTAzLTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogZXJyb3IuYyAoY3BfcHJpbnRlcnMpOiBBZGQgJ0YnIGVzY2FwZSBjaGFyYWN0ZXIuCgkoZHVtcF90eXBlX3JlYWwpOiBSZW1vdmUgVFJFRV9MSVNUIChmbmFyZ3MpIHByaW50aW5nLgoJRnVuY3Rpb25hbGl0eSBtb3ZlZCB0byBkdW1wX3BhcmFtZXRlcnMuCgkoZHVtcF90eXBlX3N1ZmZpeCk6IFVzZSBkdW1wX3BhcmFtZXRlcnMgYW5kIGR1bXBfZXhjZXB0aW9uX3NwZWMuCgkoZHVtcF9mdW5jdGlvbl9kZWNsKTogRXh0ZW5kIG1lYW5pbmcgb2YgViBwYXJhbWV0ZXIuICBVc2UKCWR1bXBfcGFyYW1ldGVycyBhbmQgZHVtcF9leGNlcHRpb25fc3BlYy4KCShkdW1wX3BhcmFtZXRlcnMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGR1bXBfZXhjZXB0aW9uX3NwZWMpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGZuZGVjbF9hc19zdHJpbmcpOiBDaGFuZ2UgYXJndW1lbnQgc2VtYW50aWNzLiAgVXNlCglkdW1wX2Z1bmN0aW9uX2RlY2wgZGlyZWN0bHkuCgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3RhYmxlX2NvbnN0cnVjdG9yKTogVXNlIGNwX2Vycm9yLgoKMTk5OS0wMy0xMyAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfc3dpdGNoX2NvbmQpOiBIYW5kbGUgZXJyb3IgY2FzZXMgZ3JhY2VmdWxseS4KCURldGVjdGVkIGJ5IGcrKy5sYXcvZW51bTUuQy4KCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IENoZWNrIGZvciBlcnJvcnMgYWZ0ZXIgcmVzb2x2aW5nCglvZmZzZXRzLiAgRGV0ZWN0ZWQgYnkgZysrLmJyZW5kYW4vc3RhdGljMS5DLgoKCSogZGVjbC5jIChjb21wbGV0ZV9hcnJheV90eXBlKTogSWdub3JlIGluaXRpYWxfdmFsdWUgaWYgaXQgaXMgYW4KCWVycm9yLiAgRGV0ZWN0ZWQgYnkgZysrLmJlbmphbWluLzE3OTMwLkMuCgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IFJldHVybiBlcnJvciBpZiBvbmUgYXJndW1lbnQKCWlzIGluIGVycm9yLiAgRGV0ZWN0ZWQgYnkgZysrLmJlbmphbWluLzEzNDc4LkMuCgoxOTk5LTAzLTEyICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChzZWxlY3RfZGVjbCk6IEFsbG93IGNsYXNzIHRlbXBsYXRlcyB3aGVuIHdlIG5lZWQgdHlwZXMuCgkqIGRlY2wyLmMgKGFtYmlndW91c19kZWNsKTogTGlrZXdpc2UuCgoxOTk5LTAzLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBDb3JyZWN0IGNhbGwgdG8gZW5mb3JjZV9hY2Nlc3MuCgkqIHNlYXJjaC5jIChhY2Nlc3NpYmxlX3ApOiBUd2VhayBjb21tZW50LgoKMTk5OS0wMy0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogQ2FsbCBidWlsZF9zZWxmX3JlZmVyZW5jZS4KCShmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uKTogU2V0IERFQ0xfQ09OVEVYVCBmb3IgVFlQRV9ERUNMcy4KCgkqIHNlYXJjaC5jIChhc3NlcnRfY2Fub25pY2FsX3VubWFya2VkKTogRml4IHR5cG8gaW4gcHJvdG90eXBlLgoKCSogc2VhcmNoLmMgKGRmc19jYW5vbmljYWxfcXVldWUpOiBOZXcgZnVuY3Rpb24uCgkoZGZzX2Fzc2VydF91bm1hcmtlZF9wKTogTGlrZXdpc2UuCgkoYXNzZXJ0X2Nhbm9uaWNhbF91bm1hcmtlZCk6IExpa2V3aXNlLgoJKGFjY2Vzc19pbl90eXBlKTogVXNlIGl0LgoJKGFjY2Vzc2libGVfcCk6IExpa2V3aXNlLiAgV2FsayB0aGUgd2hvbGUgdHJlZSB3aGVuIHVtYXJraW5nLgoKCSogc2lnLmMgKGJ1aWxkX3NpZ25hdHVyZV90YWJsZV9jb25zdHJ1Y3Rvcik6IFVzZSBhY2Nlc3NpYmxlX3AKCWluc3RlYWQgb2YgY29tcHV0ZV9hY2Nlc3MuCgoxOTk5LTAzLTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGFkZF9idWlsdGluX2NhbmRpZGF0ZXMpOiBIYW5kbGUgb3ZlcmxvYWRlZCBjb252ZXJzaW9uIG9wcy4KCjE5OTktMDMtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGZsYWdfYWNjZXNzX2NvbnRyb2wpOiBEZWNsYXJlLgoJKFRSRUVfVklBX1BQVUJMSUMpOiBEb2N1bWVudC4KCShERUNMX05PTlNUQVRJQ19NRU1CRVJfUCk6IE5ldyBtYWNyby4KCShlbmZvcmNlX2FjY2Vzcyk6IFJldHVybiBhbiBpbmRpY2F0aW9uIG9mIHdoZXRoZXIgb3Igbm90IGFjY2VzcwoJd2FzIHBlcm1pdHRlZC4KCShidWlsZF9zZWxmX3JlZmVyZW5jZSk6IENoYW5nZSBwcm90b3R5cGUuCgkoY29tcHV0ZV9hY2Nlc3MpOiBSZXBsYWNlIHdpdGggLi4uCgkoYWNjZXNzaWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGRmc193YWxrKTogQ2hhbmdlIHByb3RvdHlwZS4KCShkZnNfdW5tYXJrKTogTGlrZXdpc2UuCgkobWFya2VkcCk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGVuZm9yY2VfYWNjZXNzKTogVXNlIGFjY2Vzc2libGVfcC4KCSogY2xhc3MuYyAoYnVpbGRfc2VsZl9yZWZlcmVuY2UpOiBJbnNlcnQgdGhlIGRlY2xhcmF0aW9uIGludG8gdGhlCglsaXN0IG9mIG1lbWJlcnMgZm9yIHRoaXMgdHlwZSwgYW5kIG1ha2UgaXQgcHVibGljLgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogQXZvaWQgaWxsLXRpbWVkIHJlY3Vyc2lvbi4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogVXNlIGxvb2t1cF9tZW1iZXIsIG5vdCB0aHJlZSBzZXBhcmF0ZQoJbmFtZS1sb29rdXBzLiAgQ2FsbCBlbmZvcmNlX2FjY2VzcyByYXRoZXIgdGhhbiBjaGVja2luZyBmb3IKCWlsbGVnYWwgYWNjZXNzZXMgaGVyZS4KCShyZXNvbHZlX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKiBwYXJzZS55IChzZWxmX3JlZmVyZW5jZSk6IFJlbW92ZS4KCShvcHRfY29tcG9uZW50X2RlY2xfbGlzdCk6IERvbid0IHVzZSBpdC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKHByaW50X2NhbmRpZGF0ZXMpOiBHZW5lcmFsaXplIHRvIGhhbmRsZSBsaXN0cyBvZgoJb3ZlcmxvYWRlZCBmdW5jdGlvbnMuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBEb24ndCByZWx5IG9uIFRSRUVfVklBX1BSSVZBVEU7IGl0J3MKCW5vdCBzZXQuCgkoZ2V0X3RlbXBsYXRlX2Jhc2UpOiBVc2UgbmV3IGNhbGxpbmcgY29udmVudGlvbiBmb3IgZGZzX3dhbGsuCgkqIHNlYXJjaC5jOiBJbmNsdWRlIHZhcnJheS5oLiAgQWRkIHByb3RvdHlwZXMuCgkoZGZzX3dhbGspOiBBY2NlcHQgYSBkYXRhIHBvaW50ZXIgdG8gcGFzcyB0byB0aGUgd29yayBmdW5jdGlvbnMuCglBbGwgY2FsbGVycyBjaGFuZ2VkLiAgQWxsIHdvcmsgZnVuY3Rpb25zIGNoYW5nZWQuCgkoYnJlYWR0aF9maXJzdF9zZWFyY2gpOiBSZW5hbWUgdG8gYmZzX3dhbGssIGFuZCBtYWtlIGNvbnNpc3RlbnQKCXdpdGggZGZzX3dhbGsuCgkoZGZzX3dhbGtfcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShjYW5vbmljYWxfYmluZm8pOiBOZXcgZnVuY3Rpb24uCgkoY29udGV4dF9mb3JfbmFtZV9sb29rdXApOiBMaWtld2lzZS4KCShzaGFyZWRfbWFya2VkX3ApOiBMaWtld2lzZS4KCShzaGFyZWRfdW5tYXJrZWRfcCk6IExpa2V3aXNlLgoJKGxva3VwX2ZpZWxkX3F1ZXVlX3ApOiBMaWtld2lzZS4KCShsb29rdXBfZmllbGRfcik6IEdlbmVyYWxpemUgdG8gaGFuZGxlIGJvdGggZnVuY3Rpb25zIGFuZCBmaWVsZHMuCgkobG9va3VwX2ZpZWxkKTogSnVzdCBjYWxsIGxvb2t1cF9tZW1iZXIuCgkobG9va3VwX2ZuZmllbGRzKTogTGlrZXdpc2UuCgkobG9va3VwX21lbWJlcik6IE1vdmUgYm9keSBvZiBsb29rdXBfZmllbGQgaGVyZSBhbmQgZ2VuZXJhbGl6ZS4KCShkZnNfYWNjZXNzaWJsZV9xdWV1ZV9wKTogTGlrZXdpc2UuCgkoZGZzX2FjY2Vzc2libGVfcCk6IExpa2V3aXNlLgoJKGRmc19hY2Nlc3NfaW5fdHlwZSk6IExpa2V3aXNlLgoJKGFjY2Vzc19pbl90eXBlKTogTGlrZXdpc2UuCgkoY29tcHV0ZV9hY2Nlc3MpOiBSZW1vdmUsIGFuZCByZXBsYWNlIHdpdGggLi4uCgkoYWNjZXNzaWJsZV9wKTogTmV3IGZ1bmN0aW9uLgoJKHZiYXNlX3R5cGVzKTogUmVtb3ZlLgoJKHZiYXNlX2RlY2xfcHRyX2ludGVybWVkaWF0ZSk6IExpa2V3aXNlLgoJKHZiYXNlX2RlY2xfcHRyKTogTGlrZXdpc2UuCgkodmJhc2VfaW5pdF9yZXN1bHQpOiBMaWtld2lzZS4KCShjbG9zZWRfZW52ZWxvcGVzKTogTGlrZXdpc2UuCgkoYnZ0YWJsZSk6IExpa2V3aXNlLgoKMTk5OS0wMy0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogQ2hlY2sgZm9yIHByb3BlciBudW1iZXIgb2YgYXJncwoJYmVmb3JlIGNoZWNraW5nIHRoZSB2YWxpZGl0eSBvZiB0aG9zZSBhcmdzLgoKMTk5OS0wMy0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ190eXBlKTogQWRkIGFub25fdW5pb24gZmllbGQuCgkoQU5PTl9VTklPTl9UWVBFX1ApOiBVc2UgaXQgaW5zdGVhZCBvZiBleGFtaW5pbmcgdHlwZS4KCShTRVRfQU5PTl9VTklPTl9UWVBFX1ApOiBOZXcgbWFjcm8uCgkqIGRlY2wuYyAoY2hlY2tfdGFnX2RlY2wpOiBVc2UgaXQuCgoJKiBzZWFyY2guYyAoY29tcHV0ZV9hY2Nlc3MpOiBIYW5kbGUgbm9uLXR5cGUgY29udGV4dHMgZWFybGllciwgYW5kCgloYW5kbGUgTlVMTF9UUkVFLgoKCSogdHJlZS5jIChidWlsZF9leGNlcHRpb25fdmFyaWFudCk6IFVzZSBjb3B5X3RvX3Blcm1hbmVudC4KCgkqIGRlY2wyLmMgKHNldHVwX2luaXRwKTogR2l2ZSBzdGF0aWNzIHdpdGggbm8gcHJpb3JpdHkgdGhlIGRlZmF1bHQKCXByaW9yaXR5IGhlcmUuCgkoZG9fZHRvcnMsIGRvX2N0b3JzLCBmaW5pc2hfZmlsZSk6IFJlbW92ZSBzcGVjaWFsIGhhbmRsaW5nIG9mCglub24tcHJpb3JpdGl6ZWQgc3RhdGljcy4KCjE5OTktMDMtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKEFOT05fVU5JT05fVFlQRV9QKTogUm9idXN0aWZ5LgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IERvbid0IGlzc3VlIGFuIGVycm9yIGlmIGFuCglpbW1lZGlhdGUgbG9va3VwIGZhaWxzOyBpdCBtaWd0IGJlIHJlc29sdmVkIGxhdGVyLgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogQWRkIGNvbW1lbnQuCgkqIHNlYXJjaC5jIChicmVhZHRoX2ZpcnN0X3NlYXJjaCk6IEFkZCBQT1NURk4gYW5kIERBVEEKCXBhcmFtZXRlcnMuICBUaWR5LiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShsb29rdXBfZmllbGRfcXVldWVfcCk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfZmllbGRfcik6IExpa2V3aXNlLgoJKGxvb2t1cF9maWVsZF9wb3N0KTogTGlrZXdpc2UuCgkobG9va3VwX2ZpZWxkKTogVXNlIHRoZW0sIHZpYSBicmVhZHRoX2ZpcnN0X3NlYXJjaCwgaW5zdGVhZCBvZgoJZHVwbGljYXRpbmcgbG9naWMuCgkoY29tcHV0ZV9hY2Nlc3MpOiBSb2J1c3RpZnkuCgkobG9va3VwX2ZuZmllbGRfaW5mbyk6IE5ldyBzdHJ1Y3R1cmUuCgoxOTk5LTAzLTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QsIGNhc2UgQVJSQVlfUkVGKTogVXNlIHRzdWJzdF9leHByIGFnYWluLgoKMTk5OS0wMy0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYywgZGVjbDIuYywgbWV0aG9kLmMsIHB0LmM6IEFkZCAnc3RhdGljJyB0byBtYWtlIFN1bk9TIDQKCWNjIGhhcHB5LgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9jbGFzcyk6IEFsc28gcmV0dXJuIGlmCglDTEFTU1RZUEVfSU5URVJGQUNFX09OTFkgaXMgc2V0LgoKMTk5OS0wMy0wMyAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGRlY2wuYyAocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBPbmx5IG92ZXJ3cml0ZSB0aGUgb2xkIGJpbmRpbmcgaWYKCXRoZXJlIHdhcyBvbmUuCgkqIGRlY2wyLmMgKGRvX2xvY2FsX3VzaW5nX2RlY2wpOiBGaXggbG9vcCB0ZXJtaW5hdGlvbi4KCjE5OTktMDMtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IERvbid0IGRlY2xhcmUuCgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IE1ha2UgaXQgc3RhdGljLiAgRWxpbWluYXRlCgljb21wbGFpbiBwYXJhbWV0ZXIuICBOb3RlIHRoYXQgZGVjbCBpcyBhbHdheXMgbm9uLU5VTEwgbm93LCBhbmQKCXNpbXBsaWZ5IGFjY29yZGluZ2x5LgoKCSogZGVjbC5jIChtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IEFsd2F5cyBjYWxsCglwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogQWx3YXlzIGNhbGwgcG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQuCgoxOTk5LTAyLTI2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogdHlwZWNrLmMgKGNvbXBsZXRlX3R5cGVfb3JfZWxzZSk6IEFkZCBWQUxVRSBhcmcsIGZvciBoZWxwZnVsCglkaWFnbm9zdGljcy4KCSogY3AtdHJlZS5oIChjb21wbGV0ZV90eXBlX29yX2Vsc2UpOiBBZGRlZCBWQUxVRSBwYXJhbWV0ZXIuCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBFeHRyYSBhcmcgdG8gY29tcGxldGVfdHlwZV9vcl9lbHNlLgoJKGJ1aWxkX2RlbGV0ZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlKTogTGlrZXdpc2UuCgkocG9pbnRlcl9pbnRfc3VtKTogTGlrZXdpc2UuCgkocG9pbnRlcl9kaWZmKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoKCSogdHlwZWNrMi5jIChpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBBbHdheXMgdXNlIGNwX2Vycm9yLgoJU2hvdyBkZWNsYXJhdGlvbiBvZiB1bmRlZmluZWQgdHlwZSwgaWYgYXBwcm9wcmlhdGUuCglEZWFsIHdpdGggVU5LTk9XTl9UWVBFIG5vZGVzLgoKCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZSk6IFVzZSBUWVBFX1NJWkUgYXMKCXNpemVfemVyb19ub2RlIHRvIG1lYW4gaW5jb21wbGV0ZSB0eXBlLgoJKHJlcXVpcmVfY29tcGxldGVfdHlwZV9pbl92b2lkKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2NvbXBvdW5kX2V4cHIpOiBDYWxsIGNvbXBsZXRlX3R5cGVfaW5fdm9pZCBmb3IgTEhTLgoJKGJ1aWxkX2NfY2FzdCk6IENhbGwgY29tcGxldGVfdHlwZV9pbl92b2lkIGZvciB2b2lkIGNhc3QuCgkqIGN2dC5jIChvY3BfY29udmVydCk6IENhbGwgY29tcGxldGVfdHlwZV9pbl92b2lkIGZvciB2b2lkIGNhc3QuCgkqIGRlY2wuYyAoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IFZvaWQgZXhwcmVzc2lvbiBjaGVja3MgbW92ZWQgdG8KCXJlcXVpcmVfY29tcGxldGVfdHlwZV9pbl92b2lkLiAgQ2FsbCBpdC4KCSogY3AtdHJlZS5oIChyZXF1aXJlX2NvbXBsZXRlX3R5cGVfaW5fdm9pZCk6IFByb3RvdHlwZSBuZXcgZnVuY3Rpb24uCgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBVc2UgYWx0ZXJuYXRpdmUgZm9ybWF0IGZvcgoJZnVuY3Rpb24gZGVjbHMuICBEb24ndCByZXF1aXJlX2NvbXBsZXRlX3R5cGUgaGVyZS4gIFNpbXBsaWZ5CglkaWFnbm9zdGljIHByaW50aW5nLgoJKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogRG9uJ3QgcmVxdWlyZV9jb21wbGV0ZV90eXBlIG9uIFJIUyB5ZXQuCgkqIGNhbGwuYyAoY29udmVydF9hcmdfdG9fZWxsaXBzaXMpOiBDYWxsIHJlcXVpcmVfY29tcGxldGVfdHlwZS4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogQ29wZSB3aXRoIHF1YWxpZmllZCB2b2lkIHJldHVybiB0eXBlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NhbGxfZXhwcik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogTGlrZXdpc2UuCgkoY19leHBhbmRfcmV0dXJuKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKHJlcGFyc2VfYWJzZGNsX2FzX2V4cHIpOiBDb3BlIHdpdGggcXVhbGlmaWVkIHZvaWQgdHlwZS4KCgkqIGNhbGwuYyAocHJpbnRfel9jYW5kaWRhdGVzKTogVXNlIGFsdGVybmF0ZSBwcmludCBmb3JtYXQsIHRvIGJlCgljb25zaXN0ZW50IHdpdGggKHB0LmMpIHByaW50X2NhbmRpZGF0ZXMuCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBMaXN0IGNhbmRpZGF0ZSBtZW1iZXJzLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkKTogQnVpbGQgYW1iaWd1b3VzIGxpc3QsIGFuZCBzaG93IGl0LCBpZgoJYW1iaWd1b3VzLgoKMTk5OS0wMi0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogRG9uJ3QgY29uZnVzZSBjb25zdGFudCBhcnJheQoJdmFyaWFibGVzIHdpdGggdGhlaXIgaW5pdGlhbGl6ZXJzLgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDb3B5IERFQ0xfVEVNUExBVEVfSU5TVEFOVElBVEVEIHdoZW4KCW1lcmdpbmcgZGVjbHMuCgkqIHB0LmMgKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogVHdlYWsgZm9yIGNsYXJpdHkuCgkoaW5zdGFudGlhdGVfZGVjbCk6IE1hcmsgYSBkZWNsIGluc3RhbnRpYXRlZCBiZWZvcmUgcmVnZW5lcmF0aW5nCglpdCB0byBhdm9pZCByZWN1cnNpb24uCgkqIHRyZWUuYyAobWFwY2FyKTogRG9uJ3QgY2FsbCBkZWNsX2NvbnN0YW50X3ZhbHVlIHVubGVzcyB3ZSBrbm93Cglzb21ldGhpbmcgaXMgVFJFRV9SRUFET05MWV9ERUNMX1AuCgoJKiBjbGFzcy5jIChjaGVja19mb3Jfb3ZlcnJpZGUpOiBEb24ndCBzdG9wIGNoZWNraW5nIHdoZW4gd2UgZmluZAoJdGhlIGZpcnN0IG92ZXJyaWRkZW4gZnVuY3Rpb24uICBEZWxldGUgI2lmIDAnZCBjb2RlLgoJKiBzZWFyY2guYyAoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBMaWtld2lzZS4KCjE5OTktMDItMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmg6IERlZmluZSBfX0ZBU1RfTUFUSF9fIHdoZW4gYXBwcm9wcmlhdGUuCgoxOTk5LTAyLTI0ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEFsbG93IGJvb2xlYW4gaW50ZWdyYWwgY29uc3RhbnQKCWV4cHJlc3Npb25zIHRvIGNvbnZlcnQgdG8gbnVsbCBwb2ludGVyLgoKMTk5OS0wMi0yNCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IFJlc29sdmUgbmFtZXNwYWNlIGFsaWFzZXMuCgoJKiBjbGFzcy5jIChwdXNoX25lc3RlZF9jbGFzcyk6IEFsbG93IG5hbWVzcGFjZXMuCgoJKiBkZWNsMi5jIChzZXRfZGVjbF9uYW1lc3BhY2UpOiBBZGQgZnJpZW5kcCBwYXJhbWV0ZXIuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IFBhc3MgaXQuCgkoZ3Jva3ZhcmRlY2wpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiBDaGFuZ2UgZGVjbGFyYXRpb24uCgoxOTk5LTAyLTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBBbGxvdyBhbiBhcnJheSBvZiBleHBsaWNpdCBzaXplIHplcm8uCgoxOTk5LTAyLTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJmbi5jOiBDaGFuZ2UgdmFyYXJncyBjb2RlIHRvIGxvb2sgbGlrZSB0b3BsZXYuYy4KCgkqIG1ldGhvZC5jIChwcm9jZXNzX21vZGlmaWVycyk6IERvbid0IHByZXBlbmQgJ1UnIGZvciBjaGFyIG9yCgl3Y2hhcl90LgoKMTk5OS0wMi0yMCAgQ3JhaWcgQnVybGV5ICA8Y3JhaWdAamNiLXNjLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY3BsaWIyLnJlYWR5KTogRG9uJ3QgY29uc2lkZXIgdXBkYXRpbmcKCWNwbGliMiBzdHVmZiBpZiB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXNuJ3Qgd3JpdGFibGUsIGFzCglpdCB3b24ndCB3b3JrIChzdWNoIGFzIGR1cmluZyBhIGBtYWtlIGluc3RhbGwnKS4KClN1biBGZWIgMjEgMjA6Mzg6MDAgMTk5OSAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogZGVjbDIuYyAoc3RhcnRfb2JqZWN0cyk6IE1ha2UgZmlsZSBzY29wZSBjb25zdHJ1Y3RvcnMgYW5kCglkZXN0cnVjdG9ycyBsb2NhbCB0byB0aGUgZmlsZSBpZiBBU01fT1VUUFVUX0NPTlNUUlVDVE9SIGFuZAoJQVNNX09VVFBVVF9ERVNUUlVDVE9SIGFyZSBkZWZpbmVkLgoKMTk5OS0wMi0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX01FVEhPRF9WRUMpOiBBZGp1c3QgY29tbWVudC4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogQWRqdXN0IHByb3RvdHlwZS4KCShsb29rdXBfZm5maWVsZHNfMSk6IERlY2xhcmUuCgkqIGNhbGwuYyAoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsKTogQWRqdXN0IGNhbGwgdG8KCWZuX3R5cGVfdW5pZmljYXRpb24uCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBEb24ndCBhbGxvdyBkdXBsaWNhdGUgZGVjbGFyYXRpb25zIG9mCgljb25zdHJ1Y3RvcnMgb3IgZGVzdHJ1Y3RvcnMuCgkocmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJQWRqdXN0IGNhbGwgdG8gZm5fdHlwZV91bmlmaWNhdGlvbi4KCSogZGVjbC5jIChncm9rZm5kZWNsKTogQmUgbW9yZSByb2J1c3QgaW4gdGhlIGZhY2Ugb2YgaWxsZWdhbAoJc3BlY2lhbGl6YXRpb25zLgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogUmVtb3ZlIGhva2V5IGhhbmRsaW5nIG9mIG1lbWJlcgoJdGVtcGxhdGVzLgoJKiBwdC5jIChkZXRlcm1pbmVfc3BlY2lhbGl6YXRpb24pOiBJbXByb3ZlIGNvbW1lbnRzLiAgQWRqdXN0IHRvCgloYW5kbGUgdGVtcGxhdGUgYXJndW1lbnQgZGVkdWN0aW9uIGFzIHBlciB0aGUgc3RhbmRhcmQuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBGaXggY29tbWVudCBzcGFjaW5nLiAgSGFuZGxlCgl0eXBlLWNvbnZlcnNpb24gb3BlcmF0b3JzIGNvcnJlY3RseS4gIEltcHJvdmUgZXJyb3ItcmVjb3ZlcnkuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IFJlbW92ZSBFWFRSQV9GTl9BUkcgcGFyYW1ldGVyLgoJKGdldF9iaW5kaW5nc19yZWFsKTogU2ltcGxpZnkgaGFuZGxpbmcgb2Ygc3RhdGljIG1lbWJlcnMuCgkqIHNlYXJjaC5jIChsb29rdXBfZm5maWVsZHNfMSk6IE1ha2UgaXQgaGF2ZSBleHRlcm5hbCBsaW5rYWdlLgoJKiB0eXBlY2suYyAoY29tcHBhcm1zKTogRml4IGNvbW1lbnQuCgkoYnVpbGRfdW5hcnlfb3ApOiBEb24ndCB0cnkgdG8gZmlndXJlIG91dCB3aGljaCB0ZW1wbGF0ZQoJc3BlY2lhbGl6YXRpb24gaXMgYmVpbmcgcmVmZXJyZWQgdG8gd2hlbiB3aGVuIHRoZSBhZGRyZXNzLW9mCglvcGVyYXRvciBpcyB1c2VkIHdpdGggYSB0ZW1wbGF0ZSBmdW5jdGlvbi4KClRodSBGZWIgMTggMjM6NDA6MDEgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3AtdHJlZS5oIChsdmFsdWVfb3JfZWxzZSk6IFF1YWxpZnkgYSBjaGFyKiB3aXRoIHRoZSBgY29uc3QnCglrZXl3b3JkIHRvIG1hdGNoIGFuIGFuYWxvZ291cyBjaGFuZ2UgYXQgdGhlIHRvcCBsZXZlbC4KCgkqIHRyZWUuYyAobHZhbHVlX29yX2Vsc2UpOiBMaWtld2lzZS4KCjE5OTktMDItMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogQ29tbWVudC4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2UgeHJlZl9iYXNldHlwZXMuCgoxOTk5LTAyLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oICh0c3Vic3QpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKHRzdWJzdF9leHByKTogTGlrZXdpc2UuCgkodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCSh0eXBlX3VuaWZpY2F0aW9uKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogY2FsbC5jIChjb252ZXJ0X2RlZmF1bHRfYXJnKTogQWRqdXN0IGNhbGwgdG8gdHN1YnN0X2V4cHIuCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogSnVzdCB1c2UKCWZuX3R5cGVfdW5pZmljYXRpb24uCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBZGp1c3QgY2FsbCB0byB0c3Vic3QuCgkqIG1ldGhvZC5jIChidWlsZF90ZW1wbGF0ZV9wYXJtX25hbWVzKTogTGlrZXdpc2UuCgkqIHB0LmMgKEdUQl9WSUFfVklSVFVBTCk6IE5ldyBtYWNyby4KCShHVEJfSUdOT1JFX1RZUEUpOiBMaWtld2lzZS4KCShyZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24pOiBBZGQgYGNvbXBsYWluJyBwYXJhbWV0ZXIuCgkodHJ5X29uZV9vdmVybG9hZCk6IExpa2V3aXNlLgoJKHRzdWJzdF90ZW1wbGF0ZV9hcmdfdmVjdG9yKTogTGlrZXdpc2UuCgkodHN1YnN0X3RlbXBsYXRlX3Bhcm1zKTogTGlrZXdpc2UuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IExpa2V3aXNlLgoJKHRzdWJzdF9hcmdfdHlwZXMpOiBMaWtld2lzZS4KCSh0c3Vic3RfY2FsbF9kZWNsYXJhdG9yX3Bhcm1zKTogTGlrZXdpc2UuCgkodW5pZnkpOiBSZW1vdmUgZXhwbGljaXRfbWFzay4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBMaWtld2lzZS4KCShnZXRfdGVtcGxhdGVfYmFzZV9yZWN1cnNpdmUpOiBMaWtld2lzZS4KCShjb2VyY2VfdGVtcGxhdGVfdGVtcGxhdGVfcGFybXMpOiBQcm92aWRlIHByb3RvdHlwZS4KCSh0c3Vic3RfZnVuY3Rpb25fdHlwZSk6IExpa2V3aXNlLgoJKHRyeV9jbGFzc191bmlmaWNhdGlvbik6IE5ldyBmdW5jdGlvbi4KCUFsbCBjYWxsZXJzIGNoYW5nZWQgdG8gdXNlIG5ldyBjb21wbGFpbiBwYXJhbWV0ZXIuCgkoZ2V0X3RlbXBsYXRlX2Jhc2UpOiBVc2UgdHJ5X2NsYXNzX3VuaWZpY2F0aW9uLgoJKHVuaWZ5KTogQWRqdXN0IGhhbmRsaW5nIG9mIGNsYXNzZXMgZGVyaXZlZCBmcm9tIHRlbXBsYXRlIHR5cGVzLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBTdWJzdGl0dXRlIGV4cGxpY2l0IGFyZ3VtZW50cyBiZWZvcmUKCXVuaWZpY2F0aW9uLgoKMTk5OS0wMi0xNiAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YtZnMudXNjLmVkdT4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBSZW1vdmUgZGVhZCBjb2RlLgoKMTk5OS0wMi0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX29iamVjdHMpOiBGaXggY29kZSBJIG1pc3NlZCBpbiBwcmV2aW91cyBjaGFuZ2UuCgoxOTk5LTAyLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBSZXR1cm4gTlVMTF9UUkVFIGluc3RlYWQgb2YgZXJyb3JfbWFya19ub2RlLgoJKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgZXhwZWN0IGVycm9yX21hcmtfbm9kZSBmcm9tIGdyb2tmbmRlY2wuCgoJKiBwdC5jIChtYXliZV9wcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBDb21wbGFpbiBhYm91dAoJJ3RlbXBsYXRlIDw+JyBvbiBub24tc3BlY2lhbGl6YXRpb24uCgoxOTk5LTAyLTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ2F0Y2ggd2VpcmQgZGVjbGFyYXRvcnMuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogRG9uJ3QgYWJvcnQgYmVjYXVzZSBvZiBuYW1lc3BhY2UgcGFyc2luZwoJZmFpbHVyZS4KCShjaGVja19kZWNsX25hbWVzcGFjZSk6IFJlbW92ZS4KCjE5OTktMDItMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGdldF90ZW1wbGF0ZV9iYXNlKTogRG9uJ3QgZGVjbGFyZS4KCShkZnNfd2Fsayk6IERlY2xhcmUuCgkoZGZzX3VubWFyayk6IExpa2V3aXNlLgoJKG1hcmtlZHApOiBMaWtld2lzZS4KCSogcHQuYyAodW5pZnkpOiBSZW1vdmUgZHVwbGljYXRlIGRlY2xhcmF0aW9uLiAgUGFzcyB0cGFybXMgYW5kCgl0YXJncyB0byBnZXRfdGVtcGxhdGVfYmFzZS4KCShnZXRfdGVtcGxhdGVfYmFzZV9yZWN1cnNpdmUpOiBNb3ZlIGhlcmUgZnJvbSBzZWFyY2guYy4gIENoZWNrIHRvCglzZWUgdGhhdCB0aGUgYmFzZSBmb3VuZCBjYW4gYmUgaW5zdGFudGlhdGVkIHRvIGZvcm0gdGhlIGRlc2lyZWQKCXR5cGUuCgkoZ2V0X3RlbXBsYXRlX2Jhc2UpOiBMaWtld2lzZS4KCShnZXRfY2xhc3NfYmluZGluZ3MpOiBTaW1wbGlmeS4KCSogc2VhcmNoLmMgKGdldF90ZW1wbGF0ZV9iYXNlX3JlY3Vyc2l2ZSk6IE1vdmUgdG8gcHQuYy4KCShnZXRfdGVtcGxhdGVfYmFzZSk6IExpa2V3aXNlLgoJKG1hcmtlZHApOiBNYWtlIGl0IGdsb2JhbC4KCShkZnNfd2Fsayk6IExpa2V3aXNlLgoJKGRmc191bm1hcmspOiBMaWtld2lzZS4KCjE5OTktMDItMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKG1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbik6IENvbXBsYWluIGFib3V0CglzcGVjaWFsaXphdGlvbiBpbiB3cm9uZyBuYW1lc3BhY2UuCgkqIHRyZWUuYyAoZGVjbF9uYW1lc3BhY2VfY29udGV4dCk6IE5ldyBmbi4KCjE5OTktMDItMDYgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAc2NmLWZzLnVzYy5lZHU+CgoJKiBkZWNsMi5jIChhcmdfYXNzb2NfdHlwZSk6IEhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfdGVtcGxhdGVfcGFybXMpOiBIYW5kbGUgbmVzdGVkCgl0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKU2F0IEZlYiAgNiAxODowODo0MCAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiB0eXBlY2syLmM6IFVwZGF0ZSBlbWFpbCBhZGRyZXNzZXMuCgoxOTk5LTAyLTA0ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi1mcy51c2MuZWR1PgoKCSogcHQuYyAodW5pZnkpOiBDYWxsIGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyB3aXRoIHRoZSBDT01QTEFJTiBmbGFnCgl0dXJuZWQgb2ZmLgoKMTk5OS0wMi0wNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKHJldHJvZml0X2xhbmdfZGVjbCk6IFNwbGl0IG91dC4uLgoJKGJ1aWxkX2xhbmdfZGVjbCk6IEZyb20gaGVyZS4KCSogZGVjbC5jIChwdXNoZGVjbCk6IENhbGwgaXQgZm9yIGZ1bmN0aW9ucyBnZW5lcmF0ZWQgYnkgdGhlIG1pZGRsZQoJZW5kIHRoYXQgZG9uJ3QgaGF2ZSBERUNMX0xBTkdfU1BFQ0lGSUMuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCgkqIGRlY2wyLmM6IFJlbW92ZSBmbGFnX2luaXRfcHJpb3JpdHkuICBBbHdheXMgZW5hYmxlIGluaXRwIHN0dWZmLgoJKHN0YXJ0X29iamVjdHMsIGZpbmlzaF9vYmplY3RzKTogT25seSB1c2Ugc3BlY2lhbAoJaW5pdF9wcmlvcml0eSBjb2RlIGlmIHRoZSB1c2VyIHNwZWNpZmllZCBhIHByaW9yaXR5LgoJKGRvX2N0b3JzLCBkb19kdG9ycyk6IFVzZSBERUZBVUxUX0lOSVRfUFJJT1JJVFkgZm9yIHRoZSBub24taW5pdHAKCW9iamVjdHMuCgpXZWQgRmViICAzIDIyOjUwOjE3IDE5OTkgIE1hcmMgRXNwaWUgIDxNYXJjLkVzcGllQGxpYWZhLmp1c3NpZXUuZnI+CgoJKiBNYWtlLWxhbmcuaW4gKEdYWF9PQkpTKTogUmVtb3ZlIGNob29zZS10ZW1wLm8sIHBleGVjdXRlLm8gYW5kCglta3N0ZW1wLm8uICBHZXQgdGhlbSBmcm9tIGxpYmliZXJ0eSBub3cuCgkoREVNQU5HTEVSX1BST0cpOiBTaW1sYXJseSwgcmVtb3ZlIGdldG9wdC5vIGdldG9wdDEuby4KClR1ZSBGZWIgIDIgMjI6Mzg6NDggMTk5OSAgVGhlb2RvcmUgUGFwYWRvcG91bG8gIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBVc2UgcmVhZF9pbnRlZ3JhbF9wYXJhbWV0ZXIuCgoxOTk5LTAyLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAodHN1YnN0LCBjYXNlIFRZUEVOQU1FX1RZUEUpOiBDaGVjayBUWVBFX0JFSU5HX0RFRklORUQKCWJlZm9yZSBjYWxsaW5nIGNvbXBsZXRlX3R5cGVfb3JfZWxzZS4KCk1vbiBGZWIgIDEgMDk6NDk6NTIgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogaW5wdXQuYyAoaW5saW5lKTogRG9uJ3QgZGVmaW5lLCBpdHMgaGFuZGxlZCBieSBzeXN0ZW0uaC4KClN1biBKYW4gMzEgMjA6MzQ6MjkgMTk5OSAgWmFjayBXZWluYmVyZyAgPHphY2tAcmFiaS5jb2x1bWJpYS5lZHU+CgoJKiBkZWNsMi5jOiBEb24ndCBkZWZpbmUgZmxhZ19ub19pZGVudCBoZXJlLiAgRG9uJ3QgcHJvY2VzcwoJLWYobm8tKWlkZW50IGhlcmUuCgkqIGNwLXRyZWUuaDogRG9uJ3QgZGVjbGFyZSBmbGFnX25vX2lkZW50IGhlcmUuCgkqIGxhbmctc3BlY3MuaDogTWFwIC1RbiB0byAtZm5vLWlkZW50LgoKMTk5OS0wMS0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgdHJlZV9iaW5kaW5nKTogUmVwbGFjZSBzY29wZSBmaWVsZCB3aXRoIGEgdW5pb24uCgkoQklORElOR19TQ09QRSk6IEFkanVzdC4KCSogZGVjbC5jIChCSU5ESU5HX0xFVkVMKTogQWRqdXN0LgoKMTk5OS0wMS0yNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBTZXQgdXAgdGhlIERFQ0xfSU5JVElBTCBvZgoJbWVtYmVyIGNvbnN0YW50cy4KCgkqIGluaXQuYyAoZXhwYW5kX21lbWJlcl9pbml0KTogUHVsbCBvdXQgVFlQRV9NQUlOX1ZBUklBTlQgaW4KCWEgY3RvciBpbml0aWFsaXplci4KCgkqIHRyZWUuYyAoZXF1YWxfZnVuY3Rpb25zKTogRml4IG5hbWUgaW4gcHJvdG90eXBlLgoKCSogZGVjbC5jIChwdXNoX2xvY2FsX2JpbmRpbmcpOiBBZGQgRkxBR1MgYXJndW1lbnQuCgkocHVzaGRlY2wsIHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogUGFzcyBpdC4KCSogZGVjbDIuYyAoZG9fbG9jYWxfdXNpbmdfZGVjbCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IEFkanVzdCBwcm90b3R5cGUuCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBGaXggbG9naWMuCgoJKiBkZWNsLmMgKHB1c2hfbG9jYWxfYmluZGluZyk6IEFsc28gd3JhcCB1c2VkIGRlY2xzIGluIGEgVFJFRV9MSVNULgoJKHBvcGxldmVsKTogSGFuZGxlIHRoYXQuICBGaXggbG9naWMgZm9yIHJlbW92aW5nIFRSRUVfTElTVHMuCgkoY2F0X25hbWVzcGFjZV9sZXZlbHMpOiBEb24ndCBsb29wIGZvcmV2ZXIuCgoxOTk5LTAxLTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBGaXggdHlwbyBpbiBkdXBsaWNhdGVkIHRlc3QuCgoxOTk5LTAxLTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChyZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbik6IE1hcmsgdGhlCgljaG9zZW4gZnVuY3Rpb24gdXNlZC4KCgkqIGNhbGwuYyAoYnVpbGRfY2FsbCk6IE1ha2Ugc3VyZSB0aGF0IGEgZnVuY3Rpb24gY29taW5nIGluIGhhcwoJYmVlbiBtYXJrZWQgdXNlZCBhbHJlYWR5LgoJKiBkZWNsLmMgKGV4cGFuZF9zdGF0aWNfaW5pdCk6IENhbGwgbWFya191c2VkIGluc3RlYWQgb2YKCWFzc2VtYmxlX2V4dGVybmFsLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvLCBkb19wb3BfZXhjZXB0aW9uLCBleHBhbmRfZW5kX2VoX3NwZWMsCglhbGxvY19laF9vYmplY3QsIGV4cGFuZF90aHJvdyk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX2J1aWx0aW5fZGVsZXRlX2NhbGwpOiBMaWtld2lzZS4KCSogcnR0aS5jIChjYWxsX3ZvaWRfZm4sIGdldF90aW5mb19mbiwgYnVpbGRfZHluYW1pY19jYXN0XzEsCglleHBhbmRfc2lfZGVzYywgZXhwYW5kX2NsYXNzX2Rlc2MsIGV4cGFuZF9wdHJfZGVzYywgZXhwYW5kX2F0dHJfZGVzYywKCWV4cGFuZF9nZW5lcmljX2Rlc2MpOiBMaWtld2lzZS4KCjE5OTktMDEtMjUgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiB0cmVlLmMgKGVxdWFsX2Z1bmN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShvdmxfbWVtYmVyKTogQ2FsbCBpdC4KCjE5OTktMDEtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBGaXggY29udmVyc2lvbiBvZiAwIHRvIHBtZi4KCjE5OTktMDEtMjUgIE1hcnRpbiB2b24gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChkZWNsc19tYXRjaCk6IFJldHVybiAxIGlmIG9sZCBhbmQgbmV3IGFyZSBpZGVudGljYWwuCgkocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBTZXQgT1ZMX1VTRUQgd2hlbiBQVVNIX1VTSU5HLgoKMTk5OS0wMS0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IE1ha2UgbWVtYmVyIGZ1bmN0aW9ucyBvbmVfb25seSBvbiB3aW5kb3dzLgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBjb21wbGFpbiBhYm91dCBpbXBsaWNpdCBpbnQgaW4KCWEgc3lzdGVtIGhlYWRlci4gIENoYW5nZSBzYW1lLW5hbWUgZmllbGQgY2hlY2sgdG8gbm90IGNvbXBsYWluIGluCglhIHN5c3RlbSBoZWFkZXIgaW5zdGVhZCBvZiB3aXRoaW4gZXh0ZXJuICJDIi4KCjE5OTktMDEtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKFBVU0hfR0xPQkFMKTogTmV3IG1hY3JvLgoJKFBVU0hfTE9DQUwpOiBMaWtld2lzZS4KCShQVVNIX1VTSU5HKTogTGlrZXdpc2UuCgkobmFtZXNwYWNlX2JpbmRpbmdzX3ApOiBEZWNsYXJlLgoJKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaF9vdmVybG9hZGVkX2RlY2wpOiBEb24ndCBtYWtlIGl0IHN0YXRpYy4gIENoZWNrIGZvcgoJaWxsZWdhbCBkZWNsYXJhdGlvbnMgYWZ0ZXIgdXNpbmcgZGVjbGFyYXRpb25zIGhlcmUuCgkobmFtZXNwYWNlX2JpbmRpbmdzX3ApOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBjb25zaWRlciBkZWNsYXJhdGlvbnMgZnJvbSBkaWZmZXJlbnQKCW5hbWVzcGFjZXMgdG8gYmUgdGhlIHNhbWUuCgkocHVzaGRlY2wpOiBVc2Ugc3ltYm9saWMgUFVTSF8gY29uc3RhbnRzIGluIGNhbGxzIHRvCglwdXNoX292ZXJsb2FkZWRfZGVjbC4KCShwdXNoX292ZXJsb2FkZWRfZGVjbF8xKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKHZhbGlkYXRlX25vbm1lbWJlcl91c2luZ19kZWNsKTogVHdlYWsgYHN0ZCcgaGFuZGxpbmcuCgkoZG9fbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBDaGVjayBmb3IgaWxsZWdhbCB1c2luZyBkZWNsYXJhdGlvbnMKCWFmdGVyIG9yZGluYXJ5IGRlY2xhcmF0aW9ucyBoZXJlLgoJKGRvX2xvY2FsX3VzaW5nX2RlY2wpOiBDYWxsIHB1c2hkZWNsIHRvIGluc2VydCBkZWNsYXJhdGlvbnMuCgoxOTk5LTAxLTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRml4IGxhbmdfYyAtPiBsYW5nX25hbWVfYyB0eXBvLgoKMTk5OS0wMS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfYXJyYXlfdHlwZV8xKTogRG9uJ3QgY2FsbCBidWlsZF9hcnJheV90eXBlCglmb3IgdHlwZXMgaW52b2x2aW5nIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgoJKiBjcC10cmVlLmggKFBBUk1fREVDTF9FWFBSKTogRGVsZXRlLgoJKGNvbnZlcnRfZGVmYXVsdF9hcmcpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGNoZWNrX2RlZmF1bHRfYXJndW1lbnQpOiBEZWNsYXJlLgoJKHNlYXJjaF90cmVlKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoY29udmVydF9kZWZhdWx0X2FyZyk6IFRha2UgdGhlIGZ1bmN0aW9uIHRvIHdoaWNoIHRoZQoJZGVmYXVsdCBhcmd1bWVudCBiZWxvbmdzIGFzIGEgcGFyYW1ldGVyLCBhbmQgZG8gYW55IG5lY2Vzc2FyeQoJaW5zdGFudGlhdGlvbiBoZXJlLCBpbnN0ZWFkIG9mIC4uLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEhlcmUuCgkqIGRlY2wuYyAobG9jYWxfdmFyaWFibGVfcCk6IE5ldyBmdW5jdGlvbi4KCShjaGVja19kZWZhdWx0X2FyZ3VtZW50KTogTGlrZXdpc2UsIHNwbGl0IG91dCBhbmQgdGlkaWVkIGZyb20gLi4uCgkoZ3Jva3Bhcm1zKTogSGVyZS4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogRG9uJ3Qgc2V0IFBBUk1fREVDTF9FWFBSLgoJKiBwdC5jICh0c3Vic3RfY2FsbF9kZWNsYXJhdG9yX3Bhcm1zKTogTmV3IGZ1bmN0aW9uLgoJKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBIYW5kbGUgQVJSQVlfUkVGcy4gIERvIHRoZSBvYnZpb3VzIHRoaW5nCgl3aXRoIENBTExfRVhQUnMsIHJhdGhlciB0aGFuIHRyeWluZyB0byBiZSBjbGV2ZXIuCgkodHN1YnN0KTogVXNlIHRzdWJzdF9jYWxsX2RlY2xhcmF0b3JfcGFybXMuCgkqIHRyZWUuYyAoc2VhcmNoX3RyZWUpOiBEb24ndCBtYWtlIGl0IHN0YXRpYy4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogVXNlIG5ldyBpbnRlcmZhY2UgdG8KCWNvbnZlcnRfZGVmYXVsdF9hcmcuCgoxOTk5LTAxLTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9mdW5jdGlvbl9kZWNsKTogRG9uJ3QgcHJpbnQgdGhlIGFyZ3VtZW50IHR5cGVzIGZvcgoJYSBmdW5jdGlvbiB3aGVuIHRoZSB2ZXJib3NpdHkgbGV2ZWwgaXMgbmVnYXRpdmUuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IENoZWNrIGZvcm1hdCBhdHRyaWJ1dGVzIGF0IGNhbGwtdGltZS4KCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogRml4IGNvbW1lbnQuCgkodW5pZnkpOiBEb24ndCBhbGxvdyB1bmlmaWNhdGlvbiB3aXRoIHZhcmlhYmxlLXNpemVkIGFycmF5cy4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfc3RtdF9leHByKTogV2hlbiBwcm9jZXNzaW5nIGEgdGVtcGxhdGUgbWFrZQoJdGhlIEJJTkRfRVhQUiBsb25nLWxpdmVkLgoKMTk5OS0wMS0xOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogTWFrZSB2dGFibGVzIGNvbWRhdCBoZXJlLgoJKGltcG9ydF9leHBvcnRfdnRhYmxlKTogTm90IGhlcmUuCgoxOTk5LTAxLTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IFdyYXAgYW4gT1ZFUkxPQUQgYXJvdW5kIGEgdW5pcXVlCglub24tc3RhdGljIG1lbWJlciBmdW5jdGlvbi4KCjE5OTktMDEtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogT25seSBkaWFnbm9zZSBpbGxlZ2FsIGFkZHJlc3Mgb2YgbWVtYmVyCglmdW5jdGlvbiBpZiBjb21wbGFpbmluZy4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IFJlbW92ZSBkdXBsaWNhdGUgY29kZS4KCjE5OTktMDEtMTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogVXNlIHBlcm1hbmVudF9vYnN0YWNrLgoKMTk5OS0wMS0xOCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YtZnMudXNjLmVkdT4KCgkqIHB0LmMgKHVuaWZ5KTogUmVtb3ZlIHJlc3RyaWN0aW9ucyBvbiBkZWR1Y3Rpb24gb2YgYXJndW1lbnQKCW9mIHRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgoxOTk5LTAxLTE4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3RfMSk6IFJlc29sdmUgT0ZGU0VUX1JFRiBleHBycy4KCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogU2hvdyBsaXN0IG9mCglhbGwgY2FuZGlkYXRlcywgd2hlbiBub25lIG9mIHRoZW0gbWF0Y2guCgoxOTk5LTAxLTE4ICBDaGlwIFNhbHplbmJlcmcgIDxjaGlwQHBlcmxzdXBwb3J0LmNvbT4KCgkqIHR5cGVjay5jIChjb21wX3B0cl90dHlwZXNfcmVpbnRlcnByZXQpOiBQZXIgQU5TSSwgdGlnaHRlbiB1cAoJZGVmaW5pdGlvbiBvZiAnY2FzdGluZyBhd2F5IGNvbnN0JyBpbiByZWludGVycHJldF9jYXN0PD4uCgoxOTk5LTAxLTE4ICBHcmFoYW0gIDxncmFoYW1zQHJjcC5jby51az4KCgkqIGN2dC5jOiBBZGQgaW5jbHVkZSBmb3IgZGVjbC5oLCByZW1vdmUgZXh0ZXJuIGZvcgoJc3RhdGljX2FnZ3JlZ2F0ZXMgd2hpY2ggaXMgbm93IHByb3ZpZGVkIGJ5IGRlY2wuaC4KCgkqIE1ha2VmaWxlLmluIChjdnQubyk6IEFkZCBkZXBlbmRlbmN5IGZvciBkZWNsLmggYW5kIG1pc3NpbmcKCWRlcGVuZGVuY2llcyBmb3IgY29udmVydC5oIGFuZCBmbGFncy5oLgoKMTk5OS0wMS0xOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGRlY2wyLmMgKGRvX2R0b3JzKTogU2V0IGN1cnJlbnQgbG9jYXRpb24gdG8gdGhhdCBvZiB0aGUKCWRlY2wsIGZvciBzZW5zaWJsZSBkaWFnbm9zdGljcyBhbmQgZGVidWdnaW5nLgoJKGNoZWNrX2NsYXNzZm4pOiBJc3N1ZSBgaW5jb21wbGV0ZSB0eXBlJyBlcnJvciwgaWYKCWNsYXNzIGlzIG5vdCBkZWZpbmVkLgoKMTk5OS0wMS0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oOiBBZGQgcHJvdG90eXBlIGZvciBib3VuZF9wbWZfcC4KCjE5OTktMDEtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCSAgICBNYW5mcmVkIEhvbGxzdGVpbiA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBtYWtlICdtYWluKCl7fScgYW4gZXJyb3Igd2l0aCBvbmx5CgktV3JldHVybi10eXBlLgoKMTk5OS0wMS0xNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmdfdHlwZSk6IEFkZGVkIGhhc19tdXRhYmxlIGZsYWcuCgkoQ0xBU1NUWVBFX0hBU19NVVRBQkxFKTogTmV3IG1hY3JvIHRvIGFjY2VzcyBpdC4KCShUWVBFX0hBU19NVVRBQkxFX1ApOiBOZXcgbWFjcm8gdG8gcmVhZCBpdC4KCShjcF9oYXNfbXV0YWJsZV9wKTogUHJvdG90eXBlIGZvciBuZXcgZnVuY3Rpb24uCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFNldCBoYXNfbXV0YWJsZSBmcm9tIG1lbWJlcnMuCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBDbGVhciBkZWNsJ3MgVFJFRV9SRUFET05MWSBmbGFnLCBpZgoJaXQgY29udGFpbnMgYSBtdXRhYmxlLgoJKiB0eXBlY2suYyAoY3BfaGFzX211dGFibGVfcCk6IE5ldyBmdW5jdGlvbi4KCjE5OTktMDEtMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBJZ25vcmUgdG9wLWxldmVsIHF1YWxpZmllcnMgb24KCW5vbi10eXBlIHBhcmFtZXRlcnMuCgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIGN1cnJlbnRfZnVuY3Rpb25fcGFybXMgaW4gdGhlIGNhbGwKCXRvIHJlcXVpcmVfY29tcGxldGVfdHlwZV9mb3JfcGFybXMsIG5vdCB0aGUgcHJvYmFibHkgZW1wdHkKCURFQ0xfQVJHVU1FTlRTLgoKMTk5OS0wMS0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IERvbid0IHdhcm4gYWJvdXQgcmVkdW5kYW50IHZvbGF0aWxlLgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9jbGFzcyk6IE1VTFRJUExFX1NZTUJPTF9TUEFDRVMgb25seSBtZWFucwoJdGhhdCB3ZSBkb24ndCBzdXBwcmVzcyB0aGUgb3RoZXIgY29waWVzLgoJKiBsZXguYyAoaGFuZGxlX2NwX3ByYWdtYSk6IExpa2V3aXNlLgoKMTk5OS0wMS0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBVbmRvIDE5OTgtMTItMTQgY2hhbmdlLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX2FycmF5X3R5cGVfMSk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFJlbW92ZSBtaXNsZWFkaW5nIGNvbW1lbnQuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IFN1YnN0aXR1dGUgaWYgdGhlcmUgYXJlIHRlbXBsYXRlIHBhcmFtZXRlcnMsCglyZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IHRoZXkgdXNlIHRlbXBsYXRlIGFyZ3VtZW50cy4KCSh1bmlmeSk6IExpa2V3aXNlLCBidXQgZm9yIHVuaWZpY2F0aW9uLgoKMTk5OS0wMS0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoZmxhZ19wZXJtaXNzaXZlKTogRGVjbGFyZSBleHRlcm4uCgoxOTk5LTAxLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChJREVOVElGSUVSX1RZUEVOQU1FX1ApOiBVc2UgT1BFUkFUT1JfVFlQRU5BTUVfRk9STUFUCgloZXJlLgoJKGxhbmdfdHlwZSk6IEFkZCBpc19wYXJ0aWFsX2luc3RhbnRpYXRpb24uICBEZWNyZWFzZSB3aWR0aCBvZgoJZHVtbXkuCgkoUEFSVElBTF9JTlNUQU5USUFUSU9OX1ApOiBOZXcgbWFjcm8uCgkoT1BFUkFUT1JfVFlQRU5BTUVfUCk6IFJlbW92ZS4KCSogZGVjbC5jICh1bmFyeV9vcF9wKTogVXNlIElERU5USUZJRVJfVFlQRU5BTUVfUCwgbm90CglPUEVSQVRPUl9UWVBFTkFNRV9QLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogSGFuZGxlIGZyaWVuZHMgdGhhdCBhcmUgbWVtYmVyIGZ1bmN0aW9ucwoJY29ycmVjdGx5LgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IFVzZSBPUEVSQVRPUl9UWVBFTkFNRV9GT1JNQVQuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUmV3b3JrIGZvciBjbGFyaXR5LiAgQXZvaWQKCWxlYXZpbmcgVFlQRV9CRUlOR19ERUZJTkVEIHNldCBpbiBvYnNjdXJlIGNhc2VzLiAgRG9uJ3QgZG8KCWFueSBtb3JlIHBhcnRpYWwgaW5zdGFudGlhdGlvbiB0aGFuIGlzIGFic29sdXRlbHkgbmVjZXNzYXJ5IGZvcgoJaW1wbGljaXQgdHlwZW5hbWUuICBTZXQgUEFSVElBTF9JTlNUQU5USUFUSU9OX1AuCgkodHN1YnN0X2RlY2wpOiBVc2UgSURFTlRJRklFUl9UWVBFTkFNRV9QLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IEhhbmRsZSBwYXJ0aWFsCglzcGVjaWFsaXphdGlvbnMgb2YgYSB0eXBlIHRoYXQgd2FzIHByZXZpb3VzbHkgcGFydGlhbGx5CglpbnN0YW50aWF0ZWQuCgpXZWQgSmFuICA2IDAzOjE4OjUzIDE5OTkgIE1hcmsgRWxicmVjaHQgIDxzbm93YmFsbDNAdXNhLm5ldC4KCgkqIGcrK3NwZWMuYyAoTElCU1REQ1hYKTogUHJvdmlkZSBkZWZhdWx0IGRlZmluaXRpb24uCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBVc2UgTElCU1REQ1hYIGluc3RlYWQgb2YgIi1sc3RkYysrIi4KClR1ZSBKYW4gIDUgMjI6MTE6MjUgMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChnKysubyk6IERlcGVuZCBvbiBwcmVmaXguaC4KCjE5OTktMDEtMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoYm91bmRfcG1mX3ApOiBOZXcgZm4uCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBVc2UgaXQuCgoJKiBkZWNsLmMgKGdyb2tfb3BfcHJvcGVydGllcyk6IFVzZSBzYW1lX3R5cGVfcC4KClR1ZSBEZWMgMjIgMTU6MDk6MjUgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGN2dC5vKTogRGVwZW5kIG9uIHRvcGxldi5oLgoKCSogY3AtdHJlZS5oIChjaGVja190ZW1wbGF0ZV9zaGFkb3csIHBvZF90eXBlX3ApOiBBZGQgcHJvdG90eXBlcy4KCgkqIGN2dC5jOiBJbmNsdWRlIHRvcGxldi5oLgoKCSogZXhjZXB0LmMgKGdldF9laF9jYXVnaHQsIGdldF9laF9oYW5kbGVycyk6IEhpZGUgcHJvdG90eXBlcyBhbmQKCWRlZmluaXRpb25zLgoKCSogaW5pdC5jIChleHBhbmRfdmVjX2luaXQpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBpdHlwZScuCgoJKiBsZXguYyAoeXllcnJvcik6IENhc3QgdGhlIGFyZ3VtZW50IHBhc3NlZCB0byBhIGN0eXBlIGZ1bmN0aW9uIHRvCglhbiB1bnNpZ25lZCBjaGFyLgoKCSogbWV0aG9kLmMgKGJ1aWxkX21hbmdsZWRfQzl4X25hbWUpOiBXcmFwIHByb3RvdHlwZSBhbmQgZGVmaW5pdGlvbgoJaW4gIkhPU1RfQklUU19QRVJfV0lERV9JTlQgPj0gNjQiLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IE1hcmsgcGFyYW1ldGVyIGBjb252ZXJ0X3AnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoxOTk4LTEyLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChUWVBFX1JBSVNFU19FWENFUFRJT05TKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKiB0cmVlLmMgKGJ1aWxkX2V4Y2VwdGlvbl92YXJpYW50KTogRG9uJ3QgY3Jhc2ggb24gZW1wdHkgdGhyb3cKCXNwZWNzLgoKMTk5OC0xMi0xOCAgREogRGVsb3JpZSAgPGRqQGN5Z251cy5jb20+CgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBDaGVjayBmb3IgYm90aCBlcnJvcl9tYXJrX25vZGUKCWFuZCBOVUxMX05PREUgYWZ0ZXIgY2FsbCB0byBjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbi4KCjE5OTgtMTItMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGVycm9yLmMgKGludGVyZXN0aW5nX3Njb3BlX3ApOiBOZXcgZm4uCgkoZHVtcF9zaW1wbGVfZGVjbCk6IFVzZSBpdC4KCShkdW1wX2V4cHIsIGNhc2UgQ09OU1RSVUNUT1IpOiBGb3JjZSBhICYgZm9yIGEgUE1GLgoJKGR1bXBfZXhwciwgY2FzZSBPRkZTRVRfUkVGKTogUHJpbnQgLT4qIGlmIGFwcHJvcHJpYXRlLgoKMTk5OC0xMi0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogRG8gY29udmVyc2lvbgoJdG8gY29ycmVjdCB0eXBlIGhlcmUsIHJhdGhlciB0aGFuIC4uLgoJKGluc3RhbnRpYXRlX3R5cGUpOiBIZXJlLgoKCSogY3AtdHJlZS5oIChERUNMX1RFTVBMQVRFX1BBUk1fUCk6IE5ldyBtYWNyby4KCShERUNMX1RFTVBMQVRFX1RFTVBMQVRFX1BBUk1fUCk6IFVzZSBpdC4KCShkZWNsX3RlbXBsYXRlX3Bhcm1fcCk6IFJlbW92ZS4KCSogZGVjbC5jIChwdXNoZGVjbCk6IERvbid0IHNldCBERUNMX0NPTlRFWFQgZm9yIGEgdGVtcGxhdGUKCXBhcmFtZXRlci4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBVc2UgREVDTF9URU1QTEFURV9QQVJNX1AuCgkqIHB0LmMgKHB1c2hfaW5saW5lX3RlbXBsYXRlX3Bhcm1zX3JlY3Vyc2l2ZSk6IFNldCBpdC4KCShkZWNsX3RlbXBsYXRlX3Bhcm1fcCk6IFJlbW92ZS4KCShjaGVja190ZW1wbGF0ZV9zaGFkb3cpOiBVc2UgREVDTF9URU1QTEFURV9QQVJNX1AuCgkocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogU2V0IGl0LgoKV2VkIERlYyAxNiAxNjozMzo1OCAxOTk4ICBEYXZlIEJyb2xsZXkgIDxicm9sbGV5QGN5Z251cy5jb20+CgoJKiBsYW5nLXNwZWNzLmggKGRlZmF1bHRfY29tcGlsZXJzKTogUGFzcyAtTUQsIC1NTUQgYW5kIC1NRyB0byBjYzFwbHVzCglpZiBjb25maWd1cmVkIHdpdGggY3BwbGliLgoKMTk5OC0xMi0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBNYWtlIHN1cmUgbnNfYmluZGluZyBpcyBpbml0aWFsaXplZC4KCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogVW5kbyBpbmFkdmVydGVudCBjaGFuZ2UgaW4gcHJldmlvdXMKCXBhdGNoLgoKMTk5OC0xMi0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNsYXNzLmMgKHB1c2hjbGFzcyk6IFR3ZWFrIGhhbmRsaW5nIG9mIGNsYXNzLWxldmVsIGJpbmRpbmdzLgoJKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogVXBkYXRlIHBvaW50ZXItdG8tbWVtYmVyCgloYW5kbGluZy4KCShpbnN0YW50aWF0ZV90eXBlKTogTGlrZXdpc2UuCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBMaWtld2lzZS4KCSogZGVjbC5jIChwb3BfYmluZGluZyk6IFRha2UgdGhlIERFQ0wgdG8gcG9wLCBub3QganVzdCB0aGUgbmFtZS4KCURlYWwgd2l0aCBgc3RydWN0IHN0YXQnIGhhY2suCgkoYmluZGluZ19sZXZlbCk6IEFkZCB0byBkb2N1bWVudGF0aW9uLgoJKHB1c2hfYmluZGluZyk6IENsZWFyIEJJTkRJTkdfVFlQRS4KCShhZGRfYmluZGluZyk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX2xvY2FsX2JpbmRpbmcpOiBVc2UgaXQuCgkocHVzaF9jbGFzc19iaW5kaW5nKTogTGlrZXdpc2UuCgkocG9wbGV2ZWwpOiBBZGp1c3QgY2FsbHMgdG8gcG9wX2JpbmRpbmcuCgkocG9wbGV2ZWxfY2xhc3MpOiBMaWtld2lzZS4KCShwdXNoZGVjbCk6IEFkanVzdCBoYW5kbGluZyBvZiBUWVBFX0RFQ0xzOyBhZGQgYmluZGluZ3MgZm9yIGhpZGRlbgoJZGVjbGFyYXRpb25zIHRvIGN1cnJlbnQgYmluZGluZyBsZXZlbC4KCShwdXNoX2NsYXNzX2xldmVsX2JpbmRpbmcpOiBMaWtld2lzZS4KCShwdXNoX292ZXJsb2FkZWRfZGVjbCk6IEFkanVzdCBoYW5kbGluZyBvZiBPVkVSTE9BRHMgaW4gbG9jYWwKCWJpbmRpbmdzLgoJKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IERvbid0IGNyYXNoIHdoZW4gY29uZnJvbnRlZCB3aXRoIGEKCVRFTVBMQVRFX0RFQ0wuCgkobG9va3VwX25hbWVfcmVhbCk6IERvIGBzdHJ1Y3Qgc3RhdCcgaGFjayBpbiBsb2NhbCBiaW5kaW5nCgljb250ZXh0cy4KCShidWlsZF9wdHJtZW1mdW5jX3R5cGUpOiBBZGp1c3QgZG9jdW1lbnRhdGlvbi4KCShncm9rZGVjbGFyYXRvcik6IERvbid0IGF2b2lkIGJ1aWxkaW5nIHJlYWwgYXJyYXkgdHlwZXMgd2hlbgoJcHJvY2Vzc2luZyB0ZW1wbGF0ZXMgdW5sZXNzIHJlYWxseSBuZWNlc3NhcnkuCgkoZmluaXNoX21ldGhvZCk6IEFkanVzdCBjYWxscyB0byBwb3BfYmluZGluZy4KCSogZGVjbDIuYyAocmVwYXJzZV9hYnNkY2xfYXNfZXhwcik6IFJlY3Vyc2l2ZWx5IGNhbGwgb3Vyc2VsdmVzLAoJbm90IHJlcGFyc2VfZGVjbF9hc19leHByLgoJKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogRGVhbCB3aXRoIGEgdGVtcGxhdGUtaWQgYXMgdGhlIGZ1bmN0aW9uIHRvCgljYWxsIGluIGEgTUVUSE9EX0NBTExfRVhQUi4KCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogVHdlYWsgcG9pbnRlci10by1tZW1iZXIgaGFuZGxpbmcuCgkobWF5YmVfYWRqdXN0X3R5cGVzX0Zvcl9kZWR1Y3Rpb24pOiBEb24ndCBkbyBwZWN1bGlhciB0aGluZ3Mgd2l0aAoJTUVUSE9EX1RZUEVzIGhlcmUuCgkocmVzb2x2ZV9vdmVybG9hZGVkX3VuaWZpY2F0aW9uKTogSGFuZGxlIENPTVBPTkVOVF9SRUZzLiAgQnVpbGQKCXBvaW50ZXItdG8tbWVtYmVyIHR5cGVzIHdoZXJlIG5lY2Vzc2FyeS4KCSogdHJlZS5jIChidWlsZF9jcGx1c19hcnJheV90eXBlXzEpOiBEb24ndCBhdm9pZCBidWlsZGluZyByZWFsCglhcnJheSB0eXBlcyB3aGVuIHByb2Nlc3NpbmcgdGVtcGxhdGVzIHVubGVzcyByZWFsbHkgbmVjZXNzYXJ5LgoJKGJ1aWxkX2V4Y2VwdGlvbl92YXJpYW50KTogQ29tcGFyZSB0aGUgZXhjZXB0aW9uIGxpc3RzIGNvcnJlY3RseS4KCjE5OTgtMTItMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmRlZiAoQ1BMVVNfQklORElORyk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKiBjcC10cmVlLmggKExPQ0FMX0JJTkRJTkdfUCk6IE5ldyBtYWNyby4KCShsYW5nX2lkZW50aWZpZXIpOiBSZW5hbWUgbG9jYWxfdmFsdWUgdG8gYmluZGluZ3MuCgkodHJlZV9iaW5kaW5nKTogTWFrZSBgc2NvcGUnIG9mIHR5cGUgYHZvaWQqJywgbm90IGB0cmVlJy4KCShCSU5ESU5HX1NDT1BFKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkoSURFTlRJRklFUl9MT0NBTF9WQUxVRSk6IFJlbW92ZS4KCShJREVOVElGSUVSX0NMQVNTX1ZBTFVFKTogRG9jdW1lbnQuCgkoSURFTlRJRklFUl9CSU5ESU5HKTogTmV3IG1hY3JvLgoJKElERU5USUZJRVJfVkFMVUUpOiBMaWtld2lzZS4KCShUSU1FX0lERU5USUZJRVJfVElNRSk6IExpa2V3aXNlLgoJKFRJTUVfSURFTlRJRklFUl9GSUxFSU5GTyk6IExpa2V3aXNlLgoJKElNUExJQ0lUX1RZUEVOQU1FX1ApOiBMaWtld2lzZS4KCShzZXRfaWRlbnRpZmllcl9sb2NhbF92YWx1ZSk6IFJlbW92ZS4KCShwdXNoX2xvY2FsX2JpbmRpbmcpOiBOZXcgZnVuY3Rpb24uCgkocHVzaF9jbGFzc19iaW5kaW5nKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKHB1c2hjbGFzcyk6IFVwZGF0ZSBjb21tZW50czsgdXNlIHB1c2hfY2xhc3NfYmluZGluZy4KCSogZGVjbC5jIChzZXRfaWRlbnRpZmllcl9sb2NhbF92YWx1ZV93aXRoX3Njb3BlKTogUmVtb3ZlLgoJKHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlKTogTGlrZXdpc2UuCgkocHVzaF9iaW5kaW5nKTogTmV3IGZ1bmN0aW9uLgoJKHBvcF9iaW5kaW5nKTogTGlrZXdpc2UuCgkoYmluZGluZ19sZXZlbCk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLiAgUmVtb3ZlIHNoYWRvd2VkLgoJKEJJTkRJTkdfTEVWRUwpOiBOZXcgbWFjcm8uCgkoZnJlZV9iaW5kaW5nX25vZGVzKTogTmV3IHZhcmlhYmxlLgoJKHBvcGxldmVsKTogQWRqdXN0IGZvciBuZXcgbmFtZS1sb29rdXAgc2NoZW1lLiAgRG9uJ3QgbWVzcyB1cAoJQkxPQ0tfVkFScyB3aGVuIGRvaW5nIGZvci1zY29wZSBleHRlbnNpb24uICBSZW1vdmUgZWZmZWN0aXZlbHkKCWRlYWQgY29kZS4KCShwdXNobGV2ZWxfY2xhc3MpOiBUd2VhayBmb3JtYXR0aW5nLgoJKHBvcGxldmVsX2NsYXNzKTogQWRqdXN0IGZvciBuZXcgbmFtZS1sb29rdXAgc2NoZW1lLgoJKHByaW50X2JpbmRpbmdfbGV2ZWwpOiBMaWtld2lzZS4KCShzdG9yZV9iaW5kaW5ncyk6IExpa2V3aXNlLgoJKHB1c2hkZWNsKTogTGlrZXdpc2UuCgkocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBMaWtld2lzZS4KCShwdXNoX2NsYXNzX2xldmVsX2JpbmRpbmcpOiBMaWtld2lzZS4KCShwdXNoX292ZXJsb2FkZWRfZGVjbCk6IFVwZGF0ZSBjb21tZW50cy4gIEFkanVzdCBmb3IgbmV3CgluYW1lLWxvb2t1cCBzY2hlbWUuCgkobG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoJKGxvb2t1cF9uYW1lX2N1cnJlbnRfbGV2ZWwpOiBMaWtld2lzZS4KCShjcF9maW5pc2hfZGVjbCk6IExpa2V3aXNlLgoJKHJlcXVpcmVfY29tcGxldGVfdHlwZXNfZm9yX3Bhcm1zKTogTGlrZXdpc2UuICBSZW1vdmUgbWlzbGVhZGluZwoJI2lmIDAnZCBjb2RlLgoJKGdyb2tfcGFybXMpOiBMaWtld2lzZS4gIERvbid0IGNhbGwKCXJlcXVpcmVfY29tcGxldGVfdHlwZXNfZm9yX3Bhcm1zIGhlcmUuCgkoZ3Jva19jdG9yX3Byb3BlcnRpZXMpOiBEb24ndCB0cmVhdCB0ZW1wbGF0ZXMgYXMgY29weQoJY29uc3RydWN0b3JzLgoJKGdyb3Bfb3BfcHJvcGVydGllcyk6IE9yIGFzIGFzc2lnbm1lbnQgb3BlcmF0b3JzLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRG9jdW1lbnQuICBBZGp1c3QgZm9yIG5ldyBuYW1lLWxvb2t1cCBzY2hlbWUuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGRvX2xvY2FsX3VzaW5nX2RlY2wpOiBVc2UgcHVzaF9sb2NhbF9iaW5kaW5nLgoJKiBsZXguYyAoYmVnaW5fZGVmaW5pdGlvbl9vZl9pbmNsYXNzX2lubGluZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQKCW91dCBmcm9tIC4uLgoJKGRvX3BlbmRpbmdfaW5saW5lcyk6IEhlcmUsIGFuZCAuLi4KCShwcm9jZXNzX25leHRfaW5saW5lKTogSGVyZS4KCShnZXRfdGltZV9pZGVudGlmaWVyKTogVXNlIFRJTUVfSURFTlRJRklFUl8qIG1hY3Jvcy4KCShpbml0X2ZpbGVuYW1lX3RpbWVzKTogTGlrZXdpc2UuCgkoZXh0cmFjdF9pbnRlcmZhY2VfaW5mbyk6IExpa2V3aXNlLgoJKHN0ZV90eXBlZGVjbF9pbnRlcmZhY2VfaW5mbyk6IExpa2V3aXNlLgoJKGNoZWNrX25ld2xpbmUpOiBMaWtld2lzZS4KCShkdW1wX3RpbWVfc3RhdGlzdGljcyk6IExpa2V3aXNlLgoJKGhhbmRsZV9jcF9wcmFnbWEpOiBMaWtld2lzZS4KCShkb19pZGVudGlmaWVyKTogQWRqdXN0IGZvciBuZXcgbmFtZS1sb29rdXAgc2NoZW1lLgoJKiBwYXJzZS55IChmdW5jdGlvbl90cnlfYmxvY2spOiBSZXR1cm4gY3Rvcl9pbml0aWFsaXplcl9vcHQgdmFsdWUuCgkoZm5kZWYpOiBVc2UgaXQuCgkoZm4uZGVmcGVuKTogUGFzcyBhcHByb3ByaWF0ZSB2YWx1ZXMgdG8gc3RhcnRfZnVuY3Rpb24uCgkocGVuZGluZ19pbmxpbmUpOiBVc2UgZnVuY3Rvcl90cnlfYmxvY2sgdmFsdWUsIGFuZCBwYXNzCglhcHByb3ByaWF0ZSB2YWx1ZXMgdG8gZmluaXNoX2Z1bmN0aW9uLgoJKiBwdC5jIChpc19tZW1iZXJfdGVtcGxhdGUpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbjsgcmVtb3ZlIGhhbmRsaW5nCglvZiBGVU5DVElPTl9ERUNMcy4gIEFzIHBlciBuYW1lLCB0aGlzIGZ1bmN0aW9uIHNob3VsZCBkZWFsIG9ubHkgaW4KCVRFTVBMQVRFX0RFQ0xzLgoJKGRlY2xfdGVtcGxhdGVfcGFybV9wKTogQ2hhbmdlIG5hbWUgb2Ygb2xkZGVjbCBwYXJhbWV0ZXIgdG8gZGVjbC4KCShjaGVja190ZW1wbGF0ZV9zaGFkb3cpOiBBZGp1c3QgZm9yIG5ldyBuYW1lLWxvb2t1cCBzY2hlbWUuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodHN1YnN0X2RlY2wpOiBUd2VhayBzbyBhcyBub3QgdG8gY29uZnVzZSBtZW1iZXIgdGVtcGxhdGVzIHdpdGgKCWNvcHkgY29uc3RydWN0b3JzIGFuZCBhc3NpZ25tZW50IG9wZXJhdG9ycy4KCSh1bmlmeSk6IEhhbmRsZSBVTklPTl9UWVBFcy4KCSogcHRyZWUuYyAocHJpbnRfbGFuZ19pZGVudGlmaWVyKTogQWRqdXN0IGZvciBuZXcgbmFtZS1sb29rdXAgc2NoZW1lLgoJKGxhbmdfcHJpbnRfeG5vZGUpOiBBZGp1c3QgZm9yIG5ldyBuYW1lLWxvb2t1cCBzY2hlbWUuCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogTGlrZXdpc2UuCgkoY19leHBhbmRfcmV0dXJuKTogTGlrZXdpc2UuCgoxOTk4LTEyLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWxsb3cgZmllbGQgd2l0aCBzYW1lIG5hbWUgYXMgY2xhc3MKCWluIGV4dGVybiAiQyIuCgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBEb24ndCBsaW1pdCBmaWVsZCBsb29rdXAgdG8gdHlwZXMuCgkqIGNsYXNzLmMgKGNoZWNrX21lbWJlcl9kZWNsX2lzX3NhbWVfaW5fY29tcGxldGVfc2NvcGUpOiBObyBlcnJvcgoJaWYgaWN2IGFuZCB4IGFyZSB0aGUgc2FtZS4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBUd2VhayBlcnJvciBtZXNzYWdlLgoKMTk5OC0xMi0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZW51bSk6IFVzZSBwdXNoX29ic3RhY2tzLCBub3QKCWVuZF90ZW1wb3JhcnlfYWxsb2NhdGlvbi4KCShmaW5pc2hfZW51bSk6IENhbGwgcG9wX29ic3RhY2tzLgoKMTk5OC0xMi0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIHJhdGhlciB0aGFuCglqdW5rLgoKMTk5OC0xMi0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAobW9zdF9zcGVjaWFsaXplZF9pbnN0YW50aWF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHByaW50X2NhbmRpZGF0ZXMpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAodmFsaWRhdGVfbGhzKTogUmVtb3ZlLgoJKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQKCWFuZCB0aGVuIHN1YnN0YW50aWFsbHkgcmV3b3JrZWQsIGZyb20gLi4uCgkoaW5zdGFudGlhdGVfdHlwZSk6IFVzZSBpdC4gIFNpbXBsaWZ5LgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBDb21wbGFpbiB3aGVuIGNhbGxlciBoYXMgaW5kaWNhdGVkCgl0aGF0J3MgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLiAgRG9uJ3QgY3Jhc2ggaWYgaW5zdGFudGlhdGVfdHlwZQoJZmFpbHMuCgkqIHB0LmM6IFN1YnN0aXR1dGUgYHBhcmFtZXRlcnMnIGZvciBgcGFyYW10ZXJzJyB0aHJvdWdob3V0LgoJKHByaW50X2NhbmRpZGF0ZXMpOiBEb24ndCBtYWtlIGl0IHN0YXRpYy4KCShtb3N0X3NwZWNpYWxpemVkX2luc3RhbnRpYXRpb24pOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShtb3N0X3NwZWNpYWxpemVkKTogSGVyZS4KCldlZCBEZWMgIDkgMTU6MzM6MDEgMTk5OCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmMgKGxhbmdfaW5pdF9vcHRpb25zKTogSW5pdGlhbGl6ZSBjcHBsaWIuCgkqIGRlY2wyLmMgKHBhcnNlX29wdGlvbnMsY3BwX2luaXRpYWxpemVkKTogUmVtb3ZlZC4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBNb3ZlIGluaXRpYWxpemF0aW9uIG9mIGNwcGxpYiB0bwoJbGFuZ19pbml0X29wdGlvbnMuCgoxOTk4LTEyLTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVwZGF0ZSB0aGUgbmFtZSBvZiB0aGUgVEVNUExBVEVfREVDTCwgYXMKCXdlbGwgYXMgdGhlIFRZUEVfREVDTCwgd2hlbiBhIHR5cGVkZWYgbmFtZSBpcyBhc3NpZ25lZCB0byBhCglwcmV2aW91c2x5IGFub255bW91cyB0eXBlLgoKMTk5OC0xMi0wOCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogY3AvZXhjZXB0LmMgKGNhbGxfZWhfaW5mbyk6IFVzZSBfX3N0YXJ0X2NwX2hhbmRsZXIgaW5zdGVhZCBvZgoJX19jcF9laF9pbmZvIGZvciBnZXR0aW5nIHRoZSBlaCBpbmZvIHBvaW50ZXIuICBBZGQgdGFibGVfaW5kZXggdG8KCWZpZWxkIGxpc3QuCgkocHVzaF9laF9jbGVhbnVwKTogRG9uJ3QgaW5jcmVtZW50ICdoYW5kbGVycycgZGF0YSBmaWVsZC4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrKTogRG9uJ3Qgc2V0IHRoZSAnY2F1Z2h0JyBmaWVsZC4KCgkqIGNwL2V4Y2VwdGlvbi5jYyAoQ1BfRUhfSU5GTyk6IE5ldyBtYWNybyBmb3IgZ2V0dGluZyB0aGUKCWV4Y2VwdGlvbiBpbmZvIHBvaW50ZXIgd2l0aGluIGxpYnJhcnkgcm91dGluZXMuCgkoX19jcF9laF9pbmZvKTogVXNlIENQX0VIX0lORk8uCgkoX19zdGFydF9jcF9oYW5kbGVyKTogR2V0IGV4Y2VwdGlvbiBpbmZvIHBvaW50ZXIsIHNldCBjYXVnaHQgZmllbGQsCglhbmQgaW5jcmVtZW50IHRoZSBoYW5kbGVycyBmaWVsZC4gIEF2b2lkcyB0aGlzIGJlaW5nIGRvbmUgYnkgaGFuZGxlcnMuCgkoX191bmNhdGNoX2V4Y2VwdGlvbiwgX19jaGVja19laF9zcGVjKTogVXNlIENQX0VIX0lORk8gbWFjcm8uCgkodW5jYXVnaHRfZXhjZXB0aW9uKTogVXNlIENQX0VIX0lORk8gbWFjcm8uCgpUdWUgRGVjICA4IDEwOjQ4OjIxIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIE1ha2UtbGFuZy5pbiAoY3h4bWFpbi5vKTogRGVwZW5kIG9uICQoREVNQU5HTEVfSCksIG5vdCBkZW1hbmdsZS5oCgpNb24gRGVjICA3IDE3OjU2OjA2IDE5OTggIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIGxleC5jIChjaGVja19uZXdsaW5lKTogQWRkIHN1cHBvcnQgZm9yIFwgYXMgYG5hdHVyYWwnCgljaGFyYWN0ZXJzIGluIGZpbGUgbmFtZXMgaW4gI2xpbmUgdG8gYmUgY29uc2lzdGVudCB3aXRoICNpbmNsdWRlCgloYW5kbGluZy4gIFdlIHN1cHBvcnQgZXNjYXBlIHByb2Nlc3NpbmcgaW4gdGhlICMgMSAiLi4uIiB2ZXJzaW9uIG9mCgl0aGUgY29tbWFuZC4gIFNlZSBhbHNvIHN1cHBvcnQgaW4gY3AvbGV4LmMuCgoxOTk4LTEyLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0ByYWJpLnBoeXMuY29sdW1iaWEuZWR1PgoKCSogY3AvZGVjbDIuYzogcy9kYXRhL29wdHMvIHdoZW4gaW5pdGlhbGl6aW5nIGNwcF9yZWFkZXIKCXN0cnVjdHVyZS4KCjE5OTgtMTItMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfdHlwZW5hbWVfdHlwZSk6IFNldCBERUNMX0FSVElGSUNJQUwuCgoJKiBlcnJvci5jIChkdW1wX3NpbXBsZV9kZWNsKTogQWxzbyBwcmludCBuYW1lc3BhY2UgY29udGV4dC4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBMaWtld2lzZS4KCgkqIGRlY2wyLmMgKGFtYmlndW91c19kZWNsKTogRG9uJ3QgcHJpbnQgb2xkIHZhbHVlIGlmIGl0J3MKCWVycm9yX21hcmtfbm9kZS4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEZpeCBoYW5kbGluZyBvZiBsb2NhbCB0eXBlcyBzaGFkb3dlZAoJYnkgYSBub24tdHlwZSBkZWNsLiAgUmVtb3ZlIG9ic29sZXRlIGNvZGUuCgkqIGNwLXRyZWUuaCAoREVDTF9GVU5DVElPTl9TQ09QRV9QKTogTmV3IG1hY3JvLgoKCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZnBlcm1pc3NpdmUuCgkqIGRlY2wyLmM6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IEFkZCBmbGFnX3Blcm1pc3NpdmUuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJZiBuZWl0aGVyIC1mcGVybWlzc2l2ZSBvciAtcGVkYW50aWMKCXdlcmUgc3BlY2lmaWVkLCBzZXQgZmxhZ19wZWRhbnRpY19lcnJvcnMuCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogVHVybiBkcm9wcGVkIHF1YWxpZmllciBtZXNzYWdlcwoJYmFjayBpbnRvIHBlZHdhcm5zLgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCjE5OTgtMTItMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGNvZXJjZV9uZXdfdHlwZSk6IFVzZSBzYW1lX3R5cGVfcC4KCShjb2VyY2VfZGVsZXRlX3R5cGUpOiBMaWtld2lzZS4KCgkqIGNhbGwuYyAoY2hlY2tfZHRvcl9uYW1lKTogUmV0dXJuIDEsIG5vdCBlcnJvcl9tYXJrX25vZGUuCgoxOTk4LTEyLTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoaGFuZGxlX2NwX3ByYWdtYSk6IERpc2FibGUgI3ByYWdtYSBpbnRlcmZhY2UvaW1wbGVtZW50YXRpb24KCWlmIE1VTFRJUExFX1NZTUJPTF9TUEFDRVMuCgoJKiBwdC5jIChjaGVja190ZW1wbGF0ZV9zaGFkb3cpOiBOZXcgZm4uCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IFVzZSBpdC4KCSogZGVjbC5jIChwdXNoZGVjbCk6IExpa2V3aXNlLgoJKHB1c2hkZWNsX2NsYXNzX2xldmVsKTogTGlrZXdpc2UuCgkoc3RhcnRfbWV0aG9kKTogTGlrZXdpc2UuCgkoeHJlZl90YWcpOiBEb24ndCB0cnkgdG8gdXNlICd0JyBpZiB3ZSdyZSBkZWZpbmluZy4KCgkqIGNhbGwuYyAoY2hlY2tfZHRvcl9uYW1lKTogSnVzdCByZXR1cm4gYW4gZXJyb3JfbWFya19ub2RlLgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBDb21wbGFpbiBhYm91dCB1c2luZyBub24tdGVtcGxhdGUgaGVyZS4KCSogcGFyc2UueSAoYXBwYXJlbnRfdGVtcGxhdGVfdHlwZSk6IE5vdCBoZXJlLgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBDb21wbGFpbiBhYm91dCBzcGVjaWFsaXphdGlvbgoJd2l0aCBDIGxpbmthZ2UuCgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIC1me25vLSx9aW1wbGljaXQtaW5saW5lLXRlbXBsYXRlcy4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IERvbid0IGFzc3VtZSB0aGF0IGFueSBpbnRlZ2VyCglhcmd1bWVudCBpcyBpbnRlbmRlZCB0byBiZSBhIGNvbnN0YW50LWV4cHJlc3Npb24uCgoxOTk4LTEyLTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoaGFuZGxlX3VzaW5nX2RlY2wpOiBGaXggY29tbWVudC4gIERvbid0IGxvb2t1cAoJY29uc3RydWN0b3JzIGluIGJhc2UgY2xhc3Nlcy4KCSh2YWxpZGF0ZV9saHMpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBEb24ndCByZXR1cm4gYSBVU0lOR19ERUNMLgoKCSogY3AtdHJlZS5oIChERUNMX0FDQ0VTUyk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogRG9uJ3Qgc2V0IHRoZSBpbml0aWFsaXphdGlvbi1kb25lCglmbGFnIHVudGlsIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lLgoKMTk5OC0xMi0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wyLmMgKHZhbGlkYXRlX25vbm1lbWJlcl91c2luZ19kZWNsKTogQ29tcGxhaW4gYWJvdXQgdXNpbmcKCWRlY2xhcmF0aW9ucyBmb3IgY2xhc3MgbWVtYmVycy4KCjE5OTgtMTEtMjkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogVXNlIHNhbWVfdHlwZV9wLgoKCSogZGVjbC5jIChjaGVja190YWdfZGVjbCk6IERvbid0IHdhcm4gYWJvdXQgbnVsbCBkZWNsIGluc2lkZSBhCgljbGFzcy4KCgkqIHB0LmMgKHVuaWZ5LCBjYXNlIE9GRlNFVF9UWVBFKTogUGFzcyBkb3duICdzdHJpY3QnIHJhdGhlciB0aGFuCglVTklGWV9BTExPV19OT05FLgoJKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFVzZSBUWVBFX1BUUk1FTUZVTkNfRk5fVFlQRS4KCShyZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24pOiBTdHJpcCBiYXNlbGlua3MuCgpGcmkgTm92IDI3IDEzOjA3OjIzIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGcrK3NwZWMuYzogRG9uJ3QgcHJvdG90eXBlIHhtYWxsb2MuCgoxOTk4LTExLTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogVXNlIFRZUEVfUFRSX1AgdG8gY2hlY2sgZm9yIHBvaW50ZXJzLgoKCSogZGVjbC5jIChjaGVja190YWdfZGVjbCk6IERvIGNvbXBsYWluIGFib3V0IG51bGwgZnJpZW5kIGRlY2wgYXQKCWZpbGUgc2NvcGUuCgoxOTk4LTExLTI1ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5jcy51bmktZG9ydG11bmQuZGU+CgoJKiBsZXguYyAobWFrZV9sYW5nX3R5cGUpOiBDbGVhciB0aGUgd2hvbGUgc3RydWN0IGxhbmdfdHlwZSwgbm90Cglvbmx5IHRoZSBmaXJzdCBtdWx0aXBsZSBvZiBzaXplb2YgKGludCkuCgoxOTk4LTExLTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBBbiBleHBsaWNpdCBzcGVjaWFsaXphdGlvbiBvZiBhIHN0YXRpYyBkYXRhCgltZW1iZXIgaXMgb25seSBhIGRlZmluaXRpb24gaWYgaXQgaGFzIGFuIGluaXRpYWxpemVyLgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IFVzZSBjcF9maW5pc2hfZGVjbCBmb3IgdGhlIHRocm93IHRlbXAuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBQYXNzIERJUkVDVF9CSU5EIGRvd24gaW50bwoJY3BfZmluaXNoX2RlY2wuCgkqIGluaXQuYyAoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IENoZWNrIGZvciBESVJFQ1RfQklORCBpbnN0ZWFkIG9mCglERUNMX0FSVElGSUNJQUwuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IFVzZSBidWlsZF9kZWNsLgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IEp1c3QgdXNlIGNvbnZlcnQsIG5vdAoJYnVpbGRfcmVpbnRlcnByZXRfY2FzdC4KCgkqIGxleC5jIChoYW5kbGVfZ2VuZXJpY19wcmFnbWEpOiBVc2UgdG9rZW5fYnVmZmVyLgoKCSogZGVjbC5jIChjaGVja190YWdfZGVjbCk6IERvbid0IGNvbXBsYWluIGFib3V0IG51bGwgZnJpZW5kIGRlY2wuCgoxOTk4LTExLTI0ICBEYXZlIFBpdHRzICA8ZHBpdHRzQGNvenguY29tPgoKCSogTWFrZS1sYW5nLmluIChERU1BTkdMRVJfUFJPRyk6IE1vdmUgdGhlIG91dHB1dCBhcmd1bWVudHMgdG8gdGhlCglmaXJzdCBwb3NpdGlvbi4KCSogbGV4LmMgKGNoZWNrX25ld2xpbmUpOiBVc2UgSVNBTFBIQS4KCShyZWFkZXNjYXBlKTogVXNlIElTR1JBUEguCgkoeXllcnJvcik6IFVzZSBJU0dSQVBILgoKMTk5OC0xMS0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIHNlYXJjaC5jIChnZXRfYWJzdHJhY3RfdmlydHVhbHMpOiBEbyBub3QgdXNlIGluaXRpYWwKCUNMQVNTVFlQRV9BQlNUUkFDVF9WSVJUVUFMUy4KCSogdHlwZWNrMi5jIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IFNob3cgbG9jYXRpb24gb2YgYWJzdHJhY3QKCWRlY2xhcmF0aW9uLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IFVzZQoJQ0xBU1NUWVBFX0FCU1RSQUNUX1ZJUlRVQUwsIHJhdGhlciB0aGFuIHJlY2FsY3VsYXRlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2JpdHMpOiBEb24ndCBib3RoZXIgd29ya2luZyBvdXQgd2hldGhlcgoJZ2V0X2Fic3RyYWN0X3ZpcnR1YWxzIHdpbGwgZG8gYW55dGhpbmcsIGp1c3QgZG8gaXQuCgoxOTk4LTExLTI0ICBHcmFoYW0gIDxncmFoYW1zQHJjcC5jby51az4KCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogUmVtb3ZlIHVudXNlZCBzdGF0ZW1lbnQuCgoxOTk4LTExLTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogQ2F0Y2ggaW52YWxpZCBvdmVybG9hZHMuCgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogQnVpbGQgdXAgT1ZFUkxPQURzIHByb3Blcmx5IGZvciBjb252ZXJzaW9uIG9wcy4KCSogc2VhcmNoLmMgKGxvb2t1cF9jb252ZXJzaW9ucyk6IEhhbmRsZSBnZXR0aW5nIHJlYWwgT1ZFUkxPQURzLgoJKGFkZF9jb252ZXJzaW9ucyk6IExpa2V3aXNlLiAgUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJKiBjYWxsLmMgKGFkZF9jb252X2NhbmRpZGF0ZSk6IFBhc3MgdG90eXBlIHRvIGFkZF9jYW5kaWRhdGUgaW5zdGVhZAoJb2YgZm4uICBEb24ndCBhZGQgYSBuZXcgY2FuZGlkYXRlIGlmIHRoZSBsYXN0IG9uZSB3YXMgZm9yIHRoZSBzYW1lCgl0eXBlLgoJKHByaW50X3pfY2FuZGlkYXRlcyk6IEhhbmRsZSBnZXR0aW5nIGEgdHlwZSBhcyBhIGZ1bmN0aW9uLgoJKGpvdXN0KTogSWYgd2UgZ290IHR3byBjb252ZXJzaW9uIGNhbmRpZGF0ZXMgdG8gdGhlIHNhbWUgdHlwZSwKCWp1c3QgcGljayBvbmUuCgkoYnVpbGRfb2JqZWN0X2NhbGwpOiBMb3NlICd0ZW1wbGF0ZXMnLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBIYW5kbGUgZ2V0dGluZyByZWFsIE9WRVJMT0FEcy4KCjE5OTgtMTEtMjMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogSWYgdGhlcmUgYXJlIGVsZW1lbnRzCgl0aGF0IGRvbid0IGhhdmUgaW5pdGlhbGl6ZXJzIGFuZCB0aGV5IG5lZWQgdG8gaGF2ZSBjb25zdHJ1Y3RvcnMKCXJ1biwgc3VwcGx5IHRoZW0gd2l0aCBpbml0aWFsaXplcnMuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBBIGNsYXNzIHdpdGggYSAwLXdpZHRoIGJpdGZpZWxkIGlzCglzdGlsbCBlbXB0eS4KCjE5OTgtMTEtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IHRyeSB0byBmaWd1cmUgb3V0IHdoYXQKCXNwZWNpYWxpemF0aW9uIHRvIHVzZSBmb3IgYSBwYXJ0aWFsIGluc3RhbnRpYXRpb24uICBDb3JyZWN0Cgl0eXBvcyBpbiBhIGNvdXBsZSBvZiBjb21tZW50cy4gIEF2b2lkIGNhbGxpbmcgdXNlc190ZW1wbGF0ZV9wYXJtcwoJbXVsdGlwbGUgdGltZXMuCgoxOTk4LTExLTIzICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogQWRkIGNhbGwgdG8KCWJ1aWxkX21hbmdsZWRfQzl4X25hbWUgZm9yIGludFRJX3R5cGVfbm9kZXMuCgkoYnVpbGRfbWFuZ2xlZF9DOXhfbmFtZSk6IEFkZCBwcm90b3R5cGUsIGRlZmluZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCBuYW1lcyBmb3IKCVRJbW9kZV90eXBlX25vZGUuCgoxOTk4LTExLTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChuYW1lZF9jbGFzc19oZWFkKTogVXBkYXRlIENMQVNTVFlQRV9ERUNMQVJFRF9DTEFTUy4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFNldCB0aGluZ3MgdXAgZm9yIDAtd2lkdGggYml0ZmllbGRzCglsaWtlIHdlIGRvIGZvciBvdGhlcnMuCgoJKiBkZWNsLmMgKGNoZWNrX3RhZ19kZWNsKTogTmV3IGZuLgoJKHNoYWRvd190YWcpOiBTcGxpdCBvdXQgZnJvbSBoZXJlLgoJKiBkZWNsMi5jIChncm9rX3hfY29tcG9uZW50cyk6IENhbGwgaXQuCgoxOTk4LTExLTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmM6IExvc2Ugd2Fybl9hYm91dF9yZXR1cm5fdHlwZS4KCShncm9rZGVjbGFyYXRvcik6IEFsd2F5cyBjb21wbGFpbiBhYm91dCBpbXBsaWNpdCBpbnQsIGV4Y2VwdCBmb3IKCWBtYWluICgpIHsgLi4uIH0nLgoKCSogZGVjbC5jICh0YWdfbmFtZSk6IE5ldyBmbi4KCSh4cmVmX3RhZyk6IENvbXBsYWluIGFib3V0IHVzaW5nIHR5cGVkZWYtbmFtZSBhZnRlciBjbGFzcy1rZXkuCgoJKiBpbml0LmMgKGV4cGFuZF92ZWNfaW5pdCk6IEFsc28ga2VlcCBnb2luZyBpZiBmcm9tX2FycmF5LgoKCSogdHJlZS5jIChpc19vdmVybG9hZGVkX2ZuKTogQWxzbyBoYW5kbGUgdGhlIG91dHB1dCBvZgoJYnVpbGRfb2Zmc2V0X3JlZi4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBVc2UgY29uc3RydWN0b3JfbmFtZSB3aGVuIGNvbXBhcmluZwoJZmllbGQgbmFtZSBhZ2FpbnN0IGVuY2xvc2luZyBjbGFzcy4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9hbm9uKTogTGlrZXdpc2UuCgoxOTk4LTExLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChwb3BsZXZlbCk6IFJlbW92ZSBjb2RlIHRvIGhhbmRsZSBLRUVQID09IDIuCgkoZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3QgY29uZnVzZSBCTE9DSy1vcmRlciB3aGVuCglwcm9jZXNzaW5nIGEgZGVzdHJ1Y3Rvci4KCjE5OTgtMTEtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlc19mb3JfcGFybXMpOiBDYWxsIGxheW91dF9kZWNsCglhZnRlciB3ZSd2ZSBjb21wbGV0ZWQgdGhlIHR5cGUuCgoxOTk4LTExLTIxICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAodmFsaWRhdGVfbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBBbGxvdyB1c2luZyB0ZW1wbGF0ZXMKCWZyb20gdGhlIGdsb2JhbCBuYW1lc3BhY2UuCgoxOTk4LTExLTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJSGFuZGxlIHNwZWNpZnlpbmcgdGVtcGxhdGUgYXJncyB0byBtZW1iZXIgZnVuY3Rpb24gdGVtcGxhdGVzLgoJKiB0cmVlLmMgKGJ1aWxkX292ZXJsb2FkKTogQWx3YXlzIGNyZWF0ZSBhbiBPVkVSTE9BRCBmb3IgYSB0ZW1wbGF0ZS4KCSogc2VhcmNoLmMgKGFkZF9jb252ZXJzaW9ucyk6IEhhbmRsZSBmaW5kaW5nIGFuIE9WRVJMT0FELgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogTGlrZXdpc2UuCgkqIGxleC5jIChpZGVudGlmaWVyX3R5cGUpOiBTZWUgdGhyb3VnaCBhIGJhc2VsaW5rLgoJKiBwYXJzZS55IChkb19pZCk6IERvbid0IGNhbGwgZG9faWRlbnRpZmllciBpZiB3ZSBnb3QgYSBiYXNlbGluay4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSwgY2FzZSBUUkVFX0xJU1QpOiBSZWN1cnNlLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFsbG93IGEgYm9vbGVhbiBjb25zdGFudCBmb3IgYXJyYXkKCWJvdW5kcywgb2RkIGFzIHRoYXQgc291bmRzLgoKCSogcHQuYyAodW5pZnkpOiBCZSBtb3JlIHN0cmljdCBhYm91dCBub24tdHlwZSBwYXJtcywgZXhjZXB0IGZvcgoJYXJyYXkgYm91bmRzLgoJKFVOSUZZX0FMTE9XX0lOVEVHRVIpOiBOZXcgbWFjcm8uCgoxOTk4LTExLTE5ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKG1hbmRpcik6IFJlcGxhY2UgYWxsIHVzZXMgb2YgJChtYW5kaXIpIGJ5ICQobWFuMWRpcikuCgoxOTk4LTExLTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IENhbGwKCW1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbiBiZWZvcmUgcHVzaF90ZW1wbGF0ZV9kZWNsLgoJRG9uJ3QgY2FsbCBwdXNoX3RlbXBsYXRlX2RlY2wgZm9yIGEgc3BlY2lhbGl6YXRpb24uCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBEbyByZXR1cm4gYSBtZW1iZXIgdGVtcGxhdGUgY2xhc3MuCgkqIGRlY2wyLmMgKGhhbmRsZV9jbGFzc19oZWFkKTogSGFuZGxlIG1lbWJlciB0ZW1wbGF0ZSBjbGFzc2VzLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEEgcGFybSB0eXBlIG5lZWQgbm90IGJlIGNvbXBsZXRlLgoKCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogRml4IHRoaW5rby4KCjE5OTgtMTEtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKFBUUk1FTV9DU1RfQ0xBU1MpOiBGaXggdHlwby4KCShnbG9iYWxfZGVsZXRlX2ZuZGVjbCk6IE5ldyB2YXJpYWJsZS4KCSogZGVjbC5jIChnbG9iYWxfZGVsZXRlX2ZuZGVjbCk6IERlZmluZSBpdC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBpdC4KCSogaW5pdC5jIChidWlsZF9idWlsdGluX2RlbGV0ZV9jYWxsKTogVXNlIGl0LgoJKiB0cmVlLmMgKG1hcGNhcik6IFJlY3Vyc2l2ZWx5IGNhbGwgbWFwY2FyIGZvciB0aGUgdHlwZSBvZiBFWFBSCglub2Rlcy4KCjE5OTgtMTEtMTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IEFsd2F5cyBjb21wbGFpbiBhYm91dCB1bnJlc29sdmVkCgl0eXBlLgoKCSogdHJlZS5jIChsdmFsdWVfcF8xKTogQW4gSU5ESVJFQ1RfUkVGIHRvIGEgZnVuY3Rpb24gaXMgYW4gbHZhbHVlLgoJKiBjYWxsLmMgKGJ1aWxkX29iamVjdF9jYWxsKTogQWxzbyBzdXBwb3J0IHJlZmVyZW5jZXMgdG8gZnVuY3Rpb25zLgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiBEb24ndCBkZWNheSBhIGZ1bmN0aW9uCglpZiB0aGUgdGFyZ2V0IGlzIGEgcmVmZXJlbmNlIHRvIGZ1bmN0aW9uLgoKCSogc2VhcmNoLmMgKGFkZF9jb252ZXJzaW9ucyk6IEdldCBhbGwgdGhlIG92ZXJsb2FkcyBmcm9tIGEgY2xhc3MuCgoJKiBkZWNsLmMgKGdyb2tfY3Rvcl9wcm9wZXJ0aWVzKTogQ29tcGxhaW4gYWJvdXQgYW55IGNvbnN0cnVjdG9yCgl0aGF0IHdpbGwgdGFrZSBhIHNpbmdsZSBhcmcgb2YgdGhlIGNsYXNzIHR5cGUgYnkgdmFsdWUuCgoJKiB0eXBlY2syLmMgKGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCk6IENhbid0IGNyZWF0ZSBvYmplY3RzIG9mCglhYnN0cmFjdCBjbGFzc2VzIHRoaXMgd2F5LgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IE1lbWJlciBmdW5jdGlvbnMgb2YgbG9jYWwgY2xhc3NlcyBhcmUgbm90CglwdWJsaWMuCgoxOTk4LTExLTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogTWFrZS1sYW5nLmluIChjYzFwbHVzKTogQWRkIGRlcGVuZGVuY3kgb24gaGFzaC5vLgoKMTk5OC0xMS0xOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGdldF9hYnN0cmFjdF92aXJ0dWFscyk6IENvbXBsYWluIGFib3V0IHZpcnR1YWxzIHdpdGgKCW5vIGZpbmFsIG92ZXJyaWRlci4KCSogdHlwZWNrMi5jIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IFJlbW92ZSBoYW5kbGluZyBmb3IgdmlydHVhbHMKCXdpdGggbm8gZmluYWwgb3ZlcnJpZGVyLgoJKiBjbGFzcy5jIChvdmVycmlkZV9vbmVfdnRhYmxlKTogRG9uJ3Qgc2V0IERFQ0xfQUJTVFJBQ1RfVklSVFVBTF9QCglvbiB2aXJ0dWFscyB3aXRoIG5vIGZpbmFsIG92ZXJyaWRlci4KCgkqIGxleC5jIChyZWluaXRfcGFyc2VfZm9yX2Jsb2NrKTogQWRkIGEgc3BhY2UgYWZ0ZXIgdGhlIGluaXRpYWwgJzonLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRG9uJ3QgcmVtb3ZlIHplcm8td2lkdGggYml0LWZpZWxkcyB1bnRpbAoJYWZ0ZXIgbGF5b3V0X3R5cGUuCgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogRG9uJ3Qgc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbC4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfYW5vbik6IENvbXBsYWluIGFib3V0IG5vbi1maWVsZHMuCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IExpa2V3aXNlLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IE5vcm1hbCBkYXRhIG1lbWJlcnMgY2FuJ3QgaGF2ZSB0aGUgc2FtZQoJbmFtZSBhcyB0aGUgY2xhc3MsIGVpdGhlci4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9hbm9uKTogTmVpdGhlciBjYW4gbWVtYmVycyBvZiBhbgoJYW5vbnltb3VzIHVuaW9uLgoKMTk5OC0xMS0xNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoVFlQRV9BTElBU19TRVQpOiBEb2N1bWVudCBsYW5ndWFnZS1kZXBlbmRlbnQgdXNlcy4KCShUWVBFX0JJTkZPKTogTGlrZXdpc2UuCgkoSVNfQUdHUl9UWVBFKTogVHdlYWsuCgkoU0VUX0lTX0FHR1JfVFlQRSk6IE5ldyBtYWNyby4KCShDTEFTU19UWVBFX1ApOiBUd2Vhay4KCShsYW5nX3R5cGUpOiBHcm91cCBtYXJrIGJpdGZpZWxkcyB0b2dldGhlci4gIFJlbW92ZSBsaW5lbnVtLgoJKENMQVNTVFlQRV9TT1VSQ0VfTElORSk6IFJlbW92ZSBtYWNyby4KCShDTEFTU1RZUEVfTUFSS0VEX04pOiBOZXcgbWFjcm8uCgkoU0VUX0NMQVNTVFlQRV9NQVJLRURfTik6IExpa2V3aXNlLgoJKENMRUFSX0NMQVNTVFlQRV9NQVJLRURfTik6IExpa2V3aXNlLgoJKENMQVNTX1RZUEVfTUFSS0VEXyopOiBVc2UgdGhlbS4KCShTRVRfQ0xBU1NUWVBFX01BUktFRF8qKTogTGlrZXdpc2UuCgkoQ0xFQVJfQ0xBU1NUWVBFX01BUktFRF8qKTogTGlrZXdpc2UuCgkoVEVNUExBVEVfVEVNUExBVEVfUEFSTV9URU1QTEFURV9JTkZPKTogTGlrZXdpc2UuCgkoVFlQRV9URU1QTEFURV9JTkZPKTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk1zIGFzIHdlbGwuCgkoVFlQRU5BTUVfVFlQRV9GVUxMTkFNRSk6IFVzZSBUWVBFX0JJTkZPIHJhdGhlciB0aGFuIENMQVNTVFlQRV9TSVpFLgoJKiBjbGFzcy5jIChjbGFzc19jYWNoZV9vYnN0YWNrKTogTmV3IHZhcmlhYmxlLgoJKGNsYXNzX2NhY2hlX2ZpcnN0b2JqKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdCk6IERvbid0IHNldCBDTEFTU1RZUEVfU09VUkNFX0xJTkUuCgkocHVzaGNsYXNzKTogRnJlZSB0aGUgY2FjaGUsIHdoZW4gYXBwcm9wcmlhdGUuCgkocG9wY2xhc3MpOiBUaWR5LgoJKG1heWJlX3B1c2hfY2FjaGVfb2JzdGFjayk6IFVzZSBjbGFzc19jYWNoZV9vYnN0YWNrLgoJKiBkZWNsLmMgKGluY2x1ZGUgaGFzaC5oKS4KCSh0eXBlbmFtZV9oYXNoKTogTmV3IGZ1bmN0aW9uLgoJKHR5cGVuYW1lX2NvbXBhcmUpOiBMaWtld2lzZS4KCShidWlsZF90eXBlbmFtZV90eXBlKTogQ2hlY2sgdGhlIGhhc2ggdGFibGUgdG8gYXZvaWQgY3JlYXRpbmcKCWR1cGxpY2F0ZXMuCgkoYnVpbGRfcHRybWVtZnVuY190eXBlKTogVXNlIFNFVF9JU19BR0dSX1RZUEUuCgkoZ3Jva2RlY2xhcmF0b3IpOiBVc2UgQ0xBU1NfVFlQRV9QLgoJKHhyZWZfYmFzZXR5cGVzKTogTGlrZXdpc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4gIERvbid0IHB1dCBjdXJyZW50X2NsYXNzX3JlZiBvbiB0aGUKCXBlcm1hbmVudCBvYnN0YWNrLgoJKiBlcnJvci5jIChkdW1wX3R5cGVfcmVhbCk6IFVzZSBURU1QTEFURV9URU1QTEFURV9QQVJNX1RFTVBMQVRFX0lORk8KCWFuZCBUWVBFX1RJX0FSR1MuCgkqIGxleC5jIChub3RlX2dvdF9zZW1pY29sb24pOiBVc2UgQ0xBU1NfVFlQRV9QLgoJKG1ha2VfbGFuZ190eXBlKTogRG9uJ3QgY3JlYXRlIFRZUEVfTEFOR19TUEVDSUZJQyBhbmQgYXNzb2NpYXRlZAoJZmllbGRzIGZvciB0eXBlcyBvdGhlciB0aGFuIGNsYXNzIHR5cGVzLiAgRG8gY2xlYXIgVFlQRV9BTElBU19TRVQKCWZvciB0eXBlcyBvdGhlciB0aGFuIGNsYXNzIHR5cGVzLCB0aG91Z2guCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogVXNlIENMQVNTX1RZUEVfUCBhbmQKCVRFTVBMQVRFX1RFTVBMQVRFX1BBUk1fVEVNUExBVEVfSU5GTy4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogRG9uJ3Qgc2V0CglDTEFTU1RZUEVfR09UX1NFTUlDT0xPTi4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBVc2UgVEVNUExBVEVfVEVNUExBVEVfUEFSTV9URU1QTEFURV9JTkZPLgoJQ29lcmNlIGFyZ3VtZW50cyBvbiB0aGUgbW9tZW50YXJ5IG9ic3RhY2suCgkoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IFVzZSBURU1QTEFURV9URU1QTEFURV9QQVJNX1RFTVBMQVRFX0lORk8uCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDYWxjdWxhdGUgdGVtcGxhdGUgYXJndW1lbnRzIG9uIHRoZQoJbW9tZW50YXJ5IG9ic3RhY2suICBUaWR5LgoJKHRzdWJzdF90ZW1wbGF0ZV9hcmdfdmVjdG9yKTogVXNlIG1ha2VfdGVtcF92ZWMuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IFB1dCB0ZW1wbGF0ZSBhcmd1bWVudHMgb24gdGhlIG1vbWVudGFyeQoJb2JzdGFjay4KCSh0c3Vic3RfZGVjbCk6IExpa2V3aXNlLgoJKHRzdWJzdCk6IENvcHkgdGhlIGFycmF5IGJvdW5kcyBpbmRleCB0byB0aGUgcGVybWFuZW50IG9ic3RhY2sKCWJlZm9yZSBidWlsZGluZyBpbmRleCB0eXBlcy4gIFVzZSBuZXcgbWFjcm9zLgoJKHVuaWZ5KTogVXNlIG5ldyBtYWNyb3MuCgkoZG9fdHlwZV9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChsb29rdXBfZm5maWVsZHNfMSk6IFVzZSBuZXcgbWFjcm9zLgoJKGRmc19wdXNoZGVjbHMpOiBCdWlsZCBlbnZlbG9wZXMgb24gdGhlIGNhY2hlIG9ic3RhY2suCgkoZGZzX2NvbXByZXNzX2RlY2xzKTogVXNlIG5ldyBtYWNyb3MuCgkocHVzaF9jbGFzc19kZWNscyk6IEJ1aWxkIG9uIHRoZSBjYWNoZSBvYnN0YWNrLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3R5cGVvZik6IERvbid0IHNldCBDTEFTU1RZUEVfR09UX1NFTUlDT0xPTi4KCSogc2lnbi5jIChidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9vcl9yZWZlcmVuY2VfdHlwZSk6IFVzZQoJU0VUX0lTX0FHR1JfVFlQRS4KCSogdHJlZS5jIChtYWtlX2JpbmZvKTogQ2hlY2sgQ0xBU1NfVFlQRV9QLgoJKGNvcHlfdGVtcGxhdGVfdGVtcGxhdGVfcGFybSk6IEFkanVzdC4KCShtYWtlX3RlbXBfdmVjKTogVXNlIHB1c2hfZXhwcmVzc2lvbl9vYnN0YWNrLgoJKiB0eXBlY2suYyAoY29tcGxldGVfdHlwZSk6IFVzZSBuZXcgbWFjcm9zLgoJKGNvbXB0eXBlcyk6IExpa2V3aXNlLgoKMTk5OC0xMS0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0KTogQWRkIGRpYWdub3N0aWNzIGZvciBpbnZhbGlkIGFycmF5LCByZWZlcmVuY2UKCWFuZCBwb2ludGVyIHRvIG1lbWJlciB0eXBlcy4KCjE5OTgtMTEtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAobXlfZnJpZW5kbHlfYWJvcnQpOiBEb24ndCBmYXRhbCB0d2ljZSBpbiBhIHJvdy4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9zdGFydF9jYXNlKTogVXNlIGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uLgoJU2ltcGxpZnkuCgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IEZpeCBjdXQtYW5kLXBhc3RlIGVycm9yLgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBDb21wbGFpbiBhYm91dCBub24taW50ZWdyYWwgc2l6ZS4KCgkqIHBhcnNlLnkgKHVuYXJ5X2V4cHIpOiBDb21wbGFpbiBhYm91dCBkZWZpbmluZyB0eXBlcyBpbiBzaXplb2YuCgoJKiB0eXBlY2suYyAoZXhwcl9zaXplb2YpOiBDb21wbGFpbiBhYm91dCBzaXplb2YgYW4gb3ZlcmxvYWRlZCBmbi4KCgkqIHJ0dGkuYyAoYnVpbGRfeF90eXBlaWQpOiBDb21wbGFpbiBhYm91dCB0eXBlaWQgd2l0aG91dAoJaW5jbHVkaW5nIDx0eXBlaW5mbz4uCgkoZ2V0X3R5cGVpZCk6IExpa2V3aXNlLiAgQ29tcGxhaW4gYWJvdXQgdHlwZWlkIG9mIGluY29tcGxldGUgdHlwZS4KCShnZXRfdGluZm9fZm5fZHluYW1pYyk6IExpa2V3aXNlLgoJKGdldF90eXBlaWRfMSk6IE5vdCBzdGF0aWMgYW55bW9yZS4KCSogZXhjZXB0LmMgKGJ1aWxkX2VoX3R5cGVfdHlwZSk6IFVzZSBnZXRfdHlwZWlkXzEuCgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogR2l2ZSBlcnJvcnMgZm9yIGR5bmFtaWNfY2FzdCB0bwoJYW1iaWd1b3VzIG9yIHByaXZhdGUgYmFzZXMuICBGaXggd2FybmluZyBmb3IgcmVmZXJlbmNlIGNhc3QuCgoxOTk4LTExLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX1RFTVBMQVRFX0lOU1RBTlRJQVRFRCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBSZW1vdmUgc3BlY2lhbC1jYXNlIGNvZGUgdG8gZGVhbCB3aXRoCgl0ZW1wbGF0ZSBmcmllbmRzLCBhbmQganVzdCBkbyB0aGUgb2J2aW91cyB0aGluZy4KCSogcHQuYyAocmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24pOiBUd2VhayBmb3IgY2xhcml0eSwgYW5kIGFsc28gdG8KCWNsZWFyIERFQ0xfSU5JVElBTCBmb3IgYW4gaW5zdGFudGlhdGlvbiBiZWZvcmUgaXQgaXMgbWVyZ2VkIHdpdGggYQoJc3BlY2lhbGl6YXRpb24uCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBGaXggaW5kZW50YXRpb24uCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IEhhbmRsZSBib3RoIGRlZmluaXRpb25zIGluIGZyaWVuZAoJZGVjbGFyYXRpb24gYW5kIG91dHNpZGUgZnJpZW5kIGRlY2xhcmF0aW9ucy4KCSh0c3Vic3RfZGVjbCk6IERvbid0IGNsZWFyIERFQ0xfSU5JVElBTCBmb3IgYW4gaW5zdGFudGlhdGlvbi4KCShyZWdlbmVyYXRlX2RlY2xfZnJvbV90ZW1wbGF0ZSk6IFR3ZWFrIGFjY29yZGluZ2x5LgoJKGluc3RhbnRpYXRlX2RlY2wpOiBMaWtld2lzZS4KCjE5OTgtMTEtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IFByb21vdGUgd2FybmluZyBhYm91dCBuYWtlZAoJbWVtYmVyIGZ1bmN0aW9uIHJlZmVyZW5jZSB0byBlcnJvci4KCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogQ29tcGxhaW4gYWJvdXQgY29udmVydGluZyBhbiBvdmVybG9hZGVkCglmdW5jdGlvbiB0byB2b2lkLgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogSnVzdCByZXR1cm4gYSBsb25lIHN0YXRpYyBtZW1iZXIKCWZ1bmN0aW9uLgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IE9ubHkgY29tcGxhaW4gYWJvdXQgcmVhbCBDT05TVFJVQ1RPUnMsCglub3QgaW50ZXJuYWwgb25lcy4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogSW1wcm92ZSBlcnJvciBoYW5kbGluZy4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IENvbXBsYWluIGFib3V0IG1ha2luZyAnbWFpbicgYSB0ZW1wbGF0ZS4KCgkqIHR5cGVjay5jIChzdHJpbmdfY29udl9wKTogRG9uJ3QgY29udmVydCBmcm9tIHdjaGFyX3RbXSB0byBjaGFyKi4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBIYW5kbGUgYSBCSVRfTk9UX0VYUFIgYXJvdW5kIGEKCVRZUEVfREVDTCBpbiBhIHRlbXBsYXRlLgoKMTk5OC0xMS0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChteV9mcmllbmRseV9hYm9ydCk6IEFkZCBVUkwgaW4gdGhlIG90aGVyIGNhc2UsIHRvby4KCgkqIGRlY2wuYyAoc3RydWN0IGNwX2Z1bmN0aW9uKTogQWRkIG5hbWVkX2xhYmVsX3VzZXMuCgkocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogU2F2ZSBpdC4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IFJlc3RvcmUgaXQuCgkoZGVmaW5lX2xhYmVsKTogQWxzbyBjb21wbGFpbiBhYm91dCBqdW1waW5nIGludG8gdGhlIHNjb3BlIG9mCglub24tUE9EIG9iamVjdHMgdGhhdCBkb24ndCBoYXZlIGNvbnN0cnVjdG9ycy4KCSogdHJlZS5jIChwb2RfdHlwZV9wKTogTmV3IGZuLgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBDbGVhciBUWVBFX0JFSU5HX0RFRklORUQgc29vbmVyLgoJKiBydHRpLmMgKHN5bnRoZXNpemVfdGluZm9fZm4pOiBDYWxsIGltcG9ydF9leHBvcnRfZGVjbCBoZXJlLgoJKGdldF90aW5mb19mbik6IE5vdCBoZXJlLgoJKiByZXBvLmMgKHJlcG9fZ2V0X2lkKTogQWJvcnQgaWYgd2UgZ2V0IGNhbGxlZCBmb3IgYW4gaW5jb21wbGV0ZQoJdHlwZS4KCjE5OTgtMTEtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogTWFrZSBzdXJlIGZpcnN0IGFyZ3VtZW50IHRvCglfX2NwX3B1c2hfZXhjZXB0aW9uIGlzIG9mIHR5cGUgYHZvaWQqJyB0byBhdm9pZCBzcHVyaW91cyBlcnJvcgoJbWVzc2FnZXMuCgoxOTk4LTExLTExICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0cnlfb25lX292ZXJsb2FkKTogVGFrZSBvcmlnX3RhcmdzIGFnYWluLiAgT25seSBjaGVjayBmb3IKCW1pc21hdGNoZXMgYWdhaW5zdCB0aGVtOyB3ZSBkb24ndCBjYXJlIHdoYXQgYSBwcmV2aW91cyBjYWxsIGZvdW5kLgoJKHJlc29sdmVfb3ZlcmxvYWRlZF91bmlmaWNhdGlvbik6IEFkanVzdC4KCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBEb24ndCByZXR1cm4gYW55dGhpbmcgZm9yIGEgbm9uLXR5cGUKCWZpZWxkIGZyb20gYSBkZXBlbmRlbnQgdHlwZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJlc29sdmUgU0NPUEVfUkVGcyBvZiB0aGUgY3VycmVudCBjbGFzcwoJaW4gYW4gYXJyYXkgZGVjbGFyYXRvci4KCShzdGFydF9kZWNsKTogUHVzaCBpbnRvIHRoZSBjbGFzcyBiZWZvcmUgbG9va2luZyBmb3IgdGhlIGZpZWxkLgoKMTk5OC0xMS0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IEhhbmRsZSBSRUZFUkVOQ0VfVFlQRS4KCjE5OTgtMTEtMDggIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWxsb3cgbmFtZXNwYWNlLXNjb3BlZCBtZW1iZXJzIGlmIHRoZXkKCWFyZSBmcmllbmRzLgoKMTk5OC0xMS0wOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBEb24ndCBtZXNzIHdpdGggdGhlIGdsb2JhbCB2YWx1ZSBvZiBhbgoJdW4tbWFuZ2xlZCBERUNMX0FTU0VNQkxFUl9OQU1FLgoKMTk5OC0xMS0wMyAgQ2hyaXN0b3BoZXIgRmF5bG9yICA8Y2dmQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVtb3ZlIENZR1dJTiBjb25kaXRpb25hbAoJc2luY2UgQ1lHV0lOIGlzIG5vdyBhYmxlIHRvIGRlYWwgd2l0aCB0cmFwcGluZyBzaWduYWxzLgoKU2F0IE5vdiAgNyAxNTo0ODowMiAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC10cmVlLmg6IERvbid0IGluY2x1ZGUgZ2Fuc2lkZWNsLmguCgkqIGV4Y2VwdGlvbi5jYzogSW5jbHVkZSBnYW5zaWRlY2wuaCAoc2luY2Ugd2UgZG9uJ3QgaW5jbHVkZSBjb25maWcuaCkKCSogZysrc3BlYy5jOiBEb24ndCBpbmNsdWRlIGdhbnNpZGVjbC5oLgoKMTk5OC0xMS0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ19kZWNsX2ZsYWdzKTogQWRkIGRlZmluZWRfaW5fY2xhc3MuICBEZWNyZWFzZQoJc2l6ZSBvZiBkdW1teS4KCShERUNMX0RFRklORURfSU5fQ0xBU1NfUCk6IE5ldyBtYWNyby4KCShURU1QTEFURV9QQVJNU19GT1JfSU5MSU5FKTogRG9jdW1lbnQuCgkoY2hlY2tfc3RhdGljX3ZhcmlhYmxlX2RlZmluaXRpb24pOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBTZXQgREVDTF9ERUZJTkVEX0lOX0NMQVNTX1AsIGlmCglhcHByb3ByaWF0ZS4KCShjaGVja19zdGF0aWNfdmFyaWFibGVfZGVmaW5pdGlvbik6IFNwbGl0IG91dCBmcm9tIC4uLgoJKGdyb2tkZWNsYXJhdG9yKTogSGVyZS4KCSogcHQuYyAoY2hlY2tfZGVmYXVsdF90bXBsX2FyZ3MpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIC4uLgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogSGVyZS4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IEZpeCBjb21tZW50LgoKMTk5OC0xMS0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoQ1BfVFlQRV9DT05TVF9QKTogTWFrZSB7MCwxfS12YWx1ZWQuCgkoQ1BfVFlQRV9WT0xBVElMRV9QKTogTGlrZXdpc2UuCgkoQ1BfVFlQRV9SRVNUUklDVF9QKTogTGlrZXdpc2UuCgoxOTk4LTExLTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAodHN1YnN0KTogVXNlIGJ1aWxkX2luZGV4X3R5cGUsIG5vdCBidWlsZF9pbmRleF8yX3R5cGUuCgoxOTk4LTExLTAyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogQmUgbW9yZSBoZWxwZnVsLgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogQ2FsbCBpbXBvcnRfZXhwb3J0X2NsYXNzLgoKCSogY3AtdHJlZS5oIChFTVBUWV9DT05TVFJVQ1RPUl9QKTogQ2hlY2sgIVRSRUVfSEFTX0NPTlNUUlVDVE9SLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IFByb3BhZ2F0ZSBUUkVFX0hBU19DT05TVFJVQ1RPUi4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCjE5OTgtMTEtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF92ZWNfaW5pdCk6IEZpeCBvZmYtYnktb25lIGVycm9yLgoKMTk5OC0xMS0wMiAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBwYXJzZS55IChhcHBhcmVudF90ZW1wbGF0ZV90eXBlKTogTmV3IHR5cGUuCgkobmFtZWRfY29tcGxleF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGUpOiBVc2UgaXQuCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBPbmUgbmV3IGNvbmZsaWN0LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCjE5OTgtMTEtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKENPTVBBUkVfU1RSSUNUKTogTmV3IG1hY3JvLgoJKENPTVBBUkVfQkFTRSk6IExpa2V3aXNlLgoJKENPTVBBUkVfUkVMQVhFRCk6IExpa2V3aXNlLgoJKENPTVBBUkVfUkVERUNMQVJBVElPTik6IExpa2V3aXNlLgoJKHNhbWVfdHlwZV9wKTogTGlrZXdpc2UuCgkoc2FtZV9vcl9iYXNlX3R5cGVfcCk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBVc2UgdGhlbSwgaW4gcGxhY2Ugb2YgY29tcHR5cGVzCgl3aXRoIG51bWVyaWMgYXJndW1lbnRzLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogTGlrZXdpc2UuCgkoY29udmVydF9saWtlKTogTGlrZXdpc2UuCgkoYnVpbGRfb3Zlcl9jYWxsKTogTGlrZXdpc2UuCgkoaXNfc3Vic2VxKTogTGlrZXdpc2UuCgkoaXNfcHJvcGVybHlfZGVyaXZlZF9mcm9tKTogTGlrZXdpc2UuCgkoY29tcGFyZV9pY3MpOiBMaWtld2lzZS4KCShqb3VzdCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChkZWxldGVfZHVwbGljYXRlX2ZpZWxkc18xKTogTGlrZXdpc2UuCgkocmVzb2x2ZXNfdG9fZml4ZWRfdHlwZV9wKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfdHlwZSk6IExpa2V3aXNlLiAgUmVtb3ZlICNpZiAwJ2QgY29kZS4KCSogZGVjbC5jIChkZWNsc19tYXRjaCk6IExpa2V3aXNlLiAgVXNlIENPTVBBUkVfUkVERUNMQVJBVElPTiBoZXJlLgoJKHB1c2hkZWNsKTogTGlrZXdpc2UuCgkobG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuICBDaGVjayBmb3IgaWxsZWdhbCBhcnJheSBkZWNsYXJhdGlvbnMuCgkoZ3Jva3Bhcm1zKTogTGlrZXdpc2UuCgkoZ3Jva19vcF9wcm9wZXJ0aWVzKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBMaWtld2lzZS4KCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IExpa2V3aXNlLgoJKG1ha2VfZnJpZW5kX2NsYXNzKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF92ZWNfaW5pdCk6IExpa2V3aXNlLgoJKiBwdC5jIChpc19tZW1iZXJfdGVtcGxhdGVfY2xhc3MpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoaXNfc3BlY2lhbGl6YXRpb25fb2YpOiBVc2UgQ09NUEFSRV8qIGFuZCBuZXcgbWFjcm9zLgoJKGNvbXBfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KCShjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBMaWtld2lzZS4KCShjb2VyY2VfdGVtcGxhdGVfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KCSh0ZW1wbGF0ZV9hcmdzX2VxdWFsKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogTGlrZXdpc2UuCgkodW5pZnkpOiBMaWtld2lzZS4KCShnZXRfYmluZGluZ3NfcmVhbCk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoY292YXJpYW50X3JldHVybl9wKTogTGlrZXdpc2UuCgkoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBMaWtld2lzZS4KCSogc2lnLmMgKG1hdGNoX21ldGhvZF90eXBlcyk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHZlY19iaW5mb19tZW1iZXIpOiBMaWtld2lzZS4KCShjcF90cmVlX2VxdWFsKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb21tb25fdHlwZSk6IExpa2V3aXNlLgoJKGNvbXBfYXJyYXlfdHlwZXMpOiBMaWtld2lzZS4gIEdldCBpc3N1ZXMgaW52b2x2aW5nIHVua25vd24gYXJyYXkKCWJvdW5kcyByaWdodC4KCShjb21wdHlwZXMpOiBVcGRhdGUgY29tbWVudHMuICBVc2UgbmV3IGZsYWdzLgoJKGNvbXBfdGFyZ2V0X3R5cGVzKTogVXNlIG5ldyBtYWNyb3MuCgkoY29tcHBhcm1zKTogTGlrZXdpc2UuCgkoY29tcF90YXJnZXRfcGFybXMpOiBMaWtld2lzZS4KCShzdHJpbmdfY29udl9wKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2luZGlyZWN0X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBMaWtld2lzZS4KCShidWlsZF9zdGF0aWNfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9jb25zdF9jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgkoY29tcF9wdHJfdHR5cGVzX3JlYWwpOiBMaWtld2lzZS4KCShwdHJfcmVhc29uYWJseV9zaW1pbGFyKTogTGlrZXdpc2UuCgkoY29tcF9wdHJfdHR5cGVzX2NvbnN0KTogTGlrZXdpc2UuCgoxOTk4LTEwLTMxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogRml4IGN1dC1hbmQtcGFzdGUgZXJyb3IuCgoxOTk4LTEwLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbDIuYyAoZGVsZXRlX3Nhbml0eSk6IFBhc3MgaW50ZWdlcl96ZXJvX25vZGUsIG5vdAoJaW50ZWdlcl90d29fbm9kZSwgdG8gYnVpbGRfdmVjX2RlbGV0ZS4KCSogaW5pdC5jIChidWlsZF9hcnJheV9laF9jbGVhbnVwKTogUmVtb3ZlLgoJKGV4cGFuZF92ZWNfaW5pdF90cnlfYmxvY2spOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX3ZlY19pbml0X2NhdGNoX2NsYXVzZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZlY19kZWxldGVfMSk6IERvbid0IGRlYWwgd2l0aCBjYXNlIHRoYXQgYXV0b19kZWxldGVfdmVjCgltaWdodCBiZSBpbnRlZ2VyX3R3b19ub2RlIGFueW1vcmUuCgkoZXhwYW5kX3ZlY19pbml0KTogUmV3b3JrIGZvciBpbml0aWFsaXphdGlvbi1jb3JyZWN0bmVzcyBhbmQKCWV4Y2VwdGlvbi1jb3JyZWN0bmVzcy4KCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBNYWtlIG11dHVhbCBleGNsdXNpdml0eQoJb2YgY2FzZXMgbW9yZSBvYnZpb3VzLgoKMTk5OC0xMC0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogT0ssIG9ubHkgd2FybiBpZiBub3QgbGV4aW5nLgoJU2ltcGxpZnkgc3VnZ2VzdGVkIGZpeC4KCgkqIGNwLXRyZWUuaCAoSURFTlRJRklFUl9NQVJLRUQpOiBOZXcgbWFjcm8uCgkqIHNlYXJjaC5jIChsb29rdXBfY29udmVyc2lvbnMpOiBVc2UgYnJlYWR0aF9maXJzdF9zZWFyY2guCgkoYWRkX2NvbnZlcnNpb25zKTogQXZvaWQgYWRkaW5nIHR3byBjb252ZXJzaW9ucyB0byB0aGUgc2FtZSB0eXBlLgoJKGJyZWFkdGhfZmlyc3Rfc2VhcmNoKTogV29yayB3aXRoIGJhc2UgYmluZm9zLCByYXRoZXIKCXRoYW4gYmluZm9zIGFuZCBiYXNlIGluZGljZXMuCgkoZ2V0X3ZpcnR1YWxfZGVzdHJ1Y3Rvcik6IEFkanVzdC4KCSh0cmVlX2hhc19hbnlfZGVzdHJ1Y3Rvcl9wKTogQWRqdXN0LgoJKGdldF9tYXRjaGluZ192aXJ0dWFsKTogQWRqdXN0LgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBHZW5lcmFsaXplIGNoZWNrIGZvciBpbmNvcnJlY3QKCW51bWJlciBvZiB0ZW1wbGF0ZSBwYXJtcy4KCShpc19tZW1iZXJfdGVtcGxhdGVfY2xhc3MpOiAjaWYgMC4KCjE5OTgtMTAtMjkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoY2MxcGx1cyk6IFB1dCBDWFhfT0JKUywgYW5kIHRoZW5jZSBAZXh0cmFfY3h4X29ianNALAoJbGFzdC4KCjE5OTgtMTAtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQHJhYmkucGh5cy5jb2x1bWJpYS5lZHU+CgoJKiBsZXguYzogQ2FsbCBjaGVja19uZXdsaW5lIGZyb20gbGFuZ19pbml0IGFsd2F5cy4gIEFmdGVyCgljYWxsaW5nIGNwcF9zdGFydF9yZWFkLCBzZXQgeXlfY3VyIGFuZCB5eV9saW0gdG8gcmVhZCBmcm9tIHRoZQoJY3BwbGliIHRva2VuIGJ1ZmZlci4KCjE5OTgtMTAtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBEb24ndCBjb25zaWRlciB0ZW1wbGF0ZXMgZm9yIGEgbm9ybWFsCgltYXRjaC4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IERvbid0IGNvbXBsYWluIGFib3V0IG5vbi1jb3B5Cglhc3NpZ25tZW50IG9wcyBpbiB1bmlvbiBtZW1iZXJzLgoKCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlKTogRG9uJ3QgcGFzcyBhdF9lb2YgdG8gaW1wb3J0X2V4cG9ydF92dGFibGUuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBEb24ndCBjYWxsIGltcG9ydF9leHBvcnRfY2xhc3MuCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IERvIGltcG9ydC9leHBvcnQgc3R1ZmYuCgkoZmluaXNoX3ByZXZ0YWJsZV92YXJkZWNsKTogTG9zZS4KCShmaW5pc2hfZmlsZSk6IERvbid0IGNhbGwgaXQuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaDogUmVtb3ZlIGl0LgoKCSogaW5pdC5jIChidWlsZF9kZWxldGUpOiBSZXNldCBUWVBFX0hBU19ERVNUUlVDVE9SIGhlcmUuCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogTm90IGhlcmUuCgkoc3RhcnRfZnVuY3Rpb24pOiBEbyBzZXQgREVDTF9JTklUSUFMLgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBDb21wbGFpbiBhYm91dCBkZWZhdWx0IHRlbXBsYXRlCglhcmdzIGZvciBlbmNsb3NpbmcgY2xhc3Nlcy4KCgkqIGNhbGwuYyAoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IFRyZWF0IGNvbnZlcnNpb24gZnVuY3Rpb25zCglhcyBjb21pbmcgZnJvbSB0aGUgYXJndW1lbnQncyBjbGFzcy4KCSogY3AtdHJlZS5oIChERUNMX0NPTlZfRk5fUCk6IE5ldyBmbi4KCShERUNMX0RFU1RSVUNUT1JfUCk6IEFsc28gY2hlY2sgREVDTF9MQU5HVUFHRS4KCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IFVzZSBERUNMX0NPTlZfRk5fUC4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX25hbWUpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBMaWtld2lzZS4KCSogcHQuYyAoZm5fdHlwZV91bmlmaWNhdGlvbik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoYWRkX2NvbnZlcnNpb25zKTogTGlrZXdpc2UuCgoxOTk4LTEwLTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IEFsc28gZ2VuZXJhdGUgTE9PS1VQX0VYUFIgZm9yIFJFU1VMVF9ERUNMLgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogQWxzbyBjaGVjayBmb3IgdXNpbmcgUkVTVUxUX0RFQ0wKCWZyb20gb3V0ZXIgY29udGV4dC4KCjE5OTgtMTAtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIHR5cGVfcXVhbHMsIHJhdGhlciB0aGFuIGNvbnN0cCwKCWNvbnNpc3RlbnRseS4KCjE5OTgtMTAtMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IGluc3RhbnRpYXRlX3R5cGUgaGVyZS4KCShyZWZlcmVuY2VfYmluZGluZyk6IEFuZCBoZXJlLgoJKGltcGxpY2l0X2NvbnZlcnNpb24pOiBOb3QgaGVyZS4KCShidWlsZF9vcF9kZWxldGVfY2FsbCk6IE5vIG5lZWQgdG8gY29ucyB1cCBhbiBPVkVSTE9BRC4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IGluc3RhbnRpYXRlX3R5cGUgaGVyZS4KCShjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IEFuZCBoZXJlLgoJKiBkZWNsLmMgKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBOb3QgaGVyZS4KCShncm9rcGFybXMpOiBPciBoZXJlLgoJKiB0eXBlY2syLmMgKGRpZ2VzdF9pbml0KTogT3IgaGVyZS4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBUYWtlIHRoZSBhZGRyZXNzIG9mIG92ZXJsb2FkZWQKCWZ1bmN0aW9ucywgdG9vLgoJKHJlcXVpcmVfaW5zdGFudGlhdGVkX3R5cGUpOiBMb3NlLgoJKGNvbnZlcnRfYXJndW1lbnRzKTogRG9uJ3QgaGFuZGxlIHVua25vd24gdHlwZXMgaGVyZS4KCShidWlsZF9jX2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9iaW5hcnlfb3ApOiBHdXQuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IERvbid0IHJlcXVpcmVfaW5zdGFudGlhdGVkX3R5cGUuCgkoYnVpbGRfbW9kaWZ5X2V4cHIpOiBMaWtld2lzZS4KCShidWlsZF9zdGF0aWNfY2FzdCk6IERvbid0IGluc3RhbnRpYXRlX3R5cGUuCgkoYnVpbGRfcmVpbnRlcnByZXRfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbnN0X2Nhc3QpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoJKGJ1aWxkX3B0cm1lbWZ1bmMpOiBVc2UgdHlwZV91bmtub3duX3AuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEFsc28gZG8gZGVmYXVsdF9jb252ZXJzaW9uIG9uIG92ZXJsb2FkZWQKCWZ1bmN0aW9ucy4gIEhhbmQgdGhlbSBvZmYgdG8gb2NwX2NvbnZlcnQuCgoxOTk4LTEwLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogRGVhbCB3aXRoIFRFTVBMQVRFX0RFQ0xzIHRoYXQgYXJlCglWQVJfREVDTHMuICBIYW5kbGUgdnRhYmxlcyB3aG9zZSBERUNMX0NPTlRFWFQgaXMgbm90IGEgdHlwZS4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBidWlsZF9jcGx1c19hcnJheV90eXBlIHRvIGJ1aWxkCglhcnJheSB0eXBlcy4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoZXhwYW5kX2VuZF9laF9zcGVjKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IFNpbXBsaWZ5IHZlcnkgc2xpZ2h0bHkuCgoxOTk4LTEwLTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ29tcGxhaW4gYWJvdXQgYSB2YXJpYWJsZSB1c2luZwoJY29uc3RydWN0b3Igc3ludGF4IGNvbWluZyBiYWNrIG51bGwgZnJvbSBzdGFydF9kZWNsLgoKCSogZnJpZW5kLmMgKG1ha2VfZnJpZW5kX2NsYXNzKTogQ29tcGxhaW4gYWJvdXQgdHJ5aW5nIHRvIG1ha2UKCWEgbm9uLWNsYXNzIHR5cGUgYSBmcmllbmQuCgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBTZXQgREVDTF9JTklUSUFMIGZvciBhIGRlZm4gaGVyZS4KCShzdGFydF9mdW5jdGlvbik6IE5vdCBoZXJlLgoKMTk5OC0xMC0yNiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEaXNhbGxvdyBgZXhwbGljaXQnIGluIGEgZnJpZW5kIGRlY2xhcmF0aW9uLgoKMTk5OC0xMC0yNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBPbmx5IHNraXAgYW5vbnltb3VzIGZpZWxkcwoJaWYgdGhleSBhcmUgYml0ZmllbGRzLgoKCSogY3AtdHJlZS5kZWYgKFRZUEVPRl9UWVBFKTogTmV3IGNvZGUuCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9yZWFsKTogSGFuZGxlIGl0LgoJKiBwdC5jICh0c3Vic3QpOiBMaWtld2lzZS4KCSogdHJlZS5jIChzZWFyY2hfdHJlZSk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3R5cGVvZik6IE5ldyBmbi4KCSogcGFyc2UueSAodHlwZXNwZWMpOiBVc2UgaXQuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCjE5OTgtMTAtMjYgIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGNwLXRyZWUuaCAoRk9STUFUX1ZCQVNFX05BTUUpOiBNYWtlIGRlZmluaXRpb24gdW5jb25kaXRpb25hbC4KCjE5OTgtMTAtMjYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IERvbid0IGhhbmRsZSBwbWYgcmVmZXJlbmNlcwoJc3BlY2lhbGx5LgoKCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IERvbid0IHRyeSB0byBjb252ZXJ0IHRvIHRoZSBiYXNlIHR5cGUKCWlmIGl0J3MgYW1iaWd1b3VzIG9yIHBlZGFudGljLgoKCSogdHlwZWNrMi5jIChjaGVja19mb3JfbmV3X3R5cGUpOiBPbmx5IGRlcGVuZCBvbiBwZWRhbnRpYyBmb3IKCUMtc3R5bGUgY2FzdHMuCgoxOTk4LTEwLTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFNldCBERUNMX05PTkNPTlZFUlRJTkdfUCBmb3IgYWxsCglub24tY29udmVydGluZyBjb25zdHJ1Y3RvcnMuCgoxOTk4LTEwLTI0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZ3h4aW50LnRleGk6IENvcnJlY3QgZG9jdW1lbnRhdGlvbiBmb3IgbiwgTiwgUSwgYW5kIEIuCgoxOTk4LTEwLTIzICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogcGFyc2UueSAoY29uZGl0aW9uKTogQ29udmVydCBWQVJfREVDTCBmcm9tIHJlZmVyZW5jZSB0byBpbmRpcmVjdAoJcmVmZXJlbmNlLgoKMTk5OC0xMC0yMyAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjIChfX2NwX3BvcF9leGNlcHRpb24pOiBGcmVlIHRoZSBvcmlnaW5hbCBleGNlcHRpb24KCXZhbHVlLCBub3QgdGhlIHBvdGVudGlhbGx5IGNvZXJjZWQgb25lLgoKMTk5OC0xMC0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIE1ha2VmaWxlLmluIChoYXNoLmgpOiBSdW4gZ3BlcmYgd2hlbiBuZWNlc3NhcnkuCgoJKiBjcC10cmVlLmggKENQX1RZUEVfUkVBRE9OTFkpOiBSZW1vdmUuCgkoQ1BfVFlQRV9WT0xBVElMRSk6IExpa2V3aXNlLgoJKENQX1RZUEVfUVVBTFMpOiBOZXcgbWFjcm8uCgkoQ1BfVFlQRV9DT05TVF9QKTogTGlrZXdpc2UuCgkoQ1BfVFlQRV9WT0xBVElMRV9QKTogTGlrZXdpc2UuCgkoQ1BfVFlQRV9SRVNUUklDVF9QKTogTGlrZXdpc2UuCgkoQ1BfVFlQRV9DT05TVF9OT05fVk9MQVRJTEVfUCk6IExpa2V3aXNlLgoJKGNwX2J1aWxkX3R5cGVfdmFyaWFudCk6IFJlbmFtZSB0byAuLi4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShjX2FwcGx5X3R5cGVfcXVhbHNfdG9fZGVjbCk6IERlY2xhcmUuCgkoU0lHTkFUVVJFX1BPSU5URVJfTkFNRV9GT1JNQVQpOiBNb2RpZnkgdG8gYWxsb3cgYHJlc3RyaWN0Jy4KCShTSUdOQVRVUkVfUkVGRVJFTkNFX05BTUVfRk9STUFUKTogTGlrZXdpc2UuCgkoY3BfdHlwZV9xdWFsX2Zyb21fcmlkKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBwYXJtcyk6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShjcF90eXBlX3F1YWxzKTogTmV3IGZ1bmN0aW9uLgoJKGF0X2xlYXN0X2FzX3F1YWxpZmllZF9wKTogTGlrZXdpc2UuCgkobW9yZV9xdWFsaWZpZWRfcCk6IExpa2V3aXNlLgoKCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogUmVwbGFjZSBjYWxscyB0bwoJY3BfYnVpbGRfdHlwZV92YXJpYW50IHdpdGggY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGUuICBVc2UKCUNQX1RZUEVfUVVBTFMgdG8gZ2V0IHF1YWxpZmllcnMgYW5kIGF0X2xlYXN0X2FzX3F1YWxpZmllZF9wIHRvCgljb21wYXJlIHRoZW0uICBVc2UgQ1BfVFlQRV8qIG1hY3JvcyB0byBjaGVjayBxdWFsaWZpZXJzLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogTGlrZXdpc2UuCgkoaW1wbGljaXRfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZXMpOiBMaWtld2lzZS4KCShidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAob3ZlcnJpZGVzKTogQ29tcGFyZSBhbGwgcXVhbGlmaWVycywgbm90IGp1c3QgYGNvbnN0JywKCW9uIG1ldGhvZCBkZWNsYXJhdGlvbnMuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IE1vcmUgQ1BfVFlQRV9RVUFMUyBjb252ZXJzaW9uLCBldGMuCgkoY29udmVydF9wb2ludGVyX3RvX3JlYWwpOiBMaWtld2lzZS4KCSh0eXBlX3Byb21vdGVzX3RvKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoY2hlY2tfZm9yX3VuaW5pdGlhbGl6ZWRfY29uc3RfdmFyKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCShjcF9maW5pc2hfZGVjbCk6IFVzZSBjaGVja19mb3JfdW5pbml0aWFsaXplZF9jb25zdF92YXIuCgkoZ3Jva2RlY2xhcmF0b3IpOiBNb3JlIENQX1RZUEVfUVVBTFMgY29udmVyc2lvbiwgZXRjLiAgVXBkYXRlIHRvCgloYW5kbGUgYHJlc3RyaWN0Jy4KCShncm9rX2N0b3JfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkocmV2ZXJfc3RhdGljX21lbWJlcl9mbik6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChncm9rX21ldGhvZF9xdWFscyk6IExpa2V3aXNlLgoJKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX3JlYWRvbmx5X29yX3ZvbGF0aWxlKTogUmVuYW1lIHRvIC4uLgoJKGR1bXBfcXVhbGlmaWVycyk6IE5ldyBmdW5jdGlvbi4gIEhhbmRsZSBgcmVzdHJpY3QnLgoJKGR1bXBfdHlwZV9yZWFsKTogVXNlIGl0LgoJKGR1bXBfYWdncl90eXBlKTogTGlrZXdpc2UuCgkoZHVtcF90eXBlX3ByZWZpeCk6IExpa2V3aXNlLgoJKGR1bXBfdHlwZV9zdWZmaXgpOiBMaWtld2lzZS4KCShkdW1wX2Z1bmN0aW9uX2RlY2wpOiBMaWtld2lzZS4KCShjdl9hc19zdHJpbmcpOiBMaWtld2lzZS4KCSogZ3h4LmdwZXJmOiBBZGQgX19yZXN0cmljdCBhbmQgX19yZXN0cmljdF9fLgoJKiBneHhpbnQudGV4aTogRG9jdW1lbnQgYHUnIGFzIHVzZWQgZm9yIGBfX3Jlc3RyaWN0JywgYW5kIGEgZmV3CglvdGhlciBwcmV2aW91c2x5IHVuZG9jdW1lbnRlZCBjb2Rlcy4KCSogaGFzaC5oOiBSZWdlbmVyYXRlZC4KCSogaW5pdC5jIChleHBhbmRfYWdncl9pbml0KTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCShidWlsZF9tZW1iZXJfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld18xKTogTGlrZXdpc2UuCgkqIGxleC5jIChpbml0X3BhcnNlKTogQWRkIGVudHJ5IGZvciBSSURfUkVTVFJJQ1QuCgkoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCShjcF90eXBlX3F1YWxfZnJvbV9yaWQpOiBEZWZpbmUuCgkqIGxleC5oIChlbnVtIHJpZCk6IEFkZCBSSURfUkVTVFJJQ1QuCgkqIG1ldGhvZC5jIChwcm9jZXNzX21vZGlmaWVycyk6IERlYWwgd2l0aCBgcmVzdHJpY3QnLgoJKiBwYXJzZS55IChwcmltYXJ5KTogTW9yZSBDUF9UWVBFX1FVQUxTIGNvbnZlcnNpb24sIGV0Yy4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IE1vcmUgQ1BfVFlQRV9RVUFMUyBjb252ZXJzaW9uLCBldGMuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IExpa2V3aXNlLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoJKGNoZWNrX2N2X3F1YWxzX2Zvcl91bmlmeSk6IExpa2V3aXNlLgoJKHVuaWZ5KTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShidWlsZF9oZWFkb2YpOiBMaWtld2lzZS4KCShnZXRfdGluZm9fdmFyKTogTGlrZXdpc2UuCgkoYnVpZGxfZHluYW1pY19jYXN0XzEpOiBMaWtld2lzZS4gIEZpeCBgdm9sYXRpbGUnIGhhbmRsaW5nLgoJKGV4cGFuZF9jbGFzc19kZXNjKTogTGlrZXdpc2UuCgkoZXhwYW5kX2F0dHJfZGVzYyk6IExpa2V3aXNlLgoJKHN5bnRoZXNpemVfdGluZm9fZm4pOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGNvdmFyaWFudF9yZXR1cm5fcCk6IExpa2V3aXNlLiAgRml4IGB2b2xhdGlsZScgaGFuZGxpbmcuCgkoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBMaWtld2lzZS4KCShleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfb3JfcmVmZXJlbmNlX25hbWUpOiBUYWtlCgl0eXBlX3F1YWxzLCBub3QgY29uc3RwIGFuZCB2b2xhdGlsZXAuCgkoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfb3JfcmVmZXJlbmNlX3R5cGUpOiBMaWtld2lzZS4KCShtYXRjaF9tZXRob2RfdHlwZXMpOiBNb3JlIENQX1RZUEVfUVVBTFMgY29udmVyc2lvbiwgZXRjLgoJKGJ1aWxkX3NpZ25hdHVyZV9wb2ludGVyX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkoYnVpbGRfc2lnbmF0dXJlX21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfYXJyYXlfdHlwZSk6IExpa2V3aXNlLgoJKGNwX2J1aWxkX3R5cGVfdmFyaWFudCk6IFJlbmFtZSB0byAuLi4KCShjcF9idWlsZF9xdWFsaWZpZWRfdHlwZSk6IE5ldyBmdW5jdGlvbi4gIERlYWwgd2l0aCBgX19yZXN0cmljdCcuCgkoY2Fub25pY2FsX3R5cGVfdmFyaWFudCk6IE1vcmUgQ1BfVFlQRV9RVUFMUyBjb252ZXJzaW9uLCBldGMuCgkoYnVpbGRfZXhjZXB0aW9uX3ZhcmlhbnQpOiBMaWtld2lzZS4KCShtYXBjYXIpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKHF1YWxpZl90eXBlKTogTGlrZXdpc2UuCgkoY29tbW9uX3R5cGUpOiBMaWtld2lzZS4KCShjb21wdHlwZXMpOiBMaWtld2lzZS4KCShjb21wX2N2X3RhcmdldF90eXBlcyk6IExpa2V3aXNlLgoJKGF0X2xlYXN0X2FzX3F1YWxpZmllZF9wKTogRGVmaW5lLgoJKG1vcmVfcXVhbGlmaWVkX3ApOiBMaWtld2lzZS4KCShjb21wX2N2X3F1YWxpZmljYXRpb24pOiBNb3JlIENQX1RZUEVfUVVBTFMgY29udmVyc2lvbiwgZXRjLgoJKGNvbXBwYXJtcyk6IExpa2V3aXNlLgoJKGlubGluZV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoc3RyaW5nX2NvbnZfcCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9pbmRpcmVjdF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9hcnJheV9yZWYpOiBMaWtld2lzZS4KCShidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBMaWtld2lzZS4KCShidWlsZF9zdGF0aWNfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX21vZGlmeV9leHByKTogTGlrZXdpc2UuCgkoY29udmVydF9Gb3JfYXNzaWdubWVudCk6IExpa2V3aXNlLgoJKGNvbXBfcHRyX3R0eXBlc19yZWFsKTogTGlrZXdpc2UuCgkoY3BfdHlwZV9xdWFscyk6IE5ldyBmdW5jdGlvbi4KCjE5OTgtMTAtMjMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoQ1BfVFlQRV9SRUFET05MWSk6IE5ldyBtYWNybyB0byBoYW5kbGUgYXJyYXlzLgoJKENQX1RZUEVfVk9MQVRJTEUpOiBMaWtld2lzZS4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSB0aGVtLgoJKiB0cmVlLmMgKGNhbm9uaWNhbF90eXBlX3ZhcmlhbnQpOiBMaWtld2lzZS4KCjE5OTgtMTAtMjIgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBwYXJzZS55IChuYW1lZF9jbGFzc19oZWFkKTogUHVzaCBpbnRvIGNsYXNzIHdoaWxlIHBhcnNpbmcgdGhlCgliYXNlIGNsYXNzIGxpc3QuCgkqIGRlY2wyLmMgKHB1c2hfc2NvcGUsIHBvcF9zY29wZSk6IE5ldyBmdW5jdGlvbnMuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSB0aGVtLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogRGVsYXkgY2xlYW51cCB1bnRpbCBlbmQgb2YgZnVsbCBleHByZXNzaW9uLgoKMTk5OC0xMC0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBVc2Ugb2YgYSB0eXBlIGhlcmUgaXMgYW4gZXJyb3IuCgoxOTk4LTEwLTE5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJUmV2YW1wIHJlZmVyZW5jZXMgdG8gbWVtYmVyIGZ1bmN0aW9ucy4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IENhbGwgYnVpbGRfY29tcG9uZW50X3JlZiBmb3IgYQoJcmVmZXJlbmNlIHRvIGEgbWVtYmVyIGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IE9ubHkgcmV0dXJuIGEgc2luZ2xlIGZ1bmN0aW9uCglpZiBpdCdzIHN0YXRpYy4gIE90aGVyd2lzZSwgcmV0dXJuIGEgQ09NUE9ORU5UX1JFRi4KCShidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBIYW5kbGUgYSBDT01QT05FTlRfUkVGLgoJKGJ1aWxkX3VuYXJ5X29wKTogSGFuZGxlIGFsbCB1bmtub3duLXR5cGUgdGhpbmdzLgoJKiBkZWNsMi5jIChhcmdfYXNzb2MpOiBIYW5kbGUgQ09NUE9ORU5UX1JFRi4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IENvbXBsYWluIGlmIHRoZSBmdW5jdGlvbiB3ZSBnZXQgaXMgYQoJbm9uc3RhdGljIG1lbWJlciBmdW5jdGlvbi4gIFJlbW92ZSBjb2RlIGZvciBmaW5kaW5nICJjb21wYXRpYmxlIgoJZnVuY3Rpb25zLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IEhhbmRsZSBOT1BfRVhQUi4KCSogdHJlZS5jIChidWlsZF9kdW1teV9vYmplY3QpOiBOZXcgZm4uCgkobWF5YmVfZHVtbXlfb2JqZWN0KTogTmV3IGZuLgoJKGlzX2R1bW15X29iamVjdCk6IE5ldyBmbi4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIHRoZW0uCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBVc2UgbWF5YmVfZHVtbXlfb2JqZWN0LgoJKiBlcnJvci5jIChkdW1wX2V4cHIsIGNhc2UgT0ZGU0VUX1JFRik6IFVzZSBpc19kdW1teV9vYmplY3QuCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBVc2UgbWF5YmVfZHVtbXlfb2JqZWN0IGFuZAoJaXNfZHVtbXlfb2JqZWN0LgoJKGJ1aWxkX29mZnNldF9yZWYpOiBVc2UgbWF5YmVfZHVtbXlfb2JqZWN0LgoJKHJlc29sdmVfb2Zmc2V0X3JlZik6IFVzZSBpc19kdW1teV9vYmplY3QuCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBDYWxsIGJ1aWxkX2R1bW15X29iamVjdC4KCSh1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IENhbGwgaXNfZHVtbXlfb2JqZWN0LgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9hZGRyKTogTWFrZSBzdXJlIGZpZWxkIGlzIGEgZmllbGQuCgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IERlbGV0ZSBvYnNvbGV0ZSBjb2RlLgoKCSogcHQuYyAodHN1YnN0LCBURU1QTEFURSpQQVJNKik6IEFib3J0IGlmIHdlIGRvbid0IGhhdmUgYW55IGFyZ3MuCgoxOTk4LTEwLTE4ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAodmFsaWRhdGVfbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBGaXggdXNpbmctZGlyZWN0aXZlcyBvZgoJc3RkIGlmIHN0ZCBpcyBpZ25vcmVkLgoKMTk5OC0xMC0xOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IEZpeCB0aGlua28uCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRW1iZWRkZWQgYXR0cnMgYmluZCB0byB0aGUgcmlnaHQsCglub3QgdGhlIGxlZnQuCgoJKiBwYXJzZS55IChmbi5kZWYyKTogRml4ICdhdHRycycgZm9ybWF0LgoKMTk5OC0xMC0xOCAgQWxhc3RhaXIgSi4gSG91Z2h0b24gIDxhamg4QGRvYy5pYy5hYy51az4KCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBVcGRhdGUuCgkqIHBhcnNlLnkgKGV4cHJfb3JfZGVjbGFyYXRvcl9pbnRlcm4pOiBOZXcgcnVsZS4KCShleHByX29yX2RlY2xhcmF0b3IsIGRpcmVjdF9ub3R5cGVfZGVjbGFyYXRvciwgcHJpbWFyeSwKCWZ1bmN0aW9uYWxfY2FzdCk6IFVzZSBpdC4KCShub3R5cGVfZGVjbGFyYXRvcl9pbnRlcm4pOiBOZXcgcnVsZS4KCShub3R5cGVfZGVjbGFyYXRvciwgY29tcGxleF9ub3R5cGVfZGVjbGFyYXRvcik6IFVzZSBpdC4KCjE5OTgtMTAtMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IFNldCBERUNMX0NPTlRFWFQgdG8gbmFtZXNwYWNlIGlmIGFwcHJvcHJpYXRlLgoJKGdyb2t2YXJkZWNsKTogTGlrZXdpc2UuCgpTYXQgT2N0IDE3IDIzOjI3OjIwIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsYXNzLmMgKG1ha2VfbWV0aG9kX3ZlYyk6IENhc3QgMXN0IGFyZ3VtZW50IG9mIGBiemVybycgdG8gKFBUUikuCgkoYWRkX21ldGhvZCk6IExpa2V3aXNlIGZvciBhcmd1bWVudHMgMSAmIDIgb2YgYGJjb3B5Jy4KCgkqIGRlY2wuYyAoc2lnbmFsX2NhdGNoKTogTWFyayB3aXRoIEFUVFJJQlVURV9OT1JFVFVSTi4KCgkqIHB0LmMgKHByb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbik6IENhc3QgMXN0IGFyZ3VtZW50IG9mCglgYnplcm8nIHRvIChQVFIpLgoKCSogdHJlZS5jIChidWlsZF9iYXNlX2ZpZWxkcyk6IENhc3QgYGJhc2VfYWxpZ24nIHRvIChpbnQpIHdoZW4KCWNvbXBhcmluZyBhZ2FpbnN0IG9uZS4KCjE5OTgtMTAtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBIYW5kbGUgdGVtcGxhdGUgcGFyYW1ldGVycyBmb3IgbWVtYmVyCgl0ZW1wbGF0ZXMgd2hlcmUgc2FpZCBwYXJhbWV0ZXJzIGhhdmUgdGhlIHNhbWUgbmFtZSBhcyB0aGUKCXN1cnJvdW5kaW5nIGNsYXNzLgoKCSogZGVjbC5jIChleHBhbmRfc3RhdGljX2luaXQpOiBCdWlsZCBjbGVhbnVwcyBiZWZvcmUgZW50ZXJpbmcgdGhlCglhbm9ueW1vdXMgZnVuY3Rpb24gdXNlZCB0byBkbyB0aGVtIHRvIGF2b2lkIGFjY2Vzcy1jaGVja2luZwoJY29uZnVzaW9uLgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogQWRkIGJhY2sgY2FsbCB0byBjcGx1c19kZWNsX2F0dHJpYnV0ZXMKCWFjY2lkZW50YWxseSByZW1vdmVkIGJ5IHByZXZpb3VzIGNoYW5nZSwgYW5kIG1ha2UgREVDTF9SVEwgaGVyZS4KCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IERvbid0IG1ha2UgREVDTF9SVEwgaGVyZS4KCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBEb24ndCBleGFtaW5lIHVuaW5zdGFudGlhdGVkCglkZWZhdWx0IGFyZ3VtZW50cy4KCjE5OTgtMTAtMTYgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChyZWFsX3l5bGV4KTogRml4IHVuYWxpZ25lZCBhY2Nlc3Mgb2Ygd2NoYXJfdC4KCjE5OTgtMTAtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogRml4IGRvY3VtZW50YXRpb24gdG8gcmVmbGVjdCBwcmV2aW91cwoJY2hhbmdlcy4gIENoZWNrIGZvciBkdXBsaWNhdGUgbWV0aG9kIGRlY2xhcmF0aW9ucyBoZXJlLgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogSGFuZGxlIEZVTkNUSU9OX0RFQ0wgdnMgVEVNUExBVEVfREVDTAoJY29ycmVjdGx5OyBzdWNoIHRoaW5ncyBuZXZlciBtYXRjaC4KCShncm9rZm5kZWNsKTogRG9uJ3QgbG9vayBmb3IgZHVwbGljYXRlIG1ldGhvZHMgaGVyZS4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IERvbid0IGFzc3VtZSBuYW1lcyBhcmUgbWFuZ2xlZC4KCURvbid0IGFkZCBib2d1cyBtZW1iZXIgZnVuY3Rpb24gZGVjbGFyYXRpb25zIHRvIGEgY2xhc3MgYmVmb3JlIHRoZQoJY2xhc3MgdHlwZSBpcyBjb21wbGV0ZS4KCShncm9rZmllbGQpOiBSZWZvcm1hdCBlcnJvciBtZXNzYWdlLgoJKiBtZXRob2QuYyAoc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbCk6IERvbid0IG1hbmdsZSBuYW1lcyB3aGlsZQoJcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLgoKMTk5OC0xMC0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2luZGlyZWN0X3JlZik6IENvbXBsYWluIGFib3V0IGEgcG9pbnRlciB0byBkYXRhCgltZW1iZXIsIHRvby4KCSogdHlwZWNrMi5jIChidWlsZF9tX2NvbXBvbmVudF9yZWYpOiBEb24ndCBpbmRpcmVjdCBhIHBvaW50ZXIgdG8KCWRhdGEgbWVtYmVyLgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IERvbid0IHVuZG8gdGhlIGFib3ZlLgoKCSogY3AtdHJlZS5oIChERUNMX0NfQklUX0ZJRUxELCBTRVRfREVDTF9DX0JJVF9GSUVMRCk6IE5ldyBtYWNyb3MuCgkoc3RydWN0IGxhbmdfZGVjbF9mbGFncyk6IEFkZCBgYml0ZmllbGQnLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBVc2UgREVDTF9DX0JJVF9GSUVMRCBpbnN0ZWFkIG9mCglERUNMX0JJVF9GSUVMRC4KCSogZGVjbDIuYyAoZ3Jva2JpdGZpZWxkLCBncm9rX2FsaWdub2YpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfYWRkciwgZXhwcl9zaXplb2YpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IERvbid0IGNyYXNoIGlmIHRha2luZyB0aGUgYWRkcmVzcwoJcmV0dXJucyBlcnJvcl9tYXJrX25vZGUuCgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBBbHNvIGNoZWNrIGN0eXBlIHdoZW4gY2hlY2tpbmcgZm9yIDo6bWFpbigpLgoKMTk5OC0xMC0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogOjptYWluIGFuZCBfX2J1aWx0aW5fKiBnZXQgQyBsaW5rYWdlLgoJRG8gbWFuZ2xpbmcgaGVyZS4KCShncm9rZGVjbGFyYXRvcik6IEluc3RlYWQgb2YgaGVyZS4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IExvc2Ugc3BlY2lhbCBoYW5kbGluZyBvZiA6Om1haW4gYW5kCglfX2J1aWx0aW5fKi4KCSogY3AtdHJlZS5oIChERUNMX01BSU5fUCk6IENoZWNrIGZvciBDIGxpbmthZ2UuCgoJKiBzcGV3LmMgKHl5bGV4KTogQ2xlYXIgbG9va2luZ19mb3JfdHlwZW5hbWUgaWYgd2UgZ290CgknZW51bSB7IC4uLiB9OycuCgoxOTk4LTEwLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAobWF5YmVfd2Fybl9hYm91dF9vdmVybHlfcHJpdmF0ZV9jbGFzcyk6IEltcHJvdmUgZXJyb3IKCW1lc3NhZ2VzIGZvciBjbGFzcyB3aXRoIG9ubHkgcHJpdmF0ZSBjb25zdHJ1Y3RvcnMuCgoJKiBjcC10cmVlLmRlZiAoVFlQRU5BTUVfVFlQRSk6IEFkZCB0byBkb2N1bWVudGF0aW9uLgoJKiBjcC10cmVlLmggKFRZUEVOQU1FX1RZUEVfRlVMTE5BTUUpOiBEb2N1bWVudC4KCShidWlsZF90eXBlbmFtZV90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKGJ1aWxkX3R5cGVuYW1lX3R5cGUpOiBCcm9rZW4gb3V0IGZyb20gLi4uCgkobWFrZV90eXBlbmFtZV90eXBlKTogVXNlIGl0LgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkKTogTGlrZXdpc2UuCgoxOTk4LTEwLTE0ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBDaGVjayBhZ2FpbnN0IHR5cGVfcmVmZXJyZWRfdG8uCgkqIGRlY2wuYyAoZ3Jva3ZhcmRlY2wpOiBDaGVjayBmb3IgZGVjbGFyYXRvciBuYW1lIGJlZm9yZSBidWlsZGluZwoJREVDTF9BU1NFTUJMRVJfTkFNRS4KCjE5OTgtMTAtMTQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBBZGQgY29tbWVudC4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IG1hcmsgdGhlIF9UWVBFIG5vZGUgZm9yCgltZW1iZXIgY2xhc3MgdGVtcGxhdGVzIGFzIGFuIGluc3RhbnRpYXRpb24uCgoxOTk4LTEwLTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBGaXggbXkgdGhpbmtvLgoKMTk5OC0xMC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdGluZm8yLmNjIChmYXN0X2NvbXBhcmUpOiBSZW1vdmUuCgkoYmVmb3JlKTogSnVzdCB1c2Ugc3RyY21wLgoJKiB0aW5mby5jYyAob3BlcmF0b3I9PSk6IEp1c3QgdXNlIHN0cmNtcC4KCjE5OTgtMTAtMTMgIEtsYXVzLUdlb3JnIEFkYW1zICA8S2xhdXMtR2VvcmcuQWRhbXNAY2hlbWllLnVuaS1rYXJsc3J1aGUuZGU+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBEb24ndCBjaGVjayBmb3IgbGlua2FnZSBpbiBgZXh0ZXJuICJDIicKCWRlY2xhcmF0aW9ucy4KCjE5OTgtMTAtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKHNwZWNpYWxpemF0aW9uc19vZl9zYW1lX3RlbXBsYXRlX3ApOiBSZW1vdmUuCgkqIHNlYXJjaC5jIChnZXRfdGVtcGxhdGVfYmFzZSk6IERvbid0IHVzZSBpdC4KCShnZXRfdGVtcGxhdGVfYmFzZV9yZWN1cnNpdmUpOiBMaWtld2lzZS4KCSogcHQuYyAoc3BlY2lhbGl6YXRpb25zX29mX3NhbWVfdGVtcGxhdGVfcCk6IFJlbW92ZS4KCSh1bmlmeSk6IERvbid0IHVzZSBpdC4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBGaW5kIHRoZSBjb3JyZWN0IHBhcmVudCB3aGVuIHNldHRpbmcKCUNMQVNTVFlQRV9USV9URU1QTEFURS4KCjE5OTgtMTAtMTIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRpbmZvLmNjIChvcGVyYXRvcj09KTogQWx3YXlzIGNvbXBhcmUgbmFtZXMuCgoxOTk4LTEwLTEyICBIZXJtYW4gdGVuIEJydWdnZSAgPEhhai5UZW4uQnJ1Z2dlQG5ldC5IQ0Mubmw+CgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogRml4IGN1dC1hbmQtcGFzdGUgZXJyb3IuCgoxOTk4LTEwLTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbmMvdHlwZWluZm86IEFkZCAjcHJhZ21hIGludGVyZmFjZS4KCShvcGVyYXRvciE9KTogSnVzdCBjYWxsIG9wZXJhdG9yPT0uCgkqIHRpbmZvLmNjOiBBZGQgI3ByYWdtYSBpbXBsZW1lbnRhdGlvbi4KCShvcGVyYXRvcj09KTogTW92ZSBmcm9tIGluYy90eXBlaW5mbyBhbmQgdGluZm8yLmNjLgoJQ2hlY2sgX19DT01NT05fVU5SRUxJQUJMRSBpbnN0ZWFkIG9mIF9XSU4zMi4KCgkqIHR5cGVjazIuYyAobXlfZnJpZW5kbHlfYWJvcnQpOiBBZGQgVVJMLgoKMTk5OC0xMC0xMiAgQWxhc3RhaXIgSi4gSG91Z2h0b24gIDxhamg4QGRvYy5pYy5hYy51az4KCgkqIGRlY2wuYyAoc3RhcnRfbWV0aG9kKTogQWRkZWQgZXh0cmEgcGFyYW1ldGVyIGZvciBhdHRyaWJ1dGVzLgoJKiBjcC10cmVlLmggKHN0YXJ0X21ldGhvZCk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIHBhcnNlLnkgKGZuLmRlZjIpOiBVcGRhdGUgc3RhcnRfbWV0aG9kIHBhcmFtZXRlciBsaXN0LgoKMTk5OC0xMC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoc3BlY2lhbGl6YXRpb25zX29mX3NhbWVfdGVtcGxhdGVfcCk6IERlY2xhcmUuCgkqIHB0LmMgKHNwZWNpYWxpemF0aW9uc19vZl9zYW1lX3RlbXBsYXRlX3ApOiBOZXcgZnVuY3Rpb24uCgkodW5pZnkpOiBVc2UgaXQuCgkqIHNlYXJjaC5jIChnZXRfdGVtcGxhdGVfYmFzZSk6IFVzZSBpdC4KCShnZXRfdGVtcGxhdGVfYmFzZV9yZWN1cnNpdmUpOiBMaWtld2lzZS4KCjE5OTgtMTAtMTAgIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGRlY2wyLmMgKHN0YXJ0X29iamVjdHMpOiBBZGQgbmV3IHZhcmlhYmxlIGBqb2luZXInIGFuZAoJaW5pdGlhbGl6ZSBpdCBwcm9wZXJseS4KCjE5OTgtMTAtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBzZWFyY2guYyAoZXhwYW5kX3VwY2FzdF9maXh1cHMpOiBUd2VhayB0byBtYXRjaCAxOTk4LTEwLTA3CgljaGFuZ2UgdG8gdnRhYmxlIHR5cGVzLgoKCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogQXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGNhdXNlZCBieQoJMTk5OC0xMC0wMyBjaGFuZ2UuCgoxOTk4LTEwLTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChyZXNvbHZlX292ZXJsb2FkZWRfdW5pZmljYXRpb24pOiBOZXcgZm4uCgkodHJ5X29uZV9vdmVybG9hZCk6IExpa2V3aXNlLgoJKHVuaWZ5KTogRG9uJ3QgZmFpbCBvbiB1bmtub3duIHR5cGUuCgkodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogTGlrZXdpc2UuICBVc2UgcmVzb2x2ZV9vdmVybG9hZGVkX3VuaWZpY2F0aW9uCgl0byBoYW5kbGUgYW4gb3ZlcmxvYWRlZCBhcmd1bWVudC4KCSh0ZW1wbGF0ZV9hcmdzX2VxdWFsKTogU3BsaXQgb3V0Li4uCgkoY29tcF90ZW1wbGF0ZV9hcmdzKTogRnJvbSBoZXJlLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IEFsc28gYWxsb3cgYSB0ZW1wbGF0ZSB3aXRoIG1vcmUKCXBhcm1zIHRoYW4gd2VyZSBleHBsaWNpdGx5IHNwZWNpZmllZC4KCSogY3AtdHJlZS5oOiBBZGQgdGVtcGxhdGVfYXJnc19lcXVhbC4KCSogY2FsbC5jIChyZXNvbHZlX2FyZ3MpOiBSZW1vdmUgVEVNUExBVEVfSURfRVhQUiBjb2RlLgoKVGh1IE9jdCAgOCAxNTo1ODozMCAxOTk4ICBBbnRob255IEdyZWVuICA8Z3JlZW5AY3lnbnVzLmNvbT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYXNtX3N0bXQpOiBSZXZlcnQgbXkgMTk5OC0wOS0yOAoJY2hhbmdlLgoKVGh1IE9jdCAgOCAwNjowMDoxOSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiB0eXBlY2suYyAodW5zaWduZWRfdHlwZSk6IE9ubHkgcmV0dXJuIFRJdHlwZSBub2RlcyB3aGVuCglIT1NUX0JJVFNfUEVSX1dJREVfSU5UIGlzID49IDY0IGJpdHMuCgkoc2lnbmVkX3R5cGUpOiBMaWtld2lzZS4KCSogZGVjbC5jIChpbnRUSV90eXBlX25vZGUsIHVuc2lnbmVkX2ludFRJX3R5cGVfbm9kZSk6IE9ubHkgZGVjbGFyZQoJd2hlbiBIT1NUX0JJVFNfUEVSX1dJREVfSU5UIGlzID49IDY0IGJpdHMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBPbmx5IGNyZWF0ZSBUSXR5cGUgbm9kZXMgd2hlbgoJSE9TVF9CSVRTX1BFUl9XSURFX0lOVCBpcyA+PSA2NCBiaXRzLgoJKiBjcC10cmVlLmggKGludFRJX3R5cGVfbm9kZSwgdW5zaWduZWRfaW50VElfdHlwZV9ub2RlKTogT25seSBkZWNsYXJlCgl3aGVuIEhPU1RfQklUU19QRVJfV0lERV9JTlQgaXMgPj0gNjQgYml0cy4KCldlZCBPY3QgIDcgMTI6MzI6NDQgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKGhhc2guaCk6IEFkZCAtTCBLUi1DIC1GICcsIDAsIDAnIGZsYWdzIHRvIGdwZXJmLgoJKGd4eC5ncGVyZik6IFVwZGF0ZSBjb21tZW50cyBkZXNjcmliaW5nIGludm9jYXRpb24gZmxhZ3MuCgkoaGFzaC5oKTogUmVnZW5lcmF0ZSB1c2luZyBncGVyZiAyLjcuMSAoMTk5ODEwMDYgZWdjcykuCgoxOTk4LTEwLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQWRkIGNvbW1lbnRhcnkgb24gcHJldmlvdXMgY2hhbmdlLgoKCSogY3AtdHJlZS5oICh2dGJsX3B0cl90eXBlX25vZGUpOiBOZXcgdmFyaWFibGUuCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YmxfcmVmKTogRG9uJ3QgaW5kaXJlY3QgdGhyb3VnaCB0aGUgdnB0cjsgaXQncwoJYWxyZWFkeSBvZiB0aGUgcmlnaHQgdHlwZS4KCShmaW5pc2hfc3RydWN0XzEpOiBNYWtlIHRoZSB2cHRyIGJlIG9mIHR5cGUgdnRibF9wdHJfdHlwZV9ub2RlLgoJU2ltcGxpZnkgY29kZSB0byBncm93IHZ0YWJsZS4KCSogZGVjbC5jICh2dGJsX3B0cl90eXBlX25vZGUpOiBEZWZpbmUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGl0LgoKMTk5OC0xMC0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuZGVmIChQVFJNRU1fQ1NUKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChwdHJtZW1fY3N0KTogTmV3IHR5cGUuCgkobGFuZ190eXBlKTogUmVtb3ZlIGxvY2FsX3R5cGVkZWNscy4KCShkdW1teSk6IEluY3JlYXNlIHRvIDEyIGJpdHMgZnJvbSAxMS4KCShDTEFTU1RZUEVfTE9DQUxfVFlQRURFQ0xTKTogUmVtb3ZlLgoJKFBUUk1FTV9DU1RfQ0xBU1MpOiBOZXcgbWFjcm8uCgkoUFRSTUVNX0NTVF9NRU1CRVIpOiBMaWtld2lzZS4KCShjdXJyZW50X2FjY2Vzc19zcGVjaWZpZXIpOiBOZXcgdmFyaWFibGUuCgkoY3VycmVudF9jbGFzc190eXBlKTogUmVtb3ZlIGR1cGxpY2F0ZSBkZWNsYXJhdGlvbi4KCShmaW5pc2hfc3RydWN0KTogQ2hhbmdlIHByb3RvdHlwZS4KCSh1bnJldmVyc2VfbWVtYmVyX2RlY2xhcmF0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShwdXNoZGVjbF9jbGFzc19sZXZlbCk6IENoYW5nZSBwcm90b3R5cGUuCgkoZ3Jva19lbnVtX2RlY2xzKTogUmVtb3ZlLgoJKGZpeHVwX2Fub255bW91c191bmlvbik6IE5ldyBmdW5jdGlvbi4KCShncm9rX3hfY29tcG9uZW50cyk6IENoYW5nZSBwcm90b3R5cGUuCgkodHN1YnN0X2NoYWluKTogUmVtb3ZlLgoJKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IExpa2V3aXNlLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRml4IGluZGVudGF0aW9uLgoJKGZpbmlzaF9jbGFzc19kZWZpbml0aW9uKTogQ2hhbmdlIHByb3RvdHlwZS4KCShmaW5pc2hfbWVtYmVyX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoZmluaXNoX21lbWJlcl9kZWNsYXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShjaGVja19tdWx0aXBsZV9kZWNsYXJhdG9ycyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChjbGFzc19zdGFja19ub2RlX3QpOiBOZXcgdHlwZS4KCShjdXJyZW50X2NsYXNzX2Jhc2UpOiBSZW1vdmUuCgkoY3VycmVudF9jbGFzc19zdGFjayk6IENoYW5nZSB0eXBlLgoJKGN1cnJlbnRfYWNjZXNzX3NwZWNpZmllcik6IE5ldyB2YXJpYWJsZS4KCShncm93X21ldGhvZCk6IFJlbW92ZS4KCShjaGVja19tZW1iZXJfZGVjbF9pc19zYW1lX2luX2NvbXBsZXRlX3Njb3BlKTogQnJlYWsgb3V0IGZyb20KCWZpbmlzaF9zdHJ1Y3QuCgkobWFrZV9tZXRob2RfdmVjKTogTmV3IGZ1bmN0aW9uLgoJKGZyZWVfbWV0aG9kX3ZlYyk6IExpa2V3aXNlLgoJKGFkZF9pbXBsaWNpdGx5X2RlY2xhcmVkX21lbWJlcnMpOiBCcmVhayBvdXQgZnJvbSBmaW5pc2hfc3RydWN0XzEuCgkoZnJlZV9tZXRob2RfdmVjcyk6IE5ldyB2YXJpYWJsZS4KCShhZGRfbWV0aG9kKTogUmV3b3JrIGZvciBkaXJlY3QgdXNlIGZyb20gcGFyc2VyLgoJKGhhbmRsZV91c2luZ19kZWNsKTogV2F0Y2ggZm9yIE5VTExfVFJFRSB3aGlsZSBpdGVyYXRpbmcgdGhyb3VnaAoJQ0xBU1NUWVBFX01FVEhPRF9WRUMuCgkoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogRG9uJ3QgYnVpbGQgQ0xBU1NUWVBFX01FVEhPRF9WRUMgaGVyZTsKCWp1c3QgZG8gc29tZSBlcnJvci1jaGVja2luZy4KCSh3YXJuX2hpZGRlbik6IENoYW5nZSBpdGVyYXRpb24gdGhyb3VnaCBDTEFTU1RZUEVfTUVUSE9EX1ZFQy4KCShmaW5pc2hfc3RydWN0XzEpOiBTaW1wbGlmeS4gIFVzZSBhZGRfaW1wbGljaXRseV9kZWNsYXJlZF9tZW1iZXJzLgoJKGZpbmlzaF9zdHJ1Y3QpOiBDaGFuZ2UgcHJvdG90eXBlLiAgU2ltcGxpZnk7IGZpZWxkcyBhbmQgbWV0aG9kcwoJYXJlIGFscmVhZHkgc2V0IHVwIGF0IHRoaXMgcG9pbnQuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogU2V0IHVwIGN1cnJlbnRfY2xhc3Nfc3RhY2suCgkocHVzaGNsYXNzKTogU2F2ZSBjdXJyZW50X2FjY2Vzc19zcGVjaWZpZXIuCgkocG9wY2xhc3MpOiBSZXN0b3JlIGl0LgoJKGN1cnJlbnRseV9vcGVuX2NsYXNzKTogU2ltcGxpZnkuCgkoYnVpbGRfc2VsZl9yZWZlcmVuY2UpOiBSZW1vdmUgdXNlIG9mIENMQVNTVFlQRV9MT0NBTF9UWVBFREVDTFMuCgkqIGRlY2wuYyAoc2F2ZWRfc2NvcGUpOiBBZGQgYWNjZXNzX3NwZWNpZmllci4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IFNhdmUgaXQuCgkocG9wX2Zyb21fdG9wX2xldmVsKTogUmVzdG9yZSBpdC4KCShtYXliZV9wcm9jZXNzX3RlbXBsYXRlX3R5cGVfZGVjbGFyYXRpb24pOiBVc2UKCWZpbmlzaF9tZW1iZXJfZGVjbGFyYXRpb24uCgkocHVzaHRhZyk6IExpa2V3aXNlLgoJKHB1c2hkZWNsX2NsYXNzX2xldmVsKTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkoZml4dXBfYW5vbnltb3VzX3VuaW9uKTogQnJlYWsgb3V0IGZyb20gZ3Jva194X2NvbXBvbmVudHMuCgkoc2hhZG93X3RhZyk6IFVzZSBpdC4KCSh4cmVmX3RhZyk6IENvbXBsYWluIGFib3V0IHVzaW5nIGFuIGVsYWJvcmF0ZWQgdHlwZSBzcGVjaWZpZXIgdG8KCXJlZmVyZW5jZSBhIHRlbXBsYXRlIHR5cGUgcGFyYW1ldGVyIG9yIHR5cGVkZWYgbmFtZS4KCSh4cmVmX2Jhc2V0eXBlcyk6IERvbid0IHNldCBDTEFTU1RZUEVfTE9DQUxfVFlQRURFQ0xTLgoJKGN1cnJlbnRfbG9jYWxfZW51bSk6IFJlbW92ZS4KCShidWlsZF9lbnVtZXJhdG9yKTogQ2FsbCBmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uLgoJKGdyb2tfZW51bV9kZWNscyk6IFJlbW92ZS4KCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBTaW1wbGlmeS4KCShjaGVja19jbGFzc2ZuKTogQ2hhbmdlIGl0ZXJhdGlvbiB0aHJvdWdoIENMQVNTVFlQRV9NRVRIT0RfVkVDLgoJKGdyb2tmaWVsZCk6IERvbid0IHNldCBDTEFTU1RZUEVfTE9DQUxfVFlQRURFQ0xTLgoJKG1lcmdlX2Z1bmN0aW9ucyk6IEFkZCB0byBjb21tZW50LgoJKGFyZ19hc3NvY190eXBlKTogUHJvdG90eXBlLgoJKGFyZ19hc3NvYyk6IFBhc3MgYXMgbWFueSBhcmd1bWVudHMgYXMgdGhlcmUgYXJlIHBhcmFtZXRlcnMuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBQVFJNRU1fQ1NULiAgSW1wcm92ZSBoYW5kbGluZyBvZgoJT0ZGU0VUX1JFRi4KCSogZXhwci5jIChjcGxzX2V4cGFuZF9leHByKTogUmVtb3ZlIGRlYWQgY29kZS4gIEhhbmRsZQoJUFRSTUVNX0NTVC4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IExvb2t1cCBmcmllbmRzIHdoZW4gaW4gbmVzdGVkIGNsYXNzZXMuCglDaGFuZ2UgY29tbWVudHMuCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IERvIGxvb2t1cCBldmVuIGZvciBjbGFzc2VzIHRoYXQgYXJlCglvbmx5IHBhcnRpYWxseSBkZWZpbmVkLgoJKGRlY2xfY29uc3RhbnRfdmFsdWUpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfdmFsdWUpOiBSZW1vdmUgaGFjayB3aGVyZSBieSBUWVBFIHdhcwoJbm90IGEgVFlQRS4gIEhhbmRsZSBQVFJNRU1fQ1NULgoJKGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBEb24ndCBwYXNzIGEgUEFSTV9ERUNMIHdoZXJlIGEgVFlQRQoJc2hvdWxkIGdvLgoJKiBwYXJzZS55IChjb21wb25lbnRzLCBub3R5cGVfY29tcG9uZW50cywgY29tcG9uZW50X2RlY2wsCgljb21wb25lbnRfZGVjbF8xLCBjb21wb25lbnRfZGVjbGFyYXRvciwgY29tcG9uZW50X2RlY2xhcmF0b3IwKToKCU5vdyBhbGwgYXJlIGl0eXBlIHJhdGhlciB0aGFuIHR0eXBlLiAgUmV3b3JrIHRvIGFkZCBtZW1iZXJzIHRvCgljbGFzc2VzIG9uIHRoZSBmbHkuCgkodHlwZXNxcGVjcXVhbF9yZXNlcnZlZCk6IFVzZSBjaGVja19tdWx0aXBsZV9kZWNsYXJhdG9ycy4KCShzdHJ1Y3RzcCk6IFVwZGF0ZSBjbGFzcyB0byBmaW5pc2hfY2xhc3NfZGVmaW5pdGlvbi4KCShkb194cmVmX2RlZm4pOiBVbnNwbGl0IGludG8gbmFtZWRfY2xhc3NfaGVhZC4KCShhY2Nlc3Nfc3BlY2lmaWVyKTogU2V0IGN1cnJlbnRfYWNjZXNzX3NwZWNpZmllci4KCSogcHQuYyAoc2V0X2N1cnJlbnRfYWNjZXNzX2Zyb21fZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBEb24ndCB0YWtlIHRoZSBwYXJhbWV0ZXJzLgoJKGNvbXBfdGVtcGxhdGVfYXJncyk6IE1ha2UgbW9yZSByb2J1c3QuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3QgdXNlIGN1cnJlbnRfbG9jYWxfZW51bS4KCShmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtKTogSGFuZGxlIFBUUk1FTV9DU1QuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2Ugc2V0X2N1cnJlbnRfYWNjZXNzX2Zyb21fZGVjbCwKCWZpbmlzaF9tZW1iZXJfZGVjbGFyYXRpb24gYW5kIHVucmV2ZXJzZV9tZW1iZXJfZGVjbGFyYXRpb25zLiAgU2V0CglsaW5lbm8vaW5wdXRfZmlsZW5hbWUgYmVmb3JlIGdlbmVyYXRpbmcgaW1wbGljaXQgbWVtYmVyIGZ1bmN0aW9ucy4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBEb24ndCBhc3N1bWUgYmFjay11bmlmaWNhdGlvbiBoYXBwZW5zCglvbmx5IGZvciB0aGUgbGFzdCBhcmd1bWVudC4KCShyZWdlbmVyYXRlX2RlY2xfZnJvbV90ZW1wbGF0ZSk6IENhbGwgcHVzaGNsYXNzIGEgYml0IGVhcmxpZXIuCgkodHN1YnN0X2NoYWluKTogUmVtb3ZlLgoJKHRzdWJzdF9lbnVtKTogVXNlIHNldF9jdXJyZW50X2FjY2Vzc19mcm9tX2RlY2wuCgkoc2V0X21hbmdsZWRfbmFtZV9mb3JfdGVtcGxhdGVfZGVjbCk6IEZpeCBpbmRlbnRhdGlvbi4KCSogc2VhcmNoLmMgKGxvb2t1cF9mbmZpZWxkc18xKTogQ2hhbmdlIGl0ZXJhdGlvbiB0aHJvdWdoCglDTEFTU1RZUEVfTUVUSE9EX1ZFQy4KCShkZnNfcHVzaGRlY2xzKTogTGlrZXdpc2UuCgkoZGZzX2NvbXByZXNzX2RlY2xzKTogTGlrZXdpc2UuCgkoYWRkX2NvbnZlcnNpb25zKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfY2xhc3NfZGVmaW5pdGlvbik6IERvbid0IHRha2UgY29tcG9uZW50cy4KCUNoYW5nZSBjYWxsIHRvIGZpbmlzaF9zdHJ1Y3QuCgkoZmluaXNoX21lbWJlcl9kZWNsYXJhdGlvbik6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfbWVtYmVyX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgdGFrZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJQ2hhbmdlIGNhbGwgdG8gZ3Jva194X2NvbXBvbmVudHMuICBDYWxsIGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbC4KCShjaGVja19tdWx0aXBsZV9kZWNsYXJhdG9ycyk6IE5ldyBmdW5jdGlvbi4KCSogc2lnLmMgKGFwcGVuZF9zaWduYXR1cmVfZmllbGRzKTogV29yayBmcm9tIHRoZSBUWVBFX01FVEhPRFMsIG5vdAoJYSBwYXNzZWQgaW4gZmllbGRsaXN0LgoJKiB0cmVlLmMgKHNlYXJjaF90cmVlKTogSGFuZGxlIFBUUk1FTV9DU1QuCgkobWFwY2FyKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jICh1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IEJ1aWxkIFBUUk1FTV9DU1RzLCBub3QKCUlOVEVHRVJfQ1NUcywgZm9yIHBvaW50ZXItdG8tZGF0YSBtZW1iZXJzLgoKCSogY2FsbC5jIChyZXNvbHZlX2FyZ3MpOiBSZXNvbHZlIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucywgaWYKCXBvc3NpYmxlLgoKVHVlIE9jdCAgNiAwNzo1NzoyNiAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoc3Bldy5vKTogRGVwZW5kIG9uIHRvcGxldi5oLgoKCSogY2FsbC5jIChjb21wYXJlX2ljcyk6IEluaXRpYWxpemUgdmFyaWFibGVzIGBkZXJlZl9mcm9tX3R5cGUyJywKCWBkZXJlZl90b190eXBlMScgYW5kIGBkZXJlZl90b190eXBlMicuCgoJKiBleGNlcHQuYyAoZ2V0X2VoX3R5cGUpOiBIaWRlIHByb3RvdHlwZSBhbmQgZGVmaW5pdGlvbi4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrX29sZCk6IFJlbW92ZSB1bnVzZWQgc3RhdGljIHByb3RvdHlwZS4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgYXJndmVjJy4KCgkqIHNwZXcuYzogSW5jbHVkZSB0b3BsZXYuaC4KCjE5OTgtMTAtMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBEbyBzYXZlIGFuZCByZXN0b3JlIGZpbGUgcG9zaXRpb24uCgoxOTk4LTEwLTA1ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogbWV0aG9kLmMgKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IENsZWFyCgludW1lcmljX291dHB1dF9uZWVkX2JhciBhZnRlciBfXy4KCjE5OTgtMTAtMDUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IElzc3VlICdpbmNvbXBsZXRlIHR5cGUnIGVycm9yLAoJaWYgY2xhc3MgaXMgbm90IGRlZmluZWQuCgoxOTk4LTEwLTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxsLmMgKGJ1aWxkX29iamVjdF9jYWxsKTogTW92ZSBkZWNsYXJhdGlvbiBvZiB2YXJpYWJsZQoJYGZuJyBpbnRvIHRoZSBzY29wZSB3aGVyZSBpdCBpcyB1c2VkLiAgRG9uJ3QgYWNjZXNzIHZhcmlhYmxlCglgZm4nIHdoZW4gaXQgaXMgdW5pbml0aWFsaXplZCwgaW5zdGVhZCB1c2UgYGZucycuCgoxOTk4LTEwLTA0ICBUaGVvZG9yZSBQYXBhZG9wb3VsbyAgPFRoZW9kb3JlLlBhcGFkb3BvdWxvQHNvcGhpYS5pbnJpYS5mcj4KCgkqIGVycmZuLmMgKGNwX3RoaW5nKTogUHJpbnQgYnVmIGFzIGEgc3RyaW5nIG5vdCBhcyBhIHByaW50ZiBmb3JtYXQKCXRvIGF2b2lkIHByb2JsZW1zIHdpdGggdGhlIG9wZXJhdG9yJS4gIENvbnNlcXVlbnRseSwgYCUlJyBzZXF1ZW5jZXMKCWluIGZvcm1hdCBhcmUgY29waWVkIGFzIGAlJyBpbiBidWYuCgoxOTk4LTEwLTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChwb3BfdGluc3RfbGV2ZWwpOiBDYWxsIGV4dHJhY3RfaW50ZXJmYWNlX2luZm8uCgkoaW5zdGFudGlhdGVfZGVjbCk6IERvbid0IHNhdmUgYW5kIHJlc3RvcmUgZmlsZSBwb3NpdGlvbi4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBNYWtlIHN0YXRpY3MgaW4gZXh0ZXJuIGlubGluZXMgYW5kCgl0ZW1wbGF0ZXMgY29tbW9uLCBpZiBwb3NzaWJsZSBhbmQgdGhlIHRhcmdldCBkb2Vzbid0IHN1cHBvcnQgd2VhawoJc3ltYm9scy4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgcmVkdW5kYW50IGNhbGxzIHRvCglidWlsZF90eXBlX3ZhcmlhbnQgYW5kIHNvbWUgZHVwbGljYXRlZCBjb2RlLgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3JlZmVyZW5jZV90eXBlKTogT25seSB0YWtlIHRoZSB0eXBlIHBhcm0uCgkoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfdHlwZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX21ldGhvZF90eXBlKTogQWRqdXN0LgoJKiBjcC10cmVlLmg6IFVwZGF0ZS4KCjE5OTgtMTAtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IE1ha2UgcGVkd2FybnMgYWJvdXQgZHJvcHBlZCBxdWFsaWZpZXJzCglpbnRvIGZ1bGwtZmxlZGdlZCBlcnJvcnMuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IExpa2V3aXNlLgoKCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfdnRhYmxlcyk6IEluIGFkZGl0aW9uIHRvIHVuc2V0dGluZwoJVFJFRV9SRUFET05MWSwgcmVtb3ZlIHRvcC1sZXZlbCBjb25zdCB0eXBlIHF1YWxpZmllci4KCjE5OTgtMTAtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChjdXJyZW50X2NsYXNzX3B0ciwgY3VycmVudF9jbGFzc19yZWYpOiBDbGFyaWZ5Cglkb2N1bWVudGF0aW9uLgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBEb24ndCBleHBlY3QgZm9sZCB0byByZW1vdmUgYWxsIHRyaXZpYWwKCU5PUCB0eXBlIGNvbnZlcnNpb25zLgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogVXNlIGNvbXB0eXBlcyBkaXJlY3RseTsgaWdub3JlCglxdWFsaWZpZXJzIG9uIHRoZSBERUNMLgoJKGR1cGxpY2F0ZV9kZWNscyk6IFJlbW92ZSBxdWFsaWZpZXIgY2hlY2tzIG9uIERFQ0wuCgkoZ3Jva2RlY2xhcmF0b3IpOiBNYWtlIHRoZSB0eXBlIGJ1aWx0IHVwIGluY2x1ZGUgdG9wLWxldmVsCglxdWFsaWZpZXJzLgoJKiBkZWNsMi5jIChkb19kdG9ycyk6IEZpeCBzcGVsbGluZyBlcnJvci4KCSogZXJyb3IuYyAoZHVtcF9zaW1wbGVfZGVjbCk6IERvbid0IGxvb2sgYXQgcXVhbGlmaWVycyBvbiB0aGUgZGVjbAoJd2hlbiBwcmludGluZyB0eXBlIGluZm9ybWF0aW9uLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogQWRkIGRvY3VtZW50YXRpb24uICBEZWFsIHdpdGggdGhlIGZhY3QKCXRoYXQgdHlwZSBvZiBhbGxvY2F0ZWQgbWVtb3J5IG5vdyBjb250YWlucyBxdWFsaWZpZXJzLgoJKiBsZXguYyAoaXNfZ2xvYmFsKTogSW1wcm92ZSBlcnJvci1yZWNvdmVyeS4KCSogc2lnLmMgKGJ1aWxkX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyKTogRG9uJ3QgY2FzdCBhd2F5IGNvbnN0CglvbiBmaWVsZHMgb2Ygc2lndGFibGVfZW50cnlfdHlwZS4KCSogdHJlZS5jIChsdmFsdWVfdHlwZSk6IERvbid0IGxvb2sgYXQgdG9wLWxldmVsIHF1YWxpZmllcnMgb24KCWV4cHJlc3Npb25zLgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBNYWtlIHN1cmUgdGhlIHR5cGUgb2YgdGhlIENPTVBPTkVOVF9SRUYKCWNvbnRhaW5zIHRvcC1sZXZlbCBxdWFsaWZpZXJzLCBhcyBhcHByb3ByaWF0ZS4gIEltcHJvdmUKCWVycm9yLWhhbmRsaW5nLgoJKGJ1aWxkX2luZGlyZWN0X3JlZik6IFNpbXBsaWZ5LiAgRG9uJ3Qgc3RyaXAgdG9wLWxldmVsIHF1YWxpZmllcnMuCgkoYnVpbGRfYXJyYXlfcmVmKTogTGlrZXdpc2UuCgkoYnVpbGRfdW5hcnlfb3ApOiBJbXByb3ZlIGVycm9yLXJlY292ZXJ5LgoJKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogTWFrZSB0YWtpbmcgdGhlIGFkZHJlc3MgYSBib3VuZCBtZW1iZXIKCWZ1bmN0aW9uIGFuIGVycm9yLCBub3QgYSBzb3JyeS4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogTG9vayBhdCB0aGUgdHlwZSBxdWFsaWZpZXJzLCBub3QgdGhlCglxdWFsaWZpZXJzIG9uIHRoZSBleHByZXNzaW9uIGl0c2VsZi4KCjE5OTgtMTAtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKG1lcmdlX2Z1bmN0aW9ucyk6IFJlbW92ZSBkdXBsaWNhdGVzLgoKCSogZGVjbDIuYzogQWRkIC1me25vLSx9aW1wbGljaXQtaW5saW5lLXRlbXBsYXRlcy4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBDaGVjayBpdC4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IFRlbXBsYXRlIHBhcm1zIGFsc28gdGFrZSBwcmVjZWRlbmNlCglvdmVyIGltcGxpY2l0IHR5cGVuYW1lLiAgT25seSB3YXJuIGlmIHl5bGV4LgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBPbmx5IGZvbGQgaWYgaWZleHAgaXMgYW4KCUlOVEVHRVJfQ1NULgoKCSogZGVjbDIuYyAoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogQ2hlY2sgREVDTF9JTlRFUkZBQ0VfS05PV04KCWluc3RlYWQgb2YgbGlua2FnZS4KCjE5OTgtMTAtMDEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoRk9STUFUX1ZCQVNFX05BTUUpOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKGJ1aWxkX3ZiYXNlX3BvaW50ZXIpOiBVc2UgaXQuCgkqIHJ0dGkuYyAoZXhwYW5kX2NsYXNzX2Rlc2MpOiBMaWtld2lzZS4KCSogdHJlZS5jIChidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IExpa2V3aXNlLgoKVGh1IE9jdCAgMSAxMDo0Mzo0NSAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogQWRkIGludm9jYXRpb24gb2YKCVNFVF9ERUZBVUxUX0RFQ0xfQVRUUklCVVRFUywgaWYgZGVmaW5lZC4KCShzdGFydF9mdW5jdGlvbik6IEFkZCBpbnZvY2F0aW9uIG9mCglTRVRfREVGQVVMVF9ERUNMX0FUVFJJQlVURVMsIGlmIGRlZmluZWQuCgoJKiBsZXguYzogUmVwbGFjZSBvY2N1cnJlbmNlcyBvZiBIQU5ETEVfU1lTVl9QUkFHTUEgd2l0aAoJSEFORExFX0dFTkVSSUNfUFJBR01BUy4KCjE5OTgtMDktMjggIEFudGhvbnkgR3JlZW4gIDxncmVlbkBjeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IEFsd2F5cyBwZXJtaXQgdm9sYXRpbGUgYXNtcy4KCjE5OTgtMDktMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVGlnaHRlbiBjaGVja3MgZm9yIGludmFsaWQKCWRlc3RydWN0b3JzLiAgSW1wcm92ZSBlcnJvci1tZXNzYWdlcyBhbmQgZXJyb3ItcmVjb3ZlcnkuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBEb24ndCBhc3N1bWUgdGhhdCBtYW5nbGVkIGRlc3RydWN0b3IKCW5hbWVzIGNvbnRhaW4gdHlwZSBpbmZvcm1hdGlvbi4KCjE5OTgtMDktMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChnZXRfYmFzZV9kaXN0YW5jZSk6IFJlbW92ZSBhc3NlcnQuCgoJKiBkZWNsMi5jIChidWlsZF9hbm9uX3VuaW9uX3ZhcnMpOiBEb24ndCBwcm9jZXNzIGEgZmllbGQgd2l0aCBubwoJbmFtZS4KCShmaW5pc2hfYW5vbl91bmlvbik6IEFsc28gY29tcGxhaW4gYWJvdXQgbG9jYWwgYW5vbiB1bmlvbnMgd2l0aCBubwoJbWVtYmVycy4KCjE5OTgtMDktMjUgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IElmIHRoZSBuYW1lIGlzIGEgbmFtZXNwYWNlLAoJcmV0dXJuIGl0IGltbWVkaWF0ZWx5LgoKRnJpIFNlcCAyNSAxMTo0NTozOCAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC10cmVlLmggKGRlZmluZV9jYXNlX2xhYmVsKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIuCgkoY2hlY2tfamF2YV9tZXRob2QpOiBMaWtld2lzZS4KCShncm9rY2xhc3Nmbik6IExpa2V3aXNlLgoJKGV4cGFuZF9hZ2dyX2luaXQpOiBMaWtld2lzZS4KCShidWlsZF94X2RlbGV0ZSk6IExpa2V3aXNlLgoJKG1heWJlX2VuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKHVuc2hhcmVfYmFzZV9iaW5mb3MpOiBBZGQgcHJvdG90eXBlLgoJKHN0cmluZ19jb252X3ApOiBMaWtld2lzZS4KCShteV9mcmllbmRseV9hYm9ydCk6IE1hcmsgd2l0aCBBVFRSSUJVVEVfTk9SRVRVUk4uCgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIKCWBjaGVja2NvbnN0JywgYWxsIGNhbGxlcnMgY2hhbmdlZC4KCShidWlsZF90eXBlX2NvbnZlcnNpb24pOiBNYXJrIHBhcmFtZXRlciBgY29kZScgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShidWlsZF9leHByX3R5cGVfY29udmVyc2lvbik6IEluaXRpYWxpemUgdmFyaWFibGUgYGNvbnYnLgoKCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IEluaXRpYWxpemUgdmFyaWFibGUgYGQnLgoJKGRlZmluZV9jYXNlX2xhYmVsKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIgYGRlY2wnLCBhbGwgY2FsbGVycwoJY2hhbmdlZC4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IElmICFVU0VfQ1BQTElCLCBtYXJrIHBhcmFtZXRlcgoJYGFyZ2MnIHdpdGggQVRUUklCVVRFX1VOVVNFRC4KCShncm9rY2xhc3Nmbik6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyIGBjbmFtZScsIGFsbCBjYWxsZXJzCgljaGFuZ2VkLgoJKGNoZWNrX2phdmFfbWV0aG9kKTogTGlrZXdpc2UgZm9yIHBhcmFtZXRlciBgY3R5cGUnLgoJKGNvcHlfYXNzaWdubWVudF9hcmdfcCk6IE1hcmsgcGFyYW1ldGVyIGB2aXJ0dWFscCcgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBMaWtld2lzZSBmb3IgcGFyYW1ldGVyIGBwcmV2Jy4KCgkqIGV4cHIuYyAoZXh0cmFjdF9pbml0KTogTGlrZXdpc2UgZm9yIHBhcmFtZXRlcnMgYGRlY2wnIGFuZCBgaW5pdCcuCgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyCglgYWxpYXNfdGhpcycsIGFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoZXhwYW5kX2FnZ3JfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9kZWZhdWx0X2luaXQpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfMSk6IEluaXRpYWxpemUgdmFyaWFibGUgYHN1c3AnLgoJKGJ1aWxkX3hfZGVsZXRlKTogUmVtb3ZlIHVudXNlZCBwYXJhbWV0ZXIgYHR5cGUnLCBhbGwgY2FsbGVycwoJY2hhbmdlZC4KCgkqIGxleC5jIChzZXRfdHlwZWRlY2xfaW50ZXJmYWNlX2luZm8pOiBNYXJrIHBhcmFtZXRlciBgcHJldicgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShyZWFkZXNjYXBlKTogVXNlICh1bnNpZ25lZCkgdmFsdWUgaW4gc2hpZnQuCgkocmVhbF95eWxleCk6IExpa2V3aXNlLiAgTGlrZXdpc2UuICBBbHNvIGNhc3QgYHNpemVvZicgdG8gaW50IHdoZW4KCWNvbXBhcmluZyB0byBhIHNpZ25lZCBxdWFudGl0eS4KCgkqIHB0LmMgKG1heWJlX2VuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IFJlbW92ZSB1bnVzZWQKCXBhcmFtZXRlciBgZGVjbCcsIGFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBBZGQgYnJhY2VzIGFyb3VuZCBlbXB0eSBib2R5IGluCglhbiBlbHNlLXN0YXRlbWVudC4KCShjdXJyZW50X3RlbXBsYXRlX2FyZ3MpOiBJbml0aWFsaXplIHZhcmlhYmxlIGBhcmdzJy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZSBmb3IgdmFyaWFibGUgYHByZXZfbG9jYWxfZW51bScuCgkodHN1YnN0X2RlY2wpOiBMaWtld2lzZSBmb3IgdmFyaWFibGUgYHInLgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOiBJbml0aWFsaXplIHZhcmlhYmxlCglgY29udGV4dCcuCgoJKiBzcGV3LmMgKHNjYW5fdG9rZW5zKTogQ2hhbmdlIHR5cGUgb2YgcGFyYW1ldGVyIGBuJyB0byB1bnNpZ25lZC4KCUxpa2V3aXNlIGZvciB2YXJpYWJsZSBgaScuCgkoeXlsZXgpOiBJbml0aWFsaXplIHZhcmlhYmxlIGB0cnJyJy4KCgkqIHR5cGVjay5jIChjb21wcGFybXMpOiBNYXJrIHZhcmlhYmxlIGBzdHJpY3QnIHdpdGgKCUFUVFJJQlVURV9VTlVTRUQuCgoJKiB4cmVmLmMgKHNpbXBsaWZ5X3R5cGUpOiBDYXN0IGFyZ3VtZW50IG9mIGN0eXBlIGZ1bmN0aW9uIHRvCglgdW5zaWduZWQgY2hhcicuCgoxOTk4LTA5LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY3AtdHJlZS5oIChsYW5ndWFnZV9sdmFsdWVfdmFsaWQpOiBSZW1vdmUuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBkaXNhbGxvdyByZWZlcmVuY2VzIHRvIGZ1bmN0aW9ucy4KCSogdHJlZS5jIChsdmFsdWVfcF8xKTogTmV3IGZ1bmN0aW9uLCBjb21iaW5pbmcgZHVwbGljYXRlZAoJY29kZSBmcm9tIC4uLgoJKGx2YWx1ZV9wKTogVXNlIGl0LgoJKHJlYWxfbHZhbHVlX3ApOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGxhbmd1YWdlX2x2YWx1ZV92YWxpZCk6IFJlbW92ZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IFRyZWF0IEZVTkNUSU9OX1RZUEVzIGFzIHJlYWRvbmx5LCBldmVuIHRob3VnaAoJdGhleSBkb24ndCBoYXZlIFRSRUVfUkVBRE9OTFkgc2V0LgoJKiB0eXBlY2syLmMgKHJlYWRvbmx5X2Vycm9yKTogQWRkIGNhc2UgZm9yIEZVTkNUSU9OX0RFQ0xzLgoKMTk5OC0wOS0yNCAgQmVuamFtaW4gS29zbmlrICA8YmtvekBsb29ueS5jeWdudXMuY29tPgoKCSogc3Bldy5jICh5eWxleCk6IEdpdmUgZGlhZ25vc3RpYy4KCSogaGFzaC5oIChpc19yZXNlcnZlZF93b3JkKTogQWRkIGV4cG9ydC4KCSogZ3h4LmdwZXJmOiBMaWtld2lzZS4KCSogbGV4LmggKHJpZCk6IEFkZCBSSURfRVhQT1JULgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IExpa2V3aXNlLgoKVHVlIFNlcCAyMiAyMTowMToxOSAxOTk4ICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogTWFrZSB3YXJuaW5nIGEgZnVsbCBzZW50ZW5jZS4KCjE5OTgtMDktMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwYXJzZS55IChjb21wb25lbnRfZGVjbF9saXN0KTogSW1wcm92ZSBlcnJvci1yZWNvdmVyeS4KCjE5OTgtMDktMjIgIEJlbmphbWluIEtvc25payAgPGJrb3pAbG9vbnkuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogTW92ZSBlcnJvciB0byBwb2ludCB3aGVyZSBuYW1lCgl2YXJpYWJsZSBjYW4gYmUgdXNlZCBieSBkdW1wX3R5cGUuCgoxOTk4LTA5LTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogSW1wcm92ZSBlcnJvci1yZWNvdmVyeS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgkqIHB0LmMgKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IExpa2V3aXNlLgoKMTk5OC0wOS0yMCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBGaW5kaW5nIG11bHRpcGxlIG1lbWJlcnMgaXMgYWx3YXlzCglhbiBlcnJvci4KCjE5OTgtMDktMjEgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChjKystZmlsdCk6ICBMaW5rIGxpYmliZXJ0eS5hIGFmdGVyIGN4eG1haW4uby4KCk1vbiBTZXAgMjEgMDE6NTM6MDUgMTk5OCAgRmVsaXggTGVlICA8ZmxlZUBjeWdudXMuY29tPgoKCSogbGV4LmMgKGluaXRfbGV4KTogVXNlIGdldGVudiAoIkxBTkciKSwgbm90IEdFVF9FTlZJUk9OTUVOVCAoKS4KCjE5OTgtMDktMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChtYXliZV93YXJuX2Fib3V0X292ZXJseV9wcml2YXRlX2NsYXNzKTogUmVmb3JtYXQuCgoxOTk4LTA5LTE3ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBleGNlcHRpb24uY2MgKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogUmVhbGlnbiBzb21lIGNvZGUuCgoxOTk4LTA5LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogTWFrZS1sYW5nLmluICh0aW5mby5vKTogVXNlIENYWEZMQUdTIHdoZW4gY29tcGlsaW5nLgoJKHRpbmZvMi5vKTogTGlrZXdpc2UuCgkoZXhjZXB0aW9uLm8pOiBMaWtld2lzZS4KCShuZXcubyk6IExpa2V3aXNlLgoJKG9wbmV3Lm8pOiBMaWtld2lzZS4KCShvcG5ld250Lm8pOiBMaWtld2lzZS4KCShvcHZuZXcubyk6IExpa2V3aXNlLgoJKG9wdm5ld250Lm8pOiBMaWtld2lzZS4KCShvcGRlbC5vKTogTGlrZXdpc2UuCgkob3BkZWxudC5vKTogTGlrZXdpc2UuCgkob3B2ZGVsLm8pOiBMaWtld2lzZS4KCShvcHZkZWxudC5vKTogTGlrZXdpc2UuCgoxOTk4LTA5LTE2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEtpbGwgX19idWlsdGluX2ZwIGFuZCBfX2J1aWx0aW5fc3AuCgoxOTk4LTA5LTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIGNhbGwuYyAoYnVpbGRfZmllbGRfY2FsbCk6IEhhbmRsZSBzdGF0aWMgZGF0YSBtZW1iZXJzIHRvby4KCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBXaGVuIGNvbXBhcmluZyBwb2ludGVyIHR5cGVzLCBjaGVjawoJd2hldGhlciByZWZlcnJlZCB0eXBlcyBtYXRjaCBldmVuIGluIHN0cmljdGVzdCBtb2Rlcy4KCjE5OTgtMDktMTUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmg6IFJldmVydCBwcmV2aW91cyBjaGFuZ2UuCgkoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBjbGFzcy5jOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoJKG1heWJlX3dhcm5fYWJvdXRfb3Zlcmx5X3ByaXZhdGVfY2xhc3MpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogRGVjbGFyZSBoZXJlLCBhbmQgbWFrZSBzdGF0aWMuICBSZW1vdmUKCXVubmVjZXNzYXJ5IHBhcmFtZXRlcnMuICBUaWR5IHNsaWdodGx5LiAgVXNlCgltYXliZV93YXJuX2Fib3V0X292ZXJseV9wcml2YXRlX2NsYXNzLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IEFkanVzdC4gIFJlbW92ZSBjaGVjayBmb3IgcHJpdmF0ZSBjb25zdHJ1Y3RvcnMsCglub3cgZG9uZSBlbHNld2hlcmUuCgkoZmluaXNoX3N0cnVjdCk6IEFkanVzdC4KCjE5OTgtMDktMTUgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBObyBuZWVkIHRvIGNoZWNrIGZvciBuZXcKCWV4Y2VwdGlvbiBtb2RlbC4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrX29sZCk6IERlbGV0ZWQuCgkocHJvY2Vzc19zdGFydF9jYXRjaF9ibG9jayk6IEFkZCBjYWxsIHRvIHN0YXJ0X2RlY2xfMSgpLgoJKGV4cGFuZF9lbmRfY2F0Y2hfYmxvY2spOiBBZGQgY2FsbCB0byBlbmRfY2F0Y2hfaGFuZGxlcigpLgoJKiBleGNlcHRpb24uY2MgKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogT25seSBjaGVjayB0aGUgZXhjZXB0aW9uCglsYW5ndWFnZSBpZiB0aGVyZSBpcyBhbiBleGNlcHRpb24gdGFibGUuCgoxOTk4LTA5LTE1ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoZXhwYW5kX2luZGlyZWN0X3Z0YmxzX2luaXQpOiBNYXJrIHRlbXBvcmFyeSBzdGFjayBzbG90cwoJYXMgdXNlZCB0byBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIHZpcnR1YWwgZnVuY3Rpb24gdGFibGVzLgoKMTk5OC0wOS0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAobGFuZ190eXBlKTogQWRkIGhhc19ub25fcHJpdmF0ZV9zdGF0aWNfbWVtX2ZuLgoJKENMQVNTVFlQRV9IQVNfTk9OX1BSSVZBVEVfU1RBVElDX01FTV9GTik6IE5ldyBtYWNybywgdG8gYWNjZXNzIGl0LgoJKiBjbGFzcy5jIChtYXliZV9jbGFzc190b29fcHJpdmF0ZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IFVzZSBpdC4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0KTogU2V0IENMQVNTVFlQRV9IQVNfTk9OX1BSSVZBVEVfU1RBVElDX01FTV9GTiBpZgoJYXBwcm9wcmlhdGUuCgoJKiBwdC5jIChjaGVja19zcGVjaWFsaXphdGlvbl9zY29wZSk6IEZpeCBzcGVsbGluZyBlcnJvci4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFJlbW92ZSBjb2RlIHRvIGhhbmRsZSBleHBsaWNpdAoJc3BlY2lhbGl6YXRpb25zIGluIGNsYXNzIHNjb3BlOyB0aGV5IGFyZSBub3cgY29ycmVjdGx5IGRpYWdub3NlZAoJYXMgZXJyb3JzLgoKMTk5OC0wOS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBEb24ndCBjb3B5IHR5cGVzIGlmIHRoZQoJREVDTF9BQlNUUkFDVF9PUklHSU4gb2YgdGhlIG5ldyBkZWNsIG1hdGNoZXMgdGhlIFRZUEVfTkFNRSBvZiB0aGUKCXR5cGUuCgoxOTk4LTA5LTA5ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi1mcy51c2MuZWR1PgoKCSogY2xhc3MuYyAoZ2V0X2VuY2xvc2luZ19jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShpc19iYXNlX29mX2VuY2xvc2luZ19jbGFzcyk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGdldF9lbmNsb3NpbmdfY2xhc3MpOiBEZWNsYXJlLgoJKGlzX2Jhc2Vfb2ZfZW5jbG9zaW5nX2NsYXNzKTogTGlrZXdpc2UuCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IFVzZSB0aGVtLgoKMTk5OC0wOS0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZysrc3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IENoZWNrIHdoZXRoZXIgTUFUSF9MSUJSQVJZIGlzCgludWxsIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHVzZSBpdC4KCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9yZWFsKTogSGFuZGxlIE5BTUVTUEFDRV9ERUNMLgoJKiBwYXJzZS55IChiYXNlX2NsYXNzLjEpOiBBdm9pZCBjcmFzaCBvbiBlcnJvci4KCjE5OTgtMDktMDggIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IElmIGNvbnRleHQgaXMgYSBuYW1lc3BhY2UsIHRoZSBjb2RlCglpcyBpbiBlcnJvci4KCjE5OTgtMDktMDggIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogcGFyc2UueSAobm9tb2RzX2luaXRkY2wwKTogU2V0IHVwIHRoZSBwYXJzZXIgc3RhY2sgY29ycmVjdGx5LgoKMTk5OC0wOS0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoYW5vbnltb3VzX25hbWVzcGFjZV9uYW1lKTogRGVjbGFyZS4KCSogZGVjbC5jOiBEZWZpbmUgaXQuCgkocHVzaF9uYW1lc3BhY2UpOiBVc2UgYW5vbnltb3VzX25hbWVzcGFjZV9uYW1lLCByYXRoZXIgdGhhbiBsb2NhbAoJc3RhdGljIGFub25fbmFtZS4KCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogSWYgYSBuYW1lc3BhY2UgaXMgbmFtZWQKCWFub255bW91c19uYW1lc3BhY2VfbmFtZSwgY2FsbCBpdCB7YW5vbnltb3VzfS4KCgkqIGRlY2wuYyAoZ3Jva3Bhcm1zKTogRGlzdGluZ3Vpc2ggYmV0d2VlbiByZWZlcmVuY2VzIGFuZCBwb2ludGVycwoJaW4gZXJyb3IgbWVzc2FnZS4KCjE5OTgtMDktMDggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgkgICAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHB0LmMgKHByb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbik6IENvbnNpc3RlbnRseSBhbGxvY2F0ZQoJYW5kIHplcm8gdHBkLnBhcm1zIGJhc2VkIG9uIG50cGFybXMuICBVc2UgdHBkMi5wYXJtcywgbm90Cgl0cGQucGFybXMsIHdoZXJlIGFwcHJvcHJpYXRlLgoKU3VuIFNlcCAgNiAwMDowMDo1MSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoSU5DTFVERVMpOiBVcGRhdGUgYWZ0ZXIgcmVjZW50IHRvcGxldmVsIGdjYwoJcmVvcmdhbml6YXRpb25zLgoKMTk5OC0wOS0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoVElfUEVORElOR19TUEVDSUFMSVpBVElPTl9GTEFHKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogUmVtb3ZlIGhhY2tlcnkgdG8gZGVhbCB3aXRoIGV4cGxpY2l0CglzcGVjaWFsaXphdGlvbnMgaW4gY2xhc3Mgc2NvcGUuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IEltcHJvdmUgZXJyb3ItcmVjb3ZlcnkuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKiBwdC5jIChjaGVja19zcGVjaWFsaXphdGlvbl9zY29wZSk6IE5ldyBmdW5jdGlvbi4KCShiZWdpbl9zcGVjaWFsaXphdGlvbik6IENhbGwgaXQuCgkocHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbQoJcHVzaF90ZW1wbGF0ZV9kZWNsLiAgQ2hlY2sgcGFydGlhbCBzcGVjaWFsaXphdGlvbnMgbW9yZQoJc3RyaW5nZW50bHkuCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogQ2FsbCBpdC4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IERvbid0IGF0dGVtcHQgdG8gaGFuZGxlIGV4cGxpY2l0CglzcGVjaWFsaXphdGlvbnMgaW4gY2xhc3Mgc2NvcGUuCgkodGVtcGxhdGVfcGFybV9kYXRhKTogRG9jdW1lbnQuICBBZGQgY3VycmVudF9hcmcgYW5kCglhcmdfdXNlc190ZW1wbGF0ZV9wYXJtcy4KCShtYXJrX3RlbXBsYXRlX3Bhcm0pOiBTZXQgaXQuCgkodHN1YnN0X2FyZ190eXBlcyk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogVHdlYWsuCgoxOTk4LTA5LTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogaW5jL3R5cGVpbmZvICh0eXBlX2luZm86OnR5cGVfaW5mbyhjb25zdCBjaGFyKikpOiBNYWtlCglgZXhwbGljaXQnLgoKCSogY3AtdHJlZS5oIChoYXNoX3RyZWVfY29uc19zaW1wbGUpOiBOZXcgbWFjcm8uCgkqIHB0LmMgKHRzdWJzdF9hcmdfdHlwZXMpOiBOZXcgZnVuY3Rpb24uICBVc2UgaGFzaF90cmVlX2NvbnMuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogVXNlIG1ha2VfdGVtcF92ZWMsIGluc3RlYWQgb2YKCW1ha2VfdHJlZV92ZWMuICBEb2N1bWVudCB0aGlzIGJlaGF2aW9yLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKHRzdWJzdCwgY2FzZXMgTUVUSE9EX1RZUEUsIEZVTkNUSU9OX1RZUEUpOiBVc2UgdHN1YnN0X2FyZ190eXBlcy4KCVJlbW92ZSBkZWFkIGNvZGUgKGFuZCBhZGQgYXNzZXJ0aW9uIHRvIGNoZWNrIGl0cyBkZWFkbmVzcykuICBGaXgKCWJ1ZyB3LnIudC4gZXhjZXB0aW9uIHNwZWNpZmljYXRpb25zLgoKMTk5OC0wOS0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBBbHdheXMgbWFrZSBhcnRpZmljaWFscyBjb21kYXQuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogTGlrZXdpc2UuCgkqIHB0LmMgKG1hcmtfZGVjbF9pbnN0YW50aWF0ZWQpOiBMaWtld2lzZS4KCjE5OTgtMDktMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGZpbmlzaF9nbG9iYWxseV9xdWFsaWZpZWRfbWVtYmVyX2NhbGxfZXhwcik6CglSZW5hbWUgdG8gLi4uCgkoZmluaXNoX3F1YWxpZmllZF9jYWxsX2V4cHIpLgoJKiBzZW1hbnRpY3MuYzogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHByaW1hcnkpOiBVc2UgaXQuCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBSZW1vdmUgcmVkdW5kYW50IGNvZGUuCgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IENhbGwgY29udmVydF9mcm9tX3JlZmVyZW5jZSB0bwoJaGFuZGxlIG1lbWJlcnMgb2YgcmVmZXJlbmNlIHR5cGUuICBJbXByb3ZlIGVycm9yIHJlY292ZXJ5LgoKMTk5OC0wOS0wMyAgQmVuamFtaW4gS29zbmlrICA8YmtvekBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oOiBEZWNsYXJlIHdhcm5fbm9udGVtcGxhdGVfZnJpZW5kLgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBTZXQuCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLVdub24tdGVtcGxhdGUtZnJpZW5kLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogVXNlIHRvIHRvZ2dsZSBub24tdGVtcGxhdGUgZnVuY3Rpb24gd2FybmluZy4KCjE5OTgtMDktMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGZpbmlzaF9lbnVtKTogRG9uJ3QgcmVzb2x2ZSBDT05TVF9ERUNMcyB0byB0aGVpcgoJY29ycmVzcG9uZGluZyBJTlRFR0VSX0NTVHMgd2hlbiBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wuCgkqIHB0LmMgKHRzdWJzdF9lbnVtKTogVHdlYWsgYWNjb3JkaW5nbHkuCgoxOTk4LTA5LTAzICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hkZWNsX2NsYXNzX2xldmVsKTogQWRkIHdhcm5pbmcgaGVyZS4KCShwdXNoZGVjbCk6IFR3ZWFrLgoKMTk5OC0wOS0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGNvbnZlcnRfcG9pbnRlcl90b19yZWFsKTogVGlkeS4KCSogc2VhcmNoLmMgKGdldF9iYXNlX2Rpc3RhbmNlX3JlY3Vyc2l2ZSk6IFNpbXBsaWZ5LgoJKGdldF9iYXNlX2Rpc3RhbmNlKTogTGlrZXdpc2UuCgoJKiBwdC5jICh1bmlmeSk6IE9ubHkgc3BlY2lhbC1jYXNlIElOVEVHRVJfVFlQRSBpZiBpdCB1c2VzIHRlbXBsYXRlCglwYXJtcy4KCldlZCBTZXAgMDIgMDk6MjU6MjkgMTk5OCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChjaGVja19uZXdsaW5lKTogIENhbGwgSEFORExFX1BSQUdNQSBiZWZvcmUKCUhBTkRMRV9TWVNWX1BSQUdNQSBpZiBib3RoIGFyZSBkZWZpbmVkLiAgR2VuZXJhdGUgd2FybmluZyBtZXNzYWdlcwoJaWYgdW5rbm93biBwcmFnbWFzIGFyZSBlbmNvdW50ZXJlZC4KCShoYW5kbGVfc3lzdl9wcmFnbWEpOiBJbnRlcnByZXQgcmV0dXJuIGNvZGUgZnJvbQoJaGFuZGxlX3ByYWdtYV90b2tlbiAoKS4gIFJldHVybiBzdWNjZXNzL2ZhaWx1cmUgaW5kaWNhdGlvbiByYXRoZXIKCXRoYW4gbmV4dCB1bnByb2Nlc3NlZCBjaGFyYWN0ZXIuCgkocHJhZ21hX2dldGMpOiBOZXcgZnVuY3Rpb246IHJldHJpZXZlcyBjaGFyYWN0ZXJzIGZyb20gdGhlCglpbnB1dCBzdHJlYW0uICBEZWZpbmVkIHdoZW4gSEFORExFX1BSQUdNQSBpcyBkZWZpbmVkLgoJKHByYWdtYV91bmdldGMpOiBOZXcgZnVuY3Rpb246IHJlcGxhY2VzIGNoYXJhY3RlcnMgYmFjayBpbnRvIHRoZQoJaW5wdXQgc3RyZWFtLiAgRGVmaW5lZCB3aGVuIEhBTkRMRV9QUkFHTUEgaXMgZGVmaW5lZC4KCjE5OTgtMDktMDEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKG91dHB1dF92dGFibGVfaW5oZXJpdCk6IFVzZSAlY0RJR0lUIGluIHRoZSBvcGVyYW5kcy4KCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlX2VudHJ5X3JlZik6IExpa2V3aXNlLgoKMTk5OC0wOS0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoREVDTF9GUklFTkRfUFNFVURPX1RFTVBMQVRFX0lOU1RBTlRJQVRJT04pOiBOZXcgbWFjcm8uCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogVXNlIGl0LgoKMTk5OC0wOS0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogQWxzbyBkbyBpbXBsaWNpdCB0eXBlbmFtZSB0aGluZyBmb3IKCWFydGlmaWNpYWwgVFlQRV9ERUNMcy4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IExpa2V3aXNlLgoJKGxvb2t1cF9mbmZpZWxkcywgbG9va3VwX2ZpZWxkKTogQWRqdXN0IGZvciBpbXBsaWNpdCB0eXBlbmFtZSBrbHVkZ2UuCgkqIHNlbWFudGljcy5jIChiZWdpbl9jb25zdHJ1Y3Rvcl9kZWNsYXJhdG9yKTogVXNlIGVudGVyX3Njb3BlX29mLgoJKGVudGVyX3Njb3BlX29mKTogRXh0cmFjdCB0eXBlIGZyb20gaW1wbGljaXQgdHlwZW5hbWUuCgkoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKiBsZXguYyAoaWRlbnRpZmllcl90eXBlKTogSGFuZGxlIGltcGxpY2l0IHR5cGVuYW1lIHdoZW4gY2hlY2tpbmcKCWZvciBTRUxGTkFNRS4KCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBmbGFnX3N0cmljdF9wcm90b3R5cGUuCgkqIGxleC5jIChkb19zY29wZWRfaWQsIGRvX2lkZW50aWZpZXIpOiBEb24ndCBpbXBsaWNpdGx5X2RlY2xhcmUgaWYKCS1mc3RyaWN0LXByb3RvdHlwZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IElmIC1me25vLC19c3RyaWN0LXByb3RvdHlwZSB3YXNuJ3QKCXNwZWNpZmllZCwgc2V0IGl0IHRvIHRoZSB2YWx1ZSBvZiBwZWRhbnRpYy4KCjE5OTgtMDktMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsMi5jIChhcmdfYXNzb2MpOiBIYW5kbGUgdGVtcGxhdGUtaWQgZXhwcmVzc2lvbnMgYXMgYXJndW1lbnRzLgoKMTk5OC0wOC0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZmluaXNoX2VudW0pOiBIYW5kbGUgbWVtYmVyIGVudW1zIG9mIGNsYXNzZXMgZGVjbGFyZWQgaW4KCXRlbXBsYXRlIGZ1bmN0aW9ucy4KCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogU3RyaXAgYXR0cmlidXRlcyBiZWZvcmUgY2FsbGluZwoJZ3Jva3R5cGVuYW1lLgoKMTk5OC0wOC0zMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oLCBkZWNsMi5jOiBSZW1vdmUgc3VwcG9ydCBmb3IgLWZhbGwtdmlydHVhbCwKCS1mZW51bS1pbnQtZXF1aXZhbGVuY2UgYW5kIC1mbm8tbm9ubnVsbC1vYmplY3RzLgoJKiBjbGFzcy5jIChjaGVja19mb3Jfb3ZlcnJpZGUpOiBSZW1vdmUgc3VwcG9ydCBmb3IgLWZhbGwtdmlydHVhbC4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF9uZXdfb3ApOiBSZW1vdmUgc3VwcG9ydCBmb3IgLWZlbnVtLWludC1lcXVpdmFsZW5jZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBMaWtld2lzZS4KCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYnVpbGRfdmZpZWxkX3JlZik6IFJlbW92ZSBzdXBwb3J0IGZvciAtZm5vLW5vbm51bGwtb2JqZWN0cy4KCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcGF0aCk6IExpa2V3aXNlLgoKU3VuIEF1ZyAzMCAyMjoxNjozMSAxOTk4ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBNYWtlZmlsZS5pbiAoSU5URVJGQUNFKTogTmV3LCBzZXQgdG8gMS4KCjE5OTgtMDgtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBVc2UgQ1BfREVDTF9DT05URVhULCBub3QgREVDTF9DT05URVhULCB3aGVuCgljb21wYXJpbmcgd2l0aCBnbG9iYWxfbmFtZXNwYWNlLgoJKGR1bXBfYWdncl90eXBlKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBJc3N1ZSBlcnJvciBvbiBkZWNsYXJhdGlvbiBvZiBmcmllbmQKCXRlbXBsYXRlcyB3aXRoIGV4cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50cy4KCgkqIHB0LmMgKGNvbnZlcnRfdGVtcGxhdGVfYXJndW1lbnQpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dAoJZnJvbS4uLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEhlcmUuCgkodHN1YnN0KTogQXR0ZW1wdCBiZXR0ZXIgZXJyb3ItcmVjb3ZlcnkuCgoxOTk4LTA4LTI4ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGxvb255LmN5Z251cy5jb20+CgoJKiBwdC5jIChkZWNsX3RlbXBsYXRlX3Bhcm1fcCk6IEFkZCBjaGVja3MgZm9yCglURU1QTEFURV9URU1QTEFURV9QQVJNLgoKMTk5OC0wOC0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogRml4IHRoaW5rbyBpbiBwcmV2aW91cyBjaGFuZ2UuCgoxOTk4LTA4LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoZGZzX3NlYXJjaCwgYmluZm9fZm9yX3Z0YWJsZSwgZGZzX2Jmdl9oZWxwZXIpOiBOZXcgZm5zLgoJKiBkZWNsMi5jIChvdXRwdXRfdnRhYmxlX2luaGVyaXQpOiBDYWxsIGJpbmZvX2Zvcl92dGFibGUuCgoxOTk4LTA4LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCUFkZCBzdXBwb3J0IGZvciBkaXNjYXJkaW5nIHVudXNlZCB2aXJ0dWFsIGZ1bmN0aW9ucy4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZnZ0YWJsZS1nYy4KCSogY3AtdHJlZS5oOiBBZGQgZmxhZ192dGFibGVfZ2MuCgkqIGRlY2wyLmMgKG91dHB1dF92dGFibGVfaW5oZXJpdCk6IE5ldyBmbi4KCShmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBDYWxsIGl0LgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnlfcmVmKTogTmV3IGZuLgoJKGJ1aWxkX3Z0YmxfcmVmKTogQ2FsbCBpdC4KCjE5OTgtMDgtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGJ1aWxkX2VudW1lcmF0b3IpOiBUYWtlIHRoZSBlbnVtZXJhdGlvbiB0eXBlIGFzIGEKCXBhcmFtZXRlci4KCSogZGVjbC5jIChmaW5pc2hfZW51bSk6IERvbid0IHNldCB0aGUgVFJFRV9UWVBFIGZvciB0aGUKCWVudW1lcmF0aW9uIGNvbnN0YW50IHZhbHVlcyBpZiB3ZSdyZSBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2xzLgoJRG9uJ3Qgc2V0IHRoZSB0eXBlIGZvciB0aGUgQ09OU1RfREVDTHMgZWl0aGVyOyB0aGF0J3MgZG9uZSBpbgoJYnVpbGRfZW51bWVyYXRvci4KCShidWlsZF9lbnVtZXJhdG9yKTogVGFrZSB0aGUgZW51bWVyYXRpb24gdHlwZSBhcyBhCglwYXJhbWV0ZXIuCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogRG9uJ3QgcmVzb2x2ZSBlbnVtZXJhdGlvbiBjb25zdGFudHMgd2hpbGUKCXByb2Nlc3NpbmcgdGVtcGxhdGUgZGVjbGFyYXRpb25zLCBldmVuIGlmIHRoZXkgaGFwcGVuIHRvIGJlCglURU1QTEFURV9QQVJNX0lOREVYcy4KCgkqIHBhcnNlLnkgKGN1cnJlbnRfZW51bV90eXBlKTogTmV3IHZhcmlhYmxlLgoJKHByaW1hcnkpOiBEb24ndCBhbGxvdyBzdGF0ZW1lbnQtZXhwcmVzc2lvbiBpbiBsb2NhbCBjbGFzc2VzIGp1c3QKCWFzIHdlIGRvbid0IGluIGdsb2JhbCBjbGFzc2VzLgoJKHN0cnVjdHNwKTogVXNlIGN1cnJlbnRfZW51bV90eXBlLgoJKGVudW1fbGlzdCk6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfZW51bSk6IERvbid0IGNoZWNrIGZvciBOT1BfRVhQUnMgaW50cm9kdWNlZCBieQoJZmluaXNoX2VudW07IHRoZXkgbm8gbG9uZ2VyIG9jY3VyLgoKCSogY3AtdHJlZS5oIChmaW5pc2hfYmFzZV9zcGVjaWZpZXIpOiBOZXcgZnVuY3Rpb24uCgkqIHBhcnNlLnkgKGJhc2VfY2xhc3MpOiBVc2UgaXQuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYmFzZV9zcGVjaWZpZXIpOiBEZWZpbmUgaXQuCgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IFdhcm4gb24gdXNlIG9mIHR5cGVuYW1lIG91dHNpZGUgb2YgdGVtcGxhdGUKCWRlY2xhcmF0aW9ucy4KCjE5OTgtMDgtMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jIChoYW5kbGVfY3BfcHJhZ21hKTogUmVtb3ZlICNwcmFnbWEgdnRhYmxlLgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlICtlIG9wdGlvbnMuCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IExpa2V3aXNlLgoJKGltcG9ydF9leHBvcnRfdnRhYmxlKTogRG9uJ3QgY2hlY2sgd3JpdGVfdmlydHVhbHMuCgkoZmluaXNoX3Z0YWJsZV92YXJkZWNsLCBmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoZGZzX2RlYnVnX21hcmspOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlLCBmaW5pc2hfdnRibHMsIGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBDaGVjayBmbGFnX2VsaWRlX2NvbnN0cnVjdG9ycy4KCSogZGVjbDIuYzogZmxhZ19lbGlkZV9jb25zdHJ1Y3RvcnMgZGVmYXVsdHMgdG8gMS4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogUmVtb3ZlIHJldHVybl9sb2MgcGFybS4KCShidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBBZGp1c3QuCgoJKiBzZWFyY2guYzogVGVhciBvdXQgYWxsIG1pX21hdHJpeCBhbmQgbWVtb2l6ZSBjb2RlLgoJKGxvb2t1cF9maWVsZCwgbG9va3VwX2ZuZmllbGRzKTogVXNlIHNjcmF0Y2hfdHJlZV9jb25zLgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlIGRvY3VtZW50YXRpb24gZm9yIC1maGFuZGxlLWV4Y2VwdGlvbnMsCgktZm1lbW9pemUtbG9va3VwcyBhbmQgLWZzYXZlLW1lbW9pemVkLgoJKiBjcC10cmVlLmg6IExvc2UgbWlfbWF0cml4IGFuZCBtZW1vaXplIHN1cHBvcnQuCgkqIGRlY2wyLmM6IElnbm9yZSAtZm1lbW9pemUtbG9va3VwcyBhbmQgLWZzYXZlLW1lbW9pemVkLgoJKiBjbGFzcy5jOiBMb3NlIHN0cnVjdCBjbGFzc19sZXZlbC4KCShwdXNoY2xhc3MsIHBvcGNsYXNzKTogTG9zZSBtZW1vaXplIHN1cHBvcnQuCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IExpa2V3aXNlLgoKCU5ldmVyIGNoYW5nZSBCSU5GT19JTkhFUklUQU5DRV9DSEFJTi4KCSogaW5pdC5jIChlbWl0X2Jhc2VfaW5pdCk6IENoYW5nZSBtb2RpZmljYXRpb24gb2YKCUJJTkZPX0lOSEVSSVRBTkNFX0NIQUlOIHRvIGFuIGFzc2VydC4KCSogc2VhcmNoLmMgKGdldF9iYXNlX2Rpc3RhbmNlX3JlY3Vyc2l2ZSk6IExpa2V3aXNlLgoJKGdldF9iYXNlX2Rpc3RhbmNlKTogTGlrZXdpc2UuCgkobG9va3VwX21lbWJlcik6IExpa2V3aXNlLgoJKGNvbnZlcnRfcG9pbnRlcl90b19zaW5nbGVfbGV2ZWwpOiBMaWtld2lzZS4KCShsb29rdXBfZmllbGQpOiBMaWtld2lzZS4gIExvc2Ugc2V0dGluZyBUUkVFX1ZJQV8qIG9uIFRSRUVfTElTVHMuCgkobG9va3VwX2ZuZmllbGRzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAocHJvcGFnYXRlX2JpbmZvX29mZnNldHMpOiBEb24ndCBjYWxsIHVuc2hhcmVfYmFzZV9iaW5mb3MuCgkodW5zaGFyZV9iYXNlX2JpbmZvcyk6IERvbid0IGNhbGwgcHJvcGFnYXRlX2JpbmZvX29mZnNldHMuCgkobGF5b3V0X2Jhc2V0eXBlcyk6IENhbGwgcHJvcGFnYXRlX2JpbmZvX29mZnNldHMgaW5zdGVhZCBvZgoJdW5zaGFyZV9iYXNlX2JpbmZvcy4KCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IENhbGwgdW5zaGFyZV9iYXNlX2JpbmZvcy4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSogdHJlZS5jIChyZXZlcnNlX3BhdGgpOiBSZW1vdmUgJ2NvcHknIHBhcm07IGFsd2F5cyBtYWtlIGEKCXRlbXBvcmFyeSBjb3B5LgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wYXRoKTogSnVzdCBjYWxsIGl0LgoJKiBzZWFyY2guYyAoY29tcHV0ZV9hY2Nlc3MpOiBMaWtld2lzZS4gIERvbid0IHJlLXJldmVyc2UuCgoxOTk4LTA4LTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcGF0aCk6IFVzZSByZXZlcnNlX3BhdGguCgkoZmluaXNoX2Jhc2Vfc3RydWN0KTogTW92ZSB3YXJuaW5ncyBmb3IgaW5hY2Nlc3NpYmxlIGJhc2VzIHRvCglsYXlvdXRfYmFzZXR5cGVzLgoJKG1vZGlmeV9vbmVfdnRhYmxlKTogUmVtb3ZlIGNoZWNrIG9mIFRSRUVfVVNFRCAoYmluZm8pLgoJKGZpeHVwX3Z0YWJsZV9kZWx0YXMxKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoQklORk9fSU5IRVJJVEFOQ0VfQ0hBSU4pOiBEb2N1bWVudCBoZXJlLgoJKHhyZWZfdGFnKTogUmVtb3ZlIGJpbmZvcyBwYXJhbWV0ZXIuCgkobWFrZV9iaW5mbyk6IFJlbW92ZSBjaGFpbiBwYXJhbWV0ZXIuCgkocmV2ZXJzZV9wYXRoKTogQWRkIGNvcHkgcGFyYW1ldGVyLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2hhbmdlIGNhbGxzIHRvIHhyZWZfdGFnLgoJKHhyZWZfdGFnKTogUmVtb3ZlIGJpbmZvcyBwYXJhbWV0ZXIuCgkoeHJlZl9iYXNldHlwZXMpOiBDaGFuZ2UgY2FsbHMgdG8gbWFrZV9iaW5mby4KCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBDaGFuZ2UgY2FsbHMgdG8geHJlZl90YWcuCgkoaGFuZGxlX2NsYXNzX2hlYWQpOiBMaWtld2lzZS4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IExpa2V3aXNlLgoJKiBsZXguYyAobWFrZV9sYW5nX3R5cGUpOiBDaGFuZ2UgY2FsbHMgdG8gbWFrZV9iaW5mby4KCSogcGFyc2UueSAoc3RydWN0c3ApOiBDaGFuZ2UgY2FsbHMgdG8geHJlZl90YWcuCgkobmFtZWRfY29tcGxleF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGUpOiBMaWtld2lzZS4KCShuYW1lZF9jbGFzc19oZWFkKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGNvbXB1dGVfYWNjZXNzKTogQ2hhbmdlIGNhbGxzIHRvIHJldmVyc2VfcGF0aC4KCShkZnNfZ2V0X3ZiYXNlX3R5cGVzKTogQ2hhbmdlIGNhbGxzIHRvIG1ha2VfYmluZm8uCgkoZ2V0X3ZiYXNlX3R5cGVzKTogUmVtb3ZlIGRlYWQgY29kZS4KCSogdHJlZS5jICh1bnNoYXJlX2Jhc2VfYmluZm9zKTogQ2hhbmdlIGNhbGxzIHRvIG1ha2VfYmluZm8uCgkobGF5b3V0X2Jhc2V0eXBlcyk6IFdhcm4gaGVyZSBhYm91dCBpbmFjY2Vzc2libGUgYmFzZXMuCgkobWFrZV9iaW5mbyk6IFJlbW92ZSBjaGFpbiBwYXJhbWV0ZXIuCgkocmV2ZXJzZV9wYXRoKTogQWRkIGNvcHkgcGFyYW1ldGVyLgoKMTk5OC0wOC0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYzogI2lmIDAgY29tcGxldGVfdHlwZV9wLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmLCBidWlsZF9uZXdfMSk6IFJlbW92ZSB1bnVzZWQgbG9jYWxzLgoJKiBtZXRob2QuYyAocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb21wX3RhcmdldF90eXBlcyk6IExpa2V3aXNlLgoKCVN0b3Agc2hhcmluZyBiaW5mb3MgZm9yIGluZGlyZWN0IHZpcnR1YWwgYmFzZXMuCgkqIHRyZWUuYyAocHJvcGFnYXRlX2JpbmZvX29mZnNldHMpOiBVbnNoYXJlIHZiYXNlcywgdG9vLgoJKGxheW91dF9iYXNldHlwZXMpOiBMaWtld2lzZS4KCSh1bnNoYXJlX2Jhc2VfYmluZm9zKTogQ29weSB2YmFzZXMsIHRvby4KCSogY3AtdHJlZS5oIChCSU5GT19WSUFfUFVCTElDLCBCSU5GT19CQVNFSU5JVF9NQVJLRUQsCglCSU5GT19WQkFTRV9JTklUX01BUktFRCk6IFJlbW92ZSBvYnNvbGV0ZSBtYWNyb3MuCgkoQklORk9fUFVTSERFQ0xTX01BUktFRCwgU0VUX0JJTkZPX1BVU0hERUNMU19NQVJLRUQsCglDTEVBUl9CSU5GT19QVVNIREVDTFNfTUFSS0VEKTogTmV3IG1hY3Jvcy4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCwgbG9va3VwX2ZuZmllbGRzLCBsb29rdXBfbWVtYmVyKTogUmVtb3ZlCglyZWZlcmVuY2UgdG8gQklORk9fVklBX1BVQkxJQy4KCShtYXJrZWRfcHVzaGRlY2xzX3AsIHVubWFya2VkX3B1c2hkZWNsc19wKTogTmV3IGZucy4KCShwdXNoX2NsYXNzX2RlY2xzKTogVXNlIHRoZW0uCgkoZGZzX3B1c2hkZWNscyk6IFVzZSBTRVRfQklORk9fUFVTSERFQ0xTX01BUktFRC4KCShkZnNfY29tcHJlc3NfZGVjbHMpOiBVc2UgQ0xFQVJfQklORk9fUFVTSERFQ0xTX01BUktFRC4KCjE5OTgtMDgtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKGJ1aWxkX2VudW1lcmF0b3IpOiBTZXQgREVDTF9DT05URVhUIGZvciB0aGUKCUNPTlNUX0RFQ0xzLgoKMTk5OC0wOC0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX2VudW0pOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGZpbmlzaF9lbnVtKTogVXNlIFRZUEVfVkFMVUVTLCByYXRoZXIgdGhhbiB0YWtpbmcgYQoJVkFMVUVTIHBhcmFtZXRlci4gIERvbid0IHRyeSB0byBjb21wdXRlIG1pbnMvbWF4cyBpZgoJcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IFVzZSBuZXcgY2FsbGluZyBzZXF1ZW5jZSBmb3IgZmluaXNoX2VudW0uCgkqIHB0LmMgKHRzdWJzdF9lbnVtKTogTGlrZXdpc2UuICBUYWtlIHRoZSBuZXcgdHlwZSBhcyBpbnB1dC4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4gIFR3ZWFrLgoJUmVnaXN0ZXIgZW51bXMgb24gaW5zdGFudGlhdGlvbiBsaXN0IGJlZm9yZSBzdWJzdGl0dXRpbmcKCWVudW1lcmF0aW9uIGNvbnN0YW50cy4KCSh0c3Vic3RfZGVjbCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IG9ibGl0ZXJhdGUgdGhlCglERUNMX1RFTVBMQVRFX0lORk8gZm9yIGEgdGVtcGxhdGUgaWYgd2UncmUgbm90IHJlcGxhY2luZyBpdCB3aXRoCglhbnl0aGluZy4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogRml4IHR5cG8gaW4gY29tbWVudC4KCldlZCBBdWcgMjYgMTA6NTQ6NTEgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZXJyZm4uYzogUmVtb3ZlIHN0ZGFyZy5oL3ZhcmFyZ3MuaC4KCSogdHJlZS5jOiBMaWtld2lzZS4KCjE5OTgtMDgtMjUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfY29weSk6IE9ubHkgZG8gdHlwZW5hbWUgb3ZlcmxvYWRpbmcgb24gYW4KCUlERU5USUZJRVJfTk9ERSB0aGF0IGhhcHBlbnMgdG8gbG9vayBsaWtlIGEgdHlwZW5hbWUgaWYgaXQgYWN0dWFsbHkKCWhhcyBhIHR5cGUgZm9yIHVzIHRvIHVzZS4KCjE5OTgtMDgtMjUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb21wX2N2X3RhcmdldF90eXBlcyk6IFNwbGl0IG91dC4uLgoJKGNvbXBfdGFyZ2V0X3R5cGVzKTogRnJvbSBoZXJlLiAgRG9uJ3QgYWxsb3cgY3YtcXVhbCBjaGFuZ2VzIHVuZGVyCglhIHBvaW50ZXIgaWYgbnB0cnMgPT0gMC4gIEZpeCBPRkZTRVRfVFlQRSBoYW5kbGluZy4KCShidWlsZF9wdHJtZW1mdW5jKTogUGFzcyAxIHRvIG5wdHJzLgoJKiBjdnQuYyAocGVyZm9ybV9xdWFsaWZpY2F0aW9uX2NvbnZlcnNpb25zKTogVXNlIGNvbXBfcHRyX3R0eXBlcy4KCjE5OTgtMDgtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBzZWFyY2guYyAoZGVwZW5kZW50X2Jhc2VfcCk6IERvbid0IGNvbXBhcmUgYSBiaW5mbyB0bwoJY3VycmVudF9jbGFzc190eXBlOyB1c2UgdGhlIFRSRUVfVFlQRSBvZiB0aGUgYmluZm8gaW5zdGVhZC4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NfVFlQRV9QKTogUmV2aXNlIGRlZmluaXRpb24uCgoxOTk4LTA4LTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IGNvbXBsYWluIGFib3V0IGRpZmZlcmVudAoJZXhjZXB0aW9ucyBmcm9tIGFuIGludGVybmFsIGRlY2wgZXZlbiBpZiBwZWRhbnRpYy4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogQ29udmVydGluZyBmcm9tIHBtIG9mIHZiYXNlCgl0byBkZXJpdmVkIGlzIGFuIGVycm9yLCBub3QgYSBzb3JyeS4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogVXNlIGNvbnZlcnRfcG9pbnRlcl90b19yZWFsIGZvciAndGhpcycuCgkqIGNsYXNzLmMgKGZpeGVkX3R5cGVfb3JfbnVsbCk6IFJlbmFtZSBmcm9tCglyZXNvbHZlc190b19maXhlZF90eXBlX3AuICBSZXR1cm4gdGhlIGR5bmFtaWMgdHlwZSBvZiB0aGUKCWV4cHJlc3Npb24sIGlmIGZpeGVkLCBvciBudWxsLgoJKHJlc29sdmVzX3RvX2ZpeGVkX3R5cGVfcCk6IFVzZSBpdC4gIFJldHVybiAwIGlmIHRoZSBkeW5hbWljIHR5cGUKCWRvZXMgbm90IG1hdGNoIHRoZSBzdGF0aWMgdHlwZS4KCShidWlsZF92YmFzZV9wYXRoKTogUmVuYW1lICdhbGlhc190aGlzJyB0byAnbm9ubnVsbCcuICBVc2UKCXJlc29sdmVzX3RvX2ZpeGVkX3R5cGVfcCBhZ2Fpbi4KCjE5OTgtMDgtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IE1vdmUgc3BlY2lhbCBjYXNlIGNvZGUgZm9yIGRlYWxpbmcgd2l0aAoJdHJpY2t5IGZyaWVuZCB0ZW1wbGF0ZXMgaGVyZSBmcm9tIC4uLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogSGVyZS4KCjE5OTgtMDgtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFJlbW92ZSByZWR1bmRhbnQgbGlua2FnZSBjaGVjay4KCjE5OTgtMDgtMjQgIEdhdmluIFJvbWlnLUtvY2ggIDxnYXZpbkBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IEhhbmRsZSB0aGUgY2FzZSB0aGF0IHZhbHR5cGUKCWlzIHdpZGVyIHRoYW4gdGhlIGZ1bmN0aW9ucyByZXR1cm4gdHlwZS4KCjE5OTgtMDgtMjQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKENMQVNTX1RZUEVfUCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBpdCBpbnN0ZWFkIG9mIElTX0FHR1JfVFlQRS4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogVW5kbyBwcmV2aW91cyBjaGFuZ2UuCgoxOTk4LTA4LTI0ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmg6IERlY2xhcmUuCgkqIHB0LmMgKGRlY2xfdGVtcGxhdGVfcGFybV9wKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogQ2hlY2sgZGVjbHMgZm9yIHJlZGVjbGFyaW5nIHRlbXBsYXRlIHBhcm1zLgoJKHhyZWZfdGFnKTogTWFrZSByZWRlY2xhcmF0aW9uIGFuIGVycm9yLCBwcmludCBkZWNsLgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBDaGVjayBmaWVsZF9kZWNscyBmb3IgcmVkZWNsYXJhdGlvbiBhcyB3ZWxsLgoKMTk5OC0wOC0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAocHJpbWFyeSk6IEZpeCB1cCB0aGUgdHlwZSBvZiBzdHJpbmcgY29uc3RhbnRzLgoKMTk5OC0wOC0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IE1vdmUgY2hlY2sgZm9yIG9kZCB1c2VzCglvZiBOVUxMIHRvIGF2b2lkIGR1cGxpY2F0ZSB3YXJuaW5ncy4KCjE5OTgtMDgtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAobHZhbHVlX3R5cGUpOiBGaXggZm9yIGFycmF5cy4KCSogdHlwZWNrLmMgKHN0cmluZ19jb252X3ApOiBOZXcgZm4uCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IFVzZSBpdC4KCShidWlsZF91bmFyeV9vcCk6IFVzZSBsdmFsdWVfdHlwZS4KCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uLCBjb252ZXJ0X2xpa2UpOiBVc2Ugc3RyaW5nX2NvbnZfcC4KCShhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogVXNlIGx2YWx1ZV90eXBlLgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogSWdub3JlIC10cmFkaXRpb25hbC4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IGZsYWdfd3JpdGFibGVfc3RyaW5ncyBpbmhpYml0cwoJZmxhZ19jb25zdF9zdHJpbmdzLgoKMTk5OC0wOC0yNCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogbGFuZy1vcHRpb25zLmggKGxhbmdfb3B0aW9ucyk6IEFkZCBmY29uc3Qtc3RyaW5ncyB0byB0aGUgbGlzdAoJb2YgdmFsaWQgb3B0aW9ucy4KCSogZGVjbDIuYyAobGFuZ19mX29wdGlvbnMsIGxhbmdfZGVjb2RlX29wdGlvbik6IExpa2V3aXNlLgoKMTk5OC0wOC0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIGxleC5jIChyZWFsX3l5bGV4KTogRG9uJ3Qgd2FybiBhYm91dCBsb25nIGxvbmcgY29uc3RhbnRzIGlmCgl3ZSdyZSBhbGxvd2luZyBsb25nIGxvbmcuCgoxOTk4LTA4LTI0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChwdXNoZGVjbCk6IFVzZSBJREVOVElGSUVSX05BTUVTUEFDRV9WQUxVRSBpbnN0ZWFkIG9mCglhY2Nlc3NpbmcgYmluZGluZ3MgZGlyZWN0bHkuCgoJKiBzZWFyY2guYyAobXlfdHJlZV9jb25zKTogUmVpbXBsZW1lbnQuCgoJKiBsYW5nLXNwZWNzLmg6IFJlbW92ZSBfX0hPTk9SX1NURC4KCSogaW5jL2V4Y2VwdGlvbiwgaW5jL25ldywgaW5jL25ldy5oLCBpbmMvdHlwZWluZm86IExpa2V3aXNlLgoKMTk5OC0wOC0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDb21wbGFpbiBhYm91dCBpbi1jbGFzcyBpbml0aWFsaXphdGlvbgoJb2YgYWdncmVnYXRlcyBhbmQvb3IgcmVmZXJlbmNlcy4KCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogQ2xlYXIgSVNfQUdHUl9UWVBFIGZvcgoJVEVNUExBVEVfVFlQRV9QQVJNcy4KCgkqIGRlY2wyLmMgKGdyb2tfYXJyYXlfZGVjbCk6IEFkZCBjb21tZW50LgoJKG1hcmtfdXNlZCk6IERvbid0IGluc3RhbnRpYXRlIGFuIGV4cGxpY2l0IGluc3RhbnRpYXRpb24uCgkqIGZyaWVuZC5jIChtYWtlX2ZyaWVuZF9jbGFzcyk6IFJlbW92ZSBib2d1cyBjb21tZW50LiAgRml4IGNoZWNrCglmb3IgcGFydGlhbCBzcGVjaWFsaXphdGlvbnMuCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRG9uJ3QKCVNFVF9ERUNMX0VYUExJQ0lUX0lOU1RBTlRJQVRJT04gaGVyZS4KCShtYXJrX2RlY2xfaW5zdGFudGlhdGVkKTogT3IgaGVyZS4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBEbyBpdCBoZXJlLCBpbnN0ZWFkLiAgQWRkIGNoZWNrcyBmb3IKCWR1cGxpY2F0ZSBleHBsaWNpdCBpbnN0YW50aWF0aW9ucywgZXRjLiAgVGlkeS4KCShkb190eXBlX2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogSW1wcm92ZSBjb21tZW50cy4gIENvbXBsYWluIGFib3V0IGV4cGxpY2l0CglpbnN0YW50aWF0aW9ucyB3aGVyZSBubyBkZWZpbml0aW9uIGlzIGF2YWlsYWJsZS4KCgkqIGNwLXRyZWUuaCAoYW5zaV9udWxsX25vZGUpOiBSZW1vdmUuCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogV2FybiBhYm91dCBjb252ZXJ0aW5nIE5VTEwgdG8gYW4KCWFyaXRobWV0aWMgdHlwZS4KCSogY3Z0LmMgKGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uKTogTGlrZXdpc2UuICBVc2UKCW51bGxfcHRyX2NzdF9wIGluc3RlYWQgb2YgZXhwYW5kaW5nIGl0IGlubGluZS4KCSogZGVjbC5jIChhbnNpX251bGxfbm9kZSk6IFJlbW92ZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IE1ha2UgbnVsbF9ub2RlIGFsd2F5cyBoYXZlIGludGVncmFsIHR5cGUuCgkqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IFdhcm4gYWJvdXQgY29udmVydGluZyBOVUxMIHRvIGFuCglhcml0aG1ldGljIHR5cGUuCgkqIGxleC5jIChpbml0X3BhcnNlKTogUmVtb3ZlIGhhbmRsaW5nIG9mIGFuc2lfbnVsbF9ub2RlLgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBEb24ndCBjb252ZXJ0IE5VTEwgdG8gdm9pZCogdHlwZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBGaXggTlVMTCB3YXJuaW5ncy4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogV2FybiBhYm91dCBjb252ZXJ0aW5nIE5VTEwgdG8gYW4KCWFyaXRobWV0aWMgdHlwZS4KCShjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IExpa2V3aXNlLgoKMTk5OC0wOC0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChzZWFyY2hfdHJlZSwgbm9fbGlua2FnZV9oZWxwZXIsIG5vX2xpbmthZ2VfY2hlY2spOiBOZXcgZm4uCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IFVzZSBub19saW5rYWdlX2NoZWNrLgoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogTGlrZXdpc2UuCgkoZ3Jva2ZuZGVjbCk6IExpa2V3aXNlLiAgTWVtYmVycyBvZiBhbm9ueW1vdXMgdHlwZXMgaGF2ZSBubyBsaW5rYWdlLgoKCSogbWV0aG9kLmMgKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IFJlbW92ZSB1c2VsZXNzIGNvZGUuCgoxOTk4LTA4LTIwICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCglIYW5kbGUgbmV3J2luZyBvZiBKYXZhIGNsYXNzZXMuCgkqIGluaXQuYyAoYnVpbGRfY2xhc3NfY2xhc3NyZWYpOiAgTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX25ld18xKTogIElmIHR5cGUgaXMgVFlQRV9GT1JfSkFWQTogIENhbGwgX0p2X0FsbG9jT2JqZWN0OwoJY29uc3RydWN0b3IgZG9lcyBub3QgcmV0dXJuIHRoaXM7ICBkb24ndCBuZWVkIHRvIGV4Y2VwdGlvbi1wcm90ZWN0LgoKCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogIENvcHkgVFlQRV9GT1JfSkFWQSBmbGFnLgoJKiBkZWNsMi5jIChhY2NlcHRhYmxlX2phdmFfdHlwZSk6ICBIYW5kbGUgdGVtcGxhdGUtZGVyaXZlZCB0eXBlcy4KCjE5OTgtMDgtMjAgIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF92dGFibGUpOiAgU3VwcHJlc3MgdnRhYmxlcyBmb3IgSmF2YSBjbGFzc2VzLgoKMTk5OC0wOC0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQWx3YXlzIG1lcmdlIHRoZSBvbGQgYW5kIG5ldyBwYXR0ZXJucwoJZm9yIHRlbXBsYXRlcywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgbmV3IG9uZSBoYXMKCURFQ0xfSU5JVElBTC4gIERvbid0IHRocm93IGF3YXkgc3BlY2lhbGl6YXRpb25zLiAgTWVyZ2UKCURFQ0xfU0FWRURfVFJFRS4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBVc2UgdGhlIHJpZ2h0IHBhdHRlcm4gd2hlbiBjYWxjdWxhdGluZyB0aGUKCWNvbXBsZXRlIGFyZ3MgZm9yIGEgbmV3IHRlbXBsYXRlIGluc3RhbmNlLgoJKGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBEZWFsIHdpdGggdHJpY2t5IGZyaWVuZCB0ZW1wbGF0ZQoJY2FzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgpUaHUgQXVnIDIwIDA5OjA5OjQ1IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGluaXQuYyAoYnVpbGRfYnVpbHRpbl9kZWxldGVfY2FsbCk6IEFkZCBtaXNzaW5nIGFzc2VtYmxlX2V4dGVybmFsCgljYWxsLgoKMTk5OC0wOC0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAobm90eXBlX3VucXVhbGlmaWVkX2lkKTogQWxzbyBhY2NlcHQgfkE8aW50Pi4KCjE5OTgtMDgtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IFdhcm4gb24gdXNlIG9mIE5VTEwgaW4KCWFyaXRobWV0aWMuCgkqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IFdhcm4gd2hlbiBOVUxMIGlzIHRocm93biwgZXZlbiB3aXRoCgktYW5zaS4gIFVzZSBhbnNpX251bGxfbm9kZSwgcmF0aGVyIHRoYW4gaW50ZWdlcl96ZXJvX25vZGUsIGluIHRoZQoJdGhyb3duIGV4cHJlc3Npb24uCgoJKiBjcC10cmVlLmggKGFuc2lfbnVsbF9ub2RlKTogTmV3IHZhcmlhYmxlLgoJKiBkZWNsLmMgKGFuc2lfbnVsbF9ub2RlKTogTmV3IHZhcmlhYmxlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBpdHMgdHlwZS4KCSogbGV4LmMgKGluaXRfcGFyc2UpOiBJbml0aWFsaXplIGl0cyB2YWx1ZS4gIFVzZSBhbnNpX251bGxfbm9kZQoJZm9yIG51bGxfbm9kZSBpbiBub24tQU5TSSBtb2RlLgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IFVzZSBhbnNpX251bGxfbm9kZSBpbgoJcGxhY2Ugb2YgbnVsbF9ub2RlIHRvIGF2b2lkIHNwdXJpb3VzIGVycm9ycy4KCjE5OTgtMDgtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKGVudGVyX3Njb3BlX29mKTogTmV3IGZ1bmN0aW9uLgoJKiBwYXJzZS55IChjb21wbGV4X2RpcmVjdF9ub3R5cGVfZGVjbGFyYXRvcik6IFVzZSBpdC4KCSogc2VtYW50aWNzLmMgKGVudGVyX3Njb3BlX29mKTogTmV3IGZ1bmN0aW9uLgoKMTk5OC0wOC0xNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rcGFybXMpOiBObywgaGVyZS4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDYXRjaCBwYXJtIHdpdGggcG9pbnRlciB0byBhcnJheSBvZgoJdW5rbm93biBib3VuZCBoZXJlLi4uCgkqIG1ldGhvZC5jIChwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiAuLi5ub3QgaGVyZS4KCgkqIGd4eGludC50ZXhpOiBSZW1vdmUgb2Jzb2xldGUgZG9jdW1lbnRhdGlvbiBvZiBvdmVybG9hZGluZyBjb2RlLgoKCSogZGVjbC5jIChmaW5pc2hfZW51bSk6IEFsc28gc2V0IFRZUEVfU0laRV9VTklULgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2JpdHMpOiBMaWtld2lzZS4KCgkqIHRyZWUuYyAobHZhbHVlX3R5cGUpOiBGaXggZm9yIGFycmF5cy4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogVXNlIGx2YWx1ZV90eXBlLgoJKiBjYWxsLmMgKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogTGlrZXdpc2UuCgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBJZ25vcmUgLXRyYWRpdGlvbmFsLgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogRG9uJ3QgbWVzcyB3aXRoIGVycm9yX21hcmtfbm9kZS4KCSogbGV4LmMgKGRvX3Njb3BlZF9pZCk6IFVzZSBjcF9lcnJvci4KCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2ZuKTogRG9uJ3QgbWVzcyB3aXRoIHRoZSBjb250ZXh0IGZvciBub3cuCgoxOTk4LTA4LTE3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGxvb255LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWxsb3cgYW5vbnltb3VzIHR5cGVzIHRvIGJlIGN2LXF1YWxpZmllZC4KCk1vbiBBdWcgMTcgMTA6NDA6MTggMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY3AtdHJlZS5oIChzZXRfaWRlbnRpZmllcl9sb2NhbF92YWx1ZSk6IFByb3ZpZGUgcHJvdG90eXBlLgoKCSogZGVjbDIuYyAoZG9fbmFtZXNwYWNlX2FsaWFzKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgYGJpbmRpbmcnCglhbmQgYG9sZCcuCgpGcmkgQXVnIDE0IDE2OjQyOjI3IDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVuYW1lIEJCSVNPTiB0byBCSVNPTiBzbyB0aGF0IGl0IGNhbiBiZSBwcm9wZXJseQoJaW5oZXJpdGVkIGZyb20gdGhlIHBhcmVudCBtYWtlZmlsZS4KCjE5OTgtMDgtMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZpbml0LXByaW9yaXR5LgoJKiBkZWNsMi5jOiBMaWtld2lzZS4gIENoZWNrIGZsYWdfaW5pdF9wcmlvcml0eSBpbnN0ZWFkIG9mCglVU0VfSU5JVF9QUklPUklUWS4KCgkqIGRlY2wyLmMgKHNldHVwX2luaXRwKTogTmV3IGZuLgoJKHN0YXJ0X29iamVjdHMsIGZpbmlzaF9vYmplY3RzLCBkb19jdG9ycyk6IEhhbmRsZSBpbml0X3ByaW9yaXR5LgoJKGRvX2R0b3JzLCBmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoKMTk5OC0wOC0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0X2NvcHkpOiBIdXNoIHdhcm5pbmcuCgoJKiBydHRpLmMgKGdldF90aW5mb19mbik6IEFsc28gc2V0IERFQ0xfSUdOT1JFRF9QLgoKMTk5OC0wOC0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHB0LmMgKHByaW50X3RlbXBsYXRlX2NvbnRleHQpOiBEb24ndCBhYm9ydCB3aGVuIGluc3RhbnRpYXRpbmcgYQoJc3ludGhlc2l6ZWQgbWV0aG9kLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IElzc3VlIGVycm9ycyBvbiBuYW1lc3BhY2UgcXVhbGlmaWVkCglkZWNsYXJhdG9ycyBpbiBwYXJhbWV0ZXIgbGlzdHMgb3IgaW4gY2xhc3Mgc2NvcGUuCgoxOTk4LTA4LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBEb24ndCBhYm9ydCBvbiBib2d1cwoJZXhwbGljaXQgaW5zdGFudGlhdGlvbnMuCgoxOTk4LTA4LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZSk6IFVzZSBjb21wbGV0ZV90eXBlX29yX2Vsc2UuCgkoY29tcGxldGVfdHlwZV9vcl9lbHNlKTogQWx3YXlzIHJldHVybiBOVUxMX1RSRUUgb24gZmFpbHVyZSwgYXMKCWRvY3VtZW50ZWQuCgoJKiBwdC5jICh0c3Vic3RfYWdncl90eXBlKTogUHJvdG90eXBlLgoJKHRzdWJzdF9kZWNsKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSB0c3Vic3QuICBTZXQKCWlucHV0X2ZpbGVuYW1lIGFuZCBsaW5lbm8gYXMgYXBwcm9wcmlhdGUuCgkocG9wX3RpbnN0X2xldmVsKTogUmVzdG9yZSB0aGUgZmlsZSBhbmQgbGluZSBudW1iZXIgc2F2ZWQgaW4KCXB1c2hfdGluc3RfbGV2ZWwuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBTZXQgaW5wdXRfZmlsZW5hbWUgYW5kIGxpbmVubyBhcwoJYXBwcm9wcmlhdGUuCgkodHN1YnN0KTogTW92ZSBfREVDTCBwcm9jZXNzaW5nIHRvIHRzdWJzdF9kZWNsLiAgTWFrZSBzdXJlIHRoZQoJY29udGV4dCBmb3IgYSBUWVBFTkFNRV9UWVBFIGlzIGNvbXBsZXRlLgoKCSogZGVjbDIuYyAoZ3Jva2JpdGZpZWxkKTogSXNzdWUgZXJyb3JzIG9uIGJpdGZpZWxkcyBkZWNsYXJlZCB3aXRoCglmdW5jdGlvbiB0eXBlLgoJKGRvX2R0b3JzKTogQXMgaW4gZG9fY3RvcnMsIHByZXRlbmQgdG8gYmUgYSBtZW1iZXIgb2YgdGhlIHNhbWUKCWNsYXNzIGFzIGEgc3RhdGljIGRhdGEgbWVtYmVyIHdoaWxlIGdlbmVyYXRpbmcgYSBjYWxsIHRvIGl0cwoJZGVzdHJ1Y3Rvci4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBIYW5kbGUgTlVMTCBwb2ludGVyCgljb252ZXJzaW9ucywgZXZlbiBpbiBjb21wbGV4IHZpcnR1YWwgYmFzZSBjbGFzcyBoaWVyYXJjaGllcy4KCjE5OTgtMDgtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKEVOVU1fVEVNUExBVEVfSU5GTyk6IE5ldyBtYWNyby4KCShUWVBFX1RFTVBMQVRFX0lORk8pOiBMaWtld2lzZS4KCShTRVRfVFlQRV9URU1QTEFURV9JTkZPKTogTGlrZXdpc2UuCgkoRU5VTV9USV9URU1QTEFURSk6IExpa2V3aXNlLgoJKEVOVU1fVElfQVJHUyk6IExpa2V3aXNlLgoJKGxvb2t1cF9uZXN0ZWRfdHlwZV9ieV9uYW1lKTogUmVtb3ZlLgoJKiBkZWNsLmMgKG1heWJlX3Byb2Nlc3NfdGVtcGxhdGVfdHlwZV9kZWNsYXJhdGlvbik6IEhhbmRsZSBlbnVtcy4KCShzdGFydF9lbnVtKTogRG9uJ3QgY2hlY2sgZm9yIHByaW1hcnktdGVtcGxhdGUgZW51bSBkZWNsYXJhdGlvbnMKCWhlcmUuCgkoZmluaXNoX2VudW0pOiBDbGVhbiB1cCwgZG9jdW1lbnQuICBNYWtlIHN1cmUgdGVtcGxhdGUgZW51bQoJY29uc3RhbnRzIGdldCB0aGUgY29ycmVjdCB0eXBlLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBDb3B5IGluaXRpYWxpemVycyBmb3IgdGVtcGxhdGUgZW51bWVyYXRpb25zLAoJdG9vLgoJKGdyb2tfZW51bV9kZWNscyk6IERvY3VtZW50LgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IERvY3VtZW50IHVzZSBvZiBMT09LVVBfRVhQUiBhIGJpdAoJYmV0dGVyLiAgQnVpbGQgTE9PS1VQX0VYUFJzIGZvciBsb2NhbCB2YXJpYWJsZXMsIGV2ZW4gaWYgdGhleSBhcmUKCVRSRUVfUEVSTUFORU5ULgoJKiBwdC5jICh0c3Vic3RfZW51bSk6IFJlbW92ZSBmaWVsZF9jaGFpbiBwYXJhbWV0ZXIuCgkodGVtcGxhdGVfY2xhc3NfZGVwdGgpOiBJbmNsdWRlIHRoZSBkZXB0aCBvZiBzdXJyb3VuZGluZyBmdW5jdGlvbgoJY29udGV4dHMuCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogQ2hlY2sgZm9yIHByaW1hcnktdGVtcGxhdGUgZW51bSBkZWNsYXJhdGlvbnMKCWhlcmUuICBEZWFsIHdpdGggZW51bWVyYXRpb24gdGVtcGxhdGVzLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IGNhbGwgdHN1YnN0X2VudW0gZGlyZWN0bHksCgljYWxsIHRzdWJzdCBpbnN0ZWFkLCB0byBpbnN0YW50aWF0ZSBlbnVtcy4gIERlYWwgd2l0aCBhbGwKCWZpZWxkX2NoYWluIGlzc3VlcyBoZXJlLCBub3QgaW4gdHN1YnN0X2VudW0uCgkobG9va3VwX25lc3RlZF90eXBlX2J5X25hbWUpOiBSZW1vdmUuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IFJldmlzZSBoYW5kbGluZyBvZiBlbnVtZXJhdGlvbiB0eXBlcy4KCSh0c3Vic3QpOiBMaWtld2lzZS4KCSh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKHRzdWJzdF9leHByKTogQ2FsbCB0c3Vic3QsIG5vdCB0c3Vic3RfZW51bSBmb3IgVEFHX0RFRk5zLgoKMTk5OC0wOC0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAocHVzaHRhZyk6IERvbid0IG1hbmdsZSB0aGUgbmFtZSBvZiBhIFRZUEVfREVDTCBpZiBpdAoJdXNlcyB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKiBtZXRob2QuYyAoYnVpbGRfdGVtcGxhdGVfcGFybV9uYW1lcyk6IFVzZSB0aGUgZnVsbCBzZXQgb2YKCXRlbXBsYXRlIGFyZ3VtZW50cyBmb3IgdHN1YnN0J2luZy4KCShidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogUGFzcyB0aGUgZnVsbCBzZXQgb2YgdGVtcGxhdGUKCWFyZ3VtZW50cyB0byBidWlsZF90ZW1wbGF0ZV9wYXJtX25hbWVzLCBub3QganVzdCB0aGUKCWlubmVybW9zdF9hcmdzLgoJKiBwdC5jIChUTVBMX0FSR1NfREVQVEgpOiBEZWZpbmUgdXNpbmcKCVRNUExfQVJHU19IQVZFX01VTFRJUExFX0xFVkVMUywgZm9yIGNsYXJpdHkuCgkoTlVNX1RNUExfQVJHUyk6IE5ldyBtYWNyby4KCShhZGRfb3V0ZXJtb3N0X3RlbXBsYXRlX2FyZ3MpOiBEZWFsIHdpdGggdGhlIGNhc2Ugd2hlcmUgdGhlIG91dGVyCglhcmdzIHdpbGwgYmUgY29tcGxldGVseSBkaXNjYXJkZWQuCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogVXNlIHRoZSBmdWxsIHNldCBvZiB0ZW1wbGF0ZSBhcmd1bWVudHMKCWZvciB0c3Vic3QnaW5nLiAgU2ltcGxpZnkuICBBZGQgc29tZSBhc3NlcnRzLiAgSW1wcm92ZQoJZXJyb3IgbWVzc2FnZXMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogUGFzcyB0aGUgZnVsbCBzZXQgb2YgdGVtcGxhdGUgYXJndW1lbnRzCgl0byBjb2VyY2VfdGVtcGxhdGVfcGFybXMuCgkodHN1YnN0KTogQWRkIGFzc2VydGlvbi4KCShkb190eXBlX2luc3RhbnRpYXRpb24pOiBEb24ndCBpbnN0YW50aWF0ZSBtZW1iZXIgdGVtcGxhdGUKCWNsYXNzZXMuCgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBEZWFsIHdpdGggYSBURU1QTEFURV9JRF9FWFBSIHdob3NlCgluYW1lIGlzIGEgTE9PS1VQX0VYUFIsIHJhdGhlciB0aGFuIGFuIElERU5USUZJRVJfTk9ERS4KCjE5OTgtMDgtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsKTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIHZvaWQuCgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBBIG5hbWVzcGFjZS1sZXZlbCBkZWNsIHRha2VzIHByaW9yaXR5CglvdmVyIGltcGxpY2l0IHR5cGVuYW1lLiAgQXZvaWQgZG9pbmcgdGhlIHNhbWUgbG9va3VwIHR3aWNlLgoKCSogc2VhcmNoLmMgKGRlcGVuZGVudF9iYXNlX3ApOiBOZXcgZm4uCgkoZGZzX3B1c2hkZWNscywgZGZzX2NvbXByZXNzX2RlY2xzKTogVXNlIGl0LgoKCSogdHlwZWNrLmMgKGdldF9tZW1iZXJfZnVuY3Rpb25fZnJvbV9wdHJmdW5jKTogRG9uJ3QgdHJ5IHRvIGhhbmRsZQoJdmlydHVhbCBmdW5jdGlvbnMgaWYgdGhlIHR5cGUgZG9lc24ndCBoYXZlIGFueS4KCjE5OTgtMDgtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBEb24ndCBtYW5nbGUgdGhlIG5hbWUgb2YgYSBUWVBFX0RFQ0wgaWYgaXQKCXVzZXMgdGVtcGxhdGUgcGFyYW1ldGVycy4KCjE5OTgtMDgtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmRlZiAoTE9PS1VQX0VYUFIpOiBEb2N1bWVudC4gIFJlbW92ZSBzZWNvbmQgYXJndW1lbnQuCgkqIGNwLXRyZWUuaCAoREVDTF9USV9URU1QTEFURSk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBEb24ndCB1c2UgYSBzZWNvbmQgYXJndW1lbnQsIG9yIGEgdHlwZSwKCXdoZW4gYnVpbGRpbmcgTE9PS1VQX0VYUFJzLgoJKGRvX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShkb19zY29wZWRfaWQpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IEltcHJvdmUgZXJyb3IgbWVzc2FnZS4KCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2Z1bmN0aW9uKTogRG9uJ3QgbmVlZGxlc3NseSBjYWxsCgljb3B5X3RvX3Blcm1hbmVudCBvciBidWlsZF9taW4uCgkodHN1YnN0X2NvcHkpOiBSZW1vdmUgI2lmIDAnZCBjb2RlLiAgdHN1YnN0IGludG8gTE9PS1VQX0VYUFJzIGlmCgluZWNlc3NhcnkuCgkoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlLgoJKiB0cmVlLmMgKG1hcGNhciwgY2FzZSBMT09LVVBfRVhQUik6IERvbid0IGJlIHNvcnJ5OyBtYWtlIGEgY29weS4KCShidWlsZF9taW4pOiBDb3B5IHRoZSB0eXBlIHRvIHRoZSBwZXJtYW5lbnQgb2JzdGFjaywgdG9vLgoKMTk5OC0wOC0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChpbml0X2luaXRfcHJvY2Vzc2luZyk6IFJlbW92ZSBCSSogaGFuZGxpbmcuCgkoYnVpbGRfYnVpbHRpbl9jYWxsKTogUmVtb3ZlLgoJKGJ1aWxkX2J1aWx0aW5fZGVsZXRlX2NhbGwpOiBOZXcgZm4uCgkoYnVpbGRfZGVsZXRlKTogVXNlIGl0LgoKMTk5OC0wNy0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoUFJPQ0VTU0lOR19SRUFMX1RFTVBMQVRFX0RFQ0xfUCk6IE5ldyBtYWNyby4KCShtYXliZV9jaGVja190ZW1wbGF0ZV90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKG1heWJlX3Byb2Nlc3NfdGVtcGxhdGVfdHlwZV9kZWNsYXJhdGlvbik6IE5ldyBmdW5jdGlvbiwKCXNwbGl0IG91dCBmcm9tIHB1c2h0YWcgIENhbGwgbWF5YmVfY2hlY2tfdGVtcGxhdGVfdHlwZS4KCShwdXNodGFnKTogVXNlIGl0LiAgVXNlIFBST0NFU1NJTkdfUkVBTF9URU1QTEFURV9ERUNMX1AuCgkoeHJlZl90YWcpOiBVc2UgUFJPQ0VTU0lOR19SRUFMX1RFTVBMQVRFX0RFQ0xfUC4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IFVzZSBQUk9DRVNTSU5HX1JFQUxfVEVNUExBVEVfREVDTF9QLgoJKiBwdC5jICh0ZW1wbGF0ZV9jbGFzc19kZXB0aF9yZWFsKTogR2VuZXJhbGl6YXRpb24gb2YgLi4uCgkodGVtcGxhdGVfY2xhc3NfZGVwdGgpOiBVc2UgaXQuCgkocmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24pOiBVc2UgZHVwbGljYXRlX2RlY2xzIGZvciBkdXBsaWNhdGUKCWRlY2xhcmF0aW9ucyBvZiBzcGVjaWFsaXphdGlvbnMuCgkobWF5YmVfY2hlY2tfdGVtcGxhdGVfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IEZpeCBjb21tZW50LgoJKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLiAgQXZvaWQgYW4gaW5maW5pdGUgbG9vcCBvbgoJZXJyb25lb3VzIGNvZGUuCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IEZpeCBjb21tZW50LgoJKHRzdWJzdCwgY2FzZSBGVU5DVElPTl9ERUNMKTogRGVhbCB3aXRoIGEgREVDTF9USV9URU1QTEFURSB0aGF0IGlzCglhbiBJREVOVElGSUVSX05PREUuCgkqIHNlbWFudGljcy5jIChiZWdpbl9mdW5jdGlvbl9kZWZpbml0aW9uKTogVXNlCglyZXNldF9zcGVjaWFsaXphdGlvbiB0byBub3RlIHRoYXQgdGVtcGxhdGUgaGVhZGVycyBkb24ndCBhcHBseQoJZGlyZWN0bHkgdG8gZGVjbGFyYXRpb25zIGFmdGVyIHRoZSBvcGVuaW5nIGN1cmx5IGZvciBhIGZ1bmN0aW9uLgoKMTk5OC0wNy0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoX292ZXJsb2FkZWRfZGVjbCk6IFVzZSBjdXJyZW50X25hbWVzcGFjZSBpbnN0ZWFkIG9mCglERUNMX0NPTlRFWFQgKGRlY2wpIHRvIGRldGVybWluZSB3aGVyZSB3ZSBnby4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEZpeCB0eXBvLgoKMTk5OC0wNy0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBCZSBsZW5pZW50IHdpdGggbWVtYmVyIGZ1bmN0aW9ucyB0byBkZWFsCgl3aXRoIG5lc3RlZCBmcmllbmRzLgoKMTk5OC0wNy0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQ29udmVydCBpbnRlZ2VyX3plcm9fbm9kZSB0bwoJc3NpemV0eXBlIGJlZm9yZSBwYXNzaW5nIGl0IHRvIHNldF9ydHRpX2VudHJ5LgoJKiB0eXBlY2syLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBBbGxvdyBjb252ZXJzaW9uIG9mIDAKCW9mIGFueSBzaXplIHRvIGEgcG9pbnRlci4KCjE5OTgtMDctMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcC10cmVlLmggKFRJX1VTRVNfVEVNUExBVEVfUEFSTVMpOiBSZW1vdmUuCgkoYnVpbGRfdGVtcGxhdGVfZGVjbF9vdmVybG9hZCk6IFJlbW92ZS4KCShzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGlubmVybW9zdF9hcmdzKTogUmVtb3ZlIGlzX3NwZWMgcGFyYW1ldGVyLgoJKG1vc3Rfc3BlY2lhbGl6ZWQsIG1vc3Rfc3BlY2lhbGl6ZWRfY2xhc3MpOiBSZW1vdmUgZGVjbGFyYXRpb25zLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEFkZCBlbnRlcmluZ19zY29wZSBwYXJhbWV0ZXIuCgkobWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF90ZW1wbGF0ZV9kZWNsKTogTGlrZXdpc2UuCgkoZmluaXNoX3RlbXBsYXRlX3R5cGUpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IENsZWFuIHVwIHByb2Nlc3Npbmcgb2YgbWVtYmVyIHRlbXBsYXRlCglzcGVjaWFsaXphdGlvbnMuCgkqIGRlY2wuYyAocHVzaHRhZyk6IEZpeCBmb3JtYXR0aW5nLgoJKGxvb2t1cF90YWcpOiBJbXByb3ZlIGhhbmRsaW5nIG9mIHBzZXVkby1nbG9iYWwgbGV2ZWxzLgoJKG1ha2VfdHlwZW5hbWVfdHlwZSk6IEFkanVzdCBjYWxsIHRvIGxvb2t1cF90ZW1wbGF0ZV9jbGFzcy4KCShzaGFkb3dfdGFnKTogVXNlIG1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbi4KCSh4cmVmX3RhZyk6IEltcHJvdmUgaGFuZGxpbmcgb2YgbWVtYmVyIGZyaWVuZHMuCgkoc3RhcnRfZnVuY3Rpb24pOiBDYWxsIHB1c2hfbmVzdGVkX2NsYXNzIGJlZm9yZQoJcHVzaF90ZW1wbGF0ZV9kZWNsLiAgRG9uJ3QgY2FsbCBwdXNoX3RlbXBsYXRlX2RlY2wgZm9yCglzcGVjaWFsaXphdGlvbnMuCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogRG9uJ3QgY2FsbCB4cmVmX3RhZyBmb3IKCXRlbXBsYXRlIGluc3RhbnRpYXRpb25zLiAgSGFuZGxlIFVOSU9OX1RZUEVzIGxpa2UgUkVDT1JEX1RZUEVzLgoJKGdyb2tjbGFzc2ZuKTogVXNlIHNldF9tYW5nbGVkX25hbWVfZm9yX2RlY2wuCgkoYXJnX2Fzc29jX2NsYXNzKTogQWRqdXN0IGNhbGwgdG8gaW5uZXJtb3N0X2FyZ3MuCgkobWFya191c2VkKTogRG9uJ3QgY2FsbCBpbnN0YW50aWF0ZV9kZWNsIGZvciBhIFRFTVBMQVRFX0RFQ0wuCgkqIGVycm9yLmMgKGR1bXBfZnVuY3Rpb25fbmFtZSk6IEltcHJvdmUgcHJpbnRpbmcgb2YgdGVtcGxhdGUKCWZ1bmN0aW9uIG5hbWVzLgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogRG9uJ3QgY29tcGFyZSB0eXBlcyBvZiBkZWNscyB0byBkZXRlcm1pbmUKCWZyaWVuZHNoaXAsIHVubGVzcyBmbGFnX2d1aWRpbmdfZGVjbHMuCgkobWFrZV9mcmllbmRfY2xhc3MpOiBQYXJ0aWFsIHNwZWNpYWxpemF0aW9ucyBjYW5ub3QgYmUgZnJpZW5kcy4KCShkb19mcmllbmQpOiBVc2Ugc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbC4gIENhbGwKCXB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsIGluc3RlYWQgb2YgcHVzaF90ZW1wbGF0ZV9kZWNsLgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogUmVtb3ZlIHByb3RvdHlwZS4gIEdpdmUgaXQKCWV4dGVybmFsIGxpbmthZ2UuCgkoYnVpbGRfb3ZlcmxvYWRfaWRlbnRpZmllcik6IEFkanVzdCBjYWxsIHRvIGlubmVybW9zdF9hcmdzLgoJKGJ1aWxkX3RlbXBsYXRlX2RlY2xfb3ZlcmxvYWQpOiBSZW1vdmUuCgkoc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCSogcGFyc2UueSAoLmZpbmlzaF90ZW1wbGF0ZV90eXBlKTogTmV3IG5vbi10ZXJtaW5hbC4KCSh0ZW1wbGF0ZV9kZWYpOiBVc2UgZmluaXNoX3RlbXBsYXRlX2RlY2wuICBVc2UgdGVtcGxhdGVfZXh0ZGVmCglpbnN0ZWFkIG9mIGV4dGRlZi4KCSh0ZW1wbGF0ZV9leHRkZWYsIHRlbXBsYXRlX2RhdGFkZWYpOiBOZXcgbm9uLXRlcm1pbmFscywgY29udGFpbmluZwoJb25seSB0aG9zZSBydWxlcyBmb3IgdGhpbmdzIHdoaWNoIGNhbiBiZSB0ZW1wbGF0ZXMuCgkoZGF0YWRlZik6IFRpZHkuCgkodGVtcGxhdGVfdHlwZSwgc2VsZl90ZW1wbGF0ZV90eXBlKTogVXNlIC5maW5pc2hfdGVtcGxhdGVfdHlwZS4KCShuYW1lZF9jbGFzc19oZWFkKTogVXNlIG1heWJlX3Byb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbi4KCSogcHQuYyAobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogUmVtb3ZlIGNvbnRleHQgcGFyYW1ldGVyLgoJKGdldF9jbGFzc19iaW5kaW5ncyk6IFJlbW92ZSBvdXRlcl9hcmdzIHBhcmFtZXRlci4KCShjb21wbGV0ZV90ZW1wbGF0ZV9hcmdzKTogUmVtb3ZlLgoJKGFkZF9vdXRlcm1vc3RfdGVtcGxhdGVfYXJncyk6IE5ldyBmdW5jdGlvbi4KCShyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IFJldHVybiB0aGUgc3BlY2lhbGl6YXRpb24uCgkodW5yZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IE5ldyBmdW5jdGlvbi4KCSh0c3Vic3RfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KCShtb3N0X3NwZWNpYWxpemVkLCBtb3N0X3NwZWNpYWxpemVkX2NsYXNzKTogUHJvdG90eXBlIGhlcmUgYXMKCXN0YXRpYy4KCShvcmlnaW5hbF90ZW1wbGF0ZSk6IFJlbmFtZSB0byBtb3N0X2dlbmVyYWxfdGVtcGxhdGUuCgkodHN1YnN0X3RlbXBsYXRlX3Bhcm1zKTogTmV3IGZ1bmN0aW9uLgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCShUTVBMX0FSR1NfREVQVEgpOiBOZXcgbWFjcm8uCgkoVE1QTF9BUkdTX0hBVkVfTVVMVElQTEVfTEVWRUxTKTogQWRqdXN0LgoJKFRNUExfQVJHU19MRVZFTCk6IE5ldyBtYWNyby4KCShTRVRfVE1QTF9BUkdTX0xFVkVMKTogTGlrZXdpc2UuCgkoVE1QTF9BUkcpOiBMaWtld2lzZS4KCShTRVRfVE1QTF9BUkcpOiBMaWtld2lzZS4KCShUTVBMX0FSR1NfREVQVEgpOiBMaWtld2lzZS4KCShmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBVc2UgZmluaXNoX3RlbXBsYXRlX2RlY2wuCgkobWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQKCWZyb20gdHN1YnN0LgoJKGlubGluZV9uZWVkc190ZW1wbGF0ZV9wYXJtcyk6IFVzZSBUTVBMX1BBUk1TX0RFUFRILgoJKG1heWJlX2JlZ2luX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogVXNlIG5ldyBtYWNyb3MuCgkoaXNfbWVtYmVyX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoaXNfbWVtYmVyX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkoYWRkX3RvX3RlbXBsYXRlX2FyZ3MpOiBMaWtld2lzZS4gIERlYWwgd2l0aCBtdWx0aXBsZSBsZXZlbHMgb2YKCWFyZ3MuCgkobWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKHJldHJpZXZlX3NwZWNpYWxpemF0aW9uKTogQWRkIGNvbnNpc3RlbmN5IGNoZWNrLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IFJldHVybiBmdWxsIGFyZ3VtZW50IGxpc3QuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBUd2VhayBmcmllbmQgaGFuZGxpbmcuICBVc2UgZnVsbAoJYXJndW1lbnQgbGlzdHMuICBTaW1wbGlmeS4KCShjdXJyZW50X3RlbXBsYXRlX2FyZ3MpOiBVc2UgbmV3IG1hY3Jvcy4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IENoYW5nZSBpbGwtbmFtZWQgbWFpbmFyZ3MgdG8gc3BlY2FyZ3MuCglDaGVjayB0aGF0IGEgcGFydGlhbCBzcGVjaWFsaXphdGlvbiBhY3R1YWxseSBzcGVjaWFsaXplcyBhdCBsZWFzdAoJb25lIHBhcmFtZXRlci4gICBJbXByb3ZlIGZyaWVuZCBoYW5kbGluZy4gIE1vZGlmeSBmb3IgZnVsbAoJdGVtcGxhdGUgYXJndW1lbnRzLgoJKGNsYXNzdHlwZV9tYW5nbGVkX25hbWUpOiBEb24ndCBtYW5nbGUgdGhlIG5hbWVzIG9mCglzcGVjaWFsaXphdGlvbnMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogQWRkIGVudGVyaW5nX3Njb3BlIHBhcmFtZXRlci4gIFVzZSBpdCB0bwoJYXZvaWQgZmluZGluZyBhIHRlbXBsYXRlIHR5cGUgd2hlbiBhbiBpbnN0YW50aWF0aW9uIGlzIHJlcXVpcmVkLgoJU2ltcGxpZnkuICBVc2UgZnVsbCB0ZW1wbGF0ZSBhcmd1bWVudHMuCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IFVzZSB1bnJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uLiAgVXNlIG5ldwoJbWFjcm9zLiAgVXNlIGZ1bGwgdGVtcGxhdGUgYXJndW1lbnRzLgoJKHRzdWJzdF9mcmllbmRfY2xhc3MpOiBTdWJzdGl0dXRlLCB1c2luZyB0c3Vic3RfdGVtcGxhdGVfcGFybXMsCglpbnRvIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGJlZm9yZSBwYXNzaW5nIHRoZW0gdG8KCXJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZS4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFNpbXBsaWZ5LiAgVXNlIGZ1bGwgdGVtcGxhdGUKCWFyZ3VtZW50cy4gIEFkanVzdCBjYWxscyB0byBnZXRfY2xhc3NfYmluZGluZ3MuICBVc2UKCVNFVF9JREVOVElGSUVSX1RZUEVfVkFMVUUgd2hlcmUgbmVlZGVkLiAgSW1wcm92ZSBmcmllbmQgaGFuZGxpbmcuCgkoaW5uZXJtb3N0X2FyZ3MpOiBVc2UgbmV3IG1hY3Jvcy4KCSh0c3Vic3RfYWdncl90eXBlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSB0c3Vic3QuCgkodHN1YnN0KTogVXNlIHRzdWJzdF9hZ2dyX3R5cGUsIHRzdWJzdF90ZW1wbGF0ZV9wYXJtcywgbmV3IGNhbGxpbmcKCWNvbnZlbnRpb25zIGZvciBsb29rdXBfdGVtcGxhdGVfY2xhc3MuICBSZWZpbmUgaGFuZGxpbmcgb2YgcGFydGlhbAoJaW5zdGFudGlhdGlvbnMuICAgUmVtb3ZlIGNhbGxzIHRvIGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MuCglTaW1wbGlmeS4gIEFkZCBjb25zaXN0ZW5jeSBjaGVja3MuICBVc2Ugc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbAoJYW5kIHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wuCgkodHN1YnN0X2NvcHkpOiBVc2UgdHN1YnN0X2FnZ3JfdHlwZS4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IFVzZSBmdWxsIHRlbXBsYXRlIGFyZ3VtZW50cy4KCShtb3JlX3NwZWNpYWxpemVkKTogSW1wcm92ZSBmb3JtYXR0aW5nLgoJKG1vcmVfc3BlY2lhbGl6ZWRfY2xhc3MpOiBBZGp1c3QgY2FsbHMgdG8gZ2V0X2NsYXNzX2JpbmRpbmdzLgoJKGdldF9iaW5kaW5nc19yZWFsKTogRG9uJ3QgY2FsbCBjb21wbGV0ZV90ZW1wbGF0ZV9hcmdzLgoJKG1vc3Rfc3BlY2lhbGl6ZWQpOiBEb24ndCBvdmVyd3JpdGUgaW5wdXQ7IGNyZWF0ZSBhIG5ldyBsaXN0LgoJKG1vc3Rfc3BlY2lhbGl6ZWRfY2xhc3MpOiBVc2UgbW9zdF9nZW5lcmFsX3RlbXBsYXRlLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogVXNlIHVucmVnaXN0ZXJfc3BlY2lhbGl6YXRpb24uCglVc2UgZnVsbCB0ZW1wbGF0ZSBhcmd1bWVudHMuCgkoaW5zdGFudGlhdGVfZGVjbCk6IFVzZSBmdWxsIHRlbXBsYXRlIGFyZ3VtZW50cy4KCShzZXRfbWFuZ2xlZF9uYW1lX2Zvcl90ZW1wbGF0ZV9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IFVzZQoJbWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uLgoJKGZpbmlzaF9tZW1iZXJfY2xhc3NfdGVtcGxhdGUpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCShmaW5pc2hfdGVtcGxhdGVfdHlwZSk6IExpa2V3aXNlLgoJKHR5cGVjay5jKTogRG9uJ3QgY3Jhc2ggYWZ0ZXIgaXNzdWluZyBhIGNvbXBpbGVyX2Vycm9yLgoJKiBNYWtlZmlsZS5pbiAoQ09ORkxJQ1RTKTogQWRqdXN0OyB3ZSByZW1vdmVkIGEgcy9yIGNvbmZsaWN0LgoKMTk5OC0wNy0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBIYW5kbGUgZGVmYXVsdC1pbml0aWFsaXphdGlvbi4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogUGFzcyAxIHRvIHBvcGNsYXNzLgoKCSogcGFyc2UueSAoZGlyZWN0X25vdHlwZV9kZWNsYXJhdG9yKTogQWRkIHByZWNlZGVuY2UgZGVjbGFyYXRpb24KCXRvIG5vdHlwZV91bnF1YWxpZmllZF9pZCBjYXNlLgoJKiBNYWtlZmlsZS5pbiAoRVhQRUNUKTogQWRqdXN0LgoKCSogdHJlZS5jIChvdmxfbWVtYmVyKTogRml4IGZvciBzaW5nbGUgZnVuY3Rpb24gaW4gT1ZMLgoKMTk5OC0wNy0yNyAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogYy1sZXguYyAoeXlsZXgpOiBGaXggYm91bmRhcnkgY29uZGl0aW9ucyBpbiBjaGFyYWN0ZXIgbGl0ZXJhbCBhbmQKCXN0cmluZyBsaXRlcmFsIGxvb3BzLgoKMTk5OC0wNy0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogT0ssIGRvIHJldHVybiB0aGUgZnJvbV9vYmogdmFsdWUKCXVubGVzcyBnb3Rfb2JqZWN0IGRlcGVuZHMgb24gdGVtcGxhdGUgcGFybXMuCgoJKiBwYXJzZS55IChuZXN0ZWRfbmFtZV9zcGVjaWZpZXJfMSk6IFB1bGwgb3V0IHRoZSBUWVBFX01BSU5fVkFSSUFOVC4KCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEFsc28gY29tcGxhaW4gYWJvdXQgbG9jYWwgZW51bXMuCgoJKiBjcC10cmVlLmg6IEFkZCBwcm90b3R5cGUgZm9yIHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlLgoJKiBkZWNsLmMgKHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlX3dpdGhfc2NvcGUpOiBNYWtlIHN0YXRpYywKCXByb3RvdHlwZS4KCSogc2VhcmNoLmMgKGNvdmFyaWFudF9yZXR1cm5fcCk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoYnVpbGRfdGVybWluYXRlX2hhbmRsZXIsIGFsbG9jX2VoX29iamVjdCk6IExpa2V3aXNlLgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IE9ubHkgcHVsbCBvdXQgdGhlIHR5cGUgb2YgYSBkZXN0cnVjdG9yCglpZiBpdCdzIGEgdGVtcGxhdGUgdHlwZSBwYXJtLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBOZXZlciByZXR1cm4gdGhlIGZyb21fb2JqIHZhbHVlLgoKMTk5OC0wNy0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2tfb2xkKTogQ2FsbCBzdGFydF9kZWNsXzEgZm9yCgljYXRjaCBwYXJtLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2xfMSk6IEF2b2lkIGR1cGxpY2F0ZSBlcnJvci4KCgkqIGluaXQuYyAoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IE9ubHkgcGVyZm9ybSB0aGUgaW5pdGlhbGl6YXRpb24gaWYKCWl0IHdpbGwgZG8gc29tZXRoaW5nLgoKMTk5OC0wNy0yMyAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogcGFyc2UueSAoYmFzZV9jbGFzcyk6IENoZWNrIGZvciBpbnZhbGlkIGJhc2UgY2xhc3MuCgoxOTk4LTA3LTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X3RlbXBsYXRlKTogRm9sZCBpbi4uLgoJKGltcG9ydF9leHBvcnRfY2xhc3MpOiAuLi50byBoZXJlLiAgSGFuZGxlIGRsbGltcG9ydC9leHBvcnQuCgoJKiBjbGFzcy5jIChidWlsZF92dGFibGUpOiBQYXNzIGF0X2VvZiB0byBpbXBvcnRfZXhwb3J0X3Z0YWJsZS4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2NsYXNzKTogU3BsaXQgb3V0Li4uCgkoZmluaXNoX3ByZXZ0YWJsZV92YXJkZWNsKTogRnJvbSBoZXJlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBDYWxsIGltcG9ydF9leHBvcnRfY2xhc3MgaWYgYXRfZW9mLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6ICNpZiAwIG15c3RlcmlvdXMgY29kZSBJIHdyb3RlIGFuZCBoYXZlCglmb3Jnb3R0ZW4gd2h5LgoJKiBydHRpLmMgKGdldF90aW5mb19mbik6IElmIHRoaXMgaXMgZm9yIGEgY2xhc3MgdHlwZSwgc2V0CglERUNMX0NPTlRFWFQuCgoxOTk4LTA3LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbmMvZXhjZXB0aW9uOiBDaGFuZ2UgdGVybWluYXRlIGFuZCB1bmV4cGVjdGVkIHRvICgpLgoKCSogcGFyc2UueSAobmFtZWRfY2xhc3NfaGVhZF9zYW5zX2Jhc2V0eXBlX2RlZm4pOiBBCgluYW1lZF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGUgZm9sbG93ZWQgYnkgJ3snIG9yICc6JyBpcyBhIGRlZm4uCgoxOTk4LTA3LTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGNhbm9uaWNhbF90eXBlX3ZhcmlhbnQpOiBOZXcgZm4gdG8gaGFuZGxlIGFycmF5cy4KCSogY3AtdHJlZS5oIChDQU5PTklDQUxfVFlQRV9WQVJJQU5UKTogUmVtb3ZlLgoJKiBwdC5jICh1bmlmeSwgZGVmYXVsdCBjYXNlKTogQWxzbyBmb2xkIGFyZy4gIEZpeCBhcnJheSBib3VuZHMgY2FzZS4KCSogbWV0aG9kLmMgKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IFVzZSBidWlsZF9vdmVybG9hZF92YWx1ZSBmb3IKCWFycmF5cy4KCjE5OTgtMDctMjAgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChtYmNoYXIuaCk6ICNpbmNsdWRlIGl0LgoJKEdFVF9FTlZJUk9OTUVOVCk6IE5ldyBtYWNyby4KCShpbml0X3BhcnNlKTogU2V0IGNoYXJhY3RlciBzZXQgYmFzZWQgb24gTEFORyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KCShyZWFsX3l5bGV4KTogSGFuZGxlIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGluIGNoYXJhY3RlciBsaXRlcmFscy4KCShyZWFsX3l5bGV4KTogSGFuZGxlIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIGluIHN0cmluZyBsaXRlcmFscy4KCjE5OTgtMDctMTkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogTG9vayBmb3IgY2xhc3MgdmFsdWUgZXZlbiBpZiB3ZSBkb24ndAoJaGF2ZSBhIGdsb2JhbCB2YWx1ZS4gIERvIGltcGxpY2l0IGRlY2xhcmF0aW9uIGlmIHBhcnNpbmcgaXMgMi4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jYWxsX2V4cHIpOiBQYXNzIDIgaWYgd2UncmUgZG9pbmcgS29lbmlnCglsb29rdXAuCgoxOTk4LTA3LTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChwdXNodGFnKTogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZS4KCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3QgcHV0IG91dCBkZWJ1Z2dpbmcKCWluZm9ybWF0aW9uIGZvciB0eXBlcyB0aGF0IHVzZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKCSogZGVjbC5jIChwdXNodGFnKTogRG9uJ3QgcHV0IG91dCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gZm9yCgljb21waWxlci1nZW5lcmF0ZWQgdHlwZWRlZnMuCgoJKiBlcnJvci5jIChkdW1wX3R5cGVfcmVhbCk6IERvbid0IGNyYXNoIHdoZW4gcHJlc2VudGVkIHdpdGgKCWludFFJX3R5cGVfbm9kZSBvciB0aGUgbGlrZS4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHJhbnNsYXRpb25fdW5pdCk6IEZpeCBzcGVsbGluZyBlcnJvciBpbgoJY29tbWVudC4KCjE5OTgtMDctMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IFB1bGwgb3V0IHNpbmdsZSBmdW5jdGlvbiBoZXJlLgoJKHNlbGVjdF9kZWNsKTogTm90IGhlcmUuCgkodW5xdWFsaWZpZWRfbmFtZXNwYWNlX2xvb2t1cCk6IFVzZSBDUF9ERUNMX0NPTlRFWFQuCgoJKiBkZWNsLmMgKHF1YWxpZnlfbG9va3VwKTogVHdlYWsgYWdhaW4uCgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBEb24ndCBtZXNzIHdpdGggdGhlIGNvbnRleHQgb2YgdGhlCglpbnN0YW50aWF0aW9uLgoJKiBkZWNsMi5jIChjdXJyZW50X2RlY2xfbmFtZXNwYWNlKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yCgl0ZW1wbGF0ZXMuCgoJKiBwdC5jICh0c3Vic3QsIGNhc2UgRlVOQ1RJT05fREVDTCk6IEZpeCBnZXR0aW5nIGNvbXBsZXRlIGFyZ3MgZm9yCglhIG1lbWJlciB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbi4KCgkqIHRyZWUuYyAob3ZsX21lbWJlcik6IFVzZSBkZWNsc19tYXRjaCB0byBjb21wYXJlIGZ1bmN0aW9ucy4KCSogZGVjbC5jIChkZWNsc19tYXRjaCk6IENoZWNrIHRoZSBjb250ZXh0IG9mIGEgZnVuY3Rpb24uCgoJKiBwYXJzZS55IChwcmltYXJ5KTogVXNlIG5vdHlwZV91bnF1YWxpZmllZF9pZCBpbnN0ZWFkIG9mIElERU5USUZJRVIKCWluIEtvZW5pZyBsb29rdXAgc3VwcG9ydCBydWxlcy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9jYWxsX2V4cHIpOiBIYW5kbGUgdGhlIG5ldyBjYXNlcy4KCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBIYW5kbGUgb3ZlcmxvYWRlZCBtZXRob2RzLgoKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IERvbid0IGNhbGwgYnVpbGRfc3RhdGljX25hbWUgZm9yIGV4dGVybiAiQyIuCgoxOTk4LTA3LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9vYmplY3RfY2FsbF9leHByKTogUmV2ZXJ0IHByZXZpb3VzIGNoYW5nZS4KCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4gIEluc3RlYWQsIGNvbnZlcnQKCVRZUEVfREVDTHMgdG8gSURFTlRJRklFUnMgaGVyZSwgaW4gdGhlIHByZXNlbmNlIG9mIHRlbXBsYXRlcy4KCjE5OTgtMDctMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocXVhbGlmeV9sb29rdXApOiBIYW5kbGUgdGVtcGxhdGVzLgoKCSogZGVjbDIuYyAoZG9fdXNpbmdfZGlyZWN0aXZlKTogRG9uJ3QgcGFzcyBhbmNlc3Rvci4KCSogZGVjbC5jIChwdXNoX3VzaW5nX2RpcmVjdGl2ZSk6IENhbGN1bGF0ZSBhbmNlc3Rvci4KCgkqIGRlY2wyLmMgKGRvX25vbm1lbWJlcl91c2luZ19kZWNsKTogQWxsb3cgZm9yIHR5cGUgc2hhZG93aW5nLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogTW92ZSB0eXBlIHNoYWRvd2luZyBoYW5kbGluZyBmcm9tIGhlcmUuLi4KCShkdXBsaWNhdGVfZGVjbHMpOiAuLi50byBoZXJlLgoJKiBkZWNsLmMgKHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlX3dpdGhfc2NvcGUpOiBOZXcgZm4uCgkocHVzaGRlY2wpOiBVc2UgaXQuCgkoc2V0X2lkZW50aWZpZXJfbG9jYWxfdmFsdWUsIGxvb2t1cF90eXBlX2N1cnJlbnRfbGV2ZWwpOiBOZXcgZm5zLgoJKiBkZWNsMi5jIChkb19sb2NhbF91c2luZ19kZWNsKTogSGFuZGxlIHR5cGVzIGFuZCBiaW5kaW5nIGxldmVsCglzdHVmZiBwcm9wZXJseS4KCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IERvbid0IGNhbGwgbWFya191c2VkIG9uIGFuIE9WRVJMT0FELgoJKiBkZWNsLmMgKHNlbGVjdF9kZWNsKTogRXh0cmFjdCBhIGxvbmUgZnVuY3Rpb24gZnJvbSBhbiBPVkVSTE9BRC4KCShsb29rdXBfbmFtZXNwYWNlX25hbWUpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogTm90IGhlcmUgYW55bW9yZS4KCgkqIGRlY2wyLmMgKGRvX2NsYXNzX3VzaW5nX2RlY2wpOiBNYWtlIHN1cmUgd2UgZ2V0IGFuIGlkZW50aWZpZXIuCgkqIGNsYXNzLmMgKGhhbmRsZV91c2luZ19kZWNsKTogSWdub3JlIFRZUEVfREVDTHMuCgoJKiBkZWNsLmMgKHF1YWxpZnlfbG9va3VwKTogTmV3IGZuLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBVc2UgaXQuCgoxOTk4LTA3LTE2ICBNYXJ0aW4gdi4gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAoYWRkX3VzaW5nX25hbWVzcGFjZSk6IFdoZW4gZGlyZWN0bHkgdXNpbmcgYSBuYW1lc3BhY2UKCXRoYXQgd2FzIGluZGlyZWN0IGJlZm9yZSwgcHJvbW90ZSBpdC4KCgkqIGNwLXRyZWUuaCAoTE9PS1VQX1BSRUZFUl9UWVBFUywgTE9PS1VQX1BSRUZFUl9OQU1FU1BBQ0VTLAoJTE9PS1VQX1BSRUZFUl9CT1RILCBMT09LVVBfTkFNRVNQQUNFU19PTkxZLCBMT09LVVBfVFlQRVNfT05MWSwKCUxPT0tVUF9RVUFMSUZJRVJTX09OTFksIExPT0tVUF9URU1QTEFURVNfRVhQRUNURUQpOiBOZXcgbWFjcm9zLgoJKiBkZWNsLmMgKHNlbGVjdF9kZWNsKTogUmVwbGFjZSB0d28gZmxhZyBwYXJhbWV0ZXJzIGJ5IG9uZS4KCSh1bnF1YWxpZmllZF9uYW1lc3BhY2VfbG9va3VwKTogTGlrZXdpc2UsIHBhc3MgZmxhZy4KCShsb29rdXBfZmxhZ3MpOiBOZXcgZnVuY3Rpb24uCgkobG9va3VwX25hbWVfcmVhbCk6IENvbXB1dGUgZmxhZ3MsIHBhc3MgdGhlbS4KCShsb29rdXBfbmFtZXNwYWNlX25hbWUpOiBDYWxsIHdpdGggemVyby1mbGFnLgoJKiBkZWNsMi5jIChhbWJpZ3VvdXNfZGVjbCk6IEFkZCBmbGFnIHBhcmFtZXRlciwgY29tcGxhaW4gb25seQoJYWNjb3JkaW5nIHRvIGZsYWdzLgoJKGxvb2t1cF91c2luZ19uYW1lc3BhY2UsIHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlKToKCUFkZCBmbGFnIHBhcmFtZXRlciwgcGFzcyB0aGVtIHRocm91Z2guCgkqIGxleC5jIChkb19zY29wZWRfaWQpOiBDYWxsIHdpdGggemVyby1mbGFnLgoKMTk5OC0wNy0xNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBVc2UgY29tcHR5cGVzLgoKMTk5OC0wNy0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfb2JqZWN0X2NhbGxfZXhwcik6IE1vdmUgdGVzdCBmb3IgdGhlCglmdW5jdGlvbiBjYWxsZWQgYmVpbmcgYSBUWVBFX0RFQ0wgdG8gLi4uCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogSGVyZS4KCjE5OTgtMDctMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvY19jbGFzcyk6IEFsc28gbG9vayBhdCB0ZW1wbGF0ZSBhcmd1bWVudHMsIGlmIGFueS4KCShhcmdfYXNzb2MpOiBIYW5kbGUgZXJyb3JfbWFya19ub2RlIGFuZCBtdWx0aXBsZSBsZXZlbHMgb2YgVFJFRV9MSVNULgoKCSogbGV4LmMgKGxvb2tpbmdfZm9yX3R5cGVuYW1lKTogRG9uJ3QgaW5pdGlhbGl6ZS4KCgkqIGRlY2wyLmMgKGFtYmlndW91c19kZWNsKTogQ2xhcmlmeSBlcnJvciBtZXNzYWdlLgoKCSogZGVjbC5jIChwdXNoX3VzaW5nX2RpcmVjdGl2ZSk6IEl0ZXJhdGUgb3ZlciBuYW1lc3BhY2VzIHVzZWQKCWluZGlyZWN0bHkuCgoxOTk4LTA3LTE1ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsMi5jIChhZGRfdXNpbmdfbmFtZXNwYWNlKTogSXRlcmF0ZSBvdmVyIG5hbWVzcGFjZXMgdXNlZAoJaW5kaXJlY3RseS4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEFjY2VwdCBuYW1lc3BhY2UgYWxpYXNlcyBhcyBsb2NhbHMuCgkoY2F0X25hbWVzcGFjZV9sZXZlbHMpOiBJZ25vcmUgYWxpYXNlcy4KCShkdXBsaWNhdGVfZGVjbHMpOiBJZ25vcmUgZHVwbGljYXRlIGFsaWFzZXMuCgkqIGRlY2wyLmMgKGRvX25hbWVzcGFjZV9hbGlhcyk6IFByb2Nlc3MgYmxvY2sgbGV2ZWwgbmFtZXNwYWNlCglhbGlhc2VzLiAgU3RvcmUgYWxpYXMgd2l0aCBwdXNoZGVjbC4gIFJlbW92ZSBvZHIgZXJyb3JzLgoJKiBwYXJzZS55IChuYW1lc3BhY2VfYWxpYXMpOiBOZXcgbm9uLXRlcm1pbmFsLgoJKGV4dGRlZik6IFVzZSBpdC4KCjE5OTgtMDctMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvY190eXBlKTogSGFuZGxlIE1FVEhPRF9UWVBFIGxpa2UgRlVOQ1RJT05fVFlQRS4KCUhhbmRsZSBURU1QTEFURV9UWVBFX1BBUk0uCgkoYXJnX2Fzc29jKTogUmV3cml0ZS4KCgkqIHB0LmMgKGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MpOiBEb24ndCBsb29rIGF0IHRoZSBjb250ZXh0IHVubGVzcwoJd2UgaGF2ZSB0by4KCgkqIG1ldGhvZC5jIChidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBGaXggbmFtZXNwYWNlIGhhbmRsaW5nLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogRXh0cmFjdCBhIGxvbmUgZnVuY3Rpb24gZnJvbSBhbgoJT1ZFUkxPQUQuCgoJKiBjYWxsLmMgKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IEhhbmRsZSBnZXR0aW5nIGEgbmFtZXNwYWNlCglmb3IgYmFzZXR5cGUgaW4gYSBkZXN0cnVjdG9yIGNhbGwuCgkoY2hlY2tfZHRvcl9uYW1lKTogSGFuZGxlIGVudW1zLgoKCSogcGFyc2UueSAodXNpbmdfZGlyZWN0aXZlKTogTmV3IG5vbnRlcm1pbmFsLgoJKGV4dGRlZiwgc2ltcGxlX3N0bXQpOiBVc2UgaXQuCgoxOTk4LTA3LTE0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAoYWRkX2Z1bmN0aW9uKTogTW92ZSBlcnJvciBtZXNzYWdlIC4uLgoJKGFyZ19hc3NvY19uYW1lc3BhY2UpOiAuLi4gZnJvbSBoZXJlLgoKMTk5OC0wNy0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAobmFtZXNwYWNlX3F1YWxpZmllcik6IEZpeCBtdWx0aXBsZSBsZXZlbCBoYW5kbGluZy4KCSogZGVjbDIuYyAobmFtZXNwYWNlX2FuY2VzdG9yKTogVXNlIENQX0RFQ0xfQ09OVEVYVC4KCShhcmdfYXNzb2MpOiBEb24ndCBza2lwIHRoZSBmaXJzdCBhcmd1bWVudCBvZiBhIGZ1bmN0aW9uLgoKVHVlIEp1bCAxNCAyMDowOToyMiAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBzZWFyY2guYyAobXlfdHJlZV9jb25zKTogQ2xlYW4gdXAuCgoxOTk4LTA3LTE0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGpvdXN0KTogRG9uJ3Qgd2FybiBhYm91dCAiY29uZnVzaW5nIiBjb252ZXJzaW9ucyB0byB0aGUKCXNhbWUgdHlwZS4KCjE5OTgtMDctMTQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjbGFzcy5jIChwdXNoX25lc3RlZF9jbGFzcyk6IENvbXBsYWluIGFib3V0IG5hbWVzcGFjZXMuCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IEVudGVyIHRoZSBvYmplY3QncyBuYW1lc3BhY2UuCgkoY3BfZmluaXNoX2RlY2wpOiBMZWF2ZSBpdC4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChjaGVja19kZWNsX25hbWVzcGFjZSk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfZmlsZSk6IENhbGwgaXQuCgkqIHBhcnNlLnkgKGNvbXBsZXhfZGlyZWN0X25vdHlwZV9kZWNsYXJhdG9yKTogU2V0IGNvbXBsZXhpdHkKCW9mIG5hbWVzcGFjZS1xdWFsaWZpZWQgaWRzIHRvIC0xLCBlbnRlciB0aGUgbmFtZXNwYWNlLgoKCSogbWV0aG9kLmMgKGJ1aWxkX3RlbXBsYXRlX2RlY2xfb3ZlcmxvYWQpOiBFeHBlY3QgX0RFQ0wgYXMgZmlyc3QKCXBhcmFtZXRlci4gIFB1dCBjb250ZXh0IHRlbXBvcmFyaWx5IGludG8gY3VycmVudF9uYW1lc3BhY2UuCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQ2hhbmdlIGNhbGxlci4KCSh0c3Vic3QpOiBMaWtld2lzZS4KCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IENhbGwgbWFya191c2VkIGFuZAoJY29udmVydF9mcm9tX3JlZmVyZW5jZSBmb3IgbmFtZXNwYWNlIG1lbWJlcnMuCgpNb24gSnVsIDEzIDIzOjI1OjI4IDE5OTggIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBzZWFyY2guYyAobXlfdHJlZV9jb25zKTogVGhlIGJpdGZpZWxkIGlzIGF0IGluZGV4IDIuCgpNb24gSnVsIDEzIDE3OjIxOjAxIDE5OTggIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQGN5Z251cy5jb20+CgoJKiBsYW5nLW9wdGlvbnMuaDogRm9ybWF0IGNoYW5nZWQgdG8gd29yayB3aXRoIG5ldyAtLWhlbHAgc3VwcG9ydAoJaW4gZ2NjL3RvcGxldi5jCgoxOTk4LTA3LTEyICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBDaGFuZ2UgY2FsbHMgb2YgZG9faWRlbnRpZmllci4KCURvIEtvZW5pZyBsb29rdXAgaW4gQ0FMTF9FWFBSLgoJKGFyZ19hc3NvYyk6IEhhbmRsZSBlcnJvcl9tYXJrLgoJKiBsZXguYyAoaXNfZ2xvYmFsKTogTmV3IGZ1bmN0aW9uLgoJKGRvX2lkZW50aWZpZXIpOiBFeHBlY3QgYXJndW1lbnRzIGZvciBLb2VuaWcgbG9va3VwLgoJKiBwYXJzZS55IChwcmltYXJ5KTogQWRkIHJ1bGVzIGZvciBjYWxscyBvZiB1bnF1YWxpZmllZCBmdW5jdGlvbiBjYWxscy4KCShkb19pZCk6IENoYW5nZSBjYWxsIG9mIGRvX2lkZW50aWZpZXIuCgkqIHB0LmMgKGZpbmlzaF9zdG10X2V4cHIpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9pZF9leHByKTogTGlrZXdpc2UuCgkoZmluaXNoX2NhbGxfZXhwcik6IEFkZCBpbnRlZ2VyIHBhcmFtZXRlciB0byBpbmRpY2F0ZQoJYXJndW1lbnQtZGVwZW5kZW50IGxvb2t1cC4KCgkqIGRlY2wuYyAoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBOZXcgZmllbGQgdXNpbmdfZGlyZWN0aXZlcy4KCShwdXNoX3VzaW5nX2RlY2wpOiBOb3Qgc29ycnkgYW55bW9yZS4KCShwdXNoX3VzaW5nX2RpcmVjdGl2ZSk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfdGFnKTogVXNlIENQX0RFQ0xfQ09OVEVYVCB0byBpdGVyYXRlLgoJKHVucXVhbGlmaWVkX25hbWVzcGFjZV9sb29rdXApOiBOZXcgZnVuY3Rpb24sIGNvZGUgZnJvbSAuLi4KCShsb29rdXBfbmFtZV9yZWFsKTogLi4uIGhlcmUuCgkqIGRlY2wyLmMgKGxvb2t1cF91c2luZ19uYW1lc3BhY2UpOiBQYXNzIHVzaW5nIGxpc3QgaW5zdGVhZCBvZgoJaW5pdGlhbCBzY29wZS4KCSh2YWxpZGF0ZV9ub25tZW1iZXJfdXNpbmdfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShkb19ub25tZW1iZXJfdXNpbmdfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShkb190b3BsZXZlbF91c2luZ19kZWNsKTogVXNlIHRoZW0uCgkoZG9fbG9jYWxfdXNpbmdfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShkb191c2luZ19kaXJlY3RpdmUpOiBTdXBwb3J0IGJsb2NrLWxldmVsIGRpcmVjdGl2ZXMuCgkqIHBhcnNlLnkgKHNpbXBsZV9zdG10KTogU3VwcG9ydCB1c2luZyBkZWNsYXJhdGlvbnMgYW5kCglkaXJlY3RpdmVzLgoJKG5hbWVzcGFjZV9xdWFsaWZpZXIsIG5hbWVzcGFjZV91c2luZ19kZWNsKTogTmV3IG5vbi10ZXJtaW5hbHMuCgoJKiB4cmVmLmMgKGNsYXNzbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShHTlVfeHJlZl9oaWVyKTogQ2hhbmdlIGNsYXNzIGFuZCBiYXNlIHBhcmFtZXRlcnMgdG8gdHJlZS4KCSogZGVjbC5jICh4cmVmX2Jhc2V5cGVzKTogQ2hhbmdlIGNhbGxlci4KCSogZnJpZW5kLmMgKG1ha2VfZnJpZW5kX2NsYXNzKTogTGlrZXdpc2UuCgoxOTk4LTA3LTEyICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi1mcy51c2MuZWR1PgoKCSogdHlwZWNrLmMgKGNvbXB0eXBlcywgY2FzZSBURU1QTEFURV9URU1QTEFURV9QQVJNKTogQWRkIHBhcmFtZXRlcgoJY29tcGFyaXNvbi4KCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0sIGNhc2UgVEVNUExBVEVfREVDTCk6IElmIGl0IGlzIGEKCXRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlciwgcmVjb3JkIGl0cyB1c2UuCgkoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSwgY2FzZSBURU1QTEFURV9URU1QTEFURV9QQVJNKTogVHJhdmVyc2UKCWl0cyB0ZW1wbGF0ZSBhcmd1bWVudHMgaWYgZXhpc3RzLgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm1zKTogTmV3IGZ1bmN0aW9uIGVxdWl2YWxlbnQKCXRvIGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyB3aGVuIElTX1RNUExfUEFSTSBpcyB0cnVlLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IFVzZSBpdC4gIFJlbW92ZSB0aGUgSVNfVE1QTF9QQVJNIHBhcmFtZXRlciwKCWFsbCBjYWxsZXJzIGNoYW5nZWQuCgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEFjY2VzcyBBUkdMSVNUIHByb3Blcmx5IHdoZW4gY3JlYXRpbmcgYQoJbmV3IHZlY3Rvci4gIE9ubHkgYWNjZXB0IGltcGxpY2l0IFRZUEVfREVDTCBhcyB2YWxpZCBhcmd1bWVudCBmb3IKCWEgdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVyIHdoZW4gaXQgaXMgYSBiYXNlIGNsYXNzIG9mCgljdXJyZW50X2NsYXNzX3R5cGUuICBEb24ndCBkaXNwbGF5IGVycm9yIG1lc3NhZ2Ugd2hlbiBDT01QTEFJTiBpcwoJZmFsc2UuCgoxOTk4LTA3LTEyICBLbGF1cyBLYWVtcGYgIChra2FlbXBmQHByb2dpcy5kZSkKCgkqIHJlcG8uYyAoZ2V0X2Jhc2VfZmlsZW5hbWUpOiBVc2UgZmlsZV9uYW1lX25vbmRpcmVjdG9yeS4KCShvcGVuX3JlcG9fZmlsZSk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGZpbGVfbmFtZV9ub25kaXJlY3RvcnkpOiBBZGQgcHJvdG90eXBlLgoKMTk5OC0wNy0xMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IFB1bGwgdGhlIGlkZW50aWZpZXIgb3V0IG9mIGRlY2xhcmF0b3IuCglVc2UgY3BfZXJyb3IgYW5kIGZyaWVuZHMuCgkqIGRlY2wyLmMgKHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogRml4IGNhbGwgdG8KCXB1cnBvc2VfbWVtYmVyLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBEb24ndCBjYWxsIGNvbXBsZXRlX3R5cGUgb24gYSBuYW1lc3BhY2UuCgkoZ3Jva3ZhcmRlY2wpOiBVc2UgREVDTF9DTEFTU19TQ09QRV9QLgoJKiBjdnQuYyAoY29udmVydF9wb2ludGVyX3RvX3JlYWwpOiBDaGVjayBmb3IgZXJyb3JfbWFya19ub2RlIHNvb25lci4KCSogY2xhc3MuYyAod2Fybl9oaWRkZW4pOiBGaXggZm9yIE9WRVJMT0FELgoJRnJvbSBncmFoYW1zQHJjcC5jby51azoKCSogY3AtdHJlZS5oIChERUZBUkdfTk9ERV9DSEVDSyk6IE5ldyBtYWNyby4KCShERUZBUkdfTEVOR1RILCBERUZBUkdfUE9JTlRFUik6IFVzZSBpdC4KClN1biBKdWwgMTIgMDE6MjA6NTcgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogZysrLjEgKC10cmFkaXRpb25hbCk6IFJlbW92ZSBkdXBsaWNhdGVkIGRvY3VtZW50YXRpb24uCgoxOTk4LTA3LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogbWV0aG9kLmMgKGZsdXNoX3JlcGVhdHMpOiBBZGQgbnJlcGVhdHMgcGFyYW1ldGVyLgoJKGlzc3VlX25yZXBlYXRzKTogTGlrZXdpc2UuCgkoaXNfYmFja19yZWZlcmVuY2VhYmxlX3R5cGUpOiBOZXcgZnVuY3Rpb24uICBEb24ndCBiYWNrLXJlZmVyZW5jZQoJVEVNUExBVEVfVFlQRV9QQVJNcyBhcyB3ZWxsIGFzIHNpbXBsZSB0eXBlcyBsaWtlIGludGVnZXJzLgoJKGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZV93aXRoX0djb2RlKTogTGlrZXdpc2UuCgkobGFzdHR5cGUpOiBSZW1vdmUuCgkobnJlcGVhdHMpOiBMaWtld2lzZS4KCShOcmVwZWF0cyk6IExpa2V3aXNlLgoJKHN0YXJ0X3NxdWFuZ2xpbmcpOiBEb24ndCBjbGVhciB0aGUgdmFyaWFibGVzIHJlbW92ZWQgYWJvdmUuCgkoZW5kX3NxdWFuZ2xpbmcpOiBMaWtld2lzZS4KCShmbHVzaF9yZXBlYXRzKTogVGlkeS4gIFVzZSBucmVwZWF0cyBwYXJhbWV0ZXIgcmF0aGVyIHRoYW4KCU5yZXBlYXRzIGdsb2JhbC4KCShpc3N1ZV9ucmVwZWF0cyk6IExpa2V3aXNlLCBidXQgd2l0aCBucmVwZWF0cyBnbG9iYWwuICBVc2UKCWlzX2JhY2tyZWZlcmVuY2VhYmxlX3R5cGUuCgkoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBUaWR5LiAgQWRkIGNvbW1lbnQuICBVc2UKCWJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZS4KCShidWlsZF91bmRlcnNjb3JlX2ludCk6IENvbW1lbnQuCgkoYnVpbGRfb3ZlcmxvYWRfc2NvcGVfcmVmKTogVXNlIGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZS4KCShidWlsZF9vdmVybG9hZF9pbnQpOiBMaWtld2lzZS4KCShidWlsZF90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtX25hbWVzKTogVGlkeS4KCShidWlsZF90ZW1wbGF0ZV9wYXJtX25hbWVzKTogVXNlIGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZS4KCShidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogQWRkIGNvbW1lbnRzLgoJKGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZV93aXRoX0djb2RlKTogU3BsaXQgb3V0IGZyb20KCWJ1aWxkX21hbmdsZWRfbmFtZS4KCShidWlsZF9tYW5nbGVkX25hbWVfZm9yX3R5cGUpOiBVc2UgaXQuCgkoYnVpbGRfbWFuZ2xlZF9uYW1lKTogUmV3b3JrIHRvIHVzZSBidWlsZF9tYW5nbGVkX25hbWVfZm9yX3R5cGUKCWFuZCB0byBub3QgdXNlIGdsb2JhbCBucmVwZWF0cy9OcmVwZWF0cy4gIFRpZHkuCgkocHJvY2Vzc19tb2RpZmllcnMpOiBUaWR5LgoJKGNoZWNrX2J0eXBlKTogVXNlIGlzX2JhY2tyZWZlcmVuY2VhYmxlX3R5cGUuICBBZGQgY29tbWVudC4KCVJlbmFtZSBgbm9kZScgdG8gYHR5cGUnLgoJKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IFNldCBudW1lcmljX291dHB1dF9uZWVkX2JhciBoZXJlLgoJVXNlIGJ1aWxkX21hbmdsZWRfbmFtZV9mb3JfdHlwZS4gIFRpZHkuCgkoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogVGlkeS4gIERvbid0IHVzZSBOcmVwZWF0cy4gIFVzZQoJYnVpbGRfbWFuZ2xlZF9uYW1lX2Zvcl90eXBlLgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBEb24ndCBsb29rIGF0IERFQ0xfVEVNUExBVEVfSU5GTwoJZm9yIFRZUEVfREVDTHMuCgoxOTk4LTA3LTA4ICBWbGFkaW1pciBOLiBNYWthcm92ICA8dm1ha2Fyb3ZAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAod2Fybl9sb25nX2xvbmcpOiBEZWZpbmUuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBZGQgZmxhZyBgd2Fybl9sb25nX2xvbmcnIGFzIGd1YXJkIGZvcgoJd2FybmluZyAiQU5TSSBDKysgZG9lcyBub3Qgc3VwcG9ydCBgbG9uZyBsb25nJyIuCgkqIGRlY2wyLmMgKHdhcm5fbG9uZ19sb25nKTogRGVmaW5lLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IFBhcnNlIC1XbG9uZy1sb25nLCAtV25vLWxvbmctbG9uZyBvcHRpb25zLgoKMTk5OC0wNy0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jICh4cmVmX3RhZyk6IEhhbmRsZSBhdHRyaWJ1dGVzIGJldHdlZW4gJ2NsYXNzJyBhbmQgbmFtZS4KCSogcGFyc2UueSAoYWdncik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCSogTWFrZWZpbGUuaW4gKEVYUEVDVEVEKTogQWRqdXN0LgoKCSogY3AtdHJlZS5oOiBEZWNsYXJlIGZsYWdfb3B0aW9uYWxfZGlhZ3MgYW5kIHdhcm5fbXVsdGljaGFyLgoJKiBkZWNsMi5jOiBEZWZpbmUgdGhlbS4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgdGhlbS4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZm9wdGlvbmFsLWRpYWdzLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgbXVsdGlwbGUgbWVhbmluZ3Mgb2YKCW5hbWUgaWYgLWZuby1vcHRpb25hbC1kaWFncy4KCSogZGVjbC5jIChwdXNoZGVjbF9jbGFzc19sZXZlbCk6IExpa2V3aXNlLgoJKiBsZXguYyAocmVhbF95eWxleCk6IENoZWNrIHdhcm5fbXVsdGljaGFyLgoKMTk5OC0wNy0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfdGFnKTogVXNlIENQX0RFQ0xfQ09OVEVYVC4KCgkqIHRyZWUuYyAobWFrZV9iaW5mbyk6IEZpeCBsZW5ndGguCgoxOTk4LTA2LTMwICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGJsaXNzLm5hYmkubmV0PgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogUmVtb3ZlIHdhcm5fdGVtcGxhdGVfZGVidWdnaW5nLgoJKiBsYW5nLW9wdGlvbnMuaDogTGlrZXdpc2UuCgpNb24gSnVuIDI5IDIwOjE3OjQwIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGV4Y2VwdC5jIChidWlsZF9laF90eXBlX3R5cGVfcmVmKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgc3VzcCcuCgkocHJvY2Vzc19zdGFydF9jYXRjaF9ibG9jayk6IExpa2V3aXNlIGZvciB2YXJpYWJsZXMKCWBmYWxzZV9sYWJlbF9ydHgnLCBgY2FsbF9ydHgnIGFuZCBgcmV0dXJuX3ZhbHVlX3J0eCcuCgoxOTk4LTA2LTI5ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogdHJlZS5jIChidWlsZF9zcmNsb2MpOiBNYWtlIHN1cmUgd2UgYWxsb2NhdGUgdGhpcyBub2RlIG9uIHRoZQoJcGVybWFuZW50IG9ic3RhY2suCgpTYXQgSnVuIDI3IDIzOjM0OjE4IDE5OTggIEZyZWQgRmlzaCAgPGZuZkBuaW5lbW9vbnMuY29tPgoKCSogZysrc3BlYy5jIChORUVEX01BVEhfTElCUkFSWSk6IERlZmluZSB0byAxIGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuCgkobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBJbml0aWFsaXplIG5lZWRfbWF0aCB3aXRoIE5FRURfTUFUSF9MSUJSQVJZLgoJKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogT25seSBhZGQgLWxtIGF1dG9tYXRpY2FsbHkgaWYgbmVlZF9tYXRoIGlzCglub256ZXJvLgoKU2F0IEp1biAyNyAxMjoyMjo1NiAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlLWxhbmcuaW4gKGcrKyk6IERlcGVuZCBvbiBta3N0ZW1wLm8uICBMaW5rIGluIG1rc3RlbXAubwoKU2F0IEp1biAyNyAwNzozNjowOSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoRVhQUl9IKTogTmV3IGRlcGVuZGVuY3kgdmFyaWFibGUuCgkoZGVjbDIubyk6IERlcGVuZCBvbiAkKEVYUFJfSCkuCgkodHlwZWNrLm8pOiBMaWtld2lzZS4KCShpbml0Lm8pOiBMaWtld2lzZS4KCShleHByLm8pOiBMaWtld2lzZS4KCjE5OTgtMDYtMjUgIEJlbmphbWluIEtvc25payAgPGJrb3pAbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9lbnVtKTogUHV0IGxvY2FsIGVudW1zIG9uIHBlcm1hbmVudF9vYnN0YWNrLgoKMTk5OC0wNi0yNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwLXRyZWUuaCAoY19nZXRfYWxpYXNfc2V0KTogRGVjbGFyZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBsYW5nX2dldF9hbGlhc19zZXQuCgoxOTk4LTA2LTI1ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKG1hcmtfYWxsX3J1bnRpbWVfbWF0Y2hlcyk6IEFkZCBmdW5jdGlvbiBwcm90b3R5cGUuCgkqIGV4Y2VwdC5jIChtYXJrX2FsbF9ydW50aW1lX21hdGNoZXMpOiBTZXQgVFJFRV9TWU1CT0xfUkVGRVJFTkNFRAoJZmxhZyBmb3IgYWxsIGZ1bmN0aW9uIGRlY2xzIHdoaWNoIGFyZSBpbiB0aGUgZXhjZXB0aW9uIHRhYmxlLgoJKiBleGNlcHRpb24uY2MgKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogQ2hlY2sgZm9yIENBVENIX0FMTF9UWVBFIG1hdGNoLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IENhbGwgbWFya19hbGxfcnVudGltZV9tYXRjaGVzIHRvIG1ha2Ugc3VyZQoJY29kZSBpcyBlbWl0dGVkIGZvciBhbnkgcmVmZXJlbmNlZCBydHRpIGZ1bmN0aW9uLgoKMTk5OC0wNi0yNSAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGFuZy1zcGVjcy5oOiBVc2UgbmV3IHwgc3ludGF4IHRvIGVsaW1pbmF0ZQoJc3RyaW5nIGNvbmNhdGVuYXRpb24uCgoxOTk4LTA2LTI1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKENQX0RFQ0xfQ09OVEVYVCk6IE5ldyBtYWNyby4KCSogZGVjbDIuYyAoaXNfbmFtZXNwYWNlX2FuY2VzdG9yLCBsb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogVXNlIGl0LgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBMaWtld2lzZS4KCSogc2lnLmMgKGJ1aWxkX3NpZ25hdHVyZV9wb2ludGVyX29yX3JlZmVyZW5jZV90eXBlKTogRG9uJ3Qgc2V0CglERUNMX0NPTlRFWFQuCgoxOTk4LTA2LTI0ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJU2V0IERFQ0xfQ09OVEVYVCBmb3IgZ2xvYmFscyB0byBOVUxMX1RSRUUgaW5zdGVhZCBvZiBnbG9iYWxfbmFtZXNwYWNlLgoJKiBjcC10cmVlLmggKEZST0JfQ09OVEVYVCk6IE5ldyBtYWNyby4KCShERUNMX01BSU5fUCk6IDo6bWFpbiBzaG91bGQgaGF2ZSBhIERFQ0xfQ09OVEVYVCBvZiBOVUxMX1RSRUUuCgkqIGRlY2wuYyAobmFtZXNwYWNlX2JpbmRpbmcpOiBSZXBsYWNlIE5VTExfVFJFRSB3aXRoCglnbG9iYWxfbmFtZXNwYWNlLgoJKHNldF9uYW1lc3BhY2VfYmluZGluZywgcG9wX25hbWVzcGFjZSwgbG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChpc19uYW1lc3BhY2VfYW5jZXN0b3IsIGxvb2t1cF91c2luZ19uYW1lc3BhY2UpOgoJTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaHRhZyk6IFVzZSBGUk9CX0NPTlRFWFQuCgkocHVzaGRlY2wsIG1ha2VfdHlwZW5hbWVfdHlwZSwgZGVmaW5lX2Z1bmN0aW9uLCBncm9rZGVjbGFyYXRvcik6CglMaWtld2lzZS4KCSogZGVjbDIuYyAoc2V0X2RlY2xfbmFtZXNwYWNlLCBkb19uYW1lc3BhY2VfYWxpYXMpOiBMaWtld2lzZS4KCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwsIGxvb2t1cF90ZW1wbGF0ZV9jbGFzcywgdHN1YnN0KToKCUxpa2V3aXNlLgoJKiBkZWNsMi5jIChkZWNsX25hbWVzcGFjZSk6IFJldHVybiBnbG9iYWxfbmFtZXNwYWNlIGlmIG5vIGNvbnRleHQuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9uZXN0ZWRfbmFtZSk6IEV4cGVjdCBudWxsIGFzIGNvbnRleHQuCgkqIHB0LmMgKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IERvIG5vdGhpbmcgZm9yIG51bGwKCWNvbnRleHRzLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEFsbG93IGZvciBudWxsIGlkX2NvbnRleHQuCgoxOTk4LTA2LTI1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBTZXQgY3VycmVudF9mdW5jdGlvbl9pc190aHVuayBmb3IgdGhlCglBU01fT1VUUFVUX01JX1RIVU5LIGNhc2UgYXMgd2VsbC4KCjE5OTgtMDYtMjMgIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdGlvbi5jYyAoX19jcGx1c190eXBlX21hdGNoZXIpOiBHZXQgYSBtYXRjaF9pbmZvIHBvaW50ZXIKCWluc3RlYWQgb2YgYW4gZXhjZXB0aW9uIHRhYmxlIGVudHJ5IGFzIGEgcGFyYW1ldGVyLgoKMTk5OC0wNi0yMyAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogcGFyc2UueSAoZnVuY3Rpb25fdHJ5X2Jsb2NrKTogRG9uJ3QgY2FsbCBzdGFydF9jYXRjaF9oYW5kbGVyLgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogUmVtb3ZlIGNvZXJjZWQgZmllbGQgZnJvbSBkZWNsYXJhdGlvbi4KCShidWlsZF9laF90eXBlX3R5cGVfcmVmKTogTmV3IGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbiBhZGRyZXNzIG9mIGEKCXJ0dGkgZnVuY3Rpb24gZm9yIHRoZSBuZXcgc3R5bGUgZXhjZXB0aW9uIHRhYmxlcy4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBTcGxpdCBmdW5jdGlvbiwgdGhpcyBjb250YWlucyB0aGUKCWNvbW1vbiBwYXJ0LgoJKHByb2Nlc3Nfc3RhcnRfY2F0Y2hfYmxvY2tfb2xkKTogTmV3IGZ1bmN0aW9uIHRvIHBlcmZvcm0gdGhlIHJlc3QKCW9mIGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayB1bmRlciBvbGQgc3R5bGUgZXhjZXB0aW9ucy4KCShwcm9jZXNzX3N0YXJ0X2NhdGNoX2Jsb2NrX29sZCk6IE5ldyBmdW5jdGlvbiB0byBwZXJmb3JtIHRoZSByZXN0CglvZiBleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2sgdW5kZXIgbmV3IHN0eWxlIGV4Y2VwdGlvbnMuCgkoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IE9ubHkgcG9wIHRoZSBmYWxzZSBsYWJlbCBvZmYgdGhlIHN0YWNrIHVuZGVyCgl0aGUgb2xkIHN0eWxlIG9mIGV4Y2VwdGlvbnMuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHJ5X2Jsb2NrKTogRG9uJ3QgY2FsbCBzdGFydF9jYXRjaF9oYW5kbGVyLgoJKiBleGNlcHRpb24uY2MgKHN0cnVjdCBjcF9laF9pbmZvKTogQWRkIG9yaWdpbmFsX3ZhbHVlIGZpZWxkLgoJKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogUGVyZm9ybSB0eXBlIG1hdGNoaW5nIG9uIHRoZSBvcmlnaW5hbCBleGNlcHRpb24KCXZhbHVlLCBhbmQgaWYgd2UgaGF2ZSBhIG1hdGNoLCBzZXQgdGhlIGN1cnJlbnQgdmFsdWUuCgkoX19jcF9wdXNoX2V4Y2VwdGlvbik6IFNldCB0aGUgb3JpZ2luYWwgZXhjZXB0aW9uIHZhbHVlLgoKMTk5OC0wNi0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChqb3VzdCk6IEZpeCBjb25mdXNpbmcgY29udmVyc2lvbiB3YXJuaW5nLgoKCSogY2FsbC5jIChidWlsZF9vcF9kZWxldGVfY2FsbCk6IEFkZCBwbGFjZW1lbnQgcGFybS4gIENoZWNrCglMT09LVVBfU1BFQ1VMQVRJVkVMWS4KCSogY3AtdHJlZS5oLCBkZWNsMi5jLCBpbml0LmM6IEFkanVzdC4KCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBVc2UgaXQuCgoJKiBwdC5jICh0c3Vic3QpOiBEaWFnbm9zZSBjcmVhdGluZyB2b2lkIGZpZWxkcyBvciB2YXJpYWJsZXMuCgpNb24gSnVuIDIyIDA4OjUwOjI2IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgdG1wJy4KCgkqIGNwLXRyZWUuaCAoY2hlY2tfZHRvcl9uYW1lKTogQWRkIHByb3RvdHlwZS4KCgkqIGluaXQuYyAoZXhwYW5kX21lbWJlcl9pbml0KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKCWBwdHJfdHlwZV9ub2RlJywgYHBhcm0nIGFuZCBgcnZhbCcuCgoJKiBwdHJlZS5jIChwcmludF9sYW5nX3R5cGUpOiBVc2UgSE9TVF9XSURFX0lOVF9QUklOVF9ERUMgc3BlY2lmaWVyCglpbiBjYWxsIHRvIGZwcmludGYuCgkobGFuZ19wcmludF94bm9kZSk6IExpa2V3aXNlLgoKCSogdHlwZWNrMi5jIChlbnVtX25hbWVfc3RyaW5nKTogQ2FzdCBhcmd1bWVudCB0byBzcHJpbnRmIHRvIGxvbmcKCWFuZCB1c2UgJWxkIHNwZWNpZmllci4KCgkqIHhyZWYuYyAoR05VX3hyZWZfZW5kX3Njb3BlKTogVXNlIEhPU1RfV0lERV9JTlRfUFJJTlRfREVDCglzcGVjaWZpZXIgaW4gY2FsbCB0byBmcHJpbnRmLgoJKEdOVV94cmVmX21lbWJlcik6IENhc3QgYXJndW1lbnQgdG8gc3ByaW50ZiB0byBpbnQuCgpGcmkgSnVuIDE5IDIzOjIyOjQyIDE5OTggIEJydW5vIEhhaWJsZSAgPGJydW5vQGxpbnVpeC5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CgoJKiB0eXBlY2syLmMgKHBvcF9pbml0X2xldmVsKTogV2FybiBhYm91dCBpbXBsaWNpdCB6ZXJvIGluaXRpYWxpemF0aW9uCglvZiBzdHJ1Y3QgbWVtYmVycy4KClRodSBKdW4gMTggMDk6MzI6MzIgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3AtdHJlZS5oOiBQcm90b3R5cGUgZnVuY3Rpb24gYGNoZWNrX2phdmFfbWV0aG9kJy4KCjE5OTgtMDYtMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBNYWtlIGNvbmZsaWN0aW5nIHVzZSBvZiBpZCBhIHBlZHdhcm4uCgkqIGRlY2wuYyAocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBMaWtld2lzZS4KCjE5OTgtMDYtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBJc3N1ZSBhbiBlcnJvciB3aGVuIHByZXNlbnRlZAoJd2l0aCBhbiBpbnRlZ2VyIChyZWFsKSBjb25zdGFudCB0aGF0IGNhbm5vdCBiZSBzaW1wbGlmaWVkIHRvIGFuCglJTlRfQ1NUIChSRUFMX0NTVCkuCgoJKiBjcC10cmVlLmggKGNfZ2V0X2FsaWFzX3NldCk6IFJlbW92ZSBkZWNsYXJhdGlvbiBhZGRlZCBpbgoJMTk5OC0wNi0xMyBjaGFuZ2UgdGhhdCBzaG91bGQgbmV2ZXIgaGF2ZSBiZWVuIGNoZWNrZWQgaW4uCgoxOTk4LTA2LTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IENoYW5nZSAlIGluIGZvcm1hdCBzdHJpbmdzCgl0byAlJS4KCgkqIGRlY2wuYyAoZ3Jva3ZhcmRlY2wpOiBEb24ndCBidWlsZF9zdGF0aWNfbmFtZSBmb3IgZGVjbHMgdGhhdAoJYXJlbid0IGF0IG5hbWVzcGFjZSBzY29wZS4KCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IENhdGNoIGRlZmF1bHQtaW5pdGlhbGl6YXRpb24gb2YKCXJlZmVyZW5jZXMuCgoxOTk4LTA2LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZXJyZm4uYyAoY3BfdGhpbmcpOiBIYW5kbGUgdGhlIGAlJScgZm9ybWF0dGluZyBzZXF1ZW5jZS4KCjE5OTgtMDYtMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBDb21wbGFpbiBhYm91dCBnZXR0aW5nIGEgbmFtZXNwYWNlCglvciBjbGFzcyB0ZW1wbGF0ZS4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBSZW1vdmUgY2hlY2sgZm9yIG5hbWVzcGFjZXMuCgkqIHR5cGVjazIuYyAoaW5jb21wbGV0ZV90eXBlX2Vycm9yKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHRlbXBsYXRlX2FyZyk6IEFkZCBQVFlQRU5BTUUgZXhwYW5zaW9uLgoKMTk5OC0wNi0xNiAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IERvbid0IGJ1aWxkIGV4dGVybmFsIGFzc2VtYmxlciBuYW1lcyBmb3IKCVRZUEVOQU1FcyBpbiBvdGhlciBuYW1lc3BhY2VzIGFzIHRoZXJlIGlzIG5vIGRlY2xhcmF0b3IuCgkqIGVycm9yLmMgKGNwX2ZpbGVfb2YsIGNwX2xpbmVfb2YpOiBEb24ndCBleHRyYWN0IGZpbGUgb3IgbGluZSBudW1iZXIKCWluZm8gZnJvbSBERUNMX0NPTlRFWFQgaWYgaXQgaXMgTlVMTC4KCjE5OTgtMDYtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoY2hlY2tfZHRvcl9uYW1lKTogU3BsaXQgb3V0LgoJKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IFVzZSBpdC4KCShidWlsZF9tZXRob2RfY2FsbCk6IFVzZSBpdC4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogVXNlIGl0LgoKCSogdHlwZWNrLmMgKGJ1aWxkX3N0YXRpY19jYXN0KTogRml4IGhhbmRsaW5nIG9mIHBvaW50ZXJzIHRvIG1lbWJlcnMuCgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IEp1c3QgcmV0dXJuIG5vdGhpbmcgZnJvbSBhIGNvbnN0cnVjdG9yLgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogQ29tcGxhaW4gYWJvdXQgcmV0dXJuaW5nIGEgdm9pZAoJZXhwcmVzc2lvbiBmcm9tIGEgZGVzdHJ1Y3Rvci4KCjE5OTgtMDYtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjbGFzcy5jIChhbHRlcl9hY2Nlc3MpOiBBY2NlcHQgYSBCSU5GTyBleHBsYWluaW5nIGhvdyB0byBnZXQKCWZyb20gdGhlIGVudGl0eSB3aG9zZSBhY2Nlc3NlZCBpcyBiZWluZyBhbHRlcmVkIHRvIHRoZSB0eXBlIGRvaW5nCgl0aGUgYWx0ZXJpbmcuCgkoaGFuZGxlX3VzaW5nX2RlY2wpOiBOZXcgZnVuY3Rpb24gY29udGFpbmluZyBjb2RlIHNwbGl0IG91dCBmcm9tIC4uLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IEhlcmUuCgoJKiBjcC10cmVlLmggKGNvbXBsZXRlX3R5cGVfb3JfZWxzZSk6IERlY2xhcmUuCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEsIGJ1aWxkX2RlbGV0ZSk6IFVzZSBpdC4KCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZSk6IFVzZSBjb21wbGV0ZV90eXBlLCByYXRoZXIgdGhhbgoJZXhwYW5kaW5nIGl0IGlubGluZS4KCShjb21wbGV0ZV90eXBlX29yX2Vsc2UpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IFVzZSBpdC4KCShwb2ludGVyX2ludF9zdW0pOiBNYWtlIHN1cmUgdGhlIHR5cGUgcG9pbnRlZCB0byBpcyBjb21wbGV0ZS4KCShwb2ludGVyX2RpZmYpOiBMaWtld2lzZS4KCgkqIHB0LmMgKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBUcmF2ZXJzZSB0aGUgVFlQRV9DT05URVhUIGZvcgoJdHlwZXMuCgoJKiBzZWFyY2guYyAoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBOb3RlIHRoYXQgbWVtYmVyIHRlbXBsYXRlcwoJY2Fubm90IG92ZXJyaWRlIHZpcnR1YWwgZnVuY3Rpb25zLgoKMTk5OC0wNi0xMiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogSWYgREVDTEFSQVRPUiB0dXJuZWQgaW50bwoJYW4gZXJyb3JfbWFya19ub2RlIGZyb20gbG9va3VwX3RlbXBsYXRlX2Z1bmN0aW9uLCByZXR1cm4gdGhlIHNhbWUuCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogQWxzbyBtYWtlIHN1cmUgVEVNUExBVEVfSUQgaXNuJ3QgYW4KCWVycm9yX21hcmtfbm9kZSwgYmVmb3JlIHdlIHRyeSB0byByZWFkIGl0cyBvcGVyYW5kcy4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IElmIHdlIGdvdCBhbiBlcnJvcl9tYXJrX25vZGUgZnJvbQoJY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24sIGp1c3QgcmV0dXJuIGl0IHJpZ2h0IGJhY2suCgoxOTk4LTA2LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IERvbid0IHRyZWF0IHRlbXBsYXRlLWlkcyB0aGF0IGRvbid0CglzcGVjaWZ5IGFueSB0ZW1wbGF0ZSBhcmd1bWVudHMgYXMgZXF1aXZhbGVudCB0byBvcmRpbmFyeQoJaWRlbnRpZmllcnMuICBVc2UgT0ZGU0VUX1JFRiBpbnN0ZWFkIG9mIFNDT1BFX1JFRiB0byByZWZlciB0bwoJcG9pbnRlci10by1tZW1iZXJzIGZvciBtZW1iZXIgdGVtcGxhdGVzLiAgVGlkeSBzbGlnaHRseS4KCSogY3AtdHJlZS5kZWYgKFRFTVBMQVRFX0lEX0VYUFIpOiBSZXZpc2UgZG9jdW1lbnRhdGlvbi4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogSGFuZGxlIHRlbXBsYXRlLWlkcyBsaWtlIG9yZGluYXJ5CglpZGVudGlmaWVycywgZm9yIHRoZSBtb3N0IHBhcnQsIGJ1dCBzdG9yZSBhIFRFTVBMQVRFX0lEX0VYUFIgaW4gdGhlCglvZmZzZXQgcGFydCBvZiB0aGUgT0ZGU0VUX1JFRi4KCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogQ2hhbmdlIGNoZWNrIGZvciB1bmtub3duIHR5cGVzIHRvCglsb29rIGZvciBPRkZTRVRfUkVGcywgbm90IFNDT1BFX1JFRnMuCgoxOTk4LTA2LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAoaXNfbWVtYmVyX3RlbXBsYXRlX2NsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogVXNlIGl0LgoKMTk5OC0wNi0xMSAgQmVuamFtaW4gS29zbmlrICA8YmtvekBlbG1vLmN5Z251cy5jb20+CgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogQWRkIHN1cHBvcnQgZm9yIG5lc3RlZCBjbGFzc2VzIHVzaW5nCgltZW1iZXIgZnVuY3Rpb25zIG9mIHRoZSBlbmNsb3NpbmcgY2xhc3MgYXMgZnJpZW5kcy4KCjE5OTgtMDYtMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjYWxsLmMgKGNvbnZlcnRfZGVmYXVsdF9hcmcpOiBNYWtlIGdsb2JhbCwgbm90IHN0YXRpYy4KCShjb252ZXJ0X2FyZ19mb3JfZWxsaXBzaXMpOiBTcGxpdCBvdXQgZnJvbSAuLi4KCShidWlsZF9vdmVyX2NhbGwpOiBIZXJlLgoJKiBjcC10cmVlLmggKGNvbnZlcnRfZGVmYXVsdF9hcmcpOyBEZWNsYXJlLgoJKGNvbnZlcnRfYXJnX3RvX2VsbGlwc2lzKTogTGlrZXdpc2UuCgkoZG9fbWVtYmVyX2luaXQpOiBSZW1vdmUuCgkqIGluaXQuYyAoZG9fbWVtYmVyX2luaXQpOiBSZW1vdmU7IHRoaXMgY29kZSBpcyBkZWFkLgoJKGV4cGFuZF9tZW1iZXJfaW5pdCk6IFJlbW92ZSBtdWNoIG9mIHRoaXMgY29kZTsgaXQgaXMgZGVhZC4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogVXNlIGNvbnZlcnRfZGVmYXVsdF9hcmcgYW5kCgljb252ZXJ0X2FyZ19mb3JfZWxsaXBzaXMsIHJhdGhlciB0aGFuIGR1cGxpY2F0aW5nIGhlcmUuCgoJKiBjYWxsLmMgKGNvbnZlcnRfbGlrZSk6IERvbid0IGZhaWwgc2lsZW50bHkgaWYKCWJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uIGZhaWxzLiAgQWx3YXlzIHJldHVybiBlcnJvcl9tYXJrX25vZGUKCWZvciBmYWlsdXJlLgoKMTk5OC0wNi0xMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGNvdmFyaWFudF9yZXR1cm5fcCk6IENvbXBsYWluIGFib3V0IGFtYmlndW91cyBiYXNlLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBEaWFnbm9zZSByZWYgdG8gbmVzdGVkIHR5cGUuCgoxOTk4LTA2LTEwICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rcGFybXMpOiBDaGVjayB0aGF0IElOSVQgaXNuJ3QgYW4gZXJyb3JfbWFya19ub2RlCgliZWZvcmUgZ2l2aW5nIGVycm9yIGFib3V0IGludmFsaWQgdHlwZSBmb3IgZGVmYXVsdCBhcmcuCgoxOTk4LTA2LTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogRml4IHRoaW5rby4KCjE5OTgtMDYtMTAgIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IE5ldyBhcmdjL2FyZ3YgaW50ZXJmYWNlLgoJKiBjcC10cmVlLmggKGxhbmdfZGVjb2RlX29wdGlvbik6IE5ldyBhcmdjL2FyZ3YgaW50ZXJmYWNlLgoJKiBsYW5nLXNwZWNzLmggKGRlZmF1bHRfY29tcGlsZXJzKTogT25seSBjYWxsIGNwcCBpZiAtRSwgLU0gb3IgLU1NIGlzCglzcGVjaWZpZWQgZm9yIGNwcGxpYi1lbmFibGVkIGNvbXBpbGVycy4KCSogbGV4LmMgKGxhbmdfaW5pdCk6IERvbid0IGNoZWNrX25ld2xpbmUgZm9yIGNwcGxpYi4KCShpbml0X3BhcnNlKTogRG9uJ3QgaW5pdGlhbGl6ZSBjcHBsaWIgaGVyZS4KCjE5OTgtMDYtMTAgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IE1ha2Ugc3VyZSBGSUVMRCBoYXMgYSBsYW5nX3NwZWNpZmljCglwaWVjZSBiZWZvcmUgY2hlY2tpbmcgREVDTF9NVVRBQkxFX1AuCgoxOTk4LTA2LTEwICBKb2huIENhcnIgIDxqZmNAbWl0LmVkdT4KCgkqIHRyZWUuYyAoZGVidWdfYmluZm8pOiBNYWtlIHByaW50ZiBmb3JtYXQgbWF0Y2ggYXJndW1lbnRzLgoKCSogZXJyb3IuYyAoT0JfUFVUSSk6IE1ha2UgcHJpbnRmIGZvcm1hdCBtYXRjaCBhcmd1bWVudHMuCgoxOTk4LTA2LTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBIYW5kbGUgZGVmYXVsdC1pbml0aWFsaXphdGlvbi4KCgkqIGV4Y2VwdC5jIChidWlsZF90aHJvdyk6IEhhbmRsZSB0aHJvd2luZyBOVUxMLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IFVzZSByZXNvbHZlX29mZnNldF9yZWYuCgoJKiBzZWFyY2guYyAoY29tcHV0ZV9hY2Nlc3MpOiBPbmx5IHN0cmlwIGFuIGFub255bW91cyB1bmlvbgoJZm9yIGEgRklFTERfREVDTC4KCgkqIGNhbGwuYyAoYWRkX2J1aWx0aW5fY2FuZGlkYXRlcyk6IFR3ZWFrLgoKCSogY3Z0LmMgKGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uKTogUmVzdG9yZSBjb2RlIGZvciBjb252ZXJzaW9uCglmcm9tIGNsYXNzIHR5cGVzLgoJKiBkZWNsMi5jIChkZWxldGVfc2FuaXR5KTogVXNlIGl0LiAgQ2xlYW4gdXAuCgoJKiB0eXBlY2suYyAoY29tcF9wdHJfdHR5cGVzX3JlYWwpOiBGaXggY3YtcXVhbCBjb21wYXJpc29ucy4KCjE5OTgtMDYtMTAgIEJyYW5rbyBDaWJlaiAgPGJyYW5rby5jaWJlakBoZXJtZXMuc2k+CgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogRG9uJ3Qgd2FybiBhYm91dCB2b2lkIGV4cHJlc3Npb25zIG9uCglyZXR1cm4gc3RhdGVtZW50cyBpbiBmdW5jdGlvbnMgcmV0dXJuaW5nIHZvaWQuCgoxOTk4LTA2LTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogcHQuYyAoZm5fdHlwZV91bmlmaWNhdGlvbik6IFJldmlzZSBkb2N1bWVudGF0aW9uLiAgVGlkeS4KCSh0eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuCgoxOTk4LTA2LTA5ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3RyeV9ibG9jayk6IFJlbmFtZSBleHBhbmRfc3RhcnRfY2F0Y2gsIGFuZCBkZWxldGUKCWV4cGFuZF9lbmRfY2F0Y2guCgkqIHBhcnNlLnkgKGZ1bmN0aW9uX3RyeV9ibG9jayk6IFJlbmFtZSBleHBhbmRfc3RhcnRfY2F0Y2gsIGFuZCBkZWxldGUKCWV4cGFuZF9lbmRfY2F0Y2guCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2VoX3NwZWMpOiBSZW5hbWUgZXhwYW5kX3N0YXJ0X2NhdGNoLCBhbmQgZGVsZXRlCglleHBhbmRfZW5kX2NhdGNoLgoKMTk5OC0wNi0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGxvb2t1cF9tZW1iZXIpOiBOZXcgZm4uCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBpdC4KCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogVXNlIGl0LgoKTW9uIEp1biAgOCAyMDo0NTo1MiAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoZGVjbDIubyk6IERlcGVuZCBvbiBkd2FyZjJvdXQuaCBhbmQgZHdhcmZvdXQuaC4KCgkqIGNwLXRyZWUuaDogQWRkIHByb3RvdHlwZSBmb3IgYG1heWJlX3ByaW50X3RlbXBsYXRlX2NvbnRleHQnIGFuZAoJYG1heWJlX21ha2Vfb25lX29ubHknLgoKCSogZGVjbC5jIChhdXRvX2Z1bmN0aW9uKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgZGVjbCcuCgoJKiBkZWNsMi5jOiBJbmNsdWRlIGR3YXJmMm91dC5oIGFuZCBkd2FyZm91dC5oLgoKCSogbGV4LmM6IFJlbW92ZSByZWR1bmRhbnQgZGVjbGFyYXRpb25zIG9mIGBzZXRfZmxvYXRfaGFuZGxlcicgYW5kCglgYXNtX291dF9maWxlJy4KCjE5OTgtMDYtMDggIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogUmVtb3ZlIE5FV19FSF9NT0RFTCBjb21waWxlCgl0aW1lIGZsYWcuICBDYWxsIF9fY3BfZWhfaW5mbyBpbnN0ZWFkIG9mIF9fY3BfZXhjZXB0aW9uX2luZm8uCgkqIGV4Y2VwdGlvbi5jYyAoc3RydWN0IGNwX2VoX2luZm8pOiBSZW1vdmUgTkVXX0VIX01PREVMIGZsYWcuCgkoX19jcF9leGNlcHRpb25faW5mbyk6IFJldHVybiBvZmZzZXQgaW50byBjcF9laF9pbmZvIHN0cnVjdHVyZSB0bwoJbWF0Y2ggd2hhdCB1c2UgdG8gYmUgdGhlIHN0YXJ0IG9mIHRoaXMgc3RydWN0dXJlLgoJKF9fY3BfZWhfaW5mbyk6IE5ldyBmdW5jdGlvbiB0byByZXR1cm4gYSBwb2ludGVyIHRvIGNwX2VoX2luZm8gc3RydWN0LgoJKF9fY3BsdXNfdHlwZV9tYXRjaGVyLCBfX2NwX3B1c2hfZXhjZXB0aW9uKTogUmVtb3ZlIE5FV19FSF9NT0RFTAoJY29tcGlsZSB0aW1lIGZsYWcuCgkoX191bmNhdGNoX2V4Y2VwdGlvbiwgX19jaGVja19laF9zcGVjLCBzdGQ6OnVuY2F1Z2h0X2V4Y2VwdGlvbik6IENhbGwKCV9fY3BfZWhfaW5mbyBpbnN0ZWFkIG9mIF9fY3BfZXhjZXB0aW9uX2luZm8uCgoxOTk4LTA2LTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogRGlzYWJsZSBpbmxpbmluZyBvZiBleHRlcm4gaW5saW5lcwoJd2l0aCBzdGF0aWMgdmFyaWFibGVzLgoKMTk5OC0wNi0wOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IENvcnJlY3QgcHJldmlvdXMgY2hhbmdlIHRvIHVzZSBidWlsZCwKCW5vdCBidWlsZF9taW4uCgoxOTk4LTA2LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IEhhbmRsZSBwb2ludGVyLXRvLW1lbWJlcnMgd2hlcmUgdGhlCgltZW1iZXIgaXMgYSB0ZW1wbGF0ZS4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoKMTk5OC0wNi0wNyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGxleC5jIChsYW5nX2luaXRfb3B0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShsYW5nX2luaXQpOiBSZW1vdmUgZmxhZ19leGNlcHRpb25zID09IDIgaGFjay4KCjE5OTgtMDYtMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChlbnZlbG9wZV9hZGRfZGVjbCk6IFR3ZWFrIGZvciBpbXBsaWNpdCB0eXBlbmFtZS4KCgkqIGNhbGwuYyAoam91c3QpOiBBbHNvIHdhcm4gYWJvdXQgY29uZnVzaW5nIGNvbnZlcnNpb24gb3AvY29uc3RydWN0b3IKCW92ZXJsb2FkIHJlc29sdXRpb24uCgoJKiBzcGV3LmMgKHl5bGV4KTogQWxzbyByZXR1cm4gdGhlIFRZUEVfREVDTCBpZiBnb3Rfb2JqZWN0LgoJRG9uJ3QgY2xlYXIgZ290X29iamVjdCBhZnRlciAnficuCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogVHdlYWsgZGVzdHJ1Y3RvciBoYW5kbGluZy4KCShidWlsZF9tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3RfY29weSwgY2FzZSBNRVRIT0RfQ0FMTF9FWFBSKTogRG9uJ3QgbWVzcyB3aXRoCglUWVBFX01BSU5fVkFSSUFOVCBmb3IgZGVzdHJ1Y3RvcnMuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfb2JqZWN0X2NhbGxfZXhwcik6IENvbXBsYWluIGFib3V0IGNhbGxpbmcgYQoJVFlQRV9ERUNMLgoKMTk5OC0wNi0wNSAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBnKytzcGVjLmMgKGxhbmdfc3BlY2lmaWNfcHJlX2xpbmssIGxhbmdfc3BlY2lmaWNfZXh0cmFfb2ZpbGVzKToKCURlZmluZSAtIHVwZGF0ZSBuZWVkZWQgYnkgZ2NjLmMgY2hhbmdlLgoKMTk5OC0wNi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoY3BfcHJpbnRlcnMpOiBVc2UgJ28nIGluc3RlYWQgb2YgJ18nIGZvciB0aGUgbnVsbCBlbnRyeS4KCjE5OTgtMDYtMDUgIE1hcnRpbiB2LiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjcC10cmVlLmggKERFQ0xfTkFNRVNQQUNFX0FMSUFTLCBPUklHSU5BTF9OQU1FU1BBQ0UpOiBEZWNsYXJlLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBBZGQgbmFtZXNwYWNlc19vbmx5IHBhcmFtZXRlci4KCUlmIHNldCwgcmV0dXJuIG9ubHkgTkFNRVNQQUNFX0RFQ0xzLgoJKHNlbGVjdF9kZWNsKTogTGlrZXdpc2UuCgkoaWRlbnRpZmllcl90eXBlX3ZhbHVlKTogR2l2ZSBhZGRpdGlvbmFsIHBhcmFtZXRlci4KCShsb29rdXBfbmFtZV9ub25jbGFzcyk6IExpa2V3aXNlLgoJKGxvb2t1cF9uYW1lKTogTGlrZXdpc2UuCgkoZmluZF9iaW5kaW5nKTogU2tpcCBuYW1lc3BhY2UgYWxpYXNlcy4KCShiaW5kaW5nX2Zvcl9uYW1lKTogTGlrZXdpc2UuCgkocHVzaF9uYW1lc3BhY2UpOiBDaGVjayBmb3IgbmFtZXNwYWNlIGFsaWFzZXMuCgkobG9va3VwX25hbWVfbmFtZXNwYWNlX29ubHkpOiBOZXcgZnVuY3Rpb24uCgkoYmVnaW5fb25seV9uYW1lc3BhY2VfbmFtZXMsIGVuZF9vbmx5X25hbWVzcGFjZV9uYW1lcyk6IE5ldyBmdW5jdGlvbnMuCgkqIGRlY2wyLmMgKHNldF9kZWNsX25hbWVzcGFjZSk6IFNraXAgbmFtZXNwYWNlIGFsaWFzZXMuCgkoZG9fdXNpbmdfZGlyZWN0aXZlKTogTGlrZXdpc2UuCgkoZG9fbmFtZXNwYWNlX2FsaWFzKTogUHJvZHVjZSBuYW1lc3BhY2UgYWxpYXNlcywgZml4IGFsaWFzCglyZWRlY2xhcmF0aW9uLgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBTdXBwb3J0IFNDT1BFX1JFRi4KCSogcGFyc2UueSAoZXh0ZGVmKTogV3JhcCBsb29rdXAgd2l0aCBuYW1lc3BhY2Vfb25seSBmb3IgbmFtZXNwYWNlCglhbGlhc2VzIGFuZCB1c2luZyBkZWNsYXJhdGlvbnMuCgoxOTk4LTA2LTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHJlYWxseV9vdmVybG9hZGVkX2ZuKTogT25seSBzZWUgdGhyb3VnaCBvbmUgVFJFRV9MSVNULgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogQ2xlYW4gdXAgTkVXX0VYUFIgY2FzZS4KCjE5OTgtMDYtMDQgIE1hcnRpbiB2b24gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJU3VnZ2VzdGVkIGJ5IEJyZW5kYW4gS2Vob2UKCSogZGVjbDIuYyAoZG9fdG9wbGV2ZWxfdXNpbmdfZGVjbCk6IFdoZW4gZGVjbCBpcyBhIFRZUEVfREVDTCwKCXRyZWF0IGl0IGFzIHVzaW5nIDo6ZGVjbC4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvY190eXBlKTogUHJvY2VzcyB1bmtub3duX3R5cGVfbm9kZSBhbmQgT0ZGU0VUX1RZUEUuCgoJKiB0cmVlLmMgKG1hcGNhcik6IFN1cHBvcnQgTkVXX0VYUFIuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBTdXBwb3J0IE5FV19FWFBSLgoKMTk5OC0wNi0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBVc2Ugb3ZlcmxvYWQgbWFjaGluZXJ5IHRvIG1ha2UgbmFtZS4KCSogc2VhcmNoLmMgKGNvdmFyaWFudF9yZXR1cm5fcCk6IE5ldyBmbi4KCShnZXRfbWF0Y2hpbmdfdmlydHVhbCk6IFVzZSBpdC4KCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBGaXggY2hlY2sgZm9yIHZvaWQuCgoxOTk4LTA2LTAxICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoVFlQRV9GT1JfSkFWQSk6ICBOZXcgbWFjcm8uCgkqIGRlY2wuYywgY3AtdHJlZS5oIChqYXZhX2J5dGVfdHlwZV9ub2RlLCBqYXZhX3Nob3J0X3R5cGVfbm9kZSwKCWphdmFfaW50X3R5cGVfbm9kZSwgamF2YV9sb25nX3R5cGVfbm9kZSwgamF2YV9mbG9hdF90eXBlX25vZGUsCglqYXZhX2RvdWJsZV90eXBlX25vZGUsIGphdmFfY2hhcl90eXBlX25vZGUsIGphdmFfYm9vbGVhbl90eXBlX25vZGUpOgoJTmV3ICJwcmltaXRpdmUiIHR5cGVzLCB3aXRoIHByZWRlZmluZWQgbmFtZXMgX19qYXZhX2J5dGUgZXRjLgoJKHJlY29yZF9idWlsdGluX2phdmFfdHlwZSk6ICBOZXcgZnVuY3Rpb24uCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiAgTWFrZSBKYXZhIHR5cGVzIHdpdGggcmVjb3JkX2J1aWx0aW5famF2YV90eXBlLgoJKHB1c2h0YWcsIGdyb2tkZWNsYXJhdG9yKTogIFNldCBUWVBFX0ZPUl9KQVZBIGlmIGluIGV4dGVybiAiSkFWQSIuCgkoeHJlZl9iYXNleXBlcyk6ICBJZiBiYXNlIGNsYXNzIHdhcyBUWVBFX0ZPUl9KQVZBLCBzbyBpcyB0aGlzIGNsYXNzLgoJKGdyb2tmbmRlY2wpOiAgQ2FsbCBjaGVja19qYXZhX21ldGhvZCBmb3IgSmF2YSBjbGFzc2VzLgoJKiBtZXRob2QuYyAoaXNfamF2YV90eXBlKTogIFJlbW92ZWQuICBSZXBsYWNlZCB3aXRoIFRZUEVfRk9SX0pBVkEuCgkocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogIE1hdGNoIHR5cGVzIGFnYWluc3Qgc3BlY2lmaWMKCWphdmFfWFhfdHlwZV9ub2RlIHR5cGVzLCByYXRoZXIgdGhhbiB1c2luZyBpc19qYXZhX3R5cGUuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6ICBEb24ndCBhZGQgZGVmYXVsdCBjb3B5IGNvbnN0cnVjdG9yCglvciBvcGVyYXRvcj0gaWYgVFlQRV9GT1JfSkFWQS4KCShwb3BfbGFuZ19jb25leHQpOiAgUmVzdG9yZSBzdHJpY3RfcHJvdG90eXAgcHJvcGVyIGlmIEphdmEuCgkqIGRlY2wyLmMgKGFjY2VwdGFibGVfamF2YV90eXBlLCBjaGVja19qYXZhX21ldGhvZCk6ICBOZXcgZnVuY3Rpb25zLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6ICBDb3B5IFRZUEVfRk9SX0pBVkEgZnJvbSBwYXR0ZXJuLgoJKHRzdWJzdCk6ICBNb3ZlIGNvbW1vbiBzdGF0ZW1lbnQgYWZ0ZXIgaWYgc3RhdGVtZW50LgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogIElmIHN0cmljdCwgVFlQRV9GT1JfSkFWQSBtdXN0IG1hdGNoLgoKMTk5OC0wNi0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IFVzZSBmaXJzdF9ydGxfb3AuCgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX2FycmF5X3R5cGVfMSk6IEFsc28gY2hlY2sgaW5kZXhfdHlwZSBmb3IKCXRlbXBsYXRlIHBhcm1zLgoKMTk5OC0wNS0zMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0KTogQWx3YXlzIGNvcHkgQklORk9fQkFTRVRZUEVTLgoKMTk5OC0wNS0yOSAgc2NvdHQgc255ZGVyICA8c255ZGVyQGQwc2dpZi5mbmFsLmdvdj4KCgkqIHRyZWUuYyAobGF5b3V0X2Jhc2V0eXBlcyk6IElmIHdlIGNoYW5nZSBUWVBFX1NJWkUsIGNoYW5nZQoJVFlQRV9TSVpFX1VOSVQgdG9vLgoKMTk5OC0wNS0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBjb21wbGFpbiBhYm91dCBpbi1jbGFzcwoJaW5pdGlhbGl6YXRpb24gb2Ygc3RhdGljIGNvbnN0cyBpZiB3ZSBkb24ndCByZWFsbHkga25vdyB0aGUgdHlwZQoJb2YgdGhlIHZhcmlhYmxlLgoKMTk5OC0wNS0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX0RFU1RSVUNUT1JfUCk6IE5ldyBtYWNyby4KCSogbWV0aG9kLmMgKGJ1aWxkX2Rlc3RydWN0b3JfbmFtZSk6IE5ldyBmbi4KCSogZGVjbDIuYyAobWF5YmVfcmV0cm9maXRfaW5fY2hyZyk6IFNwbGl0IG91dC4uLgoJKGdyb2tjbGFzc2ZuKTogRnJvbSBoZXJlLiAgUmVvcmdhbml6ZS4KCSogZGVjbC5jIChncm9rX2N0b3JfcHJvcGVydGllcyk6IE1ha2Ugc3VyZSBjdG9ycyBmb3IgdHlwZXMgd2l0aAoJdmJhc2VzIGhhdmUgdGhlIGluX2NocmcgcGFybS4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVcGRhdGUKCVRZUEVfVVNFU19WSVJUVUFMX0JBU0VDTEFTU0VTIGZyb20gdHN1YnN0ZWQgYmFzZXMuICBEb24ndCBjYWxsCglncm9rXypfcHJvcGVydGllcy4KCSh0c3Vic3QpOiBDYWxsIGdyb2tfY3Rvcl9wcm9wZXJ0aWVzIGFuZCBtYXliZV9yZXRyb2ZpdF9pbl9jaHJnLgoKMTk5OC0wNS0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBNYWtlIHRlc3QgZm9yIHdoZXRoZXIgb3Igbm90IHN0YXRpYwoJdmFyaWFibGVzIHNob3VsZCBiZSBpbnN0YW50aWF0ZWQgZWFybHkgbWF0Y2ggaXRzIGNvbW1lbnQuCgoxOTk4LTA1LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBBbHdheXMgcGVkd2FybiBhYm91dCB2YWN1b3VzbHkgcmVkZWNsYXJpbmcKCWEgbWVtYmVyLgoJKHN0YXJ0X2Z1bmN0aW9uKTogQ2FsbCBjaGVja19kZWZhdWx0X2FyZ3MuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IERvbid0IGNhbGwgY2hlY2tfZGVmYXVsdF9hcmdzLgoJKGNoZWNrX2RlZmF1bHRfYXJncyk6IFVzZSBjcF9lcnJvcl9hdC4KCSogbGV4LmMgKGRvX3BlbmRpbmdfZGVmYXJncyk6IENhbGwgY2hlY2tfZGVmYXVsdF9hcmdzLgoKMTk5OC0wNS0yNyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBNYWtlIHN1cmUgZ2V0X3R5cGVfdmFsdWUgcmV0dXJucwoJc29tZXRoaW5nIGJlZm9yZSB3ZSB0cnkgdG8gdXNlIGl0cyBUWVBFX01BSU5fVkFSSUFOVC4KCShidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCjE5OTgtMDUtMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBDb21wbGFpbiBhYm91dCBnZXR0aW5nIGEgVFJFRV9MSVNUIHRvCglpbml0aWFsaXplIGFuIGFycmF5LgoKCSogc2VhcmNoLmMgKGV4cGFuZF91cGNhc3RfZml4dXBzKTogRG9uJ3Qgc2V0IERFQ0xfQ09OVEVYVCBhbmQKCURFQ0xfVklSVFVBTF9QLgoKCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IENsYXJpZnkgdGVtcGxhdGUgd2FybmluZy4KCjE5OTgtMDUtMjcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBkZWNsLmMgKHNoYWRvd19sYWJlbCk6IERvbid0IHRyZWF0IGRlY2xzIGFzIGlkZW50aWZpZXJzLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogQ2xlYXIgc2hhZG93ZWRfbGFiZWxzLgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IFJlc2V0IGxpbmVubyBhbmQgZmlsZW5hbWUgYWZ0ZXIgY2FsbGluZwoJcmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgdHJ5IHRvIHVzZSBUWVBFX09CU1RBQ0sgb24gYW4KCWVycm9yX21hcmtfbm9kZS4KCjE5OTgtMDUtMjcgIEtldmluIEJ1aHIgIDxidWhyQHN0YXQud2lzYy5lZHU+CgoJKiBwYXJzZS55IChiYXNlX2NsYXNzKTogVXNlIGlzX2FnZ3JfdHlwZSwgbm90IElTX0FHR1JfVFlQRS4KCjE5OTgtMDUtMjYgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAc2NmLnVzYy5lZHU+CgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBBY2NlcHQgVFlQRU5BTUVfVFlQRSBub2Rlcy4KCShjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBIYW5kbGUgY2FzZXMgd2hlbiBub250eXBlIHRlbXBsYXRlCglwYXJhbWV0ZXJzIGJlY29tZSBjbGFzc2VzIGFmdGVyIHN1YnN0aXR1dGlvbi4KCjE5OTgtMDUtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogVXNlIGNvbXB0eXBlcywgcmF0aGVyIHRoYW4gPT0gdG8gY29tcGFyZQoJdHlwZXMuICBNb2RpZnkgZm9yIG5ldyByZXByZXNlbnRhdGlvbiBvZiB0ZW1wbGF0ZSBmcmllbmRzLgoJKG1ha2VfZnJpZW5kX2NsYXNzKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfY2xhc3MpOiBVbmRvIDE5OTgtMDUtMjEgY2hhbmdlLiAgVHdlYWsuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBEZWFsIHdpdGggdGVtcGxhdGUgZnJpZW5kcy4KCgkqIGRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IFJlbW92ZSByZWR1bmRhbnQgY2FsbCB0bwoJZXhwYW5kX21haW5fZnVuY3Rpb24uCgoxOTk4LTA1LTI2ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGxvb255LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBDaGVjayBmb3IgREVDTF9MQU5HX1NQRUNJRklDIGJlZm9yZQoJREVDTF9VU0VfVEVNUExBVEUuCgoxOTk4LTA1LTI2ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAY3lnbnVzLmNvbT4KCgkqIGxhbmd1YWdlX2FzX3N0cmluZzogIEhhbmRsZSBsYW5nX2phdmEuCgoxOTk4LTA1LTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogRG9uJ3QgY29weSB0aGUgdHlwZV9kZWNsLgoKMTk5OC0wNS0yNiAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogY2xhc3MuYyAocHVzaGNsYXNzKTogQWx3YXlzIHN0b3JlIFRZUEVfTUFJTl9WQVJJQU5UIGluCgljdXJyZW50X2NsYXNzX3R5cGUuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBQdXQgdHlwZWRlZnMgb24gdGhlIHR5cGUncyBvYnN0YWNrLgoKCSogcGFyc2UueSAoY29tcGxleF9kaXJlY3Rfbm90eXBlX2RlY2xhcmF0b3IpOiBVc2UgJDEgdG8gYWNjZXNzCglzY29wZSBvZiBub3R5cGVfcXVhbGlmaWVkX2lkLgoKMTk5OC0wNS0yNiAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmMgKHBhcnNlX29wdGlvbnMseXlfY3VyLHl5X2xpbSk6IEFkZCBmb3IgY3BwbGliLgoJKGluaXRfcGFyc2UpOiBJbml0aWFsaXplIGNwcGxpYiBpbnRlcmZhY2UuCgoJKiBNYWtlZmlsZS5pbiAoQ1hYX09CSlMpOiBNYWtlIHN1cmUgZGVwZW5kZW5jaWVzIG5ldmVyIGVuZCB3aXRoIGFuCgllbXB0eSBjb250aW51YXRpb24uCgoxOTk4LTA1LTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogZGVjbC5jIChwdXNodGFnKTogQXZvaWQgY3Jhc2hpbmcgb24gZXJyb25lb3VzIGlucHV0LgoKMTk5OC0wNS0yNSAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IE9ubHkgcHJvZHVjZSBvbmUgdW5pcXVlIG5hbWUgZm9yCglhbm9ueW1vdXMgbmFtZXNwYWNlcy4KCShnZXRfdW5pcXVlX25hbWUpOiBSZW1vdmUuCgoxOTk4LTA1LTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogY2FsbC5jICh0b3VybmV5KTogRG9uJ3QgZG8gYW55IGV4dHJhIGNvbXBhcmlzb25zLgoKCSogZGVjbDIuYyAoYnVpbGRfYW5vbl91bmlvbl92YXJzKTogRG9uJ3QgY3Jhc2ggb24gZW1wdHkgc3ViLXVuaW9ucy4KCgkqIGNwLXRyZWUuaCAocHJvY2Vzc2luZ190ZW1wbGF0ZV9wYXJtbGlzdCk6IERlY2xhcmUuCgkqIGRlY2wuYyAocHVzaHRhZyk6IERvbid0IGNhbGwgcHVzaF90ZW1wbGF0ZV9kZWNsIHdoZW4gd2UKCXNob3VsZG4ndC4KCSogcHQuYyAocHJvY2Vzc2luZ190ZW1wbGF0ZV9wYXJtbGlzdCk6IE5ldyB2YXJpYWJsZS4KCShUTVBMX0FSR1NfSEFWRV9NVUxUSVBMRV9MRVZFTFMpOiBOZXcgbWFjcm8uCgkoY29tcGxldGVfdGVtcGxhdGVfYXJncyk6IFVzZSBpdC4KCShhZGRfdG9fdGVtcGxhdGVfYXJncyk6IExpa2V3aXNlLgoJKGlubmVybW9zdF9hcmdzKTogTGlrZXdpc2UuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkoYmVnaW5fdGVtcGxhdGVfcGFybV9saXN0KTogVXNlIHByb2Nlc3NpbmdfdGVtcGxhdGVfcGFybWxpc3QuCgkoZW5kX3RlbXBsYXRlX3Bhcm1fbGlzdCk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oIChBTk9OX1VOSU9OX1RZUEVfUCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBpdC4KCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBMaWtld2lzZS4KCSogaW5pdC5jIChpbml0aWFsaXppbmdfY29udGV4dCk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJKGRvX2J1aWxkX2Fzc2lnbl9yZWYpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGNvbXB1dGVfYWNjZXNzKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgZ2l2ZSBhIGN2LXF1YWxpZmllZCB2ZXJzaW9uIG9mIGFuCgl1bm5hbWVkIHR5cGUgYSB0eXBlZGVmIG5hbWUgImZvciBsaW5rYWdlIHB1cnBvc2VzIi4KCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IERvbid0IGxvb2sgYXQKCUlERU5USUZJRVJfQ0xBU1NfVkFMVUUgd2hlbiB0aGVyZSdzIG5vIGN1cnJlbnRfY2xhc3NfdHlwZS4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9pbnQpOiBIYW5kbGUgZXJyb3IgY2FzZXMgZ3JhY2VmdWxseS4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBIYW5kbGUgc3RhdGljIG1lbWJlciB2YXJpYWJsZXMKCWNvcnJlY3RseS4KCgkqIHB0LmMgKHRzdWJzdCk6IFVzZSB0aGUgdHN1YnN0J2QgdHlwZSB3aGVuIHByb2R1Y2luZyBuZXcKCVRFTVBMQVRFX1BBUk1fSU5ERVggbm9kZXMuCgoxOTk4LTA1LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0BtYXJrbWl0Y2hlbGwuY29tPgoKCSogdHJlZS5jIChjcF90cmVlX2VxdWFsKTogSGFuZGxlIHBvaW50ZXJzIHRvIG1lbWJlciBmdW5jdGlvbnMuCgoJKiBjYWxsLmMgKG1heWJlX2hhbmRsZV9pbXBsaWNpdF9vYmplY3QpOiBIYW5kbGUgUVVBTF9DT05Wcy4gIE1ha2UKCXN1cmUgdGhlIHR5cGUgb2YgdGhlIFJFRl9CSU5EIGlzIGEgcmVmZXJlbmNlIHR5cGUuCgkobWF5YmVfaGFuZGxlX3JlZl9iaW5kLCBjb21wYXJlX2ljcyk6IFJlbmFtZSByZWZlcmVuY2VfdHlwZSB0bwoJdGFyZ2V0X3R5cGUgZm9yIGNsYXJpdHkuCgoJKiBwYXJzZS55ICh4Y29uZCk6IE1vdmUgY2FsbCB0byBjb25kaXRpb25fY29udmVyc2lvbiAuLi4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9mb3JfY29uZCk6IEhlcmUuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKMTk5OC0wNS0yNCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IE5hbWVzcGFjZXMgaGF2ZSB0eXBlIHZvaWQuCgkqIHR5cGVjazIuYyAoaW5jb21wbGV0ZV90eXBlX2Vycm9yKTogQ29tcGxhaW4gYWJvdXQgbmFtZXNwYWNlCgl1c2VkIGFzIGV4cHJlc3Npb24uCgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgoxOTk4LTA1LTI0ICBNYXJ0aW4gdm9uIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogU3VwcG9ydCBuYW1lc3BhY2VzLgoKMTk5OC0wNS0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5kZWY6IEFkZCBTUkNMT0MuCgkqIGNwLXRyZWUuaDogQWRkIHN0cnVjdCB0cmVlX3NyY2xvYyBhbmQgYWNjZXNzb3IgbWFjcm9zLgoJKiB0cmVlLmMgKGJ1aWxkX3NyY2xvYywgYnVpbGRfc3JjbG9jX2hlcmUpOiBOZXcgZm5zLgoJKiBwdC5jIChhZGRfcGVuZGluZ190ZW1wbGF0ZSk6IFVzZSBidWlsZF9zcmNsb2NfaGVyZS4KCShwdXNoX3RpbnN0X2xldmVsKTogVXBkYXRlIGxhc3RfdGVtcGxhdGVfZXJyb3JfdGljayBiZWZvcmUgZXJyb3JpbmcuCgkoaW5zdGFudGlhdGVfZGVjbCk6IFJlc3RvcmUgbGluZW5vIGFuZCBpbnB1dF9maWxlbmFtZSBiZWZvcmUKCWNhbGxpbmcgYWRkX3BlbmRpbmdfdGVtcGxhdGUuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogU2V0IHVwIGxpbmVubyBhbmQgaW5wdXRfZmlsZW5hbWUgZm9yCglwZW5kaW5nIHRlbXBsYXRlcy4KCjE5OTgtMDUtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobGFuZ19wcmludF9lcnJvcl9mdW5jdGlvbik6IE5ldyBmbi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBwcmludF9lcnJvcl9mdW5jdGlvbiB0byB1c2UgaXQuCgkqIGVycmZuLmMgKGNwX3RoaW5nKTogRG9uJ3QgY2FsbCBtYXliZV9wcmludF90ZW1wbGF0ZV9jb250ZXh0IGhlcmUuCgoJKiBjYWxsLmMgKG1heWJlX2hhbmRsZV9yZWZfYmluZCk6IFByb3BhZ2F0ZSBJQ1NfVVNFUl9GTEFHIGFuZAoJSUNTX0JBRF9GTEFHLgoKCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogRG9uJ3Qgc2V0IExPT0tVUF9OT19DT05WRVJTSU9OIGZvcgoJY29weS1pbml0aWFsaXphdGlvbi4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeSk6IFVzZSBpbnRfZml0c190eXBlX3AuCgkoYnVpbGRfdnRhYmxlKTogUGFzcyBhIHNpZ25lZCBvZmZzZXQgdG8gYnVpbGRfdnRhYmxlX2VudHJ5LgoJKHByZXBhcmVfZnJlc2hfdnRhYmxlLCBtb2RpZnlfb25lX3Z0YWJsZSwgZml4dXBfdnRhYmxlX2RlbHRhczEsCglzZXRfcnR0aV9lbnRyeSk6IExpa2V3aXNlLgoKMTk5OC0wNS0yMiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmg6ICBBZGQgY29tbWVudHMgZG9jdW1lbnRpbmcgd2hpY2ggTEFOR19GTEFHUyBhcmUgdXNlZC4KCShDX1RZUEVfVkFSSUFCTEVfU0laRSwgQ19ERUNMX1ZBUklBQkxFX1NJWkUpOiAgUmVtb3ZlZCwgbm90IHVzZWQuCgoxOTk4LTA1LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChwcmludF90ZW1wbGF0ZV9jb250ZXh0KTogVXNlIGZwcmludGYgaW5zdGVhZCBvZiBjcF9lcnJvci4KCgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IEp1c3QgcmV0dXJuIGFuIGVycm9yX21hcmtfbm9kZS4KCUFsc28gcHJpbnQgdGhlIGRlY2wgd2Ugd2FudCBpbiBlcnJvciBtZXNzYWdlcy4gIElmIHdlIGNvbXBsYWluLAoJcmV0dXJuIGVycm9yX21hcmtfbm9kZS4KCSh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogU2V0IGxpbmVubyBhbmQgaW5wdXRfZmlsZW5hbWUgc28KCWVycm9yIG1lc3NhZ2VzIHdpbGwgYmUgdXNlZnVsLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogSnVzdCByZXR1cm4gYW4gZXJyb3JfbWFya19ub2RlLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRG9uJ3QgbWVzcyB3aXRoIGEgcmV0dXJuZWQKCWVycm9yX21hcmtfbm9kZS4KCgkqIHB0LmMgKHByaW50X3RlbXBsYXRlX2NvbnRleHQpOiBBZGQgbmV3IGFyZ3VtZW50LgoJKG1heWJlX3ByaW50X3RlbXBsYXRlX2NvbnRleHQpOiBOZXcgZm4uCgkocHVzaF90aW5zdF9sZXZlbCk6IEluY3JlbWVudCB0aW5zdF9sZXZlbF90aWNrLgoJKHBvcF90aW5zdF9sZXZlbCk6IExpa2V3aXNlLgoJKiBlcnJmbi5jIChjcF90aGluZyk6IENhbGwgbWF5YmVfcHJpbnRfdGVtcGxhdGVfY29udGV4dC4gIFVzZQoJeHJlYWxsb2MgaW5zdGVhZCBvZiB4bWFsbG9jLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wLCBDT05WRVJUX0VYUFIpOiBQcm9wYWdhdGUgVFJFRV9DT05TVEFOVC4KCjE5OTgtMDUtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfY2xhc3MpOiBEb24ndCBjYWxsIHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZQoJaWYgdGhlIHRlbXBsYXRlIHdlIGxvb2tlZCB1cCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHdlIGFscmVhZHkKCWhhdmUuCgpUaHUgTWF5IDIxIDExOjU0OjQ0IDE5OTggIERhdmUgQnJvbGxleSAgPGJyb2xsZXlAY3lnbnVzLmNvbT4KCgkqIGxleC5jOiAoaGFuZGxlX3N5c3ZfcHJhZ21hKTogRklMRSogcGFyYW1ldGVyIG5vdCB1c2VkLgoJKGNwcF9yZWFkZXIscGFyc2VfaW4pOiBBZGQgZm9yIGNwcGxpYi4KCShjaGVja19uZXdsaW5lKTogQ2FsbCBoYW5kbGVfc3lzdl9wcmFnbWEgd2l0aCBuZXcgaW50ZXJmYWNlLgoJKGNoZWNrX25ld2xpbmUpOiBDYWxsIEdFVF9ESVJFQ1RJVkVfTElORSwgbm90IGdldF9kaXJlY3RpdmVfbGluZS4KCgkqIGlucHV0LmM6ICh5eV9jdXIseXlfbGltLHl5X2dldF90b2tlbixHRVRDKTogQWRkIGZvciBjcHBsaWIuCgkoc3ViX2dldGNoKTogQ2FsbCBHRVRDIGZvciBjcHBsaWIuCgoJKiBjcC10cmVlLmg6IChnZXRfZGlyZWN0aXZlX2xpbmUpOiBEaWZmZXJlbnQgcHJvdG90eXBlIGZvciBjcHBsaWIuCgkoR0VUX0RJUkVDVElWRV9MSU5FKTogTWFjcm8gd3JhcHBlciBmb3IgZ2V0X2RpcmVjdGl2ZV9saW5lLgoKCSogTWFrZWZpbGUuaW4gKENYWF9PQkpTKTogQWRkIEBleHRyYV9jeHhfb2Jqc0AgZm9yIGNwcGxpYi4KCjE5OTgtMDUtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKG1heWJlX21ha2Vfb25lX29ubHkpOiBOZXcgZm4uCgkoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBVc2UgaXQuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogTGlrZXdpc2UuCgkqIHB0LmMgKG1hcmtfZGVjbF9pbnN0YW50aWF0ZWQpOiBMaWtld2lzZS4KCjE5OTgtMDUtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGRlY2wyLmMgKGZpbmRfcmVwcmVzZW50YXRpdmVfbWVtYmVyKTogUmVuYW1lIHRvIC4uLgoJKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfYW5vbl91bmlvbik6IEZpeCBzdHVwaWRpdHkgb2YgcHJldmlvdXMgY2hhbmdlLgoKMTk5OC0wNS0yMCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogSGFuZGxlIGRlZmluaXRpb24gb2Ygc3BlY2lhbGl6YXRpb24gaW4KCWZyaWVuZCBkZWNsYXJhdGlvbi4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEZpeCBMT09LVVBfRVhQUiBoYW5kbGluZy4KCjE5OTgtMDUtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNsYXNzLmMgKGRlbGV0ZV9kdXBsaWNhdGVfZmllbGRzXzEpOiBVc2UgREVDTF9ERUNMQVJFU19UWVBFX1AKCXRvIGxvb2sgZm9yIHR5cGUgZGVjbGFyYXRpb25zLgoJKGZpbmlzaF9zdHJ1Y3QpOiBEZWFsIHdpdGggdGVtcGxhdGVzIG9uIHRoZSBDTEFTU1RZUEVfVEFHUyBsaXN0LgoJKiBjcC10cmVlLmggKERFQ0xfREVDTEFSRVNfVFlQRV9QKTogTmV3IG1hY3JvLgoJKGZpbmlzaF9tZW1iZXJfY2xhc3NfdGVtcGxhdGUpOiBEZWNsYXJlLgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBQdXQgbWVtYmVyIGNsYXNzIHRlbXBsYXRlcyBvbiB0aGUKCUNMQVNTVFlQRV9UQUdTIGxpc3QsIGp1c3QgYXMgZm9yIG9yZGluYXJ5IG1lbWJlciBjbGFzc2VzLgoJKHB1c2hkZWNsX2NsYXNzX2xldmVsKTogVXNlIERFQ0xfREVDTEFSRVNfVFlQRV9QLgoJKGxvb2t1cF90YWcpOiBMb29rIGZvciBJREVOVElGSUVSX0NMQVNTX1ZBTFVFcywganVzdCBhcyB3aXRoCglJREVOVElGSUVSX05BTUVTUEFDRV9WQUxVRXMuCgkqIHBhcnNlLnkgKGNvbXBvbmVudF9kZWNsKTogTW92ZSBjb2RlIHRvIC4uLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX21lbWJlcl9jbGFzc190ZW1wbGF0ZSk6IE5ldyBmdW5jdGlvbi4KCURvbid0IHB1dCBtZW1iZXIgY2xhc3MgdGVtcGxhdGVzIG9uIHRoZSBsaXN0IG9mIGNvbXBvbmVudHMgZm9yIGEKCWNsYXNzLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAoY2xhc3N0eXBlX21hbmdsZWRfbmFtZSk6IERvbid0IHRyeSBERUNMX0NPTlRFWFQgb24gdHlwZXMuCglJbiBmYWN0LCBkb24ndCB1c2UgREVDTF9DT05URVhUIGF0IGFsbCBoZXJlLgoKMTk5OC0wNS0yMCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKHJlY29yZF91bmtub3duX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIGl0IGZvciB0aGUgdW5rbm93biBhbmQgZ2xvYmFsIHR5cGUKCW5vZGVzLgoKMTk5OC0wNS0yMCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbDIuYyAoZmluZF9yZXByZXNlbnRhdGl2ZV9tZW1iZXIpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2Fub25fdW5pb24pOiBVc2UgaXQuCgoJKiBjcC10cmVlLmggKE1BSU5fTkFNRV9QKTogTmV3IG1hY3JvLgoJKERFQ0xfTUFJTl9QKTogTGlrd2lzZS4KCSogZGVjbC5jIChwdXNoZGVjbCk6IEF2b2lkIGNyYXNoaW5nIG9uIHJlZGVmaW5pdGlvbnMgb2YgYG1haW4nLgoJKGdyb2tmbmRlY2wpOiBVc2UgdGhlIG5ldyBtYWNyb3MuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCShmaW5zaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBMaWtld2lzZS4KCShidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoKV2VkIE1heSAyMCAwMjoxNjowMSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChzdGFydF9vYmplY3RzLCBmaW5pc2hfb2JqZWN0cywgZG9fZHRvcnMsCglkb19jdG9ycyk6IFNwbGl0IG91dCBmcm9tLi4uCgkoZmluaXNoX2ZpbGUpOiAuLi5oZXJlLgoKVHVlIE1heSAxOSAyMDozNjoyMyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4pOiBEb24ndCBhYm9ydCBvbiBwbGFjZWhvbGRlcnMgZnJvbQoJcHVzaF9jbGFzc19kZWNscy4KClR1ZSBNYXkgMTkgMTU6MTY6MjIgMTk5OCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGlzX2VtcHR5X2NsYXNzKTogUmV0dXJuIDAgaWYgVFlQRSBpcyBhbiBlcnJvcl9tYXJrX25vZGUuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBIYW5kbGUgYW4gQVJST1dfRVhQUi4KClR1ZSBNYXkgMTkgMTU6MTM6MzkgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbC5jIChzYXZlYWJsZV9vYnN0YWNrKTogRGVjbGFyZS4KCShwdXNoZGVjbCk6IENvcHkgVFlQRV9ERUNMcyB0byB0aGUgc2FtZSBvYnN0YWNrIGFzIHRoZSB0eXBlIHRoZXkKCWRlY2xhcmUsIGlmIG5lY2Vzc2FyeS4KClR1ZSBNYXkgMTkgMTQ6NTA6MjcgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2FsbC5jIChjb21wYXJlX3F1YWwpOiBSZW1vdmUuCgkoaXNfc3Vic2VxKTogVHdlYWsuCgkoaXNfcHJvcGVybHlfZGVyaXZlZF9mcm9tKTogTmV3IGZ1bmN0aW9uLgoJKG1heWJlX2hhbmRsZV9yZWZfYmluZCk6IExpa2V3aXNlLgoJKG1heWJlX2hhbmRsZV9pbXBsaWNpdF9vYmplY3QpOiBMaWtld2lzZS4KCShjb21wYXJlX2ljcyk6IE1vZGlmeSBzdWJzdGFudGlhbGx5IHRvIGJyaW5nIGludG8gY29uZm9ybWFuY2Ugd2l0aAoJdGhlIHN0YW5kYXJkLgoJKiBjcC10cmVlLmggKFRZUEVfUFRSTUVNRlVOQ19PQkpFQ1RfVFlQRSk6IE5ldyBtYWNyby4KCShjb21wX2N2X3F1YWxpZmljYXRpb24pOiBEZWNsYXJlLgoJKGNvbXBfY3ZfcXVhbF9zaWduYXR1cmUpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbXBfY3ZfcXVhbGlmaWNhdGlvbik6IExpa2V3aXNlLgoJKGNvbXBfY3ZfcXVhbF9zaWduYXR1cmUpOiBMaWtld2lzZS4KClR1ZSBNYXkgMTkgMTA6MDU6MDIgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKHBhcnNlLm8pOiBEZXBlbmQgb24gdG9wbGV2LmguCgoJKiBjbGFzcy5jICh0eXBlY29kZV9wKTogUmVtb3ZlIHByb3RvdHlwZSBhbmQgZGVmaW5pdGlvbi4KCgkqIGNwLXRyZWUuaCAoY3VycmVudGx5X29wZW5fY2xhc3MsIGlzX2VtcHR5X2NsYXNzLCBtZW1iZXJfcCk6CglBZGQgcHJvdG90eXBlLgoKCSogZGVjbC5jIChwdXNoX292ZXJsb2FkZWRfZGVjbF90b3BfbGV2ZWwpOiBSZW1vdmUgcHJvdG90eXBlIGFuZAoJZGVmaW5pdGlvbi4KCgkqIGVycmZuLmMgKGNwX2Vycm9yKTogQ2FzdCBmdW5jdGlvbiBwb2ludGVyIGBlcnJvcicgdG8gKGVycm9yZm4gKikKCWluIGNhbGwgdG8gYGNwX3RoaW5nJy4KCShjcF93YXJuaW5nKTogTGlrZXdpc2UgZm9yIGZ1bmN0aW9uIHBvaW50ZXIgYHdhcm5pbmcnLgoKCSogZXhjZXB0LmMgKGRvX2Z1bmN0aW9uX2NhbGwpOiBSZW1vdmUgcHJvdG90eXBlIGFuZCBkZWZpbml0aW9uLgoJKGNhbGxfZWhfaW5mbyk6IFdyYXAgdmFyaWFibGUgYHQxJyBpbiBtYWNybyBORVdfRUhfTU9ERUwuCgoJKiBtZXRob2QuYyAoaXNfamF2YV90eXBlKTogQWRkIHByb3RvdHlwZSBhbmQgbWFrZSBpdCBzdGF0aWMuCgoJKiBwYXJzZS55OiBJbmNsdWRlIHRvcGxldi5oLgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGFyZycuCgkoaW5zdGFudGlhdGVfZGVjbCk6IExpa2V3aXNlIGZvciBgc2F2ZV90aScuCgoJKiB0cmVlLmMgKHByb3BhZ2F0ZV9iaW5mb19vZmZzZXRzKTogTGlrZXdpc2UgZm9yIGBiYXNlX2JpbmZvcycuCgpUdWUgTWF5IDE5IDAyOjQzOjI1IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBIYW5kbGUgdGVtcGxhdGVfaWRzLgoJKiBwYXJzZS55IChwcmltYXJ5KTogQWRkIGdsb2JhbF9zY29wZSB0ZW1wbGF0ZV9pZC4KCk1vbiBNYXkgMTggMjM6MjI6NTIgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZ2V0X3NlbnRyeSk6IFVzZSBlbmRfdGVtcG9yYXJ5X2FsbG9jYXRpb24uCglEb24ndCBkZWNsYXJlIHBlcm1hbmVudF9vYnN0YWNrLgoKTW9uIE1heSAxOCAxMjoyODo0NCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwYXJzZS55ICguZmluaXNoX25ld19wbGFjZW1lbnQpOiBOZXcgbm9uLXRlcm1pbmFsLgoJKHVuYXJ5X2V4cHIsIG5ld190eXBlX2lkKTogVXNlIGl0LgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCk1vbiBNYXkgMTggMTI6MjA6MjcgMTk5OCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZSk6IFNheSB3aGVyZSB0aGUgb3JpZ2luYWwgZGVmaW5pdGlvbgoJb2YgdGhlIHRlbXBsYXRlLXBhcmFtZXRlcidzIGRlZmF1bHQgYXJndW1lbnQgYXBwZWFyZWQuCgpNb24gTWF5IDE4IDAzOjAwOjU3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogVHdlYWsgZW1wdHkgY2xhc3MgaGFuZGxpbmcuCgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IFVzZSBjdXJyZW50bHlfb3Blbl9jbGFzcy4KCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBEb24ndCBhYm9ydCBvbiBUUkVFX05PTkxPQ0FMX0ZMQUcuCgpNb24gTWF5IDE4IDAxOjQzOjAxIDE5OTggIE1hcnRpbiB2LiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBEb24ndCBsb29rIGF0IElERU5USUZJRVJfTE9DQUxfVkFMVUUKCWZvciBhIHR5cGUgdW5sZXNzIGl0IGlzIG9uZS4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBPVkxfQ1VSUkVOVCBpbiBlcnJvciBtZXNzYWdlLgoKTW9uIE1heSAxOCAwMToyNDowOCAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSwgb2JqZGlyKTogRGVmaW5lLgoKCSogTWFrZWZpbGUuaW4gKEJJU09OKTogVXNlIGJpc29uIGZyb20gdGhlIGJ1aWxkIHRyZWUgaWYgaXQgZXhpc3RzLgoJKEZMRVgpOiBMaWtld2lzZS4KClN1biBNYXkgMTcgMTQ6NTI6MDggMTk5OCAgTWFydGluIHYuIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHR5cGVjay5jICh0eXBlX3Vua25vd25fcCk6IFJldHVybiB0cnVlIGZvciBUUkVFX0xJU1QgYWxzby4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBVc2UgVFlQRV9NQUlOX1ZBUklBTlQgb24gdHlwZWRlZnMuCgpTdW4gTWF5IDE3IDE0OjUxOjQxIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgpTdW4gTWF5IDE3IDEzOjUzOjQ4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBDYWxsIHN1c3BlbmRfbW9tZW50YXJ5IGFyb3VuZCB0aGUgY3JlYXRpb24KCW9mIHZhbHVlcyB0aGF0IG11c3QgYmUgc2F2ZWQgZm9yIGV4Y2VwdGlvbiBoYW5kbGluZy4KCSogcGFyc2UueSAoLmJ1aWxkX25ld19wbGFjZW1lbnQpOiBOZXcgbm9uLXRlcm1pbmFsLgoJKHVuYXJ5X2V4cHIsIG5ld19wbGFjZW1lbnQpOiBVc2UgaXQuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKU3VuIE1heSAxNyAxMjozMjowOCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFVzZSBDQU5PTklDQUxfVFlQRV9WQVJJQU5UIHRvIGNvbXBhcmUKCW9sZCBhbmQgbmV3IHR5cGVzLgoKCSogcHQuYyAodHN1YnN0KTogTWFrZSBzdXJlIHRoYXQgQklORk9fVFlQRSBvZiBuZXcgYmluZm9zIGlzIHRoZQoJY2Fub25pY2FsIHR5cGUuCgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IERvbid0IHVzZSBJU19TSUdOQVRVUkUgb24gYSBuYW1lc3BhY2UuCgpGcmkgTWF5IDE1IDIwOjI4OjAwIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFJldmVydCBwcm9ibGVtIGNoYW5nZS4KCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBGaXguCgpGcmkgTWF5IDE1IDE1OjM0OjAyIDE5OTggIEJlbmphbWluIEtvc25payAgPGJrb3pAcmhpbm8uY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQ2xlYW4gdXAsIGFkZCBERUNMX0RBVEFfQVJFQSBiaXRzLgoKRnJpIE1heSAxNSAwMDo0NjowNSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBVc2UgQklORk9fU0laRS4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IFVzZSAndGVtJy4KClRodSBNYXkgMTQgMTY6MzA6NDcgMTk5OCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjOiBJbmNsdWRlIGVoLWNvbW1vbi5oLgoJKHN0cnVjdCBjcF9laF9pbmZvKTogQWRkIGVoX2luZm8gc3RydWN0IHdpdGggTkVXX0VIX01PREVMLgoJKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogRmlyc3Qgc3RhYiBhdCBuZXcgQysrIHJ1bnRpbWUgdHlwZSBtYXRjaGVyLgoJKF9fY3BfcHVzaF9leGNlcHRpb24pOiBJbml0aWFsaXplIGVoX2luZm8gc3RydWN0IGFzIHdlbGwuCgkqIGV4Y2VwdC5jOiBSZW1vdmUgbG9jYWwgc3RydWN0cyBhbmQgaW5jbHVkZSBlaC1jb21tb24uaC4KCShpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogU2V0IGxhbmd1YWdlIGFuZCB2ZXJzaW9uIGNvZGVzLgoJKGNhbGxfZWhfaW5mbyk6IEFkZCBwcmVzZW5jZSBvZiBlaF9pbmZvIHRvIHJ1bnRpbWUgZGVzY3JpcHRpb24gb2YKCXN0cnVjdCBjcF9laF9pbmZvLgoJKGV4cGFuZF9lbmRfZWhfc3BlYyk6IENhbGwgc3RhcnRfY2F0Y2hfYmxvY2soKSBhbmQgZW5kX2NhdGNoX2Jsb2NrKCkuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdHJ5X2Jsb2NrKTogQ2FsbCBzdGFydF9jYXRjaF9ibG9jaygpIGFuZAoJZW5kX2NhdGNoX2Jsb2NrKCkuCgkqIHBhcnNlLnkgKGZ1bmN0aW9uX3RyeV9ibG9jayk6IENhbGwgc3RhcnRfY2F0Y2hfYmxvY2soKSBhbmQKCWVuZF9jYXRjaF9ibG9jaygpLgoKVGh1IE1heSAxNCAxMjoyNzozNCAxOTk4ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKG9yaWdpbmFsX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoY29tbW9uX3R5cGUpOiBVc2UgaXQgdG8gZ2V0IHRoZSBERUNMX09SSUdJTkFMX1RZUEUgZm9yIFQxIGFuZCBUMiwKCXRvIHNlZSBpZiB0aGV5J3JlIGFjdHVhbGx5IHRoZSBzYW1lLgoJKiBjcC10cmVlLmggKG9yaWdpbmFsX3R5cGUpOiBEZWNsYXJlLgoKV2VkIE1heSAxMyAxMjo1NDozMCAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAobGV4Lm8pOiBEZXBlbmQgb24gb3V0cHV0LmguCgoJKiBjYWxsLmMgKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBjYW5kJy4KCShhZGRfY29udl9jYW5kaWRhdGUpOiBMaWtld2lzZS4KCShidWlsZF9idWlsdGluX2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oOiBBZGQgcHJvdG90eXBlIGZvciBgdHlwZXNfb3ZlcmxhcF9wJy4KCgkqIGRlY2wuYyAoc2lnbmFsX2NhdGNoKTogTWFyayBwYXJhbWV0ZXIgYHNpZycgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKCSogZGVjbDIuYyAobWVyZ2VfZnVuY3Rpb25zKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgYHRtcCcgYW5kCglgdGVtcG4nLgoKCSogZXJyb3IuYyAoZXhwcl9hc19zdHJpbmcpOiBNYXJrIHBhcmFtZXRlciBgdicgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoJKGNvZGVfYXNfc3RyaW5nKTogTGlrZXdpc2UuCgkobGFuZ3VhZ2VfYXNfc3RyaW5nKTogTGlrZXdpc2UuCgkocGFybV9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShvcF9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShhc3NvcF9hc19zdHJpbmcpOiBMaWtld2lzZS4KCShjdl9hc19zdHJpbmcpOiBMaWtld2lzZS4KCgkqIGxleC5jOiBJbmNsdWRlIG91dHB1dC5oLgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbik6IENhc3QgZmlyc3QgYXJndW1lbnQgb2YgYGJ6ZXJvJyB0byBhIGNoYXIqLgoKCSogc2VhcmNoLmMgKGRmc19ub19vdmVybGFwX3lldCk6IE1hcmsgcGFyYW1ldGVyIGB0JyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoKCSogdGluZm8uY2MgKF9fY2xhc3NfdHlwZV9pbmZvOjpkY2FzdCk6IENoYW5nZSB0aGUgdHlwZSBvZiB2YXJpYWJsZQoJYGknIGZyb20gaW50IHRvIHNpemVfdC4KCgkqIHR5cGVjay5jIChsYW5ndWFnZV9sdmFsdWVfdmFsaWQpOiBNYXJrIHBhcmFtZXRlciBgZXhwJyB3aXRoCglBVFRSSUJVVEVfVU5VU0VELgoKVHVlIE1heSAxMiAyMTozNzo0OSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX3NpbXBsZV9kZWNsKTogVXNlIERFQ0xfQ0xBU1NfU0NPUEVfUCBhbmQvb3IKCURFQ0xfTkFNRVNQQUNFX1NDT1BFX1AuCgkobGFuZ19kZWNsX25hbWUpOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbiwgdHN1YnN0KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaGRlY2wsIHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSwgc3RhcnRfZGVjbCwKCWNwX2ZpbmlzaF9kZWNsLCBzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCShjb21wYXJlX2ljcyk6IFVzZSBERVJJVkVEX0ZST01fUC4KClR1ZSBNYXkgMTIgMDc6MjQ6MTggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3AtdHJlZS5oIChDQU5PTklDQUxfVFlQRV9WQVJJQU5UKTogTmV3IG1hY3JvLgoJKiBtZXRob2QuYyAoYnVpbGRfbWFuZ2xlZF9uYW1lKTogVXNlIGl0LgoJKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IExpa2V3aXNlLgoKCSogZXJyb3IuYyAoZHVtcF9zaW1wbGVfZGVjbCk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBmcm9tIC4uLgoJKGR1bXBfZGVjbCk6IFVzZSBpdC4KCk1vbiBNYXkgMTEgMTE6Mzg6MDcgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHRyZWUuYyAobGFuZ19wcmludF94bm9kZSk6IEFkZCBtaXNzaW5nIGBicmVhaycuCgoJKiBwdC5jICh0c3Vic3QpOiBSZW1vdmUgZHVwbGljYXRlIGNoZWNrIGZvciBJREVOVElGSUVSX05PREUuCgoJKiBjYWxsLmMgKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGUpOiBBZGp1c3QgZm9yIGNoYW5nZXMgdG8KCWZuX3R5cGVfdW5pZmljYXRpb24uCgkoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZV9yZWFsKTogTGlrZXdpc2UuCgkoYWRkX3RlbXBsYXRlX2NvbnZfY2FuZGlkYXRlKTogTGlrZXdpc2UuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfb2JqZWN0X2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfb3ApOiBMaWtld2lzZS4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKHVuaWZpY2F0aW9uX2tpbmRfdCk6IE5ldyB0eXBlLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBBZGp1c3QgcHJvdG90eXBlLgoJKHR5cGVfdW5pZmljYWl0b24pOiBMaWtld2lzZS4KCSogcHQuYyAoVU5JRllfQUxMT1dfTk9ORSk6IE5ldyBtYWNyby4KCShVTklGWV9BTExPV19NT1JFX0NWX1FVQUwpOiBMaWtld2lzZS4KCShVTklGWV9BTExPV19MRVNTX0NWX1FVQUwpOiBMaWtld2lzZS4KCShVTklGWV9BTExPV19ERVJJVkVEKTogTGlrZXdpc2UuCgkodW5pZnkpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKG1heWJlX2FkanVzdF90eXBlc19mb3JfZGVkdWN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX2N2X3F1YWxzX2Zvcl91bmlmeSk6IExpa2V3aXNlLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IEFkanVzdC4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuCgkodHlwZV91bmlmaWNhdGlvbik6IExpa2V3aXNlLgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IExpa2V3aXNlLiAgVXNlCgltYXliZV9hZGp1c3RfdHlwZXNfZm9yX2RlZHVjdGlvbi4gIEZpeCBtaXNoYW5kbGluZyBvZgoJYmFjay11bmlmaWNhdGlvbiBvZiB0ZW1wbGF0ZSBmdW5jdGlvbnMgcGFzc2VkIGFzIGFyZ3VtZW50cy4gIFBhc3MKCWFwcHJvcHJpYXRlIGNvbWJpbmF0aW9uIG9mIFVOSUZZX0FMTE9XXyogdG8gdW5pZnkuCgkodW5pZnkpOiBSZW1vdmUgdW51c2VkIE5UUEFSTVMgcGFyYW1ldGVyLiAgVXNlCgljaGVja19jdl9xdWFsc19mb3JfdW5pZnkuICBSZW1vdmUgYm9ndXMgY29kZSB0aGF0IGFsbG93ZWQKCXRvby1nZW5lcm91cyB1bmlmaWNhdGlvbiBpbiBvcmRlciB0byBhZGhlcmUgbW9yZSBjbG9zZWx5IHRvIHN0YW5kYXJkLgoJKGdldF9iaW5kaW5nc19yZWFsKTogQWRqdXN0LgoJKGdldF9jbGFzc19iaW5kaW5ncyk6IExpa2V3aXNlLgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBPbmx5IHVzZSB0aGUgaW5uZXJtb3N0Cgl0ZW1wbGF0ZSBhcmd1bWVudHMgd2hlbiBtYW5nbGluZy4KCSogcHQuYyAodHN1YnN0X3RlbXBsYXRlX2FyZ3VtZW50X3ZlY3Rvcik6IE5ldyBmdW5jdGlvbi4KCShjb21wbGV0ZV90ZW1wbGF0ZV9hcmdzKTogRGVhbCB3aXRoIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlCglleHRyYV9hcmdzIGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBsZXZlbCBvZiBhcmd1bWVudHMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogRGVhbCB3aXRoIG1lbWJlciB0ZW1wbGF0ZSBjbGFzc2VzLCB3aGljaAoJbWF5IGhhdmUgbW9yZSB0aGFuIG9uZSBsZXZlbCBvZiBhcmd1bWVudHMuCgkodHN1YnN0KTogRG9uJ3QgdHNidXN0IGludG8gdGhlIFRSRUVfVFlQRSBvZiBhbiBJREVOVElGSUVSX05PREUuCglJbXByb3ZlIGhhbmRsaW5nIG9mIG1lbWJlciB0ZW1wbGF0ZSBjbGFzc2VzLiAgVXNlCglERUNMX1BSSU1BUllfVEVNUExBVEUgaW5zdGVhZCBvZiBpbmxpbmUgZXhwYW5zaW9uLiAgVXNlCgl0c3Vic3RfdGVtcGxhdGVfYXJndW1lbnRfdmVjdG9yIHdoZXJlIGFwcHJvcHJpYXRlLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogQnJlYWsgb3V0IGZyb20gLi4uCgkoaW5zdGFudGlhdGVfZGVjbCk6IEhlcmUuCgoJKiBsZXguYyAoeXlwcmludCk6IFJlbW92ZSBUWVBFTkFNRV9FTExJUFNJUy4KCSogcGFyc2UuaDogUmVnZW5lcmF0ZWQuCgkqIHBhcnNlLmM6IFJlYWxseSByZWdlbmVyYXRlZC4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX3VuYXJ5X29wX2V4cHIpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2lkX2V4cHIpOiBMaWtld2lzZS4KCShiZWdpbl9uZXdfcGxhY2VtZW50KTogTGlrZXdpc2UuCgkoZmluaXNoX25ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCShmaW5pc2hfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGZpbmlzaF90cmFuc2xhdGlvbl91bml0KTogTGlrZXdpc2UuCgkoZmluaXNoX3Bhcm1saXN0KTogTGlrZXdpc2UuCgkoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9jbGFzc19kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX2RlZmF1bHRfYXJncyk6IExpa2V3aXNlLgoJKGZpbmlzaF9pbmxpbmVfZGVmaW5pdGlvbnMpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoR0NDX0FTTV9LRVlXT1JEKTogUmVtb3ZlLgoJKFRZUEVOQU1FX0VMTElQU0lTKTogTGlrZXdpc2UuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJVXNlIG5ldyBmdW5jdGlvbnMgaW4gc2VtYW50aWNzLmMgaW4gdGhlIGFjdGlvbnMgZm9yIG1hbnkgcnVsZXMuCgkqIGd4eC5ncGVyZiAoR0NDX0FTTV9LRVlXT1JEKTogSnVzdCB1c2UgQVNNX0tFWVdPUkQuCgkqIGhhc2guaDogUmVnZW5lcmF0ZWQuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZXhwcl9zdG10KTogQWxsb3cgTlVMTCBleHByLgoJKGZpbmlzaF91bmFyeV9vcF9leHByKTogTmV3IGZ1bmN0aW9uLCBjb250YWluaW5nCgljb2RlIHByZXZpb3VzbHkgaW4gcGFyc2UueS4KCShmaW5pc2hfaWRfZXhwcik6IExpa2V3aXNlLgoJKGJlZ2luX25ld19wbGFjZW1lbnQpOiBMaWtld2lzZS4KCShmaW5pc2hfbmV3X3BsYWNlbWVudCk6IExpa2V3aXNlLgoJKGZpbmlzaF9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZmluaXNoX3RyYW5zbGF0aW9uX3VuaXQpOiBMaWtld2lzZS4KCShmaW5pc2hfcGFybWxpc3QpOiBMaWtld2lzZS4KCShiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfZGVmYXVsdF9hcmdzKTogTGlrZXdpc2UuCgkoZmluaXNoX2lubGluZV9kZWZpbml0aW9ucyk6IExpa2V3aXNlLgoKU3VuIE1heSAxMCAyMzo0MzoxMyAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiB0eXBlY2suYyAoYnVpbGRfY19jYXN0KTogRG9uJ3QgZGVjYXkgYXJyYXlzIGFuZCBmdW5jdGlvbnMgdG8KCXBvaW50ZXIgdHlwZSB3aGVuIGNvbnZlcnRpbmcgdG8gYSBjbGFzcyB0eXBlLgoKU3VuIE1heSAxMCAyMjo1Mzo1NiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKERFQ0xfTkFNRVNQQUNFX1NDT1BFX1ApOiBOZXcgbWFjcm8uCgkoREVDTF9DTEFTU19TQ09QRV9QKTogTGlrZXdpc2UuCgpTdW4gTWF5IDEwIDIyOjQ4OjIyIDE5OTggIEguSi4gTHUgIChoamxAZ251Lm9yZykKCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBPVkxfQ1VSUkVOVCBvbiBUUkVFX1ZFQ19FTFQuCgkqIGRlY2wyLmMgKGNvbnN0cnVjdG9yX25hbWVfZnVsbCk6IExpa2V3aXNlLgoKU3VuIE1heSAxMCAyMjo0ODoxMiAxOTk4ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiB0cmVlLmMgKG1hcGNhcik6IEFkZCBPVkVSTE9BRCBzdXBwb3J0LgoKCSogaW5pdC5jIChyZXNvbHZlX29mZnNldF9yZWYpOiBXZSBtdXN0IHVzZSBiYXNldHlwZV9wYXRoIGJlZm9yZSB3ZQoJZGVzdHJveSBpdCB3aXRoIGEgY2FsbCB0byBjb252ZXJ0X3BvaW50ZXJfdG8uCgpTYXQgTWF5ICA5IDE0OjQ0OjM3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGN1cnJlbnRseV9vcGVuX2NsYXNzKTogTmV3IGZuLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBVc2UgaXQuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBMaWtld2lzZS4KCkZyaSBNYXkgIDggMjM6MzI6NDIgMTk5OCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBjcC10cmVlLmRlZiAoT1ZFUkxPQUQpOiBOZXcgbm9kZS4KCSogY3AtdHJlZS5oIChCSU5ESU5HX1RZUEUsIFNFVF9JREVOVElGSUVSX0dMT0JBTF9WQUxVRSwKCVNFVF9JREVOVElGSUVSX05BTUVTUEFDRV9WQUxVRSk6IERlZmluZS4KCShOQU1FU1BBQ0VfQklORElORyk6IFJlbW92ZS4KCShJREVOVElGSUVSX0dMT0JBTF9WQUxVRSwgSURFTlRJRklFUl9OQU1FU1BBQ0VfVkFMVUUpOiBVc2UKCW5hbWVzcGFjZV9iaW5kaW5nLgoJKE9WTF9GVU5DVElPTiwgT1ZMX0NIQUlOLCBPVkxfQ1VSUkVOVCwgT1ZMX05FWFQsIE9WTF9VU0VEKToKCURlZmluZS4KCSh0cmVlX292ZXJsb2FkKTogTmV3IHN0cnVjdC4KCShJREVOVElGSUVSX1RZUEVfVkFMVUUpOiBVc2UgaWRlbnRpZmllcl90eXBlX3ZhbHVlLgoJKFJFQUxfSURFTlRJRklFUl9UWVBFX1ZBTFVFKTogRGVmaW5lLgoJKElERU5USUZJRVJfSEFTX1RZUEVfVkFMVUUpOiBVc2UgSURFTlRJRklFUl9UWVBFX1ZBTFVFLgoJKGxhbmdfZGVjbF9mbGFncyk6IFJlbW92ZSBpbl9uYW1lc3BhY2UuCgkobGFuZ19kZWNsKTogUmVtb3ZlIGNoYWluLgoJKERFQ0xfQ0hBSU4sIERFQ0xfTkFNRVNQQUNFKTogUmVtb3ZlLgoJKGZsYWdfaG9ub3Jfc3RkKTogRGVjbGFyZSBleHRlcm4uCgkoaWRlbnRpZmllcl90eXBlX3ZhbHVlLCBwdXNoZGVjbF9uYW1lc3BhY2VfbGV2ZWwsIHB1c2hfdXNpbmdfZGVjbCwKCW5hbWVzcGFjZV9iaW5kaW5nLCBzZXRfbmFtZXNwYWNlX2JpbmRpbmcsCglsb29rdXBfZnVuY3Rpb25fbm9uY2xhc3MsIGNhdF9uYW1lc3BhY2VfbGV2ZWxzLAoJc2V0X2RlY2xfbmFtZXNwYWNlLCBsb29rdXBfYXJnX2RlcGVuZGVudCwgYmluZGluZ19pbml0LCBvdmxfY29ucywKCXNjcmF0Y2hfb3ZsX2NvbnMsIG92bF9tZW1iZXIsIGJ1aWxkX292ZXJsb2FkKTogRGVjbGFyZS4KCShkZWNsX2xpc3RfbGVuZ3RoLCBnZXRfbmFtZXNwYWNlX2lkLCBjdXJyZW50X25hbWVzcGFjZV9pZCwKCW92ZXJsb2FkZWRfZ2xvYmFsc19wKTogUmVtb3ZlLgoJKGxvb2t1cF91c2luZ19uYW1lc3BhY2UsIHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlKTogQ2hhbmdlCglyZXR1cm4gdHlwZS4KCShwdXNoX3NjcmF0Y2hfb2JzdGFjayk6IE5ldyBtYWNyby4KCSogY2FsbC5jIChhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogU3BlY2lhbC1jYXNlIHR5cGUgb2YgT1ZFUkxPQUQgbm9kZS4KCShidWlsZF91c2VyX2NvbnZlcnNpb25zXzEpOiBJdGVyYXRlIHVzaW5nIE9WTF9ORVhUIGZvciBjdG9ycywKCWNvbnZzLCBmbnMuCgkoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBJdGVyYXRlIHVzaW5nIE9WTF9DSEFJTi4KCVByaW50IERFQ0xfTkFNRSBpbiB3aGVuIHJlcG9ydGluZyBhbWJpZ3VpdGllcy4KCShidWlsZF9vYmplY3RfY2FsbCk6IEl0ZXJhdGUgdXNpbmcgT1ZMX05FWFQgZm9yIGZucywgY29udnMuCgkoYnVpbGRfbmV3X29wKTogQ2FsbCBsb29rdXBfZnVuY3Rpb25fbm9uY2xhc3MuCglJdGVyYXRlIHVzaW5nIE9WTF9ORVhULgoJKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogQ2hhbmdlIGRldGVjdGlvbiBvZiBtZW1iZXJzLgoJRG8gbm90IHdyYXAgVFJFRV9MSVNUIGFyb3VuZCBmaWVsZHMgYW5kIHNpbmdsZSBnbG9iYWwgZnVuY3Rpb25zLgoJKGJ1aWxkX292ZXJfY2FsbCk6IERvbid0IHB1c2ggYSBjbGFzcyBsZXZlbCBpZiB0aGUgY29udGV4dCBpcyBhCgluYW1lc3BhY2UuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogSXRlcmF0ZSB1c2luZyBPVkxfTkVYVC4KCSogY2xhc3MuYyAoYWRkX21ldGhvZCk6IENoYWluIG92ZXJsb2FkZWQgbWVtYmVycyB1c2luZwoJYnVpbGRfb3ZlcmxvYWQuICBSZW1vdmUgY29weWluZyBvZiBtZXRob2QuCgkoZ3Jvd19tZXRob2QpOiBXaGVuIGl0ZXJhdGluZyB0aHJvdWdoIHRoZSBvYnN0YWNrLCBleHBlY3QgT1ZFUkxPQUQKCW5vZGVzLiAgQ2hhaW4gb3ZlcmxvYWQgbWVtYmVycy4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBDaGFpbiBvdmVybG9hZCBtZW1iZXJzLiAgVW5wYWNrIE9WRVJMT0FECglub2RlcyBpbiBjYWxsIHRvIGdldF9iYXNlbGlua3MuCgkoZHVwbGljYXRlX3RhZ19lcnJvcik6IEV4cGVjdCBPVkVSTE9BRCBub2RlcyB3aGVuIHVuY2hhaW5pbmcuCgkoZmluaXNoX3N0cnVjdF8xKTogSXRlcmF0ZSBvdmVyIGN0b3IgdXNpbmcgT1ZMX05FWFQuICBIYW5kbGUKCWZkZWNscyB0aGF0IGFyZSBPVkVSTE9BRCBub2Rlcy4KCSh2YWxpZGF0ZV9saHMpOiBOZXcgZnVuY3Rpb24uCgkoaW5zdGFudGlhdGVfdHlwZSk6IERvIG5vdCBjb3B5IE9WRVJMT0FEIG5vZGVzLiAgUmVtb3ZlIGRlYWQKCWNvZGUuICBVc2UgREVDTF9OQU1FIGluIGVycm9yIG1lc3NhZ2VzLiAgU3BsaXQgY29kZSBiZXR3ZWVuIGdsb2JhbAoJYW5kIG1lbWJlciBmdW5jdGlvbiBwcm9jZXNzaW5nLgoJKiBkZWNsLmMgKGdsb2JhbF90eXBlX25vZGUpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKGluX3N0ZCk6IE5ldyBnbG9iYWwuCgkoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBOZXcgZmllbGQgdXNpbmdzLgoJKHJlc3VtZV9iaW5kaW5nX2xldmVsKTogQXNzZXJ0IHRoYXQgd2UgYXJlIG5vdCBpbiBhIGNsYXNzLgoJKHRvcGxldmVsX2JpbmRpbmdzX3ApOiBKdXN0IGNoZWNrIGZvciBuYW1lc3BhY2VfcCBvcgoJcHNldWRvX2dsb2JhbC4KCShyZXN1bWVfbGV2ZWwpOiBSZW1vdmUuCgkoZmluZF9iaW5kaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGJpbmRpbmdfZm9yX25hbWUpOiBDYWxsIGl0LgoJKG5hbWVzcGFjZV9iaW5kaW5nLCBzZXRfbmFtZXNwYWNlX2JpbmRpbmcpOiBOZXcgZnVuY3Rpb25zLgoJKHB1c2hfbmFtZXNwYWNlKTogQXNzb2NpYXRlIGJpbmRpbmcgbGV2ZWwgd2l0aCBuZXcgbmFtZXNwYWNlLAoJcmVzdW1lX2JpbmRpbmdfbGV2ZWwgZm9yIGV4aXN0aW5nIG5hbWVzcGFjZS4gIFJlbW92ZSBvbGQgY29kZS4KCUZha2Ugc3RkIGJ5IGNvdW50aW5nLgoJKHN0b3JlX2JpbmRpbmdzKTogVXNlIFJFQUxfSURFTlRJRklFUl9UWVBFX1ZBTFVFLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogU2F2ZSBjdXJyZW50IG5hbWVzcGFjZS4KCShwb3BfZnJvbV90b3BfbGV2ZWwpOiBSZXN0b3JlIHNhdmVkIG5hbWVzcGFjZS4KCShwb3BfbmFtZXNwYWNlKTogQ2FsbCBzdXNwZW5kX2JpbmRpbmdfbGV2ZWwuICBSZW1vdmUgb2xkIGNvZGUuCgkoY2F0X25hbWVzcGFjZV9sZXZlbHMpOiBOZXcgZnVuY3Rpb24uCgkoc2V0X2lkZW50aWZpZXJfdHlwZV92YWx1ZV93aXRoX3Njb3BlKTogRm9yIG5hbWVzcGFjZSBiaW5kaW5ncywKCXNldCBCSU5ESU5HX1RZUEUsIGFuZCB1c2UgZ2xvYmFsX3R5cGVfbm9kZS4KCVVzZSBSRUFMX0lERU5USUZJRVJfVFlQRV9WQUxVRSBvdGhlcndpc2UuCgkoaWRlbnRpZmllcl90eXBlX3ZhbHVlKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2h0YWcpOiBJZiBubyBjb250ZXh0LCB1c2UgY3VycmVudF9uYW1lc3BhY2UuCgkoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgcHJvY2VzcyBERUNMX0NIQUlOLgoJKHB1c2hkZWNsKTogU2V0IERFQ0xfQ09OVEVYVCB0byBjdXJyZW50X25hbWVzcGFjZSwgaWYgaXQgaXMgbm90CglhbHJlYWR5IHNldC4gIE5ldmVyIHJlc2V0IGl0IHRvIE5VTExfVFJFRS4gIExvb2t1cCBnbG9iYWwgdmFyaWFibGVzCglpbiB0aGVpciBuYW1lc3BhY2UuICBQdXNoIG92ZXJsb2FkZWQgdGVtcGxhdGVzIGlmIHRoZXkgYXJlIG9uCgluYW1lc3BhY2UgbGV2ZWwuCgkocHVzaGRlY2xfbmFtZXNwYWNlX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hkZWNsX3RvcF9sZXZlbCk6IEltcGxlbWVudCB1c2luZyBwdXNoZGVjbF9uYW1lc3BhY2VfbGV2ZWwuCgkocHVzaGRlY2xfdXNpbmdfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShvdmVybG9hZGVkX2dsb2JhbHNfcCk6IFJlbW92ZS4KCShwdXNoX292ZXJsb2FkZWRfZGVjbCk6IENyZWF0ZSBPVkVSTE9BRCBub2RlcywgYW5kIGl0ZXJhdGUgdGhyb3VnaAoJdGhlbS4gIFVzZSBuYW1lc3BhY2VfYmluZGluZyBhbmQgc2V0X25hbWVzcGFjZV92YWx1ZS4KCShyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBDb21wbGFpbiBpZiB0aGUgZGVjbGFyYXRpb25zIGNvbWUKCWZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMuCgkobG9va3VwX3RhZyk6IE9uIG5hbWVzcGFjZSBsZXZlbCwgbG9vayBpbiB0aGUgQklORElOR19UWVBFLgoJKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IFBhc3MgdHJlZV9iaW5kaW5ncyBmcm9tIHN0YWNrLiAgUmVtb3ZlCglvbGQgY29kZS4KCShzZWxlY3RfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfbmFtZV9yZWFsKTogQ2FsbCBpdCBmb3IgcXVhbGlmaWVkIGFuZCB1bnF1YWxpZmllZCBsb29rdXAuCglQYXNzIHRyZWVfYmluZGluZ3MgZnJvbSB0aGUgc3RhY2suCglJZiBwcmVmZXJfdHlwZSBpcyAxLCBhbHNvIGFjY2VwdCBuYW1lc3BhY2VzLgoJKGxvb2t1cF9mdW5jdGlvbl9ub25jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCB0aGUgYmluZGluZyBsZXZlbCBvZiB0aGUgZ2xvYmFsCgluYW1lc3BhY2UgdG8gZ2xvYmFsX2JpbmRpbmdfbGV2ZWwuCglCdWlsZCBhIHByb3BlciB0eXBlIGxpc3QgZm9yIF9fYnVpbHRpbl9hcHBseS4KCUluaXRpYWxpemUgc3RkX25vZGUgdG8gImZha2Ugc3RkIiBpZiBmbGFnX2hvbm9yX3N0ZCBpcyBzZXQuCglJbml0aWFsaXplIGdsb2JhbF90eXBlX25vZGUuCglBbGxvY2F0ZWQgYmFkX2FsbG9jIGluIG5hbWVzcGFjZSBzdGQgaWYgZmxhZ19ob25vcl9zdGQuCgkoZGVmaW5lX2Z1bmN0aW9uKTogU2V0IHRoZSBERUNMX0NPTlRFWFQgdG8gdGhlIGN1cnJlbnRfbmFtZXNwYWNlLgoJKHN0YXJ0X2RlY2wpOiBBIG5hbWVzcGFjZSBpcyBub3QgY29uc2lkZXJlZCBhcyBhIGNvbnRleHQgaGVyZS4gIElmCgl0aGUgREVDTF9DT05URVhUIGlzIGEgbmFtZXNwYWNlLCBwdXNoIHRoZSBkZWNsLgoJKGNwX2ZpbmlzaF9kZWNsKTogQ2hlY2sgZm9yIG5hbWVzcGFjZXMgdXNlZCBhcyBpbml0aWFsaXplcnMuCgkoZ3Jva2ZuZGVjbCk6IEFkZCBuYW1lc3BhY2UgcGFyYW1ldGVyLiAgUmVtb3ZlIHByb2Nlc3Npbmcgb2YKCURFQ0xfQ0hBSU4uCgkoZ3Jva3ZhcmRlY2wpOiBBZGQgbmFtZXNwYWNlIHBhcmFtZXRlci4KCShncm9rZGVjbGFyYXRvcik6IFByb2Nlc3MgU0NPUEVzIHRoYXQgYXJlIG5hbWVzcGFjZXMuICBGb3IKCW1hbmdsaW5nLCB0ZW1wb3JhcmlseSBzZXQgdGhlIERFQ0xfQ09OVEVYVCBvbiBhbm9ueW1vdXMgc3RydWN0cy4KCShzdGFydF9mdW5jdGlvbik6IENoZWNrIGZvciBjb250ZXh0cyB0aGF0IGFyZSBuYW1lc3BhY2VzLgoJU2V0IGNvbnRleHQgZm9yIGRlY2xhcmF0aW9ucyB0aGF0IGhhdmUgbm90IGJlZW4gcHVzaGVkLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBDaGVjayBmb3IgOjptYWluIG9ubHkuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoc3RhcnRfbWV0aG9kKTogQ2hlY2sgZm9yIGNvbnRleHRzIHRoYXQgYXJlIG5hbWVzcGFjZXMuCgkoc3RhcnRfbWV0aG9kKTogUmVtb3ZlIERFQ0xfQ0hBSU4gcHJvY2Vzc2luZy4KCSogZGVjbDIuYyAoZmxhZ19ob25vcl9zdGQpOiBEZWNsYXJlLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IFNldCBpdCBpZiAtZmhvbm9yLXN0ZCBvciAtZm5ldy1hYmkgaXMgZ2l2ZW4uCgkoZGVjbF9uYW1lc3BhY2VfbGlzdCk6IE5ldyBzdGF0aWMgZ2xvYmFsLgoJKGdyb2tfeF9jb21wb25lbnRzKTogSWdub3JlIG5hbWVzcGFjZXMgYXMgdHlwZSBjb250ZXh0cy4KCShjaGVja19jbGFzc2ZuKTogRXhwZWN0IE9WRVJMT0FEIG5vZGVzLgoJKGdyb2tmaWVsZCk6IFJlbW92ZSBERUNMX0NIQUlOIHByb2Nlc3NpbmcuCgkoZmluaXNoX2ZpbGUpOiBDYWxsIGNhdF9uYW1lc3BhY2VfbGV2ZWxzLgoJKG1lcmdlX2Z1bmN0aW9ucyk6IE5ldyBmdW5jdGlvbi4KCShhbWJpZ3VvdXNfZGVjbCk6IFJld3JpdGUuCgkobG9va3VwX3VzaW5nX25hbWVzcGFjZSk6IFByb2R1Y2UgdHJlZV9iaW5kaW5ncy4KCShxdWFsaWZpZWRfbG9va3VwX3VzaW5nX25hbWVzcGFjZSk6IExpa2V3aXNlLgoJKHNldF9kZWNsX25hbWVzcGFjZSwgZGVjbF9uYW1lc3BhY2UsIGN1cnJlbnRfZGVjbF9uYW1lc3BhY2UsCglwdXNoX2RlY2xfbmFtZXNwYWNlLCBwb3BfZGVjbF9uYW1lc3BhY2UpOiBOZXcgZnVuY3Rpb25zLgoJKGFyZ19sb29rdXApOiBOZXcgc3RydWN0LgoJKGFkZF9mdW5jdGlvbiwgYXJnX2Fzc29jX25hbWVzcGFjZSwgYXJnX2Fzc29jX2NsYXNzLAoJYXJnX2Fzc29jX3R5cGUsIGFyZ19hc3NvY19hcmdzLCBhcmdfYXNzb2MsIGxvb2t1cF9hcmdfZGVwZW5kZW50KToKCU5ldyBmdW5jdGlvbnMuCgkoZ2V0X25hbWVzcGFjZV9pZCwgY3VycmVudF9uYW1lc3BhY2VfaWQpOiBSZW1vdmUuCgkoZG9fdG9wbGV2ZWxfdXNpbmdfZGVjbCk6IFJld3JpdGUuCgkoZG9fY2xhc3NfdXNpbmdfZGVjbCk6IENvbXBsYWluIGFib3V0IG5hbWVzcGFjZSBxdWFsaWZpZXJzLgoJKGRvX3VzaW5nX2RpcmVjdGl2ZSk6IFNvcnJ5IGlmIG5vdCBvbiBuYW1lc3BhY2UgbGV2ZWwuICBDb21wbGFpbgoJYWJvdXQgdW5rbm93biBuYW1lc3BhY2VzLgoJKiBlcnJvci5jIChkdW1wX2FnZ3JfdHlwZSk6IENoZWNrIGZvciBuYW1lc3BhY2UgY29udGV4dHMuCgkqIGV4Y2VwdC5jIChpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogUHVzaCB0ZXJtaW5hdGUgaW50byBzdGQuCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBBIG5hbWVzcGFjZSBpcyBub3QgYSBjb250ZXh0LCBoZXJlLgoJKiBpbml0LmMgKGV4cGFuZF9tZW1iZXJfaW5pdCk6IFJlbW92ZSBERUNMX0NIQUlOIHByb2Nlc3NpbmcuCgkoYnVpbGRfb2Zmc2V0X3JlZik6IFByb2Nlc3MgT1ZFUkxPQUQgbm9kZXMuCgkqIGxhbmctc3BlY3MuaCAoX19IT05PUl9TVEQpOiBEZWZpbmUgaWYgLWZuZXctYWJpIG9yIC1maG9ub3Itc3RkLgoJKiBsZXguYyAoaWRlbnRpZmllcl90eXBlKTogTG9vcCB1c2luZyBPVkxfQ0hBSU4uCgkoc2VlX3R5cGVuYW1lKTogU2V0IGxvb2tpbmdfZm9yX3R5cGVuYW1lIHRvIDIuCgkocmVhbF95eWxleCk6IExpa2V3aXNlLgoJKGRvX2lkZW50aWZpZXIpOiBFeHBlY3QgT1ZFUkxPQUQgbm9kZXMgaW5zdGVhZCBvZiBUUkVFX0xJU1RzLgoJKGRvX3Njb3BlZF9pZCk6IEV4cGVjdCBPVkVSTE9BRCBub2Rlcy4KCUNoYW5nZSBjYWxsaW5nIGNvbnZlbnRpb24gZm9yIHF1YWxpZmllZF9sb29rdXBfdXNpbmdfbmFtZXNwYWNlLgoJKGJ1aWxkX2xhbmdfZGVjbCk6IERvbid0IHNldCBpbl9uYW1lc3BhY2UgYW55bW9yZS4KCSogbWV0aG9kLmMgKHR5cGV2ZWNfc2l6ZSk6IE5ldyBnbG9iYWwuCgkoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBSZXR1cm4gaWYgZ2xvYmFsX25hbWVzcGFjZS4KCU90aGVyd2lzZSwgYWx3YXlzIGV4cGVjdCBhIGRlY2xhcmF0aW9uIGNvbnRleHQuCgkoYnVpbGRfcXVhbGlmaWVkX25hbWUpOiBMaWtld2lzZS4KCU1ha2Ugc3VyZSB3ZSBkb24ndCB3cml0ZSBiZXlvbmQgdHlwZXZlY19zaXplLgoJKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IExpa2V3aXNlLgoJQWxsb2NhdGUgb25lIGV4dHJhIHNsb3QgZm9yIHRoZSBuYW1lc3BhY2UuCgkoaGFja19pZGVudGlmaWVyKTogTWFyayBjb2RlIGRlYWQuCglQcm9jZXNzIE9WRVJMT0FEIGFuZCBOQU1FU1BBQ0VfREVDTCBub2Rlcy4KCSogcGFyc2UueSAocHJvZ3JhbSk6IFBvcCBuYW1lc3BhY2VzIHVudGlsIGluIGdsb2JhbCBuYW1lc3BhY2UuCgkoZXh0ZGVmKTogSW4gYSB1c2luZy1kZWNsYXJhdGlvbiwgZG9uJ3QgZGlzY2FyZCB0aGUgaWRlbnRpZmllciBpZgoJdGhlcmUgaXMgbm8gZGVjbGFyYXRpb24uCgkobGVmdF9jdXJseSk6IElnbm9yZSB0eXBlIGNvbnRleHRzIHdoaWNoIGFyZSBuYW1lc3BhY2VzLgoJKHR5cGVuYW1lX3N1YjIpOiBVc2UgSURFTlRJRklFUl9UWVBFX1ZBTFVFIHRvIHJldHJpZXZlIHRoZSB0eXBlCgl1c2VkIGFzIHNjb3BlLgoJKiBwdC5jICh0ZW1wbGF0ZV9jbGFzc19kZXB0aCk6IEV4cGVjdCB0eXBlcyB0byBiZSBuYW1lc3BhY2VzLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IFNpbXBsaWZ5IGJ5IGV4cGVjdGluZyBPVkVSTE9BRCBub2Rlcy4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBQdXNoIGludG8gbmFtZXNwYWNlIGxldmVsLgoJUmVzZXQgY3R4IGlmIGl0IGlzIGEgbmFtZXNwYWNlLgoJU2V0IERFQ0xfQ09OVEVYVCB0byBjdXJyZW50X25hbWVzcGFjZSBpZiBub3Qgc2V0IGFscmVhZHkuCglJZ25vcmUgcmVhbCBjb250ZXh0cyB0aGF0IGFyZSBuYW1lc3BhY2VzLgoJKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IFNraXAgZ2xvYmFsX25hbWVzcGFjZS4KCU1hbmdsZSBvdGhlciBuYW1lc3BhY2VzIGFzIGRlY2xhcmF0aW9ucy4KCShsb29rdXBfdGVtcGxhdGVfZnVuY3Rpb24pOiBTZXQgdHlwZSBvZiBPVkVSTE9BRCBub2RlcyB0byB1bmtub3duLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IFB1c2ggaW50byBuYW1lc3BhY2Ugb2YgY29udGV4dC4KCUlmIHRoZSBjb250ZXh0IGlzIGEgbmFtZXNwYWNlLCBzZXQgaXQgdG8gZ2xvYmFsX25hbWVzcGFjZS4KCVVzZSBpZF9jb250ZXh0IGZvciBtYW5nbGluZy4KCShmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtKTogSGFuZGxlIE9WRVJMT0FEIGFuZCBOQU1FU1BBQ0VfREVDTCBub2Rlcy4KCSh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogSWdub3JlIG5hbWVzcGFjZSBjb250ZXh0cy4KCVB1c2ggaW50byBuYW1lc3BhY2UgbGV2ZWwuCgkodHN1YnN0KTogSGFuZGxlIE5BTUVTUEFDRV9ERUNMIG5vZGVzLgoJUmVtb3ZlIERFQ0xfQ0hBSU4gcHJvY2Vzc2luZy4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBSZWNvZ25pemUgT1ZFUkxPQUQgaW5zdGVhZCBvZiBUUkVFX0xJU1Qgbm9kZXMuCgkqIHB0cmVlLmMgKHByaW50X2xhbmdfaWRlbnRpZmllcik6IFByaW50IGJpbmRpbmdzLgoJKGxhbmdfcHJpbnRfeG5vZGUpOiBQcmludCBPVkVSTE9BRCBub2Rlcy4KCSogcnR0aS5jIChpbml0X3J0dGlfcHJvY2Vzc2luZyk6IFB1c2ggdHlwZV9pbmZvIGludG8gc3RkLgoJKiBzZWFyY2guYyAobG9va3VwX2ZuZmllbGRzX2hlcmUpOiBFeHBlY3QgT1ZFUkxPQUQgbm9kZXMuCgkobG9va3VwX2ZuZmllbGRzXzEsIGdldF92aXJ0dWFsc19uYW1lZF90aGlzLCBnZXRfbWF0Y2hpbmdfdmlydHVhbCwKCWRmc19kZWJ1Z19tYXJrLCBkZnNfcHVzaGRlY2xzLCBkZnNfY29tcHJlc3NfZGVjbHMsIGFkZF9jb252ZXJzaW9ucywKCWxvb2t1cF9mbmZpZWxkc19oZXJlKTogTGlrZXdpc2UuCglQcm9jZXNzIGFsbCBub2RlcywgaW5zdGVhZCBvZiBnb2luZyB0aHJvdWdoIFRSRUVfQ0hBSU4uCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9vcl9yZWZlcmVuY2VfdHlwZSk6IFNldCBjb250ZXh0Cgl0byBnbG9iYWxfbmFtZXNwYWNlLgoJKGJ1aWxkX3NpZ25hdHVyZV90YWJsZV9jb25zdHJ1Y3Rvcik6IEV4cGVjdCBPVkVSTE9BRCBub2Rlcy4KCSogc3Bldy5jICh5eWxleCk6IFNhdmUgb2xkIHNldHRpbmcgb2YgbG9va2luZ19mb3JfdHlwZW5hbWUuCgkqIHRyZWUuYyAoZGVjbF9saXN0X2xlbmd0aCk6IFJlbW92ZS4KCShiaW5kaW5nX2luaXQpOiBOZXcgZnVuY3Rpb24uCgkoY291bnRfZnVuY3Rpb25zKTogUmV3cml0ZS4KCShpc19vdmVybG9hZGVkX2ZuKTogRXhwZWN0IE9WRVJMT0FEIG5vZGVzLgoJKHJlYWxseV9vdmVybG9hZGVkX2ZuLCBnZXRfZmlyc3RfZm4sIGx2YWx1ZV90eXBlKTogTGlrZXdpc2UuCgkob3ZsX2NvbnMsIHNjcmF0Y2hfb3ZsX2NvbnMsIGJ1aWxkX292ZXJsb2FkLCBidWlsZF9vdmVybG9hZF9hZnRlciwKCW92bF9tZW1iZXIpOiBOZXcgZnVuY3Rpb25zLgoJKiB0eXBlY2suYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlKTogRXhwZWN0IE9WRVJMT0FEIG5vZGVzLgoJKHR5cGVfdW5rbm93bl9wKTogTGlrZXdpc2UuCgkocmVxdWlyZV9pbnN0YW50aWF0ZWRfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBEZWNsYXJlIGNvZGUgZGVhZC4KCShidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBDcmVhdGUgYW5kIGV4cGVjdCBPVkVSTE9BRCBub2Rlcy4KCShidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBDaGVjayBmb3IgOjptYWluIG9ubHkuCgkoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4gIEV4cGVjdCBPVkVSTE9BRCBub2Rlcy4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogQ2hlY2sgZm9yIFRSRUVfTElTVCBiZWZvcmUgYWNjZXNzaW5nCglUUkVFX1ZBTFVFLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IENoZWNrIGZvciBuYW1lc3BhY2UgYmluZGluZ3MgaW5zdGVhZAoJb2YgZ2xvYmFsIGJpbmRpbmdzLgoJKHB1c2hkZWNsLCBwdXNoX292ZXJsb2FkZWRfZGVjbCwgbG9va3VwX3RhZywgbG9va3VwX25hbWVfcmVhbCwKCWxvb2t1cF9uYW1lX2N1cnJlbnRfbGV2ZWwsIHN0YXJ0X2RlY2wsIHhyZWZfdGFnLAoJZmluaXNoX2VudW0pOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBMaWtld2lzZS4KCShsb29rdXBfZm5maWVsZHMpOiBMaWtld2lzZS4KCShkZnNfZGVidWdfbWFyayk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHBvcGxldmVsKTogVXNlIFNFVF9JREVOVElGSUVSX1RZUEVfVkFMVUUuCgkocG9wbGV2ZWxfY2xhc3MsIHBvcF9mcm9tX3RvcF9sZXZlbCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChmaW5pc2hfbWV0aG9kKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZSk6IFVzZSBTRVRfSURFTlRJRklFUl9HTE9CQUxfVkFMVUUuCgkqIGRlY2wuYyAocmVjb3JkX2J1aWx0aW5fdHlwZSk6IExpa2V3aXNlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nLCBncm9rZm5kZWNsKTogTGlrZXdpc2UuCgkqIGxleC5jIChnZXRfdGltZV9pZGVudGlmaWVyLCBkb19pZGVudGlmaWVyLCBkb19zY29wZWRfaWQpOiBMaWtld2lzZS4KCShtYWtlX2xhbmdfdHlwZSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChtYWtlX3RodW5rKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGRlYnVnX2JpbmZvKTogTGlrZXdpc2UuCgkqIGV4Y2VwdGlvbi5jYywgbmV3LmNjLCBuZXcxLmNjLCBuZXcyLmNjLCB0aW5mby5jYywgdGluZm8uaCwKCXRpbmZvMi5jYywgaW5jL25ldy5oOiBBZGQgc3RkIHF1YWxpZmljYXRpb25zLgoJKiBpbmMvbmV3OiBXcmFwIHdpdGggbmFtZXNwYWNlIHN0ZCBpZiBfX0hPTk9SX1NURC4KCSogaW5jL3R5cGVpbmZvOiBMaWtld2lzZS4KCkZyaSBNYXkgIDggMDA6NDM6NTAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSGFuZGxlIHNlY29uZF9jb252Cglwcm9wZXJseSBmb3IgdGVtcGxhdGVzLgoKVGh1IE1heSAgNyAxNzowOToyNSAxOTk4ICBBbmRyZXcgTWFjTGVvZCAgPGFtYWNsZW9kQGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogU2V0IFRSRUVfVVNFRCBmbGFnIHRvCgl6ZXJvIGZvciBidWlsZF90eXBlX3ZhcmlhbnRzIG5vZGVzIGFzIHdlbGwuCgpXZWQgTWF5ICA2IDE5OjI3OjA5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IERvbid0IHRzdWJzdCB0aGUgdHlwZSBvZiBhbiBJREVOVElGSUVSX05PREUuCgpXZWQgTWF5ICA2IDE2OjQ5OjQ4IDE5OTggIEppbSBXaWxzb24gIDx3aWxzb25AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChjYWxsLm8sIGNsYXNzLm8sIGRlY2wubywgZGVjbDIubywgZXJyZm4ubywgZXJyb3IubywKCWV4Y2VwdC5vLCBleHByLm8sIGZyaWVuZC5vLCBpbml0Lm8sIGxleC5vLCBtZXRob2QubywgcHQubywgcmVwby5vLAoJcnR0aS5vLCBzZWFyY2gubywgc2VtYW50aWNzLm8sIHNpZy5vLCB0cmVlLm8sIHR5cGVjay5vLCB0eXBlY2syLm8sCgl4cmVmLm8pOiBBZGQgdG9wbGV2LmggZGVwZW5kZW5jaWVzLgoKV2VkIE1heSAgNiAxNjo0NDo1OCAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlcnJmbi5jIChjcF9lcnJvciwgY3Bfd2FybmluZyk6IFJlbW92ZSBkZWNsYXJhdGlvbnMgZm9yCgllcnJvciBhbmQgd2FybmluZyByZXNwZWN0aXZlbHkuCgpXZWQgTWF5ICA2IDE0OjI4OjE4IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGVycm9yLmM6IENvbnZlcnQgdG8gdXNpbmcgY3R5cGUgbWFjcm9zIGRlZmluZWQgaW4gc3lzdGVtLmguCgkqIG1ldGhvZC5jOiBMaWtld2lzZS4KCSogeHJlZi5jOiBMaWtld2lzZS4KCSogbGV4LmM6IExpa2V3aXNlLiAgQWxzbyByZW1vdmUgcmVkdW5kYW50IHN5c3RlbSBoZWFkZXIgc3R1ZmYuCgpXZWQgTWF5ICA2IDA2OjM2OjQxIDE5OTggIFJvYmVydCBMaXBlICA8cm9iZXJ0bEBkZ2lpLmNvbT4KCgkqIGNhbGwuYywgY2xhc3MuYywgZGVjbC5jLCBkZWNsMi5jLCBlcnJmbi5jLCBlcnJvci5jLCBleGNlcHQuYywKCWV4cHIuYywgZnJpZW5kLmMsIGluaXQuYywgbGV4LmMsIG1ldGhvZC5jLCBwdC5jLCByZXBvLmMsIHJ0dGkuYywKCXNlYXJjaC5jLCBzZW1hbnRpY3MuYywgc2lnLmMsIHRyZWUuYywgdHlwZWNrLmMsIHR5cGVjazIuYywKCXhyZWYuYzogQWRkIGluY2x1ZGUgb2YgdG9wbGV2LmguCgpXZWQgTWF5ICA2IDAyOjMzOjM5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAocGVybV9tYW5pcCk6IEFsc28gcmVnZW5lcmF0ZSB0aGUgUlRMIG9mIGFuIGV4dGVybi4KCShjb3B5X3RvX3Blcm1hbmVudCk6IFVzZSBlbmRfdGVtcG9yYXJ5X2FsbG9jYXRpb24uCgpUdWUgTWF5ICA1IDIzOjU0OjA0IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX3ZlY19pbml0KTogVGhlIGluaXRpYWxpemF0aW9uIG9mIGVhY2ggYXJyYXkKCWVsZW1lbnQgaXMgYSBmdWxsLWV4cHJlc3Npb24uCgpUdWUgTWF5ICA1IDE4OjI0OjEzIDE5OTggIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9tYW5nbGVkX25hbWUpOiBBZGQgYSBjYWxsIHRvIGJ1aWxkX3R5cGVfdmFyaWFudAoJdG8gZ2V0IHRoZSByaWdodCB0eXBlLgoKVHVlIE1heSAgNSAwMToyNTowMyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIC5TVUZGSVhFUy4KCgkqIGNwLXRyZWUuZGVmOiBSZW1vdmUgTkFNRVNQQUNFX0RFQ0wuCgpTdW4gTWF5ICAzIDAxOjMyOjE0IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRG8gZXZhbHVhdGUgYXJnIGV2ZW4gaWYgaXQgaGFzIGVtcHR5CgljbGFzcyB0eXBlLgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgcHVzaCBhIG1lbWJlciBmdW5jdGlvbi4KClRodSBBcHIgMzAgMTg6NTk6MjMgMTk5OCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGcrK0ZBUS5pbmZvKTogUHV0IC1vIG9wdGlvbiBiZWZvcmUgaW5wdXQgZmlsZS4KClRodSBBcHIgMzAgMTM6MDU6MzMgMTk5OCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogZ3h4aW50LnRleGk6IEFkZCBpbmZvIGZvciBzcXVhbmdsaW5nIGNvZGVzIEsgYW5kIEIuCgpUdWUgQXByIDI4IDEzOjIyOjAxIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHNlbWFudGljcy5jIChiZWdpbl9zdG10X2V4cHIpOiBBdm9pZCBkdXBsaWNhdGluZyB0aGUgZWZmZWN0IG9mCgl0aGUgZXhwcmVzc2lvbiBpbiB0ZW1wbGF0ZXMuCgkoZmluaXNoX3N0bXRfZXhwcik6IExpa2V3aXNlLgoKMTk5OC0wNC0yOCAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGFtYmlndW91c19kZWNsKTogRml4IE5BTUUgcGFybSB0byBiZSBhIHRyZWUsIG5vdCBpbnQuCgpNb24gQXByIDI3IDEzOjU4OjEwIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGRlY2wuYyAobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBBbHdheXMgY2xlYXIKCWN1cnJlbnRfdGVtcGxhdGVfcGFybXMgYW5kIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbC4KCShwdXNodGFnKTogUmVtb3ZlIGNoZWNrIG9mIGN1cnJlbnRfY2xhc3NfdHlwZSBhbmQgc29tZSBjb21tZW50cywKCXNpbmNlIG1heWJlX3B1c2hfdG9fdG9wX2xldmVsIG5vIGxvbmdlciBjcmVhdGVzIGNvbmZ1c2lvbi4KClN1biBBcHIgMjYgMTI6MTA6MTggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3AtdHJlZS5oIChDTEFTU1RZUEVfSVNfVEVNUExBVEUpOiBOZXcgbWFjcm8uCgkoREVDTF9DTEFTU19URU1QTEFURV9QKTogTGlrZXdpc2UuCgkoREVDTF9QUklNQVJZX1RFTVBMQVRFKTogTGlrZXdpc2UuCgkoUFJJTUFSWV9URU1QTEFURV9QKTogVXNlIGl0LgoJKHB1c2hfdGVtcGxhdGVfZGVjbF9yZWFsKTogTmV3IGZ1bmN0aW9uLgoJKHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZSk6IFRha2UgbmV3IHRlbXBsYXRlIHBhcmFtZXRlcnMgYXMKCWlucHV0LgoJKGlzX3NwZWNpYWxpemF0aW9uX29mKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBfdGVtcGxhdGVfYXJncyk6IERlY2xhcmUuCgkqIGRlY2wuYyAocHVzaHRhZyk6IEhhbmRsZSBmcmllbmQgdGVtcGxhdGUgY2xhc3Nlcy4KCSh4cmVmX3RhZyk6IExpa2V3aXNlLiAgVXNlIG5ldyBjYWxsaW5nIGNvbnZlbnRpb24gZm9yCglyZWRlY2xhcmVfY2xhc3NfdGVtcGxhdGUuCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogSGFuZGxlIGZyaWVuZCB0ZW1wbGF0ZXMuCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBVc2UgaXNfc3BlY2lhbGl6YXRpb25fb2Ygd2hlcmUKCWFwcHJvcHJpYXRlLiAgRGVhbCB3aXRoIGZyaWVuZCBjbGFzcyB0ZW1wbGF0ZXMuCgkobWFrZV9mcmllbmRfY2xhc3MpOiBMZXQgYSBjbGFzcyB0ZW1wbGF0ZSBiZSBmcmllbmRzIHdpdGggaXRzZWxmLgoJKiBwdC5jIChjb21wX3RlbXBsYXRlX2FyZ3MpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkodHN1YnN0X2ZyaWVuZF9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBVc2UgaXQuCgkocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogQWRqdXN0IGZvciBuZXcgY2FsbGluZyBjb252ZW50aW9uLgoJKGNvbXBfdGVtcGxhdGVfYXJncyk6IEdpdmUgaXQgZXh0ZXJuYWwgbGlua2FnZS4KCShpbnN0YW50aWF0ZV9jbGFzc190eXBlKTogVXNlIHRzdWJzdF9mcmllbmRfY2xhc3MgdG8gZGVhbAoJd2l0aCBmcmllbmQgdGVtcGxhdGVzLgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogVXNlIGNvbXBfdGVtcGxhdGVfYXJncywgcmF0aGVyIHRoYW4KCWV4cGFuZGluZyBpdCBpbmxpbmUuCgkqIHBhcnNlLnkgKGNvbXBvbmVudF9kZWNsKTogSGFuZGxlIGEgbmVzdGVkIHRlbXBsYXRlIHR5cGUKCWxpa2Ugb3RoZXIgY29tcG9uZW50IHR5cGUgZGVjbGFyYXRpb25zLgoKCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBIYW5kbGUgb3ZlcmxvYWRlZAoJY29uc3RydWN0b3JzIGNvcnJlY3RseS4KCgkqIHB0LmMgKG1hYnliZV9nZXRfdGVtcGxhdGVfZGVjbF9mcm9tX3R5cGVfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBVc2UgaXQuCgpUaHUgQXByIDIzIDIxOjE5OjA2IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuZGVmOiBBZGQgV1JBUFBFUi4gIFVTRVJfQ09OViBub3cgb25seSBoYXMgdHdvIG9wcy4KCSogY3AtdHJlZS5oOiBBZGQgV1JBUFBFUiBzdXBwb3J0LgoJKiBjYWxsLmMgKGFkZF9jYW5kaWRhdGUpOiBTcGxpdCBvdXQgZnJvbSBhZGRfKl9jYW5kaWRhdGUgZm5zLgoJKGJ1aWxkX292ZXJfY2FsbCk6IFRha2UgdGhlIGNhbmRpZGF0ZSBpbnN0ZWFkIG9mIGZ1bmN0aW9uIGFuZCBhcmdzLgoJRW5mb3JjZSBhY2Nlc3MgY29udHJvbCBoZXJlLiAgRW1pdCBvdmVybG9hZCB3YXJuaW5ncyBoZXJlLgoJKGFkZF93YXJuaW5nKTogTmV3IGZuLgoJKGpvdXN0KTogQWRkIFdBUk4gcGFybS4gIElmIG5vdCBzZXQsIGNhbGwgYWRkX3dhcm5pbmcgaW5zdGVhZCBvZgoJcHJpbnRpbmcgYSB3YXJuaW5nLiAgUmUtZW5hYmxlIHNvbWUgd2FybmluZ3MuCgkodG91cm5leSk6IFBhc3MgaXQuCgkoY29udmVydF9saWtlKTogQWRqdXN0LgoJKGJ1aWxkX25ld19vcCk6IEFkanVzdC4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IEFkanVzdC4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogQWRqdXN0LgoJKFVTRVJfQ09OVl9GTik6IEFkanVzdC4KCSogdHJlZS5jIChidWlsZF9leHByX3dyYXBwZXIsIGJ1aWxkX2V4cHJfcHRyX3dyYXBwZXIsCglidWlsZF9pbnRfd3JhcHBlcik6IE5ldyBmbnMuCgpUaHUgQXByIDIzIDE4OjI3OjUzIDE5OTggIE1hcmsgUC4gTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHVuaWZ5KTogRml4IHR5cG8gaW4gcHJldmlvdXMgY2hhbmdlLgoKVGh1IEFwciAyMyAwOTozMjo1OCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX3R5cGVfcmVhbCk6IERlY2xhcmUgY2Fub25pY2FsX25hbWUuCgoJKiB0eXBlY2suYyAoY29tcF90YXJnZXRfdHlwZXMpOiBGaXggUE1Gcy4KCldlZCBBcHIgMjIgMTM6MjQ6NDggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IFNldCBUUkVFX1BSSVZBVEUgYW5kIFRSRUVfUFJPVEVDVEVEIGZvcgoJdGhlIERFQ0xfUkVTVUxUcyBvZiBhIG1lbWJlciBURU1QTEFURV9ERUNMLCBub3QganVzdCB0aGUKCVRFTVBMQVRFX0RFQ0wuCgoJKiBwdC5jICh0c3Vic3QpOiBEZWNyZWFzZSB0aGUgdGVtcGxhdGUtbGV2ZWwgb2YKCVRFTVBMQVRFX1RFTVBMQVRFX1BBUk1TLiAgTGlrZXdpc2UgZm9yIHRoZSBERUNMX0lOSVRJQUwgb2YgYQoJVEVNUExBVEVfUEFSTV9JTkRFWC4KCSh0ZW1wbGF0ZV9kZWNsX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKHVuaWZ5KTogTWFrZSBzdXJlIHRvIHJlY29yZCB1bmlmaWNhdGlvbnMgZm9yIHRlbXBsYXRlCglwYXJhbWV0ZXJzLCBldmVuIHdoZW4gdGhlIHBhcmFtZXRlcnMgZXhhY3RseSBtYXRjaCB0aGUgYXJndW1lbnRzLgoJQ29tYmluZSBkdXBsaWNhdGVkIGNvZGUgZm9yIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk1zIGFuZAoJVEVNUExBVEVfVFlQRV9QQVJNUy4gIERvbid0IHRyeSB0byB1bmlmeSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIHRoYXQKCWFyZW4ndCBmcm9tIHRoZSBsZXZlbCB3ZSdyZSBjdXJyZW50bHkgd29ya2luZyBvbi4KClR1ZSBBcHIgMjEgMjI6MDA6MDQgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZXJyZm4uYyAoY3BfdGhpbmcpOiBVc2UgeHJlYWxsb2MsIG5vdCB4bWFsbG9jLCB0byBjb3B5IG1lbW9yeS4KCgkqIGRlY2wyLmMgKGNoZWNrX21lbWJlcl90ZW1wbGF0ZSk6IFNldCBERUNMX0lHTk9SRUQgZm9yIG1lbWJlcgoJY2xhc3MgdGVtcGxhdGVzLCB0b28uCgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBSZW1hbmdsZSB0aGUgbmFtZSBvZiBhIG1lbWJlciBUWVBFX0RFQ0wuCgpUdWUgQXByIDIxIDE4OjU5OjExIDE5OTggIEJlbmphbWluIEtvc25payAgPGJrb3pAcmhpbm8uY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogT25seSBjaGVjayBERUNMX0ZSSUVORF9QIGlmIGZ1bmN0aW9uLgoKVHVlIEFwciAyMSAxNDoyMjowMCAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBjcC10cmVlLmggKGludFRJX3R5cGVfbm9kZSwgdW5zaWduZWRfaW50VElfdHlwZV9ub2RlKTogRGVjbGFyZS4KCSogZGVjbC5jIChpbnRUSV90eXBlX25vZGUsIHVuc2lnbmVkX2ludFRJX3R5cGVfbm9kZSk6IERlZmluZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEhhbmRsZSBUSSB0eXBlcy4KCSogdHlwZWNrLmMgKHVuc2lnbmVkX3R5cGUsIHNpZ25lZF90eXBlKTogSGFuZGxlIFRJIHR5cGVzLgoKU2F0IEFwciAxOCAxNToyNToyMSAxOTk4ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBnKytzcGVjLmMgKGxhbmdfc3BlY2lmaWNfZHJpdmVyKTogTmV3IGFyZ3VtZW50IGluX2FkZGVkX2xpYnJhcmllcy4KCU5ldyBsb2NhbCBhZGRlZF9saWJyYXJpZXMuICBJbmNyZW1lbnQgY291bnQgd2hlbiBhZGQgbGlicmFyeSB0bwoJYXJnbGlzdC4KCkZyaSBBcHIgMTcgMjE6MjU6MDAgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3AtdHJlZS5oICh0eXBlX2FzX3N0cmluZ19yZWFsKTogTmV3IGZ1bmN0aW9uLgoJKiBwdC5jIChtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBVc2UgaXQuCgkqIGVycm9yLmMgKGR1bXBfYWdncl90eXBlKTogQ2hhbmdlIHByb3RvdHlwZS4KCShkdW1wX3R5cGVfcHJlZml4KTogTGlrZXdpc2UuCgkoZHVtcF90eXBlX3N1ZmZpeCk6IExpa2V3aXNlLgoJKGR1bXBfdHlwZV9yZWFsKTogQ29udmVydCBmcm9tIGR1bXBfdHlwZS4gIElmIGRlc2lyZWQsIHRoZQoJImNhbm9uaWNhIiBuYW1lIG9mIGEgdHlwZWRlZiwgaS5lLiwgdGhlIG5hbWUgb2YgdGhlIHVuZGVybHlpbmcKCXR5cGUsIGNhbiBiZSBwcmludGVkLgoJKGR1bXBfdHlwZSk6IENhbGwgZHVtcF90eXBlX3JlYWwuCgpGcmkgQXByIDE3IDE0OjMwOjQ1IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IC1mbmV3LWFiaSBpbXBsaWVzIC1mdnRhYmxlLXRodW5rcy4KCgkqIHR5cGVjay5jIChjb21wX3RhcmdldF90eXBlcyk6IFR3ZWFrIHBlZGFudGljIGNhc2UuCgkoY29tcF90YXJnZXRfcGFybXMpOiBUd2VhayBwZWRhbnRpYyBjYXNlLiAgQ2xlYW4gdXAgc29tZXdoYXQuCglSZXR1cm4gLTEgb3IgMSBpbnN0ZWFkIG9mIDEgb3IgMi4KCShjb21wcGFybXMpOiBSZW1vdmUgU1RSSUNUIGhhbmRsaW5nLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBGaXggaGFuZGxpbmcgb2YgcG1mcy4KCkZyaSBBcHIgMTcgMTQ6MDQ6MTYgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogdHlwZWNrLmMgKGNvbXBfdGFyZ2V0X3R5cGVzKTogSGFuZGxlIHJlZmVyZW5jZXMgbGlrZSBwb2ludGVycy4KCShjb21wX3RhcmdldF9wYXJtcyk6IE5vdGUgdGhhdCByZXR1cm4gY29kZSBmcm9tIGNvbXBfdGFyZ2V0X3R5cGVzCgljYW4gYmUgbmVnYXRpdmUgdG8gaW5kaWNhdGUgZmFpbHVyZS4KCkZyaSBBcHIgMTcgMDk6MTA6NTIgMTk5OCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKGMrKy5hbGwuYnVpbGQpOiBEb24ndCBkZXBlbmQgb24gJChERU1BTkdMRVJfUFJPRyksCgl3aGljaCByZXF1aXJlcyBhIHdvcmtpbmcgdGFyZ2V0IGNvbXBpbGVyIHRvIGJ1aWxkLgoKRnJpIEFwciAxNyAwODo1NzozNSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiB0cmVlLmMgKGF2b2lkX292ZXJsYXApOiBBZGQgcHJvdG90eXBlLgoKCSogc3Bldy5jIChudW1fdG9rZW5zKTogQWRkIHByb3RvdHlwZS4KCShudGhfbm9rZW4sIGFkZF90b2tlbiwgY29uc3VtZV90b2tlbiwgZGVidWdfeXljaGFyKTogTGlrZXdpc2UuCgoJKiBzZWFyY2guYyAoZGZzX2NoZWNrX292ZXJsYXApOiBBZGQgcHJvdG90eXBlLgoJKGRmc19ub19vdmVybGFwX3lldCk6IExpa2V3aXNlLgoKCSogcHQuYyAob3JpZ2luYWxfdGVtcGxhdGUpOiBBZGQgcHJvdG90eXBlLgoJKGlubGluZV9uZWVkc190ZW1wbGF0ZV9wYXJtcyk6IExpa2V3aXNlLgoJKHB1c2hfaW5saW5lX3RlbXBsYXRlX3Bhcm1zX3JlY3Vyc2l2ZSk6IExpa2V3aXNlLgoJKHJldHJpZXZlX3NwZWNpYWxpemF0aW9uLCByZWdpc3Rlcl9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKHByaW50X2NhbmRpZGF0ZXMsIHJlZHVjZV90ZW1wbGF0ZV9wYXJtX2xldmVsKTogTGlrZXdpc2UuCgkoYnVpbGRfdGVtcGxhdGVfZGVjbCwgbWFya190ZW1wbGF0ZV9wYXJtKTogTGlrZXdpc2UuCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbiwgZ2V0X2JpbmRpbmdzX3JlYWwpOiBMaWtld2lzZS4KCgkqIG1ldGhvZC5jIChzdGFydF9zcXVhbmdsaW5nKTogQWRkIHByb3RvdHlwZS4KCShlbmRfc3F1YW5nbGluZywgY2hlY2tfa3R5cGUsIGlzc3VlX2t0eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfb3ZlcmxvYWRlZF9zY29wZV9yZWYsIGNoZWNrX2J0eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfbWFuZ2xlZF90ZW1wbGF0ZV9wYXJtX2luZGV4KTogTGlrZXdpc2UuCgoJKiBsZXguYyAoaW5pdF9jcHBfcGFyc2UpOiBBZGQgcHJvdG90eXBlLgoJKGhhbmRsZV9jcF9wcmFnbWEsIGhhbmRsZV9zeXN2X3ByYWdtYSk6IExpa2V3aXNlLgoJKHJlZHVjZV9jbXAsIHRva2VuX2NtcCk6IExpa2V3aXNlLgoKCSogZXhjZXB0LmMgKGNhbGxfZWhfaW5mbyk6IEFkZCBwcm90b3R5cGUuCgkocHVzaF9laF9pbmZvLCBnZXRfZWhfaW5mbywgZ2V0X2VoX3ZhbHVlLCBnZXRfZWhfdHlwZSk6IExpa2V3aXNlLgoJKGdldF9laF9jYXVnaHQsIGdldF9laF9oYW5kbGVycywgZG9fcG9wX2V4Y2VwdGlvbik6IExpa2V3aXNlLgoKCSogZGVjbDIuYyAoaXNfbmFtZXNwYWNlX2FuY2VzdG9yKTogQWRkIHByb3RvdHlwZS4KCShuYW1lc3BhY2VfYW5jZXN0b3IsIGFkZF91c2luZ19uYW1lc3BhY2UpOiBMaWtld2lzZS4KCShhbWJpZ3VvdXNfZGVjbCk6IExpa2V3aXNlLgoKCSogZGVjbC5jIChpbmRlbnQpOiBBZGQgcHJvdG90eXBlLgoKCSogY2FsbC5jIChhZGRfdGVtcGxhdGVfY2FuZGlkYXRlX3JlYWwpOiBBZGQgcHJvdG90eXBlLgoKRnJpIEFwciAxNyAwMTo1NzoxMiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IEp1c3QgcmV0dXJuIGEgUE1GLgoKRnJpIEFwciAxNyAwMDo0NToxMiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IERvbid0IHN0cmlwIGN2LXF1YWxpZmllcnMKCXdoZW4gZG9pbmcgaW5pdGlhbGl6YXRpb25zLgoKCSogcHQuYyAodW5pZnkpOiBVc2UgY29tcHR5cGVzIHRvIGNvbXBhcmUgdHlwZSBhcmdzLgoKRnJpIEFwciAxNyAwMDoyNDoyMiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IEZpeCBjaGVjayBmb3Igd2hlbiBpdCdzIHNhZmUgdG8gZnJlZQoJdGhlIG5ldyBkZWNsLgoKCSogcHQuYyAobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogRG9uJ3QgcGFzcyBhIHR5cGVkZWYgdHlwZQoJdG8gdHlwZV9hc19zdHJpbmcuCgpUaHUgQXByIDE2IDE3OjQ3OjMwIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHB0LmMgKGJ1aWxkX3RlbXBsYXRlX3Bhcm1faW5kZXgpOiBBZGQgcHJvdG90eXBlLgoKCSogc2VhcmNoLmMgKG15X3RyZWVfY29ucyk6IERvbid0IGNsZWFyIHdvcmRzIG91dHNpZGUgdGhlCgluZXdseSBhbGxvY2F0ZWQgbm9kZS4KCldlZCBBcHIgMTUgMTU6MzQ6NDQgMTk5OCAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogbGV4LmMgKGluaXRfcGFyc2UpOiBOb3cgcmV0dXJucyBjaGFyKiBjb250YWluaW5nIHRoZSBmaWxlbmFtZS4KCldlZCBBcHIgMTUgMTM6MjA6MDYgMTk5OCAgSm9obiBDYXJyICA8amZjQG1pdC5lZHU+CgkJCSAgSmVmZiBMYXcgICA8bGF3QGN5Z251cy5jb20+CgoJKiBlcnJmbi5jOiBSZXdvcmsgdG8gYXZvaWQgcHJvYmxlbXMgd2hlbiBIT1NUX1dJREVfSU5UIGlzIGxvbmdlcgoJdGhhbiBhIHBvaW50ZXIuCgpTdW4gQXByIDEyIDIyOjMxOjE5IDE5OTggIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogVXNlIFRZUEVfUFJFQ0lTSU9OLgoKRnJpIEFwciAxMCAxMjoxNjo0OSAxOTk4ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGxvb255LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IHdhcm4gZm9yIHJlZHVuZGFudCBkZWNscyBpZgoJZnJpZW5kOiBsZXQgYWRkX2ZyaWVuZCB0YWtlIGNhcmUgb2YgaXQuCgpUaHUgQXByICA5IDAyOjQwOjQ4IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfcG9pbnRlcl9jb25zdHJ1Y3Rvcik6IERvbid0IHNldAoJVFJFRV9IQVNfQ09OU1RSVUNUT1IgZm9yIGEgc2lnbmF0dXJlIHBvaW50ZXIuCgkqIGN2dC5jIChvY3BfY29udmVydCk6IERvbid0IGZvcmNlIGEgdGVtcG9yYXJ5IGZvciBpbnRlcm5hbCBzdHJ1Y3RzLgoJKiBpbml0LmMgKHJlc29sdmVfb2Zmc2V0X3JlZik6IFdhcm4gYWJvdXQgaW1wbGljaXQgJiBvbiBwbWZzCgloZXJlLCB0b28uCgkqIHR5cGVjay5jIChidWlsZF91bmFyeV9vcCk6IE9ubHkgYWxsb3cgdGFraW5nIHRoZSBhZGRyZXNzIG9mIGEKCXJlYWwgY29uc3RydWN0b3IuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBTaW1wbGlmeS4KCShzdG9yZV9pbml0X3ZhbHVlKTogRG9uJ3QgcGVkd2FybiBhYm91dCB1c2luZyB7IH0gZm9yIHBtZnMuCgpUaHUgQXByICA5IDIyOjE2OjU3IDE5OTggIFBlciBCb3RobmVyICA8Ym90aG5lckBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdGFydF9kZWNsKTogIFVwZGF0ZSBwcm90b3R5cGUuCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6ICBMaWtlIHRoZSBDIHZlcnNpb24sIG5ldyBwYXJhbWV0ZXJzCglmb3IgdGhlIGF0dHJpYnV0ZXMuICBDYWxsIGNwbHVzX2RlY2xfYXR0cmlidXRlcyBoZXJlLAoJKHB1c2hkZWNsKTogIExpa2UgQyB2ZXJzaW9uLCBkbyBidWlsZF90eXBlX2NvcHkgaWYgVFlQRV9ERUNMLAoJKGdyb2tkZWNsYXJhdG9yKTogIFBhc3MgTlVMTCBmb3IgbmV3IHN0YXJ0X2RlY2wgYXJndW1lbnRzLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6ICBMaWtld2lzZS4KCSogcGFyc2UueTogIE1lcmdlIGNwbHVzX2RlY2xfYXR0cmlidXRlIGNhbGxzIGludG8gc3RhcnRfZGVjbCBjYWxscy4KCSogdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogQ2hlY2sgVFlQRV9NQUlOX1ZBUklBTlQuCgkqIGxleC5jIChidWlsZF9sYW5nX2RlY2wpOiBBZGQgbGFuZ19uYW1lX2phdmEuCgkqIGNsYXNzLmMgKHB1c2hfbGFuZ19jb250ZXh0KTogQWRkIGxhbmdfbmFtZV9qYXZhLgoJKiBtZXRob2QuYyAoYnVpbGRfbWFuZ2xlZF9uYW1lKTogQ2hlY2sgZm9yIGlzX2phdmFfdHlwZS4KClRodSBBcHIgIDkgMjI6MTY6NTcgMTk5OCAgQmVuamFtaW4gS29zbmlrICA8YmtvekBsb29ueS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENoZWNrIFRZUEVfTUFJTl9WQVJJQU5ULgoJKiBjYWxsLmMgKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IENoZWNrIGZvciBUUkVFX0NPREUgZm9yCglWT0lEX1RZUEUgaW5zdGVhZCBvZiB0eXBlID09ICB2b2lkX3R5cGVfbm9kZS4KCShidWlsZF9tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHN0YXJ0X2RlY2wpOiBMaWtld2lzZS4KCShncm9rcGFybXMpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHN0YXJ0X21ldGhvZCk6IExpa2V3aXNlLgoKVGh1IEFwciAgOSAwMDoxODo0NCAxOTk4ICBEYXZlIEJyb2xsZXkgIChicm9sbGV5QGN5Z251cy5jb20pCgoJKiBsZXguYyAoZmlucHV0KTogTmV3IHZhcmlhYmxlLgoJKGluaXRfY3BwX3BhcnNlKTogIFJlbmFtZWQgZnJvbSBpbml0X3BhcnNlLgoJKGluaXRfcGFyc2UpOiBIYW5kbGUgIVVTRV9DUFBMSUIuICBDYWxsIGluaXRfY3BwX3BhcnNlIHdoZW4gZmluaXNoZWQuCgkoZmluaXNoX3BhcnNlKTogTmV3IGZ1bmN0aW9uLgoJKiBjcC10cmVlLmggKGluaXRfbGV4LCBpbml0X3BhcnNlKTogUmVtb3ZlIGRlY2xhcmF0aW9ucy4KCk1vbiBBcHIgIDYgMDI6MjU6MDUgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9jYWxsKTogU3RpbGwgZXZhbHVhdGUgdGhlIGFjdHVhbCBhcmd1bWVudC4KCSogY2xhc3MuYyAoaXNfZW1wdHlfY2xhc3MpOiBVcGRhdGUgZm9yIC1mbmV3LWFiaS4KCgkqIGRlY2wyLmM6IC1mbmV3LWFiaSBpbXBsaWVzIC1mc3F1YW5nbGUuCgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfYXNzaWduX3JlZik6IERvbid0IGRvIGFueXRoaW5nIHRvIGNvcHkKCWFuIGVtcHR5IGNsYXNzLgoJKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KClNhdCBBcHIgIDQgMTg6NDM6NTggMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChhdm9pZF9vdmVybGFwKTogUmV0dXJuIGEgdmFsdWUuCgpTYXQgQXByICA0IDEyOjUyOjM1IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIG1ldGhvZC5jIChjaGVja19idHlwZSk6IEFkZCBtaXNzaW5nIGFyZ3VtZW50IHRvIHhyZWFsbG9jLgoJKGNoZWNrX2t0eXBlKTogTGlrZXdpc2UuCgpGcmkgQXByICAzIDAyOjIyOjU5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglJbXBsZW1lbnQgZW1wdHkgYmFzZSBvcHRpbWl6YXRpb24uCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IEFkZCB2YmFzZSBmaWVsZHMgZWFybGllci4gIFNldAoJQ0xBU1NUWVBFX1NJWkUgb2YgYW4gZW1wdHkgYmFzZSB0byAwLiAgVHlwZXMgd2l0aCBiYXNlcyBjYW4gYmUgZW1wdHkuCgkqIHNlYXJjaC5jIChkZnNfY2hlY2tfb3ZlcmxhcCwgZGZzX25vX292ZXJsYXBfeWV0KTogTmV3IGZucy4KCSh0eXBlc19vdmVybGFwX3ApOiBOZXcgZm4uCgkqIHRyZWUuYyAoYXZvaWRfb3ZlcmxhcCk6IE5ldyBmbi4KCShidWlsZF9iYXNlX2ZpZWxkcyk6IFVzZSBpdCB0byBhdm9pZCBvdmVybGFwcGluZyBlbXB0eSBiYXNlcy4KCSogY3AtdHJlZS5oLCBkZWNsMi5jLCBsYW5nLW9wdGlvbnMuaDogQWRkIC1mbmV3LWFiaS4KCgkqIGRlY2wuYyAoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IFN0cmlwIHVudXNlZCBJTkRJUkVDVF9SRUZzLgoKCVJlLWltcGxlbWVudCBhbGxvY2F0aW9uIG9mIGJhc2UgY2xhc3Mgc3Vib2JqZWN0cy4KCSogdHJlZS5jICh1bnNoYXJlX2Jhc2VfYmluZm9zKTogTmV3IGZuLgoJKGxheW91dF9iYXNldHlwZXMpOiBVc2UgaXQuICBOb3cgaGFuZGxlcyBvZmZzZXRzIG9mIGJvdGggdmlydHVhbCBhbmQKCW5vbi12aXJ0dWFsIGJhc2VzLCBhZnRlciBsYXlvdXRfdHlwZS4KCShsYXlvdXRfdmJhc2V0eXBlcyk6IFJlbW92ZS4KCShidWlsZF9iYXNlX2ZpZWxkcyk6IEdlbmVyYXRlIEZJRUxEX0RFQ0xzIGZvciBlYWNoIG5vbi12aXJ0dWFsIGJhc2UuCgkoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBTcGxpdCBvdXQgZnJvbSBvbGQgbGF5b3V0X2Jhc2V0eXBlcy4KCSogY2xhc3MuYyAoZmluaXNoX2Jhc2Vfc3RydWN0KTogTG9zZSBvZmZzZXQgaGFuZGxpbmcgY29kZS4KCU1vdmUgbm9udmR0b3Igd2FybmluZyBoZXJlLiAgRG9uJ3QgbWVzcyB3aXRoIHRfYmluZm8gYW55bW9yZS4KCShmaW5pc2hfc3RydWN0XzEpOiBEb24ndCBtZXNzIHdpdGggdF9iaW5mbyBhbnltb3JlLiAgVXNlIGZucyBhYm92ZS4KCSogY3AtdHJlZS5oOiBBZGp1c3QuCgpUaHUgQXByICAyIDE0OjI1OjEzIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaDogTG9zZSBDTEFTU1RZUEVfVkJBU0VfU0laRSwgc29tZSB1bnVzZWQgc3R1ZmYuCgkqIGRlY2wuYywgZGVjbDIuYywgcHQuYywgcHRyZWUuYywgbGV4LmM6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChkdXBsaWNhdGVfdGFnX2Vycm9yKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogU2V0IENMQVNTVFlQRV9TSVpFLCBDTEFTU1RZUEVfTU9ERSwgQ0xBU1NUWVBFX0FMSUdOLgoJKiB0cmVlLmMgKGxheW91dF92YmFzZXR5cGVzKTogVXBkYXRlIGZyb20gbGF5b3V0X3JlY29yZCwgcmVtb3ZlCgl2YXJfc2l6ZSBzdXBwb3J0LCB1c2UgQ0xBU1NUWVBFX1NJWkUgaW5zdGVhZCBvZiBDTEFTU1RZUEVfVkJBU0VfU0laRS4KCShsYXlvdXRfYmFzZXR5cGVzKTogTGlrZXdpc2UuCgpXZWQgQXByICAxIDE4OjIyOjI1IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNsYXNzLmMsIE1ha2Ugc3VyZSBzeXN0ZW0uaCBpcyBpbmNsdWRlZCBqdXN0IGFmdGVyIGNvbmZpZy5oLgoJRGVsZXRlIGxpbmdlcmluZyBzdGRpbyBhbmQgZXJybm8gcmVmZXJlbmNlcyB0b28uCgkqIGRlY2wuYywgZXJyZm4uYywgcGFyc2UueSwgcHRyZWUuYyBzZWFyY2guYywgeHJlZi5jOiBMaWtld2lzZS4KCldlZCBBcHIgIDEgMTU6Mzg6MzYgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IEZpeCBhY2Nlc3MgY29udHJvbCBmb3IgbG9jYWwgY2xhc3Nlcy4KCgkqIGNsYXNzLmMgKGlzX2VtcHR5X2NsYXNzKTogTmV3IGZuLgoJKiBjYWxsLmMgKGJ1aWxkX2NhbGwpOiBEb24ndCBwYXNzIGVtcHR5IGNsYXNzIG9iamVjdHMgdG8gYSBmdW5jdGlvbi4KCldlZCBBcHIgIDEgMTQ6NTg6MzUgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBEbyBuYW1lIHJlc29sdXRpb24gZm9yIGRlZmF1bHQKCWFyZ3VtZW50cyBvZiBmdW5jdGlvbiB0ZW1wbGF0ZXMgaW4gdGhlIHNjb3BlIG9mIHRoZSB0ZW1wbGF0ZXMuCgpUdWUgTWFyIDMxIDEzOjQzOjU3IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNhbGwuYzogSW5jbHVkZSBzeXN0ZW0uaC4gIFJlbW92ZSBpbmNsdWRlcywgZGVjbGFyYXRpb25zIGFuZAoJZGVmaW5lcyBwcm92aWRlZCBieSBzeXN0ZW0uaC4KCSogY2xhc3MuYywgY3Z0LmMsIGRlY2wuYywgZGVjbDIuYywgZXJyZm4uYyBlcnJvci5jOiBMaWtld2lzZS4KCSogZXhjZXB0LmMsIGV4cHIuYyBmcmllbmQuYywgZysrc3BlYy5jLCBpbml0LmMsIGlucHV0LmM6IExpa2V3aXNlLgoJKiBsZXguYywgcGFyc2UueSwgcHQuYywgcHRyZWUuYyByZXBvLmMgcnR0aS5jLCBzZWFyY2guYzogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jLCBzaWcuYywgc3Bldy5jLCB0cmVlLmMsIHR5cGVjay5jOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jLCB4cmVmLmM6IExpa2V3aXNlLgoJKiBNYWtlZmlsZS5pbjogRGVwZW5kZW5jaWVzIHVwZGF0ZWQgYXMgYXBwcm9wcmlhdGUuCgkqIE1ha2UtbGFuZy5pbjogTGlrZXdpc2UuCgpNb24gTWFyIDMwIDEyOjE1OjAwIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKGZuX3R5cGVfdW5pZmljYXRpb24pOiBBbGxvdyBpbmNvbXBsZXRlIHVuaWZpY2F0aW9uIHdpdGhvdXQKCWFuIGltbWVkaWF0ZSBlcnJvciBtZXNzYWdlLgoKTW9uIE1hciAzMCAwODo1NTo0MiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKG1lbWJlcl9wKTogTmV3IGZuLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IE9ubHkgc2V0IERFQ0xfU1RBVElDX0ZVTkNUSU9OX1AgZm9yCglpbml0aWFsaXppbmcgY2xhc3MgbWVtYmVycy4KCgkqIGNwLXRyZWUuZGVmIChURU1QTEFURV9QQVJNX0lOREVYKTogQ2xhc3MgJ3gnLgoJKiBwdHJlZS5jIChsYW5nX3ByaW50X3hub2RlKTogSGFuZGxlIFRFTVBMQVRFX1BBUk1fSU5ERVguCgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogSGFuZGxlIG5vbi1zY29wZWQgZGVzdHJ1Y3RvcnMsIHRvby4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCgkqIHB0LmMgKHByaW50X3RlbXBsYXRlX2NvbnRleHQpOiBTcGxpdCBvdXQuLi4KCShwdXNoX3RpbnN0X2xldmVsKTogLi4uZnJvbSBoZXJlLgoKCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IERvbid0IHBhc3MgYSB0eXBlIHRvIGRlY2xfZnVuY3Rpb25fY29udGV4dC4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IEFsd2F5cyBoYW5kIG9mZgoJY29udmVyc2lvbnMgdG8gY2xhc3MgdHlwZS4KClN1biBNYXIgMjkgMjA6MDE6NTkgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IExvY2FsIGNsYXNzZXMgaGF2ZSB0aGUgc2FtZSBhY2Nlc3MgYXMgdGhlCgllbmNsb3NpbmcgZnVuY3Rpb24uCgpTdW4gTWFyIDI5IDAwOjQ3OjMyIDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIHR5cGVjay5jIChleHBhbmRfdGFyZ2V0X2V4cHIpOiBEZWxldGUgZGVhZCBmdW5jdGlvbi4KCgkqIHNlYXJjaC5jOiBQdXQgdmFyaW91cyBwcm90b3R5cGVzIGluc2lkZSAjaWZkZWYgTUlfTUFUUklYLgoKCSogcmVwby5jIChzYXZlX3N0cmluZyk6IERlbGV0ZSBkZWFkIGZ1bmN0aW9uLgoKCSogbWV0aG9kLmMgKHRodW5rX3ByaW50YWJsZV9uYW1lKTogRGVsZXRlIGRlYWQgZnVuY3Rpb24uCgoJKiBsZXguYyAoeXluZXh0Y2gpOiBEZWxldGUgZGVhZCBmdW5jdGlvbi4KCgkqIGV4cHIuYyAodHJlZV9leHRyYWN0X2FnZ3JfaW5pdCk6ICNpZiAwIG91dC4KCgkqIGV4Y2VwdC5jIChkb191bndpbmQpOiBEZWxldGUgZGVhZCBmdW5jdGlvbi4KCShlYXN5X2V4cGFuZF9hc20pOiBMaWtld2lzZS4KCgkqIGN2dC5jIChidWlsZF9jb252ZXJzaW9uX3R5cGVfMSk6IERlbGV0ZSBkZWFkIGZ1bmN0aW9uLgoKCSogY3AtdHJlZS5oIChwdXNoX2V4cHJlc3Npb25fb2JzdGFjayk6IERlY2xhcmUuCgoJKiBjYWxsLmMgKHNvdXJjZV90eXBlKTogI2lmIDAgb3V0LgoKCSogY2xhc3MuYyAoYWx0ZXJfYWNjZXNzKTogUmVtb3ZlIHVudXNlZCBsYWJlbC4gIEFkZCBicmFjZXMKCWFyb3VuZCBlbXB0eSBlbHNlIGNsYXVzZS4KCgkqIGxleC5jICh5eXByaW50KTogRml4IGFyZ3VtZW50IHRvIHByaW50Zi4KClNhdCBNYXIgMjggMTc6NDM6NTIgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAodHN1YnN0KTogQ2xlYXIgVFJFRV9VU0VEIGZvciBuZXcgRlVOQ1RJT05fREVDTHMuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IE1ha2Ugc3VyZSB0ZW1wbGF0ZQoJYXJndW1lbnRzIGFyZSBwZXJtYW5lbnQuCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogRG9uJ3QgZ28gbG9va2luZyBhcm91bmQgaW4KCXRlbXBsYXRlIHR5cGVzLgoKCSogc2VtYW50aWNzLmM6IEFkZCByb3V0aW5lcyB0byBoYW5kbGUgZXhwcmVzc2lvbnMsIGFuZCBzb21lCglkZWNsYXJhdGlvbiBwcm9jZXNzaW5nLgoJKiBwYXJzZS55OiBVc2UgdGhlbS4KCShjdXJyZW50X2NsYXNzX2RlcHRoKTogTW92ZSBkZWNsYXJhdGlvbiB0byBjcC10cmVlLmguCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBjcC10cmVlLmg6IFVzZSB0aGVtLgoJKGN1cnJlbnRfY2xhc3NfZGVwdGgpOiBEZWNsYXJlLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IFVzZSBiZWdpbl9zdG10X2V4cHIgYW5kIGZpbmlzaF9zdG10X2V4cHIuCgpGcmkgTWFyIDI3IDIwOjIzOjE4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEJlIGEgYml0IG1vcmUgZXhwbGljaXQgd2l0aCB0ZW1wbGF0ZQoJdHlwZSBhcmd1bWVudHMsIHdoZW4gdmVyYm9zZS4KCkZyaSBNYXIgMjcgMTg6MTY6NDAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5jL2V4Y2VwdGlvbjogUmVvcmRlciBjbG9zaW5nIGJyYWNlcy4KCkZyaSBNYXIgMjcgMTM6MjI6MTggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAocmVkZWNsYXJlX2NsYXNzX3RlbXBsYXRlKTogTmV3IGZ1bmN0aW9uLgoJKiBjcF90cmVlLmggKHJlZGVjbGFyZV9jbGFzc190ZW1wbGF0ZSk6IERlY2xhcmUgaXQuCgkqIGRlY2wuYyAoeHJlZl90YWcpOiBVc2UgaXQuCgpUaHUgTWFyIDI2IDExOjE2OjMwIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogQ2hlY2sgSVNfQUdHUl9UWVBFLCBub3QKCVRZUEVfTEFOR19TUEVDSUZJQy4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVtb3ZlIGNvbnN0IGFuZCB2b2xhdGlsZSBmcm9tIHR5cGUgYWZ0ZXIKCXNldHRpbmcgY29uc3RwIGFuZCB2b2xhdGlsZXAuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBEb24ndCB3YXJuIGFib3V0IGJvb2wgYml0ZmllbGQgbGFyZ2VyCgl0aGFuIG9uZSBiaXQuCgpUaHUgTWFyIDI2IDEwOjI1OjUyIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFNUUklQX05PUFMgd2hlcmUgYXBwcm9wcmlhdGUuCgpUaHUgTWFyIDI2IDEwOjI0OjA1IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNhbGwuYyAoYnVpbGRfb2JqZWN0X2NhbGwpOiBDb21wbGFpbiBhYm91dCBhbWJpZ3VvdXMgb3BlcmF0b3IoKSwKCXJhdGhlciB0aGF0IGNyYXNoaW5nLgoJKGJ1aWxkX25ld19vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogTGlrZXdpc2UuCgpUaHUgTWFyIDI2IDEwOjIzOjI0IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGN2dC5jIChwZXJmb3JtX3F1YWxpZmljYXRpb25fY29udmVyc2lvbnMpOiBVc2UgY29tcF90YXJnZXRfdHlwZXMKCWluc3RlYWQgb2YgY29tcF9wdHJfdHR5cGVzLgoKV2VkIE1hciAyNSAxNjoxMDo1MCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjcC10cmVlLmggKGVuZm9yY2VfYWNjZXNzKTogRGVjbGFyZS4KCSogY2FsbC5jIChlbmZvcmNlX2FjY2Vzcyk6IE1ha2UgaXQgZXh0ZXJuLCBub3Qgc3RhdGljLgoJKiBjbGFzcy5jIChhbHRlcl9hY2Nlc3MpOiBVc2UgZW5mb3JjZV9hY2Nlc3M7IG1vZGlmeSBjb2RlIGZvciBJU08KCWNvbXBsaWFuY2UsIHJhdGhlciB0aGFuIEFSTSBydWxlcy4KCldlZCBNYXIgMjUgMTI6MTA6NDUgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIGNwLXRyZWUuaDogRml4IHR5cG8uCgpXZWQgTWFyIDI1IDAyOjAxOjAyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBPbmx5IGRvIFBDQ19TVEFUSUNfU1RSVUNUX1JFVFVSTiB0aGluZwoJaWYgKGFnZ3JlZ2F0ZV92YWx1ZV9wICh0eXBlKSkuCgoJKiBkZWNsMi5jIChjb25zdHJ1Y3Rvcl9uYW1lX2Z1bGwpOiBIYW5kbGUgVFlQRU5BTUVfVFlQRS4KClR1ZSBNYXIgMjQgMTY6MTI6MDEgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogdHJlZS5jIChtYXBjYXIpOiBXaGVuIGRlYWxpbmcgd2l0aCBhIERFQ0wsIHVzZSBpdCdzIGNvbnN0YW50Cgl2YWx1ZSwgaWYgYW55LgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBEb24ndCBtYW5nbGUgdGhlIG5hbWVzIG9mIHRlbXBsYXRlCgljbGFzc2VzIHdob3NlIGFyZ3VtZW50cyBhcmUgdW5rbm93bi4KCgkqIHB0LmMgKHRzdWJzdF9leHByKTogSGFuZGxlIEdPVE9fU1RNVCBjb3JyZWN0bHkuCgpUdWUgTWFyIDI0IDEyOjIxOjU1IDE5OTggIEJlbmphbWluIEtvc25payAgPGJrb3pAbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBUWVBFX1BSRUNJU09OIGZvciBib29scyB0byAxLgoKVHVlIE1hciAyNCAxMjoyMTo0OCAxOTk4ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBUWVBFX01BWF9WQUxVRSBmb3IKCWJvb2xlYW5fdHlwZV9ub2RlIHRvIDEuCgpUdWUgTWFyIDI0IDEwOjIzOjQ3IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGwnLgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IE5ldyBmdW5jdGlvbiwgY3JlYXRlZCBieQoJY29udmVydGluZyB1c2VzX3RlbXBsYXRlX3Bhcm1zLgoJKHRyZWVfZm5fdCk6IE5ldyB0eXBlZGVmLgoJKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBVc2UgaXQuCgkobWFya190ZW1wbGF0ZV9wYXJtKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IENoZWNrIHRoYXQgdGhlIGFyZ3VtZW50IGxpc3Qgb2YgYSBwYXJ0aWFsCglzcGVjaWFsaXphdGlvbiB1c2VzIGFsbCB0aGUgdGVtcGxhdGUgcGFyYW1ldGVycy4KCgkqIE1ha2UtbGFuZy5pbiAoYysrZmlsdCk6IERvbid0IGRlbGV0ZSBjeHhtYWluLmMgYWZ0ZXIgd2UncmUgZG9uZQoJd2l0aCBpdDsgd2UgbWlnaHQgd2FudCBpdCBmb3IgZGVidWdnaW5nLgoJKiBjcC10cmVlLmggKHR5cGVfdW5pZmljYXRpb24pOiBDaGFuZ2UgaW50ZXJmYWNlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBTa2lwIG5lc3RlZCB0ZW1wbGF0ZSB0eXBlcywganVzdCBsaWtlCglvcmRpbmFyeSBuZXN0ZWQgdHlwZXMuCgkoaW5zdGFudGlhdGVfdHlwZSk6IFVzZSBuZXcgaW50ZXJmYWNlIHRvIHR5cGVfdW5pZmljYXRpb24uCgkqIGxleC5jIChpbml0X2xleCk6IEFkZCBfX3N6IGFzIG9wbmFtZSBmb3Igc2l6ZW9mLgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfc2NvcGVfcmVmKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX292ZXJsb2FkX2ludCk6IEhhbmRsZSBjb21wbGV4IGV4cHJlc3Npb25zLiAgU2V0CgludW1lcmljX291dHB1dF9uZWVkX2JhciBpZiBuZWNlc3NhcnkuCgkoYnVpbGRfb3ZlcmxvYWRfdmFsdWUpOiBIYW5kbGUgbm9uLVBBUk1fREVDTCBub2RlczsgdGhpcwoJcm91dGluZSBpcyBub3cgdXNlZCBieSBidWlsZF9vdmVybG9hZF9pbnQuICBSZW1vdmUgc29tZQoJYXNzaWdubWVudHMgdG8gbnVtZXJpY19vdXRwdXRfbmVlZF9iYXIuICBVc2UKCWJ1aWxkX292ZXJsb2FkX3Njb3BlX3JlZi4KCShidWlsZF9xdWFsaWZpZWRfbmFtZSk6IE5vdGUgdGhhdCBzb21lIHRlbXBsYXRlIG1hbmdsZWQgbmFtZXMgZW5kCgl3aXRoIGRpZ2l0cywgYW5kIHNldCBudW1lcmljX291dHB1dF9uZWVkX2JhciBhcHByb3ByaWF0ZWx5LiAgVXNlCglidWlsZF91bmRlcnNjb3JlX2ludC4KCSogcHQuYyAodW5pZnkpOiBDaGFuZ2UgaW50ZXJmYWNlLgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IExpa2V3aXNlLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IFVzZSBuZXcgaW50ZXJmYWNlcy4KCSh0c3Vic3QpOiBEZWFsIGdyYWNlZnVsbHkgd2l0aCBzaXR1YXRpb25zIGluIHdoaWNoIHRoZSBhcmd1bWVudAoJdmVjdG9yIGlzIG5vdCBmdWxseSBmaWxsZWQuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IFVzZSBuZXcgaW50ZXJmYWNlcy4KCSh0eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuICBSZW1vdmUgTk9QX0VYUFIgaGFjay4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBMaWtld2lzZS4KCSh1bmlmeSk6IExpa2V3aXNlLiAgRGVhbCB3aXRoIHVuaWZpY2F0aW9uIG9mIGNvbXBsZXggZXhwcmVzc2lvbnMuCgpNb24gTWFyIDIzIDEyOjI0OjM3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MpOiBJbml0aWFsaXplIHNraXAgcHJvcGVybHkuCgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IFJldmVydC4KCShtYWtlX2ltcGxpY2l0X3R5cGVuYW1lKTogUmVtb3ZlLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBEb24ndCBjYWxsIGl0LiAgQ2FsbCBsb29rdXBfZmllbGQgaWYgd2Ugc2VlIGEKCVRZUEVfREVDTCBmcm9tIGEgdGVtcGxhdGUgYmFzZS4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IERvIGltcGxpY2l0IHR5cGVuYW1lIHN0dWZmLgoKU3VuIE1hciAyMiAwMDo1MDo0MiAxOTk4ICBOaWNrIENsaWZ0b24gIDxuaWNrY0BjeWdudXMuY29tPgoJCQkgIEdlb2ZmIE5vZXIgICAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBWYXJpb3VzIGZpeGVzIGZvciBidWlsZGluZyBjeWd3aW4zMiBuYXRpdmUgdG9vbGNoYWlucy4KCSogTWFrZS1sYW5nLmluOiBMaWtld2lzZS4KCkZyaSBNYXIgMjAgMTg6MDc6MzkgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIHB0LmMgKHRzdWJzdCwgVEVNUExBVEVfVEVNUExBVEVfUEFSTSk6IFNpbXBsaWZ5LgoKRnJpIE1hciAyMCAxMDo0MjowNyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKG1ha2VfaW1wbGljaXRfdHlwZW5hbWUpOiBSZXdyaXRlIHJlbW92ZWQgY29kZS4KCShtYWtlX3R5cGVuYW1lX3R5cGUpOiBDYWxsIGl0IGlmIHRoZSB0eXBlIHdlIGxvb2sgdXAgY29tZXMgZnJvbQoJYSBiYXNlIHRoYXQgdXNlcyB0ZW1wbGF0ZSBwYXJtcy4KCgkqIHB0LmMgKGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MpOiBSZXdyaXRlLgoJKHRzdWJzdCwgRlVOQ1RJT05fREVDTCk6IFVzZSBpdC4KCkZyaSBNYXIgMjAgMDg6MTI6NDMgMTk5OCAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IEZpeCBjb21iaW5lIHN0cmluZ3MuICBDYWxsCgljX2V4cGFuZF9hc21fb3BlcmFuZHMgKCkgaWYgb3V0cHV0X29wZXJhbmRzLCBpbnB1dF9vcGVyYW5kcyBvcgoJY2xvYmJlcnMgaXMgbm90IE5VTExfVFJFRS4KCkZyaSBNYXIgMjAgMDA6MTA6MTkgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIHB0LmMgKGNvbXBsZXRlX3RlbXBsYXRlX2FyZ3MpOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2JpbmRpbmdzKTogRGVhbCB3aXRoIHNwZWNpYWxpemF0aW9ucyBvZiBmdW5jdGlvbiB0ZW1wbGF0ZXMKCXdpdGggcmV0dXJuIHR5cGUgY29udGFpbmluZyBwYXJhbWV0ZXJzIGZyb20gb3V0ZXIgY2xhc3MKCXRlbXBsYXRlcy4KCSh0c3Vic3QsIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0pOiBXaGVuIHJlZHVjaW5nIHBhcmFtZXRlciBsZXZlbCwKCXN1YnN0aXR1dGUgYXJndW1lbnRzIGFuZCBjb21wb3NlIGEgbmV3IHR5cGUuCgpUaHUgTWFyIDE5IDE5OjAxOjQ4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHRzdWJzdCk6IENsZWFyIERFQ0xfUEVORElOR19JTkxJTkVfSU5GTyBmb3IgbmV3CglGVU5DVElPTl9ERUNMcy4KClRodSBNYXIgMTkgMTE6NTE6NTggMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChtYWtlX2ltcGxpY2l0X3R5cGVuYW1lKTogTG9zZSB1c2VsZXNzIGNvZGUuCgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBIYW5kbGUgQSogLT4gY29uc3QgQSogcHJvcGVybHkuCgoJKiBwdC5jIChnZXRfYmluZGluZ3NfcmVhbCk6IFJlbmFtZSBmcm9tIGdldF9iaW5kaW5ncy4gIEFkZAoJY2hlY2tfcmV0dHlwZSBwYXJtLgoJKGdldF9iaW5kaW5ncyk6IFBhc3MgMS4KCShnZXRfYmluZGluZ3Nfb3ZlcmxvYWQpOiBQYXNzIDAuCgpXZWQgTWFyIDE5IDA5OjA4OjEyIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogV2hlbiByZXZlcnRpbmcgYSBzdGF0aWMKCW1lbWJlciBmdW5jdGlvbiwgYWxzbyByZW1vdmUgdGhlIGB0aGlzJyBwYXJhbWV0ZXIgZnJvbQoJbGFzdF9mdW5jdGlvbl9wYXJtcy4KClRodSBNYXIgMTkgMDI6Mjc6NDggMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0X2NvcHksIENPTlNUX0RFQ0wpOiBEb24ndCBib3RoZXIgdHN1YnN0aW5nCglhIGZ1bmN0aW9uIGNvbnRleHQuCgoJKiBkZWNsLmMgKHN0b3JlX2JpbmRpbmdzKTogVXNlIGZyZWVfYmluZGluZ192ZWNzLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IExpa2V3aXNlLgoKV2VkIE1hciAxOCAxMjo0MTo0MyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKG1ha2VfaW1wbGljaXRfdHlwZW5hbWUpOiBPbmx5IGNoYW5nZSB0aGUgdHlwZSBvZiBhCglUWVBFTkFNRV9UWVBFLgoKV2VkIE1hciAxOCAxMDowOTo1MSAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBzZW1hbnRpY3MuYzogTmV3IGZpbGUsIGNvbnRhaW5pbmcgcm91dGluZXMgdG8gcGVyZm9ybSB0aGUKCXNlbWFudGljIHBoYXNlIG9mIHBhcnNpbmcuCgkqIHBhcnNlLnk6IFVzZSBpdC4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIHRoZSB2YXJpb3VzIGZ1bmN0aW9ucyBpbiBzZW1hbnRpY3MuYy4KCVByb3ZpZGUgbWFjcm9zIHRvIGFjY2VzcyBfU1RNVCB0cmVlIG5vZGVzLgoJKiBjcC10cmVlLmRlZjogQWRkIEFTTV9TVE1UIHRyZWUgbm9kZS4KCSogTWFrZWZpbGUuaW4sIE1ha2UtbGFuZy5pbjogQWRkIGRlcGVuZGVuY2llcyBvbiBhbmQgZm9yCglzZW1hbnRpY3MuYy4KCldlZCBNYXIgMTggMDA6MjQ6MTAgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsKTogT25seSBjaGVjayBwcmltYXJ5IHRlbXBsYXRlcy4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQ29tcGxhaW4gYWJvdXQgZGVmYXVsdCBhcmdzCglpbiBleHBsaWNpdCBzcGVjaWFsaXphdGlvbi4KCgkqIHBhcnNlLnkgKG5vbW9kc19pbml0ZGNsMCk6IEFsc28gY2FsbCBjcF9maW5pc2hfZGVjbCBmb3IgYQoJY29uc3RydWN0b3JfZGVjbGFyYXRvci4KClR1ZSBNYXIgMTcgMTQ6NDQ6NTQgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogdHlwZWNrMi5jIChidWlsZF94X2Fycm93KTogRG9uJ3QgY3Jhc2ggd2hlbiBhbiBhZ2dyZWdhdGUgdHlwZQoJaGFzIG5vIG92ZXJsb2FkZWQgb3BlcmF0b3IgLT4uCgoJKiBjYWxsLmMgKGJ1aWxkX2ZpZWxkX2NhbGwpOiBEb24ndCBjcmFzaCB3aGVuIHByZXNlbnRlZCB3aXRoIGEKCWZpZWxkIHRoYXQgaXMgYWN0dWFsbHkgYSBuZXN0ZWQgdHlwZS4KCgkqIGRlY2wuYyAocHVzaHRhZyk6IERlYWwgd2l0aCBmcmllbmQgY2xhc3MgaW5qZWN0aW9uIGluIGxvY2FsCgljbGFzc2VzLgoKCSogY2FsbC5jIChidWlsZF9vYmplY3RfY2FsbCk6IERvbid0IGNyYXNoIGlmIE9CSiBpcyBhCglwb2ludGVyLXRvLW1lbWJlci1mdW5jdGlvbi4KClR1ZSBNYXIgMTcgMTE6NDA6MjYgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsKTogQ29tcGxhaW4gYWJvdXQgdGVtcGxhdGUgd2l0aCBDIGxpbmthZ2UsCglhbm9ueW1vdXMgdGVtcGxhdGUgY2xhc3MuCgpNb24gTWFyIDE2IDEyOjEwOjM5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHB1c2hjbGFzcyk6IE9ubHkgdXNlIHRoZSBtaV9tYXRyaXggc3R1ZmYgI2lmZGVmIE1JX01BVFJJWC4KCSogc2VhcmNoLmM6IExpa2V3aXNlLgoKCSogbGV4LmMgKGRvX3BlbmRpbmdfZGVmYXJncyk6IE9ubHkgY2FsbAoJbWF5YmVfe2JlZ2luLGVuZH1fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcgZm9yIEZVTkNUSU9OX0RFQ0xzLgoKCSogcGFyc2UueSAoaW5pdGRjbDBfaW5uYXJkcyk6IE1vdmUgbWF5YmVhc20gYmFjayBpbnRvIGluaXRkY2wwIGV0IGFsLgoKTW9uIE1hciAxNiAxMDo0NzoyMiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwYXJzZS55OiBEZWFsIHdpdGggQ09OU1RSVUNUT1JTIGluIG5ld19pbml0aWFsaXplcnMuCgpNb24gTWFyIDE2IDEwOjU0OjIxIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogRGVhbCB3aXRoIEJJTkRfRVhQUiBpbiBhIHdheSB0aGF0IG1vcmUKCWNsb3NlbHkgbWltaWNzIHRoZSBiZWhhdmlvciBpbiBwYXJzZS55LgoJKHRzdWJzdF9leHByKTogUmV0dXJuIHRoZSByZXN1bHRpbmcgQkxPQ0sgd2hlbiBtYWtpbmcgYSB0c3Vic3QnaW5nCglpbnRvIGEgY29tcG91bmQgc3RhdGVtZW50LgoKU3VuIE1hciAxNSAwMjowNzoyNiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKFRFTVBMQVRFX1BBUk1TX0ZPUl9JTkxJTkUpOiBOZXcgbWFjcm8uCgkqIHB0LmMgKGlubGluZV9uZWVkc190ZW1wbGF0ZV9wYXJtcyk6IE5ldyBmbi4KCShvcmlnaW5hbF90ZW1wbGF0ZSk6IE5ldyBmbi4KCShwdXNoX2lubGluZV90ZW1wbGF0ZV9wYXJtc19yZWN1cnNpdmUpOiBOZXcgZm4uCgkobWF5YmVfYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBVc2UgdGhlbS4KCShtYXliZV9lbmRfbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShpc19tZW1iZXJfb3JfZnJpZW5kX3RlbXBsYXRlKTogUmVuYW1lIHRvIGlzX21lbWJlcl90ZW1wbGF0ZS4KCU1lbWJlciBmdW5jdGlvbnMgb2YgbG9jYWwgY2xhc3NlcyBhcmUgbmV2ZXIgbWVtYmVyIHRlbXBsYXRlcy4KClN1biBNYXIgMTUgMDE6MTQ6MjIgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogSGFuZGxlIFRFTVBMQVRFX0RFQ0wgdGhhdCB3YXMKCWFkZGVkIGluIHRoZSBjbGFzcyBzY29wZSB0byBjYXRjaCByZWRlZmluaXRpb24gZXJyb3IuCgoJKiBwdC5jIChyZWR1Y2VfdGVtcGxhdGVfcGFybV9sZXZlbCk6IEFsc28gY29weQoJdGhlIERFQ0xfVEVNUExBVEVfUEFSTVMgZmllbGQuCgpTdW4gTWFyIDE1IDEwOjU0OjA4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHRzdWJzdCk6IENsZWFyIFRZUEVfUkVGRVJFTkNFX1RPIHdoZW4gY3JlYXRpbmcgYQoJcmVkdWNlZC1sZXZlbCB0ZW1wbGF0ZSB0eXBlIHBhcmFtZXRlci4KClN1biBNYXIgMTUgMTI6MjY6MDIgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsX2ZsYWdzKTogQWRkIG5lZWRzX2ZpbmFsX292ZXJyaWRlci4KCShERUNMX05FRURTX0ZJTkFMX09WRVJSSURFUl9QKTogTmV3IG1hY3JvLgoJKiBjbGFzcy5jIChvdmVycmlkZV9vbmVfdnRhYmxlKTogU2V0IERFQ0xfTkVFRFNfRklOQUxfT1ZFUlJJREVSX1AuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogUHJvcGFnYXRlIGl0LgoJKiB0eXBlY2syLmMgKGFic3RyYWN0X3ZpcnR1YWxzX2Vycm9yKTogVXNlIHR3byBsb29wcyB0byBlbWl0CglhYnN0cmFjdCB2aXJ0dWFsIGZ1bmN0aW9ucyBhbmQgdmlydHVhbCBmdW5jdGlvbnMgd2hpY2ggbmVlZCBhCglmaW5hbCBvdmVycmlkZXIgc2VwYXJhdGVseS4KClRodSBNYXIgMTIgMDk6Mzk6NDAgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogbGFuZy1zcGVjcy5oOiBQcm9wZXJseSBwdXQgYnJhY2tldHMgYXJvdW5kIGFycmF5IGVsZW1lbnRzIGluCglpbml0aWFsaXplci4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogQ29ycmVjdGx5IHBsYWNlIHBhcmVucyBhcm91bmQKCSYmIGFuZCB8fCBpbiBleHByZXNzaW9uLgoKVGh1IE1hciAxMiAwOToyNjowNCAxOTk4ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBjYWxsLmMgKGRlZmF1bHRfcGFybV9jb252ZXJzaW9ucyk6IFJlbW92ZSBwcm90b3R5cGUgZGVmaW5pdGlvbi4KCShidWlsZF9tZXRob2RfY2FsbCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgcmVzdWx0LgoKCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBjb252ZXJzaW9uLgoKCSogZGVjbDIuYyAoYW1iaWd1b3VzX2RlY2wpOiBBZGQgZXhwbGljaXQgcGFyYW1ldGVyIGRlZmluaXRpb24gZm9yIG5hbWUuCgoJKiBleGNlcHQuYyAoZG9fdW53aW5kKTogI2lmIDAgZGVmaW5pdGlvbiBvZiB1bnVzZWQgdmFyaWFibGVzIGZjYWxsCglhbmQgbmV4dF9wYy4KCgkqIGV4cHIuYyAoZXh0cmFjdF9zY2FsYXJfaW5pdCk6ICNpZiAwIHByb3RvdHlwZSBhbmQgZnVuY3Rpb24KCWRlZmluaXRpb24uCgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgaW5pdF90eXBlLgoJKGJ1aWxkX25ld18xKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSB0LgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIG5ld3RhZzsKCWNhc3QgY2FsbGVkIGZ1bmN0aW9uIHJldHVybiB2YWx1ZSB0byB2b2lkLgoJKGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIG5hbWUgYW5kIGZuLgoKCSogdHJlZS5jIChnZXRfdHlwZV9kZWNsKTogQWRkIGRlZmF1bHQgcmV0dXJuIHRvIHNodXQgdXAgY29tcGlsZXIgZnJvbQoJY29tcGxhaW5pbmcgY29udHJvbCByZWFjaGVzIGVuZCBvZiBub24tdm9pZCBmdW5jdGlvbi4KCgkqIHR5cGVjay5jIChidWlsZF94X2NvbmRpdGlvbmFsX2V4cHIpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIHJ2YWwuCgpUaHUgTWFyIDEyIDA5OjEyOjE1IDE5OTggIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGNhbGwuYyAoZGVmYXVsdF9wYXJtX2NvbnZlcnNpb25zKTogUmVtb3ZlIHByb3RvdHlwZSBkZWZpbml0aW9uLgoJKGJ1aWxkX21ldGhvZF9jYWxsKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSByZXN1bHQuCgkoYnVpbGRfb3Zlcl9jYWxsKTogQWRkIGRlZmF1bHQgY2FzZSBpbiBlbnVtZXJhdGlvbiBzd2l0Y2guCgpUaHUgTWFyIDEyIDA4OjM5OjEzIDE5OTggIE1hbmZyZWQgSG9sbHN0ZWluICA8bWFuZnJlZEBzLWRpcmVrdG5ldC5kZT4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IENoYW5nZSBqJ3MgdHlwZSB0byBzaXplX3QuCgoJKiB0cmVlLmMgKGxheW91dF92YmFzZXR5cGVzKTogcmVjb3JkX2FsaWduIGFuZCBkZXNpcmVkX2FsaWduIGFyZSBvZgoJdHlwZSB1bnNpZ25lZCBpbnQ7IGNvbnN0X3NpemUgYW5kIG5vbnZpcnR1YWxfY29uc3Rfc2l6ZSBsaWtld2lzZS4KCldlZCBNYXIgMTEgMDc6MjU6MjAgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcGFyc2UueSAobmV3X2luaXRpYWxpemVyKTogTWFrZSBzdXJlIGFsbCBpbml0aWFsaXplcnMgYXJlCglsaXN0cy4KClR1ZSBNYXIgMTAgMDc6MzI6MzYgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogTWFyayB0aW5mbyBmdW5jdGlvbnMgZm9yCgljdi1xdWFsaWZpZWQgdmVyc2lvbnMgb2YgY2xhc3MgdHlwZXMgYXMgREVDTF9OT1RfUkVBTExZX0VYVEVSTi4KCkZyaSBNYXIgIDYgMjM6Mjc6MzUgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogbWV0aG9kLmM6IEZpeCB0eXBvLgoKRnJpIE1hciAgNiAxMDowNjo1OSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtZXRob2QuYzogSW5jbHVkZSAic3lzdGVtLmgiIHRvIGdldCBzdGRsaWIuaCwgc3RkaW8uaCwKCWN0eXBlLmgsIHN0cmluZy5oLCBldGMuCgkoaXNzdWVfbnJlcGVhdHMpOiBBZGQgZGVmYXVsdCBjYXNlIGluIGVudW1lcmF0aW9uIHN3aXRjaC4KCShjaGVja19idHlwZSk6IExpa2V3aXNlLgoJKHByb2Nlc3Nfb3ZlcmxvYWRfaXRlbSk6IExpa2V3aXNlLgoKCSogTWFrZWZpbGUuaW4gKG1ldGhvZC5vKTogRGVwZW5kIG9uIHN5c3RlbS5oLgoKV2VkIE1hciAgNCAyMjoyNjo1MyAxOTk4ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGxleC5jIChkb19zY29wZWRfaWQpOiBGaXggcGFyZW50aGVzaXppbmcuCgpXZWQgTWFyICA0IDEyOjExOjUzIDE5OTggIE1pY2hhZWwgVGllbWFubiAgPHRpZW1hbm5AYXhvbi5jeWdudXMuY29tPgoKCSogcnR0aS5jIChnZXRfdGluZm9fZm5fZHluYW1pYyk6IElmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuCglGTEFHX1JUVEkgaXMgdW5zZXQsIGluaXRpYWxpemUgdHlwZSBpbmZvIG1hY2hpbmVyeSBhbmQgY29udGludWUKCXdpdGggRkxBR19SVFRJIGVuYWJsZWQuCgkoZ2V0X3R5cGVpZCk6IExpa2V3aXNlLgoKV2VkIE1hciAgNCAxMTo0Nzo1NSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAodW5hcnlfY29tcGxleF9sdmFsdWUpOiAmRDo6aSBoYXMgdHlwZSBCOjoqIGlmIGkgY29tZXMKCWZyb20gQi4KCldlZCBNYXIgIDQgMTE6Mjg6MDggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogRGVhbCBtb3JlIGdyYWNlZnVsbHkgd2l0aAoJaW52YWxpZCBkZWNsYXJhdGlvbnMuCgpUdWUgTWFyICAzIDAxOjM4OjE3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jLCBkZWNsLmMsIGRlY2wyLmMsIGluaXQuYywgcnR0aS5jLCB0eXBlY2suYywgdHlwZWNrMi5jLAoJY3AtdHJlZS5oOiBDbGVhbiB1cCBtb3JlIG9sZCBvdmVybG9hZGluZyBjb2RlLCBvbGQgUlRUSSBjb2RlLCBhbmQKCXNvbWUgZm9ybWF0dGluZyBxdWlya3MuCgoJKiBjYWxsLmMsIGNsYXNzLmMsIGNwLXRyZWUuaCwgY3Z0LmMsIGRlY2wuYywgaW5pdC5jLCBsZXguYywKCW1ldGhvZC5jLCBwdC5jLCBwdHJlZS5jLCB0eXBlY2suYzogUmVtb3ZlIHN1cHBvcnQgZm9yCgktZm5vLWFuc2ktb3ZlcmxvYWRpbmcgYW5kIG92ZXJsb2FkaW5nIE1FVEhPRF9DQUxMX0VYUFIuCgkqIGNsYXNzLmg6IFJlbW92ZS4KCSogTWFrZWZpbGUuaW46IEFkanVzdC4KCgkqIHB0LmMgKHVuaWZ5KTogRG9uJ3QgYWxsb3cgcmVkdWNlZCBjdi1xdWFscyB3aGVuIHN0cmljdC4KCgkqIGNhbGwuYywgY2xhc3MuYywgcHQuYywgY3AtdHJlZS5oOiBSZW1vdmUgbnN1YnN0cyBwYXJtIGZyb20KCSp0eXBlX3VuaWZpY2F0aW9uKiBhbmQgdW5pZnkuCgpNb24gTWFyICAyIDEyOjExOjA2IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGV4cGxpY2l0X3RlbXBsYXRlX3R5cGUpOiBSZW1vdmUgVEVNUExBVEUga2V5d29yZC4KCShuZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBBbmQgYWRkIGl0IGJlZm9yZSB0aGlzIHVzZS4KCSh0eXBlbmFtZV9zdWIwKTogQW5kIHRoaXMgdXNlLiAgQWxzbyBhZGQgdXNlIHdpdGhvdXQgdGhlIGtleXdvcmQuCgkodHlwZW5hbWVfc3ViMSk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IGFjdHVhbGx5IGluc3RhbnRpYXRlCglhbnl0aGluZyBpZiBvdXIgdHlwZSB1c2VzIHRlbXBsYXRlIHBhcm1zLgoKTW9uIE1hciAgMiAxMTowNDo1OSAxOTk4ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgY2FsbCB0ZW1wb3JhcnlfYWxsb2NhdGlvbiBmb3IgYQoJbmVzdGVkIGZ1bmN0aW9uLgoKU3VuIE1hciAgMSAyMTowNjozNyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IG1lc3Mgd2l0aCBmcmllbmRzIGlmCglvdXIgdHlwZSB1c2VzIHRlbXBsYXRlIHBhcm1zLgoKU2F0IEZlYiAyOCAxMjowNjo0NCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChuZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBVc2UgZXhwbGljaXRfdGVtcGxhdGVfdHlwZS4KCSh0eXBlbmFtZV9zdWIpOiBBbGxvdyBhIHRlbXBsYXRlX3R5cGUsIGFuIGV4cGxpY2l0X3RlbXBsYXRlX3R5cGUsCglvciBhbiBpbXBsaWNpdCB0ZW1wbGF0ZSB0eXBlIGF0IHRoZSBlbmQuCgkqIGxleC5jICh5eXByaW50KTogSGFuZGxlIGEgUFRZUEVOQU1FIGJlaW5nIGEgVEVNUExBVEVfREVDTC4KCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBIYW5kbGUgdGVtcGxhdGUtaWQgd2hlcmUgdGhlIG5hbWUKCWlzIGEgVEVNUExBVEVfREVDTC4KCSogY2FsbC5jIChidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlCglkZXN0cnVjdG9yIGNhbGwuCgkqIHB0LmMgKHRzdWJzdF9jb3B5LCBNRVRIT0RfQ0FMTF9FWFBSKTogRG9uJ3QgYXNzdW1lIGEgbWVtYmVyCglkZXN0cnVjdG9yIGlzIHJlcHJlc2VudGVkIGJ5IHRoZSB0eXBlLgoKCSogY3AtdHJlZS5oIChUWVBFTkFNRV9UWVBFX0ZVTExOQU1FKTogTmV3IG1hY3JvLgoJKiBwYXJzZS55IChuZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBBZGQgJ3RlbXBsYXRlJyBjYXNlLgoJKGV4cGxpY2l0X3RlbXBsYXRlX3R5cGUpOiBOZXcgcnVsZS4KCSh0eXBlbmFtZV9zdWIpOiBVc2UgaXQuCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogSGFuZGxlIGdldHRpbmcgYSB0ZW1wbGF0ZS1pZCBmb3IgTkFNRS4KCSogcHQuYyAodHN1YnN0KTogTGlrZXdpc2UuCgpGcmkgRmViIDI3IDExOjE3OjUwIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGFkZF90b190ZW1wbGF0ZV9hcmdzKTogRml4IHRoaW5rby4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IENhbGwgaXQgbGF0ZXIuCgoJKiBwdC5jIChnZXRfY2xhc3NfYmluZGluZ3MpOiBBZGQgb3V0ZXJfYXJncyBwYXJtLgoJKG1vc3Rfc3BlY2lhbGl6ZWRfY2xhc3MpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFBhc3MgaXQuCgkobW9yZV9zcGVjaWFsaXplZF9jbGFzcyk6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEdldCBjb250ZXh0IGZyb20gdGVtcGxhdGUgaWYgbm9uZQoJd2FzIHNwZWNpZmllZC4KCShmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBEb24ndCBkbyBhbnl0aGluZyB3aXRoIGEKCXBhcnRpYWwgc3BlY2lhbGl6YXRpb24uCgkqIGRlY2wyLmMgKGNoZWNrX21lbWJlcl90ZW1wbGF0ZSk6IFVzZSBJU19BR0dSX1RZUEUgaW5zdGVhZCBvZgoJQUdHUkVHQVRFX1RZUEVfUC4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IE1lbWJlciBjbGFzcyB0ZW1wbGF0ZXMgaGF2ZSBhbHJlYWR5IGJlZW4KCWNoZWNrZWQgZm9yIG5hbWUgY2xhc2hlcy4KCSogZGVjbC5jIChwdXNoZGVjbF93aXRoX3Njb3BlKTogSGFuZGxlIHB1c2hpbmcgYXQgY2xhc3MgbGV2ZWwuCgpGcmkgRmViIDI3IDAyOjI1OjE2IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCwgVEVNUExBVEVfREVDTCk6IFN1cHBvcnQgbWVtYmVyIGNsYXNzIHRlbXBsYXRlcy4KCSh0c3Vic3QsICpfUEFSTSk6IFN1cHBvcnQgbXVsdGlwbGUgbGV2ZWxzIG9mIHRlbXBsYXRlIGNsYXNzZXMuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBMb29rIHVwIHRoZSBwYXR0ZXJuIGZyb20gdGhlCglvcmlnaW5hbCB0ZW1wbGF0ZS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBIYW5kbGUgZ2V0dGluZyBhIHRlbXBsYXRlIGZvciBkMS4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBDb3JyZWN0IHNldHRpbmcgb2YgJ3ByaW1hcnknLgoJKHJlZHVjZV90ZW1wbGF0ZV9wYXJtX2xldmVsKTogQWRkICdsZXZlbHMnIHBhcm0uCgkoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogU3VwcG9ydCBtZW1iZXIgY2xhc3MgdGVtcGxhdGVzLgoJKHRlbXBsYXRlX2NsYXNzX2RlcHRoKTogSGFuZGxlIG11bHRpcGxlIGxldmVscy4KCSogcGFyc2UueSAoY29tcG9uZW50X2RlY2xfMSwgZm4uZGVmMik6IFJlbW92ZSBtZW1iZXIgdGVtcGxhdGUgY2FzZS4KCShjb21wb25lbnRfZGVjbCk6IEFkZCBtZW1iZXIgdGVtcGxhdGUgY2FzZXMuCgkqIGRlY2wyLmMgKGNoZWNrX21lbWJlcl90ZW1wbGF0ZSk6IFdlIG5vdyBoYW5kbGUgbWVtYmVyIHRlbXBsYXRlCgljbGFzc2VzLgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlcy4KCSogbWV0aG9kLmMgKGRvX2lubGluZV9mdW5jdGlvbl9oYWlyKTogRG9uJ3QgdG91Y2gKCUlERU5USUZJRVJfR0xPQkFMX1ZBTFVFLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBJZiBuYW1lIGlzbid0IGFuIGlkZW50aWZpZXIsIGp1c3QKCXJldHVybiBpdC4KCSogc3Bldy5jICh5eWxleCk6IEhhbmRsZSBQVFlQRU5BTUUgbGlrZSBUWVBFTkFNRS4KCgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IERvIGFkanVzdCBmb3IgY29udmVyc2lvbnMgdG8KCWFuZCBmcm9tIHZpcnR1YWwgYmFzZS4KCldlZCBGZWIgMjUgMDk6NTE6MjkgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogR2l2ZSBoYXJkIGVycm9yIGZvciBjb252ZXJzaW9uCglmcm9tIHZpcnR1YWwgYmFzZS4KCgkqIGNwLXRyZWUuaDogVHdlYWsgZm9ybWF0dGluZy4KCldlZCBGZWIgMjUgMDA6MzU6MzMgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IEhhbmRsZSByZWRlY2xhcmF0aW9uIGVycm9yLgoKCSogY3AtdHJlZS5oIChJREVOVElGSUVSX05BTUVTUEFDRV9WQUxVRSk6IE5ldyBtYWNyby4KCShJREVOVElGSUVSX05BTUVTUEFDRV9CSU5ESU5HUyk6IE5ldyBtYWNyby4KCShOQU1FU1BBQ0VfQklORElORyk6IE5ldyBtYWNyby4KCShJREVOVElGSUVSX0dMT0JBTF9WQUxVRSk6IFVzZSBOQU1FU1BBQ0VfQklORElORy4KCSogKi5jOiBVc2UgdGhlbS4KCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbCk6IFVzZSBpbm5lcm1vc3RfYXJncy4KCgkqIGRlY2wuYyAoZ2V0X3VuaXF1ZV9uYW1lKTogVHdlYWsgZnJvbSBlYXJsaWVyIGluIHRoZSBuYW1lLgoKVHVlIEZlYiAyNCAyMjoxNTowNCAxOTk4ICBNYXJ0aW4gdm9uIExvZXdpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGNwLXRyZWUuZGVmOiBBZGQgQ1BMVVNfQklORElORyBub2RlLgoJKiBjcC10cmVlLmggKHRyZWVfYmluZGluZyk6IE5ldyBzdHJ1Y3QuCgkoQklORElOR19TQ09QRSwgQklORElOR19WQUxVRSk6IE5ldyBtYWNyb3MuCgkoY3VycmVudF9uYW1lc3BhY2UsIGdsb2JhbF9uYW1lc3BhY2UpOiBEZWNsYXJlIGV4dGVybi4KCShzdHJ1Y3QgbGFuZ19kZWNsX2ZsYWdzKTogTmV3IGZpZWxkIGluX25hbWVzcGFjZS4KCShERUNMX05BTUVTUEFDRV9VU0lORywgREVDTF9OQU1FU1BBQ0VfVVNFUlMpOiBOZXcgbWFjcm9zLgoJKERFQ0xfTkFNRVNQQUNFLCBTRVRfREVDTF9OQU1FU1BBQ0UpOiBOZXcgbWFjcm9zLgoJKFRSRUVfSU5ESVJFQ1RfVVNJTkcpOiBOZXcgbWFjcm8uCgkqIGRlY2wyLmMgKGN1cnJlbnRfbmFtZXNwYWNlLCBnbG9iYWxfbmFtZXNwYWNlKTogRGVjbGFyZS4gIFRoZQoJdmFsdWUgaXMgYSBOQU1FU1BBQ0VfREVDTCBub3csIG5vdCBhIFRSRUVfTElTVC4KCShpc19uYW1lc3BhY2VfYW5jZXN0b3IsIG5hbWVzcGFjZV9hbmNlc3Rvcik6IE5ldyBzdGF0aWMgZnVuY3Rpb25zLgoJKGFkZF91c2luZ19uYW1lc3BhY2UsIGFtYmlndW91c19kZWNsKTogTGlrZXdpc2UuCgkobG9va3VwX3VzaW5nX25hbWVzcGFjZSk6IE5ldyBzdXBwb3J0IGZ1bmN0aW9uIGZvciBsb29rdXBfbmFtZS4KCShxdWFsaWZpZWRfbG9va3VwX3VzaW5nX25hbWVzcGFjZSk6IE5ldyBzdXBwb3J0IGZ1bmN0aW9uIGZvcgoJZG9fc2NvcGVkX2lkIGFuZCBsb29rdXBfbmFtZXNwYWNlX25hbWUuCgkoZ2V0X25hbWVzcGFjZV9pZCk6IE1hcmsgYXMgb2Jzb2xldGUuCgkoY3VycmVudF9uYW1lc3BhY2VfaWQpOiBMaWtld2lzZS4KCShkb19uYW1lc3BhY2VfYWxpYXMpOiBJbXBsZW1lbnQuCgkoZG9fdXNpbmdfZGlyZWN0aXZlKTogSW1wbGVtZW50IGFzIGNhbGwgdG8gYWRkX3VzaW5nX25hbWVzcGFjZS4KCSogZGVjbC5jIChiaW5kaW5nX2Zvcl9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKHB1c2hfbmFtZXNwYWNlLCBwb3BfbmFtZXNwYWNlKTogSW1wbGVtZW50LgoJKHB1c2hfZGVjbCk6IERvbid0IGluc3RhbGwgYSBGVU5DVElPTl9ERUNMIGluIHRoZSBnbG9iYWwgYnJhbmNoLgoJKGxvb2t1cF9uYW1lc3BhY2VfbmFtZSk6IEltcGxlbWVudCB1c2luZyBxdWFsaWZpZWQgbG9va3VwLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBGb3IgZ2xvYmFsIHNjb3BpbmcsIGxvb2t1cCBpbgoJZ2xvYmFsX25hbWVzcGFjZS4gIEZvciBuYW1lc3BhY2Ugc2NvcGluZywgbG9va3VwIGluIGdpdmVuCgluYW1lc3BhY2UuICBGb3IgdW5zY29wZWQgbG9va3VwLCBpdGVyYXRlIG92ZXIgbmFtZXNwYWNlLAoJY29uc2lkZXJpbmcgdXNpbmcgZGlyZWN0aXZlcy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgZ2xvYmFsX25hbWVzcGFjZS4KCShncm9rdmFyZGVjbCk6IEJ1aWxkIGFzc2VtYmxlciBuYW1lIGFzIHN0YXRpYyBuYW1lIGZvciBnbG9iYWxzLgoJKGdyb2tkZWNsYXJhdG9yKTogUmVtb3ZlIG9sZCBuYW1lc3BhY2UgbWFuZ2xpbmcuCgkoeHJlZl90YWcpOiBXaGVuIGluc3RhbGxpbmcgYSBnbG9iYWwgYmluZGluZyBmb3IgdGhlCgl0YWcsIG1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGlkZW50aWZpZXIuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9uZXN0ZWRfbmFtZSk6IE1hbmdsZSBuYW1lc3BhY2VzLgoJKGJ1aWxkX3F1YWxpZmllZF9uYW1lKTogTGlrZXdpc2UuCgkoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogTGlrZXdpc2UuCgkqIGxleC5jIChidWlsZF9sYW5nX2RlY2wpOiBTZXQgbmFtZXNwYWNlIGZvciBuZXcgZGVjbGFyYXRpb24gdG8KCWN1cnJlbnRfbmFtZXNwYWNlLgoJKGRvX3Njb3BlZF9pZCk6IEZpbmQgZ2xvYmFsIG5hbWVzIGluIGdsb2JhbCBvciBjdXJyZW50CgluYW1lc3BhY2UsIG9yIHVzaW5nIHF1YWxpZmllZCBuYW1lc3BhY2UgbG9va3VwLCBkZXBlbmRpbmcgb24KCWNvbnRleHQuCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBXaGVuIHNjb3BlIGlzIG5hbWVzcGFjZSwgdXNlCglidWlsZF94X2Z1bmN0aW9uX2NhbGwgaW5zdGVhZC4KCShidWlsZF9vZmZzZXRfcmVmKTogV2hlbiBzY29wZSBpcyBuYW1lc3BhY2UsIGNvbGxhcHNlIHByb2Nlc3NpbmcKCXRvIGxvb2t1cF9uYW1lc3BhY2VfbmFtZSBpbnN0ZWFkLgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBTdXBwb3J0IE5BTUVTUEFDRV9ERUNMLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogQmluZCBnbG9iYWxzIHRvIGN1cnJlbnQgbmFtZXNwYWNlLgoJKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogTGlrZXdpc2UuCgkobG9va3VwX3RhZyk6IExpa2V3aXNlLgoJKGxvb2t1cF9uYW1lX2N1cnJlbnRfbGV2ZWwpOiBMaWtld2lzZS4KCSh4cmVmX3RhZyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoaWRlbnRpZmllcl90eXBlZGVjbF92YWx1ZSk6IExpa2V3aXNlLgoJKHJlYWxfeXlsZXgpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGRvX2lubGluZV9mdW5jdGlvbl9oYWlyKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHVuc2NvcGVkKTogTGlrZXdpc2UuCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoY2FsbF92b2lkX2ZuKTogTGlrZXdpc2UuCgkqIHNpZy5jIChidWlsZF9zaWd0YWJsZSk6IExpa2V3aXNlLgoJKiBwdHJlZS5jIChsYW5nX3ByaW50X3hub2RlKTogTmV3IGZ1bmN0aW9uLgoKVHVlIEZlYiAyNCAwMTo0MDoyNCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IGluc3RhbnRpYXRlIGlmIHBlZGFudGljCglhbmQgdGhlIGFyZ3MgdXNlIHRlbXBsYXRlIHBhcm1zLgoKCSogcHQuYyAocHVzaF90aW5zdF9sZXZlbCk6IElmIHRoZSBpbnN0YW50aWF0aW9uIHVzZXMgdGVtcGxhdGUgcGFybXMsCglmYWlsIHNpbGVudGx5LgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogRG8gY2FsbCBjb21wbGV0ZV90eXBlIGZvciBiYXNldHlwZXMKCXRoYXQgaW52b2x2ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKVHVlIEZlYiAyNCAwMDozNjo0MyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IEZpeCBsYWJlbGVkIGluaXQgY2hlY2suCgpNb24gRmViIDIzIDA1OjA4OjU1IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMsIGNhbGwuYywgZGVjbC5jLCBtZXRob2QuYywgY3AtdHJlZS5oOiBSZW1vdmUgdW51c2VkIE5BUkdTCglhcmd1bWVudCB0byB0c3Vic3QgYW5kIGZyaWVuZHMuCgoJKiBwdC5jICh0c3Vic3QsIEZVTkNUSU9OX0RFQ0wpOiBUaWR5LgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IEhhbmRsZSBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9uCgl0ZW1wbGF0ZXMgbGlrZSBub24tdGVtcGxhdGVzLiAgSGFuZGxlIGZyaWVuZCB0ZW1wbGF0ZXMgbGlrZSBub3JtYWwKCWZ1bmN0aW9uIHRlbXBsYXRlcy4KCSogcHQuYyAodHN1YnN0LCAqX1BBUk0pOiBEb24ndCB1c2Ugb3JpZ19sZXZlbC4KCShnZXRfYmluZGluZ3MpOiBEb24ndCBjYWxsIGFkZF90b190ZW1wbGF0ZV9hcmdzLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkodHN1YnN0LCBGVU5DVElPTl9ERUNMKTogQ2FsbCBhZGRfdG9fdGVtcGxhdGVfYXJncyBhcyBhcHByb3ByaWF0ZS4KCSogcHRyZWUuYyAocHJpbnRfbGFuZ190eXBlKTogUHJpbnQgaW5kZXgvbGV2ZWwgZm9yIHRlbXBsYXRlIHBhcm1zLgoKTW9uIEZlYiAyMyAwMjo1MjoyOSAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBNYWtlLWxhbmcuaW4gKGNjMXBsdXMpOiBOb3RlIHRoYXQgY2MxcGx1cyBkZXBlbmRzIG9uCgljcC9jcC10cmVlLmggYW5kIGNwL2NwLXRyZWUuZGVmLgoKCSogY3AtdHJlZS5kZWYgKFRFTVBMQVRFX0NPTlNUX1BBUk0pOiBSZW1vdmUuCgkoVEVNUExBVEVfUEFSTV9JTkRFWCk6IE5ldyB0cmVlIGNvZGUsIHVzZWQgdG8gaW5kaWNhdGUgYQoJcG9zaXRpb24gaW4gYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgbGlzdC4KCSogY3AtdHJlZS5oICh0ZW1wbGF0ZV9wYXJtX2luZGV4KTogTmV3IHN0cnVjdHVyZSwgdXNlZCBhcyB0aGUgdHJlZQoJc3RydWN0dXJlIGZvciBhIFRFTVBMQVRFX1BBUk1fSU5ERVguCgkoVEVNUExBVEVfUEFSTV9JRFgpOiBOZXcgbWFjcm8uCgkoVEVNUExBVEVfUEFSTV9MRVZFTCk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1BBUk1fREVTQ0VOREFOVFMpOiBMaWtld2lzZS4KCShURU1QTEFURV9QQVJNX09SSUdfTEVWRUwpOiBMaWtld2lzZS4KCShURU1QTEFURV9QQVJNX0RFQ0wpOiBMaWtld2lzZS4KCShURU1QTEFURV9UWVBFX1BBUk1fSU5ERVgpOiBMaWtld2lzZS4KCShURU1QTEFURV9UWVBFX09SSUdfTEVWRUwpOiBMaWtld2lzZS4KCShURU1QTEFURV9UWVBFX0RFQ0wpOiBMaWtld2lzZS4KCShURU1QTEFURV9DT05TVF9JRFgpOiBSZW1vdmUuCgkoVEVNUExBVEVfQ09OU1RfTEVWRUwpOiBMaWtld2lzZS4KCShURU1QTEFURV9DT05TVF9TRVRfSU5GTyk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1RZUEVfU0VUX0lORk8pOiBMaWtld2lzZS4KCShURU1QTEFURV9UWVBFX0lEWCk6IFJlZGVmaW5lIGluIHRlcm1zIG9mIFRFTVBMQVRFX1BBUk1fSU5ERVgKCW5vZGUuCgkoVEVNUExBVEVfVFlQRV9MRVZFTCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogQ2FsbCBjb21wX3RlbXBsYXRlX3Bhcm1zLCByYXRoZXIgdGhhbgoJZXhwYW5kaW5nIGl0IGlubGluZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBJZiB0d28gdGVtcGxhdGUgZGVjbGFyYXRpb25zIGFyZSBiZWluZyBtZXJnZWQsCgl0aGVuIHRoZWlyIFRFTVBMQVRFX0lORk9zIHNob3VsZCBiZSBtZXJnZWQgYXMgd2VsbC4KCShncm9rZm5kZWNsKTogU2F2ZSB0ZW1wbGF0ZS1pZCBpbmZvcm1hdGlvbiB3aGVuIGRlY2xhcmluZyBhIGZyaWVuZAoJd2l0aCBleHBsaWNpdCB0ZW1wbGF0ZSBhcmd1bWVudHMuICBQYXNzIGFyZ3VtZW50cyB0bwoJY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24gdmlhIGNvcnJlY3QgY29udmVudGlvbjsgYXQgc29tZQoJcG9pbnQgY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24gY2hhbmdlZCwgYnV0IHRoZXNlIGNhbGwtc2l0ZXMKCWRpZCBub3QuCgkoZ3Jva2RlY2xhcmF0b3IpOiBUaWR5IHVwIHNsaWdodGx5LgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogVGlkeSB1cCBzbGlnaHRseS4gIERvbid0IGFzc3VtZSB0aGF0Cgl0d28gdGVtcGxhdGUgZnVuY3Rpb25zIHdpdGggdGhlIHNhbWUgREVDTF9BU1NFTUJMRVJfTkFNRSB0aGUgc2FtZSwKCXNpbmNlIHRoZSBuYW1lcyBhcmUgbm90IHlldCBtYW5nbGVkLgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBVc2UgVEVNUExBVEVfUEFSTV9JTkRFWCBpbnN0ZWFkIG9mCglURU1QTEFURV9DT05TVF9QQVJNLgoJKGR1bXBfZXhwcik6IExpa2V3aXNlLiAgVXNlIHRoZSBURU1QTEFURV9QQVJNX0RFQ0wgdG8gZ2V0IGF0IHRoZQoJZGVjbCBmb3IgYSBub24tdHlwZSBwYXJhbWV0ZXIsIHJhdGhlciB0aGFuIHByaW50aW5nIGA8dHBhcm0gLi4uPicuCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBIYW5kbGUgVEVNUExBVEVfREVDTCBmcmllbmRzLgoJKGRvX2ZyaWVuZCk6IERlYWwgd2l0aCB0ZW1wbGF0ZSBmcmllbmRzLgoJKiBsZXguYyAoZG9fcGVuZGluZ19pbmxpbmVzKTogQ2FsbAoJbWF5YmVfYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcsIHJhdGhlciB0aGFuCgljb25kaXRpb25hbGx5IGNhbGxpbmcgYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcuCgkocHJvY2Vzc19uZXh0X2lubGluZSk6IExpa2V3aXNlLiAgQ2FsbAoJbWF5YmVfZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nLCByYXRoZXIgdGhhbgoJY29uZGl0aW9uYWxseSBjYWxsaW5nIGVuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZy4KCShkb19wZW5kaW5nX2RlZmFyZ3MpOiBMaWtld2lzZS4KCShkb19pZGVudGlmaWVyKTogVXNlIFRFTVBMQVRFX1BBUk1fSU5ERVggaW5zdGVhZCBvZgoJVEVNUExBVEVfQ09OU1RfUEFSTS4KCSogbWV0aG9kLmMgKGJ1aWxkX21hbmdsZWRfdGVtcGxhdGVfcGFybV9pbmRleCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9vdmVybG9hZF92YWx1ZSk6IFVzZSBpdC4KCShidWlsZF9vdmVybG9hZF9uYW1lKTogTGlrZXdpc2UuCgkqIHB0LmMgKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IEFsbG93IGZyaWVuZCBkZWNsYXJhdGlvbnMuCgkodGVtcGxhdGVfY2xhc3NfZGVwdGgpOiBOZXcgZnVuY3Rpb24uCgkoaXNfbWVtYmVyX3RlbXBsYXRlKTogUmVuYW1lLCBhbmQgbW9kaWZ5LCB0byBiZWNvbWUuLi4KCShpc19tZW1iZXJfb3JfZnJpZW5kX3RlbXBsYXRlKTogTmV3IGZ1bmN0aW9uLgoJKGVuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IFJlbmFtZSwgYW5kIG1vZGlmeSwgdG8gYmVjb21lLi4uCgkobWF5YmVfZW5kX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKS4KCShidWlsZF90ZW1wbGF0ZV9wYXJtX2luZGV4KTogTmV3IGZ1bmN0aW9uLgoJKHJlZHVjZV90ZW1wbGF0ZV9wYXJtX2xldmVsKTogTmV3IGZ1bmN0aW9uLgoJKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IE1vZGlmeSB0byB1c2UgYnVpbGRfdGVtcGxhdGVfcGFybV9pbmRleC4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBEZWFsIHdpdGggZnJpZW5kIHRlbXBsYXRlcy4KCSh1c2VzX3RlbXBsYXRlX3Bhcm1zKTogVXNlIFRFTVBMQVRFX1BBUk1fSU5ERVggaW5zdGVhZCBvZgoJVEVNUExBVEVfQ09OU1RfUEFSTS4KCSh0c3Vic3RfZnJpZW5kX2Z1bmN0aW9uKTogTmV3IGZ1bmN0aW9uLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogR2VuZXJhdGUgdGhlIERFQ0xfRlJJRU5ETElTVAoJZm9yIGEgbmV3IGluc3RhbnRpYXRpb24gYnkgdXNpbmcgdHN1YnN0X2ZyaWVuZF9mdW5jdGlvbiByYXRoZXIKCXRoYW4ganVzdCB0c3Vic3QuCgkodHN1YnN0KTogRG9uJ3QgdHN1YnN0IGludG8gYSB0eXBlIHdoaWNoIGlzIGEgVEVNUExBVEVfREVDTC4KCVVzZSBURU1QTEFURV9QQVJNX0lOREVYIGluc3RlYWQgb2YgVEVNUExBVEVfQ09OU1RfUEFSTSwgYW5kIHRoZQoJYXBwcm9wcmlhdGUgbmV3IG1hY3Jvcy4gIFVzZSByZWR1Y2VfdGVtcGxhdGVfcGFybV9sZXZlbCB0bwoJZ2VuZXJhdGUgbG93ZXItbGV2ZWwgdGVtcGxhdGUgcGFyYW1ldGVycy4gIEhhbmRsZSB0c3Vic3QnaW5nIGludG8KCVRFTVBMQVRFX0RFQ0xTIHRoYXQgZGVjbGFyZSBURU1QTEFURV9URU1QTEFURV9QQVJNUy4gIERvbid0IGZvcmdldAoJdG8gdHN1YnN0IHRoZSBERUNMX0NPTlRFWFQgYW5kIERFQ0xfQ0xBU1NfQ09OVEVYVCBvZiBuZXdseSBjcmVhdGVkCgl0ZW1wbGF0ZXMuICBTaW1pbGFybHkgZm9yIHRoZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGZvciBhIG5ldwoJdGVtcGxhdGUuCgkodHN1YnN0X2NvcHkpOiBUaWR5IHVwIHNsaWdodGx5LiAgVXNlIFRFTVBMQVRFX1BBUk1fSU5ERVggaW5zdGVhZAoJb2YgVEVNUExBVEVfQ09OU1RfUEFSTS4gIEhhbmRsZSBUWVBFX0RFQ0xzIGJ5IHRzdWJzdGluZyBpbnRvIHRoZW0uCgkodW5pZnkpOiBVc2UgVEVNUExBVEVfUEFSTV9JTkRFWCBpbnN0ZWFkIG9mIFRFTVBMQVRFX0NPTlNUX1BBUk0uCgkoZ2V0X2JpbmRpbmdzKTogQ2FsbCBhZGRfdG9fdGVtcGxhdGVfYXJncyBpZiBuZWNlc3NhcnkuCgkoaW5zdGFudGlhdGVfZGVjbCk6IEhhbmRsZSBpbnN0YW50aWF0aW9ucyBvZiBmcmllbmQgdGVtcGxhdGVzLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBEb24ndCB0cmVhdCB0aGUgVFlQRV9GSUVMRFMgb2YgYQoJVEVNUExBVEVfVFlQRV9QQVJNIGFzIGEgbGlzdCBvZiBmaWVsZHM7IGl0J3Mgbm90IQoJKiBzcGV3LmMgKHl5bGV4KTogRG8gYSBsaXR0bGUgbWFudWFsIGNvbnN0YW50IHByb3BhZ2F0aW9uIHRvCgljbGFyaWZ5IHRoZSBjb2RlLgoKU3VuIEZlYiAyMiAxOTo1MzoyOSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBlcnJvci5jOiBJbmNsdWRlIHN5cy90eXBlcy5oLgoKVGh1IEZlYiAxOSAxNDo0OTowOSAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBtZXRob2QuYyAoYnVpbGRfbWFuZ2xlZF9uYW1lKTogU3RhcnQgQ1BQIGRpcmVjdGl2ZXMgaW4gY29sdW1uIHplcm8uCgpUaHUgRmViIDE5IDEwOjM2OjQ4IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogU29ycnkgYWJvdXQgbm9uLXRyaXZpYWwKCWxhYmVsZWQgaW5pdGlhbGl6ZXJzLgoJKiBwYXJzZS55IChpbml0bGlzdCk6IFJlLWVuYWJsZSBsYWJlbGVkIGluaXRpYWxpemVycy4KClRodSBGZWIgMTkgMTA6MTU6NTUgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEFkZCBhIG5ldyBwYXJhbWV0ZXIsIGlzX3RtcGxfcGFybSwKCWFsbCBjYWxsZXJzIGNoYW5nZWQuICBSZWx5IG9uIHRoZSBuZXcgcGFyYW1ldGVyIGluc3RlYWQgb2YgYXJnCgliZWluZyBhIFRSRUVfTElTVCB3aGVuIGRldGVybWluZSB3aGV0aGVyIHdlIGFyZSB3b3JraW5nIGluc2lkZQoJdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVyLiAgQ2xlYW4gdXAgaXNfdHlwZSB0ZXN0LgoKVGh1IEZlYiAxOSAxMDowNDoxMiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogUHJlc2VydmUgVFJFRV9DT05TVEFOVC4KCSogdHlwZWNrMi5jIChpbml0aWFsaXplcl9jb25zdGFudF92YWxpZF9wKTogQWxsb3cgY29udmVyc2lvbnMKCWJldHdlZW4gcG9pbnRlcnMgYW5kIHJlZmVyZW5jZXMuCgoxOTk4LTAyLTE5ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogT25seSB3YXJuIGFib3V0IGluY3IvZGVjciBhIHBvaW50ZXIKCWlmIHBlZGFudGljIHx8IHdhcm5fcG9pbnRlcl9hcml0aC4KClRodSBGZWIgMTkgMDk6Mzc6MjEgMTk5OCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YudXNjLmVkdT4KCgkqIHB0LmMgKHVuaWZ5KTogSGFuZGxlIFRFTVBMQVRFX0RFQ0wuCgoxOTk4LTAyLTE4ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChzdHJpcF9hdHRycyk6IFJlbW92ZSBkZWNsLgoKMTk5OC0wMi0xOCAgRG91ZyBFdmFucyAgPGRldmFuc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDYWxsIG1lcmdlX21hY2hpbmVfZGVjbF9hdHRyaWJ1dGVzLgoJVXBkYXRlIG9sZGRlY2wncyBhdHRyaWJ1dGVzIHRvby4KCShzdHJpcF9hdHRycyk6IFJlbW92ZSBmdW5jdGlvbi4KCSogdHlwZWNrLmMgKGNvbW1vbl90eXBlKTogQ2FsbCBtZXJnZV9tYWNoaW5lX3R5cGVfYXR0cmlidXRlcy4KClR1ZSBGZWIgMTcgMTQ6MDc6NTIgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcGFyc2UueSAoaW5pdGRjbDBfaW5uYXJkcyk6IE5ldyBncmFtbWFyIHN5bWJvbC4KCShub21vZHNfaW5pdGRlY2xzLCBub21vZHNfaW5pdGRjbDApOiBDaGFuZ2UgdHlwZSBmcm9tIGl0eXBlIHRvCglub25lLCBzaW5jZSB0aGUgcmVzdWx0aW5nIHZhbHVlIGlzIG5ldmVyIHVzZWQuCgkocGFyc2VfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShkYXRhZGVmKTogUmVtb3ZlIHJlZHVuZGFudCBhY3Rpb25zLgoJKGluaXRkY2wwLCBub3R5cGVfaW5pdGRjbDAsIG5vbW9kc19pbml0ZGNsMCk6IFVzZSBpbml0ZGNsMF9pbm5hcmRzLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KClR1ZSBGZWIgMTcgMTE6NTQ6MTYgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBVc2UgZ2V0ZGVjbHMoKSB0byBjaGVjayBmb3IgZGVjbC4KClNhdCBGZWIgMTQgMTE6NTA6NTEgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogTWFrZS1sYW5nLmluIChERU1BTkdMRVJfSU5TVEFMTF9OQU1FLCBERU1BTkdMRVJfQ1JPU1NfTkFNRSk6IE5ldwoJbWFjcm9zLgoJKGMrKy5pbnN0YWxsLWNvbW1vbik6IEluc3RhbGwgYysrZmlsdCBwcm9wZXJseSBhcyBuYXRpdmUgb3IgYXMgY3Jvc3MKCXZhcmlhbnQuCgkoYysrLnVuaW5zdGFsbCk6IEFkZCBjKytmaWx0LgoKRnJpIEZlYiAxMyAxNDo1NTozNyAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBGaXggbXVsdGktbGV2ZWwgcHRyIGNvbnZlcnNpb25zLgoKRnJpIEZlYiAxMyAxNDowNjoyMiAxOTk4ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IFByb3BhZ2F0ZSBlcnJvcl9tYXJrX25vZGUgdXAuCgpGcmkgRmViIDEzIDEzOjI0OjMyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHNpbXBsZV9zdG10KTogSWYgdGhlIGNvbmRpdGlvbiBpc24ndCBhIGRlY2xhcmF0aW9uLAoJc3RhcnQgdGhlIGNvbnRyb2xsZWQgYmxvY2sgYWZ0ZXIgdGhlIHRlc3QuCgpGcmkgRmViIDEzIDAyOjI2OjEwIDE5OTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBDb252ZXJ0IGJ1aWx0aW4gYWJzLCBsYWJzIGFuZCBmYWJzIHRvCgl0cmVlLWNvZGVzLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmUtZW5hYmxlIGFicywgbGFicyBhbmQgZmFicyBhcwoJYnVpbHRpbnMuCgpGcmkgRmViIDEzIDAxOjM2OjQyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IEEgQkFTRV9DT05WIHJlcGxhY2VzIGFuIFJWQUxVRV9DT05WLgoKRnJpIEZlYiAxMyAwMDoyMTo1OSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmg6IEFkZCBhY2Nlc3NfcHJvdGVjdGVkX3ZpcnR1YWxfbm9kZS4KCSogY2xhc3MuYyAoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBpdC4KCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IFVzZSBpdC4KCSogcGFyc2UueSAoYmFzZV9jbGFzc19hY2Nlc3NfbGlzdCk6IExpa2V3aXNlLgoKCSogTWFrZS1sYW5nLmluIChERU1BTkdMRVJfUFJPRyk6IEFkZCAkKGV4ZWV4dCkuCgkoYysrLmluc3RhbGwtY29tbW9uKTogSW5zdGFsbCBjKytmaWx0LgoKVGh1IEZlYiAxMiAxMjo0Njo1MSAxOTk4ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHNoYWRvd190YWcpOiBHaXZlIGVycm9yIGZvciB0eXBlZGVmLWluZyBidWlsdC1pbiB0eXBlcy4KCldlZCBGZWIgMTEgMjM6Mjg6MDUgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2FsbC5jIChyZWZlcmVuY2VfYmluZGluZyk6IFVzZSBjb21wdHlwZXMgd2hlbiBjb21wYXJpbmcKCVRZUEVfTUFJTl9WQVJJQU5UUyB0byBoYW5kbGUgbm9uLWNhbm9uaWNhbCBhcnJheS9pbmRleCB0eXBlcy4KCldlZCBGZWIgMTEgMTY6NDI6MDQgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogdHJlZS5jIChpc19vdmVybG9hZGVkX2ZuKTogVXNlIHJlYWxseV9vdmVybG9hZGVkX2ZuLgoJKHJlYWxseV9vdmVybG9hZGVkX2ZuKTogTW92ZSBjaGVjayBoZXJlIGZyb20gaXNfb3ZlcmxvYWRlZF9mbi4KCShnZXRfZmlyc3RfZm4pOiBVc2UgcmVhbGx5X292ZXJsb2FkZWRfZm4gYW5kIGlzX292ZXJsb2FkZWRfZm4uCgpXZWQgRmViIDExIDE1OjU0OjE4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jKTogVHlwZS1jaGVjayBwb2ludGVyLXRvLW1lbWJlcgoJY29udmVyc2lvbnMuCgpNb24gRmViICA5IDIyOjIzOjMxIDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNwLXRyZWUuaCAocHVzaF90ZW1wbGF0ZV9kZWNsKTogUmV0dXJuIHRoZSBkZWNsIHBhc3NlZCBpbiwgb3IgYW4KCWVxdWl2YWxlbnQgZHVwbGljYXRlLgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBVc2UgdGhlIHJldHVybiB2YWx1ZSBmcm9tIHB1c2hfdGVtcGxhdGVfZGVjbC4KCShkdXBsaWNhdGVfZGVjbHMpOiBXaGVuIGR1cGxpY2F0aW5nIGEgdGVtcGxhdGUgZGVjbGFyYXRpb24sIG1lcmdlCgl0aGUgREVDTF9URU1QTEFURV9SRVNVTFRzIGFzIHdlbGwuCgkobWFrZV9pbXBsaWNpdF90eXBlbmFtZSk6IERvbid0IHRyeSB0byBkaXZlIGludG8gdHlwZW5hbWUgdHlwZXMgdG8KCWZpbmQgYSBjb250ZXh0IGZvciBtYWtpbmcgYSBuZXcgaW1wbGljaXQgdHlwZW5hbWUuCgkoc3RhcnRfZGVjbCk6IFVzZSB0aGUgcmV0dXJuIHZhbHVlIGZyb20gcHVzaF90ZW1wbGF0ZV9kZWNsLgoJKGdyb2tkZWNsYXJhdG9yKTogQ29tcGxhaW4gYWJvdXQgZGVjbGFyYXRpb25zIGxpc3QgYGNvbnN0IG9wZXJhdG9yCglpbnQnLiAgU2luY2Ugd2UgZG9uJ3QgY29ycmVjdGx5IGhhbmRsZSBpbi1jbGFzcyBpbml0aWFsaXphdGlvbnMgb2YKCW5vbi1zdGF0aWMgZGF0YSBtZW1iZXJzLCBjb21wbGFpbiBhYm91dCB0aGlzIChub3cgaWxsZWdhbCkKCXByYWN0aWNlLiAgSXNzdWUgYW4gZXJyb3IgZm9yIGluaXRpYWxpemF0aW9ucyBvZiBub24tY29uc3Qgc3RhdGljcwoJc2luY2UgdGhhdCBpcyBpbGxlZ2FsIGFzIHdlbGwsIGFuZCBzaW5jZSB3ZSBkb24ndCBoYW5kbGUgdGhhdCBjYXNlCgljb3JyZWN0bHkgZWl0aGVyLgoJKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSBwdXNoX3RlbXBsYXRlX2RlY2wuCgkoc3RhcnRfbWV0aG9kKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IExpa2V3aXNlLiAgU2luY2UgdGhlIGNoYW5nZSB0bwoJZ3Jva2RlY2xhcmF0b3IgZW5zdXJlcyB0aGF0IGFsbCBpbml0aWFsaXplZCBmaWVsZHMgYXJlIGluIGZhY3QKCXN0YXRpYywgcmVtb3ZlIGEgcmVkdW5kYW50IHRlc3QgZm9yIFRSRUVfUFVCTElDLgoJKiBwYXJzZS55IChpbml0bGlzdCk6IERpc2FibGUgbGFiZWxlZCBpbml0aWFsaXplcnMgc2luY2UgdGhleSBkbwoJbm90IHdvcmsgYXMgcGVyIHRoZSBkb2N1bWVudGF0aW9uLCBhbmQgc2luY2UgdGhleSBkbyBub3QgdXNlIHRoZQoJc2FtZSBzeW50YXggYXMgdGhlIEMgZnJvbnQgZW5kLgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2wpOiBSZXR1cm4gdGhlIGRlY2wgcGFzc2VkIGluLCBvciBhbgoJZXF1aXZhbGVudCBkdXBsaWNhdGUuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogV2hlbiBzZWFyY2hpbmcgaW4gYSBuZXN0ZWQgY29udGV4dCwKCXVzZSB0aGUgcmlnaHQgYXJndW1lbnRzLgoJKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBIYW5kbGUgdGhlIERFQ0xfSU5JVElBTCBmb3IgYSBDT05TVF9ERUNMLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IEFzc2lnbiB0aGUgY29ycmVjdCB0eXBlIHRvIHRoZQoJcmVzdWx0IG9mIGJ1aWxkX3Zmbl9yZWYuCgpUdWUgRmViIDEwIDIzOjU2OjQ2IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IEZpeCB0eXBvLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQWxsb3cgb2xkLXN0eWxlIHNwZWNpYWxpemF0aW9uCglvZiBjbGFzcyB0ZW1wbGF0ZSBtZW1iZXJzLgoKVHVlIEZlYiAxMCAyMDozNjo1MiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgkJCSAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBERUNMX1VTRV9URU1QTEFURSBpbnN0ZWFkCgl3aGVuIGRlY2lkaW5nIHRvIG92ZXJyaWRlIERFQ0xfQVNTRU1CTEVSX05BTUUuCgpUdWUgRmViIDEwIDE1OjMwOjU1IDE5OTggIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAdG9ycGVkby50by5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAobGFuZ19mX29wdGlvbnMpOiBBZGQgLWZzcXVhbmdsZSB0byBvcHRpb24gcHJvY2Vzc2luZyBsaXN0LgoJKiBjcC10cmVlLmggKGZsYWdfZG9fc3F1YW5nbGluZyk6IEFkZCBkZWNsYXJhdGlvbi4KCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZnNxdWFuZ2xlIGFuZCAtZm5vLXNxdWFuZ2xlLgoJKiBtZXRob2QuYzogQWRkIG1hY3JvcyBhbmQgc3RhdGljIHZhcmlhYmxlcyBmb3Igc3F1YW5nbGluZy4KCShidWlsZF9vdmVybG9hZF9uYW1lKTogUmVuYW1lIHRvIGJ1aWxkX21hbmdsZWRfbmFtZSwgYWRkIGxvZ2ljIGZvciBCCgljb21wcmVzc2lvbiwgYW5kIHNwbGl0IGludG8gcHJvY2Vzc19tb2RpZmllcnMgYW5kCglwcm9jZXNzX292ZXJsb2FkX2l0ZW0uCgkocHJvY2Vzc19tb2RpZmllcnMpOiBOZXcgZnVuY3Rpb24sIHRvIGhhbmRsZSBjb25zdGFudCwgcmVmZXJlbmNlLAoJYW5kIHBvaW50ZXIgdHlwZXMuCgkocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogTmV3IGZ1bmN0aW9uLCBoYW5kbGVzIGlzc3VlIG9mIHR5cGUgY29kZXMuCgkoYnVpbGRfb3ZlcmxvYWRfbmFtZSk6IE5ldyBmdW5jdGlvbiwgc3RhcnQgc3F1YW5nbGluZyBhbmQgY2FsbAoJYnVpbGRfbWFuZ2xlZF9uYW1lLgoJKEFMTE9DQVRFX1RZUEVWRUMsIERFQUxMT0NBVEVfVFlQRVZFQyk6IFJlbW92ZSBtYWNybyBhbmQgZXhwYW5kIGlubGluZS4KCShzdGFydF9zcXVhbmdsaW5nKTogTmV3IGZ1bmN0aW9uIHRvIGluaXRpYWxpemUgc3F1YW5nbGluZyBzdHJ1Y3RzLgoJKGVuZF9zcXVhbmdsaW5nKTogTmV3IGZ1bmN0aW9uIHRvIGRlc3Ryb3kgc3F1YW5nbGluZyBzdHJ1Y3RzLgoJKG5yZXBlYXRzKTogUmVuYW1lIHZhcmlhYmxlIHRvIE5yZXBlYXRzLgoJKGlzc3VlX25yZXBlYXRzKTogTmV3IGZ1bmN0aW9uIGZvciBpc3N1aW5nICduJyB0eXBlIHJlcGVhdHMuCgkoY2hlY2tfa3R5cGUpOiBOZXcgZnVuY3Rpb24gdG8gY2hlY2sgZm9yIHR5cGUgSyBuYW1lIGNvbXByZXNzaW9uLgoJKGJ1aWxkX292ZXJsb2FkX25lc3RlZF9uYW1lKTogQWRkIGEgY2hlY2sgZm9yIEsgbmFtZSBjb21wcmVzc2lvbi4KCShidWlsZF9xdWFsaWZpZWRfbmFtZSk6IEFkZCBhIGNoZWNrIGZvciBLIG5hbWUgY29tcHJlc3Npb24gYW5kIGRvbid0Cgl1c2UgREVDTF9BU1NFTUJMRVJfTkFNRSB3aGVuIHNxdWFuZ2xpbmcgaXMgb24uCgkoY2hlY2tfYnR5cGUpOiBOZXcgZnVuY3Rpb24sIGNoZWNrcyBmb3IgQiB0eXBlIGNvbXByZXNzaW9uLgoJKGJ1aWxkX3N0YXRpY19uYW1lLCBidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBJbml0aWF0ZSBzcXVhbmdsaW5nLgoJKGJ1aWxkX3R5cGVuYW1lX292ZXJsb2FkLCBidWlsZF9vdmVybG9hZF93aXRoX3R5cGUpOiBJbml0aWF0ZQoJc3F1YW5nbGluZwoKU3VuIEZlYiAgOCAyMzo0NzozOCAxOTk4ICBzY290dCBzbnlkZXIgIDxzc3NAZDBsaW51eDAxLmZuYWwuZ292PgoKCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBBdm9pZCBuYW1lIGJ1ZmZlciBvdmVyZmxvdy4KClNhdCBGZWIgIDcgMTY6NDg6NTQgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IENhbGwgY3BfZmluaXNoX2RlY2wgZm9yIHZhcnMgZXZlbiBpZiB3ZQoJZG9uJ3QgZGVmaW5lIHRoZW0geWV0LgoKCSogcGFyc2UueSAobm9tb2RzX2luaXRkY2wwKTogQWRkIGNvbnN0cnVjdG9yX2RlY2xhcmF0b3IgY2FzZS4KCkZyaSBGZWIgIDYgMjE6MzI6MjUgMTk5OCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNvbmZpZy1sYW5nLmluIChkaWZmX2V4Y2x1ZGVzKTogVXNlIGJhc2VuYW1lIG9ubHkuCgpUaHUgRmViICA1IDE5OjEwOjQwIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRpbmZvMi5jYzogQWRkIHRpbmZvIGZvciBzaWduZWQgY2hhci4KClRodSBGZWIgIDUgMTQ6Mzg6MjMgMTk5OCAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogc2VhcmNoLmMgKGNvbXB1dGVfYWNjZXNzKTogSGFuZGxlIHByb3RlY3RlZCBjb25zdHJ1Y3RvcnMgaW4gZGVyaXZlZAoJY2xhc3NlcyBhcyBhY2Nlc3NpYmxlLgoKV2VkIEZlYiAgNCAwMToyNjo0OSAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByLCBQQ0NfU1RBVElDX1NUUlVDVF9SRVRVUk4gY29kZSk6CglDYWxsIGNvbnZlcnRfZnJvbV9yZWZlcmVuY2Ugc29vbmVyLgoKVHVlIEZlYiAgMyAyMzo1MDo1MiAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjdnQuYyAob2NwX2NvbnZlcnQpOiBPYnRhaW4gdGhlIGNvbnN0YW50IHZhbHVlcyBmcm9tIGNvbnN0YW50CglkZWNscyBldmVuIGlmIHRoZSBkZXN0aW5hdGlvbiB0eXBlIGlzIHRoZSBzYW1lIGFzIHRoZSB0eXBlIG9mIHRoZQoJZGVjbC4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogTWFrZSBzdXJlIHRoYXQgc3RhdGljIGlubGluZXMgd2l0aAoJZGVmaW5pdGlvbnMgYXJlIG5vdCBtYXJrZWQgREVDTF9FWFRFUk5BTCBiZWZvcmUgcmV0dXJuaW5nLgoKVHVlIEZlYiAgMyAyMjo0Mzo0MiAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmM6IExvc2UgYXJnX2xvb2tpbmdfZm9yX3RlbXBsYXRlLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBMaWtld2lzZS4KCSogcGFyc2UueTogTG9zZSBwcm9jZXNzaW5nX3RlbXBsYXRlX2FyZywgdGVtcGxhdGVfYXJnMS4KCShwcmltYXJ5KTogTGlrZXdpc2UuCgkqIHNwZXcuYyAoeXlsZXgpOiBTZXQgbGFzdGlkZGVjbCBmb3IgUFRZUEVOQU1FcywgdG9vLgoKVHVlIEZlYiAgMyAyMjowNDowMSAxOTk4ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHNjZi51c2MuZWR1PgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogRml4IHR5cGUgb2YgZGVmYXVsdCBhcmd1bWVudHMgZm9yIHRlbXBsYXRlCgl0ZW1wbGF0ZSBwYXJhbWV0ZXJzIGFuZCBub250eXBlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkqIHBhcnNlLnkgKHRlbXBsYXRlX3Bhcm0pOiBIYW5kbGUgaW52YWxpZCBkZWZhdWx0IHRlbXBsYXRlCgl0ZW1wbGF0ZSBhcmd1bWVudHMgaGVyZS4KCgkqIHBhcnNlLnkgKHRlbXBsYXRlX3Bhcm0pOiBVc2UgdGVtcGxhdGVfYXJnIGluc3RlYWQgb2YgUFRZUEVOQU1FCglmb3IgZGVmYXVsdCB0ZW1wbGF0ZSB0ZW1wbGF0ZSBhcmd1bWVudC4KCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogTWVyZ2UgZGVmYXVsdCB0ZW1wbGF0ZSBhcmd1bWVudAoJY29kZXMuICBDYW4gdHJlYXQgUkVDT1JEX1RZUEUgYXMgdGVtcGxhdGUgbmFtZSBpZiBpdCBpcyBpbXBsaWNpdGx5CgljcmVhdGVkLiAgRml4IGFyZ3VtZW50IGluZGV4IGluIGVycm9yIG1lc3NhZ2UuCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBNZXJnZSB0ZW1wbGF0ZSBhcmd1bWVudCBjb21wYXJpc29uIGNvZGVzIGluCglURU1QTEFURV9URU1QTEFURV9QQVJNIGFuZCBSRUNPUkRfVFlQRS4KClR1ZSBKYW4gIDYgMDE6NDI6NDQgMTk5OCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBsZXguYyAoZmlsZV9uYW1lX25vbmRpcmVjdG9yeSk6IEFsc28gY2hlY2sgZm9yICcvJy4KCk1vbiBGZWIgIDIgMTE6MjQ6MjIgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcGFyc2UueSAocHJpbWFyeSk6IERlYWwgd2l0aCBzdGF0ZW1lbnQtZXhwcmVzc2lvbnMgaW4KCXRlbXBsYXRlcy4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBIYW5kbGUgQklORF9FWFBSLgoJKiB0cmVlLmMgKG1hcGNhcik6IExpa2V3aXNlLgoKCSogY2FsbC5jIChhZGRfdGVtcGxhdGVfY2FuZGlkYXRlX3JlYWwpOiBQYXNzIGV4dHJhIHBhcmFtZXRlciB0bwoJZm5fdHlwZV91bmlmaWNhdGlvbi4KCSogY3AtdHJlZS5oIChmbl90eXBlX3VuaWZpY2F0aW9uKTogQWRkIHBhcmFtZXRlci4KCSogcHQuYyAoZm5fdHlwZV91bmlmaWNhdGlvbik6IEFkZCBhZGRpdGlvbmFsIHBhcmFtZXRlciB0byBkZWFsIHdpdGgKCXN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zLgoJKGdldF9iaW5kaW5ncyk6IERlYWwgd2l0aCBzdGF0aWMgbWVtYmVyIGZ1bmN0aW9ucy4KCgkqIGNwLXRyZWUuaCAoREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1ApOiBOZXcgbWFjcm8uCgkocmV2ZXJ0X3N0YXRpY19tZW1iZXJfZm4pOiBEZWNsYXJlLgoJKiBkZWNsLmMgKHJldmVydF9zdGF0aWNfbWVtYmVyX2ZuKTogUmVtb3ZlIGRlY2xhcmF0aW9uLiAgQ2hhbmdlCglsaW5rYWdlIGZyb20gaW50ZXJuYWwgdG8gZXh0ZXJuYWwuCgkoY3BfZmluaXNoX2RlY2wpOiBEZWFsIHdpdGggdmlydHVhbCBmdW5jdGlvbnMgaW4gY2xhc3NlcyBsb2NhbCB0bwoJdGVtcGxhdGUgZnVuY3Rpb25zLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IERvbid0IGZvcmdldCB0byBlbWl0IGluY3JlbWVudC9kZWNyZW1lbnQKCWV4cHJlc3Npb25zIGluIGluaXRpYWxpemVycyBmb3IgZmlsZS1zY29wZSB2YXJpYWJsZXMuCgkqIHBhcnNlLnkgKHR5cGVuYW1lX3N1YjIpOiBJZiB0aGUgdHlwZW5hbWUgZG9lc24ndCBuYW1lcyBhCgl0ZW1wbGF0ZSwgcmF0aGVyIHRoYW4gYSB0eXBlLCBpc3N1ZSBhbiBlcnJvciBtZXNzYWdlLgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEhhbmRsZSBzcGVjaWFsaXphdGlvbnMgb2YKCXN0YXRpYyBtZW1iZXIgZnVuY3Rpb25zLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEhhbmRsZSBvZmZzZXQgcmVmZXJlbmNlcyB0byBsaXN0cyBvZgoJbWVtYmVyIGZ1bmN0aW9ucy4KCSogc2VhcmNoLmMgKG5vdGVfZGVidWdfaW5mb19uZWVkZWQpOiBEb24ndCBjcmFzaCB3aGVuIGhhbmRlZCBhCgl0eXBlIHdoaWNoIGlzIGJlaW5nIGRlZmluZWQuCgkqIHR5cGVjay5jIChjb21wbGV0ZV90eXBlKTogRG9uJ3QgY3Jhc2ggd2hlbiBoYW5kZWQgTlVMTF9UUkVFOwoJdGhhdCBjYW4gaGFwcGVuIHdpdGggc29tZSBpbGxlZ2FsIGNvZGUuCgpNb24gRmViICAyIDAwOjU3OjM4IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNhbGwuYyAodXNlcl9oYXJzaG5lc3MpOiBJbml0aWFsaXplIGBjb2RlJyB0byAwLgoJKGJ1aWxkX21ldGhvZF9jYWxsKTogSW5pdGlhbGl6ZSBgY2FuZGlkYXRlcycsIGBjcCcgYW5kIGBsZW4nIHRvIDAuCgkobnVsbF9wdHJfY3N0X3ApOiBBZGQgcGFyZW50aGVzZXMgYXJvdW5kICYmIHdpdGhpbiB8fC4KCShzdGFuZGFyZF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoel9jYW5kaWRhdGUpOiBMaWtld2lzZS4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSW5pdGlhbGl6ZSBgYXJncycgdG8gTlVMTF9UUkVFLgoJKGJ1aWxkX29iamVjdF9jYWxsKTogTGlrZXdpc2UgZm9yIGBtZW1fYXJncycuCgkoYnVpbGRfbmV3X29wKTogTGlrZXdpc2UgZm9yIGBtZW1fYXJnbGlzdCcuICBBZGQgYHJldHVybicgZnJvbQoJZGVmYXVsdCBjYXNlIGluIGVudW1lcmF0aW9uIHN3aXRjaC4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeSk6IEFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQKCWFtYmlndW91cyBgZWxzZScuCgkoYnVpbGRfY2xhc3NfaW5pdF9saXN0KTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogSW5pdGlhbGl6ZSBgd2lkdGgnIHRvIDAuCgkoaW5zdGFudGlhdGVfdHlwZSk6IEluaXRpYWxpemUgYG5hbWUnIHRvIE5VTExfVFJFRS4gIEFkZAoJZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyBgZWxzZScuCgoJKiBjdnQuYyAoY29udmVydF90b19hZ2dyKTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMKCWBlbHNlJy4KCgkqIGRlY2wuYyAoZ3Jva19yZWZlcmVuY2VfaW5pdCk6IEVsaW1pbmF0ZSB1bnVzZWQgcGFyYW1ldGVyLCBhbGwKCWNhbGxlcnMgY2hhbmdlZC4KCShyZWNvcmRfYnVpbHRpbl90eXBlKTogSW5pdGlhbGl6ZSBgdGRlY2wnIHRvIE5VTExfVFJFRS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgYHZiX29mZl9pZGVudGlmaWVyJyB0byBOVUxMX1RSRUUuCgkoY3BfZmluaXNoX2RlY2wpOiBJbml0aWFsaXplIGB0dHlwZScgdG8gTlVMTF9UUkVFLgoJKGdyb2tkZWNsYXJhdG9yKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCAmJiB3aXRoaW4gfHwuICBBZGQKCWV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMgYGVsc2UnLgoJKGdyb2twYXJtcyk6IEluaXRpYWxpemUgYHR5cGUnIHRvIE5VTExfVFJFRS4KCSh4cmVmX3RhZyk6IFJlbW92ZSB1bnVzZWQgbGFiZWwgYGp1c3RfcmV0dXJuJy4KCShmaW5pc2hfZW51bSk6IEluaXRpYWxpemUgYG1pbm5vZGUnIGFuZCBgbWF4bm9kZScgdG8gTlVMTF9UUkVFLgoJKGZpbmlzaF9mdW5jdGlvbik6IEluaXRpYWxpemUgYGNvbmQnIGFuZCBgdGhlbmNsYXVzZScgdG8gTlVMTF9UUkVFLgoJKGhhY2tfaW5jb21wbGV0ZV9zdHJ1Y3R1cmVzKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCBhc3NpZ25tZW50Cgl1c2VkIGFzIHRydXRoIHZhbHVlLgoKCSogZGVjbDIuYyAoY29lcmNlX2RlbGV0ZV90eXBlKTogSGlkZSBkZWZpbml0aW9uIG9mIGBlMycuCgoJKiBlcnJvci5jOiBJbmNsdWRlIDxzdGRsaWIuaD4uCgkoZHVtcF9leHByKTogQ2hhbmdlIHRoZSB0eXBlIG9mIGBpJyB0byBzaXplX3QuICBSZW1vdmUgdW51c2VkCglsYWJlbCBgZXJyb3InLgoKCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBkJy4KCShleHBhbmRfdGhyb3cpOiBMaWtld2lzZSBmb3IgYGxhYmVsJy4KCgkqIGZyaWVuZC5jIChhZGRfZnJpZW5kcyk6IEFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQgYW1iaWd1b3VzCglgZWxzZScuCgoJKiBpbml0LmMgKHNvcnRfbWVtYmVyX2luaXQpOiBJbml0aWFsaXplIGBsYXN0X2ZpZWxkJyB0byBOVUxMX1RSRUUuCgkoc29ydF9iYXNlX2luaXQpOiBMaWtld2lzZSBmb3IgYGJpbmZvJy4KCShleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZSBmb3IgYHJ2YWwnLgoJKGJ1aWxkX21lbWJlcl9jYWxsKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCBhc3NpZ25tZW50IHVzZWQgYXMKCXRydXRoIHZhbHVlLgoJKGJ1aWxkX29mZnNldF9yZWYpOiBBZGQgZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyBgZWxzZScuCgkoYnVpbGRfbmV3KTogSW5pdGlhbGl6ZSBgbmVsdHMnIHRvIE5VTExfVFJFRS4gIEluaXRpYWxpemUKCWBvbGRfaW1tZWRpYXRlX3NpemVfZXhwYW5kJyB0byAwLgoJKGJ1aWxkX25ld18xKTogSW5pdGlhbGl6ZSBgbmVsdHMnIGFuZCBgYWxsb2Nfbm9kZScgdG8gTlVMTF9UUkVFLgoJKGJ1aWxkX3ZlY19kZWxldGVfMSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGJsb2NrJy4KCShleHBhbmRfdmVjX2luaXQpOiBJbml0aWFsaXplIGBpdHlwZScgdG8gTlVMTF9UUkVFLgoKCSogbGV4LmM6IEluY2x1ZGUgPHN0cmluZ3MuaD4gaWYgd2UgZG9uJ3QgaGF2ZSA8c3RyaW5nLmg+LiAgUHJvdGVjdAoJZGVjbGFyYXRpb24gb2YgYGluZGV4JyBhbmQgYHJpbmRleCcgd2l0aCBhdXRvY29uZiBtYWNyb3MuCgkocmVpbml0X3BhcnNlX2Zvcl9leHByKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKCWBsb29rX2Zvcl9zZW1pY29sb24nIGFuZCBgbG9va19mb3JfbGJyYWMnLgoJKGNvbnNfdXBfZGVmYXVsdF9mdW5jdGlvbik6IEluaXRpYWxpemUgYGFyZ3MnIHRvIE5VTExfVFJFRS4KCShyZWFkZXNjYXBlKTogSW5pdGlhbGl6ZSBgZmlyc3RkaWcnIHRvIDAuCgkocmVhbF95eWxleCk6IEFkZCBwYXJlbnRoZXNlcyBhcm91bmQgYXNzaWdubWVudCB1c2VkIGFzIHRydXRoIHZhbHVlLgoKCSogbWV0aG9kLmM6IEluY2x1ZGUgPHN0cmluZ3MuaD4gaWYgd2UgZG9uJ3QgaGF2ZSA8c3RyaW5nLmg+LgoJUHJvdGVjdCBkZWNsYXJhdGlvbiBvZiBgaW5kZXgnIHdpdGggYXV0b2NvbmYgbWFjcm8uCgoJKiBwYXJzZS55IChwcmltYXJ5KTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZCBhbWJpZ3VvdXMgYGVsc2UnLgoJSW5pdGlhbGl6ZSBgdHlwZScgdG8gTlVMTF9UUkVFLgoJKHN0cnVjdHNwKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgaWQnLgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQWRkIGV4cGxpY2l0IGJyYWNlcyB0byBhdm9pZAoJYW1iaWd1b3VzIGBlbHNlJy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBJbml0aWFsaXplIGB0ZW1wbGF0ZScgdG8gTlVMTF9UUkVFLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgbmFtZScgYW5kIGBlJy4KCSh0c3Vic3QpOiBMaWtld2lzZSBmb3IgYGknLiAgSW5pdGlhbGl6ZSBgbGFzdCcgdG8gTlVMTF9UUkVFLgoJKGRvX3BvcGxldmVsKTogSW5pdGlhbGl6ZSBgc2F2ZWRfd2Fybl91bnVzZWQnIHRvIDAuCgkodHlwZV91bmlmaWNhdGlvbik6IFJlbW92ZSB1bnVzZWQgdmFyYWJsZSBgcGFybScuCgkodW5pZnkpOiBMaWtld2lzZSBmb3IgYGonLgoKCSogcmVwby5jIChpbml0X3JlcG8pOiBBZGQgcGFyZW50aGVzZXMgYXJvdW5kIGFzc2lnbm1lbnQgdXNlZCBhcwoJdHJ1dGggdmFsdWUuCgkoZmluaXNoX3JlcG8pOiBSZW1vdmUgdW51c2VkIHZhcmFibGUgYHAnLgoKCSogc2VhcmNoLmMgKGdldF9iaW5mbyk6IEluaXRpYWxpemUgYHR5cGUnIHRvIE5VTExfVFJFRS4KCShnZXRfYmFzZV9kaXN0YW5jZSk6IExpa2V3aXNlLgoJKGxvb2t1cF9maWVsZCk6IEluaXRpYWxpemUgYHJ2YWxfYmluZm9faCcsIGB0eXBlJywgYGJhc2V0eXBlX3BhdGgnCglhbmQgYG5ld192JyB0byBOVUxMX1RSRUUuCgkobG9va3VwX2ZuZmllbGRzKTogTGlrZXdpc2UgZm9yIGBydmFsX2JpbmZvX2gnLgoJKGJyZWFkdGhfZmlyc3Rfc2VhcmNoKTogQWRkIHBhcmVudGhlc2VzIGFyb3VuZCBhc3NpZ25tZW50IHVzZWQgYXMKCXRydXRoIHZhbHVlLgoJKGdldF90ZW1wbGF0ZV9iYXNlKTogSW5pdGlhbGl6ZSBgdHlwZScgdG8gTlVMTF9UUkVFLgoKCSogc2lnLmMgKGFwcGVuZF9zaWduYXR1cmVfZmllbGRzKTogSW5pdGlhbGl6ZSBgbGFzdF9tZnB0cicgdG8KCU5VTExfVFJFRS4KCShidWlsZF9zaWduYXR1cmVfdGFibGVfY29uc3RydWN0b3IpOiBMaWtld2lzZSBmb3IKCWBsYXN0X3Joc19maWVsZCcsIGBwZm4nIGFuZCBgdnRfb2ZmJy4KCShidWlsZF9zaWd0YWJsZSk6IExpa2V3aXNlIGZvciBgaW5pdCcuCgoJKiB0cmVlLmMgKGJyZWFrX291dF9jYWxscyk6IEluaXRpYWxpemUgYHQyJyB0byBOVUxMX1RSRUUuCgkocHJvcGFnYXRlX2JpbmZvX29mZnNldHMpOiBMaWtld2lzZSBmb3IgYGRlbHRhJy4KCShoYXNoX3RyZWVfY29ucyk6IEluaXRpYWxpemUgaGFzaGNvZGUgdG8gMC4KCShjYW5fZnJlZSk6IExpa2V3aXNlIGZvciBgc2l6ZScuCgkoY3BfdHJlZV9lcXVhbCk6IEFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQgYW1iaWd1b3VzIGBlbHNlJy4KCgkqIHR5cGVjay5jIChjb252ZXJ0X3NlcXVlbmNlKTogSGlkZSBwcm90b3R5cGUuCgkoY29tbW9uX3R5cGUpOiBBZGQgZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyBgZWxzZScuCgkoY29tcF90YXJnZXRfdHlwZXMpOiBMaWtld2lzZS4KCShidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBJbml0aWFsaXplIGBjdHlwZXB0cicgdG8gTlVMTF9UUkVFLgoJKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IEFkZCBleHBsaWNpdCBicmFjZXMgdG8gYXZvaWQgYW1iaWd1b3VzCglgZWxzZScuCgkoY29udmVydF9hcmd1bWVudHMpOiBJbml0aWFsaXplIGBjYWxsZWRfdGhpbmcnIHRvIDAuCgkoY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiBJbml0aWFsaXplIGBzYXZldycgYW5kIGBzYXZlZScgdG8gMC4KCgkqIHR5cGVjazIuYyAoaW5jb21wbGV0ZV90eXBlX2Vycm9yKTogSW5pdGlhbGl6ZSBgZXJybXNnJyB0byAwLgoJKGRpZ2VzdF9pbml0KTogSW5pdGlhbGl6ZSBgb2xkX3RhaWxfY29udGVudHMnIHRvIE5VTExfVFJFRS4KCShidWlsZF94X2Fycm93KTogTGlrZXdpc2UgZm9yIGBsYXN0X3J2YWwnLgoKCSogeHJlZi5jIChHTlVfeHJlZl9kZWNsKTogSW5pdGlhbGl6ZSBgY2xzJyB0byAwLgoKU3VuIEZlYiAgMSAxMjo0NTozNCAxOTk4ICBKIm9ybiBSZW5uZWNrZSAgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBzZXRfc2l6ZXR5cGUuCgkqIGRlY2wyLmMgKHNpemV0eXBlKTogRG9uJ3QgZGVjbGFyZS4KCSogdHlwZWNrLmMgKGNfc2l6ZW9mKTogQ29udmVydCByZXN1bHQgb2YgKl9ESVZfRVhQUiB0byBzaXpldHlwZS4KCShjX3NpemVvZl9ub3dhcm4sIGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBMaWtld2lzZS4KCShidWlsZF9jb21wb25lbnRfYWRkciwgdW5hcnlfY29tcGxleF9sdmFsdWUpOiBMaWtld2lzZS4KCSogcnR0aS5jIChleHBhbmRfY2xhc3NfZGVzYyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChnZXRfdmZpZWxkX29mZnNldCk6IExpa2V3aXNlLgoKVGh1IEphbiAyOSAxMDozOTozMCAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBNb3ZlIGNoZWNrIGZvciBpc19vdmVybG9hZGVkX2ZuCgllYXJseSB0byBhdm9pZCBib2d1cyBlcnJvci4gIEhhbmRsZSBvdmVybG9hZGVkIGZ1bmN0aW9uCgluYW1lcyBwcm92aWRlZCBhcyB0ZW1wbGF0ZSBhcmd1bWVudHMgY29ycmVjdGx5LgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IERvbid0IG1pc2hhbmRsZSBvdmVybG9hZGVkIGZ1bmN0aW9ucyB3aGVuCglkZWFsaW5nIHdpdGggdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVycy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBJc3N1ZSBhbiBlcnJvciBtZXNzYWdlLCByYXRoZXIgdGhhbgoJY3Jhc2hpbmcsIHdoZW4gdGhlIFRZUEVfREVDTCBwcm92aWRlZCBpcyBub3QgYSB0ZW1wbGF0ZSB0eXBlLgoKV2VkIEphbiAyOCAyMzoxNDo0NCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogRG9uJ3QganVzdCByZXR1cm4gYSBrbm93biB0eXBlIGlmCglpdCdzIHdyb25nLgoKV2VkIEphbiAyOCAxMTowNDowNyAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogUmVtb3ZlIGhhbmRsaW5nIG9mIEZVTkNUSU9OX0RFQ0wKCXNpbmNlIHRoYXQgY29kZSBjb3VsZCBuZXZlciBiZSByZWFjaGVkLgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogQXZvaWQgYWJvcnRpbmcgaW4gdGhlIG1pZHN0IG9mIHByaW50aW5nIGFuCgllcnJvciBtZXNzYWdlIGFib3V0IGFuIGlsbGVnYWwgdGVtcGxhdGUgZGVjbGFyYXRpb24uCgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IFByaW50IGFuIGVycm9yIG1lc3NhZ2UsIHJhdGhlciB0aGFuIGNyYXNoaW5nLAoJd2hlbiBhIGNsYXNzLWhlYWQgZG9lcyBub3QgbmFtZSBhIGNsYXNzLgoKCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogIEFsbG93IFJFQUxfVFlQRSBhbmQgQ09NUExFWF9UWVBFCgl0ZW1wbGF0ZSBhcmd1bWVudHMgYXMgYSBnKysgZXh0ZW5zaW9uLgoKCSogY3AtdHJlZS5kZWYgKEFMSUdOT0ZfRVhQUik6IE5ldyB0cmVlIGNvZGUuCgkqIGRlY2wyLmMgKGdyb2tfYWxpZ25vZik6IElmIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCwganVzdCBzdG9yZQoJdGhlIGV4cHJlc3Npb24uCgkqIHR5cGVjay5jIChjX2FsaWdub2YpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBIYW5kbGUgQUxJR05PRl9FWFBSLgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCSogdHJlZS5jIChjcF90cmVlX2VxdWFsKTogTGlrZXdpc2UuCgkqIHB0LmMgKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBDb3JyZWN0bHkgZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IGEKCVNJWkVPRl9FWFBSL0FMSUdOT0ZfRVhQUiB1c2VzIHRlbXBsYXRlIHBhcmFtZXRlcnMgc28gdGhhdCBjb25zdGFudAoJZm9sZGluZyBjYW4gYmUgZG9uZS4KCgkqIGNwLXRyZWUuaCAoZ3Jva19lbnVtX2RlY2xzKTogUmVtb3ZlIHR5cGUgcGFyYW1ldGVyLgoJKiBkZWNsLmMgKGdyb2tfZW51bV9kZWNscyk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChncm9rX3hfY29tcG9uZW50cyk6IENhbGwgZ3Jva19lbnVtX2RlY2xzCgl1bmNvbmRpdGlvbmFsbHksIHNpbmNlIGl0IHdpbGwgZG8gbm90aGluZyBpZiB0aGVyZSBpcyBubwoJY3VycmVudF9sb2NhbF9lbnVtLiAgVXNlIHRoZSBuZXcgY2FsbGluZyBzZXF1ZW5jZS4KCSogcHQuYyAodHN1YnN0X2VudW0pOiBVc2UgdGhlIG5ldyBjYWxsaW5nIHNlcXVlbmNlIGZvcgoJZ3Jva19lbnVtX2RlY2xzLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IE1ha2UgbWVtYmVyIGZ1bmN0aW9ucyBvZiBsb2NhbCBjbGFzc2VzCglpbiBleHRlcm4gaW5saW5lIGZ1bmN0aW9ucyBoYXZlIGNvbWRhdCBsaW5rYWdlIGhlcmUuLi4KCShncm9rZGVjbGFyYXRvcik6IFJhdGhlciB0aGFuIGhlcmUuCgpXZWQgSmFuIDI4IDEwOjU1OjQ3IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFVzZSBkZWNsX2NvbnN0YW50X3ZhbHVlLgoKVHVlIEphbiAyNyAxNjo0MjoyMSAxOTk4ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjYWxsLmMgKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGVfcmVhbCk6IE5ldyBmdW5jdGlvbi4KCShhZGRfdGVtcGxhdGVfY2FuZGlkYXRlKTogVXNlIGl0LgoJKGFkZF90ZW1wbGF0ZV9jb252X2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKGpvdXN0KTogUGFzcyBleHRyYSBhcmd1bWVudCB0byBtb3JlX3NwZWNpYWxpemVkLgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogSGFuZGxlIGEgc2luZ2xlIEZVTkNUSU9OX0RFQ0wuCgkoaXNfbG9jYWxfY2xhc3MpOiBSZW1vdmUuCgkoZmluaXNoX3N0cnVjdCk6IENoZWNrIFRJX1BFTkRJTkdfU1BFQ0lBTElaQVRJT05fRkxBRy4KCSogY3AtdHJlZS5oIChpc19sb2NhbF9jbGFzcyk6IFJlbW92ZS4KCShwZXJmb3JtX2FycmF5X3RvX3BvaW50ZXJfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9tZW1iZXJfdGVtcGxhdGVfZGVjbCk6IEFkZC4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFJldHVybiBhIHRyZWUsIG5vdCBhbiBpbnQuCgkobW9yZV9zcGVjaWFsaXplZCk6IFRha2UgYWRkaXRpb25hbCBhcmd1bWVudC4KCShnZXRfYmluZGluZ3MpOiBMaWtld2lzZS4KCShUSV9QRU5ESU5HX1NQRUNJQUxJWkFUSU9OX0ZMQUcpOiBOZXcgbWFjcm8uCgkqIGN2dC5jIChwZXJmb3JtX3F1YWxpZmljYXRpb25fY29udmVyc2lvbnMpOiBVc2UgY29tcF9wdHJfdHR5cGVzLgoJKHBlcmZvcm1fYXJyYXlfdG9fcG9pbnRlcl9jb252ZXJzaW9uKTogUmVtb3ZlLgoJKiBkZWNsLmMgKHNhdmVkX3Njb3BlKTogQWRkIHByb2Nlc3Npbmdfc3BlY2lhbGl6YXRpb24sCglwcm9jZXNzaW5nX2V4cGxpY2l0X2luc3RhbnRpYXRpb24gZmllbGRzLgoJKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogU2F2ZSB0aGVtLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFJlc3RvcmUgdGhlbS4KCShncm9rZm5kZWNsKTogVXNlIG5ldyByZXR1cm4gdmFsdWUgZnJvbQoJY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24uCgkoc3RhcnRfZGVjbCk6IERvbid0IGNoZWNrIGZsYWdfZ3VpZGluZ19kZWNscyBiZWZvcmUgcHVzaGluZwoJZGVjbHMuCgkoY3BfZmluaXNoX2RlY2wpOiBSZW1vdmUgcHJldmlvdXMgKGJvZ3VzKSBjaGFuZ2UuCgkoZ3Jva19kZWNsYXJhdG9yKTogVXNlIGRlY2xfZnVuY3Rpb25fY29udGV4dCByYXRoZXIgdGhhbgoJaXNfbG9jYWxfY2xhc3MuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogUGFzcyBleHRyYSBhcmd1bWVudCB0byBnZXRfYmluZGluZ3MuCgkoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBMZXQgYnVpbGRfeF9jb21wb25lbnRfcmVmIGNoZWNrCgl2YWxpZGl0eSBvZiBhcmd1bWVudHMgcmF0aGVyIHRoYW4gZG9pbmcgaXQgaGVyZS4KCSogbGV4LmMgKGNvbnNfdXBfZGVmYXVsdF9mdW5jdGlvbik6IFJlbW92ZSBjb2RlIGZvb2xpbmcgd2l0aAoJcHJvY2Vzc2luZ19zcGVjaWFsaXphdGlvbiwgcHJvY2Vzc2luZ19leHBsaWNpdF9pbnN0YW50aWF0aW9uCglmbGFncywgYXMgdGhhdCBpcyBub3cgZG9uZSBpbiB7bWF5YmVfcHVzaF90b3AscG9wX2Zyb219X3RvcF9sZXZlbC4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBNYW5nbGUgbG9jYWwgY2xhc3NlcyBpbgoJdGVtcGxhdGUgZnVuY3Rpb25zIGNvcnJlY3RseS4KCSogcGFyc2UueSAoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogTW92ZSB0byBwdC5jLgoJKiBwdC5jIChmaW5pc2hfbWVtYmVyX3RlbXBsYXRlX2RlY2wpOiBNb3ZlZCBoZXJlIGZyb20gcGFyc2UueS4KCShwcmludF9jYW5kaWRhdGVzKTogTmV3IGZ1bmN0aW9uLgoJKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IENoYW5nZSBpbnRlcmZhY2UuICBQcm9wZXJseSBsb29rIGZvcgoJbW9zdCBzcGVjaWFsaXplZCB2ZXJzaW9ucyBvZiB0ZW1wbGF0ZSBjYW5kaWRhdGVzLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRnVsbHkgcHJvY2VzcyBleHBsaWNpdAoJaW5zdGFudGlhdGlvbnMuCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogQXZvaWQgbG9va2luZyBhdCBDTEFTU1RZUEUgZmllbGRzIGluCglGVU5DVElPTl9ERUNMUy4KCShkZXRlcm1pbmVfb3ZlcmxvYWRlZF9mdW5jdGlvbik6IFJlbW92ZS4KCShjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBDaGFuZ2UgbmFtZSBmcm9tCgljb252ZXJ0X25vbnR5cGVfcGFyYW1ldGVyLiAgVXNlIGRldGVybWluZV9vdmVybG9hZGVkX2Z1bmN0aW9uCglpbnN0ZWFkIG9mIGluc3RhbnRpYXRlX3R5cGUuCgkobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogSGFuZGxlIHR5cGUgY29udGV4dHMgYXMgd2VsbCBhcwoJZnVuY3Rpb24gY29udGV4dHMuCgkoY2xhc3N0eXBlX21hbmdsZWRfbmFtZSk6IExpa2V3aXNlLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IExpa2V3aXNlLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoJKG1vcmVfc3BlY2lhbGl6ZWQpOiBUYWtlIGV4cGxpY3QgdGVtcGxhdGUgYXJndW1lbnRzIGFzIGEKCXBhcmFtZXRlci4KCShtb3N0X3NwZWNpYWxpemVkKTogTGlrZXdpc2UuCgkoZ2V0X2JpbmRpbmdzKTogTGlrZXdpc2UuICBDaGVjayB0aGF0IHJldHVybiB0eXBlcyBtYXRjaCBiZWZvcmUKCXByb2NsYWltaW5nIGEgZnVuY3Rpb24gYSBtYXRjaC4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBSZW1vdmUgY29kZSBzZWFyY2hpbmcgZm9yIGZ1bmN0aW9uIHRvCglpbnN0YW50aWF0ZTsgdGhhdCBpcyBub3cgZG9uZSBpbiBjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbi4KCShhZGRfbWF5YmVfdGVtcGxhdGUpOiBQYXNzIGV4dHJhIGFyZ3VtZW50IHRvIGdldF9iaW5kaW5ncy4KCSogdHJlZS5jIChyZWFsbHlfb3ZlcmxvYWRlZF9mbik6IFVzZSBpc19vdmVybG9hZGVkX2ZuIHRvIHNpbXBsaWZ5CglpbXBsZW1lbnRhdGlvbi4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBDaGVjayBmb3IgaW52YWxpZCBhcmd1bWVudHMuCgpUdWUgSmFuIDI3IDAxOjQ0OjAyIDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIsIEFHR1JfSU5JVF9FWFBSKTogRG9uJ3QgY2hlY2sgdGhhdAoJcmV0dXJuX3RhcmdldCBhbmQgY2FsbF90YXJnZXQgYXJlIGVxdWl2YWxlbnQuCgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBKdXN0IGFjY2VwdCBmdW5jdGlvbiBwYXJtcyB0aGF0Cglkb24ndCB1c2UgYW55IHRlbXBsYXRlIHBhcm1zLgoKU3VuIEphbiAyNSAwMzozMDowMCAxOTk4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogV2hlbiBiYWlsaW5nIG9uIGEgY29tZGF0IHZhcmlhYmxlLCBhbHNvCgl1bnNldCBERUNMX05PVF9SRUFMTFlfRVhURVJOLgoKCSogcGFyc2UueSAodHlwZW5hbWVfc3ViKik6IEZpeCBzdGQ6Oi4KClNhdCBKYW4gMjQgMTI6MTM6NTQgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogRml4IHR5cGUgZGVmYXVsdCB0ZW1wbGF0ZSBhcmdzLgoJKGR1bXBfdHlwZSk6IEhhbmQgVEVNUExBVEVfREVDTCBvZmYgdG8gZHVtcF9kZWNsLgoKRnJpIEphbiAyMyAxODozNDozNyAxOTk4ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGxleC5jIChESVJfU0VQQVJBVE9SKTogRGVmaW5lIHRvIGJlICcvJyBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgoJKGZpbGVfbmFtZV9ub25kaXJlY3RvcnkpOiBVc2UuCgpXZWQgSmFuIDIxIDEwOjI5OjU3IDE5OTggIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAc2NmLnVzYy5lZHU+CgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBEb24ndCBhY2Nlc3MgZWxlbWVudHMgb2YgQVJHTElTVAoJdGhhdCBhcmUgbm90IHJlYWxseSBwcmVzZW50LiAgU3Vic3RpdHV0ZSBkZWZhdWx0IGFyZ3VtZW50cyBpbgoJdGVtcGxhdGUgdGVtcGxhdGUgYXJndW1lbnRzLiAgQ29ycmVjdGx5IGNvbnZlcnQgVEVNUExBVEVfREVDTCB0bwoJVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCShjb21wX3RlbXBsYXRlX2FyZ3MpOiBURU1QTEFURV9ERUNMIGFuZCBURU1QTEFURV9URU1QTEFURV9QQVJNCglhcmUgbm8gbG9uZ2VyIHRyZWF0ZWQgc3BlY2lhbGx5IGhlcmUuCgkqIHBhcnNlLnkgKHRlbXBsYXRlX3RlbXBsYXRlX3Bhcm0pOiBGaXggY29weSBlcnJvci4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFdhcm4gYWJvdXQgbWlzc2luZyBgdHlwZW5hbWUnIGZvciBuZXN0ZWQKCXR5cGUgY3JlYXRlZCBmcm9tIHRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkqIHBhcnNlLnkgKGJhZF9wYXJtKTogTGlrZXdpc2UKCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpOiBIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCShwdXNoX25lc3RlZF9jbGFzcyk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmRlZiAoVEVNUExBVEVfVEVNUExBVEVfUEFSTSk6IE5ldyB0cmVlIGNvZGUuCgkqIGNwLXRyZWUuaCAoREVDTF9URU1QTEFURV9URU1QTEFURV9QQVJNX1ApOiBOZXcgbWFjcm8uCgkoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogRGVjbGFyZS4KCSogZGVjbC5jIChhcmdfbG9va2luZ19mb3JfdGVtcGxhdGUpOiBOZXcgdmFyaWFibGUuCgkobG9va3VwX25hbWVfcmVhbCk6IEhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJVHJ5IHRvIHJldHVybiBURU1QTEFURV9ERUNMIG9yIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0KCW5vZGUgaWYgYXJnX2xvb2tpbmdfZm9yX3RlbXBsYXRlIGlzIG5vbnplcm8uCgkocHVzaGRlY2wpOiBIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCShncm9rX29wX3Byb3BlcnRpZXMsIHhyZWZfdGFnLCB4cmVmX2Jhc2V0eXBlcyk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogSGFuZGxlIFRFTVBMQVRFX0RFQ0wuCgkqIGRlY2wyLmMgKGNvbnN0cnVjdG9yX25hbWVfZnVsbCk6IEhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKiBlcnJvci5jIChkdW1wX3R5cGUpOiBBZGQgVEVNUExBVEVfREVDTCBhbmQgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCShkdW1wX3R5cGVfcHJlZml4LCBkdW1wX3R5cGVfc3VmZml4KTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkoZHVtcF9kZWNsKTogSGFuZGxlIHVubmFtZWQgdGVtcGxhdGUgdHlwZSBwYXJhbWV0ZXJzLgoJSGFuZGxlIHRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkoZHVtcF9mdW5jdGlvbl9uYW1lKTogSGFuZGxlIHRlbXBsYXRlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkqIGluaXQuYyAoaXNfYWdncl90eXBlZGVmLCBpc19hZ2dyX3R5cGUsIGdldF9hZ2dyX2Zyb21fdHlwZWRlZik6CglIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCSogbWV0aG9kLmMgKGJ1aWxkX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfdGVtcGxhdGVfcGFybV9uYW1lcyk6IEhhbmRsZSBURU1QTEFURV9ERUNMLgoJKGJ1aWxkX292ZXJsb2FkX25lc3RlZF9uYW1lLCBidWlsZF9vdmVybG9hZF9uYW1lKToKCUhhbmRsZSBURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKiBwYXJzZS55IChtYXliZV9pZGVudGlmaWVyKTogTmV3IG5vbnRlcm1pbmFsLgoJKHRlbXBsYXRlX3R5cGVfcGFybSk6IFVzZSBpdC4KCSh0ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtLCB0ZW1wbGF0ZV9hcmcxKTogTmV3IG5vbnRlcm1pbmFsLgoJKHRlbXBsYXRlX3Bhcm0pOiBBZGQgdGVtcGxhdGVfdGVtcGxhdGVfcGFybSBydWxlcy4KCSh0ZW1wbGF0ZV9hcmcpOiBTZXQgcHJvY2Vzc2luZ190ZW1wbGF0ZV9hcmcuCgkodGVtcGxhdGVfYXJnMSk6IFJ1bGVzIG1vdmVkIGZyb20gdGVtcGxhdGVfYXJnLgoJKHByaW1hcnksIG5vbm5lc3RlZF90eXBlKTogU2V0IGFyZ19sb29raW5nX2Zvcl90ZW1wbGF0ZSBpZiB3ZSBhcmUKCXByb2Nlc3NpbmcgdGVtcGxhdGUgYXJndW1lbnRzLgoJKiBwdC5jIChiZWdpbl9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IEhhbmRsZSBURU1QTEFURV9ERUNMLgoJKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IEhhbmRsZSB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcywgY29tcF90ZW1wbGF0ZV9hcmdzKTogTGlrZXdpc2UuCgkobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlLCBsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCSh1c2VzX3RlbXBsYXRlX3Bhcm1zKTogSGFuZGxlIFRFTVBMQVRFX0RFQ0wgYW5kCglURU1QTEFURV9URU1QTEFURV9QQVJNLgoJKGN1cnJlbnRfdGVtcGxhdGVfYXJncyk6IEhhbmRsZSBURU1QTEFURV9ERUNMLgoJKHRzdWJzdCwgdHN1YnN0X2NvcHksIHVuaWZ5KTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkqIHNlYXJjaC5jIChkZnNfd2FsaywgZGZzX3JlY29yZF9pbmhlcml0YW5jZSk6CglIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCSogdHJlZS5jIChjb3B5X3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm0pOiBOZXcgZnVuY3Rpb24uCgkobWFwY2FyKTogSGFuZGxlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBIYW5kbGUgVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCk1vbiBKYW4gMTkgMjI6NDA6MDMgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogRG9uJ3QgYWxsb3cgZHVwbGljYXRlIGRlZmluaXRpb25zIG9mIHN0YXRpYwoJZGF0YSBtZW1iZXJzLgoKCSogY2FsbC5jIChidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSGFuZGxlIHVzZXItZGVmaW5lZAoJdGVtcGxhdGUgY29udmVyc2lvbiBvcGVyYXRvcnMgY29ycmVjdGx5LgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBJc3N1ZSBhbiBlcnJvciBtZXNzYWdlIGlmIHRoZQoJb2JqZWN0IGluIGEgQ09NUE9ORU5UX1JFRiBpcyBhIFRFTVBMQVRFX0RFQ0wuCgoJKiB0eXBlY2suYyAoaW5jb21wbGV0ZV90eXBlX2Vycm9yKTogSGFuZGxlIFRFTVBMQVRFX1RZUEVfUEFSTXMuCgoJKiBjbGFzcy5jIChpc19sb2NhbF9jbGFzcyk6IE5ldyBmdW5jdGlvbi4KCSogY3AtdHJlZS5oIChpc19sb2NhbF9jbGFzcyk6IERlY2xhcmUgaXQuCgkobGFzdF90cmVlKTogTGlrZXdpc2UuCgkoYmVnaW5fdHJlZSk6IExpa2V3aXNlLgoJKGVuZF90cmVlKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IENoZWNrIGZvciBOVUxMIHdoZXJlIG5lY2Vzc2FyeS4KCUNvbnNpZGVyIEZVTkNUSU9OX0RFQ0xTIHRvIGRlY2xhcmUgb2JqZWN0cyB3aXRoIHRvcC1sZXZlbCBiaW5kaW5nLAoJd2hlbiBjYWxsaW5nIG1ha2VfZGVjbF9ydGwuCgkoZ3Jva2RlY2xhcmF0b3IpOiBHaXZlIG1lbWJlcnMgb2YgbG9jYWwgY2xhc3NlcyBpbnRlcm5hbCBsaW5rYWdlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogUmVtb3ZlIGRlY2xhcmF0aW9uIG9mIGxhc3RfdHJlZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBTZXQgZmxhZ19rZWVwX2lubGluZV9mdW5jdGlvbnMgYXJvdW5kIGNhbGwgdG8KCXJlc3Rfb2ZfY29tcGlsYXRpb24gaWYgd2UgYXJlIHByb2Nlc3NpbmcgYSBtZW1iZXIgZnVuY3Rpb24gaW4gYQoJbG9jYWwgY2xhc3MuCgkoc3RhcnRfbWV0aG9kKTogQ2FsbCBwdXNoX3RlbXBsYXRlX2RlY2wgZm9yIG1lbWJlciBmdW5jdGlvbnMgb2YKCWxvY2FsIGNsYXNzZXMgaW4gdGVtcGxhdGUgZnVuY3Rpb25zLgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBEb24ndCBnaXZlIGV4dGVybmFsIGxpbmthZ2UgdG8KCWluc3RhbnRpYXRpb25zIG9mIHRlbXBsYXRlcyB3aXRoIGludGVybmFsIGxpbmthZ2UuCgkqIHBhcnNlLnkgKGxhc3RfdHJlZSk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSh0ZW1wbGF0ZV90eXBlKTogUGFzcyBleHRyYSBwYXJhbWV0ZXIgdG8gbG9va3VwX3RlbXBsYXRlX2NsYXNzLgoJKHNlbGZfdGVtcGxhdGVfdHlwZSk6IExpa2V3aXNlLgoJKHN0cnVjdHNwKTogTW92ZSBjYWxsIHRvIHJlc2V0X3NwZWNpYWxpemF0aW9uIGludG8gbGVmdF9jdXJseS4KCShsZWZ0X2N1cmx5KTogQ2FsbCByZXNldF9zcGVjaWFsaXphdGlvbiwgYW5kIGJlZ2luX3RyZWUuCgkqIHB0LmMgKHNhdmVkX3RyZWVzKTogTmV3IHZhcmlhYmxlLgoJKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IENoYW5nZSBwcm90b3R5cGUuICBVc2UKCWFkZGl0aW9uYWwgZnVuY3Rpb24gY29udGV4dCB0byBuYW1lIGxvY2FsIGNsYXNzZXMgaW4gdGVtcGxhdGVzCgljb3JyZWN0bHkuCgkoY2xhc3N0eXBlX21hbmdsZWRfbmFtZSk6IFBhc3MgdGhlIGNvbnRleHQuCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogSGFuZGxlIGxvY2FsIGNsYXNzZXMgYW5kIHRlbXBsYXRlcywgYW5kCgltZW1iZXIgZnVuY3Rpb25zIGZvciBzdWNoIGNsYXNzZXMuCgkoY29udmVydF9ub250eXBlX3BhcmFtZXRlcik6IEZpeCBoYW5kbGluZyBvZiBwb2ludGVyLXRvLW1lbWJlcgoJY29uc3RhbnRzLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEhhbmRsZSBsb2NhbCBjbGFzc2VzIGluIHRlbXBsYXRlcy4KCSh0c3Vic3QpOiBMaWtld2lzZS4gIERvbid0IGFzc3VtZSB0aGF0IHRlbXBsYXRlIGluc3RhbnRpYXRpb25zCgloYXZlIGV4dGVybmFsIGxpbmthZ2U7IHBheSBhdHRlbnRpb24gdG8gdGhlIHRlbXBsYXRlIGRlY2xhcmF0aW9uLgoJKG1hcmtfZGVjbF9pbnN0YW50aWF0ZWQpOiBMaWtld2lzZS4KCShiZWdpbl90cmVlKTogTmV3IGZ1bmN0aW9uLgoJKGVuZF90cmVlKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKHhyZWZfYmFzZXR5cGVzKTogRG9uJ3QgY2FsbCBjb21wbGV0ZV90eXBlIGZvciBiYXNldHlwZXMKCXRoYXQgaW52b2x2ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzOyB0aGF0IGNhbiBsZWFkIHRvIGluZmluaXRlCglyZWN1cnNpb24gdW5uZWNlc3NhcmlseS4KCgkqIHB0LmMgKHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogRG8gbm90IHJlZ2lzdGVyIHNwZWNpYWxpemF0aW9ucwoJdGhhdCBhcmVuJ3QgcmVhZHkgdG8gYmUgcmVnaXN0ZXJlZCB5ZXQuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBIYW5kbGUgZXhwbGljaXQgc3BlY2lhbGl6YXRpb24gb2YKCWNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMuCgkoYnVpbGRfdGVtcGxhdGVfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX3RlbXBsYXRlX2RlbGMpOiBIYW5kbGUgb3V0LW9mLWNsYXNzIHNwZWNpYWxpemF0aW9ucyBvZgoJbWVtYmVyIHRlbXBsYXRlcy4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogU2V0IHVwIHRoZSB0ZW1wbGF0ZQoJaW5mb3JtYXRpb24gYmVmb3JlIHJlZ2lzdGVyaW5nIHRoZSBzcGVjaWFsaXphdGlvbi4KCShjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBGaXggdGhpbmtvLgoJKHRzdWJzdCk6IEhhbmRsZSBzcGVjaWFsaXphdGlvbnMgb2YgbWVtYmVyIHRlbXBsYXRlcyBjb3JyZWN0bHkuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBSZW1vdmUgY2FsbHMgdG8KCWNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uIGZyb20gaGVyZS4KCShmaW5pc2hfc3RydWN0KTogQW5kIGluc2VydCB0aGVtIGhlcmUuCgkqIGNwLXRyZWUuaCAocGVyZm9ybV9xdWFsaWZpY2F0aW9uX2NvbnZlcnNpb25zKTogTmV3IGZ1bmN0aW9uLgoJKHBlcmZvcm1fYXJyYXlfdG9fcG9pbnRlcl9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYmVnaW5fZXhwbGljaXRfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoJKGVuZF9leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogUmVuYW1lZCBmcm9tCglkZXRlcm1pbmVfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24uCgkoY29tcF90ZW1wbGF0ZV9wYXJtcyk6IE5ldyBmdW5jdGlvbi4KCShwcm9jZXNzaW5nX2V4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBOZXcgdmFyaWFibGUuCgkqIGN2dC5jIChwZXJmb3JtX3F1YWxpZmljYXRpb25fY29udmVyc2lvbnMpOiBOZXcgZnVuY3Rpb24uCgkocGVyZm9ybV9hcnJheV90b19wb2ludGVyX2NvbnZlcnNpb24pOiBMaWtld2lzZS4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBjb25zaWRlciB0ZW1wbGF0ZSBmdW5jdGlvbnMKCWFsaWtlIHVubGVzcyB0aGV5IGhhdmUgdGhlIHNhbWUgcGFyYW1ldGVycy4gIFJlZmluZSBoYW5kbGluZyBvZgoJaW5zdGFudGlhdGlvbi9zcGVjaWFsaXphdGlvbiBtaXNtYXRjaGVzLgoJKHN0YXJ0X2RlY2wpOiBEb24ndCBjYWxsIHB1c2hkZWNsIGZvciB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMsCglzaW5jZSB0aGV5IGRvbid0IGFmZmVjdCBvdmVybG9hZGluZy4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGdyb2tmbmRlY2wpOiBDYWxsIGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uIGEgbGl0dGxlIGxhdGVyLgoJRG9uJ3QgY2FsbCBkdXBsaWNhdGVfZGVjbHMgZm9yIG1lbWJlcm0gdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zLgoJKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgdXBkYXRlIHRlbXBsYXRlX2NvdW50IGZvciBjbGFzc2VzIHRoYXQgYXJlCgl0aGVtc2VsdmVzIHNwZWNpYWxpemF0aW9ucy4gIFJlbW92ZSB1c2Ugb2YgYDInIGFzIHBhcmFtZXRlciB0bwoJZ3Jva2ZuZGVjbCBzaW5jZSB0aGF0IHZhbHVlIGlzbid0IHVzZWQuCgkqIGxleC5jIChjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBTYXZlIGFuZCByZXN0b3JlCglwcm9jZXNzaW5nX2V4cGxpY2l0X2luc3RhbnRpYXRpb24gYXJvdW5kIGNhbGxzIHRvIGdyb2tmaWVsZC4KCSogcGFyc2UueSAoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogTmV3IGZ1bmN0aW9uLgoJKGNvbXBvbmVudF9kZWNsXzEpOiBVc2UgaXQuCgkoZm4uZGVmMik6IExpa2V3aXNlLgoJKHRlbXBsYXRlX2FyZ19saXN0X29wdCk6IE5ldyBub250ZXJtaW5hbC4KCSh0ZW1wbGF0ZV90eXBlKTogVXNlIGl0LgoJKHNlbGZfdGVtcGxhdGVfdHlwZSk6IExpa2V3aXNlLgoJKHRlbXBsYXRlX2lkKTogTGlrZXdpc2UuCgkob2JqZWN0X3RlbXBsYXRlX2lkKTogTGlrZXdpc2UuCgkobm90eXBlX3RlbXBsYXRlX2RlY2xhcmF0b3IpOiBMaWt3aXNlLgoJKGJlZ2luX2V4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShlbmRfZXhwbGljaXRfaW5zdGFudGlhdGlvbik6IExpa2V3aXNlLgoJKGV4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBVc2UgdGhlbS4KCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQWRkIHBhcmFtZXRlcnMuCgkocHJvY2Vzc2luZ19leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTmV3IHZhcmlhYmxlLgoJKGNvbnZlcnRfbm9udHlwZV9wYXJhbWV0ZXIpOiBOZXcgZnVuY3Rpb24uCgkoZGV0ZXJtaW5lX292ZXJsb2FkZWRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShiZWdpbl9leHBsaWNpdF9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkoZW5kX2V4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShyZXRyaWV2ZV9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKHJlZ2lzdGVyX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkocHJvY2Vzc2luZ19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFJlbW92ZWQuCgkoZGV0ZXJtaW5lX3NwZWNpYWxpemF0aW9uKTogSGFuZGxlIHNwZWNpYWxpemF0aW9ucyBvZiBtZW1iZXIKCWZ1bmN0aW9ucyBvZiB0ZW1wbGF0ZSBjbGFzcyBpbnN0YW50aWF0aW9ucy4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFJlZmluZSB0byBjb25mb3JtIHRvIHN0YW5kYXJkLgoJKGNvbXBfdGVtcGxhdGVfcGFybXMpOiBOZXcgZnVuY3Rpb24uCgkoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQ2FsbCBjb252ZXJ0X25vbnR5cGVfcGFyYW1ldGVyLgoJKHRzdWJzdCk6IFJlZmluZSBoYW5kbGluZyBvZiBtZW1iZXIgdGVtcGxhdGVzLiAgVXNlCglyZWdpc3Rlcl9zcGVjaWFsaXphdGlvbi4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IFVzZSByZXRyaWV2ZV9zcGVjaWFsaXphdGlvbi4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgkodHlwZV91bmlmaWNhdGlvbik6IEltcHJvdmUgaGFuZGxpbmcgb2YgZXhwbGljdCB0ZW1wbGF0ZQoJYXJndW1lbnRzLgoJKiB0cmVlLmMgKG1hcGNhcik6IFJldHVybiBlcnJvcl9tYXJrX25vZGUsIHJhdGhlciB0aGFuIGFib3J0aW5nLAoJb24gVkFSX0RFQ0xTLCBGVU5DVElPTl9ERUNMUywgYW5kIENPTlNUX0RFQ0xTLgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBDYWxsIGRldGVybWluZV9zcGVjaWFsaXphdGlvbiwgcmF0aGVyCgl0aGFuIGRldGVybWluZV9leHBsaWNpdF9zcGVjaWFsaXphdGlvbi4KCk1vbiBKYW4gMTkgMTM6MTg6NTEgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IEEgVEFSR0VUX0VYUFIgaGFzIHNpZGUgZWZmZWN0cy4KCkZyaSBKYW4gMTYgMTE6NDA6NTAgMTk5OCAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AbGludWl4Lm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEZvciBlbnVtIHRhZ3MsIG91dHB1dCB0aGUgdGFnLCBub3QgaXRzIHZhbHVlLgoKMTk5OC0wMS0xMyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBPbmx5IGNhbGwgaW5pdF9ydHRpX3Byb2Nlc3NpbmcKCUZMQUdfUlRUSSBpcyBzZXQuCgpNb24gSmFuIDEyIDAxOjM1OjE4IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBTcGxpdCBvdXQgZnJvbSBidWlsZF9uZXcuCgkoYnVpbGRfbmV3KTogSnVzdCByZXR1cm4gYSBORVdfRVhQUi4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IEhhbmRsZSBORVdfRVhQUi4KCgkqIGRlY2wyLmMgKGdldF90ZW1wX3JlZ3Zhcik6IFR3ZWFrLgoKCSogY3AtdHJlZS5oIChUUkVFX0NBTExTX05FVyk6IENvbW1lbnQgb3V0LgoJKiBjbGFzcy5jIChyZXNvbHZlc190b19maXhlZF90eXBlX3ApOiBSZW1vdmUgdXNlLgoJKiBtZXRob2QuYyAoYnVpbGRfb3BmbmNhbGwpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF9uZXdfb3ApOiBMaWtld2lzZS4KCldlZCBKYW4gIDcgMjM6NDc6MTMgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjIChfX2VoX2FsbG9jLCBfX2VoX2ZyZWUpOiBOZXcgZm5zLgoJKF9fY3BfcHVzaF9leGNlcHRpb24sIF9fY3BfcG9wX2V4Y2VwdGlvbik6IFVzZSB0aGVtLgoJKF9fdW5jYXRjaF9leGNlcHRpb24pOiBDYWxsIHRlcm1pbmF0ZSBoZXJlIGlmIG5vIGV4Y2VwdGlvbi4KCSogZXhjZXB0LmMgKGJ1aWxkX3Rlcm1pbmF0ZV9oYW5kbGVyKTogTmV3IGZuLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFVzZSBpdC4KCShleHBhbmRfZXhjZXB0aW9uX2Jsb2Nrcyk6IExpa2V3aXNlLgoJKGFsbG9jX2VoX29iamVjdCk6IE5ldyBmbi4KCShleHBhbmRfdGhyb3cpOiBVc2UgaXQuICBQcm90ZWN0IGV4Y2VwdGlvbiBpbml0IHdpdGggdGVybWluYXRlLgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBSZW1vdmUgY29kZSB0aGF0IGlnbm9yZXMgdHJpdmlhbAoJbWV0aG9kcy4KCk1vbiBEZWMgMjIgMTE6MzY6MjcgMTk5NyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2FsbC5jIChhZGRfYnVpbHRpbl9jYW5kaWRhdGUpOiBBZGQgZGVmYXVsdCBjYXNlIGluIGVudW1lcmF0aW9uCglzd2l0Y2guCgkoYnVpbGRfbmV3X29wKTogTGlrZXdpc2UuCgkoY29udmVydF9saWtlKTogTGlrZXdpc2UuCgkqIGN2dC5jIChidWlsZF9leHByX3R5cGVfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHJlYWxfbHZhbHVlX3ApOiBMaWtld2lzZS4KCShsdmFsdWVfcCk6IExpa2V3aXNlLgoJKGNwX3RyZWVfZXF1YWwpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBMaWtld2lzZS4KCShidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogTGlrZXdpc2UuCgkoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKGluaXRpYWxpemVyX2NvbnN0YW50X3ZhbGlkX3ApOiBMaWtld2lzZS4KClN1biBEZWMgMjEgMTU6NTk6MDAgMTk5NyAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEFkZCBzdXBwb3J0IGZvciAtV3Vua25vd24tcHJhZ21hcy4KClRodSBEZWMgMTggMTQ6NTE6NTAgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogTWFrZSBzdXJlIHRvIGRpZ2VzdF9pbml0IGlmCglwb3NzaWJsZS4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTWFrZSB0aGUgbmV3ZGVjbCB2aXJ0dWFsIGlmIHRoZQoJb2xkZGVjbCB3YXMsIGp1c3QgYXMgaXMgZG9uZSB3aXRoIG90aGVyIGF0dHJpYnV0ZXMgb2Ygb2xkZGVjbC4KClRodSBEZWMgMTggMTQ6NDM6MTkgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogSWdub3JlIG9wMCB3aGVuIHRha2luZyB0aGUKCWFkZHJlc3Mgb2YgYW4gT0ZGU0VUX1JFRi4KCgkqIGNwLXRyZWUuZGVmOiBBZGQgQUdHUl9JTklUX0VYUFIuCgkqIGVycm9yLmMsIHRyZWUuYywgdHlwZWNrLmM6IFJlcGxhY2UgdXNlcyBvZiBORVdfRVhQUiB3aXRoCglBR0dSX0lOSVRfRVhQUiB3aGVyZSBhcHByb3ByaWF0ZS4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IExpa2V3aXNlLiAgU2ltcGxpZnkuCgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IFJlbW92ZSBjYWxsIHRvIHJlZ2lzdGVyX2V4Y2VwdGlvbl90YWJsZS4KCldlZCBEZWMgMTcgMTc6MDg6NTIgMTk5NyAgQmVuamFtaW4gS29zbmlrICA8YmtvekByaGluby5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBEb24ndCBkbyBpbmplY3Rpb24gd2hlbgoJcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsIGlzIHRydWUsIGFzIHBvbGx1dGVzIGN1cnJlbnRfYmluZGluZ19sZXZlbAoJZm9yIGJhc2UgY2xhc3Nlcy4KCldlZCBEZWMgMTcgMjE6MTc6MzkgMTk5NyAgUGV0ZXIgU2NobWlkICA8c2NobWlkQGx0b2kuaWFwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CgoJKiBwdC5jIChtYXliZV9mb2xkX25vbnR5cGVfYXJnKTogQWRkIHByb3RvdHlwZS4KClR1ZSBEZWMgMTYgMTA6MzE6MjAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChtYXBjYXIpOiBIYW5kbGUgVFJZX0NBVENIX0VYUFIgZXQgYWwuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IExpa2V3aXNlLgoKTW9uIERlYyAxNSAxMjoyMjowNCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogUmVtb3ZlICJpbmxpbmUgY2FsbGVkIGJlZm9yZQoJZGVmaW5pdGlvbiIgcGVkd2Fybi4KCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IFVzZSBtYXliZV9mb2xkX25vbnR5cGVfYXJnLgoKU3VuIERlYyAxNCAyMjozNDoyMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogRml4IGJhc2UgY29udmVyc2lvbiBvZiBwbSdzLgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogQ2hhbmdlIF9fbnVsbCB0byB0eXBlIHZvaWQqIHdpdGgKCWEgd2FybmluZy4KClN1biBEZWMgMTQgMjA6Mzg6MzUgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY2FsbC5jIChpbXBsaWNpdF9jb252ZXJzaW9uKTogRG9uJ3QgY2FsbAoJYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSB3aXRoIGEgTlVMTCBleHByLCBzaW5jZSBpdCB3aWxsCgljcmFzaC4KCgkqIHB0LmMgKHVuaWZ5KTogRG9uJ3QgdHJ5IHRvIHVuaWZ5IGFycmF5IGJvdW5kcyBpZiBlaXRoZXIgYXJyYXkgaXMKCXVuYm91bmRlZC4KCkZyaSBEZWMgMTIgMTY6MDk6MTQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXJyZm4uYyAoY3BfcGVkd2FybiwgY3BfcGVkd2Fybl9hdCwgY3BfZXJyb3JfYXQsIGNwX3dhcm5pbmdfYXQpOgoJUmVwbGFjZSBleHRlcm4gZGVjbHMgd2l0aCBjYXN0cy4KCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXJ0X2Vhcmx5X3RyeV9zdG10cyk6IERvbid0IG1lc3Mgd2l0aCBhIHNlcXVlbmNlLgoJVXBkYXRlIGxhc3RfcGFybV9jbGVhbnVwX2luc24uCgkoc3RvcmVfYWZ0ZXJfcGFybXMpOiBSZW1vdmUuCgkqIGNwLXRyZWUuaDogQWRqdXN0LgoKVGh1IERlYyAxMSAyMjoxODozNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChjb21kYXRfbGlua2FnZSk6IEFsc28gc2V0IERFQ0xfQ09NREFULgoJKGZpbmlzaF9maWxlKTogQ2hlY2sgREVDTF9DT01EQVQgaW5zdGVhZCBvZiB3ZWFrfG9uZV9vbmx5LgoJKGltcG9ydF9leHBvcnRfdnRhYmxlKTogVXNlIG1ha2VfZGVjbF9vbmVfb25seSBpbnN0ZWFkIG9mCgljb21kYXRfbGlua2FnZSBmb3Igd2luMzIgdHdlYWsuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogTGlrZXdpc2UuCgkqIHB0LmMgKG1hcmtfZGVjbF9pbnN0YW50aWF0ZWQpOiBMaWtld2lzZS4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogTG9zZSBoYW5kbGluZyBvZiB0ZW1wbGF0ZXMgaW4gcGVuZGluZ19zdGF0aWNzLgoKVGh1IERlYyAxMSAyMToxMjowOSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IExvc2UgY2FsbCB0byBleHBhbmRfYnVpbHRpbl90aHJvdy4KCSogZXhjZXB0LmMgKGV4cGFuZF9idWlsdGluX3Rocm93KTogUmVtb3ZlLgoJKiBjcC10cmVlLmg6IFJlbW92ZSBwdHJfcHRyX3R5cGVfbm9kZS4KCSogZGVjbC5jOiBMaWtld2lzZS4KClRodSBEZWMgMTEgMjA6NDM6MzMgMTk5NyAgVGVlbXUgVG9ybWEgIDx0b3RAdHJlbWEuY29tPgoKCSogZGVjbC5jIChwdHJfcHRyX3R5cGVfbm9kZSk6IERlZmluZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEluaXRpYWxpemUgaXQuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogZXhjZXB0aW9uLmNjIChfX2NwX2V4Y2VwdGlvbl9pbmZvKTogVXNlIF9fZ2V0X2VoX2luZm8uCgkoX19jcF9wdXNoX2V4Y2VwdGlvbik6IExpa2V3aXNlLgoJKF9fY3BfcG9wX2V4Y2VwdGlvbik6IExpa2V3aXNlLgoKCUZyb20gU2NvdHQgU255ZGVyIDxzbnlkZXJAZDBzZ2lmLmZuYWwuZ292PjoKCSogZXhjZXB0LmMgKGV4cGFuZF9idWlsdGluX3Rocm93KTogVXNlIGdldF9zYXZlZF9wY19yZWYgaW5zdGVhZCBvZgoJc2F2ZWRfcGMuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IFJlbW92ZWQgc2F2ZWRfcGMgaW5pdGlhbGl6YXRpb24uCgpXZWQgRGVjIDEwIDExOjA0OjQ1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBEZWZlciBhbGwgdGVtcGxhdGVzIGJ1dCBpbmxpbmUgZnVuY3Rpb25zLgoKTW9uIERlYyAgOCAyMzoxNzoxMyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF92ZWNfaW5pdCk6IERvbid0IGZvbGQgYSBsaXN0IG9mIHBhcmFtZXRlcnMuCgoJKiBkZWNsLmMgKGNvcHlfYXJnc19wKTogSGFuZGxlIGNvcHkgZWxpc2lvbiBmb3IgdHlwZXMgd2l0aCB2aXJ0dWFsCgliYXNlcy4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KClN1biBEZWMgIDcgMjI6Mzg6MTIgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2Z1bmN0aW9uKTogQ29weSB0aGUgdGVtcGxhdGUgYXJndW1lbnRzLAoJbm90IGp1c3QgdGhlIGxpc3QgY29udGFpbmluZyB0aGVtLCB0byB0aGUgcGVybWFuZW50IG9ic3RhY2suCgpTdW4gRGVjICA3IDE1OjUzOjA2IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBzdXNwZW5kX21vbWVudGFyeSBmb3IgdGhlCgl0ZXJtaW5hdGUgaGFuZGxlci4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEhhbmRsZSBMT09LVVBfRVhQUi4KClN1biBEZWMgIDcgMTU6NDU6MDcgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3QpOiBDb3B5IHRoZSBjYXN0LXRvIHR5cGUgdG8gdGhlCglwZXJtYW5lbnQgb2JzdGFjayBpZiB3ZSBhcmUgcHJvY2Vzc2luZyBhIHRlbXBsYXRlIGRlY2wuCgkqIHR5cGVjay5jIChidWlsZF9zdGF0aWNfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbnN0X2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9yZWludGVycHJldF9jYXN0KTogTGlrZXdpc2UuCgoJKiBwdC5jIChjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBDb2VyY2Ugc29tZSBleHByZXNzaW9ucywgZXZlbgoJd2hlbiBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wuCgpTdW4gRGVjICA3IDAxOjQ2OjMzIDE5OTcgIEJydW5vIEhhaWJsZSAgPGJydW5vQGxpbnVpeC5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCwgcG9pbnRlcl9kaWZmKTogU3ltbWV0cmljCgloYW5kbGluZyBvZiBwb2ludGVyIGRpZmZlcmVuY2UgZXhwcmVzc2lvbnMuCgoJKiB0eXBlY2suYyAoY29tcF90YXJnZXRfdHlwZXMpOiBDb21wYXJpc29uIG9mIGZ1bmN0aW9uL21ldGhvZCB0eXBlcwoJaXMgaW5kZXBlbmRlbnQgb2YgbnB0cnMuCgpTdW4gRGVjICA3IDAxOjQwOjI3IDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKHRzdWJzdCk6IEF2b2lkIGNyZWF0aW5nIHBvaW50ZXIgdG8gcmVmZXJlbmNlIGFuZAoJcmVmZXJlbmNlIHRvIHJlZmVyZW5jZSB0eXBlcy4KClNhdCBEZWMgIDYgMDE6Mjk6MzcgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoZG9faWQpOiBOZXcgbm9udGVybWluYWwuCgkodGVtcGxhdGVfaWQpOiBVc2UgaXQuCgpGcmkgRGVjICA1IDAxOjE3OjM0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHRlbXBsYXRlX2lkKTogZG9faWRlbnRpZmllciBmb3IgUEZVTkNOQU1FcywgdG9vLgoJKiBzcGV3LmMgKHl5bGV4KTogRG9uJ3QgZG9faWRlbnRpZmllciBoZXJlLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IFJldmVydCBsYXN0IGNoYW5nZS4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogRXhwYW5kIHRoZSBuYW1lIGZvciBhIG1ldGhvZCBjYWxsLgoJKiBwYXJzZS55IChvYmplY3RfdGVtcGxhdGVfaWQpOiBEb24ndCB0cnkgdG8gdGFrZSB0aGUgREVDTF9OQU1FLgoKV2VkIERlYyAgMyAyMDowMjozOSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IFVzZSBhIFRBUkdFVF9FWFBSIGluc3RlYWQgb2YgU0FWRV9FWFBSIGZvcgoJYWxsb2NfZXhwci4KCSogY2FsbC5jIChidWlsZF9vcF9kZWxldGVfY2FsbCk6IEFkanVzdC4KCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogTG9zZSByZXRocm93IHJlZ2lvbi4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4KCShleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogRG9uJ3QgZXhwYW5kX2xlZnRvdmVyX2NsZWFudXBzLgoKV2VkIERlYyAgMyAxMzoyNDowNCAxOTk3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBSZW1vdmUgdHJlZV9jb25zIGNhbGwgKHBsYWNlcyByZWR1bmRhbnQgaW5mbyBpbnRvCglERUNMX1RFTVBMQVRFX0lOU1RBTlRJQVRJT04pLgoKV2VkIERlYyAgMyAxMTo0NDo1MiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGlzX292ZXJsb2FkZWRfZm4pOiBIYW5kbGUgZ2V0dGluZyBhIGZuIHRlbXBsYXRlLgoJKHJlYWxseV9vdmVybG9hZGVkX2ZuKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEhhbmRsZSBURU1QTEFURV9JRF9FWFBScyBiZXR0ZXIuCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogVHdlYWsuCgkoZGV0ZXJtaW5lX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogVHdlYWsuCgoJKiB0cmVlLmMsIGNwLXRyZWUuaCAoZ2V0X3RhcmdldF9leHByKTogTmV3IGZuLgoKV2VkIERlYyAgMyAwODo0NzoyNyAxOTk3ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEB0d2luc3VuLmNvbT4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRml4IG1pc3NwZWxsaW5nIGluCglkaWFnbm9zdGljOiBgcHJlY2VlZGVkJy4KCSogdHlwZWNrLmMgKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogRml4IG1pc3NwZWxsaW5nIGluIGRpYWdub3N0aWM6CglgY29udmVyc2lvbmEnLgoKMTk5Ny0xMi0wMiAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogcHQuYyAoZGV0ZXJtaW5lX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQXZvaWQgYW4gaW50ZXJuYWwKCWVycm9yIGZvciBiYWQgc3BlY2lhbGl6YXRpb25zLgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX3ZhbHVlKTogSGFuZGxlIFNDT1BFX1JFRi4KClR1ZSBEZWMgIDIgMTk6MTg6NTAgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogY2xhc3MuYyAocHJlcGFyZV9mcmVzaF92dGFibGUpOiBFbmFibGUgZXZlbiBtb3JlIGNvbXBsZXggTUkKCXZ0YWJsZSBuYW1lcy4KClR1ZSBEZWMgIDIgMDE6Mzc6MTkgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0aW9uLmNjIChfX2NoZWNrX2VoX3NwZWMpOiBPcHRpbWl6ZSBhIGJpdC4KCgkqIGV4Y2VwdGlvbi5jYyAoX19jcF9wb3BfZXhjZXB0aW9uKTogTG9zZSBoYW5kbGVyIGFyZy4KCSogZXhjZXB0LmMgKGRvX3BvcF9leGNlcHRpb24pOiBMaWtld2lzZS4KCShwdXNoX2VoX2NsZWFudXApOiBMZXQgdGhlIGNsZWFudXAgbWVjaGFuaXNtIHN1cHBseSB0aGUgaGFuZGxlci4KCShleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuCgpGcmkgTm92IDI4IDAxOjU4OjE0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQ29tcGxhaW4gYWJvdXQgdXNpbmcgYQoJdGVtcGxhdGUtaWQgZm9yIGEgbm9uLXNwZWNpYWxpemF0aW9uLgoKRnJpIE5vdiAyOCAxMjozNToxOSAxOTk3ICBTY290dCBDaHJpc3RsZXkgIDxzY290dGNAbmV0LWNvbW11bml0eS5jb20+CgoJKiByZXBvLmM6IFByb3RvdHlwZSByaW5kZXggb25seSBpZiBuZWVkZWQuCgkqIHhyZWYuYzogTGlrZXdpc2UuCgpGcmkgTm92IDI4IDAxOjU2OjM1IDE5OTcgIEJydW5vIEhhaWJsZSAgPGJydW5vQGxpbnVpeC5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBIYW5kbGUgVEVNUExBVEVfSURfRVhQUi4KClRodSBOb3YgMjcgMDA6NTk6NDYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbnN0X2Nhc3QpOiBIYW5kbGUgcmVmZXJlbmNlcyBoZXJlIGluc3RlYWQgb2YKCWhhbmRpbmcgb2ZmIHRvIGNvbnZlcnRfdG9fcmVmZXJlbmNlLgoKCSogZXhjZXB0LmM6IExvc2UgVW5leHBlY3RlZCwgU2V0VGVybWluYXRlLCBTZXRVbmV4cGVjdGVkLAoJVGVybWluYXRlRnVuY3Rpb25DYWxsLgoJKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4gIFRlcm1pbmF0ZSBldCBhbCBhcmUgbm93Cgl0aGUgZm5zLCBub3QgQUREUl9FWFBScy4KCSh2YXJpb3VzKTogTG9zZSByZWR1bmRhbnQgYXNzZW1ibGVfZXh0ZXJuYWwgY2FsbHMuCgkoZG9fdW53aW5kKTogcy9CdWlsdGluUmV0dXJuQWRkcmVzcy9idWlsdGluX3JldHVybl9hZGRyZXNzX2ZuZGVjbC8uCgoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2xfZmxhZ3MpOiBBZGQgY29tZGF0LgoJKERFQ0xfQ09NREFUKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFByb3BhZ2F0ZSBpdC4KCShjcF9maW5pc2hfZGVjbCk6IEhhbmRsZSBpdC4KCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9kZWNsKTogSnVzdCBzZXQgREVDTF9DT01EQVQgb24gVkFSX0RFQ0xzLgoKCSogY2xhc3MuYzogUmVtb3ZlIHN0YXRpYyBwZW5kaW5nX2hhcmRfdmlydHVhbHMuCgkoYWRkX3ZpcnR1YWxfZnVuY3Rpb24pOiBUYWtlIHBvaW50ZXJzIHRvIHBlbmRpbmdfdmlydHVhbHMKCWFuZCBwZW5kaW5nX2hhcmRfdmlydHVhbHMuCgkoZmluaXNoX3N0cnVjdF8xKTogUGFzcyB0aGVtLiAgRGVjbGFyZSBwZW5kaW5nX2hhcmRfdmlydHVhbHMuCgpXZWQgTm92IDI2IDIwOjI4OjQ5IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfdnRhYmxlKTogSWYgd2Ugc3VwcG9ydCBvbmVfb25seSBidXQgbm90Cgl3ZWFrIHN5bWJvbHMsIG1hcmsgaW5zdGFudGlhdGVkIHRlbXBsYXRlIHZ0YWJsZXMgb25lX29ubHkuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogTGlrZXdpc2UgZm9yIHRpbmZvIGZ1bmN0aW9ucy4KCShmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBBbHNvIHdyaXRlIG91dCB2dGFibGVzIGZyb20gZXhwbGljaXRseQoJaW5zdGFudGlhdGVkIHRlbXBsYXRlIGNsYXNzZXMuCgkqIHB0LmMgKG1hcmtfY2xhc3NfaW5zdGFudGlhdGVkKTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IENhbGwgbWFya191c2VkIG9uIHRoZSBkZXN0cnVjdG9yLgoKV2VkIE5vdiAyNiAxNToxMzo0OCAxOTk3ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBsZXguYyAobGFuZ19pbml0KTogRW5hYmxlIGZsYWdfZXhjZXB0aW9ucyBieSBkZWZhdWx0IGlmIG5vCgljb21tYW5kIGxpbmUgc3dpdGNoIHdhcyBzcGVjaWZpZWQuCgoxOTk3LTExLTI2ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdC5jICh1bmlmeSk6IEhhbmRsZSBgdm9pZCcgdGVtcGxhdGUgcGFyYW1ldGVycyBpbgoJc3BlY2lhbGl6YXRpb25zLgoKV2VkIE5vdiAyNiAwMToxMToyNCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IEhhbmRsZSB0ZW1wbGF0ZSBjYXNlIGhlcmUuCgkoYnVpbGRfZHluYW1pY19jYXN0XzEpOiBOb3QgaGVyZS4KCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBNYWtlIGNvcGllcyB3aGVyZSBhcHByb3ByaWF0ZS4KCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiByZXNvbHZlX29mZnNldF9yZWYuCgoJKiBleGNlcHQuYzogQ2FsbCB0ZXJtaW5hdGUgd2l0aG91dCBjYWNoaW5nIHNvIG1hbnkgYml0cy4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBGaXggY2F0Y2hpbmcgYSByZWZlcmVuY2UKCXRvIHBvaW50ZXIuCgpUdWUgTm92IDI1IDExOjI4OjIxIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogQ29weSBzaXplIHRvIHRoZSBzYXZlYWJsZSBvYnN0YWNrLgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBTdGljayBhIENMRUFOVVBfUE9JTlRfRVhQUiBpbnNpZGUgdGhlCglUUllfQ0FUQ0hfRVhQUiBmb3Igbm93LgoKTW9uIE5vdiAyNCAxMjoxNTo1NSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAobWFya19hZGRyZXNzYWJsZSk6IERvbid0IGFzc3VtZSBhIEZVTkNUSU9OX0RFQ0wKCWhhcyBERUNMX0xBTkdfU1BFQ0lGSUMuCgoJKiBleGNlcHRpb24uY2MgKHN0cnVjdCBjcF9laF9pbmZvKTogQWRkIGhhbmRsZXJzIGZpZWxkLgoJKF9fY3BfcHVzaF9leGNlcHRpb24pOiBJbml0aWFsaXplIGl0LgoJKF9fY3BfcG9wX2V4Y2VwdGlvbik6IERlY3JlbWVudCBpdC4gIERvbid0IHBvcCB1bmxlc3MgaXQncyAwLgoJKF9fdGhyb3dfYmFkX2V4Y2VwdGlvbik6IFJlbW92ZS4KCSogZXhjZXB0LmMgKGNhbGxfZWhfaW5mbyk6IEFkZCBoYW5kbGVycyBmaWVsZC4KCShnZXRfZWhfaGFuZGxlcnMpOiBOZXcgZm4uCgkocHVzaF9laF9jbGVhbnVwKTogSW5jcmVtZW50IGhhbmRsZXJzLgoKRnJpIE5vdiAyMSAxMjoyMjowNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2VoX3NwZWMpOiBVc2UgdGhlIHRyeS9jYXRjaCBjb2RlLgoJKGV4cGFuZF9lbmRfZWhfc3BlYyk6IExpa2V3aXNlLiAgQ2FsbCBfX2NoZWNrX2VoX3NwZWMgaW5zdGVhZCBvZgoJZG9pbmcgZXZlcnl0aGluZyBpbmxpbmUuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IHRocm93X3R5cGVfbWF0Y2ggbm93IHRha2VzCgljb25zdCB2b2lkIHBvaW50ZXJzLgoJKiBleGNlcHRpb24uY2MgKF9fY2hlY2tfZWhfc3BlYyk6IE5ldyBmbi4KCSogaW5jL2V4Y2VwdGlvbjogTmVpdGhlciB0ZXJtaW5hdGUgbm9yIHVuZXhwZWN0ZWQgcmV0dXJuLgoJKiBkZWNsLmM6IE1ha2UgY29uc3RfcHRyX3R5cGVfbm9kZSBwdWJsaWMuCgkqIHRpbmZvMi5jYyAoX190aHJvd190eXBlX21hdGNoX3J0dGkpOiBUYWtlIHRoZSB0eXBlaW5mb3MgY29uc3RseS4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBXZSBvbmx5IG5lZWQgdGhlIHJldGhyb3cKCXJlZ2lvbiBmb3Igbm9uLXNqbGogZXhjZXB0aW9ucy4KCShleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuICBVc2Ugb3V0ZXJfY29udGV4dF9sYWJlbF9zdGFjay4KClRodSBOb3YgMjAgMTQ6NDA6MTcgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChDWFhfTElCMkZVTkNTKTogQWRkIG5ldyBvcCBuZXcgYW5kIG9wIGRlbGV0ZSBvYmpzLgoJKHZhcmlvdXMubyk6IExpa2V3aXNlLgoJKiBpbmMvbmV3OiBBZGQgcGxhY2VtZW50IGRlbGV0ZXMuICBBZGQgdGhyb3cgc3BlY3MgZm9yIGRlZmF1bHQgbmV3LgoJKiBuZXcuY2MgKHNldF9uZXdfaGFuZGxlcik6IE1vdmUgaGVyZSBmcm9tIGxpYmdjYzIuCgkqIG5ldzEuY2MgKG5ldyAobm90aHJvdykpOiBDYXRjaCBhIGJhZF9hbGxvYyB0aHJvd24gZnJvbSB0aGUgaGFuZGxlci4KCShuZXcpOiBNb3ZlIGZyb20gbGliZ2NjMi4gIFRocm93IGJhZF9hbGxvYy4KCSogbmV3Mi5jYzogTW92ZSB0aGUgcmVzdCBvZiB0aGUgb3AgbmV3cyBhbmQgb3AgZGVsZXRlcyBmcm9tIGxpYmdjYzIuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVcGRhdGUgZXhjZXB0aW9uIHNwZWNzIG9uIG5ldyBhbmQKCWRlbGV0ZS4KCgkqIG1ldGhvZC5jIChidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBEb24ndCBtZXNzIHdpdGggZ2xvYmFsCglwbGFjZW1lbnQgZGVsZXRlLgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBDaGVjayBmb3IgbnVsbCB0aHJvdyBzcGVjLCBub3Qgbm90aHJvd190LgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBjb21wbGFpbiBhYm91dCBkaWZmZXJlbnQgZXhjZXB0aW9ucwoJZnJvbSBhbiBpbnRlcm5hbCBkZWNsYXJhdGlvbi4KCgkqIGNhbGwuYyAoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBGaXggY2hlY2sgZm9yIG1lbWJlciBmbnMgYWdhaW4uCgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBJbnRlcmZhY2UgaGFja2VyeSBhZmZlY3RzCgl2aXJ0dWFsIHN5bnRoZXNpemVkIG1ldGhvZHMuCgpXZWQgTm92IDE5IDE4OjI0OjE0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IERvbid0IGp1c3QgY29tcGxhaW4gYWJvdXQgYSBtaXNtYXRjaGVkCglzY29wZSwgZml4IGl0LgoKCSogZGVjbC5jIChtYWtlX2ltcGxpY2l0X3R5cGVuYW1lKTogSGFuZGxlIGNhc2Ugd2hlcmUgdCBpcyBub3QKCWFjdHVhbGx5IGZyb20gY29udGV4dC4KCSogdHJlZS5jIChnZXRfdHlwZV9kZWNsKTogTG9zZSBpZGVudGlmaWVyIGNhc2UuCgkqIHNwZXcuYyAoeXlsZXgpOiBMb3NlIHVzZWxlc3MgY2FsbCB0byBpZGVudGlmaWVyX3R5cGVkZWNsX3ZhbHVlLgoJKiBwYXJzZS55IChub25uZXN0ZWRfdHlwZSk6IEp1c3QgdXNlIGxvb2t1cF9uYW1lLgoJKGNvbXBsZXhfdHlwZV9uYW1lKTogSnVzdCB1c2UgSURFTlRJRklFUl9HTE9CQUxfVkFMVUUuCgpXZWQgTm92IDE5IDExOjQ1OjA3IDE5OTcgIE1pY2hhZWwgVGllbWFubiAgPHRpZW1hbm5AYXhvbi5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9mdW5jdGlvbl9uYW1lKTogVGVzdCBERUNMX0xBTkdfU1BFQ0lGSUMgaW4gY2FzZQoJVCB3YXMgYnVpbHQgaW4gQyBsYW5ndWFnZSBjb250ZXh0IChmb3IgZXhhbXBsZSwgYnkKCW91dHB1dF9mdW5jX3N0YXJ0X3Byb2ZpbGVyKS4KCldlZCBOb3YgMTkgMTA6Mzk6MjcgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChtYWtlX2ltcGxpY2l0X3R5cGVuYW1lKTogTmV3IGZuLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBVc2UgaXQuICBVc2UgY3VycmVudF9jbGFzc190eXBlIGFzIHRoZSBjb250ZXh0LgoKTW9uIE5vdiAxNyAyMzo0MjowMyAxOTk3ICBCcnVubyBIYWlibGUgIDxoYWlibGVAaWxvZy5mcj4KCgkqIHB0LmMgKGRvX3BvcGxldmVsKTogRG9uJ3QgcHJvaGliaXQganVtcHMgaW50byB0aGlzIGNvbnRvdXIuCgpNb24gTm92IDE3IDAyOjAxOjI4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBXYXJuIGFib3V0IG5vbi10ZW1wbGF0ZSBmcmllbmRzIGluIHRlbXBsYXRlcy4KCgkqIGNhbGwuYyAoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBGaXggaGFuZGxpbmcgb2YgaW5oZXJpdGVkIGRlbGV0ZS4KCgkqIHNlYXJjaC5jIChkZnNfcmVjb3JkX2luaGVyaXRhbmNlKTogSWdub3JlIHRlbXBsYXRlIHR5cGUgcGFybXMuCgpTYXQgTm92IDE1IDAwOjMwOjUxIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X29wKTogRml4IGNvcHkgZXJyb3IuCgkoYnVpbGRfb3BfbmV3X2NhbGwpOiBOZXcgZm4uCgkoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBOZXcgZm4uCgkqIGNwLXRyZWUuaDogRGVjbGFyZSB0aGVtLgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IFVzZSB0aGVtLiAgU3VwcG9ydCBwbGFjZW1lbnQgZGVsZXRlLgoJKGJ1aWxkX3hfZGVsZXRlKTogVXNlIGJ1aWxkX29wX2RlbGV0ZV9jYWxsLgoJKGJ1aWxkX2RlbGV0ZSk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChkZWxldGVfc2FuaXR5KTogTGlrZXdpc2UuCgkoY29lcmNlX2RlbGV0ZV90eXBlKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgcGxhY2VtZW50IGRlbGV0ZS4KClRodSBOb3YgMTMgMDE6NTI6MzYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IFJlbW92ZSB1bnVzZWQgJ29iaicgcGFybS4KCSogY3AtdHJlZS5oLCB0eXBlY2suYzogQWRqdXN0LgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBNYWtlIHRoZSBjbGVhbnVwIGxhc3QgbG9uZ2VyLgoJKGV4cGFuZF92ZWNfaW5pdCk6IENhbGwgZG9fcGVuZGluZ19zdGFja19hZGp1c3QuCgpXZWQgTm92IDEyIDExOjA0OjMzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGRvX3R5cGVfaW5zdGFudGlhdGlvbik6IEZpeCB0eXBvLgoJKG1hcmtfY2xhc3NfaW5zdGFudGlhdGVkKTogSWYgd2Ugc3VwcG9ydCBvbmVfb25seSBidXQgbm90IHdlYWsKCXN5bWJvbHMsIGRvbid0IG1hcmsgdGhpcyBhcyBrbm93bi4KCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogSGFuZGxlIHZlYyBkZWxldGUgaW4gRUggY2xlYW51cC4KCldlZCBOb3YgMTIgMDg6MTE6NTUgMTk5NyAgQmVuamFtaW4gS29zbmlrICA8YmtvekByaGluby5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IENhbGwgY29tcGxldGVfdHlwZSBiZWZvcmUgY2hlY2tpbmcKCWZvciBkZXN0cnVjdG9yLgoKU3VuIE5vdiAgOSAwMToyOTo1NSAxOTk3ICBKaW0gV2lsc29uICAod2lsc29uQGN5Z251cy5jb20pCgoJKiBkZWNsLmMgKGFkZF9ibG9ja19jdXJyZW50X2xldmVsKTogRGVsZXRlLgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19kZWxldGVfMSk6IERlbGV0ZSBidWlsZF9ibG9jayBhbmQKCWFkZF9ibG9ja19jdXJyZW50X2xldmVsIGNhbGxzLgoKV2VkIE5vdiAxMiAwMDo0ODoxNiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IEhhbmRsZSBmcmVlaW5nIGFsbG9jYXRlZCBtZW1vcnkgd2hlbiB0aGUKCWNvbnN0cnVjdG9yIHRocm93cy4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogRml4IGZsYWdzIGFyZy4KCgkqIHB0LmMgKGRvX3R5cGVfaW5zdGFudGlhdGlvbik6IERvbid0IHRyeSB0byBpbnN0YW50aWF0ZQoJbWVtYmVyIHRlbXBsYXRlcy4KCShtYXJrX2RlY2xfaW5zdGFudGlhdGVkKTogSWYgd2Ugc3VwcG9ydCBvbmVfb25seSBidXQgbm90Cgl3ZWFrIHN5bWJvbHMsIG1hcmsgdGhpcyBvbmVfb25seS4KCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBEb24ndCBkZWZlciBoYW5kbGluZyBvZiB2dGFibGVzCglpZiBNVUxUSVBMRV9TWU1CT0xfU1BBQ0VTLgoKVHVlIE5vdiAxMSAxMjowMjoxMiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IExvc2UgY2FsbCB0byBfX3NqcG9wbnRocm93LgoKVHVlIE5vdiAxMSAwMjo1Mzo0NCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AbGFzaGVyLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZG9fcG9wX2V4Y2VwdGlvbik6IFJldHVybiBhIHZhbHVlLgoKTW9uIE5vdiAxMCAyMDoyNTozMSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IEhhbmRsZSBnZXR0aW5nIGEKCVRFTVBMQVRFX0lEX0VYUFIgYXJvdW5kIGEgVEVNUExBVEVfREVDTC4gIERvbid0IGxvb2sgZm9yIGEgZmllbGQKCWlmIHdlIGdvdCB0ZW1wbGF0ZSBwYXJtcy4KCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IFJlbWVtYmVyIHRoZSBURU1QTEFURV9JRF9FWFBSLAoJbm90IGp1c3QgdGhlIGFyZ3MuCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogVHdlYWsgbGFzdCBjaGFuZ2UuCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogVXNlIGdldF9maXJzdF9mbiBpbnN0ZWFkIG9mIFRSRUVfVkFMVUUuCgkobWF5YmVfZm9sZF9ub250eXBlX2FyZyk6IFNwbGl0IG91dCBmcm9tIHRzdWJzdF9jb3B5LgoJKiB0cmVlLmMgKGdldF9maXJzdF9mbik6IEp1c3QgcmV0dXJuIGEgVEVNUExBVEVfSURfRVhQUi4KCk1vbiBOb3YgMTAgMjA6MDg6MzggMTk5NyAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUBzY2YtZnMudXNjLmVkdT4KCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogSGFuZGxlIGV4cGxpY2l0IHRlbXBsYXRlIGFyZ3VtZW50cyBpbgoJZnVuY3Rpb24gY2FsbHMuCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBMb29rdXAgZnVuY3Rpb24gbmFtZSBpZiBpdAoJaGFzbid0IGJlZW4gZG9uZS4KCgkqIHB0LmMgKHRzdWJzdCk6IEluc3RhbnRpYXRlIHRlbXBsYXRlIGZ1bmN0aW9ucyBwcm9wZXJseSB3aGVuCgl0ZW1wbGF0ZSBwYXJhbWV0ZXIgZG9lcyBub3QgYXBwZWFyIGluIGZ1bmN0aW9uIGFyZ3VtZW50cyBhbmQgcmV0dXJuCgl0eXBlLgoJKGNvbXBfdGVtcGxhdGVfYXJncyk6IEhhbmRsZSBtZW1iZXIgdGVtcGxhdGVzIHJlcXVpcmVkIGJ5IHRzdWJzdC4KCk1vbiBOb3YgMTAgMjA6MDg6MzggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFR3ZWFrIGNvbmRpdGlvbnMgZm9yIHBlZHdhcm4gaW4KCXByZXZpb3VzIGNoYW5nZS4KCk1vbiBOb3YgMTAgMjA6MDg6MjkgMTk5NyAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AbGludWl4Lm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IFR3ZWFrIGVycm9yIG1lc3NhZ2UuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogSWYgLVdyZXR1cm4tdHlwZSwgd2FybiBldmVyeXRpbWUgYQoJcmV0dXJuIHR5cGUgZGVmYXVsdHMgdG8gYGludCcsIGV2ZW4gaWYgdGhlcmUgYXJlIHN0b3JhZ2UtY2xhc3MKCXNwZWNpZmllcnMuCgpNb24gTm92IDEwIDAzOjA0OjIwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglDb21wbGV0ZSBuZXN0ZWQgZXhjZXB0aW9uIHN1cHBvcnQuCgkqIGV4Y2VwdC5jIChkb19wb3BfZXhjZXB0aW9uKTogU3BsaXQgb3V0Li4uCgkocHVzaF9laF9jbGVhbnVwKTogRnJvbSBoZXJlLiAgSGFuZGxlIHRoZSBFSCByZWdpb24gYnkgaGFuZC4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBBZGQgYSBuZXcgbGV2ZWwgZm9yIHRoZSBjYXRjaCBwYXJtLgoJTW92ZSB0aGUgcmV0aHJvdyByZWdpb24gb3V0c2lkZSB0aGUgdHdvIGNsZWFudXAgcmVnaW9ucy4KCVByb3RlY3QgdGhlIGluaXRpYWxpemVyIGZvciB0aGUgY2F0Y2ggcGFybSB3aXRoIHRlcm1pbmF0ZS4KCShleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuICBFbmQgdGhlIHJlZ2lvbiBmb3IgdGhlIGVoX2NsZWFudXAuCgkqIGV4Y2VwdGlvbi5jYyAoX19jcF9wb3BfZXhjZXB0aW9uKTogTm93IHRha2VzIHR3byBwYXJtcy4gIEhhbmRsZQoJcG9wcGluZyBvZmYgdGhlIG1pZGRsZSBvZiB0aGUgc3RhY2suCgkqIHRyZWUuYyAobHZhbHVlX3AsIHJlYWxfbHZhbHVlX3ApOiBIYW5kbGUgVFJZX0NBVENIX0VYUFIsCglXSVRIX0NMRUFOVVBfRVhQUiwgYW5kIFVOU0FWRV9FWFBSLgoJKGJ1aWxkX2NwbHVzX25ldyk6IE9ubHkgd3JhcCBDQUxMX0VYUFJzLgoJKiBpbml0LmMgKGV4cGFuZF9kZWZhdWx0X2luaXQpOiBIYW5kbGUgYSBUUllfQ0FUQ0hfRVhQUiBhcm91bmQKCXRoZSBjb25zdHJ1Y3RvciBjYWxsLgoKU3VuIE5vdiAgOSAxODowMDoyNiAxOTk3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogTWFrZS1sYW5nLmluIChjKysuZGlzdGRpcik6IE1ha2UgaW5jIHN1YmRpcmVjdG9yeS4KCkZyaSBOb3YgIDcgMTE6NTc6MjggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBQdXQgYmFjayBzb21lIGNvZGUuCgpUaHUgTm92ICA2IDExOjI4OjE0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogUmVtb3ZlIHJlZHVuZGFudCBjb2RlLgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IERvbid0IGxldCB0aGUgYmFja2VuZCBkZWZlciBnZW5lcmljIHRodW5rcy4KCldlZCBOb3YgIDUgMjM6NTI6NTAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGNhbGxfZWhfaW5mbyk6IFNwbGl0IG91dC4uLgoJKHB1c2hfZWhfaW5mbyk6IEZyb20gaGVyZS4KCShleHBhbmRfYnVpbHRpbl90aHJvdyk6IFVzZSBpdC4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBNb3ZlIHJlZ2lvbiBzdGFydCBiYWNrLgoKVHVlIE5vdiAgNCAxMzo0NToxMCAxOTk3ICBEb3VnIEV2YW5zICA8ZGV2YW5zQGNhbnVjay5jeWdudXMuY29tPgoKCSogbGV4LmMgKE1VTFRJQllURV9DSEFSUyk6ICN1bmRlZiBpZiBjcm9zcyBjb21waWxpbmcuCgkocmVhbF95eWxleCk6IFJlY29yZCB3aWRlIHN0cmluZ3MgdXNpbmcgdGFyZ2V0IGVuZGlhbm5lc3MsIG5vdCBob3N0LgoKMTk5Ny0xMS0wMyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogcmVwby5jIChyaW5kZXgpOiBBZGQgZGVjbCB1bmNvbmRpdGlvbmFsbHkuCgkoZ2V0X2Jhc2VfZmlsZW5hbWUsIG9wZW5fcmVwb19maWxlKTogRG9uJ3QgY2FzdCByaW5kZXguCgkqIHhyZWYuYyAocmluZGV4KTogQWRkIGRlY2wgdW5jb25kaXRpb25hbGx5LgoJKGluZGV4KTogUmVtb3ZlIHVudXNlZCBkZWNsLgoJKG9wZW5feHJlZl9maWxlKTogRG9uJ3QgY2FzdCByaW5kZXguCgpTdW4gTm92ICAyIDE1OjA0OjEyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3ZiYXNlX3BhdGgpOiBQcm9wYWdhdGUgdGhlIHJlc3VsdCB0eXBlIHByb3Blcmx5LgoKMTk5Ny0xMS0wMSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9idWlsdGluX3Rocm93KSBbIURXQVJGMl9VTldJTkRfSU5GT106IFJlcGxhY2UKCXJlbWFpbmluZyB1c2Ugb2Ygc2F2ZWRfdGhyb3dfdHlwZSB3aXRoIGEgY2FsbCB0byBnZXRfZWhfdHlwZS4KCjE5OTctMTAtMzEgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGxleC5jIChGSUxFX05BTUVfTk9ORElSRUNUT1JZKTogRGVsZXRlIG1hY3JvLgoJKGZpbGVfbmFtZV9ub25kaXJlY3RvcnkpOiBOZXcgZnVuY3Rpb24sIGRvaW5nIHRoZSBzYW1lIGFzIHRoZSBtYWNyby4KCShzZXRfdHlwZWRlY2xfaW50ZXJmYWNlX2luZm8pOiBVc2UgaXQgaW5zdGVhZCBvZiB0aGUgbWFjcm8uCgkoY2hlY2tfbmV3bGluZSk6IExpa2V3aXNlLgoJKGhhbmRsZV9jcF9wcmFnbWEpOiBMaWtld2lzZS4KCgkqIHJlcG8uYyAoZ2V0X2Jhc2VfZmlsZW5hbWUpOiBDYXN0IHJlc3VsdCBvZiByaW5kZXggdG8gY2hhciouCgkob3Blbl9yZXBvX2ZpbGUpOiBMaWtld2lzZS4KCSogeHJlZi5jIChvcGVuX3hyZWZfZmlsZSk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX2NoYXIpOiBNYWtlIGl0cyBhcmcgaW50LCBub3QgY2hhci4KCgkqIGV4Y2VwdC5jIChwdXNoX2VoX2luZm8pOiBQYXNzIHRoZSBudW1iZXIgb2YgZmllbGRzIC0gMSBkb3duLCBub3QKCXRoZSBleGFjdCBudW1iZXIgb2YgZmllbGRzLgoKRnJpIE9jdCAzMSAwMTo0Nzo1NyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJU3VwcG9ydCBmb3IgbmVzdGVkIGV4Y2VwdGlvbnMuCgkqIHRpbmZvMi5jYyAoX19pc19wb2ludGVyKTogTmV3IGZuLgoJKiBleGNlcHRpb24uY2MgKHN0cnVjdCBjcF9laF9pbmZvKTogRGVmaW5lLgoJKF9fY3BfZXhjZXB0aW9uX2luZm8sIF9fdW5jYXRjaF9leGNlcHRpb24pOiBOZXcgZm5zLgoJKF9fY3BfcHVzaF9leGNlcHRpb24sIF9fY3BfcG9wX2V4Y2VwdGlvbik6IE5ldyBmbnMuCgkqIGV4Y2VwdC5jOiBMb3NlIHNhdmVkX3Rocm93X3t0eXBlLHZhbHVlLGNsZWFudXAsaW5fY2F0Y2h9LgoJTG9zZSBlbXB0eV9mbmRlY2wuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IExpa2V3aXNlLiAgX19laF9wYyBpcyBub3cgZXh0ZXJuYWwuCgkocHVzaF9laF9pbmZvKTogTmV3IGZuLgoJKGdldF9laF97aW5mbyx2YWx1ZSx0eXBlLGNhdWdodH0pOiBOZXcgZm5zLgoJKHB1c2hfZWhfY2xlYW51cCk6IEp1c3QgY2FsbCBfX2NwX3BvcF9leGNlcHRpb24uCgkoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogVXNlIHB1c2hfZWhfaW5mby4gIFN0YXJ0IHRoZSBlaCByZWdpb24KCXNvb25lci4KCShleHBhbmRfZW5kX2VoX3NwZWMpOiBVc2UgcHVzaF9laF9pbmZvLgoJKGV4cGFuZF90aHJvdyk6IENhbGwgX19jcF9wdXNoX2V4Y2VwdGlvbiB0byBzZXQgdXAgdGhlIGV4Y2VwdGlvbiBpbmZvLgoJSnVzdCBwYXNzIHRoZSBkZXN0cnVjdG9yIG9yIDAgYXMgdGhlIGNsZWFudXAuICBDYWxsIF9fdW5jYXRjaF9leGNlcHRpb24KCXdoZW4gd2UgcmV0aHJvdy4KCShleHBhbmRfYnVpbHRpbl90aHJvdyk6IERvbid0IHJlZmVyIHRvIGVtcHR5X2ZuZGVjbC4KClRodSBPY3QgMjMgMDI6MDE6MzAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IFNFVF9ERUNMX0lNUExJQ0lUX0lOU1RBTlRJQVRJT04gb24gbmV3IGRlY2wuCgoxOTk3LTEwLTIyICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMsIGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6CglBZGQgc3RhdGljIHRvIGRlZmluaXRpb25zLgoJKiBwdC5jIChhZGRfdG9fdGVtcGxhdGVfYXJncywgbm90ZV90ZW1wbGF0ZV9oZWFkZXIsCglwcm9jZXNzaW5nX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uLCB0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBMaWtld2lzZS4KCSh7ZGV0ZXJtaW5lLGNoZWNrfV9leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFVzZSBhIHNpbmdsZSBzdHJpbmcgZm9yCgllcnJvciBtZXNzYWdlcy4KCk1vbiBPY3QgMjAgMTI6MDY6MzQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9leGNlcHRpb25fYmxvY2tzKTogQ2FsbCBkb19wZW5kaW5nX3N0YWNrX2FkanVzdC4KCShleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuCgkoZXhwYW5kX2VuZF9laF9zcGVjKTogTGlrZXdpc2UuCgpNb24gT2N0IDIwIDExOjQ0OjIwIDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogSGFuZGxlIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucwoJY29ycmVjdGx5LgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX25hbWUpOiBGaXggcHJpbnRpbmcgb2Ygc3BlY2lhbGl6YXRpb25zIG9mCgltZW1iZXIgZnVuY3Rpb25zIHRoYXQgYXJlIG5vdCBtZW1iZXIgdGVtcGxhdGVzLgoJKiBjcC10cmVlLmggKHByb2Nlc3Npbmdfc3BlY2lhbGl6YXRpb24pOiBNYWtlIGdsb2JhbC4KCSogcHQuYyAocHJvY2Vzc2luZ19zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKiBsZXguYyAoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogU2F2ZSBhbmQgcmVzdG9yZQoJcHJvY2Vzc2luZ19zcGVjaWFsaXphdGlvbiB0byBhdm9pZCBjb25mdXNpb24uCgpNb24gT2N0IDIwIDEwOjUyOjIyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBHaXZlIG51bGxfbm9kZSB1bmtub3duKiB0eXBlLgoJKiB0eXBlY2suYyAoY29tcF90YXJnZXRfdHlwZXMpOiBIYW5kbGUgVU5LTk9XTl9UWVBFLgoJKGNvbW1vbl90eXBlKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGFyZ3NfYXNfc3RyaW5nKTogUmVjb2duaXplIG51bGxfbm9kZS4KClN1biBPY3QgMTkgMDk6MTM6MDEgMTk5NyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHR5cGVjay5jIChyYXRpb25hbGl6ZV9jb25kaXRpb25hbF9leHByKTogSGFuZGxlIHtNSU4sTUFYfV9FWFBSLgoJKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogQ2FsbCBpdCBmb3Ige01JTixNQVh9X0VYUFIuCgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbCB1c2luZ19laF9mb3JfY2xlYW51cHMuCgoJKiBNYWtlLWxhbmcuaW4gKGcrKyk6IEluY2x1ZGUgcHJlZml4Lm8uCgpUaHUgT2N0IDE2IDE1OjMxOjA5IDE5OTcgIEp1ZHkgR29sZGJlcmcgIDxqdWR5Z29sZEBzYW53YWZwLmNvbT4KCgkqIHB0LmMgKGRldGVybWluZV9leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEluaXRpYWxpemUgImR1bW15IgoJdG8ga2VlcCBQdXJpZnkgcXVpZXQuCgpUaHUgT2N0IDE2IDAwOjE0OjQ4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IEhhbmRsZSBURU1QTEFURV9DT05TVF9QQVJNcyBoZXJlLgoJKGJ1aWxkX292ZXJsb2FkX2ludCk6IE5vdCBoZXJlLgoKV2VkIE9jdCAxNSAwMDozNToyOCAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBjbGFzcy5jIChidWlsZF90eXBlX3BhdGhuYW1lKTogUmVtb3ZlLgoJKHByZXBhcmVfZnJlc2hfdnRhYmxlKTogRml4IHByb2JsZW0gd2l0aCBjb21wbGV4IE1JIHZ0YWJsZSBuYW1lcy4KCjE5OTctMTAtMTQgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHVuYXJ5X2V4cHIpOiBHaXZlIGEgcGVkd2FybiBpZiBzb21lb25lIHRyaWVzIHRvIHVzZSB0aGUKCSYmbGFiZWwgR05VIGV4dGVuc2lvbi4KClR1ZSBPY3QgMTQgMTI6MDE6MDAgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbC5jIChwdXNodGFnKTogVW5zZXQgREVDTF9BU1NFTUJMRVJfTkFNRSBiZWZvcmUgc2V0dGluZyBpdCwKCXNvIGFzIHRvIGF2b2lkIGluY29ycmVjdCBtYW5nbGluZ3MuCgkqIG1ldGhvZC5jIChidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBEb24ndCBtYW5nbGUgcmV0dXJuIHR5cGVzCglmb3IgY29uc3RydWN0b3JzLgoKVHVlIE9jdCAxNCAxMTo0NjoxNCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKHNjcmF0Y2hhbGxvYywgYnVpbGRfc2NyYXRjaF9saXN0LCBtYWtlX3NjcmF0Y2hfdmVjLAoJc2NyYXRjaF90cmVlX2NvbnMpOiBEZWZpbmUgYXMgbWFjcm9zIGZvciBub3cuCgkqIGNhbGwuYywgY2xhc3MuYywgY3Z0LmMsIGRlY2wuYywgZGVjbDIuYywgZXhjZXB0LmMsIGV4cHIuYywgaW5pdC5jLAoJbGV4LmMsIG1ldGhvZC5jLCBwYXJzZS55LCBwdC5jLCBydHRpLmMsIHNlYXJjaC5jLCB0cmVlLmMsIHR5cGVjay5jLAoJdHlwZWNrMi5jOiBVc2UgdGhlbSBhbmQgdGhlIGV4cHJlc3Npb25fb2JzdGFjayB2YXJpYW50cy4KCk1vbiBPY3QgMTMgMTc6NDE6MjYgMTk5NyAgQmVuamFtaW4gS29zbmlrICA8YmtvekByaGluby5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdG9yZV9yZXR1cm5faW5pdCk6IEFsbG93IGNsYXNzZXMgd2l0aCBleHBsaWNpdCBjdG9ycyB0bwoJYmUgdXNlZCB3aXRoIHRoZSBuYW1lZCByZXR1cm4gdmFsdWVzIGV4dGVuc2lvbi4KCkZyaSBPY3QgMTAgMTI6MjE6MTEgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IEZpeCBwcmV2aW91cyBjaGFuZ2UuCgpUaHUgT2N0ICA5IDEyOjA4OjIxIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IEZpeCB0aGlua28uCgkoaW5zdGFudGlhdGVfZGVjbCk6IFJlYWxseSB1c2UgdGhlIG9yaWdpbmFsIHRlbXBsYXRlLgoKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBVc2Ugc2ltcGxlIGNvbnN0cnVjdG9yX25hbWUgZm9yCgllcnJvciBtZXNzYWdlcy4KCldlZCBPY3QgIDggMjI6NDQ6NDIgMTk5NyAgSmVmZnJleSBBIExhdyAgPGxhd0BjeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGJ1aWxkX3VuZGVyc2NvcmVfaW50KTogRG9uJ3QgdXNlIEFOU0kgc3BlY2lmaWMKCWZlYXR1cmVzLgoKV2VkIE9jdCAgOCAwMDoxODoyMiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBDaGVjayBERUNMX1JFQUxMWV9FWFRFUk4KCWZvciBvdXIga2V5IG1ldGhvZDsgaXQgbWlnaHQgaGF2ZSBiZWVuIGlubGluZWQgYnkgLU8zLgoKVHVlIE9jdCAgNyAyMzowMDoxMiAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IERvIG5vdCB0cnkgdG8gY2FsbCBsb29rdXBfZmllbGQgZm9yCglub24tYWdncmVnYXRlIHR5cGVzLgoKVHVlIE9jdCAgNyAyMjo1MjoxMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfcmVpbnRlcnByZXRfY2FzdCk6IFR3ZWFrLgoKVHVlIE9jdCAgNyAyMjo0NTozMSAxOTk3ICBBbGV4YW5kcmUgT2xpdmEgIDxvbGl2YUBkY2MudW5pY2FtcC5icj4KCgkqIHR5cGVjay5jIChidWlsZF9yZWludGVycHJldF9jYXN0KTogQ29udmVydGluZyBhIHZvaWQgcG9pbnRlcgoJdG8gZnVuY3Rpb24gcG9pbnRlciB3aXRoIGEgcmVpbnRlcnByZXRfY2FzdCBwcm9kdWNlcyBhIHdhcm5pbmcKCWlmIC1wZWRhbnRpYyBpcyBpc3N1ZWQuCgpUdWUgT2N0ICA3IDIyOjQzOjQzIDE5OTcgIEJydW5vIEhhaWJsZSAgPGJydW5vQGxpbnVpeC5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogRG9uJ3Qgd2FybiBhYm91dCByZXR1cm5pbmcgYQoJcmVmZXJlbmNlLXR5cGUgdmFyaWFibGUgYXMgYSByZWZlcmVuY2UuCgpUdWUgT2N0ICA3IDIxOjExOjIyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9zdGF0aWNfbmFtZSk6IEZpeCB0eXBvLgoKMTk5Ny0xMC0wNyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBNYWtlIHN1cmUgREVDTF9MQU5HX1NQRUNJRklDIGlzIHNldCBvbgoJT0xEREVDTCBiZWZvcmUgd2UgdHJ5IHRvIGRvIERFQ0xfVVNFX1RFTVBMQVRFLgoKVHVlIE9jdCAgNyAwMDo0ODozNiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IHdhcm4gYWJvdXQgdGVtcGxhdGUgaW5zdGFuY2VzLgoKCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBMb3NlIGFuY2llbnQgY29kZSB0aGF0IHVuc2V0cwoJREVDTF9FWFRFUk5BTC4KCgkqIHB0LmMgKGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IExvc2Ugc3VwcG9ydCBmb3IgaW5zdGFudGlhdGluZwoJbm9uLXRlbXBsYXRlcy4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBGaXggaGFuZGxpbmcgb2YgbnVsbCBleHBsaWNpdAoJdGVtcGxhdGUgYXJncy4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCk1vbiBPY3QgIDYgMjM6NDQ6MzQgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogbWV0aG9kLmMgKGJ1aWxkX3VuZGVyc2NvcmVfaW50KTogRml4IHR5cG8uCgoxOTk3LTEwLTA2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHByaW50X2xhbmdfc3RhdGlzdGljcyk6ICNpZiAwIGNhbGwgdG8KCXByaW50X2lubGluZV9vYnN0YWNrX3N0YXRpc3RpY3MgdW50aWwgaXRzIGRlZmluaXRpb24gaXMgY2hlY2tlZCBpbi4KCk1vbiBPY3QgIDYgMDk6Mjc6MjkgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBNb3ZlIGR1bXBfdHJlZV9zdGF0aXN0aWNzIHRvIGVuZC4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBMb29rIGZvciB0aGUgb3JpZ2luYWwgdGVtcGxhdGUuCgkodHN1YnN0KTogU2V0IERFQ0xfSU1QTElDSVRfSU5TVEFOVElBVElPTiBvbiBwYXJ0aWFsIGluc3RhbnRpYXRpb25zCglvZiBtZW1iZXIgdGVtcGxhdGVzLgoKV2VkIE9jdCAgMSAwODo0MTozOCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZysrRkFRLiopOiBOZXcgcnVsZXMuCgkoQ09ORkxJQ1RTKTogVXBkYXRlLgoJKiBnKytGQVEudGV4aTogTW92ZWQgZnJvbSBsaWJnKysuCgoJKiBwYXJzZS55IChQRlVOQ05BTUUpOiBPbmx5IHNwZWNpZnkgdGhlIHR5cGUgb25jZS4KCjE5OTctMTAtMDEgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxhc2hlci5jeWdudXMuY29tPgoKCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBDbGVhbiB1cCB0aGUgY29kZSB0byBmdWxseSBiZWhhdmUgdGhlIHdheQoJdGhlIGMtbGV4LmMgcGFyc2VyIGRvZXMgZm9yIGNvbXBsZXggYW5kIHJlYWwgbnVtYmVycy4KClR1ZSBTZXAgMzAgMDg6NTE6MzYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGJ1aWxkX2RlY2xfb3ZlcmxvYWRfcmVhbCk6IFJlZm9ybWF0LgoKVHVlIFNlcCAzMCAwMDoxODoyNiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBJZiBhdF9lb2YsIGRldGVybWluZSBvdXIgbGlua2FnZS4KCjE5OTctMDktMjkgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QHR3aW5zdW4uY29tPgoKCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBUcmVhdCBgJCcganVzdCBsaWtlIGBfJywgZXhjZXB0IGlzc3VlIGEKCWRpYWdub3N0aWMgaWYgIWRvbGxhcnNfaW5faWRlbnQgb3IgaWYgcGVkYW50aWMuCgoJKiBsYW5nLXNwZWNzLmggKEBjKyspOiAtYW5zaSBubyBsb25nZXIgaW1wbGllcyAtJC4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6CgktdHJhZGl0aW9uYWwgYW5kIC1hbnNpIG5vdyBkbyBub3QgbWVzcyB3aXRoCglkb2xsYXJzX2luX2lkZW50LgoKTW9uIFNlcCAyOSAxOTo1Nzo1MSAxOTk3ICBILkouIEx1ICA8aGpsQGdudS5haS5taXQuZWR1PgoKCSogTWFrZWZpbGUuaW4gKHBhcnNlLm8sIGRlY2wubyk6IEFsc28gZGVwZW5kIG9uCgkkKHNyY2RpcikvLi4vZXhjZXB0LmggJChzcmNkaXIpLy4uL291dHB1dC5oLgoJKGRlY2wyLm8pOiBBbHNvIGRlcGVuZCBvbiAkKHNyY2RpcikvLi4vZXhwci5oIC4uL2luc24tY29kZXMuaAoJJChzcmNkaXIpLy4uL2V4Y2VwdC5oICQoc3JjZGlyKS8uLi9vdXRwdXQuaC4KCSh0eXBlY2subywgaW5pdC5vKTogQWxzbyBkZXBlbmQgb24gJChzcmNkaXIpLy4uL2V4cHIuaAoJLi4vaW5zbi1jb2Rlcy5oLgoKCSogY2FsbC5jLCBjcC10cmVlLmgsIGRlY2wuYywgdHJlZS5jOiBGaW5pc2ggcHJvdG90eXBpbmcuCgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogTWFrZSBpdCBzdGF0aWMuCgoJKiBkZWNsMi5jLCBpbml0LmMsIHR5cGVjay5jOiBJbmNsdWRlICJleHByLmgiLgoJKGV4cGFuZF9leHByKTogVXNlIHByb3BlciB2YWx1ZXMgd2hlbiBjYWxsaW5nIHRoZSBmdW5jdGlvbi4KCk1vbiBTZXAgMjkgMTE6MDU6NTQgMTk5NyAgQWxleGFuZHJlIE9saXZhICA8b2xpdmFAZGNjLnVuaWNhbXAuYnI+CgoJKiBsYW5nLW9wdGlvbnMuaDogTmV3IC1Xb2xkLXN0eWxlLWNhc3QgZmxhZy4KCSogY3AtdHJlZS5oICh3YXJuX29sZF9zdHlsZV9jYXN0KTogTmV3IHZhcmlhYmxlLgoJKiBkZWNsMi5jICh3YXJuX29sZF9zdHlsZV9jYXN0KTogTGlrZXdpc2UuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogU3VwcG9ydCAtV29sZC1zdHlsZS1jYXN0LgoJKHJlcGFyc2VfYWJzZGNsX2FzX2Nhc3RzKTogUHJvZHVjZSBvbGQtc3R5bGUtY2FzdCB3YXJuaW5nLgoKTW9uIFNlcCAyOSAwOToyMDo1MyAxOTk3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogQWxsb3cgZXhwYW5kX2FnZ3JfaW5pdCB0byBzZXQKCVRSRUVfVVNFRCwgcmVzZXQgdmFsdWUgYmFzZWQgb24gYWxyZWFkeV91c2VkLgoKCSogaW5pdC5jIChleHBhbmRfbWVtYmVyX2luaXQpOiBSZXZlcnQgY2hhbmdlLgoKTW9uIFNlcCAyOSAwODo1Nzo1MyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmgsIGRlY2wuYywgZGVjbDIuYywgcHQuYzoKCUxvc2UgREVDTF9DX1NUQVRJQyBhbmQgREVDTF9QVUJMSUMuICBEb24ndCBwcmV0ZW5kIHN0YXRpY3MgYXJlIHB1YmxpYy4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEFkZCBtaXNzaW5nIDsuCgpTYXQgU2VwIDI3IDE2OjIyOjQ4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBEaXNhYmxlIGluamVjdGlvbiBmb3IgYWxsIHRlbXBsYXRlLWRlcml2ZWQKCWRlY2xzLgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgLWZndWlkaW5nLWRlY2xzLgoJKiBwYXJzZS55IChub3R5cGVfdGVtcGxhdGVfZGVjbGFyYXRvcik6IE5ldyBub250ZXJtaW5hbC4KCShkaXJlY3Rfbm90eXBlX2RlY2xhcmF0b3IpOiBVc2UgaXQuCgkoY29tcGxleF9kaXJlY3Rfbm90eXBlX2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShvYmplY3RfdGVtcGxhdGVfaWQpOiBBY2NlcHQgYW55IGtpbmQgb2YgaWRlbnRpZmllciBhZnRlciBURU1QTEFURS4KCShub3R5cGVfcXVhbGlmaWVkX2lkKTogRG9uJ3QgYWRkIHRlbXBsYXRlIGRlY2xhcmF0b3JzIGhlcmUuCgpTYXQgU2VwIDI3IDE2OjIxOjU4IDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNhbGwuYyAoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZSk6IEFkZCBleHBsaWNpdF90YXJncyBwYXJhbWV0ZXIuCgkoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogVXNlIGl0LgoJKGJ1aWxkX292ZXJsb2FkX2NhbGxfcmVhbCk6IExpa2V3aXNlLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX29iamVjdF9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBIYW5kbGUgVEVNUExBVEVfSURfRVhQUi4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IEFkZCBzcGVjaWFsaXphdGlvbiBwYXNzIHRvCglkZXRlcm1pbmUgd2hpY2ggbWV0aG9kcyB3ZXJlIHNwZWNpYWxpemluZyB3aGljaCBvdGhlciBtZXRob2RzLgoJKGluc3RhbnRpYXRlX3R5cGUpOiBIYW5kbGUgVEVNUExBVEVfSURfRVhQUi4KCgkqIGNwLXRyZWUuZGVmIChURU1QTEFURV9JRF9FWFBSKTogTmV3IHRyZWUgY29kZS4KCgkqIGNwLXRyZWUuaCAobmFtZV9tYW5nbGluZ192ZXJzaW9uKTogTmV3IHZhcmlhYmxlLgoJKGZsYWdfZ3VpZGluZ19kZWNscyk6IExpa2V3aXNlLgoJKGJ1aWxkX3RlbXBsYXRlX2RlY2xfb3ZlcmxvYWQpOiBOZXcgZnVuY3Rpb24uCgkoYmVnaW5fc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCShyZXNldF9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKGVuZF9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKGRldGVybWluZV9leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkobG9va3VwX3RlbXBsYXRlX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IEFkZCBleHBsaWNpdF90YXJncyBwYXJhbWV0ZXIuCgkodHlwZV91bmlmaWNhdGlvbik6IExpa2V3aXNlLgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBBZGQgc21hcnRzIGZvciBleHBsaWNpdAoJc3BlY2lhbGl6YXRpb25zLgoJKGdyb2tkZWNsYXJhdG9yKTogSGFuZGxlIFRFTVBMQVRFX0lEX0VYUFIsIGFuZCBmdW5jdGlvbgoJc3BlY2lhbGl6YXRpb25zLgoJKGdyb2tmbmRlY2wpOiBDYWxsIGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uLgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1mbmFtZS1tYW5nbGluZy12ZXJzaW9uLgoJKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSGFuZGxlIFRFTVBMQVRFX0lEX0VYUFIuCgkoY2hlY2tfY2xhc3Nmbik6IEhhbmRsZSBzcGVjaWFsaXphdGlvbnMuCgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX25hbWUpOiBQcmludCBzcGVjaWFsaXphdGlvbiBhcmd1bWVudHMuCgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogRG9uJ3QgY2FsbCBwdXNoZGVjbCBmb3IgdGVtcGxhdGUKCWluc3RhbnRpYXRpb25zLgoKCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IEhhbmRsZSBURU1QTEFURV9JRF9FWFBSLgoKCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZm5hbWUtbWFuZ2xpbmctdmVyc2lvbiwgLWZndWlkaW5nLWRlY2xzLAoJYW5kIC1mbm8tZ3VpZGluZy1kZWNscy4KCgkqIGxleC5jIChpZGVudGlmaWVyX3R5cGUpOiBSZXR1cm4gUEZVTkNOQU1FIGZvciB0ZW1wbGF0ZSBmdW5jdGlvbgoJbmFtZXMuCgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfb3ZlcmxvYWRfaWRlbnRpZmllcik6IFVzZSBpdC4KCShidWlsZF91bmRlcnNjb3JlX2ludCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9vdmVybG9hZF9pbnQpOiBVc2UgaXQuICBBZGQgbGV2ZWxzIGZvciB0ZW1wbGF0ZQoJcGFyYW1ldGVycy4KCShidWlsZF9vdmVybG9hZF9uYW1lKTogTGlrZXdpc2UuICBBbHNvLCBoYW5kbGUgVFlQRU5BTUVfVFlQRXMuCgkoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWVzKTogSGFuZGxlIHRlbXBsYXRlIHR5cGUgcGFyYW1ldGVycy4KCShidWlsZF90ZW1wbGF0ZV9kZWNsX292ZXJsb2FkKTogTmV3IGZ1bmN0aW9uLgoKCSogcGFyc2UueSAoWVlTVFlQRSk6IE5ldyBudHlwZSBtZW1iZXIuCgkobmVzdGVkX25hbWVfc3BlY2lmaWVyKTogVXNlIGl0LgoJKG5lc3RlZF9uYW1lX3NwZWNpZmllcl8xKTogTGlrZXdpc2UuCgkoUEZVTkNOQU1FKTogTmV3IHRva2VuLgoJKHRlbXBsYXRlX2lkLCBvYmplY3RfdGVtcGxhdGVfaWQpOiBOZXcgbm9uLXRlcm1pbmFscy4KCSh0ZW1wbGF0ZV9wYXJtX2xpc3QpOiBOb3RlIHNwZWNpYWxpemF0aW9ucy4KCSh0ZW1wbGF0ZV9kZWYpOiBMaWtld2lzZS4KCShzdHJ1Y3RzcCk6IExpa2V3aXNlLgoJKGZuLmRlZjIpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucy4KCShjb21wb25lbnRfZGVjbF8xKTogTGlrZXdpc2UuCgkoZGlyZWN0X25vdHlwZV9kZWNsYXJhdG9yKTogSGFuZGxlIHRlbXBsYXRlLWlkcy4KCShjb21wb25lbnRfZGVjbF8xKTogTGlrZXdpc2UuCgkoZGlyZWN0X25vdHlwZV9kZWNsYXJhdG9yKTogSGFuZGxlIHRlbXBsYXRlLWlkcy4KCShwcmltYXJ5KTogSGFuZGxlIFRFTVBMQVRFX0lEX0VYUFIsIGFuZCB0ZW1wbGF0ZS1pZHMuCgoJKiBwdC5jIChwcm9jZXNzaW5nX3NwZWNpYWxpemF0aW9ucyk6IE5ldyB2YXJpYWJsZS4KCSh0ZW1wbGF0ZV9oZWFkZXJfY291bnQpOiBMaWtld2lzZS4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBOZXcgZnVuY3Rpb24uCgkocHJvY2Vzc2luZ19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IExpa2V3aXNlLgoJKG5vdGVfdGVtcGxhdGVfaGVhZGVyKTogTGlrZXdpc2UuCgkoaXNfbWVtYmVyX3RlbXBsYXRlKTogSGFuZGxlIHNwZWNpYWxpemF0aW9ucy4KCShlbmRfdGVtcGxhdGVfZGVjbCk6IENhbGwgcmVzZXRfc3BlY2lhbGl6YXRpb24uCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogSGFuZGxlIG1lbWJlciB0ZW1wbGF0ZSBzcGVjaWFsaXphdGlvbnMuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkodHN1YnN0X2NvcHkpOiBIYW5kbGUgVEVNUExBVEVfSURfRVhQUi4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IEhhbmRsZSBzcGVjaWFsaXphdGlvbnMuCgkoaW5zdGFudGlhdGVfZGVjbCk6IExpa2V3aXNlLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBIYW5kbGUgZXhwbGljaXRfdGFyZ3MuCgkodHlwZV91bmlmaWNhdGlvbik6IExpa2V3aXNlLiAgQWxsb3cgaW5jb21wbGV0ZSB1bmlmaWNhdGlvbgoJd2l0aG91dCBhbiBlcnJvciBtZXNzYWdlLCBpZiBhbGxvd19pbmNvbXBsZXRlLgoJKGdldF9iaW5kaW5ncyk6IFVzZSBuZXcgY2FsbGluZyBzZXF1ZW5jZSBmb3IgZm5fdHlwZV91bmlmaWNhdGlvbi4KCgkqIHNwZXcuYyAoeXlsZXgpOiBIYW5kbGUgUEZVTkNOQU1FLgoKCSogdHJlZS5jIChpc19vdmVybG9hZGVkX2ZuKTogSGFuZGxlIFRFTVBMQVRFX0lEX0VYUFIuCgkocmVhbGx5X292ZXJsb2FkZWRfZm4pOiBMaWtld2lzZS4KCShnZXRfZmlyc3RfZm4pOiBIYW5kbGUgZnVuY3Rpb24gdGVtcGxhdGVzLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IFVzZSByZWFsbHlfb3ZlcmxvYWRlZF9mbi4KCUhhbmRsZSBURU1QTEFURV9JRF9FWFBSLgoJKGJ1aWxkX3hfdW5hcnlfb3ApOiBMaWtld2lzZS4KCShidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKG1hcmtfYWRkcmVzc2FibGUpOiBUZW1wbGF0ZXMgd2hvc2UgYWRkcmVzcyBpcyB0YWtlbiBhcmUgbWFya2VkCglhcyB1c2VkLgoKMTk5Ny0wOS0yNSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRGVjbGFyZSBfX2J1aWx0aW5fY29uc3RhbnRfcCBhcwoJYWNjZXB0aW5nIGFueSBraW5kIG9mIHR5cGUsIG5vdCBvbmx5IGludC4KCkZyaSBTZXAgMjYgMDA6MjI6NTYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGdldF9tYXRjaGluZ192aXJ0dWFsKTogTm90aWNlIHZpcnR1YWwgYmFzZXMgd2hlbiBzb3JyeWluZwoJYWJvdXQgY292YXJpYW50IHJldHVybnMuCgoJKiBwYXJzZS55IChtZW1iZXJfaW5pdCk6IEFsc28gaW1wbHkgdHlwZW5hbWUgaGVyZS4gIFJlbW92ZSBhbmNpZW50CglleHRlbnNpb24gZm9yIGluaXRpYWxpemluZyBiYXNlIG1lbWJlcnMuCgpUaHUgU2VwIDI1IDExOjExOjEzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglIYW5kbGUgbXVsdGktbGV2ZWwgdHlwZW5hbWVzIGFuZCBpbXBsaWNpdCB0eXBlbmFtZSBpbiBiYXNlIGxpc3QuCgkqIHBhcnNlLnkgKHR5cGVuYW1lX3N1YnssWzAtMl19KTogTmV3IHJ1bGVzLgoJKHN0cnVjdHNwLCBydWxlIFRZUEVOQU1FX0tFWVdPUkQpOiBVc2UgdHlwZW5hbWVfc3ViLgoJKG5vbm5lc3RlZF90eXBlKTogTmV3IHJ1bGUuCgkoY29tcGxldGVfdHlwZV9uYW1lKTogVXNlIGl0LgoJKGJhc2VfY2xhc3MuMSk6IFVzZSB0eXBlbmFtZV9zdWIgYW5kIG5vbm5lc3RlZF90eXBlLgoJKG5lc3RlZF9uYW1lX3NwZWNpZmllcik6IERvbid0IGVsaWRlIHN0ZDo6IGhlcmUuCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogSGFuZGxlIGdldHRpbmcgYSB0eXBlIGZvciBOQU1FLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBUdXJuIHN0ZDo6IGludG8gOjogaGVyZS4KCglSdmFsdWUgY29udmVyc2lvbnMgd2VyZSByZW1vdmVkIGluIExvbmRvbi4KCSogY2FsbC5jIChpc19zdWJzZXEpOiBEb24ndCBjb25zaWRlciBsdmFsdWUgdHJhbnNmb3JtYXRpb25zLgoJKGJ1aWxkX2NvbnYpOiBMVkFMVUVfQ09OViBhbmQgUlZBTFVFX0NPTlYgZ2V0IElERU5USVRZX1JBTksuCgkoam91c3QpOiBSZS1lbmFibGUgPzoga2x1ZGdlLgoKMTk5Ny0wOS0yMiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IFVwIHdhcm5pbmcgb2Ygbm8gcmV0dXJuIHR5cGUgdG8gYmUgYQoJcGVkd2Fybi4KCk1vbiBTZXAgMjIgMTQ6MTU6MzQgMTk5NyAgQmVuamFtaW4gS29zbmlrICA8YmtvekByaGluby5jeWdudXMuY29tPgoKCSogaW5pdC5jIChleHBhbmRfbWVtYmVyX2luaXQpOiBEb24ndCBzZXQgVFJFRV9VU0VELgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogTWFyayBkZWNscyB1c2VkIGlmIHR5cGUgaGFzIFRSRUVfVVNFRAoJc2V0LGRvbid0IGNsZWFyIFRSRUVfVVNFRCB3aG9sZXNhbGUuCgpTYXQgU2VwIDIwIDE1OjMxOjAwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRG8gcmVxdWlyZV9jb21wbGV0ZV90eXBlIGJlZm9yZQoJYnVpbGRfY3BsdXNfbmV3LgoKVGh1IFNlcCAxOCAxNjo0Nzo1MiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkKTogQ2FsbCBjb21wbGV0ZV90eXBlIGluIGFsbCBjYXNlcy4KCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogSnVzdCB3YXJuIGFib3V0IGZsb3dpbmcgb2ZmIHRoZSBlbmQuCgpXZWQgU2VwIDE3IDEwOjMxOjI1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva3Bhcm1zKTogRG9uJ3QgYmFzaCBhIHBlcm1hbmVudCBsaXN0IG5vZGUgaWYgd2UncmUKCWluIGEgZnVuY3Rpb24uCgoxOTk3LTA5LTE3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQ09ORkxJQ1RTKTogRml4IHMvciBjb25mbGljdCBjb3VudCB0byAxOC4KClR1ZSBTZXAgMTYgMTQ6MDY6NTYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9uZXdfb3ApOiBHaXZlIGJldHRlciBlcnJvciBmb3Igc3ludGFjdGljYWxseQoJY29ycmVjdCwgYnV0IHNlbWFudGljYWxseSBpbnZhbGlkLCB1c2Ugb2YgdW5kZWNsYXJlZCB0ZW1wbGF0ZS4KCgkqIGNhbGwuYyAoY29tcGFyZV9xdWFsKTogSGFuZGxlIHBtZnMuCgoJKiBkZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHMpOiBsYXN0X3Bhcm1fY2xlYW51cF9pbnNuIGlzIHRoZSBpbnNuCglhZnRlciB0aGUgZXhjZXB0aW9uIHNwZWMuCgpNb24gU2VwIDE1IDExOjUyOjEzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAobnVsbF9wdHJfY3N0X3ApOiBJbnRlZ2VyIHR5cGUsIG5vdCBpbnRlZ3JhbCB0eXBlLgoKCSogY2FsbC5jIChqb3VzdCk6IERpc2FibGUgd2FybmluZ3MgdW50aWwgdGhleSBjYW4gYmUgbW92ZWQgdG8gdGhlCglyaWdodCBwbGFjZS4KCkZyaSBTZXAgMTIgMTY6MTE6MTMgMTk5NyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiwgY29uZmlnLWxhbmcuaW46ICBDb252ZXJ0IHRvIGF1dG9jb25mLgoKVGh1IFNlcCAxMSAxNzoxNDo1NSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBBZGQgaW1wbGljaXQgJ3R5cGVuYW1lJyB0byB0eXBlcyBmcm9tCgliYXNlIGNsYXNzZXMuCgoJKiBwdC5jIChtb3N0X3NwZWNpYWxpemVkX2NsYXNzKTogRml4IHR5cG8uCgkodHN1YnN0KTogTW92ZSBjb25zdGFudCBmb2xkaW5nIHRvIFRSRUVfVkVDIGNhc2UuCgpUaHUgU2VwIDExIDEwOjA4OjQ1IDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKGRvX3BvcGxldmVsKTogRG9uJ3Qgd2FybiBhYm91dCB1bnVzZWQgbG9jYWwgdmFyaWFibGVzCgl3aGlsZSBwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wgc2luY2Ugd2UgZG9uJ3QgYWx3YXlzIGtub3cgd2hldGhlcgoJb3Igbm90IHRoZXkgd2lsbCBuZWVkIGNvbnN0cnVjdGluZy9kZXN0cnVjdGluZy4KCgkqIHB0LmMgKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBDaGVjayB0aGUgdmFsdWVzIG9mIGFuIGVudW1lcmF0aW9uCgl0eXBlIHRvIG1ha2Ugc3VyZSB0aGV5IGRvbid0IGRlcGVuZCBvbiB0ZW1wbGF0ZSBwYXJtcy4KCgkqIGRlY2wuYyAobWFrZV90eXBlbmFtZV90eXBlKTogRG9uJ3QgbG9va3VwIHRoZSBmaWVsZCBpZiB0aGUKCWNvbnRleHQgdXNlcyB0ZW1wbGF0ZSBwYXJtcywgZXZlbiBpZiB3ZSdyZSBub3QKCXByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCBhdCB0aGUgbW9tZW50LgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogQXZvaWQgbG9va2luZyBhdCB0aGUKCVRZUEVfTEFOR19ERUNMIHBvcnRpb24gb2YgYSB0eXBlbmFtZSB0eXBlLCBzaW5jZSB0aGVyZSB3b24ndCBiZQoJb25lLgoJKHRzdWJzdCk6IERvIGNvbnN0YW50IGZvbGRpbmcgYXMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSB0aGF0Cglhcmd1bWVudHMgcGFzc2VkIHRvIGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyByZWFsbHkgYXJlIGNvbnN0YW50cy4KCldlZCBTZXAgMTAgMTE6MjE6NTUgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9idWlsdGluX3Rocm93KTogI2lmbmRlZiBEV0FSRjJfVU5XSU5EX0lORk8uCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogT25seSByZWdpc3RlciBleGNlcHRpb24gdGFibGVzIGlmIHdlCgluZWVkIHRvLgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCBfX2J1aWx0aW5fW2ZzXXAuCgpUdWUgU2VwICA5IDE5OjQ5OjM4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHVuaWZ5KTogSnVzdCByZXR1cm4gMCBmb3IgYSBUWVBFTkFNRV9UWVBFLgoKVHVlIFNlcCAgOSAxNzo1NzoyNSAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBBdm9pZCBjcmFzaGluZyB3aGVuIHByZXNlbnRlZCB3aXRoIGEKCXVuaW5pdGlhbGl6ZWQgY29uc3RhbnQsIGFzIGNhbiBvY2N1ciB3aXRoIGEgdGVtcGxhdGUgcGFyYW1ldGVyLgoJKGR1bXBfZXhwcik6IE1ha2Ugc3VyZSB0aGF0IHRoZXJlIGFyZSBlbm91Z2ggbGV2ZWxzIG9mCgljdXJyZW50X3RlbXBsYXRlX3Bhcm1zIGJlZm9yZSB3ZSBzdGFydCBkaXZpbmcgdGhyb3VnaCB0aGVtLgoKMTk5Ny0wOS0wOSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2luZGlyZWN0X3JlZik6IEhlZWQgRkxBR19WT0xBVElMRSBzaW1pbGFyIHRvCgljLXR5cGVjay5jLgoKVHVlIFNlcCAgOSAwOTozNjozOSAxOTk3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QHJoaW5vLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogQ2FsbCBidWlsZF9kZWxldGUgZm9yIGFsbAoJZXhjZXB0aW9uIHR5cGVzLCBub3QganVzdCBvYmplY3RzIHdpdGggZGVzdHJ1Y3RvcnMuCgpNb24gU2VwICA4IDAyOjMzOjIwIDE5OTcgIEpvZHkgR29sZGJlcmcgIDxqb2R5Z0BpZHQubmV0PgoKCSogZGVjbC5jIChjdXJyZW50X2xvY2FsX2VudW0pOiBSZW1vdmUgc3RhdGljLgoJKiBwdC5jICh0c3Vic3RfZW51bSk6IFNhdmUgYW5kIHJlc3RvcmUgdmFsdWUgb2YgY3VycmVudF9sb2NhbF9lbnVtCglpbiBjYXNlIHRlbXBsYXRlIGlzIGV4cGFuZGVkIGluIGVudW0gZGVjbC4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFVzZSBuZXcgdHN1YnN0X2VudW0gc2lnbmF0dXJlLgoJKHRzdWJzdF9leHByKTogTGlrZXdpc2UuCgpNb24gU2VwICA4IDAxOjIxOjQzIDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIHB0LmMgKGJlZ2luX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogVGFrZSBhIGZ1bmN0aW9uIGFzCglhcmd1bWVudCwgbm90IGEgc2V0IG9mIHRlbXBsYXRlIGFyZ3VtZW50cy4gIFVzZSB0aGUgdGVtcGxhdGUKCXBhcmFtZXRlcnMsIHJhdGhlciB0aGFuIHRoZSBhcmd1bWVudHMuICBIYW5kbGUgbm9uLXR5cGUgcGFyYW1ldGVycwoJY29ycmVjdGx5LiAgUHVzaCBhIGJpbmRpbmcgbGV2ZWwgZm9yIHRoZSBwYXJhbWV0ZXJzIHNvIHRoYXQgbXVsdGlwbGUKCW1lbWJlciB0ZW1wbGF0ZXMgdXNpbmcgdGhlIHNhbWUgcGFyYW1ldGVyIG5hbWVzIGNhbiBiZSBkZWNsYXJlZC4KCShlbmRfbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBQb3AgdGhlIGJpbmRpbmcgbGV2ZWwuCgkocHVzaF90ZW1wbGF0ZV9kZWNsKTogTWFyayBtZW1iZXIgdGVtcGxhdGVzIGFzIHN0YXRpYyB3aGVuCglhcHByb3ByaWF0ZS4KCgkqIGxleC5jIChkb19wZW5kaW5nX2lubGluZXMpOiBQYXNzIHRoZSBmdW5jdGlvbiwgbm90IGl0cyB0ZW1wbGF0ZQoJYXJndW1lbnRzLCB0byBiZWdpbl9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZy4KCShwcm9jZXNzX25leHRfaW5saW5lKTogTGlrZXdpc2UuCgkoZG9fcGVuZGluZ19kZWZhcmdzKTogTGlrZXdpc2UuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBPYnRhaW4gdGhlIGNvcnJlY3QgZGVjbGFyYXRpb24gZm9yIGEKCVRFTVBMQVRFX0NPTlNUX1BBUk0uCgoJKiBjYWxsLmMgKGFkZF90ZW1wbGF0ZV9jb252X2NhbmRpZGF0ZSk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9vYmplY3RfY2FsbCk6IEhhbmRsZSBtZW1iZXIgdGVtcGxhdGVzLCBhcyBkb25lIGluIHRoZSBvdGhlcgoJYnVpbGRfIGZ1bmN0aW9ucy4KClNhdCBTZXAgIDYgMTA6MjA6MjcgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogZGVjbC5jIChyZXBsYWNlX2RlZmFnKTogVW5kbyBwcmV2aW91cyBjaGFuZ2UuCgkqIGxleC5jIChkb19wZW5kaW5nX2RlZmFyZ3MpOiBEZWFsIHdpdGggbWVtYmVyIHRlbXBsYXRlcy4KCgkqIHB0LmMgKGlzX21lbWJlcl90ZW1wbGF0ZSk6IEF2b2lkIGNyYXNoaW5nIHdoZW4gcGFzc2VkIGEKCW5vbi1mdW5jdGlvbiBhcmd1bWVudC4KCkZyaSBTZXAgIDUgMTc6Mjc6MzggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZ3Jvd19tZXRob2QpOiBSZW1vdmUgY2hlY2sgZm9yIHJlZGVjbGFyYXRpb24uCgpGcmkgU2VwICA1IDAxOjM3OjE3IDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNwLXRyZWUuaCAoSU5ORVJNT1NUX1RFTVBMQVRFX1BBUk1TKTogTmV3IG1hY3JvLgoJKERFQ0xfSU5ORVJNT1NUX1RFTVBMQVRFX1BBUk1TKTogTGlrZXdpc2UuCgkoUFJJTUFSWV9URU1QTEFURV9QKTogVXNlIGl0LgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJsb2FkX2NhbGxfcmVhbCk6IFVzZSBpdC4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbCk6IExpa2V3aXNlLgoJKGNsYXNzdHlwZV9tYW5nbGVkX25hbWUpOiBMaWtld2lzZS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCgkqIGNwLXRyZWUuaCAoREVDTF9OVFBBUk1TKTogQ2hhbmdlIG5hbWUgZnJvbSBERUNMX05UX1BBUk1TIHRvCglERUNMX05UUEFSTVMgdG8gY29uZm9ybSB0byB1c2FnZSBlbHNld2hlcmUuCgkqIGNhbGwuYyAoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZSk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogTGlrZXdpc2UuCgkqIHB0LmMgKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoZ2V0X2JpbmRpbmdzKTogTGlrZXdpc2UuCgoJKiBjbGFzcy5jIChncm93X21ldGhvZCk6IFVzZSBERUNMX0ZVTkNUSU9OX1RFTVBMQVRFX1AgaW5zdGVhZCBvZgoJaXNfbWVtYmVyX3RlbXBsYXRlLgoKCSogcHQuYyAodW5pZnkpOiBVbmRvIGNoYW5nZXMgdG8gYWxsb3cgbXVsdGlwbGUgbGV2ZWxzIG9mIHRlbXBsYXRlCglwYXJhbWV0ZXJzLgoJKHR5cGVfdW5pZmljYXRpb24pOiBMaWtld2lzZS4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuCgkoZ2V0X2NsYXNzX2JpbmRpbmdzKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoTGlrZXdpc2UpLgoKCSogZGVjbC5jIChyZXBsYWNlX2RlZmFyZyk6IENoZWNrIHRoYXQgdGhlIHR5cGUgb2YgdGhlIGRlZmF1bHQKCXBhcmFtZXRlciBkb2VzIG5vdCBpbnZsb3ZlIGEgdGVtcGxhdGUgdHlwZSBiZWZvcmUgY29tcGxhaW5pbmcKCWFib3V0IHRoZSBpbml0aWFsaXphdGlvbi4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IERlYWwgd2l0aCB0ZW1wbGF0ZSBjb25zdGFudCBwYXJhbWV0ZXJzIGluCgltZW1iZXIgdGVtcGxhdGVzIGNvcnJlY3RseS4KCgkqIHB0LmMgKGlzX21lbWJlcl90ZW1wbGF0ZSk6IERlYWwgd2l0aCBjbGFzcyBzcGVjaWFsaXphdGlvbnMKCWNvcnJlY3RseS4KCSh0c3Vic3QpOiBIYW5kbGUgInBhcnRpYWwgaW5zdGFudGlhdGlvbiIgb2YgbWVtYmVyIHRlbXBsYXRlcwoJY29ycmVjdGx5LgoKV2VkIFNlcCAgMyAxMjozMDoyNCAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBwdC5jICh0eXBlX3VuaWZpY2F0aW9uKTogQ2hhbmdlIGNhbGxpbmcgc2VxdWVuY2UgdG8gYWxsb3cgZm9yCgltdWx0aXBsZSBsZXZlbHMgb2YgdGVtcGxhdGUgcGFyYW1ldGVycy4KCSh0c3Vic3RfZXhwcik6IExpa2V3aXNlLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoJKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBMaWtld2lzZS4KCSh1bmlmeSk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJsb2FkX2NhbGxfcmVhbCk6IFVzZSBpdC4KCShhZGRfYnVpbHRpbl9jYW5kaWRhdGUpOiBVc2UgaXQuCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogVXNlIGl0LgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogVXNlIGl0LgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIGl0LgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IFVzZSBpdC4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBVc2UgaXQuCgoJKiBjYWxsLmMgKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGUpOiAgQWRkIGFkZGl0aW9uYWwgcGFyYW1ldGVyIGZvcgoJdGhlIGZ1bmN0aW9uIHJldHVybiB0eXBlLiAgQ2FsbCBmbl90eXBlX3VuaWZpY2F0aW9uIGlzdGVhZCBvZgoJdHlwZV91bmlmaWNhdGlvbi4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSGFuZGxlIG1lbWJlciB0ZW1wbGF0ZXMuCgkoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfb3ApOiBMaWtld2lzZS4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCgkqIGNsYXNzLmMgKGdyb3dfbWV0aG9kKTogRG9uJ3QgZ2l2ZSBhbiBlcnJvciBtZXNzYWdlIGluZGljYXRpbmcKCXRoYXQgdHdvIG1lbWJlciB0ZW1wbGF0ZXMgd2l0aCB0aGUgc2FtZSBuYW1lIGFyZSBhbWJpZ3VvdXMuCgkoZmluaXNoX3N0cnVjdCk6IFRyZWF0IG1lbWJlciB0ZW1wbGF0ZSBmdW5jdGlvbnMganVzdCBsaWtlIG1lbWJlcgoJZnVuY3Rpb25zLgoKCSogY3AtdHJlZS5oIChjaGVja19tZW1iZXJfdGVtcGxhdGUpOiBBZGQgZGVjbGFyYXRpb24uCgkoYmVnaW5fbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShlbmRfbWVtYmVyX3RlbXBsYXRlX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShmbl90eXBlX3VuaWZpY2F0aW9uKTogTGlrZXdpc2UuCgkoaXNfbWVtYmVyX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkodHN1YnN0KTogQ2hhbmdlIHByb3RvdHlwZS4KCSh0c3Vic3RfZXhwcik6IExpa2V3aXNlLgoJKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShnZXRfYmluZGluZ3MpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZGVjbHNfbWF0Y2gpOiBIYW5kbGUgbXVsdGlwbGUgbGV2ZWxzIG9mIHRlbXBsYXRlCglwYXJhbWV0ZXJzLgoJKHB1c2hkZWNsKTogSGFuZGxlIHRlbXBsYXRlIHR5cGUgcGFyYW1zIGp1c3QgbGlrZSBvdGhlciB0eXBlCglkZWNsYXJhdGlvbnMuCgkocHVzaF9jbGFzc19sZXZlbF9iaW5kaW5nKTogUmV0dXJuIGltbWVkaWF0ZWx5IGlmIHRoZQoJY2xhc3NfYmluZGluZ19sZXZlbCBpcyBOVUxMLgoJKGdyb2tmbmRlY2wpOiBJZiBjaGVja19jbGFzc2ZuKCkgcmV0dXJucyBhIG1lbWJlcl90ZW1wbGF0ZSwgdXNlCgl0aGUgcmVzdWx0IG9mIHRoZSB0ZW1wbGF0ZSwgbm90IHRoZSB0ZW1wbGF0ZSBpdHNlbGYuCgoJKiBkZWNsMi5jIChjaGVja19tZW1iZXJfdGVtcGxhdGUpOiBOZXcgZnVuY3Rpb24uICBDaGVjayB0byBzZWUKCXRoYXQgdGhlIGVudGl0eSBkZWNsYXJlZCB0byBiZSBhIG1lbWJlciB0ZW1wbGF0ZSBjYW4gYmUgb25lLgoJKGNoZWNrX2NsYXNzZm4pOiBBbGxvdyByZWRlY2xhcmF0aW9uIG9mIG1lbWJlciB0ZW1wbGF0ZSBmdW5jdGlvbnMKCXdpdGggZGlmZmVyZW50IHR5cGVzOyB0aGUgbmV3IGZ1bmN0aW9ucyBjYW4gYmUgc3BlY2lhbGl6YXRpb25zIG9yCglleHBsaWNpdCBpbnN0YW50aWF0aW9ucy4KCgkqIGVycm9yLmMgKGR1bXBfZGVjbCk6IEhhbmRsZSBtdWx0aXBsZSBsZXZlbHMgb2YgdGVtcGxhdGUKCXBhcmFtZXRlcnMuCgkoZHVtcF9mdW5jdGlvbl9kZWNsKTogVXBkYXRlIHRvIGhhbmRsZSBmdW5jdGlvbiB0ZW1wbGF0ZXMuCgoJKiBsZXguYyAoZG9fcGVuZGluZ19pbmxpbmVzKTogU2V0IHVwIHRlbXBsYXRlIHBhcmFtZXRlciBjb250ZXh0Cglmb3IgbWVtYmVyIHRlbXBsYXRlcy4KCShwcm9jZXNzX25leHRfaW5saW5lKTogTGlrZXdpc2UuCgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfaWRlbnRpZmllcik6IEFkanVzdCBmb3IgbXVsdGlwbGUgbGV2ZWxzCglvZiB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKCSogcGFyc2UueSAoZm4uZGVmMik6IEFkZCBtZW1iZXIgdGVtcGxhdGVzLgoJKGNvbXBvbmVudF9kZWNsXzEpOiBMaWtld2lzZS4KCgkqIHB0LmMgKGJlZ2luX21lbWJlcl90ZW1wbGF0ZV9wcm9jZXNzaW5nKTogTmV3IGZ1bmN0aW9uLgoJKGVuZF9tZW1iZXJfdGVtcGxhdGVfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKGlzX21lbWJlcl90ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBMaWtld2lzZS4KCShjdXJyZW50X3RlbXBsYXRlX3Bhcm1zKTogUmV0dXJuIGEgdmVjdG9yIG9mIGFsbCB0aGUgdGVtcGxhdGUKCXBhcm1zLCBub3QganVzdCB0aGUgaW5uZXJtb3N0IGxldmVsIG9mIHBhcm1zLgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IERlYWwgd2l0aCB0aGUgcG9zc2liaWxpdHkgb2YgbWVtYmVyCgl0ZW1wbGF0ZXMuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodXNlc190ZW1wbGF0ZV9wYXJtcyk6IExpa2V3aXNlLgoJKHRzdWJzdCk6IE1vZGlmeSBwcm9jZXNzaW5nIHRvIFRFTVBMQVRFX1RZUEVfUEFSTSBhbmQKCVRFTVBMQVRFX0NPTlNUX1BBUk0gdG8gZGVhbCB3aXRoIG11bHRpcGxlIGxldmVscyBvZiB0ZW1wbGF0ZQoJYXJndW1lbnRzLiAgIEFkZCBwcm9jZXNzaW5nIG9mIFRFTVBMQVRFX0RFQ0wgdG8gcHJvZHVjZSBuZXcKCVRFTVBMQVRFX0RFQ0xzIGZyb20gb2xkIG9uZXMuCgkoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogSGFuZGxlIG1lbWJlciB0ZW1wbGF0ZXMuCgoJKiBzZWFyY2guYyAobG9va3VwX2ZuZmllbGRzXzEpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlIGNvbnZlcnNpb24KCW9wZXJhdG9ycy4KCgkqIHRyZWUuYyAoY3BfdHJlZV9lcXVhbCk6IENoZWNrIHRoZSBsZXZlbHMsIGFzIHdlbGwgYXMgdGhlCglpbmRpY2VzLCBvZiBURU1QTEFURV9DT05TVF9QQVJNcy4KCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBDaGVjayB0aGUgbGV2ZWxzLCBhcyB3ZWxsIGFzIHRoZSBpbmRpY2VzLAoJZm8gVEVNUExBVEVfVFlQRV9QQVJNcy4KCShidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBUcmVhdCBtZW1iZXIgdGVtcGxhdGVzIGxpa2UgbWVtYmVyCglmdW5jdGlvbnMuCgpXZWQgU2VwICAzIDExOjA5OjI1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBBbHdheXMgY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24KCWJlZm9yZSBjaGVja2luZyBmb3IgcmV0dXJuaW5nIGEgcG9pbnRlciB0byBsb2NhbC4KCgkqIHB0LmMgKHR5cGVfdW5pZmljYXRpb24pOiBJZiBzdHJpY3QgYW5kIHRoZSBmdW5jdGlvbiBwYXJtIGRvZXNuJ3QKCXVzZSB0ZW1wbGF0ZSBwYXJtcywganVzdCBjb21wYXJlIHR5cGVzLgoKV2VkIFNlcCAgMyAxMDozNTo0OSAxOTk3ICBLbGF1cyBFc3BlbmxhdWIgIDxrZXNwZW5sYUBzdHVkZW50LmluZm9ybWF0aWsudW5pLXVsbS5kZT4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZGVkX3ZhbHVlKTogUmVwbGFjZSBkaXJlY3QgY2FsbAoJdG8gdGhlIGZsb2F0aW5nIHBvaW50IGVtdWxhdG9yIHdpdGggUkVBTF9WQUxVRV9UT19ERUNJTUFMIG1hY3JvLgoKV2VkIFNlcCAgMyAwMDowMjo1MyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBEb24ndCBhcmJpdHJhcmlseSBjaG9vc2UgdGhlIGZpcnN0CglvZiBhIHNldCBvZiBvdmVybG9hZGVkIGZ1bmN0aW9ucy4KClR1ZSBTZXAgIDIgMTI6MDk6MTMgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBEb24ndCBlbGlkZSBfX0ZVTkNUSU9OX18uCgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfdmFsdWUpOiBBZGQgaW5fdGVtcGxhdGUgcGFybS4KCShidWlsZF9vdmVybG9hZF9pbnQpOiBMaWtld2lzZS4KCShidWlsZF9vdmVybG9hZF9pZGVudGlmaWVyKTogUGFzcyBpdC4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3QgYmFzaCBhIHByZXZpb3VzIHRlbXBsYXRlCglkZWZpbml0aW9uIHdpdGggYSByZWRlY2xhcmF0aW9uLgoKCSogcHQuYyAodW5pZnkpOiBmbG9hdCBkb2Vzbid0IG1hdGNoIGRvdWJsZS4KCgkqIHB0LmMgKGRvX3R5cGVfaW5zdGFudGlhdGlvbik6IEhhbmRsZSBnZXR0aW5nIGEgX1RZUEUgb3IgYQoJVFlQRV9ERUNMLiAgSGFuZGxlIGdldHRpbmcgbm9uLXRlbXBsYXRlIHR5cGVzLgoJKiBwYXJzZS55IChleHBsaWNpdF9pbnN0YW50aWF0aW9uKTogVXNlIHR5cGVzcGVjIGluc3RlYWQgb2YKCWFnZ3IgdGVtcGxhdGVfdHlwZS4KClR1ZSBTZXAgIDIgMTA6Mjc6MDggMTk5NyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jMSk6IENsZWFuIHVwIHB0ci0+aW50IGNhc3Qgd2FybmluZ3MuCgpNb24gU2VwICAxIDEzOjE5OjA0IDE5OTcgIEV1Z2VuZSBNYW1jaGl0cyAgPGV1Z2luQGlwcy5yYXMucnU+CgoJKiBjYWxsLmMgKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IEFkZCBtaXNzaW5nIFRSRUVfVFlQRS4KCShjb21wYXJlX2ljcyk6IExpa2V3aXNlLgoKTW9uIFNlcCAgMSAxMzoxOTowNCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGpvdXN0KTogV2FybiBhYm91dCBjaG9vc2luZyBvbmUgY29udmVyc2lvbiBvcCBvdmVyCglhbm90aGVyIGJlY2F1c2Ugb2YgJ3RoaXMnIGFyZ3VtZW50IHdoZW4gdGhlIG90aGVyIHJldHVybiB0eXBlIGlzCgliZXR0ZXIuCgkoc291cmNlX3R5cGUpOiBOZXcgZm4uCgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IFN0cmlwIGxlYWRpbmcgUkVGX0JJTkQgZnJvbSBmaXJzdCBvcGVyYW5kCgl0byBidWlsdGluIG9wZXJhdG9yLgoKCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IE1hcmsgYWJvcnRfZm5kZWNsIGFzIHVzZWQgd2hlbiB3ZQoJdXNlIGl0cyBSVEwuCgpUaHUgQXVnIDI4IDA5OjQ1OjIzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAobnVsbF9wdHJfY3N0X3ApOiBSZW1vdmUgc3VwcG9ydCBmb3IgKHZvaWQqKTAuCgpXZWQgQXVnIDI3IDAyOjAzOjM0IDE5OTcgIEplZmZyZXkgQSBMYXcgIDxsYXdAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChleHBhbmRfdGFyZ2V0X2V4cHIpOiBNYWtlIGRlZmluaXRpb24gbWF0Y2ggZGVjbGFyYXRpb24uCgoJKiBjbGFzcy5jIChnZXRfYmFzZWZuZGVjbHMpOiBNYWtlIGRlZmluaXRpb24gbWF0Y2ggZGVjbGFyYXRpb24uCgpNb24gQXVnIDI1IDE0OjMwOjAyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGlucHV0LmMgKHN1Yl9nZXRjaCk6IEV2ZW50dWFsbHkgZ2l2ZSB1cCBhbmQgcmVsZWFzZSB0aGUgaW5wdXQgZmlsZS4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBJZiAjcCBpL2ksIHB1dCBpbmxpbmUgc3RhdGljcyBpbiB0aGUKCXJpZ2h0IHBsYWNlLgoKCSogY2FsbC5jIChqb3VzdCk6IFR3ZWFrIG1lc3NhZ2UuCgpTYXQgQXVnIDIzIDE4OjAyOjU5IDE5OTcgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGVycm9yLmMgKHR5cGVfYXNfc3RyaW5nKTogUHV0IGNvbnN0L3ZvbGF0aWxlIG9uIHRlbXBsYXRlIHR5cGUKCXBhcmFtZXRlcnMgd2hlcmUgYXBwcm9wcmlhdGUuCgpTYXQgQXVnIDIzIDE3OjQ3OjIyIDE5OTcgIEplZmZyZXkgQSBMYXcgIDxsYXdAY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoc3RyaWN0bHlfYmV0dGVyKTogTWFrZSBhcmd1bWVudHMgdW5zaWduZWQgaW50cy4KClRodSBBdWcgMjEgMTg6NDg6NDQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBSZWZlciB0byBfX2NvbXBsZXggaW5zdGVhZCBvZiBjb21wbGV4LgoKVGh1IEF1ZyAyMSAyMjoyNTo0NiAxOTk3ICBKIm9ybiBSZW5uZWNrZSAgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBEb24ndCB1c2UgZ2V0YyBkaXJlY3RseS4KCldlZCBBdWcgMjAgMTc6MjU6MDggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChpc19zdWJzZXEpOiBEb24ndCB0cnkgdG8gYmUgY2xldmVyLgoKV2VkIEF1ZyAyMCAwMzoxMzozNiAxOTk3ICBILkouIEx1ICAoaGpsQGdudS5haS5taXQuZWR1KQoKCSogcGFyc2UueSwgcHQuYzogSW5jbHVkZSAiZXhjZXB0LmgiLgoJKiBjYWxsLmMsIGNsYXNzLmMsIGNsYXNzLmgsIGNwLXRyZWUuaCwgY3Z0LmMsIGRlY2wuYywgZGVjbDIuYywKCWVycm9yLmMsIGV4Y2VwdC5jLCBleHByLmMsIGZyaWVuZC5jLCBnKytzcGVjLmMsIGluaXQuYywgaW5wdXQuYywKCWxleC5jLCBsZXguaCwgbWV0aG9kLmMsIHBhcnNlLnksIHB0LmMsIHJlcG8uYywgcnR0aS5jLCBzZWFyY2guYywKCXNpZy5jLCBzcGV3LmMsIHRyZWUuYywgdHlwZWNrLmMsIHR5cGVjazIuYywgeHJlZi5jOiBGaW5pc2gKCXByb3RvdHlwaW5nLgoKV2VkIEF1ZyAyMCAwMTozNDo0MCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChtYXJrX3Z0YWJsZV9lbnRyaWVzKTogSW5zdGVhZCBvZiByZXBsYWNpbmcgcHVyZQoJdmlydHVhbHMgd2l0aCBhIHJlZmVyZW5jZSB0byBfX3B1cmVfdmlydHVhbCwgY29weSB0aGUgZGVjbCBhbmQKCWNoYW5nZSB0aGUgUlRMLgoKVHVlIEF1ZyAxOSAwMjoyNjowNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChsb29rdXBfbmVzdGVkX3R5cGVfYnlfbmFtZSk6IEhhbmRsZSB0eXBlZGVmIHdpZXJkbmVzcy4KCgkqIHR5cGVjazIuYyAobXlfZnJpZW5kbHlfYWJvcnQpOiBSZXBvcnQgYnVncyB0byBlZ2NzLWJ1Z3NAY3lnbnVzLmNvbS4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogQ2FsbCByZXBvX3RlbXBsYXRlX3VzZWQKCWJlZm9yZSBmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wuCgoJKiBjYWxsLmMgKGlzX3N1YnNlcSk6IE5ldyBmbi4KCShjb21wYXJlX2ljcyk6IFVzZSBpdC4KCgkqIHJlcG8uYyAoZmluaXNoX3JlcG8pOiBEb24ndCBjcmFzaCBvbiBubyBhcmdzLgoKCSogcGFyc2UueSAobmFtZWRfY29tcGxleF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGUpOiBIYW5kbGUKCWV4cGxpY2l0IGdsb2JhbCBzY29wZS4KCSogZGVjbDIuYyAoaGFuZGxlX2NsYXNzX2hlYWQpOiBOZXcgZm4uCgoJKiBwdC5jICh1bmlmeSk6IEFkZCBDT05TVF9ERUNMIGNhc2UuCgpUaHUgQXVnIDE0IDEwOjA1OjEzIDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAocGVybWFuZW50X29ic3RhY2spOiBGaXggZGVjbCB0byBub3QgYmUgYSBwb2ludGVyLgoKCSogY3AtdHJlZS5oIChyZXBvcnRfdHlwZV9taXNtYXRjaCk6IEFkZCBwcm90b3R5cGUuCgkqIGNhbGwuYyAoYnVpbGRfb3ZlcmxvYWRfY2FsbF9yZWFsKTogUmVtb3ZlIGVycm9uZW91cyBmb3VydGgKCWFyZ3VtZW50IHRvIHJlcG9ydF90eXBlX21pc21hdGNoLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBSZW1vdmUgZXJyb25lb3VzIHNlY29uZCBhcmcgdG8KCXRvdXJuZXkuCgkoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9vYmplY3RfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoKV2VkIEF1ZyAxMyAxOToxOToyNSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBEb24ndCBib3RoZXIgcHJvY2Vzc2luZyBhIGZ1bmN0aW9uIHdpdGggbm8KCURFQ0xfTEFOR19TUEVDSUZJQy4KCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogQ2FsbCBpbml0X2Z1bmN0aW9uX3N0YXJ0IGluIHRoZSBtYWNybyBjYXNlLgoKV2VkIEF1ZyAxMyAxMDo0NjoxOSAxOTk3ICBILkouIEx1ICAoaGpsQGdudS5haS5taXQuZWR1KQoKCSogZGVjbDIuYyAoREVGQVVMVF9WVEFCTEVfVEhVTktTKTogRGVmaW5lIHRvIGJlIDAgaWYgbm90CglkZWZpbmVkIGFuZCB1c2VkIHRvIHNldCBmbGFnX3Z0YWJsZV90aHVua3MuCgpUdWUgQXVnIDEyIDIwOjEzOjU3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnk6IERvbid0IGNsZWFyIHRoZSBpbmxpbmVzIGZyb20gdGhlaXIgb2JzdGFjayB1bnRpbCB0aGV5J3ZlCglhbGwgYmVlbiBwcm9jZXNzZWQuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IGNvbXBsYWluIGFib3V0IGV4Y2VwdGlvbgoJc3BlY2lmaWNhdGlvbiBtaXNtYXRjaCBpZiBmbGFnX2V4Y2VwdGlvbnMgaXMgb2ZmLgoKTW9uIEF1ZyAxMSAxNTowMTo1NiAxOTk3ICBNYXJjIExlaG1hbm4gIDxwY2dAZ29vZi5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGMrKy5kaXN0Y2xlYW4pOiBSZW1vdmUgZysrLmMgb24gbWFrZSBkaXN0Y2xlYW4uCgpTdW4gQXVnIDEwIDEyOjA2OjA5IDE5OTcgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QHR3aW5zdW4uY29tPgoKCSogY3AtdHJlZS5oOiBSZXBsYWNlIFNURElPX1BST1RPIHdpdGggUFJPVE8gaW4gaW5jbHVkZSBmaWxlcy4KCSogY3Z0LmMsIGVycm9yLmMsIGV4Y2VwdC5jLCBleHByLmMsIGZyaWVuZC5jLCBpbml0LmMsIHJ0dGkuYzoKCUluY2x1ZGUgPHN0ZGlvLmg+IGJlZm9yZSBpbmNsdWRlIGZpbGVzIHRoYXQgZm9ybWVybHkgdXNlZCBTVERJT19QUk9UTy4KCgkqIGRlY2wuYywgZysrc3BlYy5jLCBsZXguYywgbWV0aG9kLmMsIHJlcG8uYzoKCUluY2x1ZGUgImNvbmZpZy5oIiBmaXJzdCwgYXMgcGVyIGF1dG9jb25mIG1hbnVhbC4KCkZyaSBBdWcgIDggMTE6NDc6NDggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBUd2VhayB3b3JkaW5nLgoJKiBsZXguYyAoZG9fcGVuZGluZ19kZWZhcmdzKTogRG9uJ3QgZGllIGlmIHdlIHNlZSBhIGRlZmF1bHQgYXJnCgl0aGF0IGlzbid0IGEgREVGQVVMVF9BUkcuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSBERUZBVUxUX0FSRy4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtZmhhbmRsZS1leGNlcHRpb25zLgoJKiBsYW5nLW9wdGlvbnMuaDogQWRkIC1maGFuZGxlLWV4Y2VwdGlvbnMuCgoJKiBjbGFzcy5jIChidWlsZF92dGFibGUpOiBWdGFibGVzIGFyZSBhcnRpZmljaWFsLgoJKHByZXBhcmVfZnJlc2hfdnRhYmxlKTogTGlrZXdpc2UuCgpXZWQgQXVnICA2IDExOjAyOjM2IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChvY3BfY29udmVydCk6IEFmdGVyIGNvbnZlcnRpbmcgdG8gdGhlIHRhcmdldCB0eXBlLCBzZXQKCUxPT0tVUF9OT19DT05WRVJTSU9OLgoKCSogY2FsbC5jIChqb3VzdCk6IFdhcm4gYWJvdXQgcG90ZW50aWFsbHkgY29uZnVzaW5nIHByb21vdGlvbiBydWxlcwoJd2l0aCAtV3NpZ24tcHJvbW8uCgkqIGNwLXRyZWUuaCwgbGFuZy1vcHRpb25zLmgsIGRlY2wyLmM6IFN1cHBvcnQgLVdzaWduLXByb21vLgoKVHVlIEF1ZyAgNSAxNToxNTowNyAxOTk3ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdGlvbi5jYzogRGVjbGFyZSBfX3Rlcm1pbmF0ZV9mdW5jIHdpdGggbm9yZXR1cm4gYXR0cmlidXRlLgoKRnJpIEF1ZyAgMSAwMzoxODoxNSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55OiBCcmVhayBvdXQgZWF0X3NhdmVkX2lucHV0LCBoYW5kbGUgZXJyb3JzLgoJKGZ1bmN0aW9uX3RyeV9ibG9jayk6IFVzZSBjb21wc3RtdCBpbnN0ZWFkIG9mIGNvbXBzdG10X29yX2Vycm9yLgoKVGh1IEp1bCAzMSAxNzoxNDowNCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX25ldyk6IERvbid0IHNldCBUUkVFX0FERFJFU1NBQkxFLgoKRnJpIEp1bCAgNCAwMTo0NToxNiAxOTk3ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoY3BsaWIyLnR4dCwgY3BsaWIyLnJlYWR5KTogSW5zdGVhZCBvZiBjaGVja2luZyBmb3IKCWV4aXN0ZW5jZSBvZiBjYzFwbHVzIGNoZWNrIHdoZXRoZXIgJChMQU5HVUFHRVMpIGNvbnRhaW5zIEMrKy4KCldlZCBKdWwgMzAgMTM6MDQ6MjEgMTk5NyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IFdoZW4gY29weWluZyBhbiBhbm9ueW1vdXMKCXVuaW9uIG1lbWJlciBsb29wIGFyb3VuZCB0byBoYW5kbGUgbmVzdGVkIGFub255bW91cyB1bmlvbnMuICBVc2UKCXRoZSBvZmZzZXQgb2YgdGhlIG1lbWJlciByZWxhdGl2ZSB0byB0aGUgb3V0ZXIgc3RydWN0dXJlLCBub3QgdGhlCgl1bmlvbi4KClR1ZSBKdWwgMjkgMjE6MTc6MjkgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChyZXNvbHZlX2FyZ3MpOiBOZXcgZm4uCgkoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBVc2UgaXQuCgkoYnVpbGRfb2JqZWN0X2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCk1vbiBKdWwgMjggMTY6MDI6MzYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiB0c3Vic3QgYWxsIGRlZmF1bHQgcGFybXMgZnJvbSB0ZW1wbGF0ZXMuCgpXZWQgSnVsIDIzIDEzOjM2OjI1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RydWN0IGNwX2Z1bmN0aW9uKTogQWRkIHN0YXRpY19sYWJlbG5vLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IFNhdmUgaXQuCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBSZXN0b3JlIGl0LgoKVHVlIEp1bCAyMiAxNDo0MzoyOSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZl8xKTogQ29udmVydCBmcm9tIHJlZmVyZW5jZS4KClR1ZSBKdWwgMjIgMTE6MDY6MjMgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoY3VycmVudF9kZWNsc3BlY3MsIHByZWZpeF9hdHRyaWJ1dGVzKTogSW5pdGlhbGl6ZSB0bwoJTlVMTF9UUkVFLgoKCSogcGFyc2UueSAoaW5pdGRjbDApOiBNYWtlIHN1cmUgQ1VSUkVOVF9ERUNMU1BFQ1MgaXMgbm9uLW5pbAoJYmVmb3JlIHdlIHRyeSB0byBmb3JjZSBpdCB0byBiZSBhIFRSRUVfTElTVC4KCShkZWNsKTogTWFrZSBzdXJlICQxLnQgaXMgbm9uLW5pbC4KClN1biBKdWwgMjAgMTE6NTM6MDcgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodXNlc190ZW1wbGF0ZV9wYXJtcyk6IEhhbmRsZSB0ZW1wbGF0ZSBmaXJzdC1wYXJzZSBjb2Rlcy4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBPbmx5IHdhcm4gYWJvdXQgdXNlci1kZWZpbmVkIHN0YXRpY3MuCgpGcmkgSnVsIDE4IDE3OjU2OjA4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHVuaWZ5KTogSGFuZGxlIEJPT0xFQU5fVFlQRS4KCgkqIGNwLXRyZWUuaDogTG9zZSBQQVJNX0RFRkFVTFRfRlJPTV9URU1QTEFURS4KCSogcHQuYyAodHN1YnN0KTogRG9uJ3Qgc2V0IGl0LgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IFVzZSB1c2VzX3RlbXBsYXRlX3Bhcm1zLgoKVGh1IEp1bCAxNyAxODowNjozMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBVc2Ugc3RhdGljX2xhYmVsbm8KCWluc3RlYWQgb2YgdmFyX2xhYmVsbm8uCgkoYnVpbGRfcXVhbGlmaWVkX25hbWUpOiBOZXcgZm4uCgkoYnVpbGRfb3ZlcmxvYWRfbmFtZSk6IFNwbGl0IG91dCBmcm9tIGhlcmUuCgkoYnVpbGRfc3RhdGljX25hbWUpOiBVc2UgYnVpbGRfcXVhbGlmaWVkX25hbWUuCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBTdGF0aWNzIGluIGV4dGVybiBpbmxpbmUgZnVuY3Rpb25zCgloYXZlIGNvbWRhdCBsaW5rYWdlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogSW5pdGlhbGl6ZSBzdGF0aWNfbGFiZWxuby4KClRodSBKdWwgMTcgMTE6MjA6MTcgMTk5NyAgQmVuamFtaW4gS29zbmlrICA8YmtvekByaGluby5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogQWRkIGNoZWNrIG9mIHdhcm5fY3Rvcl9kdG9yX3ByaXZhY3kKCWJlZm9yZSAiYWxsIG1lbWJlciBmdW5jdGlvbnMgaW4gY2xhc3MgW10gYXJlIHByaXZhdGUiLgoKV2VkIEp1bCAxNiAyMzo0NzowOCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoZG9fc2NvcGVkX2lkKTogY29udmVydF9mcm9tX3JlZmVyZW5jZS4KCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogTGlrZXdpc2UuCgpXZWQgSnVsIDE2IDEyOjM0OjI5IDE5OTcgIEJlbmphbWluIEtvc25payAgPGJrb3pAbGlzYS5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogQ2hlY2sgVFJFRV9PUEVSQU5EIGJlZm9yZSBkdW1wX2V4cHJfbGlzdC4KCk1vbiBKdWwgMTQgMDM6MjM6NDYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGdldF9tZW1iZXJfZnVuY3Rpb25fZnJvbV9wdHJmdW5jKTogUHJvbW90ZSBpbmRleAoJYmVmb3JlIHNhdmluZyBpdC4KClN1biBKdWwgMTMgMDA6MTE6NTIgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChsYXlvdXRfYmFzZXR5cGVzKTogTW92ZSBub24tdmlydHVhbCBkZXN0cnVjdG9yIHdhcm5pbmcuCgkqIGRlY2wuYyAoeHJlZl9iYXNldHlwZXMpOiBSZW1vdmUgbm9uLXZpcnR1YWwgZGVzdHJ1Y3RvciB3YXJuaW5nLgoKU2F0IEp1bCAxMiAxMjo0NzoxMiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ2FsbCBhZGRfZGVmYXJnX2ZuIGZvciB0aGUgZnVuY3Rpb24KCXR5cGUsIHRvby4KCSogbGV4LmMgKGFkZF9kZWZhcmdfZm4pOiBBZGp1c3QuCgkoZG9fcGVuZGluZ19kZWZhcmdzKTogQWRqdXN0LiAgRG9uJ3Qgc2tpcCB0aGUgZmlyc3QgcGFybS4KCkZyaSBKdWwgMTEgMDE6Mzk6NTAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChidWlsZF9lbnVtZXJhdG9yKTogR2xvYmFsIGVudW1lcmF0b3JzIGFyZSBhbHNvIHJlYWRvbmx5LgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3RfMSk6IFJlbmFtZWQgZnJvbSBidWlsZF9keW5hbWljX2Nhc3QuCgkoYnVpbGRfZHluYW1pY19jYXN0KTogQ2FsbCBpdCBhbmQgY29udmVydF9mcm9tX3JlZmVyZW5jZS4KCgkqIGxleC5jIChhZGRfZGVmYXJnX2ZuKTogTmV3IGZuLgoJKHNuYXJmX2RlZmFyZyk6IERvbid0IGFkZCB0byBkZWZhcmdfdHlwZXMuCgkoZG9fcGVuZGluZ19kZWZhcmdzKTogTG9zZSBkZWZhcmdfdHlwZXMuICBBbGwgZm5zIHdlIHByb2Nlc3Mgbm93CgloYXZlIGRlZmFyZ3MuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IENhbGwgYWRkX2RlZmFyZ19mbi4KCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBFeHBlY3QgMTggcy9yIGNvbmZsaWN0cy4KCSogY3AtdHJlZS5kZWY6IEFkZCBERUZBVUxUX0FSRy4KCSogc3Bldy5jICh5eWxleCk6IENhbGwgc25hcmZfZGVmYXJnIGFzIGFwcHJvcHJpYXRlLgoJKiBwYXJzZS55OiBOZXcgdG9rZW5zIERFRkFSRyBhbmQgREVGQVJHX01BUktFUi4KCShkZWZhcmdfYWdhaW4sIHBlbmRpbmdfZGVmYXJncywgZGVmYXJnLCBkZWZhcmcxKTogTmV3IHJ1bGVzLgoJKHN0cnVjdHNwKTogVXNlIHBlbmRpbmdfZGVmYXJncy4KCShwYXJtcywgZnVsbF9wYXJtKTogVXNlIGRlZmFyZy4KCSogbGV4LmMgKGluaXRfbGV4KTogSW5pdGlhbGl6ZSBpbmxpbmVfdGV4dF9maXJzdG9iai4KCShkb19wZW5kaW5nX2lubGluZXMpOiBOZXZlciBwYXNzIHRoZSBvYnN0YWNrIHRvIGZlZWRfaW5wdXQuCgkocHJvY2Vzc19uZXh0X2lubGluZSk6IENhbGwgZW5kX2lucHV0IGluc3RlYWQgb2YgcmVzdG9yZV9wZW5kaW5nX2lucHV0LgoJKGNsZWFyX2lubGluZV90ZXh0X29ic3RhY2ssIHJlaW5pdF9wYXJzZV9mb3JfZXhwciwgZG9fcGVuZGluZ19kZWZhcmdzLAoJZmluaXNoX2RlZmFyZywgZmVlZF9kZWZhcmcsIHNuYXJmX2RlZmFyZywgbWF5YmVfc25hcmZfZGVmYXJnKTogTmV3IGZucy4KCSogaW5wdXQuYyAoZW5kX2lucHV0KTogTmV3IGZuLgoJKHN1Yl9nZXRjaCk6IEF0IHRoZSBlbmQgb2Ygc29tZSBmZWQgaW5wdXQsIGp1c3Qga2VlcCByZXR1cm5pbmcgRU9GCgl1bnRpbCBzb21lb25lIGNhbGxzIGVuZF9pbnB1dC4KCVJlbW92ZSAnb2JzdGFjaycgZmllbGQgZnJvbSBzdHJ1Y3QgaW5wdXRfc291cmNlLgoJKiBkZWNsLmMgKGdyb2twYXJtcyk6IEhhbmRsZSBERUZBVUxUX0FSRy4KCShyZXBsYWNlX2RlZmFyZyk6IE5ldyBmbi4KCSogY3AtdHJlZS5oIChERUZBUkdfTEVOR1RILCBERUZBUkdfUE9JTlRFUik6IE5ldyBtYWNyb3MuCgpXZWQgSnVsICA5IDEzOjQ0OjEyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoaW1wbGljaXRfY29udmVyc2lvbik6IElmIG5vdGhpbmcgZWxzZSB3b3JrcywgdHJ5IGJpbmRpbmcKCWFuIHJ2YWx1ZSB0byBhIHJlZmVyZW5jZS4KCldlZCBKdWwgIDkgMTM6MDQ6MzggMTk5NyAgR2VvZmZyZXkgTm9lciAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBGaXggSnVuIDMwIHBhdGNoIC0tIG1vdmUKCWlmbmRlZiBmb3IgQ3lnd2luMzIgdG8gaW5jbHVkZSBTSUdTRUdWLgoKVGh1IEp1bCAgMyAwMTo0NDowNSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBPbmx5IGNvbXBsYWluIGFib3V0IHBvaW50ZXJzIHdpdGhvdXQKCWNvcHkgc3R1ZmYgaWYgdGhlcmUgYXJlIGFueSBjb25zdHJ1Y3RvcnMuCgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IENhbGwgY29tcGxldGVfdHlwZSBvbiB0aGUgdHlwZXMuCgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBJZiB0aGUgZnVuY3Rpb24gd2UgY2hvc2UgZG9lc24ndCBhY3R1YWxseQoJbWF0Y2gsIGRpZS4KCgkqIGRlY2wyLmMgKGdyb2tjbGFzc2ZuKTogRG9uJ3Qgc3BlY2lmeSAnY29uc3QgaW50JyBmb3IgdGhlCglhcnRpZmljaWFsIGRlc3RydWN0b3IgcGFybS4KCgkqIHB0LmMgKHR5cGVfdW5pZmljYXRpb24pOiBJZiB3ZSBhcmUgY2FsbGVkIHJlY3Vyc2l2ZWx5LCBub3RoaW5nCglkZWNheXMuCgpNb24gSnVuIDMwIDE3OjUzOjIxIDE5OTcgIEdlb2ZmcmV5IE5vZXIgIDxub2VyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU3RvcCB0cnlpbmcgdG8gY2F0Y2ggc2lnbmFscwoJb3RoZXIgdGhhbiBTSUdBQlJUIHNpbmNlIHRoZSBDeWd3aW4zMiBsaWJyYXJ5IGRvZXNuJ3Qgc3VwcG9ydAoJdGhlbSBjb3JyZWN0bHkgeWV0LiAgVGhpcyBmaXhlcyBhIHNpdHVhdGlvbiBpbiB3aGljaCBnKysgY2F1c2VzCglhIGhhbmcgb24gU0lHU0VHVnMgYW5kIG90aGVyIHN1Y2ggc2lnbmFscyBpbiBvdXIgV2luMzItaG9zdGVkCgl0b29scy4KCk1vbiBKdW4gMzAgMTQ6NTA6MDEgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChtYXBjYXIsIGNhc2UgQ0FMTF9FWFBSKTogSGFuZGxlIGFsbCB0aGUgcGFyc2Ugbm9kZSBkYXRhLgoKRnJpIEp1biAyNyAxNToxODo0OSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKHN0b3JlX2luaXRfdmFsdWUpOiBBbHdheXMgcmV0dXJuIHRoZSB2YWx1ZSBpZiBvdXIKCXR5cGUgbmVlZHMgY29uc3RydWN0aW5nLgoKCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IENvbnZlcnQgY2xhc3Mgc3RhdGljcyBmcm9tCglyZWZlcmVuY2UsIHRvby4KClRodSBKdW4gMjYgMTE6NDQ6NDYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZS1sYW5nLmluIChjcGxpYjIucmVhZHkpOiBBZGQgJChMQU5HVUFHRVMpIGRlcGVuZGVuY3kuCgpUaHUgSnVuIDE5IDE2OjQ5OjI4IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBNYWtlIHN1cmUgd2UgY2xlYW4gdXAgdGVtcG9yYXJpZXMgYXQKCXRoZSBlbmQgb2YgcmV0dXJuIHg7CgpUaHUgSnVuIDE5IDEyOjI4OjQzIDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGxleC5jIChjaGVja19mb3JfbWlzc2luZ19zZW1pY29sb24pOiBBbHNvIGNoZWNrIGZvciBDVl9RVUFMSUZJRVIuCgpUdWUgSnVuIDE3IDE4OjM1OjU3IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfYnVpbHRpbl90aHJvdyk6IEFkZCBzdXBwb3J0CgktZm5vLXNqbGotZXhjZXB0aW9ucyAtZlBJQyBleGNlcHRpb24gaGFuZGxpbmcgb24gdGhlIFNQQVJDLgoKTW9uIEp1biAxNiAwMToyNDozNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiByZXBvLmMgKGV4dHJhY3Rfc3RyaW5nKTogTnVsbC10ZXJtaW5hdGUuCgoJKiBjcC10cmVlLmggKFRJX1NQRUNfSU5GTyk6IE5ldyBtYWNyby4KCShDTEFTU1RZUEVfVElfU1BFQ19JTkZPKTogTmV3IG1hY3JvLgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2wpOiBDb3JyZWN0bHkgZGV0ZXJtaW5lICMgb2YgdGVtcGxhdGUgcGFybXMKCWZvciBwYXJ0aWFsIHNwZWNzLgoKCSogY2FsbC5jIChjb21wYXJlX2ljcyk6IFJlYWxseSBmaXggJ3RoaXMnIGNvbnZlcnNpb25zLgoKCSogcHQuYyAoZG9fZGVjbF9pbnN0YW50aWF0aW9uKTogRG9uJ3QgY3Jhc2ggb24gZXhwbGljaXQgaW5zdCBvZgoJbm9uLXRlbXBsYXRlIGZuLgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsKTogQ29tcGxhaW4gYWJvdXQgbWlzbWF0Y2ggaW4gIyBvZgoJdGVtcGxhdGUgcGFybXMgYmV0d2VlbiBhIGNsYXNzIHRlbXBsYXRlIGFuZCBhIG1lbWJlciB0ZW1wbGF0ZS4KClN1biBKdW4gMTUgMDI6Mzg6MjAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogWW91IGNhbid0IGNhbGwKCWZ1bmN0aW9uX2Nhbm5vdF9pbmxpbmVfcCBhZnRlciBmaW5pc2hfZnVuY3Rpb24uCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogVHVybiBvbiBmbGFnX2lubGluZV9mdW5jdGlvbnMgYW5kIHR1cm4KCW9mZiBERUNMX0lOTElORSBiZWZvcmUgaGFuZGluZyBhIHN5bnRoZXNpemVkIG1ldGhvZCB0byB0aGUKCWJhY2tlbmQuCgpUaHUgSnVuIDEyIDE3OjM1OjI4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IFJlbW92ZSBKdWx5IDMwIGNoYW5nZSB0byBuZXZlciBzZXQKCURFQ0xfSU5MSU5FIGlmIGF0X2VvZi4KClRodSBKdW4gMTIgMTU6MjU6MDggMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogeHJlZi5jIChHTlVfeHJlZl9tZW1iZXIpOiBFbnN1cmUgdGhhdCB0aGUgbm9kZSBoYXMgYQoJZGVjbF9sYW5nX3NwZWNpZmljIHBhcnQgYmVmb3JlIGNoZWNraW5nIERFQ0xfRlJJRU5EX1AuCgpUaHUgSnVuIDEyIDEyOjM2OjA1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRGlhZ25vc2Ugbm9uLWNsYXNzIHR5cGVzIHVzZWQKCWFzIGJhc2VzLgoKV2VkIEp1biAxMSAxNzozMzo0MCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IFVzZSBjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbgoJaW5zdGVhZCBvZiBjb252ZXJ0X2FuZF9jaGVjay4KCldlZCBKdW4gMTEgMTI6MzE6MzMgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogcGFyc2UueSAodHlwZXNwZWMpOiBEb24ndCBwZWR3YXJuIGZvciB0eXBlb2YuCgpUdWUgSnVuIDEwIDAwOjIyOjA5IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJlcG8uYyAoZmluaXNoX3JlcG8pOiBPbmx5IGNoZWNrIGNoYW5nZXMgaWYgd2Ugd291bGQgd3JpdGUgYQoJcmVwbyBmaWxlLgoKCSogY2FsbC5jIChjb21wYXJlX2ljcyk6IEZpeCBoYW5kbGluZyBvZiAndGhpcycgY29udmVyc2lvbnMuCgoJKiBwdC5jIChkb19kZWNsX2luc3RhbnRpYXRpb24pOiBTdXBwb3J0IHN0YXRpYyBkYXRhIHRvby4gIFJlbmFtZQoJZnJvbSBkb19mdW5jdGlvbl9pbnN0YW50aWF0aW9uLgoJKiBjcC10cmVlLmg6IEFkanVzdC4KCSogcGFyc2UueTogQWRqdXN0LgoKCSogcmVwby5jIChleHRyYWN0X3N0cmluZyk6IE5ldyBmbi4KCShnZXRfYmFzZV9maWxlbmFtZSk6IFVzZSBpdC4KCShpbml0X3JlcG8pOiBDb21wYXJlIG9sZCBhcmdzIHdpdGggY3VycmVudCBhcmdzLgoKTW9uIEp1biAgOSAxNDoyNTozMCAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiwgTWFrZS1sYW5nLmluOiBQcm90ZWN0IEMtbHMgd2l0aCBhIGNvbW1lbnQKCWNoYXJhY3RlciwgaWRlYSBmcm9tIFBhdWwgRWdnZXJ0IDxlZ2dlcnRAdHdpbnN1bi5jb20+LgoKTW9uIEp1biAgOSAwMTo1MjowMyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogQmUgbW9yZSBwZXJzaXN0ZW50IGluIGxvb2tpbmcgZm9yCglyZXR1cm5lZCB0ZW1wcy4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBVc2UgTk9QX0VYUFIgZm9yIHN3aXRjaGluZyBmcm9tCglwb2ludGVyIHRvIHJlZmVyZW5jZS4KCgkqIGNsYXNzLmMgKGJ1aWxkX3ZiYXNlX3BhdGgpOiBEb24ndCBkbyBhbnl0aGluZyBpZiBQQVRIIGhhcyBubyBzdGVwcy4KClN1biBKdW4gIDggMDM6MDc6MDUgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCwgYnVpbGRfb2Zmc2V0X3JlZik6CglVc2UgZG9fc2NvcGVkX2lkIGluc3RlYWQgb2YgZG9faWRlbnRpZmllci4KCgkqIGN2dC5jIChjb252ZXJ0KTogUmVtb3ZlIGJvZ29zaXR5LgoKU2F0IEp1biAgNyAyMDo1MDoxNyAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogRG8gY2hlY2tzIG9mIEFSR1RZUEUgYW5kCglUQVJHRVRfVFlQRSBiZWZvcmUgdHJ5aW5nIHRvIHVzZSBnZXRfYmluZm8uCgpGcmkgSnVuICA2IDE3OjM2OjM5IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBDYWxsIGdldF9iaW5mbyB0byBnZXQgYWNjZXNzIGNvbnRyb2wuCgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBJZiB3ZSBkb24ndCBzdXBwb3J0IHdlYWtzLCBsZWF2ZQoJc3RhdGljcyB1bmRlZmluZWQuCgpGcmkgSnVuICA2IDE1OjU1OjQ5IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfYnVpbHRpbl90aHJvdyk6IEFkZCBzdXBwb3J0IGZvciBtYWNoaW5lcyB0aGF0CgljYW5ub3QgYWNjZXNzIGdsb2JhbHMgYWZ0ZXIgdGhyb3cncyBlcGlsb2d1ZSB3aGVuCgktZm5vLXNqbGotZXhjZXB0aW9ucyBpcyB1c2VkLgoKVGh1IEp1biAgNSAxNjoyODo0MyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55OiAnc3RkOjonIGJlY29tZXMgJzo6Jy4KCSogbGV4LmMgKHJlYWxfeXlsZXgpOiBSZW1vdmUgJ25hbWVzcGFjZScgd2FybmluZy4KCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IElnbm9yZSAnc3RkOjonLgoJKGJ1aWxkX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZG9fdXNpbmdfZGlyZWN0aXZlKTogSWdub3JlICd1c2luZyBuYW1lc3BhY2Ugc3RkOycuCgkoZG9fdG9wbGV2ZWxfdXNpbmdfZGVjbCk6IElnbm9yZSAndXNpbmcgc3RkOjp3aGF0ZXZlcicuCgkqIGRlY2wuYyAocHVzaF9uYW1lc3BhY2UpOiBKdXN0IHNvcnJ5LgoJKHBvcF9uYW1lc3BhY2UpOiBOb3AuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEZWNsYXJlIHN0ZCBuYW1lc3BhY2UuCgpUdWUgSnVuICAzIDE4OjA4OjIzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChwdXNoX2NsYXNzX2RlY2xzKTogQSBuYW1lIHdoaWNoIGFtYmlndW91c2x5IHJlZmVycyB0bwoJc2V2ZXJhbCBpbnN0YW50aWF0aW9ucyBvZiB0aGUgc2FtZSB0ZW1wbGF0ZSBqdXN0IHJlZmVycyB0byB0aGUKCXRlbXBsYXRlLgoKVHVlIEp1biAgMyAxMjozMDo0MCAxOTk3ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGNpcmRhbi5jeWdudXMuY29tPgoKCSogZGVjbC5jIChidWlsZF9lbnVtZXJhdG9yKTogRml4IHByb2JsZW0gd2l0aCB1bnNpZ25lZCBsb25nCgllbnVtZXJhdGVkIHZhbHVlcyBiZWluZyBzbWFzaGVkIHRvIGludHMsIGNhdXNpbmcgb3ZlcmZsb3cKCXdoZW4gY29tcHV0aW5nIG5leHQgZW51bWVyYXRlZCB2YWx1ZSAoZm9yIGVudW0gdmFsdWVzIGFyb3VuZAoJTUFYX1ZBTCkuCgpNb24gSnVuICAyIDE3OjQwOjU2IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogT25seSBjYWxsIG1hcmtfdXNlZCBvbiBhIGRlY2wuCgpUaHUgTWF5IDI5IDE1OjU0OjE3IDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBNYWtlIHRoZSBjaGVjayBmb3IgYSBwdHIgdG8gZnVuY3Rpb24KCW1vcmUgc3BlY2lmaWMgYmVmb3JlIHBvc3NpYmxlIGRlZmF1bHRfY29udmVyc2lvbiBjYWxsLgoKVGh1IE1heSAyOSAxMzowMjowNiAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2V4Y2VwdGlvbl9ibG9ja3MpOiBTaW1wbGlmeSBhbmQgZml4IGFuZCBtYWtlCglzdXJlIHdlIGRvbid0IGVuZCBhIHJlZ2lvbiBpbiBhIHNlcXVlbmNlLCBhcyBleHBhbmRfZW5kX2JpbmRpbmdzCglkb2Vzbid0IGxpa2UgaXQuCgpXZWQgTWF5IDI4IDE3OjA4OjAzIDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogTWFyayB0ZXJtaW5hdGUgYXMgbm90CglyZXR1cm5pbmcgc28gdGhhdCB0aGUgb3B0aW1pemVyIGNhbiBvcHRpbWl6ZSBiZXR0ZXIuCgpUdWUgTWF5IDI3IDE5OjQ5OjE5IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjb252ZXJ0KTogRG9uJ3QgZG8gYW55IGV4dHJhIHdvcmssIGlmIHdlIGNhbiBhdm9pZCBpdAoJZWFzaWx5LgoKVHVlIE1heSAyNyAxODoyMTo0NyAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiAqLltjaHldOiBDaGFuZ2UgY3BfY29udmVydCB0byBvY3BfY29udmVydCwgY2hhbmdlIGNvbnZlcnQgdG8KCWNwX2NvbnZlcnQuICBjb252ZXJ0IGlzIG5vdyByZXNlcnZlZCBmb3IgdGhlIGJhY2tlbmQsIGFuZCBkb2Vzbid0CgloYXZlIHRoZSBzZW1hbnRpY3MgYSBmcm9udGVuZCBwZXJzb24gc2hvdWxkIGV2ZXIgd2FudC4KCkZyaSBNYXkgMjMgMTA6NTg6MzEgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGFuZy1zcGVjcy5oOiBEZWZpbmUgX19FWENFUFRJT05TIGlmIGV4Y2VwdGlvbnMgYXJlIGVuYWJsZWQuCglMb3NlIC10cmFkaXRpb25hbCBzdXBwb3J0LgoKVGh1IE1heSAyMiAxNTo0MToyOCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBydHRpLmMgKGdldF90aW5mb192YXIpOiBVc2UgVFlQRV9QUkVDSVNJT04gKHNpemV0eXBlKS4KCgkqIHBhcnNlLnkgKHNlbGZfcmVmZXJlbmNlKTogRG8gaXQgZm9yIHRlbXBsYXRlcywgdG9vLgoJKiBjbGFzcy5jIChwdXNoY2xhc3MpOiBEb24ndCBvdmVybG9hZF90ZW1wbGF0ZV9uYW1lOyB0aGUgYWxpYXMKCWdlbmVyYXRlZCBieSBidWlsZF9zZWxmX3JlZmVyZW5jZSBzZXJ2ZXMgdGhlIHNhbWUgcHVycG9zZS4KCgkqIHRyZWUuYyAobGlzdF9oYXNoKTogTWFrZSBzdGF0aWMsIHRha2UgbW9yZSBhcmdzLgoJKGxpc3RfaGFzaF9sb29rdXApOiBMaWtld2lzZS4KCShsaXN0X2hhc2hfYWRkKTogTWFrZSBzdGF0aWMuCgkobGlzdF9oYXNoX2Nhbm9uKTogTG9zZS4KCShoYXNoX3RyZWVfY29ucyk6IE9ubHkgYnVpbGQgYSBuZXcgbm9kZSBpZiBvbmUgaXNuJ3QgYWxyZWFkeSBpbiB0aGUKCWhhc2h0YWJsZS4KCShoYXNoX3RyZWVfY2hhaW4pOiBVc2UgaGFzaF90cmVlX2NvbnMuCgkqIGNwLXRyZWUuaDogQWRqdXN0LgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBKdXN0IGNoZWNrIElERU5USUZJRVJfR0xPQkFMX1ZBTFVFIGluc3RlYWQKCW9mIGNhbGxpbmcgbG9va3VwX25hbWUuCgpXZWQgTWF5IDIxIDE4OjI0OjE5IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogVFlQRV9WQUxVRVMgZm9yIGFuIGVudW0KCWRvZXNuJ3QgcmVmZXIgdG8gdGhlIENPTlNUX0RFQ0xzLgoKVHVlIE1heSAyMCAyMTowOTozMiAxOTk3ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX3Zhcik6IEVpdGhlciBJTlRfVFlQRV9TSVpFIG9yIDMyLCB3aGljaGV2ZXIKCWlzIGJpZ2dlci4KCShleHBhbmRfY2xhc3NfZGVzYyk6IENvbnZlcnQgdGhlIGxhc3QgYXJndW1lbnQgdG8gYSBzaXpldHlwZS4KClR1ZSBNYXkgMjAgMTM6NTU6NTcgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZ3h4LmdwZXJmIChfX2NvbXBsZXgsIF9fY29tcGxleF9fLCBfX2ltYWcsIF9faW1hZ19fLCBfX3JlYWwsCglfX3JlYWxfXyk6IEFkZCByZXN3b3Jkcy4KCSogaGFzaC5oOiBSZWdlbmVyYXRlLgoJKiBsZXguaCAocmlkKTogQWRkIFJJRF9DT01QTEVYLgoJKFJJRF9MQVNUX01PRElGSUVSKTogU2V0IHRvIFJJRF9DT01QTEVYLgoJKiBsZXguYyAoaW5pdF9sZXgpOiBBZGQgYnVpbGRpbmcgb2YgUklEX0NPTVBMRVguCgkocmVhbF95eWxleCk6IEdlbmVyYWwgY2xlYW51cCBpbiBsaW5lIHdpdGggd2hhdCBjLWxleC5jIGFsc28gaGFzLAoJc2FucyB0aGUgY3J1ZnQgZm9yIHRyYWRpdGlvbmFsOyBhZGQgaGFuZGxpbmcgb2YgU1BFQ19JTUFHLCBjb21wbGV4Cgl0eXBlcywgYW5kIGltYWdpbmFyeSBudW1lcmljIGNvbnN0YW50cy4KCSogcGFyc2UueSAoUkVBTFBBUlQsIElNQUdQQVJUKTogQWRkIHRva2Vucy4KCSh1bmFyeV9leHByKTogQWRkIFJFQUxQQVJUIGFuZCBJTUFHUEFSVCBydWxlcy4KCSogY3AtdHJlZS5oIChjb21wbGV4X3tpbnRlZ2VyLGZsb2F0LGRvdWJsZSxsb25nfV90eXBlX25vZGUpOiBEZWNsYXJlLgoJKiBkZWNsLmMgKGNvbXBsZXhfe2ludGVnZXIsZmxvYXQsZG91YmxlLGxvbmd9X3R5cGVfbm9kZSk6IERlZmluZQoJdHlwZXMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgdXAgdGhlIHR5cGVzLgoJKGdyb2tkZWNsYXJhdG9yKTogQWRkIGhhbmRsaW5nIG9mIFJJRF9DT01QTEVYLiAgU2V0IGFuZCB1c2UKCURFRkFVTFRFRF9JTlQgaW5zdGVhZCBvZiBFWFBMSUNJVF9JTlQgd2hlbiB3ZSBkZWZhdWx0IHRvIGludCB0eXBlLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IEFkZCBSRUFMUEFSVF9FWFBSIGFuZCBJTUFHUEFSVF9FWFBSIGNhc2VzLgoJKiBjdnQuYyAoY3BfY29udmVydCk6IEhhbmRsZSBDT01QTEVYX1RZUEUuCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9wcmVmaXgsIGR1bXBfdHlwZSwgZHVtcF90eXBlX3N1ZmZpeCk6IEFkZAoJQ09NUExFWF9UWVBFIGNhc2UuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9uYW1lKTogQWRkIGhhbmRsaW5nIG9mIHRoZSBkaWZmZXJlbnQKCUNPTVBMRVhfVFlQRXMsIHByZWZpeGluZyB0aGVtIHdpdGggYEonLgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBEb24ndCBsZXQgdGhlbSB1c2UgYSBDT01QTEVYX1RZUEUKCWFzIGEgdGVtcGxhdGUgcGFybS4KCSh1c2VzX3RlbXBsYXRlX3Bhcm1zLCB0c3Vic3QsIHVuaWZ5KTogQWRkIENPTVBMRVhfVFlQRSBjYXNlLgoJKiB0cmVlLmMgKGx2YWx1ZV9wKTogQWRkIFJFQUxQQVJUX0VYUFIgYW5kIElNQUdQQVJUX0VYUFIgY2FzZXMuCgkobWFwY2FyKTogSGFuZGxlIENPTVBMRVhfQ1NULgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IEhhbmRsZSBDT01QTEVYX1RZUEUuCgkoY29tbW9uX3R5cGUpOiBBZGQgY29kZSBmb3IgY29tcGxleCB0eXBlcy4KCShidWlsZF91bmFyeV9vcCk6IEFkZCBSRUFMUEFSVF9FWFBSIGFuZCBJTUFHUEFSVF9FWFBSIGNhc2VzLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCShtYXJrX2FkZHJlc3NhYmxlKTogQWRkIFJFQUxQQVJUX0VYUFIgYW5kIElNQUdQQVJUX0VYUFIgY2FzZXMuCgpNb24gTWF5IDE5IDEyOjI2OjI3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IERvbid0IHBhc3MgdGhlIE1JTlVTX0VYUFIgZm9yIGFuIGFycmF5IGRvbWFpbiB0bwoJdHN1YnN0X2V4cHIsIGFzIGl0IG1pZ2h0IHRyeSB0byBkbyBvdmVybG9hZCByZXNvbHV0aW9uLgoKU2F0IE1heSAxNyAxMDo0ODozMSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IE9vcHMuCgpGcmkgTWF5IDE2IDE0OjIzOjU3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuZGVmOiBBZGQgVEFHX0RFRk4uCgkqIHB0LmMgKHRzdWJzdF9lbnVtKTogTmV3IGZuLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogVXNlIGl0LgoJKHRzdWJzdF9leHByKTogU3VwcG9ydCBUQUdfREVGTi4KCSh0c3Vic3QpOiBTdXBwb3J0IGxvY2FsIGVudW1zLgoJKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZmluaXNoX2VudW0pOiBMaWtld2lzZS4KCShzdGFydF9lbnVtKTogSWYgdGhpcyBpcyBhIGxvY2FsIGVudW0sIHN3aXRjaCB0byBwZXJtYW5lbnRfb2JzdGFjay4KCldlZCBNYXkgMTQgMTk6MDg6MjggMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChzdG9yZV9wYXJtX2RlY2xzKTogU2V0IGxhc3RfcGFybV9jbGVhbnVwX2luc24gaGVyZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBQdXQgdGhlIGJhc2UgaW5pdCBjb2RlIGZvciBjb25zdHJ1Y3RvcnMganVzdAoJYWZ0ZXIgdGhlIHBhcm0gY2xlYW51cCBpbnNucy4KCShzdHJ1Y3QgY3BfZnVuY3Rpb24pOiBBZGQgbGFzdF9wYXJtX2NsZWFudXBfaW5zbi4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCShwb3BfY3BfZnVuY3Rpb25fY29udGV4dCk6IExpa2V3aXNlLgoKVHVlIE1heSAxMyAxNTo1MToyMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfY29weSk6IEhhbmRsZSBCSVRfTk9UX0VYUFIuCgpXZWQgTWF5ICA3IDExOjE3OjU5IDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKSBbQVNNX09VVFBVVF9NSV9USFVOS106IEJ1aWxkIHVwIHRoZSBSVEwKCWZvciBUSFVOS19GTkRFQ0wgYmVmb3JlIHdlIHN3aXRjaCB0byB0ZW1wb3JhcnkgYWxsb2NhdGlvbi4KCk1vbiBNYXkgIDUgMTQ6NDY6NTMgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9uZXdfb3ApOiBIYW5kbGUgbnVsbCBhcmcyIGZvciA/Oi4KClRodSBNYXkgIDEgMTg6MjY6MzcgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9leGNlcHRpb25fYmxvY2tzKTogRW5zdXJlIHRoYXQgd2UgZmxvdyB0aHJvdWdoCgl0aGUgZW5kIG9mIHRoZSBleGNlcHRpb24gcmVnaW9uIGZvciB0aGUgZXhjZXB0aW9uIHNwZWNpZmljYXRpb24uCglNb3ZlIGV4Y2VwdGlvbiByZWdpb24gZm9yIHRoZSBleGNlcHRpb24gc3BlY2lmaWNhdGlvbiBpbiwgc28gdGhhdAoJaXQgZG9lc24ndCBwcm90ZWN0IHRoZSBwYXJtIGNsZWFudXAuICBSZW1vdmUgc29tZSBvYnNvbGV0ZSBjb2RlLgoJKiBkZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBMaWtld2lzZS4KClR1ZSBBcHIgMjkgMTU6Mzg6NTQgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBGaXggbm90aHJvdyBoYW5kbGluZy4KClR1ZSBBcHIgMjkgMTQ6Mjk6NTAgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogaW5pdC5jIChlbWl0X2Jhc2VfaW5pdCk6IERvbid0IHdhcm4gYWJvdXQgdGhlIGluaXRpYWxpemF0aW9uCglsaXN0IGZvciBhbiBhcnRpZmljaWFsIG1lbWJlci4KCkZyaSBBcHIgMjUgMTc6NDc6NTkgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZXhwci5jIChkb19jYXNlKTogSGFuZGxlICFTVEFSVCBjYXNlIGZvciB0aGUgZXJyb3IgbXNnLgoKRnJpIEFwciAyNSAxMTo1NToyMyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jLCBsYW5nLW9wdGlvbnMuaDogTmV3IG9wdGlvbiAtV2VmZmMrKy4KCSogY2xhc3MuYywgZGVjbC5jLCBpbml0LmMsIHR5cGVjay5jOiBNb3ZlIEVmZmVjdGl2ZSBDKysgd2FybmluZ3MKCXRvIC1XZWZmYysrLgoKCSogZGVjbDIuYyAoZmluaXNoX3ByZXZ0YWJsZV92YXJkZWNsKTogQ2hhbmdlIE5PX0xJTktBR0VfSEVVUklTVElDUwoJdG8gTVVMVElQTEVfU1lNQk9MX1NQQUNFUy4KCldlZCBBcHIgMjMgMTg6MDY6NTAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmssIGdlbmVyaWMgY2FzZSk6IFNldCBjdXJyZW50X2Z1bmN0aW9uX2lzX3RodW5rLgoKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmssIG1hY3JvIGNhc2UpOiBTZXQgdXAgREVDTF9SRVNVTFQuCgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgcmV0dXJuaW5nIHZvaWQKCXRvIHZvaWQgaW4gYW4gYXJ0aWZpY2lhbCBmdW5jdGlvbi4KCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBDaGFuZ2Ugc2V0dGluZ3Mgb2YgUkVBRE9OTFkvVk9MQVRJTEUsCglkb24ndCBzZXQgREVDTF9SRVNVTFQsIHNldCBERUNMX0FSVElGSUNJQUwuCgkoZW1pdF90aHVuaywgZ2VuZXJpYyBjb2RlKTogQWxzbyBzZXQgdXAgREVDTF9MQU5HX1NQRUNJRklDLgoKV2VkIEFwciAyMyAxNDo0MzowNiAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIHN1cHBvcnQgZm9yIHNldGptcC9sb25nam1wIGJhc2VkCglleGNlcHRpb24gaGFuZGxpbmcuCgkqIGV4Y2VwdC5jIChpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IExpa2V3aXNlLgoJKGV4cGFuZF9leGNlcHRpb25fYmxvY2tzKTogTGlrZXdpc2UuCgkoZXhwYW5kX3Rocm93KTogTGlrZXdpc2UuCgkqIGV4Y2VwdGlvbi5jYyAoX19kZWZhdWx0X3Rlcm1pbmF0ZSk6IExpa2V3aXNlLgoKCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogVXNlIG5ldyBtZXRob2Qgb2YgZXhwciBsZXZlbAoJY2xlYW51cHMsIGluc3RlYWQgb2YgY2xlYW51cHNfdGhpc19jYWxsIGFuZCBmcmllbmRzLgoJKGVtaXRfYmFzZV9pbml0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2FnZ3JfdmJhc2VfaW5pdF8xKTogTGlrZXdpc2UuCgkoZXhwYW5kX3ZlY19pbml0KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCShleHBhbmRfc3RhdGljX2luaXQpOiBMaWtld2lzZS4KCShzdG9yZV9wYXJtX2RlY2xzKTogTGlrZXdpc2UuCgkoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoKCSogTWFrZS1sYW5nLmluIChleGNlcHRpb24ubyk6IE9rIHRvIGNvbXBpbGUgd2l0aCAtTyBub3cuCgoJKiBkZWNsLmMgKG1heWJlX2J1aWxkX2NsZWFudXBfMSk6IFdlIG5vIGxvbmdlciBoYXZlIHRvIHVuc2F2ZSwgYXMKCXdlIGtub3cgaXQgd2lsbCBiZSBkb25lIGxhdGVyIGJ5IHRoZSBiYWNrZW5kLgoKCSogZGVjbDIuYyAobGFuZ19mX29wdGlvbnMpOiBSZW1vdmUgc3VwcG9ydCBmb3Igc2hvcnQgdGVtcHMuCgkqIGxhbmctb3B0aW9ucy5oOiBMaWtld2lzZS4KCldlZCBBcHIgMjMgMDQ6MTI6MDYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jICh2YXJhcmdzX2Z1bmN0aW9uX3ApOiBOZXcgZm4uCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogUmVwbGFjZSBicm9rZW4gZ2VuZXJpYyBjb2RlIHdpdGggY29kZSB0bwoJZ2VuZXJhdGUgYSBoZWF2eXdlaWdodCB0aHVuayBmdW5jdGlvbi4KClR1ZSBBcHIgMjIgMDI6NDU6MTggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogcGVkd2FybiBhYm91dCBmbG9hdGluZy1wb2ludCBwYXJtcy4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBpbmxpbmUgbm8gbG9uZ2VyIGltcGxpZXMgc3RhdGljLgoKCSogc3Bldy5jICh5eWxleCk6IEFsd2F5cyByZXR1cm4gdGhlIFRZUEVfREVDTCBpZiB3ZSBnb3QgYSBzY29wZS4KCk1vbiBBcHIgMjEgMTU6NDI6MjcgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoY2hlY2tfZm9yX292ZXJyaWRlKTogVGhlIHNpZ25hdHVyZSBvZiBhbiBvdmVycmlkaW5nCglmdW5jdGlvbiBpcyBub3QgY2hhbmdlZC4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogTW92ZSBzZXR0aW5nIG9mIGNvbnYgaW50byB0aGUgbG9vcC4KCU5vdGU6IHRoaXMgY2hhbmdlLCBhbG9uZyB3aXRoIHRoZSByZWxhdGVkIGNoYW5nZXMgb2YgdGhlIDE4dGggdGhydQoJdGhlIDIwdGggb2YgQXByaWwsIGZpeCBhbiBpbmZpbml0ZSBsb29wIHByb2JsZW0gaW4gY29udmVyc2lvbnMuCgpTdW4gQXByIDIwIDE2OjI0OjI5IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IFJlYWxseSBpZ25vcmUgcnZhbHVlCgljb252ZXJzaW9ucyB3aGVuIGxvb2tpbmcgZm9yIGEgUkVGRVJFTkNFX1RZUEUuCgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogRXZpc2NlcmF0ZSwgdXNlIGJ1aWxkX3VuYXJ5X29wLgoJKiBjcC10cmVlLmggKFRSRUVfUkVGRVJFTkNFX0VYUFIpOiAjaWYgMC4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBEb24ndCBzZXQgVFJFRV9SRUZFUkVOQ0VfRVhQUi4KCShidWlsZF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IFNlZSB0aHJvdWdoIGEgQ09OVkVSVF9FWFBSIGFyb3VuZCB0aGUKCUFERFJfRVhQUiBmb3Igb24gYSB0ZW1wb3JhcnkuCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBTZWUgdGhyb3VnaCBhIENPTlZFUlRfRVhQUiBhcm91bmQKCXRoZSBBRERSX0VYUFIgZm9yIGEgbG9jYWwgdmFyaWFibGUuCgpGcmkgQXByIDE4IDEyOjExOjMzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IElmIHdlJ3JlIHRyeWluZyB0bwoJY29udmVydCB0byBhIFJFRkVSRU5DRV9UWVBFLCBvbmx5IGNvbnNpZGVyIGx2YWx1ZSBjb252ZXJzaW9ucy4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IFByaW50IGNhbmRpZGF0ZXMuCgkoaW1wbGljaXRfY29udmVyc2lvbik6IFRyeSBhIHRlbXAgYmluZGluZyBpZiB0aGUgbHZhbHVlIGNvbnYgaXMgQkFELgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogQmluZGluZyBhIHRlbXBvcmFyeSBvZiBhIHJlZmVyZW5jZS1yZWxhdGVkIHR5cGUKCWlzIEJBRC4KClRodSBBcHIgMTcgMTQ6Mzc6MjIgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogaW5jL3R5cGVpbmZvICh0eXBlX2luZm86OmJlZm9yZSk6IEFkZCBjdi1xdWFsaWZpZXItc2VxLgoJKiB0aW5mbzIuY2MgKHR5cGVfaW5mbzo6YmVmb3JlKTogTGlrZXdpc2UuCgpNb24gQXByIDE0IDEyOjM4OjE3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoaW1wbGljaXRfY29udmVyc2lvbik6IE9vcHMuCgpGcmkgQXByIDExIDAyOjE4OjMwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoaW1wbGljaXRfY29udmVyc2lvbik6IFRyeSB0byBmaW5kIGEgcmVmZXJlbmNlIGNvbnZlcnNpb24KCWJlZm9yZSBiaW5kaW5nIGEgY29uc3QgcmVmZXJlbmNlIHRvIGEgdGVtcG9yYXJ5LgoKV2VkIEFwciAgMiAxMjo1MTozNiAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHRpb24uY2MgKF9fZGVmYXVsdF91bmV4cGVjdGVkKTogQ2FsbCB0ZXJtaW5hdGUgYnkgZGVmYXVsdCwKCXNvIHRoYXQgaWYgdGhlIHVzZXIgb3ZlcnJpZGVzIHRlcm1pbmF0ZSwgdGhlIGNvcnJlY3QgZnVuY3Rpb24gd2lsbAoJYmUgY2FsbGVkLgoKV2VkIE1hciAxOSAxNDoxNDo0NSAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBwYXJzZS55IChsZWZ0X2N1cmx5KTogQXZvaWQgdHJ5aW5nIHRvIHVzZSBhbnkgZmllbGRzIG9mCgllcnJvcl9tYXJrX25vZGUsIGFzIHRoZXJlIGFyZW4ndCBhbnkuCgpUaHUgTWFyIDEzIDE2OjMzOjIyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogQXZvaWQgYnJlYWtpbmcgb24gb3ZlcmxvYWRlZCBtZXRob2RzCglhcyBkZWZhdWx0IGFyZ3VtZW50cy4KCldlZCBNYXIgMTIgMTM6NTU6MTAgMTk5NyAgSGFucy1QZXRlciBOaWxzc29uICA8SGFucy1QZXRlci5OaWxzc29uQGF4aXMuc2U+CgoJKiBjYWxsLmMgKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGUpOiBJbml0aWFsaXplIHRoZSB2YXJpYWJsZSAiZHVtbXkiLgoKTW9uIE1hciAxMCAxNToxMzoxNCAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfZGVjbCk6IE1ha2Ugc3VyZSBUWVBFIGlzbid0IGFuIGVycm9yX21hcmtfbm9kZQoJYmVmb3JlIHdlIHRyeSB0byB1c2UgVFlQRV9TSVpFIGFuZCBUUkVFX0NPTlNUQU5UIG9uIGl0LgoKRnJpIE1hciAgNyAxMzoxOTozNiAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKGNvbXBfcHRyX3R0eXBlcywgbW9yZV9zcGVjaWFsaXplZCk6IEFkZCBkZWNsLgoJKGRlYnVnX2JpbmZvKTogRGVsZXRlIGRlY2wsIG5vdCBuZWVkZWQuCgoJKiB0cmVlLmMgKGZuYWRkcl9mcm9tX3Z0YWJsZV9lbnRyeSwgZnVuY3Rpb25fYXJnX2NoYWluLAoJcHJvbW90ZXNfdG9fYWdncl90eXBlKTogRGVsZXRlIGZucy4KCSogY3AtdHJlZS5oIChGTkFERFJfRlJPTV9WVEFCTEVfRU5UUlksCglTRVRfRk5BRERSX0ZST01fVlRBQkxFX0VOVFJZLCBGVU5DVElPTl9BUkdfQ0hBSU4sCglQUk9NT1RFU19UT19BR0dSX1RZUEUpOiBEZWxldGUgYWx0ZXJuYXRlcyB0byAjaWYgMS4KCgkqIGRlY2wuYyAocGVuZGluZ19pbnZhbGlkX3hyZWZ7LF9maWxlLF9saW5lfSk6IERlbGV0ZSB1bnVzZWQgdmFycy4KCgkqIGZyaWVuZC5jIChpc19mcmllbmRfdHlwZSk6IERlbGV0ZSBmbi4KCSogY3AtdHJlZS5oIChpc19mcmllbmRfdHlwZSk6IERlbGV0ZSBkZWNsLgoKCSogZGVjbC5jIChvcmlnaW5hbF9yZXN1bHRfcnR4LCBkb3VibGVfZnR5cGVfZG91YmxlLAoJZG91YmxlX2Z0eXBlX2RvdWJsZV9kb3VibGUsIGludF9mdHlwZV9pbnQsIGxvbmdfZnR5cGVfbG9uZywKCWZsb2F0X2Z0eXBlX2Zsb2F0LCBsZG91YmxlX2Z0eXBlX2xkb3VibGUsIGxhc3RfZHRvcl9pbnNuKTogTWFrZSBzdGF0aWMuCgkqIHR5cGVjay5jIChvcmlnaW5hbF9yZXN1bHRfcnR4LCB3YXJuX3N5bnRoKTogRGVsZXRlIGV4dGVybiBkZWNscy4KCgkqIGRlY2wuYyAocHVzaF9vdmVybG9hZGVkX2RlY2x7LF90b3BfbGV2ZWx9KTogTWFrZSBzdGF0aWMsIGFkZGluZwoJZndkIGRlY2xzLgoJKiBjcC10cmVlLmggKHB1c2hfb3ZlcmxvYWRlZF9kZWNseyxfdG9wX2xldmVsfSk6IERlbGV0ZSBkZWNscy4KCgkqIGRlY2wuYyAocHVzaGRlY2xfbm9uY2xhc3NfbGV2ZWwpOiAjaWYgMCwgdW51c2VkLgoJKiBjcC10cmVlLmggKHB1c2hkZWNsX25vbmNsYXNzX2xldmVsKTogI2lmIDAgZGVjbC4KCgkqIGxleC5jIChyZWluaXRfbGFuZ19zcGVjaWZpYyk6ICNpZiAwLCB1bnVzZWQuCgkqIGNwLXRyZWUuaCAocmVpbml0X2xhbmdfc3BlY2lmaWMpOiAjaWYgMCBkZWNsLgoKCSogZGVjbC5jIChyZXZlcnRfc3RhdGljX21lbWJlcl9mbik6IE1ha2Ugc3RhdGljLCBhZGRpbmcgZndkIGRlY2wuCgkqIGNwLXRyZWUuaCAocmV2ZXJ0X3N0YXRpY19tZW1iZXJfZm4pOiBEZWxldGUgZGVjbC4KCgkqIGNsYXNzLmMgKHJvb3RfbGFuZ19jb250ZXh0X3ApOiBEZWxldGUgZm4uCgkqIGNwLXRyZWUuaCAocm9vdF9sYW5nX2NvbnRleHRfcCk6IERlbGV0ZSBkZWNsLgoKCSogZGVjbC5jIChzZXRfY3VycmVudF9sZXZlbF90YWdzX3RyYW5zcGFyZW5jeSk6ICNpZiAwLCB1bnVzZWQuCgkqIGNwLXRyZWUuaCAoc2V0X2N1cnJlbnRfbGV2ZWxfdGFnc190cmFuc3BhcmVuY3kpOiAjaWYgMCBkZWNsLgoKCSogbGV4LmMgKHNldF92YXJkZWNsX2ludGVyZmFjZV9pbmZvKTogTWFrZSBzdGF0aWMuCgkqIGNwLXRyZWUuaCAoc2V0X3ZhcmRlY2xfaW50ZXJmYWNlX2luZm8pOiBEZWxldGUgZGVjbC4KCgkqIGNhbGwuYyAoZmluZF9zY29wZWRfdHlwZSk6IE1ha2Ugc3RhdGljLgoJKiBjcC10cmVlLmggKGZpbmRfc2NvcGVkX3R5cGUpOiBEZWxldGUgZGVjbC4KCgkqIHNlYXJjaC5jIChjb252ZXJ0X3BvaW50ZXJfdG9fdmJhc2UpOiBNYWtlIHN0YXRpYy4KCSogY3AtdHJlZS5oIChjb252ZXJ0X3BvaW50ZXJfdG9fdmJhc2UpOiBEZWxldGUgZGVjbC4KCgkqIGRlY2wuYyAoY29uc3RfcHRyX3R5cGVfbm9kZSk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGNvbnN0X3B0cl90eXBlX25vZGUpOiBEZWxldGUgZGVjbC4KCgkqIHR5cGVjay5jIChjb21tb25fYmFzZV90eXBlKTogTWFrZSBzdGF0aWMuCgkqIGNwLXRyZWUuaCAoY29tbW9uX2Jhc2VfdHlwZXMpOiBEZWxldGUgZXJyb25lb3VzIGRlY2wuCgoJKiBwdC5jIChjbGFzc3R5cGVfbWFuZ2xlZF9uYW1lKTogTWFrZSBzdGF0aWMuCgkqIGNwLXRyZWUuaCAoY2xhc3N0eXBlX21hbmdsZWRfbmFtZSk6IERlbGV0ZSBkZWNsLgoKCSogbGV4LmMgKGNoZWNrX25ld2xpbmUpOiBNYWtlIHN0YXRpYy4KCSogY3AtdHJlZS5oIChjaGVja19uZXdsaW5lKTogRGVsZXRlIGRlY2wuCgoJKiB0eXBlY2suYyAoYnVpbGRfeF9hcnJheV9yZWYpOiBEZWxldGUgZm4sIHNhbWUgaWRlYSBhcwoJZ3Jva19hcnJheV9kZWNsLgoJKiBjcC10cmVlLmggKGJ1aWxkX3hfYXJyYXlfcmVmKTogRGVsZXRlIGRlY2wuCgoJKiBsZXguYyAoY29weV9kZWNsX2xhbmdfc3BlY2lmaWMpOiBEZWxldGUgZm4sIHNhbWUgaWRlYSBhcwoJY29weV9sYW5nX2RlY2wuCgkqIGNwLXRyZWUuaCAoY29weV9kZWNsX2xhbmdfc3BlY2lmaWMpOiAjaWYgMCBkZWNsLgoKCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlX2VudHJ5KTogTWFrZSBzdGF0aWMuCgkqIGNwLXRyZWUuaCAoYnVpbGRfdnRhYmxlX2VudHJ5KTogRGVsZXRlIGRlY2wuCgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wb2ludGVyKTogTWFrZSBzdGF0aWMuCgkqIGNwLXRyZWUuaCAoYnVpbGRfdmJhc2VfcG9pbnRlcik6IERlbGV0ZSBkZWNsLgoKCSogc2lnLmMgKGJ1aWxkX3NwdHJfcmVmKTogQWRkIGZvcndhcmQgZGVjbCBhbmQgbWFrZSBzdGF0aWMuCgkqIGNwLXRyZWUuaCAoYnVpbGRfc3B0cl9yZWYpOiBEZWxldGUgZGVjbC4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogQWRkIGZvcndhcmQgZGVjbCBhbmQgbWFrZSBzdGF0aWMuCgkqIGNwLXRyZWUuaCAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogRGVsZXRlIGRlY2wuCgoJKiBjYWxsLmMgKGJ1aWxkX29iamVjdF9jYWxsKTogTWFrZSBzdGF0aWMuCgkqIGNsYXNzLmMgKGNoZWNrX2Zvcl9vdmVycmlkZSwgY29tcGxldGVfdHlwZV9wLCBtYXJrX292ZXJyaWRlcnMpOgoJTGlrZXdpc2UuCgkqIGRlY2wuYyAoY3BfZnVuY3Rpb25fY2hhaW4pOiBMaWtld2lzZS4KCSogbGV4LmMgKHNldF90eXBlZGVjbF9pbnRlcmZhY2VfaW5mbywgcmVpbml0X3BhcnNlX2Zvcl9ibG9jayk6CglMaWtld2lzZS4KCSogcHQuYyAoY29tcF90ZW1wbGF0ZV9hcmdzLCBnZXRfY2xhc3NfYmluZGluZ3MsIHB1c2hfdGluc3RfbGV2ZWwpOgoJTGlrZXdpc2UuCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfYXJyYXlfdHlwZV8xKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb21wX3B0cl90dHlwZXNfe2NvbnN0LHJlYWwscmVpbnRlcnByZXR9KTogTGlrZXdpc2UuCgkoY29tcF90YXJnZXRfcGFybXMpOiBMaWtld2lzZS4KCgkqIGluaXQuYyAoYnVpbGRfYnVpbHRpbl9jYWxsKTogTWFrZSBzdGF0aWMuCgkqIGNwLXRyZWUuaCAoYnVpbGRfYnVpbHRpbl9jYWxsKTogRGVsZXRlIGRlY2wuCgoJKiB0eXBlY2suYyAoYmluYXJ5X29wX2Vycm9yKTogRGVsZXRlIGRlY2wuCgkqIGNwLXRyZWUuaCAoYmluYXJ5X29wX2Vycm9yKTogTGlrZXdpc2UuCgpUaHUgTWFyICA2IDE2OjEzOjUyIDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBDb21wYXJlIGFnYWluc3QgZXJyb3JfbWFya19ub2RlCglkaXJlY3RseSwgcmF0aGVyIHRoYW4gdGhlIEVSUk9SX01BUksgdHJlZSBjb2RlLgoJKiBjdnQuYyAoY3BfY29udmVydCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHByaW50X2JpbmRpbmdfbGV2ZWwpOiBMaWtld2lzZS4KCShkdXBsaWNhdGVfZGVjbHMpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoZXhwYW5kX2FnZ3JfaW5pdF8xKTogTGlrZXdpc2UuCgkoZGVjbF9jb25zdGFudF92YWx1ZSk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoYnVpbGRfb3BmbmNhbGwpOiBMaWtld2lzZS4KCShoYWNrX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogTGlrZXdpc2UuCgoJKiB0eXBlY2suYyAoYnVpbGRfY19jYXN0KTogRG9uJ3QgZGVjbCBUWVBFIGFzIHJlZ2lzdGVyIHRyZWUuCgpTdW4gTWFyICAyIDAyOjU0OjM2IDE5OTcgIEJydW5vIEhhaWJsZSAgPGJydW5vQGxpbnVpeC5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CgoJKiBwdC5jICh1bmlmeSk6IFN0cmlwIE5PUF9FWFBSIHdyYXBwZXJzIGJlZm9yZSB1bmlmeWluZyBpbnRlZ2VyIHZhbHVlcy4KCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IEFkZCBuZXcgZXJyb3IgbWVzc2FnZS4KCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IEltcGxlbWVudCBuYW1lIG1hbmdsaW5nIGZvcgoJZmxvYXRpbmctcG9pbnQgdGVtcGxhdGUgYXJndW1lbnRzLgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2ludCwgaWNhdCwgZGljYXQpOiBGaXggbWFuZ2xpbmcgb2YgdGVtcGxhdGUKCWFyZ3VtZW50cyB3aG9zZSBhYnNvbHV0ZSB2YWx1ZSBkb2Vzbid0IGZpdCBpbiBhIHNpZ25lZCB3b3JkLgoKTW9uIE1hciAgMyAxMjoxNDo1NCAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBmcmllbmQuYzogTmV3IGZpbGU7IHB1dCBhbGwgb2YgdGhlIGZyaWVuZCBzdHVmZiBpbiBoZXJlLgoJKiBpbml0LmM6IEluc3RlYWQgb2YgaGVyZS4KCSogTWFrZWZpbGUuaW4gKENYWF9PQkpTKTogQWRkIGZyaWVuZC5vLgoJKGZyaWVuZC5vKTogQWRkIGRlcGVuZGVuY2llcy4KCSogTWFrZS1sYW5nLmluIChDWFhfU1JDUyk6IEFkZCAkKHNyY2RpcikvY3AvZnJpZW5kLmMuCgpTdW4gTWFyICAyIDExOjA0OjQzIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogQ29tcGxhaW4gaWYgdGhlIHNjb3BlIGlzbid0IGEKCWJhc2UuCgpXZWQgRmViIDI2IDExOjMxOjA2IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGxlZnRfY3VybHkpOiBEb24ndCBjcmFzaCBvbiBlcnJvbmVvdXMgdHlwZS4KCgkqIGluaXQuYyAoYnVpbGRfZGVsZXRlKTogRml4IHR5cGUgb2YgcmVmLgoKVHVlIEZlYiAyNSAxMjo0MTo0OCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoZ2V0X3ZiYXNlXzEpOiBSZW5hbWVkIGZyb20gZ2V0X3ZiYXNlLgoJKGdldF92YmFzZSk6IFdyYXBwZXIsIG5vdyBub24tc3RhdGljLgoJKGNvbnZlcnRfcG9pbnRlcl90b192YmFzZSk6IE5vdyBzdGF0aWMuCgoJKiBjYWxsLmMgKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IEFjY2VwdCBhIGJpbmZvIGZvciBCQVNFVFlQRS4KCSogaW5pdC5jIChidWlsZF9kZWxldGUpOiBQYXNzIG9uZS4KCShidWlsZF9wYXJ0aWFsX2NsZWFudXBfZm9yKTogVXNlIGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbC4KCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBQYXNzIGEgYmluZm8uCgpNb24gRmViIDI0IDE1OjAwOjEyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogT25seSBzeW50aGVzaXplIG5vbi10cml2aWFsIGNvcHkgY3RvcnMuCgoJKiB0eXBlY2suYyAoYnVpbGRfY19jYXN0KTogTG9zZSBvdGhlciByZWZlcmVuY2UgdG8gZmxhZy4KCgkqIGNhbGwuYyAoYnVpbGRfZmllbGRfY2FsbCk6IERvbid0IGxvb2sgZm9yIFtjZF10b3JfaWRlbnRpZmllci4KCSogZGVjbDIuYyAoZGVsZXRlX3Nhbml0eSk6IFJlbW92ZSBtZWFuaW5nbGVzcyB1c2Ugb2YKCUxPT0tVUF9IQVNfSU5fQ0hBUkdFLgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IFVzZSBidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwgaW5zdGVhZAoJb2YgYnVpbGRfZGVsZXRlIGZvciBydW5uaW5nIHZiYXNlIGR0b3JzLgoJKiBpbml0LmMgKGJ1aWxkX2RlbGV0ZSk6IENhbGwgb3ZlcmxvYWQgcmVzb2x1dGlvbiBjb2RlIGluc3RlYWQgb2YKCWR1cGxpY2F0aW5nIGl0IGJhZGx5LgoKVGh1IEZlYiAyMCAxNToxMjoxNSAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IENhbGwgbWFya191c2VkIGJlZm9yZSB0cnlpbmcgdG8gZWxpZGUKCXRoZSBjYWxsLgoKCSogZGVjbC5jIChpbXBsaWNpdGx5X2RlY2xhcmUpOiBEb24ndCBzZXQgREVDTF9BUlRJRklDSUFMLgoKV2VkIEZlYiAxOSAxMToxODo1MyAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBBbHdheXMgcGVkd2FybiBmb3IgYSBjYXN0IHRvCglub24tcmVmZXJlbmNlIHVzZWQgYXMgYW4gbHZhbHVlLgoKV2VkIEZlYiAxOSAxMDozNTozNyAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogQ29udmVydCBmcm9tIDAgdG8gYSBwbWYgcHJvcGVybHkuCgpUdWUgRmViIDE4IDE1OjQwOjU3IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGhhbmRsZXIpOiBGaXggdGVtcGxhdGUgdHlwby4KClN1biBGZWIgMTYgMDI6MTI6MjggMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAobGFuZ19kZWNsX25hbWUpOiBOZXcgZm4uCgkqIHRyZWUuYyAobGFuZ19wcmludGFibGVfbmFtZSk6IFVzZSBpdC4KCkZyaSBGZWIgMTQgMTY6NTc6MDUgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZysrc3BlYy5jOiBJbmNsdWRlIGNvbmZpZy5oIHNvIHRoYXQgd2UgY2FuIGNhdGNoIGJ6ZXJvICNkZWZpbmVzCglmcm9tIHRoZSBjb25maWcgZmlsZS4KClR1ZSBGZWIgMTEgMTM6NTA6NDggMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogbmV3MS5jYzogSW5jbHVkZSBhIGRlY2xhcmF0aW9uIGZvciBtYWxsb2MsIHRvIGF2b2lkIHdhcm5pbmcsIGFuZAoJYXZvaWQgbG9zc2luZyBvbiBzeXN0ZW1zIHRoYXQgcmVxdWlyZSBvbmUgKG9uZXMgdGhhdCBkZWZpbmUgbWFsbG9jCglpbiB4bS5oKS4KCk1vbiBGZWIgMTAgMjI6NTE6MTMgMTk5NyAgQnJ1bm8gSGFpYmxlICA8YnJ1bm9AbGludWl4Lm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KCgkqIGRlY2wyLmMgKG1heF90aW5zdF9kZXB0aCk6IE5ldyB2YXJpYWJsZS4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBQYXJzZSAiLWZ0ZW1wbGF0ZS1kZXB0aC1OTiIgY29tbWFuZCBsaW5lCglvcHRpb24uCgkqIHB0LmMgKG1heF90aW5zdF9kZXB0aCk6IFZhcmlhYmxlIG1vdmVkLgoJKiBsYW5nLW9wdGlvbnMuaDogRGVjbGFyZSAiLWZ0ZW1wbGF0ZS1kZXB0aC1OTiIgY29tbWFuZCBsaW5lIG9wdGlvbgoJYXMgbGVnYWwuCgpGcmkgRmViICA3IDE1OjQzOjM0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoeHJlZl9iYXNldHlwZXMpOiBBbGxvdyBhIGJhc2UgY2xhc3MgdGhhdCBkZXBlbmRzIG9uCgl0ZW1wbGF0ZSBwYXJtcyB0byBiZSBpbmNvbXBsZXRlLgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBTdXBwb3J0IHR5cGVpZCh0eXBlKS4KCSogcnR0aS5jIChnZXRfdHlwZWlkKTogU3VwcG9ydCB0ZW1wbGF0ZXMuCgkoZXhwYW5kX3NpX2Rlc2MsIGV4cGFuZF9jbGFzc19kZXNjKTogRml4IHN0cmluZyBsZW5ndGguCgkoZXhwYW5kX3B0cl9kZXNjLCBleHBhbmRfYXR0cl9kZXNjLCBleHBhbmRfZ2VuZXJpY19kZXNjKTogTGlrZXdpc2UuCgpUdWUgRmViICA0IDExOjI4OjI0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHVuaWZ5LCBjYXNlIFRFTVBMQVRFX0NPTlNUX1BBUk0pOiBVc2UgY3BfdHJlZV9lcXVhbC4KCgkqIHB0LmMgKHRzdWJzdCk6IFB1dCBpdCBiYWNrIGZvciAtZm5vLWFuc2ktb3ZlcmxvYWRpbmcuCgpNb24gRmViICAzIDE4OjQxOjEyIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCwgY2FzZSBGVU5DVElPTl9ERUNMKTogTG9zZSBvYnNvbGV0ZSBjb2RlIHRoYXQKCXNtYXNoZXMgdG9nZXRoZXIgdGVtcGxhdGUgYW5kIG5vbi10ZW1wbGF0ZSBkZWNscyBvZiB0aGUgc2FtZQoJc2lnbmF0dXJlLgoKVGh1IEphbiAzMCAxOToxODowMCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBEb24ndCByZWN1cnNlIGZvciB0aGUgdHlwZSBvZiBhIFRZUEVOQU1FX1RZUEUuCgpXZWQgSmFuIDI5IDExOjQwOjM1IDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogTmV4dCByb3V0ZSwgcGVkd2FybiBhYm91dCBkaWZmZXJlbnQKCWV4Y2VwdGlvbnMgaWYgLXBlZGFudGljICpvciogb2xkZGVjbCAhREVDTF9JTl9TWVNURU1fSEVBREVSLgoKVHVlIEphbiAyOCAyMDo0MzoyOSAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKEhBU19ERUZBVUxUX0lNUExFTUVOVEFUSU9OKTogRGVsZXRlIG1hY3JvLgoJKHN0cnVjdCBsYW5nX3R5cGUpOiBEZWxldGUgaGFzX2RlZmF1bHRfaW1wbGVtZW50YXRpb24gbWVtYmVyLgoJSW5jcmVhc2UgZHVtbXkgdG8gMjEuCgkqIGRlY2wuYyAoc3RhcnRfbWV0aG9kKTogRGVsZXRlIHVzYWdlLgoKCSogY3AtdHJlZS5oIChidWlsZF9jYWxsLCBudWxsX3B0cl9jc3RfcCwgaW5fZnVuY3Rpb25fcCwKCXN0b3JlX2FmdGVyX3Bhcm1zLCBzdGFydF9kZWNsXzEsIGF1dG9fZnVuY3Rpb24pOiBBZGQgZGVjbHMuCgkoZ2V0X2FyZ2xpc3RfbGVuX2luX2J5dGVzLCBkZWNsYXJlX2ltcGxpY2l0X2V4Y2VwdGlvbiwKCWhhdmVfZXhjZXB0aW9uc19wLCBtYWtlX3R5cGVfZGVjbCwgdHlwZWRlY2xfZm9yX3RhZywKCXN0b3JlX2luX3Bhcm1zLCBwb3BfaW1wbGljaXRfdHJ5X2Jsb2NrcywgcHVzaF9leGNlcHRpb25fY2xlYW51cCwKCWJ1aWxkX2NvbXBvbmVudF90eXBlX2V4cHIsIGNwbHVzX2V4Y2VwdGlvbl9uYW1lLAoJe21ha2UsY2xlYXJ9X2Fub25fcGFybV9uYW1lLCBkb250X3NlZV90eXBlbmFtZSk6IFJlbW92ZWQgZGVjbHMuCgkqIGNhbGwuYyAoYnVpbGRfdGhpcyk6IE1ha2Ugc3RhdGljLgoJKGlzX2NvbXBsZXRlKTogTGlrZXdpc2UuCgkoaW1wbGljaXRfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogTGlrZXdpc2UuCgkoc3RhbmRhcmRfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKHN0cmlwX3RvcF9xdWFscyk6IExpa2V3aXNlLgoJKG5vbl9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCShidWlsZF9jb252KTogTGlrZXdpc2UuCgkodXNlcl9oYXJzaG5lc3MpOiBMaWtld2lzZS4KCShyYW5rX2Zvcl9pZGVhbCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2xfMSk6IERlbGV0ZSBmb3J3YXJkIGRlY2wuCgkocHVzaF9kZWNsX2xldmVsKTogTWFrZSBzdGF0aWMuCgkocmVzdW1lX2JpbmRpbmdfbGV2ZWwpOiBNYWtlIHN0YXRpYy4KCShuYW1lc3BhY2VfYmluZGluZ3NfcCk6IE1ha2Ugc3RhdGljLgoJKGRlY2xhcmVfbmFtZXNwYWNlX2xldmVsKTogTWFrZSBzdGF0aWMuCgkobG9va3VwX25hbWVfcmVhbCk6IE1ha2Ugc3RhdGljLgoJKGR1cGxpY2F0ZV9kZWNscyk6IE1ha2Ugc3RhdGljLiAgVGFrZSByZWdpc3RlciBvZmYgTkVXREVDTCBhbmQKCU9MRERFQ0wgcGFybSBkZWNscy4KCSogZGVjbDIuYyAoZ2V0X3NlbnRyeSk6IE1ha2Ugc3RhdGljLgoJKHRlbXBfbmFtZV9wKTogRGVsZXRlIGZuLgoJKiBleGNlcHQuYyAoYXV0b19mdW5jdGlvbik6IERlbGV0ZSBkZWNsLgoJKiBsZXguYyAoaGFuZGxlX3tjcCxzeXN2fV9wcmFnbWEpOiBNYWtlIHN0YXRpYy4KCShoYW5kbGVfc3lzdl9wcmFnbWEpIFtIQU5ETEVfU1lTVl9QUkFHTUFdOiBBZGQgZm9yd2FyZCBkZWNsLgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfe2NvcHlfY29uc3RydWN0b3IsYXNzaWduX3JlZn0pOiBNYWtlIHN0YXRpYy4KCSogcHQuYyAodHN1YnN0X2V4cHJfdmFsdWVzKTogTWFrZSBzdGF0aWMuCgkqIHJ0dGkuYyAoY29tYmluZV9zdHJpbmdzKTogRGVsZXRlIGRlY2wuCgpUdWUgSmFuIDI4IDE2OjQwOjQwIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbCk6IEhhbmRsZSBnZXR0aW5nIGEgdHlwZWRlZi4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBDb21wbGFpbiBhYm91dCB2b2lkIGFyZy4KClR1ZSBKYW4gMjggMTU6MjU6MDkgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBHaXZlIHBlZHdhcm4gb2YgZGlmZmVyZW50IGV4Y2VwdGlvbnMKCWlmIC1wZWRhbnRpYywgaW5zdGVhZCBvZiBvbGRkZWNsICFERUNMX0lOX1NZU1RFTV9IRUFERVIuCgpNb24gSmFuIDI3IDE5OjIxOjI5IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBEb24ndCBleHBhbmQgdGhlIGNsZWFudXAgdHJlZSBoZXJlLAoJc2luY2Ugd2UgYXJlIG5vdCBnb2luZyB0byB3cml0ZSB0aGUgcnRsIG91dC4gIEZpeGVzIHByb2JsZW0gd2l0aAoJLWcgLU8gb24gU1BBUkMuCgpNb24gSmFuIDI3IDE2OjI0OjM1IDE5OTcgIFNlYW4gTWNOZWlsICA8c2VhbkBtY25laWwuY29tPgoKCSogTWFrZS1sYW5nLmluOiBBZGQgJChleGVleHQpIGFzIG5lY2Vzc2FyeS4KCk1vbiBKYW4gMjcgMTM6MjA6MzkgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogcGFyc2UueSAoaGFuZGxlcl9zZXEpOiBNdXN0IGhhdmUgYXQgbGVhc3Qgb25lIGNhdGNoIGNsYXVzZS4KClNhdCBKYW4gMjUgMTI6MDA6MDUgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChhZGRfYnVpbHRpbl9jYW5kaWRhdGUpOiBSZXN0b3JlID86IGhhY2suCgoJKiBkZWNsLmMgKGdyb2tfb3BfcHJvcGVydGllcyk6IE1vcmUgd2FybmluZ3MuCgpTYXQgSmFuIDI1IDA4OjUwOjAzIDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogT24gc2Vjb25kIHRob3VnaHQsIGRvIGl0IGFzIGEgcGVkd2FybgoJc3RpbGwgYnV0IG9ubHkgaWYgIURFQ0xfSU5fU1lTVEVNX0hFQURFUiAob2xkZGVjbCkuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFNjYWxlIGJhY2sgdG8gYSB3YXJuaW5nLCBhbmQgb25seSBkbwoJJ2VtIGlmIC1wZWRhbnRpYy4KCkZyaSBKYW4gMjQgMTc6NTI6NTQgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBwZWR3YXJuIG1pc21hdGNoZWQgZXhjZXB0aW9uCglzcGVjaWZpY2F0aW9ucy4KClRodSBKYW4gMjMgMTg6MTg6NTQgMTk5NyAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBEb24ndCBkaXNwbGF5IHRoZSBpbnZpc2libGUKCWFyZ3VtZW50IGZvciBjb250cm9sbGluZyB2aXJ0dWFsIGJhc2VzLgoKVGh1IEphbiAyMyAxNjo0ODoxMCAxOTk3ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBuZXc6IEFkZCBub3Rocm93IG5ldyBhbmQgZGVsZXRlLCBiYWRfYWxsb2MgYW5kIHRocm93IHNwZWNpZmljYXRpb25zCglmb3IgZGVsZXRlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRkIHRocm93IHNwZWNpZmljYXRpb24gZm9yIGRlbGV0ZS4KCSogbmV3LmNjIChub3Rocm93KTogRGVmaW5lLgoJKiBsZXguYyAocmVhbF95eWxleCk6IFJlbW92aW5nIHdhcm5pbmcgdGhhdCB0aHJvdyBhbmQgZnJpZW5kcyBhcmUKCWtleXdvcmRzLgoJKiBuZXcxLmNjIChvcGVyYXRvciBuZXcgKHNpemVfdCBzeiwgY29uc3Qgbm90aHJvd190JikpOiBEZWZpbmUuCgkqIG5ldzIuY2MgKG9wZXJhdG9yIG5ld1tdIChzaXplX3Qgc3osIGNvbnN0IG5vdGhyb3dfdCYpOiBEZWZpbmUuCgkqIE1ha2UtbGFuZy5pbjogQWRkIG5ld3sxLDJ9LntjYyxvfS4KClRodSBKYW4gMjMgMTY6Mzk6MDYgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKGNvbnNfdXBfZGVmYXVsdF9mdW5jdGlvbik6IEZpeCByZXR1cm4gdHlwZSBvZiBzeW50aCBvcD0uCgoJKiBpbml0LmMgKGVtaXRfYmFzZV9pbml0KTogQWRkIHdhcm5pbmdzIGZvciB1bmluaXRpYWxpemVkIG1lbWJlcnMKCWFuZCBiYXNlcy4KCgkqIGRlY2wuYyAoeHJlZl9iYXNldHlwZXMpOiBBZGQgd2FybmluZyBmb3Igbm9uLXBvbHltb3JwaGljIHR5cGUKCXdpdGggZGVzdHJ1Y3RvciB1c2VkIGFzIGJhc2UgdHlwZS4KCgkqIGRlY2wuYyAoZ3Jva19vcF9wcm9wZXJ0aWVzKTogQWRkIHdhcm5pbmcgZm9yIG9wPSByZXR1cm5pbmcgdm9pZC4KCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IEFkZCB3YXJuaW5nIGZvciBvcD0gcmV0dXJuaW5nIGFueXRoaW5nCglvdGhlciB0aGFuICp0aGlzLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQWRkIHdhcm5pbmcgZm9yIGNsYXNzIHdpdGggcG9pbnRlcnMKCWJ1dCBub3QgY29weSBjdG9yIG9yIGNvcHkgb3A9LgoKCSogY3AtdHJlZS5oIChUSV9QRU5ESU5HX1RFTVBMQVRFX0ZMQUcpOiBOZXcgbWFjcm8uCgkqIHB0LmMgKGFkZF9wZW5kaW5nX3RlbXBsYXRlKTogVXNlIGl0IGluc3RlYWQgb2YgTEFOR19GTEFHXzAuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBJZiAtZmV4dGVybmFsLXRlbXBsYXRlcywgYWRkIHRoaXMKCWluc3RhbnRpYXRpb24gdG8gcGVuZGluZ190ZW1wbGF0ZXMuCgoJKiBkZWNsMi5jIChjb3B5X2Fzc2lnbm1lbnRfYXJnX3ApOiBEaXNhYmxlIG9sZCBoYWNrIHRvIHN1cHBvcnQKCUJvb2NoIGNvbXBvbmVudHMuCgpUdWUgSmFuIDIxIDE4OjMyOjA0IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0KTogcGVkd2FybiBlbnVtIHRvIHBvaW50ZXIgY29udmVyc2lvbnMuCgpNb24gSmFuIDIwIDE3OjU5OjUxIDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoc3RhbmRhcmRfY29udmVyc2lvbik6IEhhbmRsZSBnZXR0aW5nIHJlZmVyZW5jZXMuICBUYWNrCglvbiBSVkFMVUVfQ09OViBoZXJlLiAgRG8gaXQgZm9yIG5vbi1jbGFzcyB0eXBlcywgdG9vLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogUGFzcyByZWZlcmVuY2VzIHRvIHN0YW5kYXJkX2NvbnZlcnNpb24uCgkoaW1wbGljaXRfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IERpc2FibGUgb25lID86IGtsdWRnZS4KCShjb252ZXJ0X2xpa2UpOiBIYW5kbGUgUlZBTFVFX0NPTlZzIGZvciBub24tY2xhc3MgdHlwZXMuCgkoam91c3QpOiBEaXNhYmxlIHRoZSBvdGhlciA/OiBrbHVkZ2UuCgpNb24gSmFuIDIwIDE0OjUzOjEzIDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGQgY29kZSB0byBidWlsZCB1cCBjb21tb24KCWZ1bmN0aW9uIHR5cGVzIGJlZm9yZWhhbmQsIHRvIGF2b2lkIGNyZWF0aW9uIHRoZW4gcmVtb3ZhbCBvZgoJdGhpbmdzIGFscmVhZHkgaW4gdGhlIGhhc2ggdGFibGUuCgpNb24gSmFuIDIwIDE0OjQzOjQ5IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogQWxzbyB6ZXJvIG91dCBERUNMX0lOQ09NSU5HX1JUTCBmb3IKCXRoZSBhcmd1bWVudHMuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIsIFRFTVBMQVRFX0NPTlNUX1BBUk0pOiBEb24ndCByZXF1aXJlCgljdXJyZW50X3RlbXBsYXRlX3Bhcm1zLgoKRnJpIEphbiAxNyAxMDoyNTo0MiAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkKTogRG9uJ3QgcmV0dXJuIGEgZnVuY3Rpb24sIGNoZWNrIHdhbnRfdHlwZS4KClRodSBKYW4gMTYgMTg6MTQ6MzUgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBNYWtlIHN1cmUgUExBQ0VNRU5UIGhhcyBhIHR5cGUuCgpUaHUgSmFuIDE2IDE3OjQwOjI4IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogU3VwcG9ydCBuZXcgKG5vdGhyb3cpLgoKV2VkIEphbiAxNSAxMjozODoxNCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogQWxzbyBkbyBwdXNoX3RvX3RvcF9sZXZlbCBiZWZvcmUgc2V0dGluZwoJdXAgREVDTF9JTklUSUFMLgoKCSogY3AtdHJlZS5oIChQQVJNX0RFRkFVTFRfRlJPTV9URU1QTEFURSk6IE5ldyBtYWNyby4KCSogcHQuYyAodHN1YnN0KTogRGVmZXIgaW5zdGFudGlhdGlvbiBvZiBkZWZhdWx0IGFyZ3MuCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogVW50aWwgaGVyZS4KCldlZCBKYW4gMTUgMTA6MDg6MTAgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZCk6IE1ha2Ugc3VyZSB3ZSBoYXZlIGFuCglJREVOVElGSUVSX0NMQVNTX1ZBTFVFIGJlZm9yZSB3ZSB0cnkgdG8gcmV0dXJuIGl0LgoKVGh1IEphbiAgOSAwNzoxOTowMSAxOTk3ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogRGVsZXRlIHVudXNlZCB2YXIgUEFSTS4KCShidWlsZF9vdmVybG9hZF9jYWxsX3JlYWwpOiBMaWtld2lzZS4KCShidWlsZF9vYmplY3RfY2FsbCk6IERlbGV0ZSB1bnVzZWQgdmFyIFAuCgkoYnVpbGRfbmV3X29wKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoYnVpbHRpbl90eXBlX3RkZXNjc197YXJyLCBsZW4sIG1heH0pOiAjaWYgMCBvdXQgc3RhdGljCgl2YXIgZGVmaW5pdGlvbnMsIHdoaWNoIGFyZSBuZXZlciB1c2VkLgoJKHNoYWRvd190YWcpOiBEZWxldGUgdW51c2VkIHZhciBGTi4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IERlbGV0ZSB1bnVzZWQgdmFyIE9SSUdJTkFMX1RBUkdFVC4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBEZWxldGUgdW51c2VkIHZhciBBTExPQ19URU1QLgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogRGVsZXRlIHVudXNlZCB2YXIgQ09OVEVYVC4KCShkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogRGVsZXRlIHVudXNlZCB2YXIgTkFNRS4KCShzeW50aGVzaXplX21ldGhvZCk6IERlbGV0ZSB1bnVzZWQgdmFyIEJBU0UuCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IERlbGV0ZSB1bnVzZWQgdmFyIENPREVfVFlQRV9OT0RFLgoJKiBydHRpLmMgKGJ1aWxkX2hlYWRvZik6IERlbGV0ZSB1bnVzZWQgdmFyIFZQVFIuCgkoZ2V0X3R5cGVpZCk6IERlbGV0ZSB1bnVzZWQgdmFyIFQuCgkqIHR5cGVjay5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogRGVsZXRlIHVudXNlZCB2YXJzIE9SSUdfT1AxCglhbmQgT1JJR19PUDIuCgkoYnVpbGRfcHRybWVtZnVuYyk6IERlbGV0ZSB1bnVzZWQgdmFycyBVIGFuZCBOSU5ERVguCgkqIHR5cGVjazIuYyAoYnVpbGRfZnVuY3Rpb25hbF9jYXN0KTogRGVsZXRlIHVudXNlZCB2YXIgQklORk8uCgpXZWQgSmFuICA4IDEzOjA5OjU0IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBVc2UgSURFTlRJRklFUl9DTEFTU19WQUxVRSB0byBsb29rIHVwCgl0aGluZ3MgaW4gYSB0eXBlIGJlaW5nIGRlZmluZWQuCgkqIGRlY2wuYyAoZmluaXNoX2VudW0pOiBSZXZlcnNlIHRoZSB2YWx1ZXMgc28gdGhhdCB0aGV5IGFyZSBpbgoJdGhlIGNvcnJlY3Qgb3JkZXIuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IGluaXRpYWxpemUKCUJJTkZPX0JBU0VUWVBFUyB1bnRpbCB0aGUgdmVjdG9yIGlzIGZpbGxlZCBvdXQuCgkodW5pZnkpOiBEb24ndCBhYm9ydCBvbiBjb25mbGljdGluZyBiaW5kaW5ncywganVzdCBmYWlsLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBEbyBwdXNoX3RpbnN0X2xldmVsIGJlZm9yZSBhbnkgdHN1YnN0aW5nLgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX3ZhbHVlKTogSGFuZGxlIGdldHRpbmcgYQoJVEVNUExBVEVfQ09OU1RfUEFSTSBmb3IgYSBwb2ludGVyLgoKVHVlIEphbiAgNyAxNDowMDo1OCAxOTk3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF9tZW1iZXJfaW5pdCk6IERvbid0IGdpdmUgJ25vdCBhIGJhc2UnIGVycm9yIGZvcgoJdGVtcGxhdGVzLgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IENhbGwgaW1wb3J0X2V4cG9ydF9kZWNsIGxhdGVyLgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBSZXR1cm4gYSB2YWx1ZS4KCgkqIHBhcnNlLnkgKGV4dGVuc2lvbik6IE5ldyBydWxlIGZvciBfX2V4dGVuc2lvbl9fLgoJKGV4dGRlZiwgdW5hcnlfZXhwciwgZGVjbCwgY29tcG9uZW50X2RlY2wpOiBVc2UgaXQuCgpUdWUgSmFuICA3IDA5OjIwOjI4IDE5OTcgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJhc2VfYmluZm8pOiBSZW1vdmUgdW51c2VkIGJhc2VfaGFzX3ZpcnR1YWwgbWVtYmVyLgoJKGZpbmlzaF9iYXNlX3N0cnVjdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoKVHVlIERlYyAzMSAyMDoyNTo1MCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoZXhwYW5kX3VwY2FzdF9maXh1cHMpOiBGaXggYm9ndXMgY29kZSBnZW5lcmF0aW9uCglwcm9ibGVtIHdoZXJlIHRoZSBnZW5lcmF0ZWQgY29kZSB1c2VzIHRoZSB3cm9uZyBpbmRleCBpbnRvIHRoZQoJcnVudGltZSBidWlsdCB2dGFibGUgb24gdGhlIHN0YWNrLiAgT2xkIGNvZGUgY291bGQgY2xvYmJlciByYW5kb20KCXN0YWNrIHZhbHVlcy4KClR1ZSBEZWMgMzEgMTU6MTY6NTYgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogTWFrZSBzdXJlIHRoZSBwYXJ0aWFsIEVIIGNsZWFudXBzCglsaXZlIG9uIHRoZSBmdW5jdGlvbl9vYnN0YWNrLgoKRnJpIERlYyAyNyAxMDozMTo0MCAxOTk2ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEB0d2luc3VuLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZysrc3BlYy5vKTogRG9uJ3QgdXNlICQ8IHdpdGggYW4gZXhwbGljaXQgdGFyZ2V0OwoJdGhpcyBpc24ndCBwb3J0YWJsZSB0byBzb21lIHZlcnNpb25zIG9mIGBtYWtlJyAoZS5nLiBTb2xhcmlzIDIuNS4xKS4KClR1ZSBEZWMgMjQgMTA6MjQ6MDMgMTk5NiAgSmVmZnJleSBBIExhdyAgPGxhd0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rdmFyZGVjbCk6IEF2b2lkIEFOU0kgc3R5bGUgaW5pdGlhbGl6YXRpb24uCgpTdW4gRGVjIDIyIDA0OjIyOjA2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IFR3ZWFrIGFyZyB0eXBlcyBmb3IgYSBGVU5DVElPTl9UWVBFLgoKRnJpIERlYyAyMCAxNzowOToyNSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IENhbGwgZ3Jva197Y3RvcixvcH1fcHJvcGVydGllcy4KCkZyaSBEZWMgMjAgMTI6MTc6MTIgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZysrc3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IFB1dCBtaXNzaW5nIGh5cGhlbiBpbiBmcm9udCBvZgoJYXJndW1lbnRzIHdlIGNvbXBhcmUgYWdhaW5zdC4gIFN0YXJ0IHRoZSBjb3VudCBvZiBJIGF0IDEsIG5vdCAwLAoJc2luY2UgYXJndlswXSBpcyBzdGlsbCB0aGUgY29tbWFuZC4KClRodSBEZWMgMTkgMTE6NTM6NTcgMTk5NiAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogbGFuZy1zcGVjcy5oOiBBY2NlcHQgLmNwIGFzIGFuIEMrKyBleHRlbnNpb24uCgpNb24gRGVjIDE2IDIyOjQzOjMxIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAocHRyX3JlYXNvbmFibHlfc2ltaWxhcik6IEFkZCBkZWNsLgoKVGh1IERlYyAxMiAxNTowMDozNSAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2t2YXJkZWNsKTogQ2hhbmdlIFNQRUNCSVRTIHBhcm0gdG8gYmUgdGhlIFNQRUNCSVRTX0lOCglwb2ludGVyLiAgTmV3IGxvY2FsIFNQRUNCSVRTIHdpdGggdGhlIHBhcm0ncyB2YWx1ZS4KCShncm9rZGVjbGFyYXRvcik6IFBhc3MgJnNwZWNiaXRzIGRvd24uCgoJKiBwYXJzZS55IChleHByX25vX2NvbW1hcyk6IE1ha2Ugc3VyZSAkJCBpcyBub3QgYW4gZXJyb3JfbWFya19ub2RlCgliZWZvcmUgd2UgdHJ5IHRvIGRvIENfU0VUX0VYUF9PUklHSU5BTF9DT0RFIG9uIGl0LgoKCSogc2VhcmNoLmMgKGVudmVsb3BlX2FkZF9kZWNsKTogQ2hlY2sgdGhhdCB0aGUgQ0xBU1NUWVBFX0NJRCBvZgoJQ09OVEVYVCBpcyBub3QgMCBiZWZvcmUgd2UgdHJ5IHRvIHVzZSBUWVBFX0RFUklWRVNfRlJPTS4KCgkqIGRlY2wuYyAoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IE9ubHkgZXhwYW5kIHRoZSBleHByIGlmIEVYUCBpcwoJbm90IGFuIGVycm9yX21hcmtfbm9kZS4KClNhdCBEZWMgIDcgMTc6MjA6MjIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChUWVBFX01BSU5fREVDTCk6IFVzZSBUWVBFX1NUVUJfREVDTC4KCSogKi5jOiBVc2UgVFlQRV9NQUlOX0RFQ0wgaW5zdGVhZCBvZiBUWVBFX05BTUUgd2hlcmUgYXBwcm9wcmlhdGUuCgpGcmkgRGVjICA2IDE0OjQwOjA5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBXaGVuIGdpdmluZyBhbiBhbm9ueW1vdXMgc3RydWN0IGEgbmFtZSwKCXJlcGxhY2UgVFlQRV9OQU1FIGluc3RlYWQgb2YgVFlQRV9JREVOVElGSUVSIChzbyBUWVBFX1NUVUJfREVDTCBpcwoJbm90IGFmZmVjdGVkKS4KCgkqIHR5cGVjazIuYyAoYnVpbGRfbV9jb21wb25lbnRfcmVmKTogSWYgY29tcG9uZW50IGlzIGEgcG9pbnRlcgoJdG8gZGF0YSBtZW1iZXIsIHJlc29sdmUgdGhlIE9GRlNFVF9SRUYgbm93LgoKCSogY2FsbC5jIChjb252ZXJ0X2xpa2UpOiBEb24ndCBnbyBpbnRvIGluZmluaXRlIHJlY3Vyc2lvbi4KCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IFVzZSB0c3Vic3RfZXhwciBmb3Igbm9uLXR5cGUgYXJncy4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFNldCBERUNMX0FSVElGSUNJQUwgb24gdGhlIHZwdHIuCgkqIHRyZWUuYyAobGF5b3V0X2Jhc2V0eXBlcyk6IEFuZCBvbiB0aGUgdmJhc2UgcHRyLgoKVGh1IERlYyAgNSAwMjoxMToyOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKEJPT0xfVFlQRV9TSVpFKTogRGVmaW5lIGluIHRlcm1zIG9mIFBPSU5URVJfU0laRSBvcgoJQ0hBUl9UWVBFX1NJWkUgc28gYm9vbCBpcyBhbHdheXMgdGhlIHNhbWUgc2l6ZSBhcyBhbm90aGVyIHR5cGUuCgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBTZXQgREVDTF9JR05PUkVEX1AgZm9yIERXQVJGLCB0b28uCgpUdWUgRGVjICAzIDIzOjE4OjM3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogUmVtb3ZlIHN5bnRoZXNpemVkIG1ldGhvZHMgZnJvbQoJVFlQRV9NRVRIT0RTIG9mIGFuIGFub255bW91cyB1bmlvbiwgY29tcGxhaW4gYWJvdXQgbWVtYmVyCglmdW5jdGlvbnMuCgkqIGRlY2wuYyAoc2hhZG93X3RhZyk6IFdpcGUgb3V0IG1lbW9yeSBvZiBzeW50aGVzaXplZCBtZXRob2RzIGluCglhbm9ueW1vdXMgdW5pb25zLgoJKGZpbmlzaF9mdW5jdGlvbik6IEp1c3QgY2xlYXIgdGhlIERFQ0xfUlRMIG9mIG91ciBhcmd1bWVudHMuCgpGcmkgTm92IDI5IDIxOjU0OjE3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogRW1pdCBEV0FSRiBkZWJ1Z2dpbmcgaW5mbyBmb3Igc3RhdGljIGRhdGEKCW1lbWJlcnMuCgoJKiBwdC5jICh0c3Vic3QpOiBJZiB0IGlzIGEgc3R1YiBkZWNsLCByZXR1cm4gdGhlIHN0dWIgZGVjbCBmb3IgdHlwZS4KCldlZCBOb3YgMjcgMTQ6NDc6MTUgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IERvbid0IGRpZSBpZiBDT01QT05FTlQgaXNuJ3QgYQoJSURFTlRJRklFUl9OT0RFLgoKV2VkIE5vdiAyNyAxNjowNToxOSAxOTk2ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGlrdG9rLmN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGcrKy1jcm9zcyQoZXhlZXh0KSk6IEZpeCB0eXBvLgoKV2VkIE5vdiAyNyAwODoxNDowMCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJTWFrZSB0aGUgZysrIGRyaXZlciBub3cgYmUgYSBzdGFuZGFsb25lIHByb2dyYW0sIHJhdGhlciB0aGFuIG9uZQoJdGhhdCB0cmllcyB0byBydW4gdGhlIGdjYyBkcml2ZXIgYWZ0ZXIgbXVuZ2luZyB1cCB0aGUgb3B0aW9ucy4KCSogTWFrZS1sYW5nLmluIChnKysuYywgZysrc3BlYy5vKTogTmV3IHJ1bGVzLgoJKGcrKy5vKTogTmV3IHJ1bGUsIGJhc2VkIG9uIGdjYy5vIHdpdGggLURMQU5HX1NQRUNJRklDX0RSSVZFUgoJYWRkZWQuCgkoZysrJChleGVleHQpKTogTmV3IHJ1bGUsIGJhc2VkIG9uIHhnY2MgcnVsZS4KCShnKystY3Jvc3MkKGV4ZWV4dCkpOiBOb3cganVzdCBjb3BpZXMgZysrJChleGVleHQpIG92ZXIuCgkqIGcrK3NwZWMuYzogTmV3IGZpbGUuCgkqIGcrKy5jOiBSZW1vdmVkIGZpbGUuCgpUdWUgTm92IDI2IDE5OjAxOjA5IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBBcnJhbmdlIGZvciBhbnkgdGVtcG9yYXJ5IHZhbHVlcwoJdGhhdCBoYXZlIGJlZW4ga2VlcCBpbiByZWdpc3RlcnMgdW50aWwgbm93IHRvIGJlIHB1dCBpbnRvIG1lbW9yeS4KCk1vbiBOb3YgMjUgMTU6MTY6NDEgMTk5NiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChjKysuc3RhZ2VbMTIzNF0pOiBEZXBlbmQgdXBvbiBzdGFnZVsxLTRdLXN0YXJ0LCBzbwoJdGhhdCBtYWtlIC1qMyBib290c3RyYXAgd29ya3MgYmV0dGVyLgoKU3VuIE5vdiAyNCAwMjowOTozOSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2h0YWcpOiBEbyBwdXNoZGVjbCBmb3IgYW5vbiB0YWdzLgoKVGh1IE5vdiAyMSAxNjozMDoyNCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogRml4IGxvZ2ljLgoJKHVuYXJ5X2NvbXBsZXhfbHZhbHVlKTogQXZvaWQgdW51c2VkIHdhcm5pbmcgb24gYWRkcmVzcyBvZiBJTklUX0VYUFIuCgpXZWQgTm92IDIwIDE4OjQ3OjMxIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZysrLmMgKG1haW4pOiBNYWtlIHN1cmUgYXJnbGlzdCBoYXMgYSBmaW5hbCBOVUxMIGVudHJ5LiAgQWRkCglQRVhFQ1VURV9MQVNUIHRvIHRoZSBmbGFncyBwYXNzZWQgdG8gcGV4ZWN1dGUsIGFzIG90aGVyd2lzZQoJc3RkaW4vc3Rkb3V0IG9mIHRoZSBpbnZva2VkIHByb2dyYW0gYXJlIHJlZGlyZWN0ZWQgdG8KCW5vd2hlcmVzdmlsbGUuCgpUdWUgTm92IDE5IDE2OjEyOjQ0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoaW1wbGljaXRseV9kZWNsYXJlKTogU2V0IERFQ0xfQVJUSUZJQ0lBTC4KClR1ZSBOb3YgMTkgMTU6NDg6MTkgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChyZXNvbHZlX29mZnNldF9yZWYpOiBIYW5kbGUgb2JqLnZmbiBiZXR0ZXIuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogU2V0IFRSRUVfVFlQRSBvbiByZXN1bHQgZnJvbQoJYnVpbGRfdmZuX3JlZi4KClR1ZSBOb3YgMTkgMTM6MTQ6MzMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBBbHNvIGhhbmRsZSBhbmFjaHJvbmlzdGljCglpbXBsaWNpdCBjb252ZXJzaW9ucyBmcm9tICg6OiopKCkgdG8gY3Ygdm9pZCouCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBMaWtld2lzZS4KCk1vbiBOb3YgMTggMTc6MDU6MjYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKGhhbmRsZV9jcF9wcmFnbWEpOiBGaXggYm9ndXMgd2FybmluZy4KCk1vbiBOb3YgMTggMTY6MTA6NDMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IEF2b2lkIHRoaW5raW5nIGEgUE9JTlRFUl9UWVBFCgkoTUVUSE9EX1RZUEUpIGlzIGEgVFlQRV9QVFJNRU1GVU5DX1AuCgpUaHUgTm92IDE0IDIzOjE4OjE3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFN1cHBvcnQgRFdBUkYyX0RFQlVHLgoJKiBzZWFyY2guYyAoZGZzX2RlYnVnX21hcmspOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaHRhZywgZmluaXNoX2VudW0pOiBMaWtld2lzZS4KCSogbGV4LmMgKGNoZWNrX25ld2xpbmUpOiBVc2UgZGVidWdfKiBpbnN0ZWFkIG9mIGNhbGxpbmcgKm91dAoJZnVuY3Rpb25zIGRpcmVjdGx5LgoKVGh1IE5vdiAxNCAxNToyMTo0NiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGNwbGliMi5yZWFkeSk6IEFkZCBlbHNlIGNsYXVzZSB0byBhdm9pZCBwcm9ibGVtcwoJb24gc29tZSBwaWNreSBob3N0cy4KCldlZCBOb3YgMTMgMTI6MzI6MDcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQSBjbGFzcyBoYXMgYSBub24tdHJpdmlhbCBjb3B5Cgljb25zdHJ1Y3RvciBpZiBpdCBoYXMgdmlydHVhbCBmdW5jdGlvbnMuCgoJKiBjdnQuYyAoY3BfY29udmVydCk6IEFsd2F5cyBjYWxsIGEgY29uc3RydWN0b3IuCgoJKiBjYWxsLmMgKHJlZmVyZW5jZV9iaW5kaW5nKTogU3RpbGwgdGFjayBvbiBhIFJFRl9CSU5ECglmb3IgYmFkIGNvbnZlcnNpb25zLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBQcm9wYWdhdGUgSUNTX0JBRF9GTEFHLgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogUGFzcyBMT09LVVBfT05MWUNPTlZFUlRJTkcuCgkoY19leHBhbmRfcmV0dXJuKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBMaWtld2lzZSBmb3IgeyB9LgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IEtlZXAgdGhlIENPTlNUUlVDVE9SIGhhbmRsaW5nLgoJKiBjdnQuYyAoY3BfY29udmVydCk6IEhhbmRsZSBmYWlsdXJlIGJldHRlci4KCldlZCBOb3YgMTMgMTE6NTE6MjAgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZysrLmMgKG1haW4pOiBBbHNvIHNldCBQRVhFQ1VURV9TRUFSQ0gsIHRvIG1ha2UgdGhlIGludm9jYXRpb24KCW9mIEdDQyBiZSBwYXRoLXJlbGF0aXZlLgoKV2VkIE5vdiAxMyAxMToyNzoxNiAxOTk2ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGlrdG9rLmN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGcrKy1jcm9zcyk6IEcrKy1jcm9zcyBkb2Vzbid0IG5lZWQgdmVyc2lvbi5vLCBidXQKCWl0IGRvZXMgbmVlZCBjaG9vc2UtdGVtcC5vIGFuZCBwZXhlY3V0ZS5vLgoKV2VkIE5vdiAxMyAwNzo1MzozOCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBnKysuYyAoZXJyb3IpIFshSEFWRV9WUFJJTlRGXTogUHV0IGVycm9yIGJhY2sgZm9yIHRoZSBvbmx5IHRpbWUKCXRoYXQgd2Ugc3RpbGwgdXNlIGl0LgoJKFBfdG1wZGlyLCBSX09LLCBXX09LLCBYX09LKSBbX19NU0RPU19fXTogRGVsZXRlIHVubmVjZXNzYXJ5IG1hY3Jvcy4KCldlZCBOb3YgMTMgMDI6MDA6MjYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChleHBhbmRfZGVmYXVsdF9pbml0KTogQXZvaWQgY2FsbGluZyBjb25zdHJ1Y3RvcnMgdG8KCWluaXRpYWxpemUgcmVmZXJlbmNlIHRlbXBzLgoKCSogY3Z0LmMgKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogRml4LgoKVHVlIE5vdiAxMiAxOToxMDowNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydCk6IFNpbXBsaWZ5IGZvciBmbGFnX2Fuc2lfb3ZlcmxvYWRpbmcuCgkoY29udmVydF90b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9hZ2dyX2luaXRfMSk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKENPTlZfTk9OQ09OVkVSVElORyk6IExvc2UuCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBMb3NlIGFsbG93X25vbmNvbnZlcnRpbmcgcGFybS4KCSogKi5jOiBBZGp1c3QuCgkqIGNhbGwuYyAoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IEFzc3VtZSBMT09LVVBfT05MWUNPTlZFUlRJTkcuCgpUdWUgTm92IDEyIDE2OjI5OjA0IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGNhbnVjay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0X2V4cHIpOiBSZXZlcnNlIGFyZ3MgdG8gZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrLgoKVHVlIE5vdiAxMiAxNToyNjoxNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IERvbid0IGNyYXNoIG9uIG5vbi1jb25zdHJ1Y3RvcgoJVEFSR0VUX0VYUFIuCgpUdWUgTm92IDEyIDE0OjAwOjUwIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGcrKy5jOiBJbmNsdWRlIGdhbnNpZGVjbC5oLgoJKFZQUk9UTywgUFZQUk9UTywgVkFfU1RBUlQpOiBEZWxldGUuCgkoY2hvb3NlX3RlbXBfYmFzZV90cnksIGNob29zZV90ZW1wX2Jhc2UsIHBlcnJvcl9leGVjLAoJcnVuX2RvcykgW19fTVNET1NfX106IERlbGV0ZSBmbnMuCgkocGZhdGFsX3dpdGhfbmFtZSk6IERlbGV0ZSBmbi4KCSh0ZW1wX2ZpbGVuYW1lKTogRGVjbGFyZSBsaWtlIGluIGdjYy5jLgoJKHBleGVjdXRlLCBwd2FpdCwgY2hvb3NlX3RlbXBfYmFzZSk6IERlY2xhcmUgZnJvbSBnY2MuYy4KCShlcnJvcl9jb3VudCwgc2lnbmFsX2NvdW50KTogRGVmaW5lLgoJKGVycm9yKTogRGVsZXRlIGJvdGggZGVmaW5pdGlvbnMuCgkoUEVYRUNVVEVfe0ZJUlNULExBU1QsU0VBUkNILFZFUkJPU0V9KTogRGVmaW5lIGZyb20gZ2NjLmMuCgkocGZhdGFsX3BleGVjdXRlKTogQWRkIGZuIGZyb20gZ2NjLmMuCgkobWFpbik6IFJlbmFtZSBsb2NhbCBWRVJCT1NFIHZhciB0byBWRVJCT1NFX0ZMQUcuICBSZXdyaXRlIHRoZQoJY29kZSB0byB1c2UgdGhlIHBleGVjdXRlIHN0dWZmIGFsc28gdXNlZCBieSBnY2MuYy4KCShNSU5fRkFUQUxfU1RBVFVTKTogRGVmaW5lLgoJKiBNYWtlLWxhbmcuaW4gKGcrKyk6IEFkZCBkZXBlbmRlbmN5IG9uIGFuZCBsaW5raW5nIHdpdGgKCWNob29zZS10ZW1wLm8gYW5kIHBleGVjdXRlLm8uCgoJKiBjcC10cmVlLmg6IEluY2x1ZGUgZ2Fuc2lkZWNsLmguCgkoU1RESU9fUFJPVE8pOiBEZWxldGUgI3VuZGVmLyNkZWZpbmUuCgkqIGN2dC5jIChOVUxMKTogRGVsZXRlICN1bmRlZi8jZGVmaW5lLgoJKiBleHByLmMgKE5VTEwpOiBMaWtld2lzZS4KCSogaW5pdC5jIChOVUxMKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoTlVMTCk6IExpa2V3aXNlLgoJKiB4cmVmLmMgKE5VTEwpOiBMaWtld2lzZS4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb24pOiBBZGQgcHJvdG90eXBlLgoJKiBjYWxsLmMgKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uKTogRGVsZXRlIHByb3RvdHlwZS4gIENvcnJlY3QKCWRlY2wgb2YgRkxBR1MgYXJnIHRvIGJlIGFuIGludC4KCSogY3Z0LmMgKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgpUdWUgTm92IDEyIDEyOjE2OjIwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuZGVmOiBBZGQgVFJZX0JMT0NLIGFuZCBIQU5ETEVSLgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogU3VwcG9ydCB0ZW1wbGF0ZXMuCgkqIHBhcnNlLnkgKHRyeV9ibG9jaywgaGFuZGxlcl9zZXEpOiBMaWtld2lzZS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBTdXBwb3J0IFRSWV9CTE9DSyBhbmQgSEFORExFUi4KCk1vbiBOb3YgMTEgMTM6NTc6MzEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoY3VycmVudF90ZW1wbGF0ZV9hcmdzKTogTmV3IGZuLgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IFVzZSBpdC4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBpdC4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogRGVyZWZlcmVuY2UgcmVmIHZhcnMuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogR2VuZXJhbGl6ZSBoYW5kbGluZyBvZiBUWVBFTkFNRV9UWVBFcyBpbgoJdGhlIGRlY2wtc3BlY2lmaWVyLXNlcS4KCgkqIGRlY2wuYyAoZ3Jva19vcF9wcm9wZXJ0aWVzKTogRG9uJ3QgZm9yY2UgdGhlIHR5cGUgb2YgYSBjb252ZXJzaW9uCglvcCB0byBiZSBjb21wbGV0ZS4gIERvbid0IHdhcm4gYWJvdXQgY29udmVydGluZyB0byB0aGUgc2FtZSB0eXBlCglmb3IgdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMuCgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IERvbid0IGNhbGwgaW5zdGFudGlhdGVfZGVjbCBvbiBzeW50aGVzaXplZAoJbWV0aG9kcy4KCk1vbiBOb3YgMTEgMTM6MjA6MzQgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoZ2V0X2RlbHRhX2RpZmZlcmVuY2UpOiBSZW1vdmUgcHJldmlvdXMgYm9ndXNuZXNzLgoJRG9uJ3QgZ2l2ZSBlcnJvcnMgaWYgZm9yY2UgaXMgc2V0LgoKRnJpIE5vdiAgOCAxNzozODo0NCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IERvbid0IGVtaXQgZGVidWcgaW5mby4KCSogZGVjbC5jIChwdXNoZGVjbCk6IExvc2Ugb2Jzb2xldGUgY29kZS4KCShncm9rZGVjbGFyYXRvcik6IFN0aWxsIGRvIHRoZSBsb25nIGxvbmcgdGhpbmcgYWZ0ZXIgY29tcGxhaW5pbmcuCgkqIHNlYXJjaC5jIChub3RlX2RlYnVnX2luZm9fbmVlZGVkKTogRG9uJ3QgZG8gYW55dGhpbmcgaWYgd2UncmUgaW4gYQoJdGVtcGxhdGUuCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IEZvciBub24tbG9jYWwgY2xhc3NlcywKCXB1c2hfdG9fdG9wX2xldmVsIGZpcnN0LgoKRnJpIE5vdiAgOCAxMTo1MjoyOCAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IEFkZCBub19lcnJvciBwYXJhbWV0ZXIuCgkoYnVpbGRfcHRybWVtZnVuYyk6IENhbGwgZ2V0X2RlbHRhX2RpZmZlcmVuY2Ugd2l0aCBub19lcnJvciBzZXQ7Cgl3ZSBkb24ndCB3YW50IGVycm9yIG1lc3NhZ2VzIHdoZW4gY29udmVydGluZyB1bnJlbGF0ZWQKCXBvaW50ZXItdG8tbWVtYmVyIGZ1bmN0aW9ucy4KClRodSBOb3YgIDcgMTE6MTY6MjQgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogSW1wcm92ZSB0aGUgd29yZGluZyBvbiBlcnJvciBtZXNzYWdlcyB0aGF0CglpbnZvbHZlIHBvaW50ZXIgdG8gbWVtYmVyIGZ1bmN0aW9ucy4KClR1ZSBOb3YgIDUgMTc6MTI6MDUgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IE1vdmUgY29kZSBmb3IgY29udmVyc2lvbnMgZnJvbQoJKDo6KikoKSB0byB2b2lkKiBvciAoKikoKSB1cCBhIGJpdCwgc28gdGhhdCB3ZSBjYW4gY29udmVydCBmcm9tCglNRVRIT0RfVFlQRXMgYXMgd2VsbC4KClR1ZSBOb3YgIDUgMTQ6NTQ6MTcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcnR0aS5jIChnZXRfdGluZm9fZm4pOiBNYWtlIHN1cmUgJ3R5cGUnIGlzIHBlcm1hbmVudC4KCVRoZXJlIGFyZSBubyAnbWVtYmVyJyB0eXBlcy4KCShnZXRfdGluZm9fZm5fZHluYW1pYyk6IERpYWdub3NlIHR5cGVpZCBvZiBvdmVybG9hZGVkIGZuLgoJKGJ1aWxkX3hfdHlwZWlkKTogSGFuZGxlIGVycm9ycy4KCk1vbiBOb3YgIDQgMTc6NDM6MTIgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBIYW5kbGUgYW5hY2hyb25pc3RpYyBpbXBsaWNpdAoJY29udmVyc2lvbnMgZnJvbSAoOjoqKSgpIHRvIHZvaWQqIG9yICgqKSgpLgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogTGlrZXdpc2UuCgkoY3BfY29udmVydF90b19wb2ludGVyX2ZvcmNlKTogUmVtb3ZlIGNwX2NvbnZlcnRfdG9fcG9pbnRlcgoJY29udmVyc2lvbnMgZnJvbSBoZXJlLgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBBZGQgLVd7bm8tLH1wbWYtY29udmVyc2lvbnMuCgkqIGxhbmctb3B0aW9ucy5oOiBMaWtld2lzZS4KCSogZGVjbDIuYyAod2Fybl9wbWYycHRyKTogRGVmaW5lLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaXQuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQpOiBBbGxvdyBwbWZzIGRvd24gaW50bwoJY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24uCgpTdW4gTm92ICAzIDA5OjQzOjAwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBGaXggZm9yIHJldHVybmluZyBvdmVybG9hZGVkIGZuLgoKRnJpIE5vdiAgMSAwODo1MzoxNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKERJUkVDVF9CSU5EKTogQ2hhbmdlIGZyb20gSU5ESVJFQ1RfQklORC4KCSogZGVjbC5jIChncm9rX3JlZmVyZW5jZV9pbml0KTogUGFzcyBESVJFQ1RfQklORC4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IERvbid0IG1hcmsgJ3RoaXMnIGFkZHJlc3NhYmxlLiAgVXNlCglESVJFQ1RfQklORC4KCSogY2FsbC5jIChjb252ZXJ0X2xpa2UpOiBEb24ndCBwYXNzIElORElSRUNUX0JJTkQuCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAobWFya19hZGRyZXNzYWJsZSk6IEFsbG93ICZ0aGlzIGlmIGZsYWdfdGhpc19pc192YXJpYWJsZS4KClRodSBPY3QgMzEgMTc6MDg6NDkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBTdXBwb3J0IFRBUkdFVF9FWFBSLCB1bmlmeSB3aXRoCglzaW1pbGFyIGNvZGUgaW4gYnVpbGRfdXBfcmVmLgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogRHJhc3RpY2FsbHkgc2ltcGxpZnkuCgpNb24gT2N0IDI4IDEyOjQ1OjA1IDE5OTYgIEplZmZyZXkgQSBMYXcgIDxsYXdAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChzaWduZWRfb3JfdW5zaWduZWRfdHlwZSk6IElmIHRoZSBnaXZlbiB0eXBlIGFscmVhZHkKCWFzIHRoZSBjb3JyZWN0IHNpZ25lZG5lc3MsIHRoZW4ganVzdCByZXR1cm4gaXQuCgoJKiB0eXBlY2suYyAoe3VuLH1zaWduZWRfdHlwZSk6IElmIGNhbid0IGRvIGFueXRoaW5nLCBjYWxsCglzaWduZWRfb3JfdW5zaWduZWRfdHlwZS4KClRodSBPY3QgMjQgMTQ6MjE6NTkgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChjb3B5X2Fzc2lnbm1lbnRfYXJnX3ApOiBEb24ndCBidXkgdGhlIGZhcm0gaWYKCWN1cnJlbnRfY2xhc3NfdHlwZSBpcyBOVUxMLgoKV2VkIE9jdCAyMyAwMDo0MzoxMCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AZ2VyYmlsLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBBdm9pZCBlbXB0eSBzdHJ1Y3RzIGJ5IGFkZGluZyBhIGZpZWxkCglzbyBsYXlvdXRfdHlwZSBnZXRzIHRoZSBtb2RlIHJpZ2h0LgoKCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IERyYXN0aWNhbGx5IHNpbXBsaWZ5LgoKTW9uIE9jdCAyMSAyMjozNDowMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IEhhbmRsZSBvdmVybG9hZGVkIG1ldGhvZHMuCgpGcmkgT2N0IDE4IDE2OjAzOjQ4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogQSBUQVJHRVRfRVhQUiBoYXMgc2lkZS1lZmZlY3RzLgoKVGh1IE9jdCAxNyAxMTozMTo1OSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjdnQuYyAoY29udmVydF90b19wb2ludGVyX2ZvcmNlKTogQWRkIGNvZGUgdG8gc3VwcG9ydCBwb2ludGVyIHRvCgltZW1iZXIgZnVuY3Rpb24gdG8gcG9pbnRlciB0byBmdW5jdGlvbiBjb252ZXJzaW9ucy4KCSogaW5pdC5jIChyZXNvbHZlX29mZnNldF9yZWYpOiBBZGQgY29kZSB0byBhbGxvdyBmYWtlZCB1cCBvYmplY3RzLAoJaWdub3JpbmcgdGhlbSBpZiB0aGV5IGFyZSBub3QgdXNlZCwgYW5kIGdpdmluZyBhbiBlcnJvciwgaWYgdGhleQoJYXJlIG5lZWRlZC4KCSogdHlwZWNrLmMgKGdldF9tZW1iZXJfZnVuY3Rpb25fZnJvbV9wdHJmdW5jKTogRm9sZCBlMSB0byBpbXByb3ZlCgljb2RlLCBhbmQgc28gdGhhdCB3ZSBjYW4gZ2l2ZSBhbiBlcnJvciwgaWYgd2UgbmVlZGVkIGFuIG9iamVjdCwKCWFuZCBvbmUgd2FzIG5vdCBwcm92aWRlZC4KCShidWlsZF9jX2Nhc3QpOiBEb24ndCBjYWxsIGRlZmF1bHRfY29udmVyc2lvbiB3aGVuIHdlIHdhbnQgdG8KCWNvbnZlcnQgdG8gcG9pbnRlciB0byBmdW5jdGlvbiBmcm9tIGEgTUVUSE9EX1RZUEUuCgpNb24gT2N0IDE0IDAwOjI4OjUxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY3BsaWIyLnJlYWR5KTogRml4IGxvZ2ljLgoKCSogZGVjbC5jIChzaGFkb3dfdGFnKTogT25seSBjb21wbGFpbiBhYm91dCBub24tYXJ0aWZpY2lhbCBmdW5jdGlvbgoJbWVtYmVycy4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IEFkZCBzeW50aGVzaXplZCBtZXRob2RzIHRvIFRZUEVfTUVUSE9EUy4KCkZyaSBPY3QgMTEgMTY6MTI6NDAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IFByZS10d2VhayBjYWxsX3RhcmdldCBsaWtlCglleHBhbmRfaW5saW5lX2Z1bmN0aW9uIHdvdWxkLgoKCSogcHQuYyAobWFya19kZWNsX2luc3RhbnRpYXRlZCk6IElmIGV4dGVybl9wLCBjYWxsCgltYXJrX2lubGluZV9mb3Jfb3V0cHV0LgoKVGh1IE9jdCAxMCAxNTo1ODowOCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAodW5hcnlfY29tcGxleF9sdmFsdWUpOiBBZGQgY29kZSB0byBoYW5kbGUgaW50ZXJtZWRpYXRlCglwbWQgY29udmVyc2lvbnMuCgoJKiB0eXBlY2suYyAoZ2V0X2RlbHRhX2RpZmZlcmVuY2UpOiBGaXggd29yZGluZywgYXMgd2UgY2FuIGJlIHVzZWQKCWZvciBwb2ludGVyIHRvIGRhdGEgbWVtYmVycy4KClR1ZSBPY3QgIDggMTI6NDM6NTEgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBJZiB0aGUgZnVuY3Rpb24gZGVjbCBpc24ndCBhIG1lbWJlciBvZiB0aGlzCgl0ZW1wbGF0ZSwgcmV0dXJuIGEgY29weSBvZiB0aGUgZGVjbCAoaW5jbHVkaW5nIGNvcHlpbmcgdGhlCglsYW5nLXNwZWNpZmljIHBhcnQpIHNvIHdlIGRvbid0IGhvc2Ugb3Vyc2VsdmVzIGxhdGVyLgoKVGh1IE9jdCAgMyAxNjoyNDoyOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogUmVtb3ZlIERXQVJGLXNwZWNpZmljIHRhZyBoYW5kbGluZy4KCSogZGVjbC5jIChwdXNodGFnKTogTGlrZXdpc2UuCgkoZmluaXNoX2Z1bmN0aW9uKTogQWx3YXlzIGNsZWFyIERFQ0xfQVJHVU1FTlRTIG9uIGZ1bmN0aW9uIGRlY2xzIHdpdGgKCW5vIHNhdmVkIFJUWC4KCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBFbWl0IERXQVJGIGRlYnVnZ2luZyBpbmZvIGZvciBzdGF0aWMgZGF0YQoJbWVtYmVycy4KCldlZCBPY3QgIDIgMjE6NTg6MDEgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IE1ha2Ugc3VyZSB0aGUgb2xkIERFQ0xfTEFOR19TUEVDSUZJQwoJaXNuJ3QgdGhlIHNhbWUgYXMgdGhlIG5ldyBvbmUgYmVmb3JlIHdlIHdoYWNrIGl0LgoKTW9uIFNlcCAzMCAxMzozODoyNCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jLCBjcC10cmVlLmgsIGN2dC5jLCBkZWNsLmMsIGRlY2wyLmMsIGd4eC5ncGVyZiwgaGFzaC5oLAoJbGV4LmMsIG1ldGhvZC5jLCBwYXJzZS55LCB0eXBlY2suYywgdHlwZWNrMi5jOiBSZW1vdmUKCXdhcm5fdHJhZGl0aW9uYWwgYW5kIHdhcm5fc3RyaWN0X3Byb3RvdHlwZXM7IHJlbW92ZSBhbmNpZW50Cgknb3ZlcmxvYWQnIGNvZGU7IHJlbW92ZSByZWZlcmVuY2VzIHRvIGZsYWdfdHJhZGl0aW9uYWwuCgpNb24gU2VwIDMwIDEyOjU4OjQwIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGlucHV0LmMgKHN1Yl9nZXRjaCk6IEhhbmRsZSA4LWJpdCBjaGFyYWN0ZXJzIGluIHN0cmluZyBsaXRlcmFscy4KClN1biBTZXAgMjkgMDM6MTI6MDEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChtYXBjYXIpOiBIYW5kbGUgQ09OU1RSVUNUT1JzLgoJKGNvcHlfdG9fcGVybWFuZW50KTogSGFuZGxlIGV4cHJlc3Npb25fb2JzdGFjayBwcm9wZXJseS4KCgkqIE1ha2UtbGFuZy5pbiAoY3BsaWIyLnR4dCk6IEFsc28gZGVwZW5kIG9uIHRoZSBoZWFkZXJzLgoKCSogcnR0aS5jIChnZXRfdGluZm9fdmFyKTogRG9uJ3QgYXNzdW1lIHRoYXQgUE9JTlRFUl9TSVpFID09CglJTlRfVFlQRV9TSVpFLgoJKGV4cGFuZF9jbGFzc19kZXNjKTogVXNlIFVTSXR5cGUgZm9yIG9mZnNldCBmaWVsZC4KCSogdGluZm8uaCAoc3RydWN0IF9fY2xhc3NfdHlwZV9pbmZvKTogTGlrZXdpc2UuCgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfaW50KTogVFlQRV9QUkVDSVNJT04gc2hvdWxkIGJlIGFwcGxpZWQKCXRvIHR5cGVzLgoKU2F0IFNlcCAyOCAxNDo0NDo1MCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IEEgQ09ORF9FWFBSIGludm9sdmluZyB2b2lkIG11c3QgYmUgYQoJYnVpbHRpbi4KCkZyaSBTZXAgMjcgMTY6NDA6MzAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfY29tcG9uZW50X3JlZik6IE5ldyBmbi4KCShidWlsZF9vYmplY3RfcmVmKTogVXNlIGl0LgoJKiBwYXJzZS55IChwcmltYXJ5KTogVXNlIGl0LgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IFVzZSBpdC4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogVmFyaWFibGUtc2l6ZWQgYXJyYXlzIGNhbm5vdCBiZSBpbml0aWFsaXplZC4KCSogZXJyb3IuYyAoZHVtcF90eXBlX3N1ZmZpeCk6IEhhbmRsZSB2YXJpYWJsZSBhcnJheXMuCgpGcmkgU2VwIDI3IDEzOjE0OjA1IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZXhjZXB0aW9uLm8pOiBQdXQgYmFjayBjb21waWxpbmcgaXQgd2l0aCAtZlBJQy4KCkZyaSBTZXAgMjcgMDM6MDA6MDkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogRG9uJ3QgdHJ5IHRvIGxvb2sgdXAgYW55dGhpbmcgaW4gYQoJVFlQRU5BTUVfVFlQRS4KCgkqIHRpbmZvMi5jYyAoX190aHJvd190eXBlX21hdGNoX3J0dGkpOiBPb3BzLgoKVGh1IFNlcCAyNiAyMjoxMTowNSAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGV4Y2VwdGlvbi5vKTogVXNlIC1mbm8tUElDIGZvciBub3cuCgpUaHUgU2VwIDI2IDEwOjU5OjAwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0KTogUGFzcyB0aW5mbyBmbnMgcmF0aGVyIHRoYW4KCWNhbGxpbmcgdGhlbS4KCShnZXRfdGluZm9fZm5fZHluYW1pYyk6IEV4dHJhY3RlZCBmcm9tIGJ1aWxkX3R5cGVpZC4KCSogdGluZm8yLmNjIChfX2R5bmFtaWNfY2FzdCk6IEFkanVzdC4KCgkqIHJ0dGkuYyAoYnVpbGRfdHlwZWlkKTogVXNlIHJlc29sdmVzX3RvX2ZpeGVkX3R5cGVfcC4KCShidWlsZF94X3R5cGVpZCk6IExpa2V3aXNlLgoKCSogcGFyc2UueTogQ2FsbCBidWlsZF94X3R5cGVpZCBpbnN0ZWFkIG9mIGJ1aWxkX3R5cGVpZC4KCSogY3AtdHJlZS5kZWY6IEFkZCBUWVBFSURfRVhQUi4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBIYW5kbGUgdHlwZWlkLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGJ1aWxkX3hfdHlwZWlkKTogVGhyb3cgYmFkX3R5cGVpZCBmcm9tIGhlcmUuCgkoYnVpbGRfdHlwZWlkKTogTm90IGhlcmUuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBidWlsZF94X3R5cGVpZC4KCldlZCBTZXAgMjUgMTc6MjY6MTYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChjb252ZXJ0X2xpa2UpOiBQdWxsIG91dCBjb25zdGFudCB2YWx1ZXMuCgoJKiB0cmVlLmMgKG1hcGNhcik6IFVzZSBidWlsZF9jcGx1c19hcnJheV90eXBlLCBub3QgYnVpbGRfYXJyYXlfdHlwZS4KCldlZCBTZXAgMjUgMTc6Mjg6NTMgMTk5NiAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHRpa3Rvay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENyZWF0ZSBzaG9ydCBpbnQgdHlwZXMgYmVmb3JlCgljcmVhdGluZyBzaXplX3QgaW4gY2FzZSBhIG1hY2hpbmUgZGVzY3JpcHRpb24gbmVlZHMgdG8gdXNlCgl1bnNpZ25lZCBzaG9ydCBmb3Igc2l6ZV90LgoKVHVlIFNlcCAyNCAxODoxODo0NCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGV4Y2VwdGlvbi5vKTogVHVybiBvZmYgcGljLgoKCSogdGluZm8yLmNjIChfX3Rocm93X3R5cGVfbWF0Y2hfcnR0aSk6IEZpeCBjdi12YXJpYW50cyBvZiB0aGUgc2FtZQoJdHlwZSwgbXVsdGktbGV2ZWwgcHRyIGNvbnZlcnNpb25zLgoKCSogcnR0aS5jIChjYWxsX3ZvaWRfZm4pOiBSZW5hbWVkIGFuZCBnZW5lcmljaXplZCBmcm9tIHRocm93X2JhZF9jYXN0LgoJKHRocm93X2JhZF9jYXN0KTogVXNlIGl0LgoJKHRocm93X2JhZF90eXBlaWQpOiBOZXcgZm4uCgkoYnVpbGRfdHlwZWlkKTogVGhyb3cgYmFkX3R5cGVpZCBhcyBuZWVkZWQuCglVc2UgYnVpbGRfY2FsbC4KCShzeW50aGVzaXplX3RpbmZvX2ZuKTogSGFuZGxlIGZ1bmN0aW9ucyBhbmQgYXJyYXlzIGJlZm9yZSBjaGVja2luZwoJZm9yIGN2LXF1YWxzLgoKCSogUmVtb3ZlIC5oIGZyb20gc3RhbmRhcmQgQysrIGhlYWRlcnMsIGFkZCBuZXcuaCwgbW92ZSBpbnRvIGluYwoJc3ViZGlyZWN0b3J5LgoKCSogZXhjZXB0aW9uKjogUmVtb3ZlIHBvaW50ZXIgZnJvbSBvYmplY3QsIGNvbnN0cnVjdG9ycy4gIEFkZAoJZGVmYXVsdCBleGNlcHRpb246OndoYXQgdGhhdCB1c2VzIHR5cGVfaW5mbzo6bmFtZS4gIEFkZAoJX190aHJvd19iYWRfdHlwZWlkLgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBEb24ndCBhZGQgYSBjb29raWUgdG8gbmV3ICh2b2lkICopIFRbMl0uCgpNb24gU2VwIDIzIDE1OjIxOjUzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogQnVpbGRpbmcgQysrIGNvZGUgZGVwZW5kcyBvbiBjYzFwbHVzLgoKTW9uIFNlcCAyMyAxMjozODo0MCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0cnVjdCBzYXZlZF9zY29wZSk6IERlY2xhcmUgUFJPQ0VTU0lOR19URU1QTEFURV9ERUNMIGFzCglhIEhPU1RfV0lERV9JTlQsIG5vdCBhIHRyZWUuCgpNb24gU2VwIDIzIDEyOjM2OjAyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdGlvbi5jYzogRG9uJ3QgaW5jbHVkZSA8c3RkbGliLmg+LgoKCSogTWFrZS1sYW5nLmluIChjKysuY2xlYW4pOiBSZW1vdmUgY3BsaWIyLiouCgpNb24gU2VwIDIzIDA5OjQyOjE5IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjb21wb25lbnRfZGVjbF8xLCBjb21wb25lbnRfY29zdHJ1Y3Rvcl9kZWNsYXJhdG9yIGNhc2UpOgoJUGFzcyBhdHRyaWJ1dGVzL3ByZWZpeF9hdHRyaWJ1dGVzIGluIHRyZWUgbGlzdC4KCk1vbiBTZXAgMjMgMDE6MTg6NTAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdGluZm97LDJ9LmNjOiAjaW5jbHVkZSA8c3RkZGVmLmg+IGluc3RlYWQgb2YgPHN0ZGxpYi5oPi4KClN1biBTZXAgMjIgMDU6MzE6MjIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBEb24ndCBkbyBkZWZlcnJlZCBsb29rdXAgaW4gYSB0ZW1wbGF0ZQoJaGVhZGVyLgoKCSogdHlwZWNrMi5jIChzdG9yZV9pbml0X3ZhbHVlKTogT29wcy4KCgkqIG5ldy57aCxjY30sIGV4Y2VwdGlvbi57aCxjY30sIHR5cGVpbmZvLmgsIHRpbmZvezIuY2MsLmNjLC5ofToKCU5ldyBmaWxlcyBmb3IgQysrIGxhbmctc3VwcG9ydCBsaWJyYXJ5LgoJKiBNYWtlLWxhbmcuaW4gKENYWF9FWFRSQV9IRUFERVJTKTogRGVmaW5lLgoJKENYWF9MSUIyRlVOQ1MpOiBEZWZpbmUuCglBbmQgcnVsZXMgZm9yIGJ1aWxkaW5nIHRoZSBDKysgbGFuZy1zdXBwb3J0IGNvZGUuCgkqIGNvbmZpZy1sYW5nLmluIChoZWFkZXJzKTogRGVmaW5lLgoJKGxpYjJmdW5jcyk6IERlZmluZS4KClNhdCBTZXAgMjEgMTk6MTc6MjggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBJZiBDT05TVFJVQ1RPUiBoYXMgYSB0eXBlLCBjYWxsCglkaWdlc3RfaW5pdC4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBDb21wdXRlIHR5cGUgZm9yIENPTlNUUlVDVE9SLgoJKiB0eXBlY2syLmMgKHN0b3JlX2luaXRfdmFsdWUpOiBDaGVjayBmb3IgaW5pdGlhbGl6aW5nIHBtZiB3aXRoIHsgfQoJaGVyZS4KCShwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBOb3QgaGVyZS4KClRodSBTZXAgMTkgMTY6NDE6MDcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoYmVnaW5fdGVtcGxhdGVfcGFybV9saXN0KTogSW5jcmVtZW50Cglwcm9jZXNzaW5nX3RlbXBsYXRlX2RlY2wgaGVyZS4KCShlbmRfdGVtcGxhdGVfcGFybV9saXN0KTogTm90IGhlcmUuCgkocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogTm8gbmVlZCB0byBhZGQgMSB0byBpdCBub3cuCgkqICouYzogVXNlIHByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbCBpbnN0ZWFkIG9mIGN1cnJlbnRfdGVtcGxhdGVfcGFybXMKCXRvIGNoZWNrIGZvciBiZWluZyBpbiBhIHRlbXBsYXRlLgoKCSogcHQuYyAodXNlc190ZW1wbGF0ZV9wYXJtcyk6IEhhbmRsZSBTQ09QRV9SRUYuICBGaXggQ09OU1RSVUNUT1IuCgkodHN1YnN0X2NvcHkpOiBIYW5kbGUgQ09OU1RSVUNUT1IuCgkoaW5zdGFudGlhdGVfZGVjbCk6IFNldCB1cCBjb250ZXh0IHByb3Blcmx5IGZvciB2YXJpYWJsZXMuCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogSGFuZGxlIENPTlNUUlVDVE9SLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogUmV2ZXJzZSBDTEFTU1RZUEVfVEFHUy4KCldlZCBTZXAgMTggMTM6MzA6MjAgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogbGV4LmMgKGVudW0gdHJlZV9ub2RlX2tpbmQpIFtHQVRIRVJfU1RBVElTVElDU106IFB1dCB0aGUgZW51bSBiYWNrLgoKV2VkIFNlcCAxOCAwNDoyNDowNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IENhbGwgY29tZGF0X2xpbmthZ2UgYmVmb3JlIHNldHRpbmcgdGhlCglUUkVFX0NPREUuCgoJKiBkZWNsMi5jIChjb21kYXRfbGlua2FnZSk6IFVzZSBtYWtlX2RlY2xfb25lX29ubHkuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDaGVjayBzdXBwb3J0c19vbmVfb25seSBpbnN0ZWFkIG9mCglTVVBQT1JUU19XRUFLLgoKU2F0IFNlcCAxNCAwODozNDo0MSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBUaWdodGVuIGNoZWNraW5nIGZvciBhY2Nlc3MgZGVjbHMuCgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IFJlc29sdmUgcmVmZXJlbmNlcyB0bwoJY3VycmVudF9jbGFzc190eXBlLiAgU2V0IENMQVNTVFlQRV9HT1RfU0VNSUNPTE9OLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBUeXBlcyB0aGF0IGRlcGVuZCBvbiBhIHRlbXBsYXRlIHBhcmFtZXRlciBnZXQKCWFuIGltcGxpY2l0ICd0eXBlbmFtZScgdW5sZXNzIHRoZXkncmUgaW4gdGhlIGN1cnJlbnQgc2NvcGUuCgkoc3RhcnRfZGVjbF8xKTogV2UgZG9uJ3QgY2FyZSBhYm91dCBpbmNvbXBsZXRlIHR5cGVzIHRoYXQgZGVwZW5kCglvbiBhIHRlbXBsYXRlIHBhcm0uCgkoZ3Jva2RlY2xhcmF0b3IpOiBSZXNvbHZlICd0eXBlbmFtZSdzIGluIHRoZSB0eXBlIHNwZWNpZmllciB0aGF0CglyZWZlciB0byBtZW1iZXJzIG9mIHRoZSBjdXJyZW50IHNjb3BlLgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBSZW1vdmUgJ2lubGluZSBjYWxsZWQgYmVmb3JlCglkZWZpbml0aW9uJyBkaWFnbm9zdGljLgoJKGJ1aWxkX21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG93bmdyYWRlICd1c2VkIGJlZm9yZSBkZWNsYXJlZAoJaW5saW5lJyB0byBhIHdhcm5pbmcsIG9ubHkgd2l0aCAtV2lubGluZS4KCkZyaSBTZXAgMTMgMTc6MzE6NDAgMTk5NiAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogbXB3LW1ha2Uuc2VkOiBGaXggaW5jbHVkZSBwYXRocywgYWRkIEBEQVNIX0NfRkxBR0AgdG8gY29tcGlsZS4KCldlZCBTZXAgMTEgMjI6Mzg6MTMgMTk5NiAgR2VyYWxkIEJhdW1nYXJ0bmVyICA8Z2JAY3MucHVyZHVlLmVkdT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBXaGVuIGNhbGxpbmcgYSBzaWduYXR1cmUKCWRlZmF1bHQgaW1wbGVtZW50YXRpb24sIGFzIGluIG90aGVyIGNhc2VzLCBsZXQgaW5zdGFuY2VfcHRyIHNpbXBseQoJYmUgaW5zdGFuY2UuCgpXZWQgU2VwIDExIDIyOjE0OjQ0IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKHNpbXBsZV9zdG10KTogQ2xlYW51cCBhbmQgdXNlIGRvX3BvcGxldmVsICgpLgoKV2VkIFNlcCAxMSAyMjoxMDo0OCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogQWRkIGEgcHVzaGxldmVsIHNvIHRoYXQgLWcKCXdvcmtzIG9uIGhwcGEgYW5kIFNQQVJDLgoKV2VkIFNlcCAxMSAxMDoxODowNiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfaW5kaXJlY3RfcmVmKTogQ2F0Y2ggUFRSIGJlaW5nIGFuIGVycm9yX21hcmtfbm9kZS4KCk1vbiBTZXAgIDkgMTk6NTE6MTQgMTk5NiAgR2VyYWxkIEJhdW1nYXJ0bmVyICA8Z2JAY3MucHVyZHVlLmVkdT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogQ2hlY2sgZmlyc3Qgd2hldGhlciBERUNMX0NPTlRFWFQgZXhpc3RzCgliZWZvcmUgdGVzdGluZyB3aGV0aGVyIGl0J3MgYSBzaWduYXR1cmUuCgpTdW4gU2VwICA4IDE2OjA2OjU3IDE5OTYgIEdlcmFsZCBCYXVtZ2FydG5lciAgPGdiQGNzLnB1cmR1ZS5lZHU+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IERvbid0IGNvbXBsYWluIGFib3V0IHNpZ25hdHVyZQoJcG9pbnRlcnMgYW5kIHJlZmVyZW5jZXMgbm90IGJlaW5nIGFuIGFnZ3IgdHlwZS4KCShidWlsZF90aGlzKTogSWYgYSBzaWduYXR1cmUgcG9pbnRlciBvciByZWZlcmVuY2Ugd2FzIHBhc3NlZCBpbiwKCWp1c3QgcmV0dXJuIGl0LgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IElmIGluc3RhbmNlIGlzIGEgc2lnbmF0dXJlIHBvaW50ZXIsIHNldAoJYmFzZXR5cGUgdG8gdGhlIHNpZ25hdHVyZSB0eXBlIG9mIGluc3RhbmNlLgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX21ldGhvZF9jYWxsKTogRGVsZXRlZCBiYXNldHlwZSBhbmQKCWluc3RhbmNlIHBhcmFtZXRlcnMsIHRoZXkgY2FuIGJlIGZvdW5kIGFzIHRoZSBERUNMX0NPTlRFWFQgb2YKCWZ1bmN0aW9uIGFuZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIGluLgoJKiBjcC10cmVlLmg6IENoYW5nZWQgZGVjbGFyYXRpb24gb2YgYnVpbGRfc2lnbmF0dXJlX21ldGhvZF9jYWxsLgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogRGVsZXRlZCBmaXJzdCB0d28gYXJndW1lbnRzIGluIGNhbGwKCW9mIGJ1aWxkX3NpZ25hdHVyZV9tZXRob2RfY2FsbC4KCShidWlsZF9vdmVyX2NhbGwpOiBBZGRlZCBjYWxsIHRvIGJ1aWxkX3NpZ25hdHVyZV9tZXRob2RfY2FsbC4KClRodSBTZXAgIDUgMTY6NTE6MjggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IERvbid0IHRhY2sgYSBub25fbHZhbHVlX2V4cHIgb250byBhCgl0YXJnZXRfZXhwci4KClRodSBTZXAgIDUgMTA6MDU6MzggMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogVXNlICUjVCwgbm90ICUjRCwgZm9yIGVycm9yLgoKV2VkIFNlcCAgNCAxNzoxNjowOSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfdHJ5X3N0bXRzKTogTW92ZSB0byBleGNlcHQuYyBpbiB0aGUgYmFja2VuZC4KCShleHBhbmRfZW5kX3RyeV9zdG10cyk6IFJlbW92ZS4KCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IFVzZSBhZGRfcGFydGlhbF9lbnRyeSAoKSBpbnN0ZWFkCglvZiBkaXJlY3RseSBtYW5pcHVsYXRpbmcgbGlzdHMuCgkoZW1pdF9iYXNlX2luaXQpOiBMaWtld2lzZS4KCldlZCBTZXAgIDQgMTI6MTQ6MzYgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF9leGNlcHRpb25fYmxvY2tzKTogQWx3YXlzIG1ha2Ugc3VyZSBVU0UgYW5kCglDTE9CQkVSIGluc25zIHRoYXQgY2FtZSBhdCB0aGUgZW5kIHN0aWxsIGRvLCB0aGUgYmFja2VuZCByZWxpZXMKCXVwb24gdGhpcy4KCldlZCBTZXAgIDQgMDc6NDQ6NDggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBXZSBjYW4gb25seSB1c2UgYSBUQVJHRVRfRVhQUiBvZiB0aGUKCXJpZ2h0IHR5cGUuCgpUdWUgU2VwICAzIDE5OjI2OjA1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IFJldmVydCBsYXN0IGNoYW5nZSwgZG9uJ3QgY29tcGxhaW4KCWFib3V0IHRlbXAgd2l0aG91dCB0YXJnZXQgZGVjbC4KClR1ZSBTZXAgIDMgMTA6MjI6NTYgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IERvbid0IGNvcmUgZHVtcCB3aGVuIHZvaWQoKSBpcyBnaXZlbi4KClR1ZSBTZXAgIDMgMDI6Mzg6NTYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChjb3B5X2FyZ3NfcCk6IERvbid0IGNyYXNoLgoKRnJpIEF1ZyAzMCAxNDoyNjo1NyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBBbmQgc3VwcG9ydCB0ZW1wbGF0ZSBhcmdzIGluc2lkZSB0aGUgZXhjZXB0aW9uCglzcGVjaWZpY2F0aW9uLgoKCSogcHQuYyAodHN1YnN0KTogQWRkIHN1cHBvcnQgZm9yIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9ucyBpbgoJdGVtcGxhdGUgZnVuY3Rpb25zLgoKRnJpIEF1ZyAzMCAxMDowMTo1NSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmRlZiAoREVDTF9TVE1UKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIGZpZWxkLCBvbmx5IDMKCWZpZWxkcyBub3cuCgkqIGNwLXRyZWUuaCAoc3RhcnRfZGVjbCk6IEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShzdGFydF9tZXRob2QpOiBMaWtld2lzZS4KCShncm9rZmllbGQpOiBMaWtld2lzZS4KCShtYWtlX2NhbGxfZGVjbGFyYXRvcik6IEFkZCB0aHJvdyBzcGVjIHBhcmFtZXRlci4KCShzZXRfcXVhbHNfYW5kX3NwZWMpOiBBZGQgcm91dGluZS4KCSogbGV4LmMgKHNldF9xdWFsc19hbmRfc3BlYyk6IExpa2V3aXNlLgoJKiBkZWNsLmggKGdyb2tkZWNsYXJhdG9yKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlci4KCSogZGVjbC5jIChzaGFkb3dfdGFnKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlciB0bwoJZ3Jva2RlY2xhcmF0b3IuCgkoZ3Jva3R5cGVuYW1lKTogTGlrZXdpc2UuCgkoc3RhcnRfZGVjbCk6IEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIuICBFbGltaW5hdGUgdGhlCgl0aHJvdyBzcGVjIHBhcmFtZXRlciB0byBncm9rZGVjbGFyYXRvci4gIEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYwoJZmllbGQgaW4gREVDTF9TVE1ULgoJKGNwX2ZpbmlzaF9kZWNsKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIGZpZWxkIGluIERFQ0xfU1RNVC4KCShncm9rZm5kZWNsKTogUmVtb3ZlIHVzZWxlc3Mgc2V0IG9mIHJhaXNlcy4KCShncm9rZGVjbGFyYXRvcik6IEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIuICBFbGltaW5hdGUKCXRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlciB0byBzdGFydF9kZWNsLiAgUHVsbCB0aGUgdGhyb3cgc3BlYyBvdXQKCW9mIHRoZSBjYWxsIGRlY2xhcmF0b3IuCgkoZ3Jva3Bhcm1zKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlciB0byBncm9rZGVjbGFyYXRvci4KCShzdGFydF9mdW5jdGlvbik6IEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIuICBFbGltaW5hdGUKCXRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlciB0byBncm9rZGVjbGFyYXRvci4KCShzdGFydF9tZXRob2QpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgkoZ3Jva2JpdGZpZWxkKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlciB0byBncm9rZGVjbGFyYXRvci4KCShncm9rb3B0eXBlbmFtZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9maWxlKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlciB0bwoJc3RhcnRfZnVuY3Rpb24uICBBZGQgdGhyb3cgc3BlYyB0byBtYWtlX2NhbGxfZGVjbGFyYXRvci4KCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBBZGQgdGhyb3cgc3BlYyB0bwoJbWFrZV9jYWxsX2RlY2xhcmF0b3IuICBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvCglzdGFydF9kZWNsLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIgdG8KCWdyb2tkZWNsYXJhdG9yLgoJKGV4cGFuZF9idWlsdGluX3Rocm93KTogQWRkIHRocm93IHNwZWMgdG8gbWFrZV9jYWxsX2RlY2xhcmF0b3IuCglFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvIHN0YXJ0X2Z1bmN0aW9uLgoJKHN0YXJ0X2Fub25fZnVuYyk6IExpa2V3aXNlLgoJKiBsZXguYyAobWFrZV9jYWxsX2RlY2xhcmF0b3IpOiBBZGQgdGhyb3cgc3BlYyBwYXJhbWV0ZXIuCgkoc2V0X3F1YWxzX2FuZF9zcGVjKTogTmV3IHJvdXRpbmUuCgkoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogQWRkIHRocm93IHNwZWMgdG8gbWFrZV9jYWxsX2RlY2xhcmF0b3IuCglFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvIGdyb2tmaWVsZC4KCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfbWV0aG9kKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlcgoJdG8gc3RhcnRfZnVuY3Rpb24uCgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIKCXRvIGdyb2tkZWNsYXJhdG9yLgoJKHRzdWJzdCk6IEFkZCB0aHJvdyBzcGVjIHRvIG1ha2VfY2FsbF9kZWNsYXJhdG9yLgoJKHRzdWJzdF9leHByKTogRWxpbWluYXRlIHRoZSB0aHJvdyBzcGVjIHBhcmFtZXRlciB0byBzdGFydF9kZWNsLgoJKGRvX2Z1bmN0aW9uX2luc3RhbnRpYXRpb24pOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyIHRvCglncm9rZGVjbGFyYXRvci4gIEVsaW1pbmF0ZSB0aGUgdGhyb3cgc3BlYyBwYXJhbWV0ZXIgdG8KCXN0YXJ0X2Z1bmN0aW9uLgoJKiBydHRpLmMgKHN5bnRoZXNpemVfdGluZm9fZm4pOiBFbGltaW5hdGUgdGhlIHRocm93IHNwZWMgcGFyYW1ldGVyCgl0byBzdGFydF9mdW5jdGlvbi4KCSogcGFyc2UueSAoZGF0YWRlZik6IFJlbW92ZSBub24td2lubmluZyBvcHRpbWl6YXRpb24uCgkoZGVjbCk6IExpa2V3aXNlLgoJKGZuZGVmKTogUmVtb3ZlIGFtYmlndW91cyBlcnJvciBwcm9kdWN0aW9ucyB1bmNvdmVyZWQgYnkgZ3JhbW1hcgoJZml4aW5nLgoJKGNvbnN0cnVjdG9yX2RlY2xhcmF0b3IpOiBBZGQgZXhjZXB0aW9uX3NwZWNpZmljYXRpb25fb3B0IGhlcmUuCgkoY29tcG9uZW50X2NvbnN0cnVjdG9yX2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShkaXJlY3RfYWZ0ZXJfdHlwZV9kZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoY29tcGxleF9kaXJlY3Rfbm90eXBlX2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShkaXJlY3RfYWJzdHJhY3RfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKGZuLmRlZjEpOiBSZW1vdmUgZXhjZXB0aW9uX3NwZWNpZmljYXRpb25fb3B0LgoJKGZuLmRlZjIpOiBMaWtld2lzZS4KCShjb25kaXRpb24pOiBMaWtld2lzZS4KCShpbml0ZGNsMCk6IExpa2V3aXNlLgoJKGluaXRkY2wpOiBMaWtld2lzZS4KCShub3R5cGVfaW5pdGRjbDApOiBMaWtld2lzZS4KCShub21vZHNfaW5pdGRjbDApOiBMaWtld2lzZS4KCShjb21wb25lbnRfZGVjbF8xKTogTGlrZXdpc2UuCgkoY29tcG9uZW50X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShhZnRlcl90eXBlX2NvbXBvbmVudF9kZWNsYXJhdG9yMCk6IExpa2V3aXNlLgoJKGFmdGVyX3R5cGVfY29tcG9uZW50X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShub3R5cGVfY29tcG9uZW50X2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCldlZCBBdWcgMjggMDE6NDA6MzAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBBbHNvIHVzZSBhbiBJTklUX0VYUFIgd2hlbgoJaW5pdGlhbGl6aW5nIGFueXRoaW5nIGZyb20gYW4gcnZhbHVlLgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBDYWxsIHN0YWJpbGl6ZV9yZWZlcmVuY2Ugd2hlbiBidWlsZGluZwoJYW4gSU5JVF9FWFBSIGluc3RlYWQgb2YgY2FsbGluZyB0aGUgY29weSBjdG9yLgoKCSogY2FsbC5jIChqb3VzdCk6IEV4dGVuZCB0aGUgcHJldmlvdXMgY2hhbmdlIHRvIGFsbCBjb21wYXJpc29ucy4KCgkqIGRlY2wyLmMsIG1ldGhvZC5jLCBsZXguYzogVXNlIE1BS0VfREVDTF9PTkVfT05MWSBhbmQKCU5PX0xJTktBR0VfSEVVUklTVElDUy4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogRW1pdCBhbnkgc3RhdGljcyB0aGF0IHdlcmVuJ3QgYWxyZWFkeS4KCgkqIHR5cGVjay5jIChidWlsZF9zdGF0aWNfY2FzdCk6IEltcGxlbWVudC4KCSogdHJlZS5jIChidWlsZF9jcGx1c19uZXcpOiBIYW5kbGUgZ2V0dGluZyBhIFRBUkdFVF9FWFBSLgoJKiBkZWNsLmMgKGdyb2twYXJtcyk6IFVzZSBjYW5fY29udmVydF9hcmcgaW5zdGVhZCBvZgoJaW1wbGljaXRfY29udmVyc2lvbiBkaXJlY3RseS4KCShjb3B5X2FyZ3NfcCk6IE5ldyBmbi4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgdGVtcCB3aXRoCglzdGF0aWNfY2FzdC4KCShidWlsZF91cF9yZWZlcmVuY2UpOiBIYW5kbGUgVEFSR0VUX0VYUFJzLgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IEVsaWRlIHVubmVjZXNzYXJ5IHRlbXBzLgoJKGNhbl9jb252ZXJ0Kik6IFVzZSBuZXcgb3ZlcmxvYWRpbmcgY29kZS4KClR1ZSBBdWcgMjcgMTM6MTI6MjEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jOiBNb3ZlIFRZUEVfUFRSKl9NQUNST1MgLi4uCgkqIGNwLXRyZWUuaDogVG8gaGVyZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBJbXBsZW1lbnQuCgoJKiBjYWxsLmMgKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IFVzZSBUWVBFX1BUUk9CX1AgaW5zdGVhZCBvZgoJcHRyX2NvbXBsZXRlX29iLgoJKGpvdXN0KTogSWYgd2UncmUgY29tcGFyaW5nIGEgZnVuY3Rpb24gdG8gYSBidWlsdGluIGFuZCB0aGUgd29yc3QKCWNvbnZlcnNpb24gZm9yIHRoZSBidWlsdGluIGlzIHdvcnNlIHRoYW4gdGhlIHdvcnN0IGNvbnZlcnNpb24gZm9yIHRoZQoJZnVuY3Rpb24sIHRha2UgdGhlIGZ1bmN0aW9uLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbnN0X2Nhc3QpOiBJbXBsZW1lbnQuCgkoY29tcF9wdHJfdHR5cGVzX2NvbnN0KTogTGlrZSBjb21wX3B0cl90dHlwZXMsIGZvciBjb25zdF9jYXN0LgoJKGNvbXBfcHRyX3R0eXBlc19yZWludGVycHJldCk6IExpa2UgY3B0LCBmb3IgcmVpbnRlcnByZXRfY2FzdC4KClR1ZSBBdWcgMjcgMTM6MTQ6NTggMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IERvbid0IHRyeSB0byBkZXJlZmVyZW5jZSBleHBydHlwZQoJdG9vIGVhcmx5LiAgTWFrZSBzdXJlIHdlIGV4cGxvZGUgaWYgZXhwcnR5cGUgdHVybnMgb3V0IHRvIGJlIGEKCU5VTExfVFJFRSB3aGVuIGl0IHNob3VsZG4ndCBiZS4KClR1ZSBBdWcgMjcgMTA6NTY6MjEgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oOiBOZXcgcm91dGluZSBtYWtlX2NhbGxfZGVjbGFyYXRvci4KCSogbGV4LmMgKG1ha2VfY2FsbF9kZWNsYXJhdG9yKTogRGVmaW5lIGl0LgoJKiBleGNlcHQuYyAoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IFVzZSBpdC4KCShleHBhbmRfYnVpbHRpbl90aHJvdyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Fub25fZnVuYyk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoJKiBsZXguYyAoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHBhcnNlLnk6IExpa2V3aXNlLgoJKiBwdC5jICh0c3Vic3QpOiBMaWtld2lzZS4KCk1vbiBBdWcgMjYgMTc6NDA6MDMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZ3Jva3R5cGVmaWVsZCk6IFJlbW92ZSB1bnVzZWQgY29kZS4KCk1vbiBBdWcgMjYgMTc6MDA6MzMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZ3h4LmdwZXJmOiBDaGFuZ2UgVFlQRV9RVUFMIGludG8gQ1ZfUVVBTElGSUVSLgoJKiBwYXJzZS55OiBMaWtld2lzZS4gIENoYW5nZSBtYXliZV90eXBlX3F1YWwgaW50byBtYXliZV9jdl9xdWFsaWZpZXIuCglDaGFuZ2UgdHlwZV9xdWFscyBpbnRvIGN2X3F1YWxpZmllcnMuICBDaGFuZ2Ugbm9uZW1wdHlfdHlwZV9xdWFscyBpbnRvCglub25lbXB0eV9jdl9xdWFsaWZpZXJzLgoJKiBoYXNoLmg6IFJlYnVpbGQuCgoJKiBsZXguYyAobWFrZV9wb2ludGVyX2RlY2xhcmF0b3IpOiBDaGFuZ2UgdHlwZV9xdWFscyBpbnRvCgljdl9xdWFsaWZpZXJzLgoJKG1ha2VfcmVmZXJlbmNlX2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KClRodSBBdWcgMjIgMDE6MDk6MjIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IE9ubHkgY2hlY2sgaW50ZXJmYWNlXyogZm9yIHRlbXBsYXRlcwoJd2l0aCBmbGFnX2FsdF9leHRlcm5hbF90ZW1wbGF0ZXMuCgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IENoZWNrIGZvciBjb21wYXJpc29uIG9mIGRpZmZlcmVudCBlbnVtIHR5cGVzLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEZpeCBhcmcgIyBvdXRwdXQuCgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IEhhbmRsZSBwcmUtZm91bmQgVFlQRV9ERUNMLgoKV2VkIEF1ZyAyMSAwMDoxMzoxNSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IENoZWNrIGZvciBlcnJvbmVvdXMgYXJncy4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogQWRkIG1pc3NpbmcgYXJncyB0byBjcF9lcnJvci4KCgkqIHRyZWUuYyAoZXJyb3JfdHlwZSk6IERvbid0IHByaW50IHJlZmVyZW5jZS10by1hcnJheS4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogRG9uJ3Qgc2F5IGNvbnRyYXZhcmlhbmNlIGZvcgoJcmVtb3ZpbmcgY29uc3QuCgpUdWUgQXVnIDIwIDEzOjIzOjAwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogRGlhZ25vc2UgYmFkIGNvbnZzIGZvciBgdGhpcycuCgoJKiBsZXguYyAoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogU2V0IERFQ0xfQVJUSUZJQ0lBTAoJb24gX2N0b3JfYXJnLgoKCSogY2FsbC5jIChjb252ZXJ0X2xpa2UpOiBIYW5kbGUgYmFkIGNvbnZzLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEhhbmRsZSBiYWQgY29udnMgYmV0dGVyLgoKCSogZGVjbDIuYzogLWZhbnNpLW92ZXJsb2FkaW5nIGlzIG5vdyB0aGUgZGVmYXVsdC4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogQ2hlY2sgZm9yIGVycm9uZW91cyBhcmdzLgoKCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBQcm9wYWdhdGUKCVRZUEVfVVNFU19NVUxUSVBMRV9JTkhFUklUQU5DRS4KClR1ZSBBdWcgMjAgMTM6MDk6NTcgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2FsbC5jIChlbmZvcmNlX2FjY2Vzcyk6IEFkZCBzdGF0aWMgdG8gcm91dGluZS4KClN1biBBdWcgMTggMTQ6MzU6NTQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogRml4IGJhZCBoYW5kbGluZy4KCShjb21wYXJlX2ljcyk6IExpa2V3aXNlLgoKU2F0IEF1ZyAxNyAyMTo1NDoxMSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBPb3BzLgoKU2F0IEF1ZyAxNyAxNjoyODoxMSAxOTk2ICBHZW9mZnJleSBOb2VyICA8bm9lckBjeWdudXMuY29tPgoKCSogZysrLmM6IFVwZGF0ZSB0ZXN0IGZvciB3aW4zMiAoJiYgISBjeWd3aW4zMikuCgpTYXQgQXVnIDE3IDAzOjQ1OjMxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb21wX3B0cl90dHlwZXNfcmVhbCk6IEhhbmRsZSBPRkZTRVRfVFlQRXMgcHJvcGVybHkuCgkocHRyX3JlYXNvbmFibHlfc2ltaWxhcik6IE5ldyBmbi4KCSogY2FsbC5jIChCQURfUkFOSyk6IE5ldyByYW5rLgoJKElDU19CQURfRkxBRyk6IE5ldyBtYWNyby4KCShzdGFuZGFyZF9jb252ZXJzaW9uKTogSGFuZGxlIGFsbW9zdC1yaWdodCBwb2ludGVyIGNvbnZlcnNpb25zLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogSGFuZGxlIGJhZCBydmFsdWUgYmluZGluZ3MuCgkoYWRkXypfY2FuZGlkYXRlKTogU3R1ZmYuCgkoYnVpbGRfb3Zlcl9jYWxsKTogUGFzcyBiYWQgY29udmVyc2lvbnMgdG8gY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24uCgkoY29tcGFyZV9pY3MpOiBIYW5kbGUgYmFkIGNvbnZzLgoJKGpvdXN0KTogTGlrZXdpc2UuCgpGcmkgQXVnIDE2IDE1OjAyOjE5IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogaW5pdC5jIChleHBhbmRfdmVjX2luaXQpOiBVc2UgcHRyZGlmZl90eXBlX25vZGUgaW5zdGVhZCBvZgoJaW50ZWdlcl90eXBlX25vZGUgd2hlbiBjb21wdXRpbmcgcG9pbnRlciBvZmZzZXRzLgoKRnJpIEF1ZyAxNiAwMToyODozMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGx2YWx1ZV90eXBlKTogTmV3IGZuLgoJKGVycm9yX3R5cGUpOiBOZXcgZm4uCgkqIGNhbGwuYyAob3BfZXJyb3IpOiBVc2UgZXJyb3JfdHlwZS4KCShhZGRfY29udl9jYW5kaWRhdGUpOiBVc2UgbHZhbHVlX3R5cGUuCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlcyk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChhcmdzX2FzX3N0cmluZyk6IFVzZSBlcnJvcl90eXBlLgoKVGh1IEF1ZyAxNSAxNzoyNzoxMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogRXZhbHVhdGUgREVDTF9JTklUSUFMIG9mIGEgVkFSX0RFQ0wgaGVyZS4KCSh0c3Vic3QpOiBOb3QgaGVyZS4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBXaXRoIC1hbnNpLCBfX251bGwncyB0eXBlIGlzIHRoZQoJc2lnbmVkIGludGVncmFsIHR5cGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgYml0cyBhcyBhIHBvaW50ZXIuCglJbnRyb2R1Y2UgYSBuZXcgdmFyaWFibGUgbnVsbF9ub2RlIGZvciBpdC4KCSogY3AtdHJlZS5oOiBBZGp1c3QuCgkqIGNhbGwuYyAobnVsbF9wdHJfY3N0X3ApOiBBZGp1c3QuCgpUaHUgQXVnIDE1IDE3OjA5OjU0IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChkb191bndpbmQpOiBNYXJrICVpNyBhcyB1c2VkIG9uIHRoZSBTUEFSQyBzbyB3ZSBjYW4KCW9wdGltaXplLgoKVGh1IEF1ZyAxNSAwMTozNjo0OSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBJZ25vcmUgI3ByYWdtYSBpbnRlcmZhY2UgZm9yIHRpbmZvCglmbnMgb2YgY2xhc3NlcyB3aXRob3V0IHZpcnR1YWwgZnVuY3Rpb25zLgoKCSogY2FsbC5jIChhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogSGFuZGxlIGB0aGlzJyBzcGVjaWFsbHkuCgkoY29tcGFyZV9pY3MpOiBMaWtld2lzZS4KClR1ZSBBdWcgMTMgMTI6MTY6MTAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBGaXggaGFuZGxpbmcgb2YgX19udWxsLgoKCSogZGVjbDIuYyAoY29tZGF0X2xpbmthZ2UpOiBOZXcgZm4uCgkoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBVc2UgaXQuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogVXNlIGl0LgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IFVzZSBpdC4KCk1vbiBBdWcgMTIgMDA6MDk6MTggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoZW5kX3RlbXBsYXRlX2RlY2wpOiBJZiB3ZSBkb24ndCBhY3R1YWxseSBoYXZlIHBhcm1zLCByZXR1cm4uCgkqIHBhcnNlLnkgKHRlbXBsYXRlX2hlYWRlcik6IEFjY2VwdCAndGVtcGxhdGUgPD4nLgoKCSogZXJyZm4uYzogQWxsb3cgNSBhcmdzLgoKU3VuIEF1ZyAxMSAxNToyMDo1OCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKG1ha2VfdGVtcF92ZWMpOiBOZXcgZm4uCgkqIHB0LmMgKHB1c2hfdGVtcGxhdGVfZGVjbCk6IEhhbmRsZSBwYXJ0aWFsIHNwZWNzLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkobW9yZV9zcGVjaWFsaXplZCk6IFVzZSBnZXRfYmluZGluZ3MuCgkobW9yZV9zcGVjaWFsaXplZF9jbGFzcyk6IE5ldyBmbi4KCShnZXRfY2xhc3NfYmluZGluZ3MpOiBOZXcgZm4uCgkobW9zdF9zcGVjaWFsaXplZF9jbGFzcyk6IE5ldyBmbi4KCShkb19mdW5jdGlvbl9pbnN0YW50aWF0aW9uKTogTGlzdCBjYW5kaWRhdGVzIGZvciBhbWJpZ3VvdXMgY2FzZS4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBMb3NlIHJlZmVyZW5jZSB0byBERUNMX1RFTVBMQVRFX01FTUJFUlMuCgkoc2hhZG93X3RhZyk6IENhbGwgcHVzaF90ZW1wbGF0ZV9kZWNsIGZvciBwYXJ0aWFsIHNwZWNpYWxpemF0aW9ucy4KCSogcGFyc2UueTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoREVDTF9URU1QTEFURV9TUEVDSUFMSVpBVElPTlMpOiBSZXBsYWNlcwoJREVDTF9URU1QTEFURV9NRU1CRVJTLgoJKiBjYWxsLmMgKHByaW50X3pfY2FuZGlkYXRlcyk6IFJlZHVjZSBkdXBsaWNhdGlvbi4KCkZyaSBBdWcgIDkgMTQ6MzY6MDggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogQWxsb3cgLWZhbnNpLW92ZXJsb2FkaW5nLgoKVGh1IEF1ZyAgOCAxNzowNDoxOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChnZXRfYmluZGluZ3MpOiBOZXcgZm4uCgkobW9zdF9zcGVjaWFsaXplZCk6IExpa2V3aXNlLgoJKGRvX2Z1bmN0aW9uX2luc3RhbnRpYXRpb24pOiBVc2UgdGhlbS4KCShhZGRfbWF5YmVfdGVtcGxhdGUpOiBOZXcgZm4uCgkqIGNwLXRyZWUuaCAoREVDTF9NQVlCRV9URU1QTEFURSk6IE5ldyBtYWNyby4KCSogY2FsbC5jIChidWlsZF9uZXdfb3ApOiBIYW5kbGUgZ3VpZGluZyBkZWNscy4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoKCSogZGVjbDIuYyAobWFya191c2VkKTogRG8gc3ludGhlc2lzIGhlcmUuCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBOb3QgaGVyZS4KCShidWlsZF9vdmVyX2NhbGwpOiBPciBoZXJlLgoJKiB0eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogT3IgaGVyZS4KCSogdHJlZS5jIChib3RfbWFuaXApOiBDYWxsIG1hcmtfdXNlZCBvbiBmdW5jdGlvbnMgdXNlZCBpbiBkZWZhdWx0CglhcmdzLgoKVGh1IEF1ZyAgOCAxNzo0ODoxNiAxOTk2ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGlrdG9rLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X3Z0YWJsZSk6IERlbGV0ZSBjb2RlIHRoYXQgZGlzYWJsZWQgdnRhYmxlCgloZXVyaXN0aWMgb24gc3lzdGVtcyB3aXRoIEFTTV9PVVRQVVRfRVhURVJOQUwuCgpXZWQgQXVnICA3IDEyOjQ0OjExIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBIYW5kbGUgc3RhdGljIGNhbGwgY29udGV4dAoJYmV0dGVyLgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBTZXQgdGhlIERFQ0xfQ09OVEVYVCBvZiB0aGUgcmVzdWx0IHRvCgl0aGUgZnVuY3Rpb24sIG5vdCBpdHMgb3V0ZXIgYmxvY2suCgoJKiBjYWxsLmMgKGJ1aWxkX2ZpZWxkX2NhbGwpOiBQYXNzIGZpZWxkcyBvbiB0byBidWlsZF9vcGZuY2FsbAoJcmVnYXJkbGVzcyBvZiBUWVBFX09WRVJMT0FEU19DQUxMX0VYUFIuCgkoYnVpbGRfbWV0aG9kX2NhbGwpOiBQYXNzIG9uIHRvIGJ1aWxkX25ld19tZXRob2RfY2FsbCBzb29uZXIuCgoJKiB0eXBlY2suYyAoYnVpbGRfcHRybWVtZnVuYyk6IEp1c3QgcmV0dXJuIHdoYXQgaW5zdGFudGlhdGVfdHlwZQoJZ2l2ZXMgdXMuCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBEb24ndCBwdXQgYSBQT0lOVEVSX1RZUEUgdG8KCU1FVEhPRF9UWVBFIG9uIGFuIGV4cHJlc3Npb24uICBBbHNvIG1ha2UgYSBjb3B5IG9mIHJocyBpbnN0ZWFkIG9mCgltb2RpZnlpbmcgaXQuCgpUdWUgQXVnICA2IDEyOjU4OjQ2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoY29tcGFyZV9pY3MpOiBIYW5kbGUgcXVhbF9jb252IGFmdGVyIGx2YWx1ZV9jb252LgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IERvbid0IHRha2UgZW51bXMgZm9yICsrLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IEhhbmRsZSBub24tYWdncmVnYXRlcyBhbmQgZmllbGQgY2FsbHMuCglNb3ZlIG5ldyBvdmVybG9hZGluZyBjb2RlIGZyb20uLi4KCSogY3Z0LmM6IEhlcmUuCgoJKiBkZWNsLmMgKGdyb2twYXJtcyk6IERvbid0IGNoZWNrIGRlZmF1bHQgYXJncyBpbiB0ZW1wbGF0ZXMuCgpNb24gQXVnICA1IDE3OjE3OjA2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF9uZXdfb3ApOiBGaXggYXJncyB0byBidWlsZF91bmFyeV9vcC4KCShhZGRfYnVpbHRpbl9jYW5kaWRhdGVzKTogRG9uJ3QgY2FsbCB0eXBlX3Byb21vdGVzX3RvIG9uIGZsb2F0LgoKCSogZGVjbC5jIChncm9rcGFybXMpOiBDaGVjayB0aGUgdHlwZSBvZiB0aGUgZGVmYXVsdCBhcmcuCgoJKiBjdnQuYyAoYnVpbGRfbmV3X29wKTogUGFzcyBub24tb3ZlcmxvYWRlZCBjYXNlcyBvbiByYXRoZXIgdGhhbgoJcmV0dXJuaW5nIE5VTExfVFJFRS4KCgkqIHR5cGVjay5jIChidWlsZF94X2JpbmFyeV9vcCk6IEF2b2lkIGRvaW5nIGV4dHJhIHdvcmsuCgkoYnVpbGRfeF91bmFyeV9vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX3hfY29uZGl0aW9uYWxfZXhwcik6IExpa2V3aXNlLgoJKiBjdnQuYyAoYnVpbGRfb3Zlcl9jYWxsKTogUmV0dXJuLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IEZpeCBNRU1CRVJfUkVGLgoJKGJ1aWxkX25ld19vcCk6IExpa2V3aXNlLgoKTW9uIEF1ZyAgNSAxNzowNzo0NyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfbmFtZSk6IFB1dCBidWcgZml4IGludG8gY29kZSBidXQgbGVhdmUKCWRpc2FibGVkIGZvciBub3cgc28gd2UgY2FuIGJlIGJ1ZyBjb21wYXRpYmxlIHdpdGggb2xkZXIgcmVsZWFzZXMKCXRoYXQgZG8gcmVwZWF0cyBpbmNvcnJlY3RseS4gIEluIHRoZSBmdXR1cmUsIHdlIGNhbiBlbmFibGUgaXQuCgpNb24gQXVnICA1IDEzOjQ2OjI4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjb252ZXJ0X2xpa2UpOiBEb24ndCBjYWxsIGJ1aWxkX2NwbHVzX25ldyB0d2ljZS4KCgkqIGNhbGwuYywgY3AtdHJlZS5oLCBjdnQuYywgZGVjbDIuYywgaW5pdC5jLCBtZXRob2QuYywgcHQuYywgdHlwZWNrLmM6CglDb250cm9sIG5ldyBvdmVybG9hZGluZyBjb2RlIHdpdGggLWZhbnNpLW92ZXJsb2FkaW5nLgoKU3VuIEF1ZyAgNCAxNToyOToxMSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoYnVpbGRfb3Zlcl9jYWxsKTogQ2FsbCBidWlsZF9jcGx1c19uZXcuCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBJZiBib3RoIG9wZXJhbmRzIGFyZSBUQVJHRVRfRVhQUnMsIHdyYXAKCXRoZSBDT05EX0VYUFIgaW4gYSBUQVJHRVRfRVhQUiBzbyB0aGV5IHVzZSB0aGUgc2FtZSBzbG90LgoKCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IFByb3BhZ2F0ZSBJTkRJUkVDVF9CSU5EIHRvCglyZWN1cnNpdmUgY2FsbHMuCgkqIHR5cGVjay5jIChjb21wbGV0ZV90eXBlKTogUHJvcGFnYXRlCglUWVBFX05FRURTX3tDT05TVFJVQ1RJTkcsREVTVFJVQ1RPUn0uCgpTYXQgQXVnICAzIDE0OjA1OjA3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChqb3VzdCk6IE1vcmUgPzoga2x1ZGdpbmcuICBTaWdoLgoJKGJ1aWxkX292ZXJfY2FsbCk6IERvbid0IHRyeSB0byBzeW50aGVzaXplIGdsb2JhbCBmbnMuCgoJKiBzZWFyY2guYyAobG9va3VwX2NvbnZlcnNpb25zKTogVXNlIGJpbmZvIG1hcmtpbmcuCgpTYXQgQXVnICAzIDEyOjMzOjQyIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKGJ1aWxkX21pX21hdHJpeCk6IFVzZSB0aGUgY29ycmVjdCB2YWx1ZSBvZiBjaWQKCXdoZW4gZGV0ZXJtaW5pbmcgdGhlIG5ldyBtaV9zaXplLgoKU2F0IEF1ZyAgMyAwMToyNzo0MSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoYWRkX2J1aWx0aW5fY2FuZGlkYXRlcyk6IERvIGNvbnNpZGVyIHR5cGUgY29udmVyc2lvbiBvcHMKCWZvciB0aGUgZmlyc3QgcGFybXMgb2YgKz0gZXQgYWwuCgkoc3RyaXBfdG9wX3F1YWxzKTogTmV3IGZuLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogVXNlIGl0IGluc3RlYWQgb2YgVFlQRV9NQUlOX1ZBUklBTlQuCgkoaW1wbGljaXRfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZXMpOiBCZSBjYXJlZnVsIGFib3V0IGFycmF5cy4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBIYW5kbGUgdnRhYmxlIG9wdGltaXphdGlvbi4KCkZyaSBBdWcgIDIgMDE6MjY6NTkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChMT09LVVBfTk9fVEVNUF9CSU5EKTogTmV3IGZsYWcuCgkqIGN2dC5jIChyZWZlcmVuY2VfYmluZGluZyk6IFVzZSBpdC4KCShpbXBsaWNpdF9jb252ZXJzaW9uKTogVXNlIGl0LgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZSwgQ09ORF9FWFBSKTogVXNlIGl0LgoKCSogY3Z0LmMgKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogQ2hlY2sgZm9yIGVycm9yIGFyZ3MuCgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogSnVzdCBjaGVjayBERVJJVkVEX0ZST01fUCwgbm90IFVOSVFVRUxZLgoKCSogZ3h4LmdwZXJmOiBBZGQgX19udWxsLgoJKiBoYXNoLmg6IFJlZ2VuZXJhdGUuCgkqIGxleC5oOiBBZGQgUklEX05VTEwuCgkqIGxleC5jIChpbml0X2xleCk6IENyZWF0ZSBudWxsX3BvaW50ZXJfbm9kZSBoZXJlLCBzdGljayBpdCBpbgoJUklEX05VTEwuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTdGlsbCBzZXQgaXRzIHR5cGUgaGVyZS4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IERvbid0IHByb2R1Y2UgbnVsbF9wb2ludGVyX25vZGUuCgkoY29udmVydF90b19wb2ludGVyX2ZvcmNlKTogTGlrZXdpc2UuCgkobnVsbF9wdHJfY3N0X3ApOiBDaGVjayBmb3IgbnVsbF9wb2ludGVyX25vZGU7IG9ubHkgYWNjZXB0ICh2b2lkKikwCglpZiAoISBwZWRhbnRpYykuCgkqIGNhbGwuYyAoY29udmVydF9oYXJzaG5lc3MpOiBVc2UgbnVsbF9wdHJfY3N0X3AuCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuICBEb24ndCBwcm9kdWNlCgludWxsX3BvaW50ZXJfbm9kZS4KCgkqIGVycm9yLmMgKGFyZ3NfYXNfc3RyaW5nKTogSGFuZGxlIGxpc3RzIG9mIGFjdHVhbCBhcmdzLCB0b28uCgkqIGN2dC5jIChudWxsX3B0cl9jc3QpOiBTdXBwb3J0ICh2b2lkKikwIGZvciBub3cuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IEltcHJvdmUgZGlhZ25vc3RpY3MuCgkoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9vYmplY3RfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IExpa2V3aXNlLiAgTW92ZSBjYWxsIGJlZm9yZSBkZWYgZGlhZ25vc3RpYy4uLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEhlcmUuCgoJKiBjdnQuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQgbm8gbWF0Y2ggaWYKCUxPT0tVUF9TUEVDVUxBVElWRUxZLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEZpeCAndGhpcycgZm9yIHZpcnR1YWwgZm4uCgkoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogQWRkIGRpYWdub3N0aWMuCgpUaHUgQXVnICAxIDE2OjQ1OjA5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogRXhwZWN0ICd0aGlzJyBhbmQgJ2luX2NocmcnIGZvcgoJY29uc3RydWN0b3JzIHRvIGJlIHBhc3NlZCBpbi4KCShidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogUGFzcyB0aGVtIGluLgoJKGNvbnZlcnRfbGlrZSk6IExpa2V3aXNlLgoJKGJ1aWxkX29iamVjdF9jYWxsKTogSGFuZGxlIG92ZXJsb2FkZWQgY29udmVyc2lvbnMuCgkoYnVpbGRfb3Zlcl9jYWxsKTogUGFzcyB0aGUgcmlnaHQgYXJncyB0byBidWlsZF92Zm5fcmVmLgoJKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBGaXggcG1mIGNvbnZzLgoJKGpvdXN0KTogSGFuZGxlIGNvbXBhcmluZyBzdGF0aWNzIGFuZCBub24tc3RhdGljcy4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBOZXcgZm4uCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBDYWxsIGl0IGlmIE5FV19PVkVSLgoKVGh1IEF1ZyAgMSAxNjowNjoxNCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IERvbid0IHVzZSAlTyBvbiBJREVOVElGSUVSX09QTkFNRV9QcywgdXNlCgklRCBpbnN0ZWFkLgoKVGh1IEF1ZyAgMSAxNToyNDowMiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogVXNlIG1heWJlX2J1aWxkX2NsZWFudXBfYW5kX2RlbGV0ZQoJaW5zdGVhZCBvZiBqdXN0IG1heWJlX2J1aWxkX2NsZWFudXAgc28gdGhhdCB3ZSBkZWFsbG9jYXRlIHRoZQoJdGhyb3duIG9iamVjdC4KClRodSBBdWcgIDEgMTU6MTg6MDAgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX3ByZXZ0YWJsZV92YXJkZWNsKTogTWFrZSBub24tc3RhdGljIGZvciBwdC5jJ3MgdXNlLgoJKiBjcC10cmVlLmggKGZpbmlzaF9wcmV2dGFibGVfdmFyZGVjbCk6IEFkZCBkZWNsLgoKVGh1IEF1ZyAgMSAxMTo1Mzo1MSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogQ2FsbCBjb21wbGV0ZV90eXBlLiAgQWxzbywgaWYKCXdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIGZpbGUgYW5kIHdlIGp1c3QgaW5zdGFudGlhdGVkIGEgdGVtcGxhdGUKCWNsYXNzIHdpdGggYSB2dGFibGUsIGNhbGwgZmluaXNoX3ByZXZ0YWJsZV92YXJkZWNsLgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogRG9uJ3QgZXhwbG9kZSAob3IgZXhwbG9kZSBtb3JlIGdyYWNlZnVsbHkKCWFzIGFwcHJvcHJpYXRlKSBpZiB0aGUgb2JqZWN0IGJlaW5nIGR1bXBlZCBoYXMgYSBudWxsIHR5cGUuCgkoZHVtcF9leHByKTogTGlrZXdpc2UuCgoJKiBzZWFyY2guYyAoYnVpbGRfbWlfbWF0cml4KTogRW5zdXJlIHRoYXQgbWlfc2l6ZSBpcyBsYXJnZSBlbm91Z2gsCglieSBjb3VudGluZyB0aGUgbnVtYmVyIG9mIG5vZGVzIHRoYXQgd2UnbGwgbmVlZCBiZWZvcmUgYWxsb2NhdGluZwoJdGhlIGFycmF5LgoJKGxvb2t1cF9mbmZpZWxkcyk6IEZpeCBjb21tZW50LgoJKGJyZWFkdGhfZmlyc3Rfc2VhcmNoKTogRml4IGNvbW1lbnQuCgpXZWQgSnVsIDMxIDA5OjU3OjA1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUHJvcGFnYXRlIFRZUEVfUEFDS0VEIGFuZAoJVFlQRV9BTElHTi4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IENhbGwgY3BsdXNfZGVjbF9hdHRyaWJ1dGVzIGhlcmUuCgkoZmluaXNoX3N0cnVjdF8xKTogTm90IGhlcmUuCgkqIGNwLXRyZWUuaDogQWRqdXN0LgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbik6IE5ldyBwYXJhbWV0ZXIgU1RSSUNULgoJKHVuaWZ5KTogSWYgU1RSSUNULCBkb24ndCBhbGxvdyBjdiBhZGRpdGlvbiBvciBiYXNlIGRlZHVjdGlvbi4KCSogY2FsbC5jLCBjbGFzcy5jLCBjdnQuYywgY3AtdHJlZS5oOiBBZGp1c3QuCgpUdWUgSnVsIDMwIDEzOjA2OjEzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChnZXRfdGVtcGxhdGVfYmFzZXtfcmVjdXJzaXZlfSk6IE5ldyBmbnMuCgkqIHB0LmMgKG1vcmVfc3BlY2lhbGl6ZWQpOiBOZXcgZm4uCgkoZG9fZnVuY3Rpb25faW5zdGFudGlhdGlvbik6IFVzZSBpdC4KCSh1bmlmeSk6IEhhbmRsZSBiYXNlIGRlZHVjdGlvbi4KCSogY3Z0LmMgKGpvdXN0KTogVXNlIG1vcmVfc3BlY2lhbGl6ZWQuCglEb24ndCBhcmJpdHJhcmlseSBjaG9vc2UgYmV0d2VlbiBub24tYnVpbHRpbiBjYW5kaWRhdGVzLgoJKGJ1aWxkX292ZXJfY2FsbCk6IENhbGwgcmVxdWlyZV9jb21wbGV0ZV90eXBlLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IFN0YXRpY3MgYXJlIHN0YXRpYyBldmVuIGluIGEgI3ByYWdtYQoJaW50ZXJmYWNlIGZpbGUuCgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X3Z0YWJsZSk6IERpc2FibGUgdnRhYmxlIGhldXJpc3RpYyBvbgoJc3lzdGVtcyB3aXRoIEFTTV9PVVRQVVRfRVhURVJOQUwuCgoJKiBjdnQuYyAoY29tcGFyZV9pY3MpOiBGaXggY29tcGFyaXNvbiBvZiBQTUVNX0NPTlYgYW5kIEJBU0VfQ09OVi4KCShzdGFuZGFyZF9jb252ZXJzaW9uKTogTm8gc3RkIGNvbnYgdG8gZW51bSB0eXBlLgoKCSogY3Z0LmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBGaXggb3JkZXIgb2YgYXJncyB0byBERVJJVkVEX0ZST01fUAoJZm9yIHB0bSdzLgoKCSogY3Z0LmMgKHJlZmVyZW5jZV9iaW5kaW5nKTogQmluZCBkaXJlY3RseSB0byBhIGJhc2Ugc3Vib2JqZWN0IG9mCglhIGNsYXNzIHJ2YWx1ZS4KCgkqIGN2dC5jIChidWlsZF9uZXdfb3ApOiBFbmZvcmNlIGFjY2VzcyBjb250cm9sLgoKVHVlIEp1bCAzMCAwOToyMjo1MyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogV2hlbiBzY2FubmluZyB0aGUKCXVuaW9uIGZvciBhIG5hbWVkIGZpZWxkLCBza2lwIHRoaW5ncyB0aGF0IGFyZW4ndCBGSUVMRF9ERUNMcy4KCgkqIG1ldGhvZC5jIChzeW50aGVzaXplX21ldGhvZCk6IERvbid0IHNjYW4gZm5kZWNsJ3MgcnRsIGlmCgl3ZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSBmaWxlOyBqdXN0IGFzc3VtZSB0aGUgZnVuY3Rpb24gY2FuJ3QKCWJlIGlubGluZWQuCgpNb24gSnVsIDI5IDE1OjQ4OjMwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF9idWlsdGluX2NhbmRpZGF0ZSk6IFN0aWNrIGEgZHVtbXkgY29udmVyc2lvbiBpbiBpZgoJaXQgZmFpbGVkLgoKCSogY3Z0LmMgKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBIYW5kbGUgb3ZlcmxvYWRlZAoJY29udmVyc2lvbiBvcHMuCgoJKiBjdnQuYyAoYWRkX2J1aWx0aW5fY2FuZGlkYXRlcyk6IERvbid0IGNvbnNpZGVyIHR5cGUgY29udmVyc2lvbgoJb3BlcmF0b3JzIGZvciB0aGUgZmlyc3QgcGFyYW1ldGVyIG9mIG9wZXJhdG9yPS4KCk1vbiBKdWwgMjkgMTU6MzM6NTUgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY29tcGxldGVfdHlwZSk6IE9ubHkgY2FsbCBsYXlvdXRfdHlwZSBpZiB3ZSdyZSBub3QKCWV4cGFuZGluZyBhIHRlbXBsYXRlLgoKTW9uIEp1bCAyOSAxNDo0MDozOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY29tcGFyZV9pY3MpOiBPb3BzLgoKCSogY3Z0LmMgKG9wX2Vycm9yKTogT29wcy4KCgkqIGNwLXRyZWUuZGVmOiBBZGQgUlZBTFVFX0NPTlYsIHJlbmFtZSBFWEFDVF9DT05WIHRvIElERU5USVRZX0NPTlYuCgkqIGN2dC5jOiBBZGQgSURFTlRJVFlfUkFOSyBiZWZvcmUgb3RoZXJzLiAgVXNlIHJlYWxfbHZhbHVlX3AuCgkoYnVpbGRfY29udik6IFVzZSB0aGVtLgoJKGltcGxpY2l0X2NvbnZlcnNpb24pOiBVc2UgdGhlbS4KCShjb252ZXJ0X2xpa2UpOiBIYW5kbGUgdGhlbS4KCShidWlsZF9uZXdfb3ApOiBIYW5kbGUgYnVpbHRpbiBDT05EX0VYUFIgYWdhaW4uCgkoYWRkX2J1aWx0aW5fY2FuZGlkYXRlcyk6IFN0cmlwIGN2LXF1YWxzLiAgRml4IG9vcHMuICBJbmNsdWRlIGVudW1zCglpbiBsaXN0cyBvZiB0eXBlcyBmb3IgQ09ORF9FWFBSLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IEFkZCBlbnVtIGNhbmRpZGF0ZXMgZm9yIENPTkRfRVhQUi4KCk1vbiBKdWwgMjkgMTI6MDU6NDAgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBBbHdheXMgYXR0ZW1wdCB0byBidWlsZCBhIGNhbGwgdG8KCXRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLCBldmVuIGlmIHdlJ3JlIHVzaW5nIGEgZGVmYXVsdCBvbmUuCgkoY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiBDYWxsIGNvbXBsZXRlX3R5cGUuCgpNb24gSnVsIDI5IDExOjI1OjA4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChyZWZlcmVuY2VfYmluZGluZyk6IEEgUkVGX0JJTkQgZ2V0cyB0aGUgcmVmZXJlbmNlIHR5cGUuCgkoaW1wbGljaXRfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKGNvbnZlcnRfbGlrZSk6IExpa2V3aXNlLgoJKGNvbXBhcmVfaWNzKTogTGlrZXdpc2UuCgkoY29tcGFyZV9xdWFsKTogTGlrZXdpc2UuCgkocHJpbnRfel9jYW5kaWRhdGVzKTogSGFuZGxlIG5vIGNhbmRpZGF0ZXMuCgkoYnVpbGRfbmV3X29wKTogRG9uJ3QgaGFuZGxlIGJ1aWx0aW4gQ09ORF9FWFBSIGZvciBub3cuCgpTYXQgSnVsIDI3IDExOjI3OjQ3IDE5OTYgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF9idWlsdGluX2NhbmRpZGF0ZSk6IEluaXQgbG9jYWwgdmFyIGluIGFuIEFOU0kgd2F5LgoKRnJpIEp1bCAyNiAwMTowNzoyMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoam91c3QpOiBJZiB0aGUgY2FuZGlkYXRlcyBhcmUgdGhlIHNhbWUsIGFyYml0cmFyaWx5IHBpY2sgb25lLgoKCSogY3Z0LmMgKGJ1aWxkX2J1aWx0aW5fY2FuZGlkYXRlKTogT29wcy4KCShidWlsZF9uZXdfb3ApOiBPb3BzLgoKCSogbWV0aG9kLmMgKGJ1aWxkX29wZm5jYWxsKTogUGFzcyBDT05EX0VYUFIgb24uCgkqIGN2dC5jIChidWlsZF9idWlsdGluX2NhbmRpZGF0ZSk6IFJlb3JnYW5pemUsIHN1cHBvcnQgQ09ORF9FWFBSLgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZXssc30pOiBMaWtld2lzZS4KCShhZGRfYnVpbHRpbl9jYW5kaWRhdGVzKTogTGlrZXdpc2UuCgkocHJpbnRfel9jYW5kaWRhdGVzLCBvcF9lcnJvciwgYnVpbGRfbmV3X29wKTogTGlrZXdpc2UuCgkodHlwZV9kZWNheXNfdG8pOiBOZXcgZm4uCgkqIGxleC5jIChpbml0X2xleCk6IEp1c3Qgc2F5ID86IGZvciBDT05EX0VYUFIuCgpUaHUgSnVsIDI1IDA5OjMzOjMzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb21wbGV0ZV90eXBlKTogQ2FsbCBsYXlvdXRfdHlwZSByYXRoZXIgdGhhbiBidWlsZGluZwoJYSBuZXcgYXJyYXkgdHlwZS4KCgkqIGN2dC5jIChhZGRfYnVpbHRpbl9jYW5kaWRhdGUpOiBQb2ludGVyIGFyaXRobWV0aWMgY2FuZGlkYXRlcwoJb25seSB1c2UgcHRyZGlmZl90LgoKV2VkIEp1bCAyNCAxMjo0NTowOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYzogQWx3YXlzIGNvbXBpbGUgdGhlIG5ldyBvdmVybG9hZGluZyBjb2RlIChidXQgZG9uJ3QgdXNlIGl0KS4KCShpbXBsaWNpdF9jb252ZXJzaW9uKTogQWRkIGEgQkFTRV9DT05WIHdoZW4gY29udmVydGluZyB0bwoJdGhlIHNhbWUgY2xhc3MgdHlwZS4KCShjb252ZXJ0X2xpa2UpOiBIYW5kbGUgQkFTRV9DT05WLgoKVHVlIEp1bCAyMyAxMjo0NjozMCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoYnVpbGRfbmV3X29wKTogU3VwcG9ydCB7TUFYLE1JTn1fRVhQUi4KCShhZGRfYnVpbHRpbl9jYW5kaWRhdGUpOiBMaWtld2lzZS4KCglORVdfT1ZFUiBjaGFuZ2VzOgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogVHJ5IGFuIG9wZXJhdG9yIGZ1bmN0aW9uCgl3aGVuZXZlciB3ZSBjYWxsIGFuIG9iamVjdCBvZiBjbGFzcyB0eXBlLgoJKiBtZXRob2QuYyAoYnVpbGRfb3BmbmNhbGwpOiBQYXNzIENBTExfRVhQUnMgdGhyb3VnaC4KCSogY3Z0LmMgKGltcGxpY2l0X2NvbnZlcnNpb24pOiBEbyBjb25zdC1yZWYgY2FzZSBmaXJzdC4KCShhZGRfY29udl9jYW5kaWRhdGUsIGJ1aWxkX29iamVjdF9jYWxsLCBvcF9lcnJvcik6IE5ldyBmbnMuCgkocHRyX2NvbXBsZXRlX29iLCBUWVBFX1BUUk9CX1ApOiB2b2lkIGlzIG5vdCBhbiBvYmplY3QgdHlwZS4KCSh7YWRkLGJ1aWxkfV9idWlsdGluX2NhbmRpZGF0ZXssc30sIHByaW50X3pfY2FuZGlkYXRlcyk6IERpc3BsYXkKCWJ1aWx0aW4gY2FuZGlkYXRlcy4KCShidWlsZF9uZXdfb3ApOiBIYW5kbGUgQ0FMTF9FWFBSLiAgRG9uJ3QgdHJ5IHRvIGRlY2F5IHZvaWQuCglGYWxsIGJhY2sgb24gcHJlaW5jcmVtZW50IGhhbmRsaW5nLiAgVXNlIG9wX2Vycm9yLgoJSGFuZGxlIHdhcm5fc3ludGguCgkoY29udmVydF9saWtlKTogUGFzcyBJTkRJUkVDVF9CSU5ELiAgRG9uJ3QgdHJ5IHRvIGRvIGFueXRoaW5nIHdpdGgKCWFuIGVycm9yX21hcmtfbm9kZS4KCShidWlsZF9vdmVyX2NhbGwpOiBIYW5kbGUgUFJPTU9URV9QUk9UT1RZUEVTIGFuZCBlbGxpcHNpcyBwcm9tb3Rpb25zCglwcm9wZXJseS4KCk1vbiBKdWwgMjIgMTY6MjE6NTUgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IEhhbmRsZSBDT05USU5VRV9TVE1ULgoKTW9uIEp1bCAyMiAxNTozODo1OCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZl8xKTogVXNlIGJ1aWxkX2NvbXBvbmVudF9yZWYKCWluc3RlYWQgb2Ygb3BlbiBjb2RpbmcgaXQgaGVyZS4KCk1vbiBKdWwgMjIgMTI6MTg6NTQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZysrLmMgKG1haW4pOiBEb24ndCBsaW5rIHdpdGggLWxnKysuCgoJTkVXX09WRVIgY2hhbmdlczoKCSogY3Z0LmMgKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogRG9uJ3QgdXNlIGNvbnZlcnRfZnJvbV9yZWZlcmVuY2Ugb24KCXJlc3VsdCBvZiBidWlsZF90eXBlX2NvbnZlcnNpb24uCgkoY3BfY29udmVydCk6IE9ubHkgY2FsbCBidWlsZF9tZXRob2RfY2FsbCBmb3IgY3RvcnMgaWYKCWJ1aWxkX3R5cGVfY29udmVyc2lvbiBmYWlsZWQuCgkocHRyX2NvbXBsZXRlX29iKTogTmV3IGZ1bmN0aW9uLgoJKFRZUEVfUFRSeyxPQixNRU19X1ApOiBOZXcgbWFjcm9zLgoJKHthZGQsYnVpbGR9X2J1aWx0aW5fY2FuZGlkYXRleyxzfSk6IE5ldyBmdW5jdGlvbnMuCgkocHJpbnRfel9jYW5kaWRhdGVzKTogSGFuZGxlIGJ1aWx0aW5zLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBEb24ndCB1c2UgY29udmVyc2lvbiBmbnMgZm9yCgljb252ZXJ0aW5nIHRvIGEgYmFzZSB0eXBlLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBTZXQgSUNTX1VTRVJfRkxBRyBvbiBBTUJJR19DT05Wcy4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbik6IFVzZSBjb252ZXJ0X2Zyb21fcmVmZXJlbmNlLgoJKGJ1aWxkX25ld19vcCk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9vdmVyX2NhbGwpOiBGaXggaGFuZGxpbmcgb2YgbWV0aG9kcy4KCShjb21wYXJlX2ljcyk6IEhhbmRsZSBBTUJJR19DT05WIHByb3Blcmx5LgoJKiB0eXBlY2syLmM6IEluY3JlbWVudCBhYm9ydCBjb3VudC4KCSogbWV0aG9kLmMgKGJ1aWxkX29wZm5jYWxsKTogRm9yd2FyZCBtb3N0IHJlcXVlc3RzIHRvIGJ1aWxkX25ld19vcC4KCSogY3AtdHJlZS5oIChJU19PVkVSTE9BRF9UWVBFKTogVHdlYWsuCgpGcmkgSnVsIDE5IDE3OjU5OjI5IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfZXhwciwgY2FzZSBDT05TVFJVQ1RPUiwgY2FzZSBDQVNUX0VYUFIpOiBUYWtlIG91dAoJaW52YWxpZCBzZWNvbmQgYXJndW1lbnQgdG8gZHVtcF9leHByX2xpc3QuCgpGcmkgSnVsIDE5IDE0OjA0OjA1IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IE1ha2Ugc3VyZSB3ZSBkbyBvYmotPlg6OmkgY29ycmVjdGx5LgoKVGh1IEp1bCAxOCAxNDo0ODoyMyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfdnRhYmxlKTogQVNNX09VVFBVVF9FWFRFUk5BTCwgbm90CglBU1NFTUJMRV9FWFRFUk5BTC4KCk1vbiBKdWwgMTUgMTc6NDg6NDMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBOZXcgcGVkd2FybiBmb3IgdXNpbmcgeyB9Cgl0byBpbml0aWFsaXplIGEgcG9pbnRlciB0byBtZW1iZXIgZnVuY3Rpb24uCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jMSk6IEF2b2lkIHVzZSBvZiBkaWdlc3RfaW5pdCBzbyB0aGF0Cgl3ZSBjYW4gYXZvaWQgdGhlIG5ldyBlcnJvci4KCk1vbiBKdWwgMTUgMTU6NDI6MDMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3B0cm1lbWZ1bmMxKTogTmV3IGZ1bmN0aW9uIHRvIGhpZGUgZGV0YWlscyBvZgoJcG9pbnRlciB0byBtZW1iZXIgZnVuY3Rpb25zIGJldHRlci4KCk1vbiBKdWwgMTUgMTQ6MjM6MDIgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChyZXNvbHZlX29mZnNldF9yZWYpOiBSZXNvbHZlIE9GRlNFVF9SRUZzIHRoYXQgYXJlCgltZXRob2RzIGludG8gdGhlIGFjdHVhbCBtZXRob2QsIGFzIHdlIGtub3cgdGhlIGltcGxpZWQgb2JqZWN0IGlzCglub3QgdXNlZC4KCk1vbiBKdWwgMTUgMTM6MDg6MjkgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogcGFyc2UueSAobWF5YmVjb21tYV93YXJuKTogT25seSBlbWl0IHRoZSBwZWR3YXJuIGlmIHdlJ3JlIG5vdAoJaW5zaWRlIGEgc3lzdGVtIGhlYWRlci4KCkZyaSBKdWwgMTIgMTY6MzA6MDUgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogQ2FsbCBjb21wbGV0ZV90eXBlIG9uIHRoZQoJaW5zdGFuY2UgdHlwZS4KClRodSBKdWwgMTEgMTc6MTY6NDAgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBBbHdheXMgYnVpbGQgdXAgYW4gT0ZGU0VUX1JFRgoJZm9yIG9ial9wdHItPmZ1bmMgc28gdGhhdCB3ZSBjYW4ga25vdyB3aGljaCBvYmplY3QgdG8gdXNlIGluIGEKCW1ldGhvZCBjYWxsLgoKV2VkIEp1bCAxMCAxOTozNjozNyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfcHRybWVtZnVuYyk6IFJlbW92ZSBzb3JyeSwgbm93IHdlIGNhbiBjYXN0Cglhcm91bmQgdGhpbmdzLiAgQWxzbyBpbXByb3ZlIG1haW50YWluYWJpbGl0eS4KCldlZCBKdWwgMTAgMTg6MjA6MTEgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ2hlY2sgZm9yIG92ZXJmbG93IHdoZW4gZXZhbHVhdGluZyBhbgoJYXJyYXkgZGltZW5zaW9uLgoKV2VkIEp1bCAxMCAxNzoyNjoxOSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydCk6IERvbid0IGNoZWNrIGZvciBhbWJpZ3VpdHkgd2l0aCBjb25zdHJ1Y3RvcgoJaWYgTkVXX09WRVIuCgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogUGFzcyBmdW5jdGlvbiBvdmVybG9hZAoJcXVlc3Rpb25zIHRvIG5ldyBvdmVybG9hZGluZyBjb2RlIGlmIE5FV19PVkVSLgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IE9ubHkgY2hlY2sgZm9yIHR5cGUgY29udmVyc2lvbiBvcHMKCWlmIHdlJ3JlIGRvaW5nIGNvcHktaW5pdGlhbGl6YXRpb24gKGkuZS4gTE9PS1VQX09OTFlDT05WRVJUSU5HKS4KCURvbid0IGNoZWNrIGZvciBhbWJpZ3VpdHkgd2l0aCBjb25zdHJ1Y3RvciBpZiBORVdfT1ZFUi4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogRGVyZWZlcmVuY2UgdGhlIHJlc3VsdCBvZiBhIHR5cGUKCWNvbnZlcnNpb24gb3BlcmF0b3IuCgkoYnVpbGRfY29udik6IFByb3BhZ2F0ZSBJQ1NfVVNFUl9GTEFHLgoJKGltcGxpY2l0X2NvbnZlcnNpb24pOiBDYWxsIGluc3RhbnRpYXRlX3R5cGUuCglQYXNzIExPT0tVUF9PTkxZQ09OVkVSVElORyBpbnN0ZWFkIG9mIExPT0tVUF9OT1JNQUwuCgkoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IEZpeCBjdi1xdWFscyBvbiBhcmd0eXBlLgoJKHByaW50X3pfY2FuZGlkYXRlcyk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IENhbGwgaXQuCgkoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IElmIExPT0tVUF9PTkxZQ09OVkVSVElORywgZG9uJ3QKCWNvbnNpZGVyIG5vbi1jb252ZXJ0aW5nIGNvbnN0cnVjdG9ycy4KCUNhbGwgcHJpbnRfel9jYW5kaWRhdGVzLgoJUmV0dXJuIGFuIEFNQklHX0NPTlYgZm9yIGFuIGFtYmlndW91cyBjb252ZXJzaW9uLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uKTogSGFuZGxlIEFNQklHX0NPTlYuCgkoY29udmVydF9saWtlKTogRml4IHRlc3QgZm9yIGJ1aWxkaW5nIFRBUkdFVF9FWFBSLgoJQ2FsbCBpbnN0YW50aWF0ZV90eXBlLgoJSGFuZGxlIEFNQklHX0NPTlYgYW5kIExWQUxVRV9DT05WLgoJKGJ1aWxkX292ZXJfY2FsbCk6IEhhbmRsZSAwIGFyZ3MgYW5kIGVsbGlwc2lzLgoJKiBjcC10cmVlLmRlZjogQWRkIEFNQklHX0NPTlYuCgpUdWUgSnVsICA5IDE3OjQ4OjQ4IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IElmIHdlIGZpbmQgbWVtIGluIG9iaiB3aGVuIHBhcnNpbmcKCWBvYmotPm1lbScsIG1ha2Ugc3VyZSB3ZSByZXR1cm4gdGhlIHJpZ2h0IHZhbHVlLgoKVHVlIEp1bCAgOSAxNjoxMToyOCAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChnZXRfYmFzZV9kaXN0YW5jZSk6IENhbGwgY29tcGxldGVfdHlwZS4KClR1ZSBKdWwgIDkgMTI6NDY6MzQgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChzdG9yZV9iaW5kaW5ncyk6IE1ha2Ugc3RhdGljLgoKTW9uIEp1bCAgOCAxNjo0MjozMSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IERvbid0IGNoZWNrIHR5cGUgY29udmVyc2lvbnMgaWYKCU5FV19PVkVSLgoKCSogY3Z0LmMgKHpfY2FuZGlkYXRlKTogUHV0IGJhY2sgdGVtcGxhdGUgZmllbGQuCgkoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IFNldCBpdC4KCShhZGRfdGVtcGxhdGVfY2FuZGlkYXRlKTogTGlrZXdpc2UuCgkoam91c3QpOiBVc2UgaXQuCgkoY29tcGFyZV9xdWFsKTogSGFuZGxlIHJlZmVyZW5jZXMgYW5kIHBvaW50ZXJzIHRvIG1lbWJlcnMuCgkoY29tcGFyZV9pY3MpOiBIYW5kbGUgcmVmZXJlbmNlIGJpbmRpbmdzLgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBQcm9wYWdhdGUgREVDTF9PTkVfT05MWS4KCk1vbiBKdWwgIDggMTY6MTg6NTYgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGNvbXB1dGVfY29udmVyc2lvbl9jb3N0cyk6IENhbGwgY29tcGxldGVfdHlwZS4KCgkqIHRyZWUuYyAodmVjX2JpbmZvX21lbWJlcik6IFVzZSBjb21wdHlwZXMgaW5zdGVhZCBvZiBjb21wYXJpbmcKCXBvaW50ZXJzLCBzbyB3ZSBjYW4gaGFuZGxlIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgpGcmkgSnVsICA1IDE2OjUxOjUzIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IFdlIGhhdmUgdG8gY2FsbCBjb21wbGV0ZV90eXBlCgloZXJlOyBsZXQncyBtYWtlIGl0IGV4cGxpY2l0IGluc3RlYWQgb2YgYSBzaWRlIGVmZmVjdCBvZiBhbgoJZXJyb3IgY2hlY2suCgpXZWQgSnVsICAzIDE2OjI5OjUxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGN2dC5jICh6X2NhbmRpZGF0ZSk6IFJlbW92ZSB0ZW1wbGF0ZSBmaWVsZC4KCShyZWZlcmVuY2VfYmluZGluZyk6IEhhbmRsZSBiaW5kaW5nIHRvIHRlbXBvcmFyeS4KCShpbXBsaWNpdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYWRkX2Z1bmN0aW9uX2NhbmRpZGF0ZSk6IEhhbmRsZSBhcnRpZmljaWFsIGNvbnN0cnVjdG9yIHBhcm1zLgoJSGFuZGxlIGZ1bmN0aW9ucyB3aXRoIHRvbyBmZXcgcGFybXMuCgkoYWRkX3RlbXBsYXRlX2NhbmRpZGF0ZSk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogSGFuZGxlIGNvbnN0cnVjdG9ycy4KCShjb252ZXJ0X2xpa2UpOiBMaWtld2lzZS4KCShidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfZnVuY3Rpb25fY2FsbCk6IFN1cHBvcnQgdGVtcGxhdGVzLgoJKGNvbXBhcmVfaWNzKTogRml4IHJlZmVyZW5jZSwgaW5oZXJpdGFuY2UgaGFuZGxpbmcuCgpNb24gSnVsICAxIDIyOjU4OjE4IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogZGVjbC5jOiBBZGQgc2lnbmVkX3NpemVfemVyb19ub2RlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQnVpbGQgaXQuCgkqIGNsYXNzLmMgKHByZXBhcmVfZnJlc2hfdnRhYmxlKTogVXNlIGl0IGluc3RlYWQgb2Ygc2l6ZV96ZXJvX25vZGUKCXdoZW4gd2UncmUgdHJ5aW5nIHRvIG1ha2UgYSBuZWdhdGl2ZSBkZWx0YS4KCk1vbiBKdWwgIDEgMTc6NTY6MTkgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCVN0b3AgZG9pbmcgdGhpcyBkYW1uIGluZGV4PT1zdHJjaHIgdmFyaWFibGUgbmFtZSBjb25mdXNpb24uCgkqIGNsYXNzLmMgKGFkZF92aXJ0dWFsX2Z1bmN0aW9uKTogQ2hhbmdlIGxvY2FsIHZhciBJTkRFWCB0byBiZQoJbmFtZWQgSURYLgoJKGFkZF9tZXRob2QpOiBMaWtld2lzZS4KCSogbGV4LmMgKHByaW50X3BhcnNlX3N0YXRpc3RpY3MpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKG1ha2VfbWVtb2l6ZWRfdGFibGVfZW50cnkpOiBMaWtld2lzZS4KCShsb29rdXBfZm5maWVsZHNfaGVyZSk6IExpa2V3aXNlLgoJKGxvb2t1cF9maWVsZCk6IExpa2V3aXNlLgoJKGxvb2t1cF9mbmZpZWxkcyk6IExpa2V3aXNlLgoJKGdldF9iYXNlbGlua3MpOiBMaWtld2lzZS4KCSogc2lnLmMgKGJ1aWxkX3NpZ25hdHVyZV90YWJsZV9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoJKGJ1aWxkX3NpZ25hdHVyZV9tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfeF9hcnJheV9yZWYpOiBDaGFuZ2UgSU5ERVggcGFybSB0byBiZSBuYW1lZCBJRFguCgkoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiBMaWtld2lzZS4KCShidWlsZF9wdHJtZW1mdW5jKTogQ2hhbmdlIGxvY2FsIHZhciBJTkRFWCB0byBiZSBJRFguCgkoY19leHBhbmRfc3RhcnRfY2FzZSk6IExpa2V3aXNlLgoKU2F0IEp1biAyOSAxNDowNTo0NiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogTW92ZSB1c2VyLWRlZmluZWQgdHlwZSBjb252ZXJzaW9uCgloYW5kbGluZyB0byBiZWZvcmUgZXh0cmFjdGlvbiBvZiBUWVBFX1BUUk1FTUZVTkNfRk5fVFlQRS4KCShjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IFVzZSBidWlsZF90eXBlX2NvbnZlcnNpb24gdG8gY29udmVydCB0bwoJdGhlIHJlZmVyZW5jZSB0eXBlIGRpcmVjdGx5LgoJKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBGaXggdm9pZCogY2FzZSwgbm9uLWNvbnZlcnNpb25zLgoJKHJlZmVyZW5jZV9iaW5kaW5nKTogRml4IGV4cHIgPT0gMCBjYXNlLCBub24tY29udmVyc2lvbnMuCgkoY29udmVydF9saWtlKTogU3VwcG9ydCBSRUZfQklORC4KCShjb21wYXJlX3F1YWwpOiBTcGxpdCBvdXQgZnJvbSBjb21wYXJlX2ljcy4KCShjb21wYXJlX2ljcyk6IFVzZSBpdCwgaGFuZGxlIGljc2VzIHdpdGggb25seSBhIHF1YWxfY29udi4KCgkqIGluaXQuYyAoZXhwYW5kX3ZlY19pbml0KTogRG9uJ3QgY3Jhc2ggaWYgZGVjbCBpcyBOVUxMLgoKRnJpIEp1biAyOCAxMTo1Mjo1MSAxOTk2ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBtcHctY29uZmlnLmluOiBOZXcgZmlsZSwgY29uZmlndXJ5IGZvciBNYWMgTVBXLgoJKiBtcHctbWFrZS5zZWQ6IE5ldyBmaWxlLCBtYWtlZmlsZSBlZGl0aW5nIGZvciBNUFcuCgpUaHUgSnVuIDI3IDE1OjE4OjMwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogQ2FsbCByZXBvX3RlbXBsYXRlX3VzZWQuCgoJKiBzZWFyY2guYyAobG9va3VwX2NvbnZlcnNpb25zKTogT25seSBsb29rdXAgY29udmVyc2lvbnMgaW4KCWNvbXBsZXRlIHR5cGVzLgoKVGh1IEp1biAyNyAxMjo1OTo1MyAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmRlZjogUmVuYW1lZCBmcm9tIHRyZWUuZGVmLCB0byBhdm9pZCBjb25mdXNpb24gd2l0aAoJZ2NjJ3MgdHJlZS5kZWYuCgkqIGNwLXRyZWUuaCwgbGV4LmM6IEluY2x1ZGUgY3AtdHJlZS5kZWYuCgkqIE1ha2VmaWxlLmluIChDWFhfVFJFRV9IKTogUmVmZXJlbmNlIGNwLXRyZWUuZGVmLgoKV2VkIEp1biAyNiAxODoyOTo0NyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfdmVjX2RlbGV0ZV8xKTogQ2FsbCBjb21wbGV0ZV90eXBlLgoKTW9uIEp1biAyNCAxNzoxNzozMiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoc3RhcnRfYW5vbl9mdW5jKTogTWFrZSBzdXJlIGFub255bW91cyBmdW5jdGlvbnMgYXJlCgluZXZlciBleHRlcm5hbC4KCkZyaSBKdW4gMjEgMTU6MTA6NTggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBJZiBmdW5jdGlvbl9kZXB0aCA+IDEsIHNldCBuZXN0ZWQuCgoJKiBkZWNsMi5jIChncm9rYml0ZmllbGQpOiBSZXZlcnQgQm9iJ3MgY2hhbmdlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBGaXggaGFuZGxpbmcgb2YgbmFtZWQgYml0ZmllbGQgd2lkdGhzLgoKVGh1IEp1biAyMCAyMzozNTozOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChhZGRfcGVuZGluZ190ZW1wbGF0ZSk6IEhhbmRsZSB0eXBlcy4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBXaXRoIC1mZXh0ZXJuYWwtdGVtcGxhdGVzLCBqdXN0IGFkZCB0aGUgY2xhc3MKCXRvIHBlbmRpbmdfdGVtcGxhdGVzIGluc3RlYWQgb2YgaW5zdGFudGlhdGluZyBpdCBub3cuCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogSGFuZGxlIHR5cGVzIGluIHBlbmRpbmdfdGVtcGxhdGVzLgoKVGh1IEp1biAyMCAxNDowODo0MCAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGdyb2tiaXRmaWVsZCk6IEhhbmRsZSBjb25zdGFudCBkZWNscyBhcHByb3ByaWF0ZWx5LgoJR2l2ZSBhbiBhcHByb3ByaWF0ZSBlcnJvciBtZXNzYWdlIG5vdyBpbnN0ZWFkIG9mIHNwZXdpbmcgY29yZQoJbGF0ZXIuCgpUaHUgSnVuIDIwIDEzOjAxOjUxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmM6IERvbid0IHR1cm4gb24gdGh1bmtzIGJ5IGRlZmF1bHQgZm9yIG5vdy4KCldlZCBKdW4gMTkgMTE6Mzc6MDQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGNvbXBsZXRlX3R5cGUpOiBIYW5kbGUgZXJyb3JfbWFya19ub2RlLgoJKGNvbW1vbl90eXBlLCBPRkZTRVRfVFlQRSk6IEhhbmRsZSB0ZW1wbGF0ZV90eXBlX3Bhcm1zLgoKVHVlIEp1biAxOCAxMDowMjoxNSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogSWYgYXRfZW9mLCBjYWxsIGltcG9ydF9leHBvcnRfZGVjbAoJcmVnYXJkbGVzcyBvZiBERUNMX0lOTElORS4KCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogU2V0IFRSRUVfQUREUkVTU0FCTEUgb24gQ09OU1RSVUNUT1JzLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9iaXRzKTogQ29weSBUWVBFX1NJWkUuCgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IFN1cHBvcnQgdGVtcGxhdGVzLgoJKiB0cmVlLmRlZjogU3VwcG9ydCBEWU5BTUlDX0NBU1RfRVhQUi4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBMaWtld2lzZS4KCk1vbiBKdW4gMTcgMTU6MjM6MzYgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3N0YXRpY19jYXN0KTogU3VwcG9ydCB0ZW1wbGF0ZXMuCgkoYnVpbGRfY29uc3RfY2FzdCk6IExpa2V3aXNlLgoJKiB0cmVlLmRlZjogU3VwcG9ydCBDT05TVC9TVEFUSUNfQ0FTVF9FWFBSLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IExpa2V3aXNlLgoKU3VuIEp1biAxNiAxMjozMzo1NyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBEb24ndCB0cnVzdAoJVFJFRV9TWU1CT0xfUkVGRVJFTkNFRCBmb3IgdnRhYmxlcyBvZiBsb2NhbCBjbGFzc2VzLgoKRnJpIEp1biAxNCAxODoxMzozNiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3RfY29weSk6IEhhbmRsZSBvcGVyYXRvciBULgoKV2VkIEp1biAxMiAxNzo1Mjo0MCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX2RlbGV0ZSk6IE1vdmUgY3JlYXRpb24gb2YgUEFSTVMgaW5zaWRlIHRlc3Qgb2YKCVRZUEVfSEFTX0RFU1RSVUNUT1IsIHNpbmNlIGl0J3MgbmV2ZXIgdXNlZCBvdXRzaWRlIG9mIHRoYXQgYmxvY2suCgpUdWUgSnVuIDExIDE1OjA5OjE4IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBEb24ndCBhc3N1bWUgdGhhdAoJdGhlIGFyZ3VtZW50cyB0byA/OiBhcmUgYWx3YXlzIHBvaW50ZXJzIG9yIHJlY29yZHMuCgpUdWUgSnVuIDExIDEzOjU2OjIzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IFN0aWxsIGVtaXQgc3RhdGljL3dlYWsvY29tZGF0Cgljb3BpZXMgb2YgaW5saW5lIHRlbXBsYXRlIGZ1bmN0aW9ucyB3aXRoIC1mbm8taW1wbGljaXQtdGVtcGxhdGVzLgoKVHVlIEp1biAxMSAxMTo0MjoxMyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfZGVsZXRlKTogRGV0ZXJtaW5lIHRoZSBjb21wbGV0ZSBiYXNldHlwZQoJcGF0aCB0byB0aGUgZGVzdHJ1Y3RvciB3ZSdyZSBjYWxsaW5nLgoKRnJpIEp1biAgNyAxNTozMDoxMCAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfZW51bWVyYXRvcik6IEFsd2F5cyBjb3B5IHRoZSBJTlRFR0VSX0NTVCB1c2VkIHRvCglpbml0aWFsaXplIHRoZSBlbnVtLCBiZWNhdXNlIHdlIHJlYWxseSBhbmQgdHJ1bHkgZG9uJ3Qga25vdyB3aGVyZQoJaXQgY2FtZSBmcm9tLgoJKHN0YXJ0X2VudW0pOiBEb24ndCBjb3B5IGludGVnZXJfemVyb19ub2RlIGJlY2F1c2UKCWJ1aWxkX2VudW1lcmF0b3Igd2lsbCBkbyBpdC4KCkZyaSBKdW4gIDcgMTE6MTE6MDkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBEbyBhY2Nlc3MgY29udHJvbCBvbiBiYXNlIGRlc3RydWN0b3JzLgoKCSogcHQuYyAodHN1YnN0LCBjYXNlIEZVTkNUSU9OX0RFQ0wpOiBTZXQgdXAKCUlERU5USUZJRVJfR0xPQkFMX1ZBTFVFIGZvciBtZW1iZXIgZnVuY3Rpb25zIHNvIHB1c2hkZWNsIGRvZXNuJ3QKCWhvc2UgdXMuCgpGcmkgSnVuICA3IDEwOjM3OjMzIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBJZiB3ZSBoYXZlIGFscmVhZHkgZXh0ZW5kZWQgdGhlCglsaWZldGltZSBvZiB0aGUgdGVtcG9yYXJ5LCBkb24ndCB0cnkgaXQgYWdhaW4uCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBEb24ndCB0cnkgYW5kIGNvbnZlcnQgdGhlIHJldHVybgoJdmFsdWUgdHdpY2Ugd2hlbiB3ZSB3YW50IGEgcmVmZXJlbmNlLCBvbmNlIGlzIGVub3VnaC4KClR1ZSBKdW4gIDQgMTU6NDE6NDUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0X2V4cHIsIGNhc2UgREVDTF9TVE1UKTogRG9uJ3QgcGFzcwoJTE9PS1VQX09OTFlDT05WRVJUSU5HIGF0IGFsbCBmb3Igbm93LgoKCSogc2VhcmNoLmMgKGFkZF9jb252ZXJzaW9ucyk6IFB1dCB0aGUgY29udmVyc2lvbiBmdW5jdGlvbiBpbgoJVFJFRV9WQUxVRSwgdGhlIGJhc2V0eXBlIGluIFRSRUVfUFVSUE9TRS4KCSogY3Z0LmMgKGJ1aWxkX3R5cGVfY29udmVyc2lvbik6IEFkanVzdC4KCSogY3Z0LmMgKGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uKTogQWRqdXN0LgoJKiBjYWxsLmMgKHVzZXJfaGFyc2huZXNzKTogQWRqdXN0LgoKTW9uIEp1biAgMyAxNTozMDo1MiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IFByZXRlbmQgdGhpcyBpcyBhIEZVTkNUSU9OX0RFQ0wgZm9yIHRoZQoJYmFja2VuZCdzIGJlbmVmaXQuCgpNb24gSnVuIDEwIDE4OjU4OjE5IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBBZGQgYSBkdW1teSByZWdpb24sIGlmIHdlCglnZXQgYW4gZXJyb3IsIHNvIHRoYXQgd2UgY2FuIGF2b2lkIGNvcmUgZHVtcGluZyBsYXRlci4KCkZyaSBNYXkgMzEgMTQ6NTY6MTMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChPRkZTRVRfUkVGKTogUmVtb3ZlLgoJKiB0cmVlLmRlZiAoQ1BfT0ZGU0VUX1JFRik6IFJlbmFtZSB0byBPRkZTRVRfUkVGLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogQ2xlYW51cCBjYWxsZXJzIG9mIGV4cGFuZF9leHByLgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IExpa2V3aXNlLgoJKGJ1aWxkX25ldyk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoZXhwYW5kX3RhcmdldF9leHByKTogTGlrZXdpc2UuCgpGcmkgTWF5IDMxIDE0OjIyOjA4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IERvbid0IHVzZSBUUkVFX1ZBTFVFIG9uIGEKCVRBUkdFVF9FWFBSLgoKV2VkIE1heSAyOSAxNzowNDozMyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogUmVkbyBob3cgYW5kIHdoZW4gdGVtcG9yYXJpZXMgYXJlCgljcmVhdGVkLgoJKiBkZWNsLmMgKGdyb2tfcmVmZXJlbmNlX2luaXQpOiBEb24ndCB0cnkgYW5kIGJlIHNtYXJ0IGFib3V0CglydW5uaW5nIGNsZWFudXBzLgoKV2VkIE1heSAyOSAxNjowMjowOCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogQWRkIE5VTExfVFJFRSB0byBhbGwgY2FsbHMgdG8gYnVpbGQKCShUQVJHRVRfRVhQUi4uLiksIG5vdyB0aGF0IGl0IGhhcyA0IGFyZ3VtZW50cy4KCSogdHJlZS5jIChidWlsZF9jcGx1c19uZXcpOiBMaWtld2lzZS4KClRodSBNYXkgMjMgMTY6NDA6MzAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9leHByLCBjYXNlIENBU1RfRVhQUik6IEhhbmRsZSBUKCkgcHJvcGVybHkuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogRG9uJ3QgY2FsbCBwdXNoL3BvcF9jcF9mdW5jdGlvbl9jb250ZXh0LgoJKiBkZWNsLmMgKHN0cnVjdCBzYXZlZF9zY29wZSk6IFJlbW92ZSBuYW1lZF9sYWJlbHMsCgl7YmFzZSxtZW1iZXJ9X2luaXRfbGlzdC4KCShtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IERvbid0IHNldCB0aGVtLiAgQ2FsbAoJcHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0IGlmIGFwcHJvcHJpYXRlLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IExpa2V3aXNlLgoKCSogbWV0aG9kLmMgKGRvX2J1aWxkX2Fzc2lnbl9yZWYpOiBSZW1vdmUgb2Jzb2xldGUgY2hlY2sgb2YKCVRZUEVfSEFTX0FTU0lHTl9SRUYgKGJhc2V0eXBlKS4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IERpYWdub3NlIHVzZXIgZGVmaW5pdGlvbiBvZgoJaW1wbGljaXRseS1kZWNsYXJlZCBtZXRob2RzLgoKVGh1IE1heSAyMyAxMjoxMzowOCAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogQWRkIGNvZGUgdG8gZ2l2ZQoJbWVhbmluZ2Z1bCBlcnJvciBtZXNzYWdlcyBpbnN0ZWFkIG9mIGNyYXNoaW5nLgoJKGRvX2J1aWxkX2Fzc2lnbl9yZWYpOiBEb24ndCBzeW50aGVzaXplIGFzc2lnbm1lbnQgb3BlcmF0b3JzIGZvcgoJY2xhc3NlcyBjb250YWluaW5nIHJlZmVyZW5jZSBvciBjb25zdCBtZW1iZXJzLgoKCSogY2xhc3MuYyAoc3RydWN0IGJhc2VfaW5mbyk6IFJlbW92ZSBjYW50X3N5bnRoX2NvcHlfY3RvcgoJYW5kIGNhbnRfc3ludGhfYXNuX3JlZi4KCShmaW5pc2hfYmFzZV9zdHJ1Y3QpOiBSZW1vdmUgdGhlIGNvZGUgdGhhdCB0cmllcyB0byBjb25kaXRpb25hbGl6ZQoJc3ludGhlc2lzIG9mIGNvcHkgY29uc3RydWN0b3JzICYgYXNzaWdubWVudCBvcGVyYXRvcnMgYmFzZWQgb24KCWFjY2VzcyBwZXJtaXNzaW9ucy4gIEluc3RlYWQsIGxldCBpdCBmYWlsIHdoZW4gaXQgdHJpZXMgdG8KCXN5bnRoZXNpemUgdGhlIGNvcHkgY29uc3RydWN0b3IuICBUaGlzIHdpbGwgZ2l2ZSBtZWFuaW5nZnVsIGVycm9yCgltZXNzYWdlcyBpbnN0ZWFkIG9mIHNpbGVudGx5IGdlbmVyYXRpbmcgY29kZSB0byBwZXJmb3JtIGEgYml0Y29weS4KCldlZCBNYXkgMjIgMTE6NDU6MTkgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBsZXguYyAocmVhbF95eWxleCk6IFJlbW92ZSBvbGQtbi1jcnVmdHkgI2lmIDAgY29kZSBmb3IKCWRldGVybWluaW5nIHR5cGVzIGZvciBjb25zdGFudCB2YWx1ZXMuCgoJKiBkZWNsLmMgKHN0cnVjdCBuYW1lZF9sYWJlbF9saXN0KTogVXNlIGluc3RlYWQgb2Ygc3R1ZmZpbmcKCXJhbmRvbSBpdGVtcyBpbnRvIGEgVFJFRV9MSVNUIG5vZGUuCgkobmFtZWRfbGFiZWxfdXNlcyk6IFVzZSB0aGUgbmV3IHN0cnVjdC4KCShwb3BsZXZlbCk6IExpa2V3aXNlLgoJKGxvb2t1cF9sYWJlbCk6IExpa2V3aXNlLgoJKGRlZmluZV9sYWJlbCk6IEFkZCBhbiBlcnJvciBtZXNzYWdlIHRvIHRlbGwgdGhlIHVzZXIgdGhlIGxpbmUKCXdoZXJlIHRoZSBnb3RvIGlzIGxvY2F0ZWQgaW4gYWRkaXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIG9mIHRoZQoJZ290by4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFVzZSBOVUxMIGluc3RlYWQgb2YgTlVMTF9UUkVFIHRvIGluaXRpYWxpemUKCW5hbWVkX2xhYmVsX3VzZXMuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgoJKHN0YXJ0X2RlY2wpOiBDb21wbGFpbiBhYm91dCBkZWZpbmluZyBhIHN0YXRpYyBkYXRhIG1lbWJlcgoJaW4gYSBkaWZmZXJlbnQgdHlwZSBmcm9tIHdoaWNoIGl0IHdhcyBkZWNsYXJlZC4KCldlZCBNYXkgMjIgMDk6MzM6MjMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGJ1aWxkX2V4cHJfdHlwZV9jb252ZXJzaW9uKTogQWRqdXN0LgoKVHVlIE1heSAyMSAxMToyMTo1NiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogQWx3YXlzIGNvbnZlcnQgJ3RoaXMnIHRvIHRoZQoJYXBwcm9wcmlhdGUgdHlwZS4KCgkqIHNlYXJjaC5jIChhZGRfY29udmVyc2lvbnMpOiBQdXQgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb24gaW4KCVRSRUVfVkFMVUUsIHRoZSB0eXBlIGluIFRSRUVfUFVSUE9TRS4KCSogY3Z0LmMgKGJ1aWxkX3R5cGVfY29udmVyc2lvbik6IEFkanVzdC4KCSogY2FsbC5jICh1c2VyX2hhcnNobmVzcyk6IEFkanVzdC4KCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogQ2FsbCB0ZW1wb3JhcnlfYWxsb2NhdGlvbiBhbmQKCXBlcm1hbmVudF9hbGxvY2F0aW9uIGFyb3VuZCB0aGUgQVNNX09VVFBVVF9NSV9USFVOSyBjYXNlLCB0b28uCgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX2FycmF5X3R5cGUpOiBIYW5kbGUgdHdlYWtpbmcgb2YKCVRZUEVfTUFJTl9WQVJJQU5UIGhlcmUuCgkqIHR5cGVjay5jIChjb21tb25fdHlwZSk6IE5vdCBoZXJlLgoKCSogdHlwZWNrLmMgKGNvbXBsZXRlX3R5cGUpOiBPbmx5IHRyeSB0byBjb21wbGV0ZSBhbiBhcnJheSB0eXBlIGlmCglpdCBoYXMgYSBkb21haW4uCgpNb24gTWF5IDIwIDE0OjU1OjU5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva3ZhcmRlY2wpOiBDYWxsIGNvbXBsZXRlX3R5cGUuCgkoZ3Jva2RlY2xhcmF0b3IpOiBDYWxsIGNvbXBsZXRlX3R5cGUgZm9yIFBBUk1fREVDTHMuCgpGcmkgTWF5IDE3IDE2OjQxOjE3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUmUtc2V0CglDTEFTU1RZUEVfR09UX1NFTUlDT0xPTiBhZnRlciBjYWxsaW5nIGZpbmlzaF9zdHJ1Y3RfMS4KCkZyaSBNYXkgMTcgMTQ6NTY6NTUgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChjcF9leHBhbmRfZGVjbF9jbGVhbnVwKTogUmVtb3ZlLCB0aGUgYmFja2VuZCBpcyBub3cKCXNtYXJ0IGVub3VnaCB0byBkbyBpdCByaWdodC4KCSogdHJlZS5jIChjcF9leHBhbmRfZGVjbF9jbGVhbnVwKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBVc2UgZXhwYW5kX2RlY2xfY2xlYW51cCBpbnN0ZWFkIG9mCgljcF9leHBhbmRfZGVjbF9jbGVhbnVwLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCShoYWNrX2luY29tcGxldGVfc3RydWN0dXJlcyk6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAocHVzaF9laF9jbGVhbnVwKTogTGlrZXdpc2UuCgpGcmkgTWF5IDE3IDEzOjEzOjUxIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZXhwYW5kX2V4cHIsIGNvbmQgVU5TQVZFX0VYUFIpOiBNb3ZlIGZyb20gdGhlIEMrKwoJZnJvbnRlbmQgdG8gdGhlIGJhY2tlbmQgd2hlcmUgaXQgYmVsb25ncy4KCSogdHJlZS5jICh1bnNhdmVfZXhwcik6IExpa2V3aXNlLgoJKHVuc2F2ZV9leHByX25vdyk6IExpa2V3aXNlLgoJKiB0cmVlLmRlZiAoVU5TQVZFX0VYUFIpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oICh1bnNhdmVfZXhwcik6IExpa2V3aXNlLgoJKHVuc2F2ZV9leHByX25vdyk6IExpa2V3aXNlLgoKRnJpIE1heSAxNyAxMTowMjo0MSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGVtaXRfYmFzZV9pbml0KTogTWFrZSBzdXJlIHRoZSBwYXJ0aWFsIEVIIGNsZWFudXBzIGxpdmUKCW9uIHRoZSBmdW5jdGlvbl9vYnN0YWNrLgoKVGh1IE1heSAxNiAxNToyOTozMyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGV4cHIuYyAoZG9fY2FzZSk6IERvbid0IHRyeSB0byBkZXJlZmVyZW5jZSBudWxsIFRSRUVfVFlQRXMKCXdoZW4gY2hlY2tpbmcgZm9yIHBvaW50ZXIgdHlwZXMuCgpUaHUgTWF5IDE2IDEzOjM4OjU4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogUmVtb3ZlIG9ic29sZXRlIGNoZWNrIGZvcgoJYWNjZXNzIGRlY2xhcmF0aW9ucy4KClRodSBNYXkgMTYgMTM6MzQ6MTUgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVybG9hZF9jYWxsKTogU2ltcGxpZnkgY2FsbHMgdG8KCWJ1aWxkX292ZXJsb2FkX2NhbGwgYnkgcmVtb3ZpbmcgbGFzdCBwYXJhbWV0ZXIuCgkoYnVpbGRfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGJ1aWxkX29wZm5jYWxsKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KClRodSBNYXkgMTYgMTM6MTU6NDMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2FsbC5jIChkZWZhdWx0X3Bhcm1fY29udmVyc2lvbnMpOiBGYWN0b3Igb3V0IGNvbW1vbiBjb2RlLgoJKGJ1aWxkX21ldGhvZF9jYWxsKTogVXNlIGl0LgoJKGJ1aWxkX292ZXJsb2FkX2NhbGxfcmVhbCk6IFVzZSBpdC4KCldlZCBNYXkgMTUgMTQ6NDY6MTQgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IEFsbG93IGltcGxpY2l0ICYgb24gTUVUSE9EX1RZUEVzLAoJYnV0IHBlZHdhcm4gYXMgdGhlIGNvZGUgaXMgYm9ndXMuCgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogVXNlIGJ1aWxkX2FkZHJfZnVuYyBpbnN0ZWFkIG9mCglkZWZhdWx0X2NvbnZlcnNpb24uICBEb24ndCBhbGxvdyBwb2ludGVyLXRvLW1ldGhvZCBmdW5jdGlvbnMgZG93bgoJaGVyZS4KCShidWlsZF91bmFyeV9vcCk6IFVzZSByZWFsIHBvaW50ZXItdG8tbWVtYmVyIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mCglmYWtlIG9uZXMuCgkoYnVpbGRfcHRybWVtZnVuYyk6IFVzZSBidWlsZF9hZGRyX2Z1bmMgaW5zdGVhZCBvZiBidWlsZF91bmFyeV9vcC4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogUmVtb3ZlZCBzb21lIG9ic29sZXRlIGNvZGUuCgkqIGRlY2wyLmMgKHJlcGFyc2VfYWJzZGNsX2FzX2V4cHIpOiBQYXNzIGN1cnJlbnRfY2xhc3NfcmVmIHRvCglidWlsZF94X2Z1bmN0aW9uX2NhbGwgaW5zdGVhZCBvZiBjdXJyZW50X2NsYXNzX3B0ci4gIE9ubHkgY2FsbAoJZGlnZXN0X2luaXQgb25jZSBvbiBhbiBpbml0aWFsaXplciwgd2UgZG8gdGhpcyBqdXN0IGNoZWNraW5nCglUUkVFX1RZUEUuCgkoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBQYXNzIGN1cnJlbnRfY2xhc3NfcmVmIHRvCglidWlsZF94X2Z1bmN0aW9uX2NhbGwgaW5zdGVhZCBvZiBjdXJyZW50X2NsYXNzX3B0ci4KCSogaW5pdC5jIChidWlsZF9tZW1iZXJfY2FsbCk6IExpa2V3aXNlLgoJKiBwYXNlLnk6IExpa2V3aXNlLgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBIYW5kbGUgT0ZGU0VUX1JFRnMgYmV0dGVyLgoJKiBwdC5jICh1bmlmeSk6IEhhbmRsZSBwb2ludGVyLXRvLW1lbWJlciBmdW5jdGlvbnMgYmV0dGVyLgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IENsZWFyIG91dCBjdXJyZW50X2NsYXNzX3JlZiBqdXN0IGxpa2UKCXdlIGRvIGZvciBjdXJyZW50X2NsYXNzX3B0ci4KCgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IEhhbmRsZSB2aXJ0dWFsIGJhc2VzIGJldHRlci4KClR1ZSBNYXkgMTQgMTY6Mzc6MzcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogc2lnLmMgKGJ1aWxkX3NpZ25hdHVyZV90YWJsZV9jb25zdHJ1Y3Rvcik6IFVzZSB0aGUgZGVsdGEgZm9yCgl0aGUgb3JpZ2luYWwgYmFzZXR5cGUgZm9yIHRoaXMgdmlydHVhbCBmdW5jdGlvbiB3aXRoIHRodW5rcy4KCShidWlsZF9zaWduYXR1cmVfbWV0aG9kX2NhbGwpOiBXZSBzdGlsbCBuZWVkIHRvIGFkanVzdCAndGhpcycKCXdpdGggdGh1bmtzLgoKVHVlIE1heSAxNCAxNjoyNzoyNSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX2FkZHJfZnVuYyk6IE5ldyByb3V0aW5lLiAgVXNlZCB0byBnZXQgdGhlIGByZWFsJwoJYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIG9yIGEgbWV0aG9kLiAgTmVlZGVkIHRvIGF2b2lkIGdldHRpbmcgYQoJcG9pbnRlci10by1tZW1iZXIgZnVuY3Rpb24uCgkoYnVpbGRfY2FsbCk6IE5ldyByb3V0aW5lIHRvIGJ1aWxkIENBTExfRVhQUnMuCgkoYnVpbGRfbWV0aG9kX2NhbGwpOiBVc2UgaXQuCgkqIGN2dC5jIChjb252ZXJ0X3RvX2FnZ3IpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IExpa2V3aXNlLgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3RhYmxlX2NvbnN0cnVjdG9yKTogVXNlIGJ1aWxkX2FkZHJfZnVuYy4KCSogY3AtdHJlZS5oIChidWlsZF9jYWxsLCBidWlsZF9hZGRyX2Z1bmMpOiBEZWNsYXJlIHRoZW0uCgpUdWUgTWF5IDE0IDEyOjQ3OjQ3IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoTE9PS1VQX0FHR1IpOiBSZW1vdmUsIHVudXNlZC4KCSogcGFyc2UueTogUmVtb3ZlIHVzZXMgb2YgTE9PS1VQX0FHR1IuCgpUdWUgTWF5IDE0IDEyOjA3OjUxIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqICouW2NoeV06IFJlbmFtZSBjdXJyZW50X2NsYXNzX2RlY2wgdG8gY3VycmVudF9jbGFzc19wdHIsIGFuZAoJQ19DX0QgdG8gY3VycmVudF9jbGFzc19yZWYuCgpNb24gTWF5IDEzIDE2OjU1OjIzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoY29udmVydF9oYXJzaG5lc3MpOiBUaWdodGVuIHVwIHBvaW50ZXIgY29udmVyc2lvbnMuCgpTYXQgTWF5IDExIDA0OjMzOjUwIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBTdXJyb3VuZCBERUNMX09ORV9PTkxZIHdpdGggaWZkZWYuCgkoZmluaXNoX2ZpbGUpOiBMaWtld2lzZS4KCkZyaSBNYXkgMTAgMTE6MDk6NTcgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3Z0LmMgKGNvbnZlcnRfZm5fcHRyKTogV2UgZG9uJ3QgdXNlIHRodW5rcyBmb3IgcG1mcy4KCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogU2V0IGZsYWdfb21pdF9mcmFtZV9wb2ludGVyIGluIGRlZmF1bHQKCWNvZGUuCgpUaHUgTWF5ICA5IDE4OjE4OjMwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmM6IFR1cm4gb24gdGh1bmtzIGJ5IGRlZmF1bHQgd2hlcmUgc3VwcG9ydGVkLgoKVHVlIE1heSAgNyAyMDozOTo1NyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKGJ1aWxkX292ZXJsb2FkX2NhbGxfbWF5YmUpOiBSZW1vdmVkLgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJsb2FkX2NhbGxfcmVhbCk6IEludmVydCBtZWFuaW5nIG9mIGxhc3QgYXJnIHRvCgliZSByZXF1aXJlX2NvbXBsZXRlLgoJKGJ1aWxkX292ZXJsb2FkX2NhbGwpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IFVzZSBidWlsZF9vdmVybG9hZF9jYWxsX3JlYWwKCWluc3RlYWQgb2YgYnVpbGRfb3ZlcmxvYWRfY2FsbF9tYXliZS4KCk1vbiBNYXkgIDYgMDE6MjM6MzIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBEb24ndCB0cnkgdG8gZW1pdCBmdW5jdGlvbnMgdGhhdCBoYXZlbid0CgliZWVuIGNvbXBpbGVkLgoKRnJpIE1heSAgMyAwOTozMDoxMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBPb3BzLgoKCSogZGVjbC5jIChtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IERvIHNhdmUgcHJldmlvdXNfY2xhc3NfKi4KCUFsc28gc3RvcmUgdGhlIGJpbmRpbmdzIGZyb20gcHJldmlvdXNfY2xhc3NfdmFsdWVzLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFJlc3RvcmUgdGhlbS4KClRodSBNYXkgIDIgMjE6NTY6NDkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogT25seSB3cml0ZSBvdXQgdnRhYmxlIGlmIGl0cwoJc3ltYm9sIGhhcyBiZWVuIHJlZmVyZW5jZWQuCgkoZmluaXNoX2ZpbGUpOiBSZS1qb2luIHN5bnRoZXNpcy92dGFibGUgbG9vcCB3aXRoIGlubGluZSBlbWlzc2lvbgoJbG9vcCwgZGlzYWJsZSBpbmxpbmluZyB3aGVuIGFuIGlubGluZSBpcyBvdXRwdXQuCgpUaHUgTWF5ICAyIDE3OjIwOjAyIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogU2V0dXAgc2F2ZWRfaW5fY2F0Y2guCgkocHVzaF9laF9jbGVhbnVwKTogUmVzZXQgX19laF9pbl9jYXRjaC4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBTZXQgX19laF9pbl9jYXRjaC4KClRodSBNYXkgIDIgMTY6MjE6MTcgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKHB1c2hfZWhfY2xlYW51cCk6IEFkZCB0cmFja2luZyBmb3Igd2hldGhlciBvciBub3Qgd2UKCWhhdmUgYW4gYWN0aXZlIGV4Y2VwdGlvbiBvYmplY3QuCgkoZXhwYW5kX2J1aWx0aW5fdGhyb3cpOiBVc2UgaXQgdG8gbWFrZSBzdXJlIGEgcmV0aHJvdyB3aXRob3V0IGFuCglleGNlcHRpb24gb2JqZWN0IGlzIGNhdWdodC4KClRodSBNYXkgIDIgMTE6MjY6NDEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IENsZWFyIG91dCBjbGFzcy1sZXZlbCBiaW5kaW5ncwoJY2FjaGUuCgpXZWQgTWF5ICAxIDExOjI2OjUyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogQWxzbyB1c2Ugc2VudHJpZXMgZm9yIHZhcnMgd2l0aAoJREVDTF9PTkVfT05MWSBvciBERUNMX1dFQUsgc2V0IChzaG91bGQgYW55IHN1Y2ggaGFwcGVuIHRvIGJlCgljcmVhdGVkKS4KCgkqIGxleC5jIChoYW5kbGVfY3BfcHJhZ21hKTogRGlzYWJsZSAjcHJhZ21hCglpbnRlcmZhY2UvaW1wbGVtZW50YXRpb24gaWYgU1VQUE9SVFNfT05FX09OTFkgPiAxLgoKVHVlIEFwciAzMCAxMToyNTo0NiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IFdyYXAgZGVmYXVsdCBjYXNlIGluCgl0ZW1wb3JhcnkvcGVybWFuZW50X2FsbG9jYXRpb24uCgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IFVzZSBERUNMX09ORV9PTkxZLgoJKGVtaXRfdGh1bmspOiBDYWxsIGFzc2VtYmxlX2VuZF9mdW5jdGlvbi4KCk1vbiBBcHIgMjkgMTU6Mzg6MjkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF92dGFibGUpOiBVc2UgREVDTF9PTkVfT05MWS4KCShpbXBvcnRfZXhwb3J0X2RlY2wpOiBMaWtld2lzZS4KCShmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBEaXNhYmxlIHZ0YWJsZSBoYWNrIGlmCglTVVBQT1JUU19PTkVfT05MWSA+IDEuCgpNb24gQXByIDI5IDE0OjMyOjQ3IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IFBSRUlOQ1JFTUVOVF9FWFBSIGFuZAoJUFJFREVDUkVNRU5UX0VYUFJzIHRha2UgdHdvIGFyZ3VtZW50cywgbm90IG9uZS4KCk1vbiBBcHIgMjkgMDA6Mjc6NTMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlX2VudHJ5KTogRG9uJ3QgYnVpbGQgdGh1bmtzIGZvciBhYnN0cmFjdAoJdmlydHVhbHMuCgoJKiBsZXguYyAocmVhbF95eWxleCk6IEZpeCBoYW5kbGluZyBvZiBfX1BSRVRUWV9GVU5DVElPTl9fIGxpa2UgQwoJZnJvbnRlbmQuCgpTYXQgQXByIDI3IDE2OjQ1OjM1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKHNldF9ydHRpX2VudHJ5KTogVXNlIHNpemVfemVyb19ub2RlLgoJKGJ1aWxkX3Z0YWJsZSk6IExpa2V3aXNlLgoKU2F0IEFwciAyNyAxNDo0ODo1NyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFBhc3Mgc2l6ZV96ZXJvX25vZGUgdG8gc2V0X3J0dGlfZW50cnkuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBMaWtld2lzZS4KCkZyaSBBcHIgMjYgMTM6MTQ6MTQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBDYWxsIG1hcmtfdXNlZCBvbiB0aGUgdGFyZ2V0IGZ1bmN0aW9uLgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IERvbid0IHdhcm4gYWJvdXQgcGVuZGluZyB0ZW1wbGF0ZXMuCgpUaHUgQXByIDI1IDE0OjU1OjQ0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogRml4IGxpc3Qgd2Fsa2luZyBsb2dpYy4KCgkqIHR5cGVjazIuYyAoY2hlY2tfZm9yX25ld190eXBlKTogT25seSB3YXJuIGlmIC1wZWRhbnRpYy4KCldlZCBBcHIgMjQgMTU6NDE6MTUgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBSZW1vdmUgb2xkIGNvZGUgZm9yCglkb250X2FsbG93X3R5cGVfZGVmaW5pdGlvbnMuCgkqIGNwLXRyZWUuaDogTGlrZXdpc2UuCgkqIHNwZXcuYzogTWFrZSBzdXJlIGNwLXRyZWUuaCBpcyBpbmNsdWRlZCBiZWZvcmUgcGFyc2UuaCwgc28gdGhlCglkZWZpbml0aW9uIG9mIGZsYWdnZWRfdHlwZV90cmVlIGlzIGZvdW5kIGJlZm9yZSBpdCBpcyB1c2VkLgoJKiBsZXguYzogTGlrZXdpc2UuCgkqIHBhcnNlLnk6IEFkZGVkIHRoZSBmdHlwZSBtZW1iZXIgdG8gdGhlIHR5cGUgdW5pb24sIGFuZCBjaGFuZ2VkIGEKCW51bWJlciBvZiBydWxlcyB0byB1c2UgaXQgaW5zdGVhZCBvZiB0dHlwZS4gIEFkZGVkIGNhbGxzIHRvCgljaGVja19mb3JfbmV3X3R5cGUoKSBhcyBhcHByb3ByaWF0ZS4KCSogdHlwZWNrMi5jIChjaGVja19mb3JfbmV3X3R5cGUpOiBOZXcgZnVuY3Rpb24gZm9yIGNoZWNraW5nCglpZiBhIG5ld2x5IGRlZmluZWQgdHlwZSBhcHBlYXJzIGluIHRoZSBzcGVjaWZpZWQgdHJlZS4KCSogY3AtdHJlZS5oOiBBZGQgbmV3IHR5cGUgZmxhZ2dlZF90eXBlX3RyZWUuICBBZGQgYSBwcm90b3R5cGUKCWZvciBjaGVja19mb3JfbmV3X3R5cGUoKS4KCldlZCBBcHIgMjQgMDA6MzY6MjEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBPbmx5IHVzZSBhIHNlbnRyeSBpZiB0aGUgZGVjbCBpcyBwdWJsaWMuCgoJKiBwdC5jICh0c3Vic3RfZXhwciwgREVDTF9TVE1UKTogSWYgd2UgZG9uJ3QgaGF2ZSBhbiBpbml0aWFsaXplciwKCWRvbid0IHBhc3MgTE9PS1VQX09OTFlDT05WRVJUSU5HLgoKVHVlIEFwciAyMyAxNzoxODo0NyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChjb21tb25fdHlwZSk6IEZpeCB0aGUgQVJSQVlfVFlQRSBjYXNlIHNvIGl0Cglwcm9wZXJseSBrZWVwcyB0cmFjayBvZiBjb25zdCBhbmQgdm9sYXRpbGUgdHlwZSBtb2RpZmllcnMuCgpUdWUgQXByIDIzIDEwOjUyOjU2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoY3BfdHJlZV9lcXVhbCk6IEMrKyB2ZXJzaW9uIG9mIHNpbXBsZV9jc3RfZXF1YWwuCgkqIHB0LmMgKGNvbXBfdGVtcGxhdGVfYXJncyk6IFVzZSBpdC4KCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2ZuLCBidWlsZF9keW5hbWljX2Nhc3QsIGV4cGFuZF8qX2Rlc2MpOiBDYWxsCglhc3NlbWJsZV9leHRlcm5hbCBmb3IgYXJ0aWZpY2lhbCBmdW5jdGlvbiBkZWNscy4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBPb3BzLgoKTW9uIEFwciAyMiAxNzoyODoyNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBQdXQgc3RhdGljIGRhdGEgbWVtYmVyIHRlbXBsYXRlcwoJaW50byBjb21tb24gc3RvcmFnZSwgb3IgbWFrZSB0aGVtIHdlYWssIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZXkKCWFyZSBkeW5hbWljYWxseSBvciBzdGF0aWNhbGx5IGluaXRpYWxpemVkLgoJKGdldF9zZW50cnkpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX2ZpbGUpOiBEbyBpbXBvcnRfZXhwb3J0X2RlY2wgZm9yIHN0YXRpYyBkYXRhIG1lbWJlcnMgYmVmb3JlCglidWlsZGluZyB0aGUgaW5pdC9maW5pIGZ1bmN0aW9ucy4gIERvbid0IGluaXQvZmluaSBhIHZhcmlhYmxlIHRoYXQncwoJRVhURVJOQUwuICBVc2UgYSBzZW50cnkgZm9yIHZhcmlhYmxlcyBpbiBjb21tb24uICBGaXggbWlzbWF0Y2hpbmcKCXB1c2gvcG9wX3RlbXBfc2xvdHMuCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBJZiBERUNMX05PVF9SRUFMTFlfRVhURVJOLCBkbyB0aGUKCWV4cGFuZF9zdGF0aWNfaW5pdCB0aGFuZy4KCSogbWV0aG9kLmMgKGdldF9pZF8yKTogTmV3IGZ1bmN0aW9uLgoKTW9uIEFwciAyMiAxNTozMjo0NSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGVtcHR5X3Bhcm1zKTogTWFrZSBzdXJlIHdlIHVzZSBDKystc3R5bGUgcHJvdG90eXBlcwoJd2hlbiB3ZSdyZSBkZWNsYXJpbmcgbWVtYmVyIGZ1bmN0aW9ucy4KClN1biBBcHIgMjEgMTA6MDg6MjIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKENPTkZMSUNUUyk6IDE2IHMvciBjb25mbGljdHMuCgkqIHBhcnNlLnkgKHNlbGZfdGVtcGxhdGVfdHlwZSk6IE5ldyBub250ZXJtaW5hbC4KClRodSBBcHIgMTggMDg6NTY6NTQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBIYW5kbGUgZ2V0dGluZyBhIFRZUEVfREVDTCBmb3IgYQoJbmFtZS4KCSogcGFyc2UueSAoYmFzZV9jbGFzcy4xKTogQWxsb3cgJ3R5cGVuYW1lIGZvbzo6YmFyJy4KCgkqIGxleC5jIChjaGVja19uZXdsaW5lKTogUmVtb3ZlICNwcmFnbWEgY29kZSB0aGF0IHBsYXlzIHdpdGggdGhlCglpbnB1dCBzdHJlYW0sIHNpbmNlIHdlIG5vdyBkZWFsIHdpdGggdG9rZW5zLiAgQ2xlYXIgbmV4dGNoYXIgd2hlbgoJd2UncmUgZG9uZS4KCShoYW5kbGVfY3BfcHJhZ21hKTogVXNlIHJlYWxfeXlsZXguCgkoaGFuZGxlX3N5c3ZfcHJhZ21hKTogRG9uJ3QgZG8gc2tpcGxpbmUgaGVyZS4gIE9ubHkgY2FsbCByZWFsX3l5bGV4CglpbiBvbmUgcGxhY2UuCgoJKiBsZXguYyAoY2hlY2tfZm9yX21pc3Npbmdfc2VtaWNvbG9uKTogSGFuZGxlIFNFTEZOQU1FLgoKCSogbGV4LmMgKGhhbmRsZV9jcF9wcmFnbWEpOiBGaXggIiNwcmFnbWEgaW1wbGVtZW50YXRpb24iLgoKV2VkIEFwciAxNyAxNjo1MTozMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55OiBOZXcgdG9rZW4gU0VMRk5BTUUgZm9yIHBvdGVudGlhbCBjb25zdHJ1Y3Rvci4KCSogc3Bldy5jICh5eWxleCk6IEhhbmRsZSBpdC4KCSogbGV4LmMgKGlkZW50aWZpZXJfdHlwZSk6IFByb2R1Y2UgaXQuCgoJKiBwYXJzZS55IChjb21wbGV0ZV90eXBlX25hbWUpOiBJbiA6OiBjYXNlLCBkb24ndCBwdXNoIGNsYXNzIGJpbmRpbmcuCgkoY29tcGxleF90eXBlX25hbWUpOiBMaWtld2lzZS4KCldlZCBBcHIgMTcgMTU6MDI6NDAgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBIYW5kbGUgcG9pbnRlciB0byBtZW1iZXIKCWZ1bmN0aW9ucy4KCldlZCBBcHIgMTcgMTI6Mjg6MjYgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogbGV4LmMgKGhhbmRsZV9jcF9wcmFnbWEpOiBOZXcgZnVuY3Rpb24sIHdpdGggZGVjbCwgZG9pbmcgdGhlIGNjMXBsdXMKCXByYWdtYXMuCgkoY2hlY2tfbmV3bGluZSk6IFB1dCB0aGUgdnRhYmxlL3VuaXQvaW1wbGVtZW50YXRpb24vaW50ZXJmYWNlIHByYWdtYQoJY29kZSBpbnRvIGhhbmRsZV9jcF9wcmFnbWEsIHJlcGxhY2luZyBpdCB3aXRoIGEgY2FsbC4KCShoYW5kbGVfc3lzdl9wcmFnbWEpOiBHaXZlIGludCByZXR1cm4gdHlwZSwgYW5kIHRha2UgRklOUFVUIGFuZCBUT0tFTgoJYXJncy4gIEdldCB0aGUgbmV4dCB0b2tlbiBhZnRlciBoYW5kbGluZyB0aGUgcHJhZ21hIHRva2VuLgoKV2VkIEFwciAxNyAxMDoyODozNCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogQXZvaWQgZG9pbmcgYmFzZSBhbmFseXNpcyBvbiBwbWZzLgoJKGNvbnZlcnRfdG9fcG9pbnRlcl9mb3JjZSk6IExpa2V3aXNlLgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBGaXggYXJyYXkgbmV3IHdpdGhvdXQgLWZjaGVjay1uZXcuCgpUdWUgQXByIDE2IDEzOjQ0OjU4IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCwgY2FsbC5jLCBjbGFzcy5jLCBkZWNsLmMsIHBhcnNlLnksIHB0LmMsIHJ0dGkuYywKCXRyZWUuYzogTG9zZSBUWVBFX05FU1RFRF9OQU1FLgoKCSogcGFyc2UueSAobmVzdGVkX25hbWVfc3BlY2lmaWVyXzEpOiBEb24ndCB0cmVhdCBub24taWRlbnRpZmllcnMKCWFzIGlkZW50aWZpZXJzLgoKCSogdHJlZS5kZWY6IEFkZCBWRUNfSU5JVF9FWFBSLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogSGFuZGxlIGl0LgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IFVzZSBpdCBpbnN0ZWFkIG9mIHRoZSBSVExfRVhQUiBuYXN0aW5lc3MgYW5kCgl0aGUgZXh0cmEgZmlsZS1zY29wZSBzeW1ib2wgbmFzdGluZXNzLgoKTW9uIEFwciAxNSAxNjoyMToyOSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IFRodW5rcyBhcmUgc3RhdGljLgoJKGVtaXRfdGh1bmspOiBVc2UgQVNNX09VVFBVVF9NSV9USFVOSyBpZiBpdCdzIGRlZmluZWQuCgoJKiBkZWNsMi5jIChtYXJrX3Z0YWJsZV9lbnRyaWVzKTogRW1pdCB0aHVua3MgYXMgbmVlZGVkLgoJKGZpbmlzaF9maWxlKTogRG9uJ3QgZW1pdCB0aGVtIGhlcmUuCgpTdW4gQXByIDE0IDExOjM0OjM5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0KTogSGFuZGxlIG51bGwgcG9pbnRlcnMuCgkoaWZub25udWxsKTogTmV3IGZ1bmN0aW9uLgoKRnJpIEFwciAxMiAwOTowODoyNyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbWV0aG9kX2NhbGwpOiBSZW1lbWJlciB0aGUgb3JpZ2luYWwgYmFzZXR5cGUgd2UKCXdlcmUgY2FsbGVkIHdpdGguICBHaXZlIGFuIGVycm9yIG1lc3NhZ2UgaW5zdGVhZCBvZiB0cnlpbmcKCShpbmNvcnJlY3RseSkgdG8gY2FsbCBhIG5vbi1zdGF0aWMgbWVtYmVyIGZ1bmN0aW9uIHRocm91Z2ggYQoJbm9uLWluaGVyaXRlZCBjbGFzcy4KCgkqIHNlYXJjaC5jIChleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IE1hcmsgdGhlIG5ldyBmaXh1cCBhcwoJREVDTF9BUlRJRklDSUFMLgoKVGh1IEFwciAxMSAwMzo1NzowOSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ldyk6IFVzZSBhIFRBUkdFVF9FWFBSIGZvciBhbGxvY19leHByLgoKCSogY2xhc3MuYyAoc2V0X3J0dGlfZW50cnkpOiBGaXggZm9yIHRodW5rcy4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IFN0aWxsIGVtaXQgdHlwZWluZm8gZm5zIGZvcgoJY3YtdmFyaWFudHMgb2YgYnVpbHRpbiB0eXBlcy4KCgkqIHJ0dGkuYyAoZXhwYW5kX2NsYXNzX2Rlc2MpOiBTZXQgdXAgYmFzZV9pbmZvX3R5cGVfbm9kZSBoZXJlLgoJKGluaXRfcnR0aV9wcm9jZXNzaW5nKTogSW5zdGVhZCBvZiBoZXJlLgoKV2VkIEFwciAxMCAxNDoxNzoxMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBydHRpLmMgKGluaXRfcnR0aV9wcm9jZXNzaW5nKTogRG8gaW5pdCByZWdhcmRsZXNzIG9mIC1mcnR0aS4KCShidWlsZF90eXBlaWQpOiBPbmx5IGNvbXBsYWluIGFib3V0IHRha2luZyBkeW5hbWljIHR5cGVpZCB3aXRob3V0CgktZnJ0dGkuCgoJKiBkZWNsMi5jOiBmbGFnX3J0dGkgZGVmYXVsdHMgdG8gMS4KCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX3Zhcik6IFRoZSBnZW5lcmFsIGNsYXNzIGNhc2UgaXMgbm93IHNtYWxsZXIuCgkoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBQYWNrIHRoZSBsYXR0ZXIgdGhyZWUgZmllbGRzIG9mIGJhc2VfaW5mbwoJaW50byAzMiBiaXRzLgoKV2VkIEFwciAxMCAxMzo1MDoxNCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF9tZW1iZXJfaW5pdCk6IERvbid0IGR1bXAgaWYgbmFtZSBpcyBOVUxMX1RSRUUuCgpXZWQgQXByIDEwIDEyOjU2OjAyIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChtYWtlX21lbW9pemVkX3RhYmxlX2VudHJ5KTogVW5kZWZlciB0aGUgcG9wLCBpZiBuZWNlc3NhcnkuCgkocHVzaF9tZW1vaXplZF9jb250ZXh0KTogU3BsaXQgb3V0IGNvZGUgdG8gdW5kZWZlciBwb3BfdHlwZV9sZXZlbCB0bwoJKGNsZWFyX21lbW9pemVkX2NhY2hlKTogaGVyZS4KCShwb3BfbWVtb2l6ZWRfY29udGV4dCk6IFdlIGNhbiBvbmx5IGhhbmRsZSBvbmUgbGF5ZXIgb2YgZGVmZXJyYWwgb2YKCXBvcF90eXBlX2xldmVsIHNvIGNsZWFyIHRoZSBjYWNoZSwgaWYgdGhlcmUgd2FzIGEgcHJldmlvdXMgbGV2ZWwuCgpUdWUgQXByICA5IDIzOjA2OjA5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBCdWlsZCB1cCBiYXNlX2luZm9fdHlwZV9ub2RlLgoJKGV4cGFuZF9jbGFzc19kZXNjKTogVXNlIG9uZSBwb2ludGVyIHRvIGFuIGFycmF5IG9mIGJhc2VfaW5mbwoJc3RydWN0cywgcGFzc2VkIHVzaW5nIGEgQ09OU1RSVUNUT1IuCgpUdWUgQXByICA5IDE0OjIwOjU3IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3ZiYXNlX3BhdGgpOiBSZW1vdmUgYmxvY2sgZXh0ZXJuIGZvcgoJZmxhZ19hc3N1bWVfbm9ubnVsbF9vYmplY3RzIGhlcmUuCgkoYnVpbGRfdmZuX3JlZik6IFNwbGl0IG91dCBmdW5jdGlvbmFsaXR5IGludG8gYnVpbGRfdnRibF9yZWYuCgkoYnVpbGRfdnRibF9yZWYpOiBOZXcgcm91dGluZS4KCShidWlsZF92dGFibGUpOiBTZXQgdXAgcnR0aSBpbmZvIGhlcmUuCgkoYWRkX3ZpcnR1YWxfZnVuY3Rpb24pOiBOb3RlIGluIENMQVNTVFlQRV9SVFRJIHRoZSBiZXN0CglwbGFjZSB3aGVyZSB3ZSBjYW4gZ2V0IHRoZSBydHRpIHBvaW50ZXJzIGZyb20gdG8gYXZvaWQgaGF2aW5nIHRvCglzZWFyY2ggYXJvdW5kIGZvciBhIHBsYWNlLgoJKGZpbmlzaF9iYXNlX3N0cnVjdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLiAgTmV2ZXIgY3JlYXRlIHRvdGFsbHkgbmV3IHZ0YWJsZXMKCXdpdGggdG90YWxseSBuZXcgdnRhYmxlIHBvaW50ZXJzIGZvciBydHRpLiAgRGlzYWJsZSBjb2RlIHRvIGxheW91dAoJdnRhYmxlIHBvaW50ZXJzIGJldHRlciB1bnRpbCB3ZSB3YW50IHRvIGJyZWFrIGJpbmFyeQoJY29tcGF0aWJpbGl0eS4KCSogcnR0aS5jIChidWlsZF9oZWFkb2Zfc3ViKTogTmV3IHJvdXRpbmUgdG8gY29udmVydCBkb3duIHRvIGEKCXN1Yi1vYmplY3QgdGhhdCBoYXMgYW4gcnR0aSBwb2ludGVyIGluIHRoZSB2dGFibGUuCgkoYnVpbGRfaGVhZG9mKTogVXNlIGl0LiAgQWxzbywgdXNlIGJ1aWxkX3Z0YmxfcmVmIG5vdyB0byBiZSBtb3JlCgltYWludGFpbmFibGUuCgkoYnVpbGRfZHluYW1pY19jYXN0KTogTWFrZSBzdXJlIHdlIGhhdmUgc2F2ZWQgaXQsIGlmIHdlIG5lZWQgdG8uCgkqIHNlYXJjaC5jIChkZnNfaW5pdF92YmFzZV9wb2ludGVycyk6IERpc2FibGUgY29kZSB0aGF0IGRlYWxzIHdpdGgKCWEgbW9yZSBlZmZpY2llbnQgdnRhYmxlIGxheW91dCwgZW5hYmxlIGxhdGVyLgoJKiBjYWxsLmMgKGZsYWdfYXNzdW1lX25vbm51bGxfb2JqZWN0cyk6IE1vdmVkIGRlY2xhcmF0aW9uIHRvCgkqIGNwLXRyZWUuaDogaGVyZS4gIERlY2xhcmUgYnVpbGRfdnRibF9yZWYuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogVXNlIE5VTExfVFJFRSBpbnN0ZWFkIG9mIDAgaW4KCWZ1bmN0aW9uIGNhbGxzIHRoYXQgd2FudCBhIHRyZWUuCgpUdWUgQXByICA5IDEyOjEwOjI2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0KTogSGFuZGxlIGRvd25jYXN0aW5nIHRvIFgqIGdpdmVuCglvdGhlciBYIHN1Ym9iamVjdHMgaW4gdGhlIG1vc3QgZGVyaXZlZCB0eXBlLiAgQWNrLgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3QpOiBObyBuZWVkIHRvIHN0cmlwIGN2LXF1YWxzIGhlcmUsCglnZXRfdHlwZWlkIHdpbGwgZG8gaXQgZm9yIHVzLgoJKGdldF90eXBlaWRfMSk6IEJyZWFrIG91dCBjYWxsLWJ1aWxkaW5nIGZvciBleHBhbmRfKl9kZXNjIHRvIHVzZS4KCShnZXRfdHlwZWlkKTogQ2FsbCBpdC4KCShleHBhbmRfKl9kZXNjKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBzZXQgVFlQRV9CVUlMVF9JTiBvbiBjaGFyICoKCWFuZCB2b2lkICouCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBMb3NlIGJ1aWx0aW5fdHlwZV90ZGVzY3MgbG9zc2FnZS4KCSogZGVjbDIuYyAoZmluaXNoX3Z0YWJsZV92YXJkZWNsKTogUmVtb3ZlIG9ic29sZXRlIGNvZGUuCgpNb24gQXByICA4IDE3OjIzOjIzIDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0KTogV2hlbiBjYWxsaW5nIHNldF9uZXN0ZWRfdHlwZW5hbWUsIHVzZQoJVFlQRV9ORVNURURfTkFNRSAoY3VycmVudF9jbGFzc190eXBlKSBpbnN0ZWFkIG9mCgljdXJyZW50X2NsYXNzX25hbWUuCgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogTGlrZXdpc2UuCgkocHVzaGRlY2xfY2xhc3NfbGV2ZWwpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IFVzZSBOVUxMX1RSRUUgaW5zdGVhZCBvZiAwIGluIHRoZSBjYWxsIHRvCglzZXRfbmVzdGVkX3R5cGVuYW1lLgoKU3VuIEFwciAgNyAxMDo0NDozMSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBydHRpLmMgKHN5bnRoZXNpemVfdGluZm9fZm4pOiBIYW5kbGUgYXJyYXlzLgoKCSogY3AtdHJlZS5oIChERUNMX1JFQUxMWV9FWFRFUk4pOiBOZXcgbWFjcm8uCgpTYXQgQXByICA2IDEzOjU2OjI3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHJ0dGkuYyAodGhyb3dfYmFkX2Nhc3QpOiBVc2UgZW50cnkgcG9pbnQgX190aHJvd19iYWRfY2FzdC4KCShpbml0X3J0dGlfcHJvY2Vzc2luZyk6IExvc2UgYmFkX2Nhc3RfdHlwZS4KCShidWlsZF9keW5hbWljX2Nhc3QpOiBVc2UgdGhyb3dfYmFkX2Nhc3QuCgoJKiBydHRpLmMgKHN5bnRoZXNpemVfdGluZm9fZm4pOiBIYW5kbGUgZW51bXMgYW5kIHBtZnMuCgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IERvbid0IHN5bnRoZXNpemUgYXJ0aWZpY2lhbCBmdW5jdGlvbnMKCXRoYXQgYXJlIGV4dGVybmFsIGFuZCBub3QgaW5saW5lLgoKCSogcnR0aS5jIChnZXRfdGluZm9fZm4pOiBJZiBhdF9lb2YsIGNhbGwgaW1wb3J0X2V4cG9ydF9kZWNsLgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBIYW5kbGUgaGF2aW5nIG5ldyBpbmxpbmVzIGFkZGVkIHRvCglzYXZlZF9pbmxpbmVzIGJ5IHN5bnRoZXNpcy4KCgkqIHJ0dGkuYyAoZ2V0X2JhZF9jYXN0X25vZGUpOiBEb24ndCByZXF1aXJlIDx0eXBlaW5mbz4uCgpGcmkgQXByICA1IDE3OjAyOjA5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCglSVFRJIHJld3JpdGUgdG8gaW5pdGlhbGl6ZSBub2RlcyBhcyBuZWVkZWQsIG5vdCByZXF1aXJlIHRoYXQKCXVzZXJzICNpbmNsdWRlIDx0eXBlaW5mbz4sIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYW5kIHJlZHVjZSB3YXN0ZWQKCXNwYWNlLgoJKiBydHRpLmMgKGluaXRfcnR0aV9wcm9jZXNzaW5nKTogTmV3IGZuLgoJKGJ1aWxkX3R5cGVpZCk6IFRoZSB2dGFibGUgZW50cnkgaXMgbm93IGEgZnVuY3Rpb24uCgkoZ2V0X3RpbmZvX3Zhcik6IE5ldyBmbi4KCShnZXRfdGluZm9fZm4pOiBMaWtld2lzZS4KCShnZXRfdHlwZWlkKTogVXNlIGl0LgoJKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IERlY2xhcmUgYW5kIHVzZSBlbnRyeSBwb2ludCBfX2R5bmFtaWNfY2FzdC4KCShidWlsZF8qX2Rlc2MpOiBSZW5hbWUgdG8gZXhwYW5kXypfZGVzYyBhbmQgcmV3cml0ZSB0byB1c2UgZW50cnkKCXBvaW50cyBfX3J0dGlfKi4KCShhZGRfdW5pbnN0YW50aWF0ZWRfZGVzYywgZ2V0X2RlZl90b19mb2xsb3csIGJ1aWxkX3RfZGVzYyk6IExvc2UuCgkoc3ludGhlc2l6ZV90aW5mb19mbik6IE5ldyBmbi4KCSogbWV0aG9kLmMgKGJ1aWxkX3RfZGVzY19vdmVybG9hZCk6IExvc2UuCgkoYnVpbGRfb3ZlcmxvYWRfd2l0aF90eXBlKTogTW9yZSBnZW5lcmljLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQ2FsbCBpbml0X3J0dGlfcHJvY2Vzc2luZy4KCSogY2xhc3MuYyAoc2V0X3J0dGlfZW50cnkpOiBVc2UgZ2V0X3RpbmZvX2ZuLgoJKiBkZWNsMi5jIChtYXJrX3Z0YWJsZV9lbnRyaWVzKTogTWFyayB0aGUgcnR0aSBmdW5jdGlvbi4KCShmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBEb24ndCBidWlsZF90X2Rlc2MuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogSGFuZGxlIHRpbmZvIGZ1bmN0aW9ucy4KCShmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoaW5saW5lX2NvbnZlcnNpb24pOiBOZXcgZm4uCgkoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogVXNlIGl0LgoJKiBjcC10cmVlLmg6IEFkZCBkZWNscy4KCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBBbHNvIGNvbnZlcnQgY29tcG9uZW50X3JlZnMgZnJvbQoJcmVmZXJlbmNlcy4KCgkqIGxleC5jIChjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBVc2UgdGhlIHR5cGUsIG5vdCB0aGUgbmFtZSwgaW4KCWRlY2xzcGVjcy4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfdnRhYmxlKTogRml4IHdlYWsgdnRhYmxlcy4KCkZyaSBBcHIgIDUgMTM6MzA6MTcgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAoZ2V0X2Jhc2VfZGlzdGFuY2VfcmVjdXJzaXZlKTogRml4IGFjY2VzcyBjaGVja3MgZm9yCglwcm90ZWN0ZWQgYmFzZXMuCgpGcmkgQXByICA1IDExOjAyOjA2IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAodW5hcnlfY29tcGxleF9sdmFsdWUpOiBEZWxldGUgdW5uZWVkZWQgZGVjbCwgaXQncyBpbgoJY3AtdHJlZS5oLgoJKGNvbnZlcnRfaGFyc2huZXNzKTogQWRkIHByb3RvdHlwZXMgd3JhcHBlZCBieSBQUk9UTy4KCSogZGVjbDIuYyAoZ3Jva19mdW5jdGlvbl9pbml0KTogTGlrZXdpc2UuCgkoZG9fdG9wbGV2ZWxfdXNpbmdfZGVjbCk6IENoYW5nZSB0byB2b2lkIHJldHVybiB0eXBlLgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnkpOiBSZW1vdmUgZGVjbCBvZiBtYWtlX3RodW5rLgoJKG1lcmdlX292ZXJyaWRlcyk6IEZpeCBvcmRlciBvZiBhcmcgZGVmaW5pdGlvbnMuCgkoZmluaXNoX3Z0YmxzKTogTGlrZXdpc2UuCgkoZml4dXBfdnRhYmxlX2RlbHRhcyk6IExpa2V3aXNlLgoJKG1vZGlmeV9hbGxfZGlyZWN0X3Z0YWJsZXMpOiBMaWtld2lzZS4KCShtb2RpZnlfYWxsX2luZGlyZWN0X3Z0YWJsZXMpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGdldF9iYXNlX2Rpc3RhbmNlX3JlY3Vyc2l2ZSk6IExpa2V3aXNlLgoJKGdldF9hYnN0cmFjdF92aXJ0dWFsc18xKTogTGlrZXdpc2UuCgkoZml4dXBfdmlydHVhbF91cGNhc3Rfb2Zmc2V0cyk6IExpa2V3aXNlLgoJKGxvb2t1cF9mbmZpZWxkc18xKTogQWRkIHByb3RvdHlwZXMgd3JhcHBlZCBieSBQUk9UTy4KCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogRml4IG9yZGVyIG9mIGFyZyBkZWZpbml0aW9ucy4KCShleHBhbmRfYWdncl9pbml0XzEpOiBBZGQgcHJvdG90eXBlcyB3cmFwcGVkIGJ5IFBST1RPLgoJKiBjcC10cmVlLmggKG1ha2VfdGh1bmspOiBBZGQgZGVjbC4KCShvdmVybG9hZF90ZW1wbGF0ZV9uYW1lLCBwdXNoX3RlbXBsYXRlX2RlY2wpOiBBZGQgZGVjbHMuCgkoZG9fdG9wbGV2ZWxfdXNpbmdfZGVjbCk6IENoYW5nZSB0byB2b2lkIHJldHVybiB0eXBlLgoJKHZlY19iaW5mb19tZW1iZXIpOiBBZGQgZGVjbC4KClRodSBBcHIgIDQgMTM6MzM6MTAgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUsIGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQsCgljb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbiwgcG9pbnRlcl9pbnRfc3VtLCBwb2ludGVyX2RpZmYsCgl1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IEFkZCBwcm90b3R5cGVzIHdyYXBwZWQgYnkgUFJPVE8uCgkoY29udmVydF9zZXF1ZW5jZSk6ICNpZiAwIGZuIGRlY2wsIHNpbmNlIGRlZmluaXRpb24gYWxzbyBpcy4KClRodSBBcHIgIDQgMTE6MDA6NTMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3QpOiBNYWtlIHN1cmUgd2Ugc3RyaXAgcXVhbGlmaWVycyBvbgoJY2FzdCB0byBwb2ludGVyIHR5cGVzIGZvciB0eXBlIHNlYXJjaGluZy4KCldlZCBBcHIgIDMgMTc6MTA6NTcgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogVXNlIGNwX2Vycm9yLCBub3QgZXJyb3IsIGluIHRoZQoJY2FzZSB3aGVyZSBCSU5GTyA9PSAwLgoKV2VkIEFwciAgMyAxMjowMTowMiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogRml4IHdvcmRpbmcgb2YgZXJyb3IgbWVzc2FnZXMgc28KCWNvbnN0cnVjdG9ycyBjb21lIG91dCByaWdodC4KClR1ZSBBcHIgIDIgMTY6MDY6NTkgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHB1c2hfb3ZlcmxvYWRlZF9kZWNsKTogRG9uJ3Qgd2FybiBhYm91dCBoaWRkZW4KCWNvbnN0cnVjdG9ycyB3aGVuIGJvdGggdGhlIHR5cGUgYW5kIHRoZSBmdW5jdGlvbiBhcmUgZGVjbGFyZWQKCWluIGEgc3lzdGVtIGhlYWRlciBmaWxlLgoKTW9uIEFwciAgMSAwOTowMzoxMyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFByb3BhZ2F0ZSB0aGUgVFlQRV9QQUNLRUQKCWZsYWcgZm9yIHRoZSB0eXBlIHRvIHRoZSB0eXBlJ3MgZmllbGRzLgoKU2F0IE1hciAzMCAxMjoxNDozMyAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChjb21wbGV4X3Bhcm1saXN0LCBFTExJUFNFUyk6IFRha2Ugb3V0IEFSTS1iYXNlZCB3YXJuaW5nLgoKRnJpIE1hciAyOSAxNTo1MTozNiAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGJhc2VfaW5mbywgZmluaXNoX2Jhc2Vfc3RydWN0KTogUmVwbGFjZQoJbmVlZHNfdmlydHVhbF9kdG9yIHdpdGggYmFzZV9oYXNfdmlydHVhbC4KCgkoZmluaXNoX3N0cnVjdF8xKTogUmVtb3ZlIHRoZSBvbGQgY29kZSB0aGF0IHRyaWVkIHRvIG1ha2UgZGVmYXVsdAoJZGVzdHJ1Y3RvcnMgdmlydHVhbC4gIFVzZSBiYXNlX2hhc192aXJ0dWFsIHdoZW4gY2hlY2tpbmcgaWYgd2UgbmVlZAoJdG8gYWRkIGEgdnRhYmxlIGVudHJ5IGZvciB0aGUgcnR0aSBjb2RlLgoKRnJpIE1hciAyOSAxNDowMjozNiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2wpOiBDb21wbGFpbiBhYm91dCB0ZW1wbGF0ZSBkZWNsIHdpdGgKCWluYXBwcm9wcmlhdGUgZGVjbGFyYXRpb24uCgpGcmkgTWFyIDI5IDEyOjE1OjM1IDE5OTYgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfdW5hcnlfb3ApOiBSZW1vdmUgYm9ndXMgY2hlY2sgZm9yIHRha2luZwoJdGhlIGFkZHJlc3Mgb2YgYSBtZW1iZXIgZnVuY3Rpb24uCgpGcmkgTWFyIDI5IDExOjU2OjAyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGNvbnN0cnVjdG9yX2RlY2xhcmF0b3IpOiBPbmx5IHB1c2ggdGhlIGNsYXNzIGlmCgl3ZSBhcmUgbm90IGFscmVhZHkgaW4gdGhlIGNsYXNzLgoKRnJpIE1hciAyOSAwOTo0MTowMiAxOTk2ICBKZWZmcmV5IEEuIExhdyAgPGxhd0BjeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGVtaXRfdGh1bmspOiBSZW1vdmUgY3VycmVudF9jYWxsX2lzX2luZGlyZWN0IG5vbnNlbnNlLgoJQWRkIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gSU5JVF9DVU1VTEFUSVZFX0FSR1MuCgpUaHUgTWFyIDI4IDE2OjQxOjM5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoc2hhZG93X3RhZyk6IEZpeCBlcnJvciBhYm91dCBhbm9uIHVuaW9uIHdpdGggbWV0aG9kcy4KCgkqIHBhcnNlLnkgKHNlbGZfcmVmZXJlbmNlKTogT25seSBnZW5lcmF0ZSBhIHNlbGYtcmVmZXJlbmNlIGlmIHRoaXMKCWlzIGEgbm9uLXRlbXBsYXRlIGNsYXNzLgoJKG9wdC5jb21wb25lbnRfZGVjbF9saXN0KTogT25seSB1c2UgaXQgaWYgaXQgd2FzIGdlbmVyYXRlZC4KCgkqIHBhcnNlLnkgKGNvbXBvbmVudF9kZWNsXzEpOiBVc2UgY29uc3RydWN0b3JfZGVjbGFyYXRvci4KCShmbi5kZWYyKTogTGlrZXdpc2UuCgkobm90eXBlX2NvbXBvbmVudF9kZWNsYXJhdG9yMCk6IExpa2V3aXNlLgoKVGh1IE1hciAyOCAxNToxMTozNSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGNoYXJtZWQuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF94X3VuYXJ5X29wKTogQWRkIGNoZWNrcyBmb3IgdGFraW5nIHRoZSBhZGRyZXNzCglvZiBhIFRBUkdFVF9FWFBSIG9yIG9mIGEgbWVtYmVyIGZ1bmN0aW9uLCBhbmQgZ2l2ZSBhcHByb3ByaWF0ZQoJd2FybmluZ3MuCgpUaHUgTWFyIDI4IDE0OjQ5OjI2IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IEFsbG93IHRlbXBsYXRlIHR5cGUgcGFybXMgdG8gYmUKCXVzZWQgYXMgdHlwZXMgZm9yIHRlbXBsYXRlIGNvbnN0IHBhcm1zLgoKV2VkIE1hciAyNyAxNTo1MToxOSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF92ZWNfaW5pdCk6IEVuc3VyZSB0aGUgZWggY2xlYW51cHMgYXJlIG9uIHRoZQoJZnVuY3Rpb25fb2JzdGFjay4KCldlZCBNYXIgMjcgMTA6MTQ6MzAgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogQmUgZXZlbiBtb3JlIHBpY2t5IGFib3V0IHRoZQoJYW1iaWd1b3VzIGxvb2t1cCB3YXJuaW5nLgoJKGdyb2tkZWNsYXJhdG9yKTogVHdlYWsgU0NPUEVfUkVGIGNvbnN0cnVjdG9yIGRlY2xhcmF0b3JzIGhlcmUuCgkqIHBhcnNlLnkgKGNvbnN0cnVjdG9yX2RlY2xhcmF0b3IpOiBSYXRoZXIgdGhhbiBoZXJlLgoKCSogcGFyc2UueSAoY29uc3RydWN0b3JfZGVjbGFyYXRvcik6IE5ldyBub250ZXJtaW5hbC4KCShmbi5kZWYxKTogVXNlIGl0LgoJKGV4cGxpY2l0X2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KClR1ZSBNYXIgMjYgMTM6NDE6MzMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCUFkZCBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBjbGFzcyBuYW1lIGF0IGNsYXNzIHNjb3BlLgoJKiBkZWNsLmMgKGxvb2t1cF9uYW1lX3JlYWwpOiBSZXN0cmljdCBwZWR3YXJuIGFib3V0IGFtYmlndW91cyBsb29rdXAuCgkqIHBhcnNlLnkgKHNlbGZfcmVmZXJlbmNlKTogTmV3IG5vbnRlcm1pbmFsLgoJKG9wdC5jb21wb25lbnRfZGVjbF9saXN0KTogVXNlIGl0LgoJKGZuLmRlZjEpOiBBZGQgbmVzdGVkX25hbWVfc3BlY2lmaWVyIHR5cGVfbmFtZSBjYXNlcy4KCSogY2xhc3MuYyAoYnVpbGRfc2VsZl9yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3N0cnVjdCk6IEhhbmRsZSBhY2Nlc3NfZGVmYXVsdCBsYXRlciwgbW92ZSBzZWxmLXJlZmVyZW5jZQoJZGVjbCB0byB0aGUgZW5kLgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBIYW5kbGUgZ2V0dGluZyBhIFRZUEVfREVDTC4KCSogY3AtdHJlZS5oOiBBZGp1c3QuCgoJKiBwdC5jIChkb19mdW5jdGlvbl9pbnN0YW50aWF0aW9uKTogU2VwYXJhdGUgaGFuZGxpbmcgb2YgbWVtYmVyCglmdW5jdGlvbnMgYW5kIG5vbi1tZW1iZXIgZnVuY3Rpb25zIHByb3Blcmx5LgoKTW9uIE1hciAyNSAxNDoyMzoyMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBJbXByb3ZlIGVycm9yIGZvciAndm9sYXRpbGUgY2xhc3MgSycuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBDaGVjayB0aGUgcmlnaHQgc2xvdCBmb3IgZGVzdHJ1Y3RvcnMuCgoJKiBkZWNsLmMgKHN0YXJ0X2VudW0pOiBDb21wbGFpbiBhYm91dCBlbnVtIHRlbXBsYXRlcy4KCk1vbiBNYXIgMjUgMTM6MjU6MzEgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChyZXNvbHZlX29mZnNldF9yZWYpOiBPZmZzZXQgcG9pbnRlcnMgdG8gbWVtYmVyIGRhdGEgYnkgb25lLgoJKiB0eXBlY2suYyAodW5hcnlfY29tcGxleF9sdmFsdWUpOiBMaWtld2lzZS4KCk1vbiBNYXIgMjUgMTM6MzA6NDIgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBjaGFybWVkLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY19leHBhbmRfcmV0dXJuKTogQ2hlY2sgZm9yIGEgcmV0dXJuZWQgbG9jYWwKCWFycmF5IG5hbWUsIHNpbWlsYXIgdG8gdGhlIGNoZWNrIGZvciBhbiBBRERSX0VYUFIuCgpNb24gTWFyIDI1IDEzOjA3OjE5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBEb24ndCBidWlsZCBjbGVhbnVwcyBmb3Igc3RhdGljCgl2YXJpYWJsZXMgaGVyZS4KCkZyaSBNYXIgMjIgMTc6NTc6NTUgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX21vZGlmeV9leHByKTogRml4IGVycm9yIG1lc3NhZ2VzIHRvIGJlIG1vcmUKCWFjY3VyYXRlLgoJKiBjcC10cmVlLmggKGFzc29wX2FzX3N0cmluZyk6IFBhcmFsbGVsIHRvIG9wX2FzX3N0cmluZywgYnV0IGZvcgoJYXNzaWdubWVudCBvcGVyYXRvcnMuCgkqIGVycm9yLmMgKGFzc29wX2FzX3N0cmluZyk6IExpa2V3aXNlLiAgQWRkIHN1cHBvcnQgZm9yIGAlUScgZm9yCglhc3NpZ25tZW50IG9wZXJhdG9ycy4KCkZyaSBNYXIgMjIgMTM6NDg6MjkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENhbGwgYmFkX3NwZWNpZmllcnMgZm9yIHR5cGVkZWZzLiAgQWxzbwoJZ2l2ZSBhbiBlcnJvciBpZiBpbml0aWFsaXplZC4gIHBlZHdhcm4gYWJvdXQgbmVzdGVkIHR5cGUgd2l0aCB0aGUKCXNhbWUgbmFtZSBhcyBpdHMgZW5jbG9zaW5nIGNsYXNzLgoKCSogcHQuYyAodHN1YnN0LCBjYXNlIFRZUEVfREVDTCk6IFNldCBERUNMX0NPTlRFWFQuCgoJKiB0eXBlY2suYyAocmVxdWlyZV9jb21wbGV0ZV90eXBlKTogQmUgc3VyZSB0byBpbnN0YW50aWF0ZSB0aGUKCU1BSU5fVkFSSUFOVCBvZiB0aGUgdHlwZS4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogSW5zdGFudGlhdGUgcGVuZGluZyB0ZW1wbGF0ZXMgYmVmb3JlCglwcm9jZXNzaW5nIHN0YXRpYyBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IERvbid0IGluc3RhbnRpYXRlIGZ1bmN0aW9ucyBhdCB0b3BsZXZlbAoJdW5sZXNzIGF0X2VvZi4KCkZyaSBNYXIgMjIgMDk6MzA6MTcgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBiZWF1dHkuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiBJZiBlcnJvcl9tYXJrX25vZGUgaXMgcGFzc2VkCglpbiBhcyBhbiBleHByZXNzaW9uLCBxdWl0IHdoaWxlIHdlJ3JlIGFoZWFkLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEdpdmUgYW4gZXJyb3IgbWVzc2FnZSBpZiBgZnJpZW5kJwoJaXMgY29tYmluZWQgd2l0aCBhbnkgc3RvcmFnZSBjbGFzcyBzcGVjaWZpZXJzLgoKV2VkIE1hciAyMCAxNDo1MTo1NSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChuYW1lZF9jb21wbGV4X2NsYXNzX2hlYWRfc2Fuc19iYXNldHlwZSk6IERvbid0IGNyYXNoIG9uCglkZWZpbml0aW9uIG9mIG5vbmV4aXN0ZW50IG5lc3RlZCB0eXBlLgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsLCBjYXNlIFRZUEVfREVDTCk6IEZpeCBkZWNpc2lvbiBmb3Igd2hldGhlciBvcgoJbm90IHRvIHNheSAndHlwZWRlZicuCgpXZWQgTWFyIDIwIDAwOjExOjQ3IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmdfdHlwZSk6IE1ha2Ugc2VhcmNoX3Nsb3QgYSB0cmVlLCBub3QgYSBjaGFyKi4KCSogc2VhcmNoLmMgKGRmc193YWxrLCBkZnNfaW5pdF92YmFzZV9wb2ludGVycywKCWV4cGFuZF91cGNhc3RfZml4dXBzKTogUmVtb3ZlIGNhc3Qgb2YgQ0xBU1NUWVBFX1NFQVJDSF9TTE9ULgoJKGRmc19maW5kX3ZiYXNlcyk6IFJlbW92ZSBjYXN0IGZvciBDTEFTU1RZUEVfU0VBUkNIX1NMT1QgaW5pdC4KClR1ZSBNYXIgMTkgMTc6NTY6MDMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGJ1aWxkX3Rocm93KTogU3VwcG9ydCBtaW5pbWFsIHBhcnNlLgoJKiBwdC5jICh0c3Vic3RfY29weSk6IFN1cHBvcnQgVEhST1dfRVhQUi4KCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBMaWtld2lzZS4KCgkqIHB0LmMgKG1hbmdsZV9jbGFzc19uYW1lX2Zvcl90ZW1wbGF0ZSk6IEFsd2F5cyBhbGxvY2F0ZQoJc2NyYXRjaF9maXJzdG9iai4KClR1ZSBNYXIgMTkgMTY6MzQ6MzEgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBiZWF1dHkuY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBHaXZlIGFuIGFwcHJvcHJpYXRlIGVycm9yCgl3aGVuIHRyeWluZyB0byBjYXN0IGZyb20gYW4gaW5jb21wbGV0ZSB0eXBlLgoKVHVlIE1hciAxOSAxNjowMDozMyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IGJvdGhlciBzZXR0aW5nIHVwCglDTEFTU1RZUEVfVEFHUyBleHBsaWNpdGx5LCBhcyB0aGUgbmVzdGVkIHR5cGVzIHdpbGwgYWRkCgl0aGVtc2VsdmVzLgoKVHVlIE1hciAxOSAxNTo0ODo0MyAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGJlYXV0eS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzaGFkb3dfdGFnKTogUmVtb3ZlIG9sZCBlcnJvciBjaGVjayBmb3IgdXNhZ2Ugb2YKCWFuIGVudW0gd2l0aG91dCBhIHByZXZpb3VzIGRlY2xhcmF0aW9uLgoJKHhyZWZfdGFnKTogQWRkIGVycm9yIG1lc3NhZ2UgYWJvdXQgdXNhZ2Ugb2YgZW51bXMgd2l0aG91dCBhCglwcmV2aW91cyBkZWNsYXJhdGlvbi4KClR1ZSBNYXIgMTkgMDk6MjE6MzUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBPbmx5IGRvIG5hbWUgY29uc2lzdGVuY3kgY2hlY2sgaWYgd2UncmUKCXBhcnNpbmcuCgoJKiBwdC5jIChwdXNoX3RlbXBsYXRlX2RlY2wpOiBEb24ndCBjcmFzaCBpZiB3ZSBnZXQgYSBtZW1iZXIgZGVmbgoJdGhhdCBkb2Vzbid0IG1hdGNoLgoKCSogZGVjbC5jICh4cmVmX3RhZ19mcm9tX3R5cGUpOiBOZXcgZnVuY3Rpb24gdG8gZG8gYW4geHJlZiB3aXRob3V0CglhbHdheXMgaGF2aW5nIHRvIGZpZ3VyZSBvdXQgY29kZV90eXBlX25vZGUuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2UgaXQgZm9yIGZyaWVuZCBjbGFzc2VzLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IFVzZSBpdC4KCgkqIHR5cGVjazIuYyAoYnVpbGRfZnVuY3Rpb25hbF9jYXN0KTogUHVsbCBvdXQgYSBzaW5nbGUgcGFybSBiZWZvcmUKCXBhc3NpbmcgaXQgdG8gYnVpbGRfY19jYXN0LgoKVHVlIE1hciAxOSAwOTowNzoxNSAxOTk2ICBCb2IgTWFuc29uICA8bWFuc29uQGJlYXV0eS5jeWdudXMuY29tPgoKCSogZXhwci5jIChkb19jYXNlKTogR2l2ZSBhbiBlcnJvciBtZXNzYWdlIGlmIGEgcG9pbnRlciBpcwoJZ2l2ZW4gYXMgYSBjYXNlIHZhbHVlLgoKTW9uIE1hciAxOCAyMTo1Nzo1NCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY19jYXN0KTogRG9uJ3QgcHVsbCBzaW5nbGUgVEVNUExBVEVfREVDTCBvdXQgb2YKCWFuIG92ZXJsb2FkIGxpc3QuCgoJKiBsZXguYyAoY29uc191cF9kZWZhdWx0X2Z1bmN0aW9uKTogUmVhbGx5LCBub3csIGludGVyZmFjZSBoYWNrZXJ5Cglkb2VzIG5vdCBhcHBseSB0byBzeW50aGVzaXplZCBtZXRob2RzLgoKTW9uIE1hciAxOCAxODoyMDo1NyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogQ3RvcnMgYW5kIGR0b3JzIG5vdyBoYXZlIHNwZWNpYWwgbmFtZXMKCXdpdGggcmVzcGVjdCB0byBsb29rdXBzLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogTGlrZXdpc2UuCgkoZ3Jvd19tZXRob2QpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0X21ldGhvZHMpOiBMaWtld2lzZS4KCSh3YXJuX2hpZGRlbik6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoJKiBjdnQuYyAoY29udmVydF90b19yZWZlcmVuY2UpOiBMaWtld2lzZS4KCShjb252ZXJ0X3RvX2FnZ3IpOiBMaWtld2lzZS4KCShjcF9jb252ZXJ0KTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBMaWtld2lzZS4KCSogaW5pdC5jIChleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfZGVmYXVsdF9pbml0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2FnZ3JfaW5pdF8xKTogTGlrZXdpc2UuCgkoYnVpbGRfb2Zmc2V0X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX25ldyk6IExpa2V3aXNlLgoJKGJ1aWxkX2RlbGV0ZSk6IExpa2V3aXNlLgoJKiBsZXguYyAoZG9faW5saW5lX2Z1bmN0aW9uX2hhaXIpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZF8xKTogTGlrZXdpc2UuCgkobG9va3VwX2ZuZmllbGRzX2hlcmUpOiBMaWtld2lzZS4KCShsb29rdXBfZmllbGQpOiBMaWtld2lzZS4KCShsb29rdXBfZm5maWVsZHMpOiBMaWtld2lzZS4KCShnZXRfdmlydHVhbF9kZXN0cnVjdG9yKTogTGlrZXdpc2UuCgkoZGZzX2RlYnVnX21hcmspOiBMaWtld2lzZS4KCShkZnNfcHVzaGRlY2xzKTogTGlrZXdpc2UuCgkoZGZzX2NvbXByZXNzX2RlY2xzKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAobGF5b3V0X2Jhc2V0eXBlcyk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IExpa2V3aXNlLgoJKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX21vZGlmeV9leHByKTogTGlrZXdpc2UuCgkoY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCShidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChDTEFTU1RZUEVfRklSU1RfQ09OVkVSU0lPTik6IExpa2V3aXNlLgoJKENUT1JfTkFNRSk6IE5ldy4KCShEVE9SX05BTUUpOiBOZXcuCgkqIGRlY2wuYyAoY3Rvcl9pZGVudGlmaWVyKTogTmV3LgoJKGR0b3JfaWRlbnRpZmllcik6IE5ldy4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCB0aGVtLgoKTW9uIE1hciAxOCAxODowMDo1MSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IERvbid0IGdldCBjb25mdXNlZCBieSBmaWVsZHMgd2hvc2UKCWNvbnRleHQgaGFzIG5vIHR5cGUgbmFtZSwgbGlrZSBwb2ludGVyIHRvIG1lbWJlciBmdW5jdGlvbnMuCgpNb24gTWFyIDE4IDEzOjE5OjAzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBIYW5kbGUgdHlwZWRlZiB3aXRob3V0IGRlY2xhcmF0b3IuCgoJKiBwdC5jICh0c3Vic3QpOiBIYW5kbGUgU0NPUEVfUkVGIGluIGRlY2xhcmF0b3IuCgoJKiBwYXJzZS55IChiYWRfcGFybSk6IENhdGNoIGFub3RoZXIgY2FzZSBvZiBtaXNzaW5nIGB0eXBlbmFtZScuCgoJKiBsZXguYyAoeXlwcmludCk6IEhhbmRsZSBUWVBFX0RFQ0xzLgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IERvbid0IHRyeSB0byBiZSBjbGV2ZXIuCgoJKiBsZXguYzogTG9zZSBjb21waWxlcl9lcnJvcl93aXRoX2RlY2wuCgkqIHR5cGVjazIuYzogTG9zZSBlcnJvcl93aXRoX2FnZ3JfdHlwZS4KCShpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBVc2UgY3BfKiBpbnN0ZWFkIG9mIG9sZCBmdW5jdGlvbnMuCgkocmVhZG9ubHlfZXJyb3IpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChsb29rdXBfbmVzdGVkX2ZpZWxkKTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZ3Jva3Bhcm1zKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaDogVXBkYXRlLgoKCSogdHJlZS5jIChtaW5fdHJlZV9jb25zKTogQ2FsbCBjb3B5X3RvX3Blcm1hbmVudCBmb3IgdGhlIHB1cnBvc2UKCWFuZCB2YWx1ZS4KCk1vbiBNYXIgMTggMTE6MjU6NTIgMTk5NiAgQm9iIE1hbnNvbiAgPG1hbnNvbkBiZWF1dHkuY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChidWlsZF9vcGZuY2FsbCk6IFdoZW4gZGVsZXRpbmcgYSBwb2ludGVyIHRvIGFuCglhcnJheSwgYnVpbGQgYSBuZXcgcG9pbnRlciB0byB0aGUgdHJlZSBwYXN0IGFueSBBUlJBWV9UWVBFCglub2Rlcy4KCk1vbiBNYXIgMTggMTA6MTE6NDYgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogSW5pdGlhbGl6ZSBsb2NhbCB2YXIgVFlQRSB0byBOVUxMX1RSRUUuCgpGcmkgTWFyIDE1IDExOjAzOjU3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBPbmx5IGNhbGwgaW1wb3J0X2V4cG9ydF9kZWNsIGlmIGF0X2VvZgoJYW5kICEgREVDTF9JTkxJTkUuCgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IERvbid0IHNldCBuZXN0ZWQgYmFzZWQgb24KCWhhY2tfZGVjbF9mdW5jdGlvbl9jb250ZXh0LgoJKiBwYXJzZS55IChmdW5jdGlvbl90cnlfYmxvY2spOiBDaGVjayBmb3IgbmVzdGVkIGZ1bmN0aW9uLgoJKHBlbmRpbmdfaW5saW5lcyk6IExpa2V3aXNlLgoKCSogZGVjbDIuYyAoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBJZiBhIHVuYXJ5IG9wIGFscmVhZHkgaGFzIGEKCXR5cGUsIGp1c3QgcmV0dXJuIGl0LgoKCSogZGVjbDIuYyAoZmluaXNoX3ByZXZ0YWJsZV92YXJkZWNsKTogVXNlIEFESlVTVF9WVEFCTEVfTElOS0FHRS4KCgkqIGRlY2wyLmMgKHdhbGtfdnRhYmxlcyk6IHZhcmRlY2xfZm4gcmV0dXJucyBpbnQ7IHJldHVybiAxIGlmIGl0IGRvZXMuCgkoZmluaXNoX2ZpbGUpOiBDaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIHdhbGtfdnRhYmxlcy4KCShmaW5pc2hfcHJldnRhYmxlX3ZhcmRlY2wpOiBSZXR1cm4gaW50LgoJKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IExpa2V3aXNlLgoJKHBydW5lX3Z0YWJsZV92YXJkZWNsKTogTGlrZXdpc2UuCgkqIGxleC5jIChzZXRfdmFyZGVjbF9pbnRlcmZhY2VfaW5mbyk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IEFkanVzdCByZXR1cm4gdHlwZXMuCgoJKiBjbGFzcy5jIChkZWxldGVfZHVwbGljYXRlX2ZpZWxkc18xKTogRG9uJ3QgY29tcGxhaW4gYWJvdXQKCWR1cGxpY2F0ZSBuZXN0ZWQgdHlwZXMgaWYgdGhleSdyZSB0aGUgc2FtZSB0eXBlLgoJKGZpbmlzaF9zdHJ1Y3QpOiBSZW1vdmUgY2hlY2sgZm9yIGR1cGxpY2F0ZS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogRG9uJ3QgY2hlY2sgZm9yIHR5cGVkZWYgb2YgYW5vbnltb3VzIHR5cGUuCgpUaHUgTWFyIDE0IDEwOjAwOjE5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaDogTG9zZSBTSUdOQVRVUkVfR1JPS0tJTkdfVFlQRURFRi4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBMb3NlIHNwZWNpYWwgaGFuZGxpbmcgb2YgY2xhc3MtbGV2ZWwKCXR5cGVkZWYuICBMb3NlIFNJR05BVFVSRV9HUk9LS0lOR19UWVBFREVGLiAgU2V0CglTSUdOQVRVUkVfSEFTX09QQVFVRV9UWVBFREVDTFMgbGF0ZXIuCgoJKiBjdnQuYyAoY29udmVydF9wb2ludGVyX3RvX3JlYWwpOiBSZXRhaW4gY3YtcXVhbHMgaW4gY29udmVyc2lvbi4KCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogU3RyaXAgY3YtcXVhbHMgZnJvbSBkZXN0cnVjdG9yIG5hbWUgdHlwZXMuCgoJKiBzZWFyY2guYyAoY29tcHV0ZV9hY2Nlc3MpOiBGaXggaGFuZGxpbmcgb2YgYW5vbnltb3VzIHVuaW9uCgltZW1iZXJzLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2Fub24pOiBQcm9wYWdhdGUgVFJFRV97UFJJVkFURSxQUk9URUNURUR9Cglmcm9tIGFub255bW91cyB1bmlvbnMgdG8gdGhlaXIgbWVtYmVycy4KCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBGb3Igc3RhdGljIG1lbWJlciBmdW5jdGlvbnMsCgloYW5kIG9mZiB0byBidWlsZF9tZW1iZXJfY2FsbC4KCldlZCBNYXIgMTMgMTQ6MDM6MzQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBIYW5kbGUgT0ZGU0VUX1JFRnMuCgoJKiBpbml0LmMgKGV4cGFuZF92ZWNfaW5pdCk6IEZpeCBpbml0ID09IDAgY2FzZS4KClR1ZSBNYXIgMTIgMTQ6MzY6MDIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9uZXcpOiBwZWR3YXJuIGFib3V0IGluaXQgYW5kIGFycmF5IG5ldy4KCShleHBhbmRfdmVjX2luaXQpOiBIYW5kbGUgbGlzdHMsIHVzZSBjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbi4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9pbml0aWFsaXphdGlvbik6IFBhc3MgTE9PS1VQX05PX0NPTlZFUlNJT04KCXdoZW4gY29udmVydGluZyB0byBhbiBhZ2dyZWdhdGUgdHlwZS4KCSogY3Z0LmMgKGNwX2NvbnZlcnQpOiBQYXNzIGl0IHRocm91Z2guCgoJKiB0eXBlY2suYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IEhhbmRsZSB1c2VyLWRlZmluZWQKCWNvbnZlcnNpb25zIHRvIHNsaWdodGx5IGRpZmZlcmVudCB0eXBlcy4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBGb3JjZSBhbiBhcnJheSB0eXBlIGluIGEgcGFybSB0byBiZQoJcGVybWFuZW50LgoKCSogZGVjbDIuYyAoZG9fdXNpbmdfZGlyZWN0aXZlKTogU29ycnkuCgkoZG9fbmFtZXNwYWNlX2FsaWFzKTogTGlrZXdpc2UuCgkqIGxleC5jIChyZWFsX3l5bGV4KTogV2FybiBhYm91dCB1c2luZyB0aGUgYG5hbWVzcGFjZScga2V5d29yZC4KClN1biBNYXIgMTAgMjI6MjY6MDkgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAoZGF0YWRlZik6IE1vdmUgY2FsbCB0byBub3RlX2xpc3RfZ290X3NlbWljb2xvbiB1cC4KCkZyaSBNYXIgIDggMTE6NDc6MjYgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHJlZS5jICh1bnNhdmVfZXhwcik6IERvbid0IHVuc2F2ZSwgVU5TQVZFX0VYUFJzLgoKRnJpIE1hciAgOCAxMToyOTowNiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogVGhlIGV4Y2VwdGlvbiByZWdpb25zIGhhdmUgdG8gYmUKCW5lc3RlZCwgbm90IG92ZXJsYXBwaW5nLiAgV2Ugc3RhcnQgdGhlIGV4Y2VwdGlvbiByZWdpb24gZm9yIGEKCWRlY2wsIGFmdGVyIGl0IGhhcyBiZWVuIGZ1bGx5IGJ1aWx0LCBhbmQgYWxsIHRlbXBvcmFyaWVzIGZvciBpdAoJaGF2ZSBiZWVuIGNsZWFuZWQgdXAuCgpUaHUgTWFyICA3IDE3OjQ2OjA2IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAodmVjX2JpbmZvX21lbWJlcik6IERvbid0IGNvcmUgZHVtcCBpZiB3ZSBoYXZlIG5vIGJhc2VzLgoKVGh1IE1hciAgNyAxNDoxMTo0OSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmRlZjogQWRkIFJFVFVSTl9JTklULgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogSGFuZGxlIFJFVFVSTl9JTklULgoJKiBkZWNsLmMgKHN0b3JlX3JldHVybl9pbml0KTogSGFuZGxlIG1pbmltYWxfcGFyc2VfbW9kZS4KCgkqIHRyZWUuYyAoY3BfYnVpbGRfdHlwZV92YXJpYW50KTogSnVzdCByZXR1cm4gYW4gZXJyb3JfbWFya19ub2RlLgoJKiBkZWNsLmMgKG1ha2VfdHlwZW5hbWVfdHlwZSk6IERvbid0IHRyeSB0byBnZXQgdGhlIGZpbGUgYW5kIGxpbmUKCW9mIGFuIGlkZW50aWZpZXIuCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBIYW5kbGUgVFlQRU5BTUVfVFlQRS4KCldlZCBNYXIgIDYgMTg6NDc6NTAgMTk5NiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHBvcGxldmVsKTogTWFrZSBzdXJlIHdlIGNsZWFyIG91dCBhbmQgcmVzdG9yZSBvbGQgbG9jYWwKCW5vbi1WQVJfREVDTCB2YWx1ZXMgYnkgZGVmYXVsdCB3aGVuIHRoZXkgZ28gb3V0IG9mIHNjb3BlLgoKV2VkIE1hciAgNiAwOTo1NzozNiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfdmFsdWUpOiBVc2UgREVDTF9BU1NFTUJMRVJfTkFNRSBpbgoJcmVmZXJyaW5nIHRvIGFkZHJlc3NlcyBvZiB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucy4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IFN1cHBvcnQgU0laRU9GX0VYUFIuCgoJKiBpbml0LmMgKGRvX2ZyaWVuZCk6IFVzZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGNoZWNrX2NsYXNzZm4uCgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBDYWxsIGNvbXBsZXRlX3R5cGUuCgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogQWZ0ZXIgZ2l2aW5nIGFuIGVycm9yLCBzZXQgdmFsdWUgdG8KCWVycm9yX21hcmtfbm9kZS4KClR1ZSBNYXIgIDUgMTY6MDA6MTUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHJlZS5jIChoYWNrX2RlY2xfZnVuY3Rpb25fY29udGV4dCk6IEtsdWRnZSBhcm91bmQgREVDTF9DT05URVhUCglsb3NzYWdlIGZvciBsb2NhbCBjbGFzc2VzLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaXQuCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IEV2aWwsIHBhaW5mdWwgaGFjayBmb3IgbG9jYWwgY2xhc3Nlcy4KCShncm9rZm5kZWNsKTogU2V0IERFQ0xfQ0xBU1NfQ09OVEVYVCBhbmQgREVDTF9OT19TVEFUSUNfQ0hBSU4gaGVyZS4KCVVzZSBoYWNrX2RlY2xfZnVuY3Rpb25fY29udGV4dC4KCShncm9rZGVjbGFyYXRvcik6IERvbid0IHNldCBERUNMX05PX1NUQVRJQ19DSEFJTiBoZXJlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIGhhY2tfZGVjbF9mdW5jdGlvbl9jb250ZXh0LgoJKGZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBMaWtld2lzZS4KCSogbGV4LmMgKHByb2Nlc3NfbmV4dF9pbmxpbmUpOiBMaWtld2lzZS4KCShkb19wZW5kaW5nX2lubGluZXMpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBVbnNldCBERUNMX1NUQVRJQ19GVU5DVElPTl9QIHdoZW4gd2UncmUKCWRvbmUgd2l0aCBpdC4KCk1vbiBNYXIgIDQgMjI6Mzg6MzkgMTk5NiAgR2VyYWxkIEJhdW1nYXJ0bmVyICA8Z2JAYWxleGFuZGVyLmNzLnB1cmR1ZS5lZHU+CgoJKiBzaWcuYyAoYnVpbGRfc2lnbmF0dXJlX3BvaW50ZXJfb3JfcmVmZXJlbmNlX3R5cGUpOiBBbGlnbgoJc2lnbmF0dXJlIHBvaW50ZXJzL3JlZmVyZW5jZXMgb24gOC1ieXRlIGJvdW5kYXJpZXMgc28gdGhleSBjYW4gYmUKCWdyYWJiZWQgMiB3b3JkcyBhdCBhIHRpbWUgb24gYSBTUEFSQy4KClR1ZSBNYXIgIDUgMTA6MjE6MDEgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IFJlcXVpcmluZyBhIHN0YXRpYyBjaGFpbiBpcyBub3cgYQoJaGFyZCBlcnJvci4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFNldCBERUNMX05PX1NUQVRJQ19DSEFJTiBvbiBuZXN0ZWQKCWZ1bmN0aW9ucy4KCk1vbiBNYXIgIDQgMjA6MDM6MzMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogQ2FsbCBjb21wbGV0ZV90eXBlLgoKCSogZGVjbC5jIChwb3BfZnJvbV90b3BfbGV2ZWwpOiBBbHdheXMgcG9wIHByZXZpb3VzX2NsYXNzX3R5cGUuCgoJKiBwYXJzZS55OiBIYW5kbGUgbXVsdGlwbGUgZGVjbHMgaW4gYSBmb3ItaW5pdC1zdGF0ZW1lbnQuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogTGlrZXdpc2UuCgoJKiBwdC5jICh0c3Vic3QpOiBVc2UgdHN1YnN0X2V4cHIgZm9yIHRoZSBzZWNvbmQgb3BlcmFuZCBvZiBhbgoJQVJSQVlfUkVGLgoKCSogZGVjbC5jIChtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IERvbid0IHNhdmUgcHJldmlvdXNfY2xhc3NfdHlwZS4KCShwb3BsZXZlbF9jbGFzcyk6IFNldCBpdCBoZXJlLgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IFBvcCBpdCBoZXJlIGlmIHdlJ3JlIHJldHVybmluZyB0byBjbGFzcyBzY29wZS4KCSogY2xhc3MuYyAocHVzaGNsYXNzKTogRG9uJ3Qgc2V0IGl0IGhlcmUuCgoJKiBkZWNsLmMgKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogU2F2ZSBjdXJyZW50X3RlbXBsYXRlX3Bhcm1zLAoJYW5kIGNsZWFyIGl0IGlmICFwc2V1ZG8uCgkocG9wX2Zyb21fdG9wX2xldmVsKTogUmVzdG9yZSBpdC4KCgkqIGRlY2wyLmMgKGZpbmlzaF9maWxlKTogUHVzaCB0aGUgZHVtbXkgZWFjaCB0aW1lIHdlIHdhbGsgdGhlIGxpc3QKCW9mIHZ0YWJsZXMuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBTdXBwb3J0IExPT0tVUF9FWFBSIGFuZCBhY3R1YWxseSBkbwoJc29tZXRoaW5nIGZvciBDQVNUX0VYUFIuCgpNb24gRmViIDE5IDE0OjQ5OjE4IDE5OTYgIFJ1c3R5IFJ1c3NlbGwgIDxydXN0eUBhZGVsYWlkZS5tYXB0ZWsuY29tLmF1PgoKCSogY3Z0LmMgKGNwX2NvbnZlcnQpOiBXYXJuIGFib3V0IGltcGxpY2l0IGNvbnZlcnNpb24gb2YgdGhlCglhZGRyZXNzIG9mIGEgZnVuY3Rpb24gdG8gYm9vbCwgYXMgaXQgaXMgYWx3YXlzIHRydWUuCgpGcmkgRmViIDIzIDIzOjA2OjAxIDE5OTYgIFJ1c3R5IFJ1c3NlbGwgIDxydXN0eUBhZGVsYWlkZS5tYXB0ZWsuY29tLmF1PgoKCSogdHlwZWNrLmMgKGNfZXhwYW5kX3JldHVybik6IEZpeCB3YXJuaW5nIGZvciBsb2NhbCBleHRlcm5zIHJldHVybmVkLgoKTW9uIE1hciAgNCAxNTowMzoxMSAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKG1hcGNhcik6IFByb3BhZ2F0ZSBjb25zdCBhbmQgdm9sYXRpbGUgcHJvcGVybHkuCgoJKiB0eXBlY2suYyAoY29tcGxldGVfdHlwZSk6IEJlIHN1cmUgdG8gaW5zdGFudGlhdGUgdGhlCglNQUlOX1ZBUklBTlQgb2YgdGhlIHR5cGUuCgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBDbGFzcyBpbnRlcmZhY2UgaGFja2VyeSBkb2VzIG5vdAoJYXBwbHkgdG8gc3ludGhlc2l6ZWQgbWV0aG9kcy4KCk1vbiBNYXIgIDQgMTQ6MDU6MjMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoY29tcF90ZW1wbGF0ZV9hcmdzKTogVXNlIGNvbXB0eXBlcyByYXRoZXIgdGhhbiBqdXN0CgljaGVja2luZyBmb3IgVEVNUExBVEVfVFlQRV9QQVJNIGVxdWl2YWxlbmNlLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IENhbGwgY29tcGxldGVfdHlwZSBiZWZvcmUKCWNoZWNraW5nIFRZUEVfT1ZFUkxPQURTX0NBTExfRVhQUi4KCk1vbiBNYXIgIDQgMTg6NDg6MzAgMTk5NiAgTWFuZnJlZCBIb2xsc3RlaW4gICA8bWFuZnJlZEBsdHMuc2VsLmFsY2F0ZWwuZGU+CgoJKiBnKysuYyAobWFpbik6IENoZWNrIGFsc28gZm9yIG5ldyBkZWZpbmUgQUxUX0xJQk0uCgpGcmkgTWFyICAxIDEzOjA5OjMzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogSWYgd2UgZG9uJ3QgaGF2ZSBhIHBhdHRlcm4KCXlldCwgdGhhdCdzIE9LLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IElmIHdlIHNlZSBhIGxvY2FsIGNsYXNzLCBiYWlsLgoKCSogZGVjbC5jIChncm9rX3JlZmVyZW5jZV9pbml0KTogTWFrZSBzdXJlIHRoZXJlJ3MgYSB0eXBlIGJlZm9yZQoJY2hlY2tpbmcgaXRzIGNvZGUuCgoJKiBwdC5jIChkb19mdW5jdGlvbl9pbnN0YW50aWF0aW9uKTogQXZvaWQgY3Jhc2hpbmcgb24gaW52YWxpZCBkZWNscy4KCShwdXNoX3RlbXBsYXRlX2RlY2wpOiBMaWtld2lzZS4KCgkqIHBhcnNlLnkgKG5hbWVkX2NsYXNzX2hlYWQpOiBTZXQKCUNMQVNTVFlQRV9URU1QTEFURV9TUEVDSUFMSVpBVElPTiBoZXJlIGlmIHdlIGhhdmUgYmFzZXR5cGVzLgoKCSogZGVjbC5jICh4cmVmX3RhZyk6IERpYWdub3NlIHJlZGVjbGFyYXRpb24gb2YgdGVtcGxhdGUKCXR5cGUtcGFyYW1ldGVyIG5hbWUuCgoJKiBlcnJvci5jIChkdW1wX3R5cGUpOiBIYW5kbGUgYW5vbnltb3VzIHRlbXBsYXRlIHR5cGUgcGFybXMuCgoJKiBwdC5jIChpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IFVzZSBUWVBFX01BSU5fREVDTCBpbnN0ZWFkIG9mCglUWVBFX1NUVUJfREVDTC4KCShjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KClRodSBGZWIgMjkgMTY6MjY6MDEgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSwgY2FzZSB7QVJSQVksSU5ESVJFQ1R9X1JFRiwKCWNhc2UgQUREUl9FWFBSKTogRG9uJ3QgbW9kaWZ5IHJocyBpZiBhIHN1Ymluc3RhbnRpYXRpb24gZmFpbHMuCgpUaHUgRmViIDI5IDA4OjIwOjI1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogVGFrZSB0aGUgTUFJTl9WQVJJQU5UIG9mIHRoZSB0eXBlCgliZWZvcmUgdHJ5aW5nIHRvIGdldCBpdHMgU1RVQl9ERUNMLgoJKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IExpa2V3aXNlLgoKCSogcGFyc2UueSAodGVtcGxhdGVfdHlwZV9wYXJtKTogSWYgdGhleSBkaWRuJ3QgdXNlICdjbGFzcycsCglwcmV0ZW5kIHRoZXkgZGlkIGFmdGVyIGdpdmluZyBhbiBlcnJvci4KCgkqIHB0LmMgKGNvZXJjZV90ZW1wbGF0ZV9wYXJtcyk6IERpYWdub3NlIHVzZSBvZiBsb2NhbCBjbGFzcy4KCgkqIGRlY2wuYyAoZ3Jva19yZWZlcmVuY2VfaW5pdCk6IFVzZSBpbnN0YW50aWF0ZV90eXBlLgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogSGFuZGxlIFRFTVBMQVRFX0RFQ0xzLgoKCSogcGFyc2UueSAobmFtZWRfY2xhc3NfaGVhZCk6IERpYWdub3NlIG1pc21hdGNoaW5nIHR5cGVzIGFuZCB0YWdzLgoKCSogZGVjbC5jIChwdXNoZGVjbCk6IFR5cGUgZGVjbHMgYW5kIGNsYXNzIHRlbXBsYXRlcyBjbGFzaCB3aXRoCglhcnRpZmljaWFsIHR5cGUgZGVjbHMsIG5vdCBoaWRlIHRoZW0uCgoJKiBkZWNsLmMgKHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSk6IERpYWdub3NlIHJlZGVmaW5pdGlvbiBvZgoJdGVtcGxhdGVzIHByb3Blcmx5LgoJKGR1cGxpY2F0ZV9kZWNscyk6IERpYWdub3NlIGRpc2FsbG93ZWQgb3ZlcmxvYWRzIGZvciB0ZW1wbGF0ZQoJZnVuY3Rpb25zLCB0b28uCgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBDYWxsIGNvbXBsZXRlX3R5cGUgYmVmb3JlIGNoZWNraW5nIGZvciBhCglkZXN0cnVjdG9yLgoKCSogcHQuYyAodHN1YnN0KTogVXNlIHRzdWJzdF9leHByIG9uIHRoZSBlbHRzIG9mIGEgVkVDLgoKCSogZGVjbC5jICh4cmVmX3RhZyk6IEEgVEVNUExBVEVfVFlQRV9QQVJNIGlzIGEgbWF0Y2guCgpXZWQgRmViIDI4IDA5OjI4OjQ0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva19vcF9wcm9wZXJ0aWVzKTogRG9uJ3QgY2hlY2sgZm9yIG9wZXJhdG9yKysoaW50KSBpbgoJYSB0ZW1wbGF0ZS4KCgkqIHRyZWUuYyAocGVybV9tYW5pcCk6IFJldHVybiBhIGNvcHkgb2YgdmFyaWFibGUgYW5kIGZ1bmN0aW9uCglkZWNscyB3aXRoIGV4dGVybmFsIGxpbmthZ2UuCgoJKiB0cmVlLmRlZjogQ2hhbmdlIHNvbWUgb2YgdGhlIG1pbiB0cmVlIGNvZGVzIHRvIHR5cGUgIjEiLgoJKiBwdC5jICh1c2VzX3RlbXBsYXRlX3Bhcm1zKTogSGFuZGxlICdlJ3MsIHJldHVybiAxIGZvciBMT09LVVBfRVhQUnMuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9pbnQpOiBFbWl0IHNvbWV0aGluZyBhcmJpdHJhcnkgZm9yCglhbnl0aGluZyBidXQgYW4gSU5URUdFUl9DU1QgaWYgd2UncmUgaW4gYSB0ZW1wbGF0ZS4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBDYWxsIGNvbXBsZXRlX3R5cGUgYmVmb3JlIGRlY2lkaW5nCgl3aGV0aGVyIG9yIG5vdCB0byBsYXkgb3V0IHRoZSBkZWNsLgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBDaGVjayBmb3IgREVDTF9JTklUSUFMIGJlZm9yZSB1c2luZyBpdC4KClR1ZSBGZWIgMjcgMTY6MzU6MzIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChidWlsZF94X2Fycm93KTogQ2FsbCBjb21wbGV0ZV90eXBlLgoKCSogcHQuYyAoYWRkX3BlbmRpbmdfdGVtcGxhdGUpOiBCcm9rZW4gb3V0LgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IElmIC1mZXh0ZXJuYWwtdGVtcGxhdGVzLCBjYWxsIGl0IGZvciBhbGwKCXRoZSBtZXRob2RzIG9mIGltcGxlbWVudGVkIHR5cGVzLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogSW5zdGVhZCBvZiBpbnN0YW50aWF0aW5nIHRoZW0gaGVyZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogSGFuZGxlIC1mZXh0ZXJuYWwtdGVtcGxhdGVzIGVhcmxpZXIuCgpUdWUgRmViIDI3IDE1OjUxOjMyIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jLCBsZXguYywgZGVjbC5jLCBjbGFzcy5jLCBjcC10cmVlLmg6IERvbid0IHdyYXAgdGhlCgltZW1vaXplZCBsb29rdXAgc3R1ZmYgaW5zaWRlIEdBVEhFUl9TVEFUSVNUSUNTLgoKVHVlIEZlYiAyNyAxMDozODowOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBDb21wbGFpbiBhYm91dCBhcnJheSBvZiBpbmNvbXBsZXRlIHR5cGUKCWhlcmUuCgkoZ3Jva2RlY2xhcmF0b3IpOiBOb3QgaGVyZS4KCgkqIHBhcnNlLnkgKHRlbXBsYXRlX3Bhcm0pOiBFeHBhbmQgZnVsbF9wYXJtIGlubGluZSBzbyB3ZSBjYW4gc2V0Cgl0aGUgcnVsZSdzIHByZWNlZGVuY2UuCgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IElmIHdlJ3JlIGluIGEgdGVtcGxhdGUsIGp1c3QgZG8gdHN1YnN0X2NvcHkuCgkodHN1YnN0KTogdHN1YnN0X2V4cHIgdGhlIERFQ0xfSU5JVElBTCBvZiBGSUVMRF9ERUNMcy4KCSogZGVjbDIuYyAoZ3Jva2JpdGZpZWxkKTogRG9uJ3QgY2hlY2sgZm9yIGludGVnZXIgY29uc3RhbnQgaGVyZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQ2hlY2sgaGVyZS4KCgkqIGRlY2wuYyAoZGVmaW5lX2xhYmVsKTogTWFrZSB0aGUgbWluIGRlY2wgZ28gb24gcGVybWFuZW50X29ic3RhY2suCgoJKiBwdC5jICh1bmlmeSk6IERvbid0IGhhbmRsZSBDT05TVF9ERUNMcy4KCSh1c2VzX3RlbXBsYXRlX3Bhcm1zKTogRG9uJ3QgY2hlY2sgREVDTF9JTklUSUFMIG9uIGEgQ09OU1RfREVDTC4KCSh0c3Vic3RfY29weSk6IExpa2V3aXNlLgoKCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBEbyBwdWxsIHRoZSBERUNMX0lOSVRJQUwgb3V0IG9mIGEKCUNPTlNUX0RFQ0wgZm9yIGEgdGVtcGxhdGUgcGFybS4KCk1vbiBGZWIgMjYgMTI6NDg6MTggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENvbXBsYWluIGFib3V0IGFycmF5IG9mIGluY29tcGxldGUgdHlwZQoJaGVyZS4KCShzdGFydF9kZWNsXzEpOiBOb3QgaGVyZS4KCgkqIHB0LmMgKHRzdWJzdCk6IEhhbmRsZSBwb2ludGVyLXRvLWZ1bmN0aW9uIGRlY2xhcmF0b3JzLgoKCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IElmIHBlZGFudGljLCBkaWFnbm9zZSBsb2NhbCBjbGFzcwoJbWV0aG9kcyB0aGF0IHJlcXVpcmUgYSBzdGF0aWMgY2hhaW4uCgoJKiBkZWNsLmMgKGdyb2tfb3BfcHJvcGVydGllcyk6IE5vIGxvbmdlciBzdGF0aWMuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogcHQuYyAodHN1YnN0KTogQ2FsbCBpdCBmb3Igb3BlcmF0b3JzLgoJVXNlIHRzdWJzdF9jb3B5IGZvciBUUkVFX1ZFQ3MuCgoJKiBwYXJzZS55ICh0ZW1wbGF0ZV9hcmcpOiBUaGUgZXhwciBoYXMgcHJlY2VkZW5jZSBsaWtlICc+Jy4KCkZyaSBGZWIgMjMgMTQ6NTE6NTIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoY29lcmNlX3RlbXBsYXRlX3Bhcm1zKTogRG9uJ3QgY29lcmNlIGFuIGV4cHJlc3Npb24gdXNpbmcKCXRlbXBsYXRlIHBhcm1zLgoJKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBBbHNvIGNoZWNrIERFQ0xfSU5JVElBTCBpbiBDT05TVF9ERUNMcy4KCSh0c3Vic3QpOiBEb24ndCB1c2UgYnVpbGRfaW5kZXhfMl90eXBlIGlmIHRoZSBtYXhfdmFsdWUgdXNlcyB0ZW1wbGF0ZQoJcGFybXMuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF9pbnQpOiBFbWl0IHNvbWV0aGluZyBhcmJpdHJhcnkgZm9yIGFuCglleHByZXNzaW9uIHVzaW5nIHRlbXBsYXRlIHBhcm1zLgoKCSogcGFyc2UueSAodGVtcGxhdGVfY2xvc2VfYnJhY2tldCk6IE5ldyBub24tdGVybWluYWwgdG8gY2F0Y2ggdXNlCglvZiAnPj4nIGluc3RlYWQgb2YgJz4gPicgaW4gdGVtcGxhdGUgY2xhc3MgbmFtZXMuCgkodGVtcGxhdGVfdHlwZSk6IFVzZSBpdC4KCSogTWFrZWZpbGUuaW4gKENPTkZMSUNUUyk6IENhdXNlcyBvbmUgbW9yZSByL3IgY29uZmxpY3QuCgoJKiB0cmVlLmRlZjogQWRkIENBU1RfRVhQUi4KCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBVc2UgQ0FTVF9FWFBSIGluc3RlYWQgb2YKCUNPTlZFUlRfRVhQUiBmb3IgbWluaW1hbF9wYXJzZV9tb2RlLgoJKiB0eXBlY2suYyAoYnVpbGRfY19jYXN0KTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IExpa2V3aXNlLgoKRnJpIEZlYiAyMyAxMDozNjo0NiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoU2V0VGVybWluYXRlLCBTZXRVbmV4cGVjdGVkKTogUHV0IGJhY2sgZ2xvYmFsIHZhcnMuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IFB1dCBiYWNrIGRlY2wvaW5pdCBvZgoJc2V0X3VuZXhwZWN0ZWRfZm5kZWNsIGFuZCBzZXRfdGVybWluYXRlX2ZuZGVjbCwgbmVlZGVkIHRvIGdldCB0aGUKCWZucyBmcm9tIGxpYnN0ZGMrKy4KCgkqIGRlY2wuYyAoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBEZWxldGUgQUNDRVBUX0FOWSBiaXRmaWVsZC4KCShkZWNsYXJlX3VuaW5zdGFudGlhdGVkX3R5cGVfbGV2ZWwsIHVuaW5zdGFudGlhdGVkX3R5cGVfbGV2ZWxfcCk6CglEZWxldGUgdW51c2VkIGZucy4KCSogY3AtdHJlZS5oIChkZWNsYXJlX3VuaW5zdGFudGlhdGVkX3R5cGVfbGV2ZWwsCgl1bmluc3RhbnRpYXRlZF90eXBlX2xldmVsX3ApOiBEZWxldGUgcHJvdG90eXBlcy4KClRodSBGZWIgMjIgMTk6MzY6MTUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAodHN1YnN0X2V4cHIpOiBBZGQgZGVmYXVsdCByZXR1cm4uCgpUaHUgRmViIDIyIDE2OjQ3OjI0IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGVycm9yLmMgKGZuZGVjbF9hc19zdHJpbmcpOiBEZWxldGUgdW51c2VkIGFyZyBDTkFNRS4KCSogc2lnLmMgKGJ1aWxkX3NpZ25hdHVyZV90YWJsZV9jb25zdHJ1Y3RvciwKCWJ1aWxkX3NpZ25hdHVyZV9tZXRob2RfY2FsbCk6IEZpeCBjYWxscy4KCgkqIGNsYXNzLmMgKHRoZV9udWxsX3Z0YWJsZV9lbnRyeSk6IERlbGV0ZSB2YXIgZGVmaW5pdGlvbi4KCShpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBEZWxldGUgdHJlZSB0aGVfbnVsbF92dGFibGVfZW50cnkgaW5pdC4KCSogZGVjbC5jIChub19wcmludF97ZnVuY3Rpb25zLCBidWlsdGluc30pOiBEZWNsYXJlIGFzIHN0YXRpYy4KCShfX3RwX2Rlc2NfdHlwZV9ub2RlKTogI2lmIDAgdmFyIGRlZmluaXRpb24uCgkoaW5pdF90eXBlX2Rlc2MpOiAjaWYgMCBpbml0IG9mIF9fdHBfZGVzY190eXBlX25vZGUuCgkodmJfb2ZmX2lkZW50aWZpZXIpOiBNb3ZlIHZhciBkZWNsIGludG8gaW5pdF9kZWNsX3Byb2Nlc3NpbmcuCgkoY3VycmVudF9mdW5jdGlvbl9hc3NpZ25zX3RoaXMpOiBEZWNsYXJlIGFzIHN0YXRpYy4KCShpbnRfZnR5cGVfcHRyX3B0cl9pbnQsIHZvaWRfZnR5cGVfcHRyX2ludF9pbnQpOiBEZWxldGUgdmFyIGRlY2xzLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRGVsZXRlIGluaXQgb2Ygdm9pZF9mdHlwZV9wdHJfcHRyX2ludC4KCU1vdmUgZGVjbHMgb2Ygc3RyaW5nX2Z0eXBlX3B0cl9wdHIgYW5kIGludF9mdHlwZV9zdHJpbmdfc3RyaW5nIGhlcmUuCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiBEZWxldGUgZGVmaW5pdGlvbi9tb2Qgb2YgbG9jYWwgdmFyIEVMVF9TSVpFLgoJKiBpbml0LmMgKEJJX2hlYWRlcl90eXBlLCBCSV9oZWFkZXJfc2l6ZSk6IERlY2xhcmUgYXMgc3RhdGljLgoJKiBwdC5jICh0ZW1wbGF0ZV9jbGFzc2VzKTogRGVsZXRlIHVudXNlZCB2YXIuCgkoYWRkX3BlbmRpbmdfdGVtcGxhdGUpOiBEZWxldGUgZGVjbCBmb3Igbm9uLWV4aXN0ZW50IGZuLgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IERlbGV0ZSB2YXJzIENPREUgYW5kIFRBR19DT0RFLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogRGVsZXRlIHVudXNlZCB2YXIgVEFSR1MuCgkqIGNwLXRyZWUuaCAodmJfb2ZmX2lkZW50aWZpZXIsIGN1cnJlbnRfZnVuY3Rpb25fYXNzaWduc190aGlzKToKCURlbGV0ZSBkZWNscy4KCShfX3RwX2Rlc2NfdHlwZV9ub2RlKTogI2lmIDAgdmFyIGRlY2wuCgkoZm5kZWNsX2FzX3N0cmluZyk6IEZpeCBwcm90b3R5cGUuCgpUaHUgRmViIDIyIDE1OjU2OjE5IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuZGVmOiBBZGQgR09UT19TVE1ULgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IFN1cHBvcnQgZ290byBhbmQgbGFiZWxzLgoJKiBkZWNsLmMgKGRlZmluZV9sYWJlbCk6IFN1cHBvcnQgbWluaW1hbCBwYXJzaW5nLgoJKiBwYXJzZS55IChzaW1wbGVfc3RtdCk6IExpa2V3aXNlLgoKVGh1IEZlYiAyMiAxNTozMDoxMiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiB4cmVmLmMgKEdOVV94cmVmX21lbWJlcik6IE9ubHkgZGVmaW5lL3NldCB2YXIgSSBpZgoJWFJFRl9TSE9SVF9NRU1CRVJfTkFNRVMgaXMgZGVmaW5lZCwgdG8gbWF0Y2ggd2hlbiBpdCdzIGFjdHVhbGx5Cgl1c2VkLgoJKEdOVV94cmVmX2VuZF9zY29wZSk6IERlbGV0ZSB1bnVzZWQgZmlmdGggYXJnIFRSTlMuCgkoR05VX3hyZWZfZW5kKTogRml4IGNhbGwuCgkqIGRlY2wuYyAocG9wbGV2ZWwsIHBvcGxldmVsX2NsYXNzLCBmaW5pc2hfbWV0aG9kKTogRml4IGNhbGxzLgoJKiBjcC10cmVlLmggKEdOVV94cmVmX2VuZF9zY29wZSk6IEZpeCBwcm90b3R5cGUuCgoJKiB0cmVlLmMgKGJ1aWxkX2V4Y2VwdGlvbl92YXJpYW50KTogRGVsZXRlIHVudXNlZCB2YXJzIEksIEEsIFQsCglUMiwgYW5kIENOQU1FLgoJKGxheW91dF92YmFzZXR5cGVzKTogRGVsZXRlIHVudXNlZCB2YXIgTk9OVklSVFVBTF9WQVJfU0laRS4KCShtYXBjYXIpOiBEZWxldGUgdW51c2VkIHZhciBDT0RFLgoJKGJ1aWxkX2NwbHVzX25ldyk6IERlbGV0ZSB1bnVzZWQgYXJnIFdJVEhfQ0xFQU5VUF9QLgoJKGJyZWFrX291dF9jbGVhbnVwcyk6IEZpeCBjYWxsLgoJKGJvdF9tYW5pcCk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogTGlrZXdpc2UuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UsIGNvbnZlcnRfdG9fcmVmZXJlbmNlLCBjcF9jb252ZXJ0KToKCUxpa2V3aXNlLgoJKiB0eXBlY2suYyAodW5hcnlfY29tcGxleF9sdmFsdWUsIGJ1aWxkX21vZGlmeV9leHByLAoJY29udmVydF9mb3JfaW5pdGlhbGl6YXRpb24pOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChidWlsZF9jcGx1c19uZXcpOiBGaXggcHJvdG90eXBlLgoKCSogcmVwby5jIChvcGVuX3JlcG9fZmlsZSk6IERlbGV0ZSB1bnVzZWQgdmFyIFEuCgkocmVwb19jb21waWxlX2ZsYWdzLCByZXBvX3RlbXBsYXRlX2RlY2xhcmVkLAoJcmVwb190ZW1wbGF0ZV9kZWZpbmVkLCByZXBvX2NsYXNzX2RlZmluZWQsIHJlcG9faW5saW5lX3VzZWQsCglyZXBvX3Z0YWJsZV91c2VkLCByZXBvX3RpbmZvX3VzZWQpOiAjaWYgMCB1bnVzZWQgZm5zLgoJKHJlcG9fZ2V0X2lkLCByZXBvX3Z0YWJsZV91c2VkKTogRGVjbGFyZSBhcyBzdGF0aWMuCgkqIGNwLXRyZWUuaCAobWFya197ZGVjbCxjbGFzc31faW5zdGFudGlhdGVkLCBmaW5pc2hfcmVwbyk6IEFkZAoJcHJvdG90eXBlcy4KClRodSBGZWIgMjIgMTQ6NTM6MzUgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAocGVuZGluZ19pbmxpbmVzKTogQWRkIGZ1bmN0aW9uX3RyeV9ibG9jayBjYXNlLgoKCSogcHQuYyAodW5pZnkpOiBGaXggZm9yIHRlbXBsYXRlIGNvbnN0IHBhcm1zLgoKVGh1IEZlYiAyMiAxMzoyNDoxNSAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBsZXguYyAoZXh0cmFjdF9pbnRlcmZhY2VfaW5mbyk6IERlbGV0ZSBmb3J3YXJkIGRlY2wuCgkoZGVmYXVsdF9jb3B5X2NvbnN0cnVjdG9yX2JvZHksIGRlZmF1bHRfYXNzaWduX3JlZl9ib2R5KTogRGVsZXRlCglkZWNscyBmb3Igbm9uLWV4aXN0ZW50IGZ1bmN0aW9ucy4KCShzeW50aF9maXJzdG9iaiwgaW5saW5lX3RleHRfZmlyc3RvYmpzKTogRGVsZXRlIHVudXNlZCB2YXJzLgoJKGluaXRfbGV4KTogRGVsZXRlIHNldHRpbmcgdGhlbS4KCShjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBEZWxldGUgdW51c2VkIHZhcnMgRlVOQ19CVUYsCglGVU5DX0xFTiwgYW5kIENPTVBMRVguICBEZWxldGUgY29kZSBzZXR0aW5nIENPTVBMRVguICBEZWxldGUgb2xkCgkjaWYgMCdkIHN5bnRoIGNvZGUuCgkodG9wbGV2ZWwsIGV4cHJlc3Npb25fb2JzdGFjayk6IERlbGV0ZSB1bnVzZWQgZXh0ZXJuIGRlY2xzLgoJKHRyZWVfbm9kZV9raW5kKTogRGVsZXRlIHVudXNlZCBlbnVtLgoJKHRyZWVfbm9kZV9jb3VudHMsIHRyZWVfbm9kZV9zaXplcyk6IFdyYXAgd2l0aCAjaWZkZWYKCUdBVEhFUl9TVEFUSVNUSUNTLgoJKHRyZWVfbm9kZV9raW5kX25hbWVzKTogRGVsZXRlIHVudXNlZCBleHRlcm4gZGVjbC4KCShzeW50aF9vYnN0YWNrKTogRGVsZXRlIHVudXNlZCB2YXIuCgkoaW5pdF9sZXgpOiBEb24ndCBzZXQgaXQuCgkoaW5pdF9wYXJzZSk6IEFkZCBkZWNsIGJlZm9yZSB1c2UuCgkocmVkdWNlX2NvdW50KTogT25seSBkZWZpbmUgI2lmZGVmIEdBVEhFUl9TVEFUSVNUSUNTICYmIFJFRFVDRV9MRU5HVEguCgkoY3VycmVudF91bml0X3tuYW1lLCBsYW5ndWFnZX0pOiBEZWxldGUgdW51c2VkIHZhcnMuCgkoY2hlY2tfbmV3bGluZSk6IERvbid0IGJvdGhlciBzZXR0aW5nIHRoZW0sIGp1c3QgYWNjZXB0IHRoZSAjcHJhZ21hLgoJKiBjcC10cmVlLmggKGluaXRfcmVwbywgcGVla195eWxleCk6IEFkZCBwcm90b3R5cGVzLgoJKGN1cnJlbnRfdW5pdF97bmFtZSwgbGFuZ3VhZ2V9KTogRGVsZXRlIGRlY2xzLgoKCSogc2VhcmNoLmM6IFdyYXAgYWxsIG9mIHRoZSBtZW1vaXplZCBmdW5jdGlvbnMsIG1hY3JvcywgYW5kCgl2YXJpYWJsZXMgaW5zaWRlICNpZmRlZiBHQVRIRVJfU1RBVElTVElDUy4KCShsb29rdXBfZmllbGQsIGxvb2t1cF9mbmZpZWxkcyk6IExpa2V3aXNlLgoJKGluaXRfc2VhcmNoX3Byb2Nlc3NpbmcpOiBMaWtld2lzZS4KCShyZWluaXRfc2VhcmNoX3N0YXRpc3RpY3MpOiBXcmFwIHdob2xlIGZ1bmN0aW9uLgoJKiBsZXguYyAocmVpbml0X2xhbmdfc3BlY2lmaWMpOiBXcmFwIGNhbGwgdG8gcmVpbml0X3NlYXJjaF9zdGF0aXN0aWNzLgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBPbmx5IGNhbGwgcG9wX21lbW9pemVkX2NvbnRleHQgaWYKCUdBVEhFUl9TVEFUSVNUSUNTIGlzIGRlZmluZWQuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZSBmb3IgcHVzaF9tZW1vaXplZF9jb250ZXh0LgoJKiBjbGFzcy5jIChwdXNoY2xhc3MsIHBvcGNsYXNzKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9NVEFCTEVfRU5UUlkpOiBNb3ZlIGRlZmluaXRpb24gZnJvbSBoZXJlLi4uCgkqIHNlYXJjaC5jIChDTEFTU1RZUEVfTVRBQkxFX0VOVFJZKTogLi4uIHRvIGhlcmUuCgoJKiBjdnQuYyAoY3BfY29udmVydCk6IERlbGV0ZSB1bnVzZWQgbG9jYWwgdmFyIEZPUk0uCgkqIGNwLXRyZWUuaCAoY2FuX2NvbnZlcnQsIGNhbl9jb252ZXJ0X2FyZywgcmVhbF9sdmFsdWVfcCk6IEFkZAoJcHJvdG90eXBlcy4KClRodSBGZWIgMjIgMTM6MTk6NDQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcHQuYyAoZG9fcG9wbGV2ZWwpOiBPb3BzOyByZWFsbHkgcmV0dXJuIHdoYXQgd2UgZ2V0IGZyb20KCXBvcGxldmVsIHRoaXMgdGltZS4KClRodSBGZWIgMjIgMTE6NDE6NDQgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChpc19hZ2dyX3R5cGUpOiBBZGQgcHJvdG90eXBlLgoKCSogY3AtdHJlZS5oICh7cHVzaCxwb3B9X2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBBZGQgZGVjbHMuCgkqIG1ldGhvZC5jICh7cHVzaCxwb3B9X2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBEZWxldGUgZGVjbHMuCgkqIGV4Y2VwdC5jIChzdGFydF9laF91bndpbmRlciwgZW5kX2VoX3Vud2luZGVyKTogRGVjbGFyZSBhcyB2b2lkLgoJKFNldFVuZXhwZWN0ZWQsIFNldFRlcm1pbmF0ZSk6IERlbGV0ZSB1bnVzZWQgdmFycy4KCShpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogRG9uJ3Qgc2V0IFNldFVuZXhwZWN0ZWQgb3IKCVNldFRlcm1pbmF0ZS4gIERvbid0IHNldCBTRVRfVU5FWFBFQ1RFRF9GTkRFQ0wgb3IgU0VUX1RFUk1JTkFURV9GTkRFQ0wuCgkob3V0cHV0X2V4Y2VwdGlvbl90YWJsZV9lbnRyeSk6IERlbGV0ZSB1bnVzZWQgYXJyYXkgTEFCRUwuCgkoZXhwYW5kX2ludGVybmFsX3Rocm93KTogRGVsZXRlIHVudXNlZCB2YXIgUEFSQU1TLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IERlbGV0ZSB1bnVzZWQgdmFyIENMRUFOVVAuCgkoZW1pdF9leGNlcHRpb25fdGFibGUpOiBEZWxldGUgdW51c2VkIHZhciBFSF9OT0RFX0RFQ0wuCgkoZXhwYW5kX2J1aWx0aW5fdGhyb3cpOiBEZWxldGUgdW51c2VkIHZhcnMgVU5XSU5EX0FORF9USFJPVyBhbmQKCUdPVE9fVU5XSU5EX0FORF9USFJPVy4gIERvbid0IHNldCB0aGVtLgoJKGVuZF9laF91bndpbmRlcik6IEFkZCB0b3AgZGVjbC4KCShwb3BfcnRsX2Zyb21fcGVybSk6IERlbGV0ZSB1bnVzZWQgZGVjbCBvZiBQRVJNQU5FTlRfT0JTVEFDSy4KCShleGNlcHRpb25fc2VjdGlvbiwgcHVzaF9ydGxfcGVybSwgZG9fZnVuY3Rpb25fY2FsbCwKCWxhbmdfaW50ZXJpbV9laCwgcHVzaF9laF9jbGVhbnVwLCBlaF9vdXRlcl9jb250ZXh0LAoJZXhwYW5kX2VuZF9laF9zcGVjLCBlbmRfZWhfdW53aW5kZXIpOiBEZWNsYXJlIGFzIHN0YXRpYy4KCShzYXZlZF9wYywgc2F2ZWRfdGhyb3dfdHlwZSwgc2F2ZWRfdGhyb3dfdmFsdWUsIHNhdmVkX2NsZWFudXAsCgl0aHJvd191c2VkKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoZXhwYW5kX2VuZF9laF9zcGVjKTogRGVsZXRlIHByb3RvdHlwZS4KCgkqIHNlYXJjaC5jIChkZnNfbWFyaywgZGZzX21hcmtfdnRhYmxlX3BhdGgsCglkZnNfdW5tYXJrX3Z0YWJsZV9wYXRoLCBkZnNfbWFya19uZXdfdnRhYmxlLAoJZGZzX3VubWFya19uZXdfdnRhYmxlLCBkZnNfY2xlYXJfc2VhcmNoX3Nsb3QsCglkZnNfc2VhcmNoX3Nsb3Rfbm9uZW1wdHlfcCwgYmZzX21hcmtlZHAsIGJmc191bm1hcmtlZHAsCgliZnNfbWFya2VkX3Z0YWJsZV9wYXRocCwgYmZzX3VubWFya2VkX3Z0YWJsZV9wYXRocCwKCWJmc19tYXJrZWRfbmV3X3Z0YWJsZXAsIGJmc191bm1hcmtlZF9uZXdfdnRhYmxlcCk6ICNpZiAwIHVudXNlZAoJZnVuY3Rpb25zLgoJKG5fZmllbGRzX3NlYXJjaGVkLCBuX2NhbGxzX2xvb2t1cF9maWVsZCwgbl9jYWxsc19sb29rdXBfZmllbGRfMSwKCW5fY2FsbHNfbG9va3VwX2ZuZmllbGRzLCBuX2NhbGxzX2xvb2t1cF9mbmZpZWxkc18xLAoJbl9jYWxsc19nZXRfYmFzZV90eXBlLCBuX291dGVyX2ZpZWxkc19zZWFyY2hlZCwgbl9jb250ZXh0c19zYXZlZCk6CglPbmx5IGRlZmluZSAjaWZkZWYgR0FUSEVSX1NUQVRJU1RJQ1MuCgkocmVpbml0X3NlYXJjaF9zdGF0aXN0aWNzKTogT25seSBpbml0IHNvbWUgdmFycyBpZiBHQVRIRVJfU1RBVElTVElDUwoJaXMgZGVmaW5lZC4KCSh2YmFzZV9kZWNsKTogRGVsZXRlIHZhciBkZWZpbml0aW9uLgoJKGluaXRfc2VhcmNoKTogRGVsZXRlIG9sZCBkZWNsLgoJKGluaXRfdmJhc2VfcG9pbnRlcnMpOiBEZWxldGUgYnVpbGRpbmcgb2YgVkJBU0VfREVDTCwgc2luY2UgaXQncwoJbmV2ZXIgYWN0dWFsbHkgdXNlZC4KCShleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IERlbGV0ZSBpbml0IG9mIFZCQVNFX0RFQ0wuCgkoZ2V0X2Jhc2VfZGlzdGFuY2VfcmVjdXJzaXZlKTogRGVsZXRlIHVudXNlZCBmb3VydGggYXJnCglCQVNFVFlQRV9QQVRILiAgRml4IGNhbGwgLgoJKGdldF9iYXNlX2Rpc3RhbmNlKTogRml4IGNhbGwuCgkocHVzaF9jbGFzc19kZWNscyk6IERlbGV0ZSB1bnVzZWQgdmFyIElELgoJKG1ha2VfbWVtb2l6ZWRfdGFibGVfZW50cnkpOiBEZWNsYXJlIGFzIHN0YXRpYy4KCShicmVhZHRoX2ZpcnN0X3NlYXJjaCk6IERlY2xhcmUgYXMgc3RhdGljLgoJKHRyZWVfaGFzX2FueV9kZXN0cnVjdG9yX3ApOiBEZWNsYXJlIGFzIHN0YXRpYy4KCShwb3BfY2xhc3NfZGVjbHMpOiBEZWxldGUgdW51c2VkIGFyZyBwb3BfY2xhc3NfZGVjbHMuCgkqIGNsYXNzLmMgKHBvcGNsYXNzKTogRml4IGNhbGwgdG8gcG9wX2NsYXNzX2RlY2xzLgoJKiBjcC10cmVlLmggKG1ha2VfbWVtb2l6ZWRfdGFibGVfZW50cnksIGJyZWFkdGhfZmlyc3Rfc2VhcmNoLAoJdHJlZV9oYXNfYW55X2Rlc3RydWN0b3JfcCk6IERlbGV0ZSBwcm90b3R5cGVzLgoKCSogcnR0aS5jIChidWlsZF9wdG1mX2Rlc2MpOiBEZWxldGUgdW51c2VkIGFyZyBUWVBFLgoJKGJ1aWxkX3RfZGVzYyk6IEZpeCBjYWxsLiAgRGVsZXRlIHVudXNlZCB2YXJzIEVMRU1TIGFuZCBUVC4KCShidWlsZF9keW5hbWljX2Nhc3QpOiBEZWxldGUgdW51c2VkIGxvY2FsIHZhcnMgVE1QMSBhbmQgUkVUVkFMLgoJKGJ1aWxkX3VzZXJfZGVzYyk6IERlbGV0ZSB1bnVzZWQgdmFyIFQuCgkoYnVpbGRfY2xhc3NfZGVzYyk6IERlbGV0ZSB1bnVzZWQgdmFycyBUIGFuZCBPRkYuCgkoYnVpbGRfdF9kZXNjKTogRGVsZXRlIHVudXNlZCB2YXIgTkFNRV9TVFJJTkcuCgkoYnVpbGRfaGVhZG9mKTogTWFrZSBzdGF0aWMuCgkoZ2V0X2JhZF9jYXN0X25vZGUpOiBMaWtld2lzZS4KCShnZXRfZGVmX3RvX2ZvbGxvdyk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGluaXRfdHlwZV9kZXNjKTogQWRkIHByb3RvdHlwZS4KCShidWlsZF9oZWFkb2YpOiBSZW1vdmUgcHJvdG90eXBlLgoKVGh1IEZlYiAyMiAwMDo1NDoyMiAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBwdC5jICh0c3Vic3QpOiBPbmx5IGxvb2sgZm9yIG1hdGNoaW5nIGRlY2xzIGF0IGZpbGUgc2NvcGUgZm9yCglub24tbWVtYmVyIGZ1bmN0aW9ucy4KCgkqIGNhbGwuYyAoYnVpbGRfc2NvcGVkX21ldGhvZF9jYWxsKTogSGFuZGxlIHNjb3BlZCBkZXN0cnVjdG9yCgljYWxscyBpbiB0ZW1wbGF0ZXMuCgoJKiBkZWNsLmMgKCpfdG9wX2xldmVsKTogQWxzbyBzYXZlIHByZXZpb3VzX2NsYXNzX3ZhbHVlcy4KCgkqIHB0LmMgKHRzdWJzdF9leHByKTogU3VwcG9ydCBkbyB7fSB3aGlsZSBsb29wcy4KCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBMaWtld2lzZS4KCSogdHJlZS5kZWY6IExpa2V3aXNlLgoKCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2lkZW50aWZpZXIpOiBGb3IgYSBjbGFzcyBuZXN0ZWQgaW4gYQoJdGVtcGxhdGUgY2xhc3MsIGRvbid0IG1hbmdsZSBpbiB0aGUgdGVtcGxhdGUgcGFybXMgZnJvbSBvdXIKCWNvbnRleHQuCgoJKiBsZXguYywgY3AtdHJlZS5oOiBSZW1vdmUgc3VwcG9ydCBmb3IgdGVtcGxhdGUgaW5zdGFudGlhdGlvbnMgaW4KCXRoZSBwZW5kaW5nX2lubGluZXMgY29kZS4KCSogcHQuYzogUmVtb3ZlIGRlYWQgZnVuY3Rpb25zIGFuZCB1bnVzZWQgYXJndW1lbnRzLgoJKHVzZXNfdGVtcGxhdGVfcGFybXMpOiBUWVBFTkFNRV9UWVBFcyBhbHdheXMgdXNlIHRlbXBsYXRlIHBhcm1zLgoJKiBwYXJzZS55OiBTdG9wIHBhc3NpbmcgYW55dGhpbmcgdG8gZW5kX3RlbXBsYXRlX2RlY2wuCgkqIHRyZWUuYyAocHJpbnRfbGFuZ19zdGF0aXN0aWNzKTogT25seSBwcmludCB0aW5zdCBpbmZvICNpZmRlZgoJR0FUSEVSX1NUQVRJU1RJQ1MuCgpXZWQgRmViIDIxIDE2OjU3OjMzIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGluaXQuYyAoZXhwYW5kX3JlY3Vyc2l2ZV9pbml0eyxfMX0pOiBEZWxldGUgZGVjbHMuCgkoc29ydF9tZW1iZXJfaW5pdCk6IERlbGV0ZSB1bnVzZWQgdmFyIElOSVQuCgkoZW1pdF9iYXNlX2luaXQpOiBEZWxldGUgdW51c2VkIHZhciBYLgoJKGJ1aWxkX29mZnNldF9yZWYpOiBEZWxldGUgdW51c2VkIHZhciBDTkFNRS4KCShzb3J0X21lbWJlcl9pbml0KTogRGVsZXRlIHVudXNlZCB2YXIgRklFTERTX1RPX1VOTUFSSy4KCShlbWl0X2Jhc2VfaW5pdCk6IERlbGV0ZSB1bnVzZWQgbG9jYWwgdmFyIEJBU0UuICBEZWxldGUgZXh0ZXJuCglkZWNsIG9mIElOX0NIQVJHRV9JREVOVElGSUVSLgoJKGJ1aWxkX2RlbGV0ZSk6IERlbGV0ZSB1bnVzZWQgbG9jYWwgdmFyIFZJUlRVQUxfU0laRS4KCgkqIGluaXQuYyAoYnVpbGRfdmVjX2RlbGV0ZSk6IERlbGV0ZSB1bnVzZWQgdGhpcmQgYXJnIEVMVF9TSVpFLgoJKGJ1aWxkX2RlbGV0ZSk6IEZpeCBjYWxsLgoJKiBkZWNsMi5jIChkZWxldGVfc2FuaXR5KTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoYnVpbGRfdmVjX2RlbGV0ZSk6IFVwZGF0ZSBwcm90b3R5cGUuCgoJKiB0eXBlY2suYyAoY29tbW9uX2Jhc2VfdHlwZSk6IERlbGV0ZSB1bnVzZWQgdmFyIFRNUC4KCShidWlsZF9iaW5hcnlfb3ApOiBEZWxldGUgbG9jYWwgdmFyIEFSR1NfU0FWRS4KCShidWlsZF9hcnJheV9yZWYpOiBEZWxldGUgdW51c2VkIHZhciBJVFlQRS4KCShjX2V4cGFuZF9yZXR1cm4pOiBEZWxldGUgdW51c2VkIHZhciBVU0VfVEVNUC4KCgkqIHR5cGVjay5jIChjb21wZXhjZXB0dHlwZXMpOiBEZWxldGUgdW51c2VkIGFyZyBTVFJJQ1QuCgkoY29tcHR5cGVzKTogRml4IGNhbGxzLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKGNvbXBleGNlcHR0eXBlcyk6IERlbGV0ZSBleHRyYSBhcmcuCgoJKiBkZWNsMi5jIChjaGVja19jbGFzc2ZuKTogRGVsZXRlIHVudXNlZCBzZWNvbmQgYXJnIENOQU1FLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wsIGdyb2tmbmRlY2wpOiBGaXggY2FsbHMuCgkqIGluaXQuYyAoZG9fZnJpZW5kKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoY2hlY2tfY2xhc3Nmbik6IFVwZGF0ZSBwcm90b3R5cGUuCgoJKiBjcC10cmVlLmggKHNpZ25hdHVyZV9lcnJvciwgaW1wb3J0X2V4cG9ydF92dGFibGUsCglhcHBlbmRfc2lnbmF0dXJlX2ZpZWxkcywgaWRfaW5fY3VycmVudF9jbGFzcywgbWFya191c2VkLAoJY29weV9hc3NpZ25tZW50X2FyZ19wKTogQWRkIGRlY2xzLgoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBEZWxldGUgZGVjbC4KCgkqIGNsYXNzLmMgKG5fKik6IFdyYXAgd2l0aCAjaWZkZWYgR0FUSEVSX1NUQVRJU1RJQ1MuCgoJKiBjbGFzcy5jIChnZXRfdnRhYmxlX2VudHJ5KTogRGlzYWJsZSB1bnVzZWQgZnVuY3Rpb24uCgkoZG9pbmdfaGFyZF92aXJ0dWFscyk6IERlbGV0ZSB1bnVzZWQgc3RhdGljIGdsb2JhbCB2YXIuCgkoZmluaXNoX3N0cnVjdF8xKTogRG9uJ3QgaW5pdCBET0lOR19IQVJEX1ZJUlRVQUxTLgoJKHByZXBhcmVfZnJlc2hfdnRhYmxlKTogRGVsZXRlIHVudXNlZCB2YXJzIFBBVEggYW5kIFJFU1VMVC4KCShvdmVycmlkZXMpOiBEZWxldGUgdW51c2VkIHZhcnMgUkVUVFlQRSBhbmQgQkFTRV9SRVRUWVBFLgoJKG1vZGlmeV9vbmVfdnRhYmxlKTogRGVsZXRlIHVudXNlZCB2YXIgT0xEX1JUVEkuCgkoZmluaXNoX3N0cnVjdF9hbm9uKTogRGVsZXRlIHVudXNlZCB2YXJzIE9GRlNFVCBhbmQgWC4KCShmaW5pc2hfc3RydWN0X2JpdHMpOiBEZWxldGUgdW51c2VkIHZhciBNRVRIT0RfVkVDLgoJKGdldF9iYXNlZm5kZWNscyk6IERlbGV0ZSB1bnVzZWQgdmFyIFBVUlBPU0UuICBEZWxldGUgdW51c2VkCglmb3Itc2NvcGUgbG9jYWwgdmFyaWFibGUgTUVUSE9EUy4KCgkqIGNhbGwuYyAodXNlcl9oYXJzaG5lc3MpOiBEZWxldGUgdW51c2VkL3VubmVlZGVkIGFyZyBQQVJNLgoJKGlkZWFsX2NhbmRpZGF0ZSk6IERlbGV0ZSB1bnVzZWQgYXJncyBCQVNFVFlQRSBhbmQgUEFSTVMuCgkoYnVpbGRfbWV0aG9kX2NhbGwpOiBEZWxldGUgdW51c2VkIGFyZ3MgcGFzc2VkIGludG8gaWRlYWxfY2FuZGlkYXRlLgoJKGJ1aWxkX292ZXJsb2FkX2NhbGxfcmVhbCk6IExpa2V3aXNlLiAgRGVsZXRlIHVudXNlZCB2YXIgT1ZFUkxPQURfTkFNRS4KCSogY3AtdHJlZS5oIChzeW50aGVzaXplX21ldGhvZCk6IEFkZCBkZWNsLgoKCSogZGVjbC5jIChub3RlX2xldmVsX2Zvcl9mb3IpOiBHaXZlIHZvaWQgcmV0dXJuIHR5cGUuCgkocHVzaGRlY2xfbm9uY2xhc3NfbGV2ZWwpOiBMaWtld2lzZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBEZWxldGUgdW51c2VkIHZhcnMgVkZJRUxEUyBhbmQgQUxMT0NBVEVEX1RISVMuCgkocG9wbGV2ZWwpOiBEZWxldGUgdW51c2VkIHZhciBJTVBMSUNJVF9UUllfQkxPQ0suCgkoc3VzcGVuZF9iaW5kaW5nX2xldmVsKTogRGVsZXRlIHVudXNlZCB2YXIgTEVWRUwuCgkoZHVwbGljYXRlX2RlY2xzKTogRGVsZXRlIHVudXNlZCB2YXIgQ1RZUEUuCgkoZHVwbGljYXRlX2RlY2xzKTogRGVsZXRlIHVudXNlZCB2YXIgUFJFVklPVVNfQ19ERUNMLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRGVsZXRlIHVudXNlZCB2YXJzIEZMT0FUX0VORExJTksgYW5kCglQVFJfRU5ETElOSy4KCShncm9rZGVjbGFyYXRvcik6IERlbGV0ZSB1bnVzZWQgdmFyIEMuCgkoZ3Jva2RlY2xhcmF0b3IpOiBEZWxldGUgdW51c2VkIHZhciBTSVpFX1ZBUklFUy4KCShncm9rcGFybXMpOiBEZWxldGUgdW51c2VkIHZhciBTQVdfVk9JRC4KCShzdGFydF9mdW5jdGlvbik6IERlbGV0ZSB1bnVzZWQgdmFyIE9MRERFQ0wuCgkoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IERlbGV0ZSB1bnVzZWQgdmFyCglSRU1PVkVfSU1QTElDSVRfSU1NRURJQVRFTFkuCgoJKiBjcC10cmVlLmggKHB1c2hkZWNsX25vbmNsYXNzX2xldmVsKTogRml4IHByb3RvdHlwZS4KCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBVcGRhdGUgdG8gMTIgc2hpZnQvcmVkdWNlLgoKV2VkIEZlYiAyMSAwMDowNjoxNyAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGJ1aWxkX21pbik6IFNldCBUUkVFX0NPTVBMRVhJVFkgdG8gbGluZW5vLgoJKGJ1aWxkX21pbl9udCk6IExpa2V3aXNlLgoJKiBwdC5jIChkb19wdXNobGV2ZWwpOiBFbWl0IGxpbmUgbm90ZS4KCShkb19wb3BsZXZlbCk6IFJldHVybiB3aGF0IHdlIGdldCBmcm9tIHBvcGxldmVsLgoJKHRzdWJzdF9leHByKTogU2V0IGxpbmVubyBmcm9tIFRSRUVfQ09NUExFWElUWSBpbiBzdG10IG5vZGVzLgoJKiBwYXJzZS55OiBVc2UgZG9fcHVzaGxldmVsIGFuZCBkb19wb3BsZXZlbC4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGRvX3BvcGxldmVsLgoKCSogY3AtdHJlZS5oOiBEZWNsYXJlIGF0X2VvZi4KCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IFBhc3MgaXQgdG8gcmVzdF9vZl9kZWNsX2NvbXBpbGF0aW9uLgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2RlY2wpOiBSZW5hbWVkIGZyb20gaW1wb3J0X2V4cG9ydF9pbmxpbmUuCgkoZmluaXNoX2ZpbGUpOiBDYWxsIGl0IHRvIGRvIGludGVyZmFjZSBoYW5kbGluZyBmb3Igc3RhdGljcy4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBDYWxsIG1hcmtfdXNlZCBvbiB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucwoJdXNlZCBoZXJlLgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBEb24ndCBlbWl0IHN0YXRpY3Mgd2UgY2FuJ3QgZ2VuZXJhdGUuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBEb24ndCBzZXQgaW50ZXJmYWNlIG9uIGluc3RhbnRpYXRpb25zCgl3ZSBjYW4ndCBnZW5lcmF0ZS4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IHRpbnN0X2xldmVsKTogQ2hhbmdlICdjbGFzc25hbWUnIHRvICdkZWNsJy4KCSogdHJlZS5jIChwcmludF9sYW5nX3N0YXRpc3RpY3MpOiBQcmludCBtYXggdGVtcGxhdGUgZGVwdGguCgkqIHB0LmMgKHB1c2hfdGluc3RfbGV2ZWwpOiBEdW1wIGVudGlyZSBpbnN0YW50aWF0aW9uIGNvbnRleHQuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBVc2UgaXQgYW5kIHBvcF90aW5zdF9sZXZlbC4KCShpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgoJKiBjYWxsLmMgY2xhc3MuYyBjcC10cmVlLmggZGVjbC5jIGRlY2wyLmMgZXJyb3IuYyBsZXguYyBtZXRob2QuYwoJcHQuYyBwdHJlZS5jIHRyZWUuZGVmOiBSZW1vdmUgYWxsIHRyYWNlcyBvZiBVTklOU1RBTlRJQVRFRF9QX1RZUEUuCgpUdWUgRmViIDIwIDE4OjIxOjUxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyBjbGFzcy5jIGNwLXRyZWUuaCBjdnQuYyBkZWNsLmMgZGVjbDIuYyBlcnJvci5jIGV4cHIuYwoJaW5pdC5jIGxleC5jIG1ldGhvZC5jIHBhcnNlLnkgcHQuYyByZXBvLmMgc2VhcmNoLmMgc3Bldy5jIHRyZWUuYwoJdHJlZS5kZWYgdHlwZWNrLmMgdHlwZWNrMi5jIHhyZWYuYzogTWFzc2l2ZSwgc3lzdGVtaWMgY2hhbmdlcyBmb3IKCXRoZSBuZXcgdGVtcGxhdGUgaW1wbGVtZW50YXRpb24uCgpUdWUgRmViIDIwIDE3OjE0OjI5IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGNoZWNrX2NwX2Nhc2VfdmFsdWUpOiBVc2UgU1RSSVBfVFlQRV9OT1BTLgoKVGh1IEZlYiAxNSAxODo0NDo0MiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogRGVsYXkgZW1pdHRpbmcgdGhlIGRlYnVnIGluZm9ybWF0aW9uIGZvcgoJYSB0eXBlZGVmIHRoYXQgaGFzIGJlZW4gaW5zdGFsbGVkIGFzIHRoZSBjYW5vbmljYWwgdHlwZWRlZiwgaWYgdGhlCgl0eXBlIGhhcyBub3QgeWV0IGJlZW4gZGVmaW5lZC4KClRodSBGZWIgMTUgMDk6Mzk6MDggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogU3RpbGwgY2FsbCBwb3BfbmVzdGVkX2NsYXNzIGZvciBhY2Nlc3MgZGVjbHMuCgpXZWQgRmViIDE0IDE3OjMwOjA0IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAobG9va3VwX2xhYmVsKTogQ2FsbCBsYWJlbF9ydHguCgoJKiBkZWNsLmMgKG1ha2VfYmluZGluZ19sZXZlbCk6IE5ldyBmdW5jdGlvbi4KCShwdXNobGV2ZWwsIHB1c2hsZXZlbF9jbGFzcyk6IENhbGwgaXQgaW5zdGVhZCBvZiBleHBsaWNpdAoJZHVwbGljYXRlIGNhbGxzIHRvIHhtYWxsb2MuCgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRGVsZXRlIHVzZWxlc3MgYnVpbGRfcG9pbnRlcl90eXBlCgljYWxsLgoKCSogZGVjbC5jIChmbG9hdF9mdHlwZV9mbG9hdCwgbGRvdWJsZV9mdHlwZV9sZG91YmxlKTogQWRkIGRlZmluaXRpb25zLgoJKHNpemV0X2Z0eXBlX3N0cmluZyk6IERlbGV0ZSB2YXJpYWJsZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkZCBidWlsdC1pbiBmdW5jdGlvbnMgZmFic2YsIGZhYnNsLAoJc3FydGYsIHNxcnRsLCBzaW5mLCBzaW4sIHNpbmwsIGNvc2YsIGNvcywgY29zbC4gIE5ldyBsb2NhbAoJdmFyaWFibGUgc3RybGVuX2Z0eXBlLCB1c2VkIGZvciBzdHJsZW4uCgpXZWQgRmViIDE0IDE2OjIxOjI1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocHVzaF90b190b3BfbGV2ZWwpOiBTdGFydCBmcm9tIGN1cnJlbnRfYmluZGluZ19sZXZlbAoJYWdhaW4gZm9yIG5vdzsgdGhlIHN0bCBoYWNrcyBkZXBlbmQgb24gZysrIGJlaW5nIGJyb2tlbiBpbiB0aGlzCgl3YXksIGFuZCBpdCdsbCBiZSBmaXhlZCBpbiB0aGUgdGVtcGxhdGUgcmV3cml0ZS4KCgkqIHRyZWUuZGVmOiBBZGQgVVNJTkdfREVDTC4KCSogZGVjbDIuYyAoZG9fY2xhc3NfdXNpbmdfZGVjbCk6IEltcGxlbWVudC4KCShncm9rZmllbGQpOiBQYXNzIGFjY2VzcyBkZWNscyBvZmYgdG8gZG9fY2xhc3NfdXNpbmdfZGVjbCBpbnN0ZWFkIG9mCglncm9rZGVjbGFyYXRvci4KCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogSGFuZGxlIFVTSU5HX0RFQ0xzLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogUmVtb3ZlIGNvZGUgZm9yIGhhbmRsaW5nIGFjY2VzcyBkZWNscy4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogQWRqdXN0IGFjY29yZGluZ2x5LCB0cmVhdCB1c2luZy1kZWNscwoJYXMgYWNjZXNzIGRlY2xzIGZvciBub3cuCgkoZmluaXNoX3N0cnVjdCk6IERvbid0IGNoZWNrIFVTSU5HX0RFQ0xzIGZvciBvdGhlciB1c2VzIG9mIHRoZSBuYW1lLgoKCSogc2VhcmNoLmMgKGdldF9tYXRjaGluZ192aXJ0dWFsKTogVXNlIGNwX2Vycm9yX2F0LgoKV2VkIEZlYiAxNCAxMDozNjo1OCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogRGVmYXVsdCBDT01QX1RZUEVfQVRUUklCVVRFUyB0byAxLCB0bwoJbWF0Y2ggYy10eXBlY2suYy4KCShzZWxmX3Byb21vdGluZ19hcmdzX3ApOiBNb3ZlIHRoZSBjaGVjayB0aGF0IFRZUEUgaXMgbm9uLW5pbAoJYmVmb3JlIHRyeWluZyB0byBsb29rIGF0IGl0cyBtYWluIHZhcmlhbnQuCgkodW5zaWduZWRfdHlwZSwgc2lnbmVkX3R5cGUpOiBBZGQgY2hlY2tpbmcgb2YgREkvU0kvSEkvUUkgbm9kZXMuCgoJKiBjcC10cmVlLmggKERFQ0xfV0FJVElOR19GUklFTkRTLCBTRVRfREVDTF9XQUlUSU5HX0ZSSUVORFMpOgoJRGVsZXRlIG1hY3Jvcy4KCSogaW5pdC5jICh4cmVmX2ZyaWVuZCwgZW1icmFjZV93YWl0aW5nX2ZyaWVuZHMpOiBEZWxldGUgZnVuY3Rpb25zLgoJKGRvX2ZyaWVuZCk6IERlbGV0ZSBjYWxsIHRvIHhyZWZfZnJpZW5kLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBEZWxldGUgY2FsbCB0byBlbWJyYWNlX3dhaXRpbmdfZnJpZW5kcy4KCgkqIHR5cGVjay5jIChjb252ZXJ0X3NlcXVlbmNlKTogI2lmIDAgdW51c2VkIGZ1bmN0aW9uLgoKCSogY3AtdHJlZS5oIChERUNMX0lOX01FTU9SWV9QKTogTmV3IG1hY3JvIHcvIHRoZSBjaGVjayB0aGF0IHVzZWQgdG8KCWJlIGluIGRlY2xfaW5fbWVtb3J5X3AuCgkoZGVjbF9pbl9tZW1vcnlfcCk6IERlbGV0ZSBkZWNsLgoJKiBleHByLmMgKGRlY2xfaW5fbWVtb3J5X3ApOiBEZWxldGUgZm4uCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogVXNlIERFQ0xfSU5fTUVNT1JZX1AuCgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogVXNlIERFQ0xfSU5fTUVNT1JZX1AuCgpUdWUgRmViIDEzIDEyOjUxOjIxIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IENoZWNrIGZvciBhIHB1cmUtc3BlY2lmaWVyIG9uIGEKCW5vbi12aXJ0dWFsIGZ1bmN0aW9uIGhlcmUuCgoJKiBkZWNsMi5jIChncm9rX2Z1bmN0aW9uX2luaXQpOiBEb24ndCBjaGVjayB3aGV0aGVyIHRoZSBmdW5jdGlvbgoJaXMgdmlydHVhbCBoZXJlLgoJKGdyb2tmaWVsZCk6IERvbid0IGNhbGwgY2hlY2tfZm9yX292ZXJyaWRlIGhlcmUuCgoJKiBkZWNsLmMgKHB1c2hfdG9fdG9wX2xldmVsKTogU3RhcnQgZnJvbSBpbm5lcl9iaW5kaW5nX2xldmVsLAoJY2hlY2sgY2xhc3Nfc2hhZG93ZWQgaW4gY2xhc3MgbGV2ZWxzLgoKTW9uIEZlYiAxMiAxNzo0Njo1OSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHJlc3VtZV9sZXZlbCk6IElnbm9yZSB0aGluZ3MgdGhhdCBkb24ndCBoYXZlIG5hbWVzLCBpbnN0ZWFkCglvZiBjb3JlIGR1bXBpbmcuCgpNb24gRmViIDEyIDE1OjQ3OjQ0IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IFNldCBERUNMX1ZJTkRFWCBwcm9wZXJseSBmb3IgRlVOQ1RJT05fREVDTHMuCgpTYXQgRmViIDEwIDE3OjU5OjQ1IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFNldCBERUNMX1ZJTkRFWCBwcm9wZXJseSBvbiBhCglzeW50aGVzaXplZCBkdG9yLgoKCSogcGFyc2UueSAoY29tcGxldGVfdHlwZV9uYW1lKTogQmluZCBnbG9iYWxfc2NvcGUgZWFybGllci4KCShjb21wbGV4X3R5cGVfbmFtZSk6IExpa2V3aXNlLgoJKHF1YWxpZmllZF90eXBlX25hbWUpOiBSZW1vdmUuCgpUaHUgRmViICA4IDE1OjE1OjE0IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IE1vdmUgY29kZSB0aGF0IGxvb2tzIGZvciB2aXJ0dWFscyBpbiBiYXNlCgljbGFzc2VzLi4uCgkqIGNsYXNzLmMgKGNoZWNrX2Zvcl9vdmVycmlkZSk6IC4uLiB0byBhIG5ldyBmdW5jdGlvbi4KCShmaW5pc2hfc3RydWN0XzEpOiBDYWxsIGl0LgoKCSogY3AtdHJlZS5oOiBEZWNsYXJlIHdhcm5fc2lnbl9jb21wYXJlLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBDaGVjayB3YXJuX3NpZ25fY29tcGFyZQoJcmF0aGVyIHRoYW4gZXh0cmFfd2FybmluZ3MgdG8gZGVjaWRlIHdoZXRoZXIgdG8gd2FybiBhYm91dAoJY29tcGFyaXNvbiBvZiBzaWduZWQgYW5kIHVuc2lnbmVkLgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogSGFuZGxlIHdhcm5fc2lnbl9jb21wYXJlLiAgLVdhbGwKCWltcGxpZXMgLVdzaWduLWNvbXBhcmUuICAtV2FsbCBkb2Vzbid0IGltcGx5IC1XLgoKV2VkIEZlYiAgNyAxNToyNzo1NyAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IEZpeCB0byBoYW5kbGUgYW5vbiB1bmlvbnMgaW4gYmFzZQoJY2xhc3NlcyBhcyB3ZWxsLgoKV2VkIEZlYiAgNyAxNDoyOToxMiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChyZXNvbHZlc190b19maXhlZF90eXBlX3ApOiBEZWxldGUgY29kZSBkZWFsaW5nIHdpdGgKCWEgV0lUSF9DTEVBTlVQX0VYUFIsIHNpbmNlIHdlIGRvbid0IGdlbmVyYXRlIHRoZW0gYW55IG1vcmUuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBMaWtld2lzZS4KCSogZGVjbC5jIChncm9rX3JlZmVyZW5jZV9pbml0KTogTGlrZXdpc2UuCgkoY3BfZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF9leHByKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAocmVhbF9sdmFsdWVfcCk6IExpa2V3aXNlLgoJKGx2YWx1ZV9wKTogTGlrZXdpc2UuCgkoYnVpbGRfY3BsdXNfbmV3KTogTGlrZXdpc2UuCgkodW5zYXZlX2V4cHJfbm93KTogTGlrZXdpc2UuCgkqIHR5cGVjay5jICh1bmFyeV9jb21wbGV4X2x2YWx1ZSwgYnVpbGRfbW9kaWZ5X2V4cHIsCgljX2V4cGFuZF9yZXR1cm4pOiBMaWtld2lzZS4KClR1ZSBGZWIgIDYgMTM6Mzk6MjIgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCU1ha2UgdGhlIEMrKyBmcm9udC1lbmQgcGF5IGF0dGVudGlvbiB0byBhdHRyaWJ1dGVzIGZvciBzdHJ1Y3R1cmVzLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogTmV3IGFyZ3VtZW50IEFUVFJJQlVURVMsIHBhc3NlZCBkb3duIGludG8KCWZpbmlzaF9zdHJ1Y3RfMS4KCShmaW5pc2hfc3RydWN0XzEpOiBOZXcgYXJndW1lbnQgQVRUUklCVVRFUzsgY2FsbCBjcGx1c19kZWNsX2F0dHJpYnV0ZXMuCglUYWtlIG91dCBvbGQgcm91bmRfdXBfc2l6ZSB1c2UgYW5kIHNldHRpbmcgdGhlIERFQ0xfQUxJR04gcG9zc2libHkKCXVzaW5nIGl0LiAgVGFrZSBvdXQgc2V0dGluZyBvZiBUWVBFX0FMSUdOIHRvIHJvdW5kX3VwX3NpemUsIHdoaWNoCgljYW4gb3ZlcnJpZGUgd2hhdCB0aGUgYXR0cmlidXRlIHNldC4KCSogY3AtdHJlZS5oIChmaW5pc2hfc3RydWN0KTogVXBkYXRlIHByb3RvdHlwZS4KCSogcGFyc2UueSAodGVtcGxhdGVfaW5zdGFudGlhdGVfb25jZSk6IFBhc3MgYSBOVUxMX1RSRUUgZm9yIHRoZQoJYXR0cmlidXRlcyB0byBmaW5pc2hfc3RydWN0LgoJKHN0cnVjdHNwKTogRm9yIGEgQ0xBU1MgZGVjbCwgYWRkIG1heWJlX2F0dHJpYnV0ZSB0byBydWxlIGFuZCBwYXNzIHRoYXQKCXZhbHVlIGRvd24gaW50byBmaW5pc2hfc3RydWN0LgoJKiBNYWtlZmlsZS5pbiAoQ09ORkxJQ1RTKTogU3dpdGNoIHRvIDcgc2hpZnQvcmVkdWNlIGNvbmZsaWN0cy4KClR1ZSBGZWIgIDYgMTM6MTI6MTUgMTk5NiAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGthbGVzc2luLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHBvcGxldmVsKTogIFJlLXdvcmQgZGVhZCBmb3IgbG9jYWwgaGFuZGxpbmcuCgkocHVzaGRlY2wpOiAgUmVtb3ZlIHVzZWxlc3MgREVDTF9ERUFEX0ZPUl9MT0NBTCB0ZXN0LgoJKGNwX2ZpbmlzaF9kZWNsKTogIElmIGlzX2Zvcl9zY29wZSwgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgc28KCXdlIGNhbiBkaXNhYmxlIGlzX2Zvcl9zY29wZS4gIE90aGVyd2lzZSwgcHJlc2VydmVfdGVtcF9zbG90cy4KCgkqIGxleC5jIChkb19pZGVudGlmaWVyKTogIFVzZSBnbG9iYWwgYmluZGluZyBpbiBwcmVmZXJlbmNlIG9mCglkZWFkIGZvciBsb2NhbCB2YXJpYWJsZS4KCk1vbiBGZWIgIDUgMTc6NDY6NDYgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChpbml0aWFsaXppbmdfY29udGV4dCk6IEhhbmRsZSBhbm9uIHVuaW9uIGNoYW5nZXMsIHRoZQoJY29udGV4dCB3aGVyZSBmaWVsZHMgb2YgYW5vbiB1bmlvbnMgY2FuIGJlIGluaXRpYWxpemVkIG5vdyBoYXMgdG8gYmUKCWZvdW5kIGJ5IHdhbGtpbmcgdXAgdGhlIFRZUEVfQ09OVEVYVCBjaGFpbi4KCkZyaSBGZWIgIDIgMTQ6NTQ6MDQgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiAjaWZkZWYgb3V0IGNvZGUgdG8gc2V0IERFQ0xfQ09NTU9OCglpZiBBU01fT1VUUFVUeyxfQUxJR05FRH1fQlNTIGlzIGRlZmluZWQuCgkob2JzY3VyZV9jb21wbGV4X2luaXQpOiBJZiBic3MgaXMgc3VwcG9ydGVkLCBhbHdheXMgc2V0CglERUNMX0lOSVRJQUwgdG8gZXJyb3JfbWFya19ub2RlLgoKVGh1IEZlYiAgMSAxNjoxOTo1NiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGlzX2ZyaWVuZCk6IE1ha2Ugc3VyZSB0aGVyZSdzIGEgY29udGV4dCBiZWZvcmUgd2Ugc2VlIGlmCglpdCdzIGFuIGFnZ3IgdHlwZS4KClRodSBGZWIgIDEgMTU6NDQ6NTMgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChpc19mcmllbmQpOiBDbGFzc2VzIGFyZSBub3QgZnJpZW5kbHkgd2l0aCBuZXN0ZWQgY2xhc3Nlcy4KClRodSBGZWIgIDEgMTU6Mjc6MzcgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjaGFybWVkLmN5Z251cy5jb20+CgoJKiBsZXguYyAoY2hlY2tfbmV3bGluZSk6IFBhc3MgbGFzdCBjaGFyYWN0ZXIgcmVhZCB0byBIQU5ETEVfUFJBR01BLAoJYW5kIHJlY29yZCBpdHMgcmVzdWx0LgoKVGh1IEZlYiAgMSAwOToyNzowMSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2Fub24pOiBTd2l0Y2ggYXJvdW5kIGNvZGUgdG8gbm90IG1vdmUgYW5vbgoJdW5pb24gZWxlbWVudHMgYXJvdW5kLCBub3IgbWVzcyB1cCB0aGVpciBjb250ZXh0cywgbm9yIG9mZnNldHMsCglpbnN0ZWFkIHdlIG5vdyBidWlsZCB1cCB0aGUgcmlnaHQgbnVtYmVyIG9mIENPTVBPTkVOVF9SRUZzIGZvciBhbGwKCXRoZSBhbm9uIHVuaW9ucyB0aGF0IG1heSBiZSBwcmVzZW50IGF0IGJ1aWxkX2NvbXBvbmVudF9yZWYgdGltZS4KCSogdHlwZWNrLmMgKGxvb2t1cF9hbm9uX2ZpZWxkKTogTmV3IHJvdXRpbmUgdG8gaGFuZGxlIGZpZWxkIGxvb2t1cAoJb24gZmllbGRzIHdpdGhvdXQgbmFtZXMuICBXZSBmaW5kIHRoZW0sIGJhc2VkIHVwb24gdGhlaXIgdW5pcXVlIHR5cGUKCWluc3RlYWQuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogQWxsb3cgRklFTERfREVDTCBjb21wb25lbnRzLgoJSGFuZGxlIGZpbmRpbmcgY29tcG9uZW50cyBpbiBhbm9ueW1vdXMgdW5pb25zLCBhbmQgZW5zdXJlIHRoYXQgYQoJQ09NUE9ORU5UX1JFRiBpcyBidWlsdCBmb3IgZWFjaCBsZXZlbCBhcyBuZWNlc3NhcnkuCgpUdWUgSmFuIDMwIDE4OjE4OjIzIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBNYWtlIHRoZSBJTkRJUkVDVF9CSU5EIGNhc2UgY29tZSBhZnRlcgoJY29kZSB0aGF0IGVuc3VyZXMgdGhhdCBjb3B5IGN0b3JzIGFyZSB1c2VkIGlmIGFwcHJvcHJpYXRlLgoKVHVlIEphbiAzMCAxNzozNToxNCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX3ZlY19kZWxldGUpOiBPbmx5IGdpdmUgYW4gZXJyb3IgaWYgYmFzZSBpc24ndCBhbgoJZXJyb3JfbWFya19ub2RlLgoKTW9uIEphbiAyOSAxNzowOTowNiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBzcGV3LmMgKGRvX2FnZ3IpOiBgbmV3IHN0cnVjdCBTOycgaXNuJ3QgYSBmb3J3YXJkIGRlY2xhcmF0aW9uLgoJKHl5bGV4KTogSWYgd2Ugc2VlIGBuZXcnLCBrZWVwIHNsdXJwaW5nLgoKVGh1IEphbiAyNSAxODozMTozNiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBNb3ZlIGNvZGUgZm9yIGhhbmRsaW5nIGFub24gdW5pb25zLi4uCgkoZmluaXNoX3N0cnVjdF9hbm9uKTogdG8gaGVyZS4gIEZpeHVwIHNvIHRoYXQgd2UgZG8gdGhlIG9mZnNldAoJY2FsY3VsYXRpb25zIHJpZ2h0LCBhbmQgc28gdGhhdCB0aGUgZmllbGRzIGFyZSBwaHlzaWNhbGx5IG1vdmVkIHRvCgl0aGUgY29udGFpbmVycydzIGNoYWluLgoKVGh1IEphbiAyNSAxODoyNzozNyAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQXZvaWQgdHJ5aW5nIHRvIGdldCBhbiBvcGVyYW5kIG9mZiBhbgoJaWRlbnRpZmllciBub2RlLgoKV2VkIEphbiAyNCAxMToyNTozMCAxOTk2ICBKaW0gV2lsc29uICA8d2lsc29uQGNoZXN0bnV0LmN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAocG9pbnRlcl9pbnRfc3VtKTogVXNlIFRZUEVfUFJFQ0lTSU9OIChzaXpldHlwZSkgbm90CglQT0lOVEVSX1NJWkUgdG8gYWdyZWUgd2l0aCBleHByLmMuCgpUaHUgSmFuIDI1IDEzOjAxOjIzIDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGQpOiBEb24ndCByZXBvcnQgYW1iaWd1aXRpZXMgaWYgcHJvdGVjdCBpcyAwLAoJaW5zdGVhZCByZXR1cm4gTlVMTF9UUkVFLgoKV2VkIEphbiAyNCAxMzowMToyNiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBDYWxsIHdhcm5faGlkZGVuIGlmIHdlIHdhbnQgd2FybmluZ3MKCWFib3V0IG92ZXJsb2FkZWQgdmlydHVhbCBmdW5jdGlvbnMuCgkod2Fybl9oaWRkZW4pOiBOZXcgcm91dGluZSB0byB3YXJuIG9mIHZpcnR1YWwgZnVuY3Rpb25zIHRoYXQgYXJlCgloaWRkZW4gYnkgb3RoZXIgdmlydHVhbCBmdW5jdGlvbnMsIHRoYXQgYXJlIG5vdCBvdmVycmlkZGVuLgoJKGdldF9iYXNlZm5kZWNscyk6IE5ldyByb3V0aW5lLCB1c2VkIGJ5IHdhcm5faGlkZGVuLgoJKG1hcmtfb3ZlcnJpZGVycyk6IE5ldyByb3V0aW5lLCB1c2VkIGJ5IHdhcm5faGlkZGVuLgoJKiBzZWFyY2guYyAoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBSZW1vdmUgb2xkIHdhcm5pbmcgdGhhdCBqdXN0Cglpc24ndCB2ZXJ5IHVzZWZ1bC4KClR1ZSBKYW4gMjMgMTI6MjY6MTAgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChvdXRwdXRfYnVpbHRpbl90ZGVzY19lbnRyaWVzKTogI2lmIDAgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uCgoJKiB0eXBlY2suYyAobnVsbF9wdHJfY3N0X3ApOiBEZWxldGUgdW51c2VkIGZuLgoJKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfbWF5YmUpOiBEZWxldGUgdW51c2VkIGZuLgoKCSogZXhwci5jIChleHRyYWN0X2luaXQpOiAjaWYgMCB0aGUgY29kZSBhZnRlciB1bmNvbmRpdGlvbmFsIHJldHVybiAwCglmb3Igbm93LgoKCURlbGV0ZSBvbGQgY2FkaWxsYWMgY29kZS4KCSogZWRzZWwuYzogUmVtb3ZlIGZpbGUuCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX1NSQ1MpOiBUYWtlIGVkc2VsLmMgb2ZmIHRoZSBsaXN0LgoJKiBNYWtlZmlsZS5pbiAoQ1hYX09CSlMpOiBEZWxldGUgZWRzZWwuby4KCShlZHNlbC5vKTogRGVsZXRlIHJ1bGUuCgkqIGNwLXRyZWUuaCAoZmxhZ19jYWRpbGxhYyk6IERlbGV0ZSB2YXIgZGVjbC4KCSogbGFuZy1vcHRpb25zLmg6IERlbGV0ZSAiLWZjYWRpbGxhYyIgYW5kICItZm5vLWNhZGlsbGFjIi4KCSogZGVjbDIuYyAoZmxhZ19jYWRpbGxhYyk6IERlbGV0ZSB2YXIgZGVmaW5pdGlvbi4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBEZWxldGUgaGFuZGxpbmcgb2YgLWZjYWRpbGxhYyBhbmQgLWZuby1jYWRpbGxhYy4KCShncm9rZmllbGQpOiBEZWxldGUgY29kZSBkZXBlbmRpbmcgb24gZmxhZ19jYWRpbGxhYy4KCShmaW5pc2hfYW5vbl91bmlvbik6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShwdXNoY2xhc3MpOiBMaWtld2lzZS4KCShwb3BjbGFzcyk6IExpa2V3aXNlLgoJKHB1c2hfbGFuZ19jb250ZXh0KTogTGlrZXdpc2UuCgkocG9wX2xhbmdfY29udGV4dCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkoc3RhcnRfZGVjbCk6IExpa2V3aXNlLgoJKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkoeHJlZl90YWcpOiBMaWtld2lzZS4KCShmaW5pc2hfZW51bSk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0bXQpOiBMaWtld2lzZS4KCSogbGV4LmMgKGxhbmdfaW5pdCk6IExpa2V3aXNlLgoJKGNoZWNrX25ld2xpbmUpOiBMaWtld2lzZS4KCgkqIGxleC5jIChkb19wZW5kaW5nX2lubGluZXMpOiBEZWxldGUgc3ludGhlc2l6ZWQgbWV0aG9kIGtsdWRnZS4KCglEZWxldGUgZGVmdW5jdCwgYW5jaWVudCBnYXJiYWdlIGNvbGxlY3Rpb24gaW1wbGVtZW50YXRpb24uCgkqIHJ0dGkuYzogTmV3IGZpbGUgd2l0aCB0aGUgUlRUSSBzdHVmZiBmcm9tIGdjLmMuCgkqIGdjLmM6IFJlbW92ZWQgZmlsZSAobW92ZWQgdGhlIHJlbWFpbmluZyBzdHVmZiBpbnRvIHJ0dGkuYykuCgkqIE1ha2VmaWxlLmluIChDWFhfT0JKUyk6IFJlcGxhY2UgZ2MubyB3aXRoIHJ0dGkuby4KCShydHRpLm8pOiBOZXcgcnVsZSwgcmVwbGFjaW5nIGdjLm8uCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX1NSQ1MpOiBSZXBsYWNlIGdjLmMgd2l0aCBydHRpLmMuCgkqIGNwLXRyZWUuaDogRGVsZXRlIGdjLXJlbGF0ZWQgZm4gZGVjbHMuCgkoREVDTF9HQ19PRkZTRVQpOiBEZWxldGUgbWFjcm8uCgkoZmxhZ19nYyk6IERlbGV0ZSBleHRlcm4gZGVjbC4KCSogZGVjbC5jIChjdXJyZW50X2Z1bmN0aW9uX29ic3RhY2tfaW5kZXgpOiBEZWxldGUgdmFyIGRlY2wuCgkoY3VycmVudF9mdW5jdGlvbl9vYnN0YWNrX3VzYWdlKTogRGVsZXRlIHZhciBkZWNsLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRGVsZXRlIGNsZWFyaW5nIG9mIGN1cnJlbnRfZnVuY3Rpb25fb2JzdGFja19pbmRleAoJYW5kIGN1cnJlbnRfZnVuY3Rpb25fb2JzdGFja191c2FnZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERlbGV0ZSBjb2RlIHJlbHlpbmcgb24gLWZnYy4KCURlbGV0ZSBjYWxsIHRvIGluaXRfZ2NfcHJvY2Vzc2luZy4KCShjcF9maW5pc2hfZGVjbCk6IERlbGV0ZSBjYWxscyB0byBidWlsZF9zdGF0aWNfZ2NfZW50cnkgYW5kCgl0eXBlX25lZWRzX2djX2VudHJ5LiAgRGVsZXRlIGdjIGNvZGUgc2V0dGluZyBERUNMX0dDX09GRlNFVC4KCShzdG9yZV9wYXJtX2RlY2xzKTogRGVsZXRlIC1mZ2MgY2FsbHMgdG8gY3BfZXhwYW5kX2RlY2xfY2xlYW51cAoJYW5kIHRvIGV4cGFuZF9leHByIG9mIGEgX19nY19tYWluIGNhbGwuCgkobWF5YmVfZ2NfY2xlYW51cCk6IERlbGV0ZSB2YXIgZGVjbC4KCShmaW5pc2hfZnVuY3Rpb24pOiBEZWxldGUgY2FsbCB0byBleHBhbmRfZ2NfcHJvbG9ndWVfYW5kX2VwaWxvZ3VlLgoJKiBkZWNsMi5jIChmbGFnX2djKTogRGVsZXRlIHZhciBkZWNsLgoJKGxhbmdfZl9vcHRpb25zKTogRGVsZXRlIG9mZmVyaW5nIG9mIC1mZ2MuCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogRGVsZXRlIC1mZ2MgYW5kIC1mbm8tZ2MgaGFuZGxpbmcuCgkoZ2V0X3RlbXBfcmVndmFyKTogRGVsZXRlIGdjIGNvZGUuCgkqIGluaXQuYyAoYnVpbGRfbmV3KTogRGVsZXRlIGdjIGNvZGUuCgkqIGxleC5jIChpbml0X2xleCk6IERlbGV0ZSBjaGVja2luZyBvZiBmbGFnX2djLgoKCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogRGVsZXRlIGdjIGNvZGUuCgkoYnVpbGRfY29tcG9uZW50X2FkZHIpOiBEZWxldGUgLWZnYyB3YXJuaW5nLgoJKGJ1aWxkX21vZGlmeV9leHByKTogRGVsZXRlIGdjIGNvZGUuCgoJKiBkZWNsMi5jIChidWlsZF9wdXNoX3Njb3BlKTogRGVsZXRlIGZuLgoJKiBjcC10cmVlLmggKGJ1aWxkX3B1c2hfc2NvcGUpOiBEZWxldGUgZGVjbC4KCgkqIHNlYXJjaC5jIChjbGVhcl9zZWFyY2hfc2xvdHMpOiBEZWxldGUgZm4uCgkqIGNwLXRyZWUuaCAoY2xlYXJfc2VhcmNoX3Nsb3RzKTogRGVsZXRlIGRlY2wuCgoJKiBzZWFyY2guYyAodHJlZV9uZWVkc19jb25zdHJ1Y3Rvcl9wKTogRGVsZXRlIGZuLgoJKiBjcC10cmVlLmggKHRyZWVfbmVlZHNfY29uc3RydWN0b3JfcCk6IERlbGV0ZSBkZWNsLgoKCSogdHJlZS5jIChpZF9jbXApOiBEZWxldGUgZm4uCgoJKiB0cmVlLmMgKHNldF9mbmFkZHJfZnJvbV92dGFibGVfZW50cnkpOiBEZWxldGUgZm4uCgkqIGNwLXRyZWUuaCAoc2V0X2ZuYWRkcl9mcm9tX3Z0YWJsZV9lbnRyeSk6IERlbGV0ZSBkZWNsLgoKCSogdHJlZS5jIChkZWNsX3ZhbHVlX21lbWJlcik6IERlbGV0ZSBmbi4KCSogY3AtdHJlZS5oIChkZWNsX3ZhbHVlX21lbWJlcik6IERlbGV0ZSBkZWNsLgoKCSogdHJlZS5jIChsaXN0X2hhc2hfbG9va3VwX29yX2NvbnMpOiBEZWxldGUgZm4uCgkqIGNwLXRyZWUuaCAobGlzdF9oYXNoX2xvb2t1cF9vcl9jb25zKTogRGVsZXRlIGRlY2wuCgoJKiBtZXRob2QuYyAoY3BsdXNfZXhjZXB0aW9uX25hbWUpOiBEZWxldGUgZm4uCgkoRVhDRVBUSU9OX05BTUVfe1BSRUZJWCwgTEVOR1RIfSk6IERlbGV0ZSBtYWNyb3MuCgoJKiBzcGV3LmMgKHNoaWZ0X3Rva2Vucyk6IERlbGV0ZSBmbi4KCk1vbiBKYW4gMjIgMTc6NDk6MzMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBQYXNzIDEgdG8gbmVlZHNfcG9wIGluIGNhbGxzCgl0byBjcF9maW5pc2hfZGVjbC4KCSogcGFyc2UueTogTGlrZXdpc2UuCgpNb24gSmFuIDIyIDE3OjM0OjI5IDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfc3RhdGljZm5fdHlwZSk6IERlbGV0ZSBmdW5jdGlvbiBkZWZpbml0aW9uOwoJbmV2ZXIgdXNlZC4KCSogY3AtdHJlZS5oIChidWlsZF9jcGx1c19zdGF0aWNmbl90eXBlKTogRGVsZXRlIGRlY2wuCgoJKiB0cmVlLmMgKHZpcnR1YWxfbWVtYmVyKTogRGVsZXRlIGZ1bmN0aW9uIGRlZmluaXRpb247IG5ldmVyIHVzZWQuCgkqIGNwLXRyZWUuaCAodmlydHVhbF9tZW1iZXIpOiBEZWxldGUgZGVjbC4KCkZyaSBKYW4gMTkgMTg6MDM6MTQgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBIYW5kbGUgZ2V0dGluZyB2YmFzZSBwb2ludGVycwoJb3V0IG9mIGNvbXBsZXggbXVsdGlwbGUgaW5oZXJpdGFuY2UgYmV0dGVyLgoKRnJpIEphbiAxOSAxNjoyNzo0MCAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfb2JqZWN0X3JlZik6IE1ha2Ugc3VyZSB3ZSB1c2UgdGhlIHJlYWwgdHlwZSwgbm90CglhbnkgcmVmZXJlbmNlIHR5cGUuCgpGcmkgSmFuIDE5IDE2OjAxOjQ3IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfZXhjZXB0aW9uX3ZhcmlhbnQpOiBEb24ndCBjcmVhdGUgbmV3IHR5cGVzIGlmIHdlCglkb24ndCBoYXZlIHRvLCBhbHNvIGJ1aWxkIG5ldyB0eXBlcyBvbiB0aGUgcmlnaHQgb2JzdGFjay4KCkZyaSBKYW4gMTkgMTQ6MDk6NDQgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jIChzdG9yZV9iaW5kaW5ncyk6IFNwbGl0IG91dCBmcm9tIHB1c2hfdG9fdG9wX2xldmVsLgoJKHB1c2hfdG9fdG9wX2xldmVsKTogQ2FsbCBpdCBmb3IgYi0+dHlwZV9zaGFkb3dlZCBvbiBjbGFzcyBiaW5kaW5nCglsZXZlbHMuCgpGcmkgSmFuIDE5IDEzOjUzOjE0IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHNlYXJjaC5jIChleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IEZpeCBzbyB0aGF0IG9mZnNldHMgc3RvcmVkIGluCgl2YmFzZV9vZmZzZXRzIGFyZSBhbHdheXMgcmlnaHQuICBGaXhlcyBhIHByb2JsZW0gd2hlcmUgdmlydHVhbCBiYXNlCgl1cGNhc3RpbmcgYW5kIGRvd25jYXN0aW5nIGNvdWxkIGJlIHdyb25nIGR1cmluZyBjb252ZXJzaW9ucyBvbiB0aGlzCglkdXJpbmcgdmlydHVhbCBmdW5jdGlvbiBkaXNwYXRjaCBhdCBjdG9yL2R0b3IgdGltZSB3aGVuIGR5bmFtaWMKCXZ0YWJsZSBmaXh1cHMgZm9yIGRlbHRhcyBhcmUgbmVlZGVkLiAgVGhpcyBvbmx5IHNvdW5kcyBlYXNpZXIgdGhhbgoJaXQgaXMuICA6LSkKCShmaXh1cF92aXJ0dWFsX3VwY2FzdF9vZmZzZXRzKTogQ2hhbmdlIHRvIHJlZmxlY3QgbmV3IGNhbGxpbmcKCWNvbnZlbnRpb24gZm9yIGV4cGFuZF91cGNhc3RfZml4dXBzLgoKRnJpIEphbiAxOSAxMjoyMzowOCAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChncm9rYml0ZmllbGQpOiBTdHJpcCB0aGUgTk9QcyBmcm9tIFdJRFRIIGJlZm9yZSB3ZQoJY2hlY2sgdGhhdCBpdCdzIHVzYWJsZSBhcyB0aGUgYml0ZmllbGQgd2lkdGguCgpXZWQgSmFuIDE3IDIxOjIyOjQwIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IENhbGwgY3BsdXNfZGVjbF9hdHRyaWJ1dGVzIHdpdGggdGhlIGF0dHJsaXN0LgoJUGFzcyBhIG51bGwgdHJlZSB0byBncm9rZGVjbGFyYXRvciBmb3IgaXRzIEFUVFJMSVNUIGFyZywgc2luY2UgaXQncwoJb25seSBldmVyIHVzZWQgZm9yIGZ1bmN0aW9ucyBpbiBpdC4KCldlZCBKYW4gMTcgMTI6MTA6MzggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogcGFyc2UueSAocXVhbGlmaWVkX3R5cGVfbmFtZSk6IFVzZSB0aGUgVFlQRV9ERUNMLCBub3QgdGhlIHR5cGUuCgkobmVzdGVkX3R5cGUpOiBMaWtld2lzZS4KCShuZXN0ZWRfbmFtZV9zcGVjaWZpZXIpOiBVc2UgbGFzdGlkZGVjbC4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIGluaXQuYyAoZXhwYW5kX21lbWJlcl9pbml0KTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGJhc2VfY2xhc3MpOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChidWlsZF9mdW5jdGlvbmFsX2Nhc3QpOiBMaWtld2lzZS4KCgkqIHR5cGVjazIuYyAoYnVpbGRfZnVuY3Rpb25hbF9jYXN0KTogRmlsbCBpbiBuYW1lIGFmdGVyIHdlJ3ZlCgljaGVja2VkIGZvciBub24tYWdnciB0eXBlLgoKV2VkIEphbiAxNyAxMDoxODowMSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsMi5jICh3YXJuX3BvaW50ZXJfYXJpdGgpOiBEZWZhdWx0IHRvIG9uLgoKVHVlIEphbiAxNiAxMjo0NTozOCAxOTk2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBsZXguYyAoaXNfcmlkKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRGlhZ25vc2UgcmVzZXJ2ZWQgd29yZHMgdXNlZCBhcwoJZGVjbGFyYXRvci1pZHMuCgpUdWUgSmFuIDE2IDExOjM5OjQwIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoZ2V0X2RlY2xfbGlzdCk6IERvbid0IGxvc2UgY3YtcXVhbHMuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRml4IFNDT1BFX1JFRiBoYW5kbGluZyBhbmQgZGlhZ25vc2UKCXR5cGVzcGVjcyB1c2VkIGFzIGRlY2xhcmF0b3ItaWRzLgoKVHVlIEphbiAxNiAxMTowOTo0MiAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHBvcGxldmVsKTogV2hlbiBwb3BpbmcgYSBsZXZlbCwgZG9uJ3QgZ2l2ZSBhIHdhcm5pbmcgZm9yCglhbnkgc3ViYmxvY2tzIHRoYXQgYWxyZWFkeSBleGlzdC4KClR1ZSBKYW4gMTYgMDA6MjU6MzMgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX29iamVjdF9yZWYpOiBGaW5pc2ggd2hhdCBJIHN0YXJ0ZWQuCgoJKiBwYXJzZS55IChxdWFsaWZpZWRfdHlwZV9uYW1lKTogRG9uJ3QgY2hlY2sgVFlQRV9CVUlMVF9JTi4KCgkqIGRlY2wyLmMgKGNvbnN0cnVjdG9yX25hbWVfZnVsbCk6IEhhbmRsZSBURU1QTEFURV9UWVBFX1BBUk1zLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFsc28gYWNjZXB0IFRFTVBMQVRFX1RZUEVfUEFSTSBhcyBhCglzY29wZS4KCk1vbiBKYW4gMTUgMTY6MTk6MzIgMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbC5jICh4cmVmX3RhZyk6IEhhbmRsZSBwYXNzaW5nIGEgdHlwZSBpbiBkaXJlY3RseS4KCgkqIHBhcnNlLnkgKHF1YWxpZmllZF90eXBlX25hbWUpOiBQdWxsIG91dCB0aGUgdHlwZS4KCShuZXN0ZWRfdHlwZSk6IExpa2V3aXNlLgoJVGFrZSB0eXBlcyBkaXJlY3RseSBpbnN0ZWFkIG9mIGFzIGlkZW50aWZpZXJzLgoJKiBjYWxsLmMgKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IFRha2UgdHlwZXMgZGlyZWN0bHkgaW5zdGVhZCBvZgoJYXMgaWRlbnRpZmllcnMuCgkqIGRlY2wuYyAoeHJlZl9iYXNldHlwZXMpOiBMaWtld2lzZS4KCSogaW5pdC5jIChleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZS4KCShidWlsZF9tZW1iZXJfY2FsbCk6IExpa2V3aXNlLgoJKGJ1aWxkX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jIChidWlsZF9zY29wZWRfcmVmKTogTGlrZXdpc2UsIHJlbW92ZSBib2d1cyBjb2RlLgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfYXNzaWduX3JlZik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogSGFuZGxlIGEgdHlwZSBhcHBlYXJpbmcgYXMgdGhlCglkZWNsYXJhdG9yLWlkIGZvciBjb25zdHJ1Y3RvcnMuCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogY3VycmVudF9iYXNlX2luaXRfbGlzdCBub3cKCXVzZXMgdGhlIHR5cGVzIGRpcmVjdGx5LCBub3QgdGhlaXIgbmFtZXMuCgkqIGluaXQuYyAoc29ydF9iYXNlX2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZS4KCSogaW5pdC5jIChpc19hZ2dyX3R5cGUpOiBOZXcgZnVuY3Rpb24sIGxpa2UgaXNfYWdncl90eXBlZGVmLgoKTW9uIEphbiAxNSAwODo0NTowMSAxOTk2ICBKZWZmcmV5IEEgTGF3ICA8bGF3QGN5Z251cy5jb20+CgoJKiB0cmVlLmMgKGxheW91dF9iYXNldHlwZXMpOiBDYWxsIGJ1aWxkX2xhbmdfZmllbGRfZGVjbCBpbnN0ZWFkCglvZiBidWlsZF9sYW5nX2RlY2wgaWYgZmlyc3QgYXJnIGlzIGEgRklFTERfREVDTC4KClRodSBKYW4gMTEgMTQ6NTU6MDcgMTk5NiAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChjcF9maW5pc2hfZGVjbCk6IE9ubHkgY2xlYXIgVFJFRV9VU0VEIGlmIERFQ0xfTkFNRSBpcwoJbm9uLWVtcHR5LgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogU2V0IFRSRUVfVVNFRCB0byBhdm9pZAoJd2FybmluZ3MgYWJvdXQgdGhlIGNhdGNoIGhhbmRsZXIuCgpNb24gSmFuICA4IDE3OjM1OjEyIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9tb2RpZnlfZXhwcik6IFVzZSBhIENPTVBPVU5EX0VYUFIgaW5zdGVhZCBvZgoJZXhwYW5kX3RhcmdldF9leHByLgoKVGh1IEphbiAgNCAxMjozMDozMiAxOTk2ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJRml4IGFjY2VzcyBjb250cm9sIHRvIHVzZSB0cmVlcyByYXRoZXIgdGhhbiBpbnRlZ2Vycy4KCSogY2xhc3MuYyAoYWNjZXNzX3tkZWZhdWx0LCBwdWJsaWMsIHByb3RlY3RlZCwgcHJpdmF0ZSwKCWRlZmF1bHRfdmlydHVhbCwgcHVibGljX3ZpcnR1YWwsIHByaXZhdGVfdmlydHVhbH1fbm9kZSk6IEFkZAoJZGVmaW5pdGlvbnMuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogRG8gY3JlYXRpb24gb2YgdGhvc2Ugbm9kZXMuCgkqIGNwLXRyZWUuaCAoYWNjZXNzX3R5cGUpOiBEZWxldGUgZW51bSBkZWNsLgoJKGFjY2Vzc197ZGVmYXVsdCwgcHVibGljLCBwcm90ZWN0ZWQsIHByaXZhdGUsIGRlZmF1bHRfdmlydHVhbCwKCXB1YmxpY192aXJ0dWFsLCBwcml2YXRlX3ZpcnR1YWx9X25vZGUpOiBBZGQgZGVjbHMuCgkoY29tcHV0ZV9hY2Nlc3MpOiBDaGFuZ2UgcmV0dXJuIHR5cGUuCgkqIHNlYXJjaC5jIChjb21wdXRlX2FjY2Vzcyk6IEhhdmUgdHJlZSByZXR1cm4gdHlwZSwgaW5zdGVhZCBvZiBlbnVtLgoJKGxvb2t1cF9maWVsZCk6IERlY2xhcmUgVEhJU19WIGFuZCBORVdfViB0byBiZSB0cmVlIG5vZGVzLgoJKiBsZXguYyAocmVhbF95eWxleCk6IFVzZSB5eWx2YWwudHR5cGUgZm9yIGdpdmluZyB0aGUgdmFsdWUgb2YgdGhlCglhY2Nlc3NfKiBub2RlIGZvciBlYWNoIG9mIFJJRF97UFVCTElDLCBQUklWQVRFLCBQUk9URUNURUR9LgoJKiBwYXJzZS55IChWSVNTUEVDKTogTWFrZSB0dHlwZSByYXRoZXIgdGhhbiBpdHlwZS4KCShiYXNlX2NsYXNzX2FjY2Vzc19saXN0KTogTGlrZXdpc2UuCgkqICouW2N5XTogQ2hhbmdlIGFsbCByZWZzIG9mIGBhY2Nlc3NfcHVibGljJyB0byBgYWNjZXNzX3B1YmxpY19ub2RlJywKCWV0Yy4KCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IE1ha2UgQUNDRVNTIGJlIGEgdHJlZS4KCSogY2xhc3MuYyAoYWx0ZXJfYWNjZXNzLCBmaW5pc2hfc3RydWN0XzEsIGZpbHRlcl9zdHJ1Y3QpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fYWdncik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYsIHJlc29sdmVfb2Zmc2V0X3JlZiwgYnVpbGRfZGVsZXRlKToKCUxpa2V3aXNlLgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmXzEsIGJ1aWxkX2NvbXBvbmVudF9yZWYpOiApOiBMaWtld2lzZS4KClRodSBKYW4gIDQgMTE6MDI6MjAgMTk5NiAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKHBvaW50ZXJfaW50X3N1bSwgcG9pbnRlcl9kaWZmKTogTWFrZSBjb2RlIGFncmVlIHdpdGggQwoJZnJvbnRlbmQsIGFuZCBtYWtlIGl0IG1vcmUgY29uc2lzdGVudCB3aXRoIHJlc3BlY3QgdG8KCXdhcm5fcG9pbnRlcl9hcml0aC4KClR1ZSBKYW4gIDIgMDA6MTM6MzggMTk5NiAgUnVzdHkgUnVzc2VsbCAgPHJ1c3R5QGFkZWxhaWRlLm1hcHRlay5jb20uYXU+CgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogQ2hlY2sgZm9yIGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMuCgpXZWQgSmFuICAzIDA5OjI1OjQ4IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogQ2FsbCBhc3NlbWJsZV9leHRlcm5hbCBmb3IgYXRleGl0LgoKV2VkIEphbiAgMyAwNzo1NToxOSAxOTk2ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZG9fdW53aW5kKTogUmVtb3ZlIHNvbWUgZ2VuZXJhdGVkIGRlYWQgY29kZS4KCShlaF9vdXRlcl9jb250ZXh0KTogTmV3IHJvdXRpbmUsIGZhY3RvciBvdXQgc29tZSBjb21tb24gY29kZSBmcm9tCglleHBhbmRfYnVpbHRpbl90aHJvdyBhbmQgZW5kX2VoX3Vud2luZGVyLiAgQWRkIGNvZGUgdG8gZG8gcmV0dXJuCglhZGRyZXNzIG1hc2tpbmcgZm9yIHRoZSBQQS4KCShleHBhbmRfYnVpbHRpbl90aHJvdyk6IFVzZSBlaF9vdXRlcl9jb250ZXh0IGluc3RlYWQgb2Ygb3BlbiBjb2RpbmcKCWl0IGhlcmUuCgkoZW5kX2VoX3Vud2luZGVyKTogTGlrZXdpc2UuCgpUdWUgSmFuICAyIDE3OjAwOjU2IDE5OTYgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfdGhyb3cpOiBDYWxsIGFzc2VtYmxlX2V4dGVybmFsIGZvciBfX2VtcHR5LCBpZiB3ZQoJdXNlIGl0LgoKVGh1IERlYyAyOCAxMToxMzoxNSAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoZXhwYW5kX2J1aWx0aW5fdGhyb3cpOiBVc2UgUkVUVVJOX0FERFJfT0ZGU0VUIGluc3RlYWQgb2YKCU5PUk1BTF9SRVRVUk5fQUREUl9PRkZTRVQuCgkoZW5kX2VoX3Vud2luZGVyKTogTGlrZXdpc2UuCgpXZWQgRGVjIDI3IDIyOjE4OjE2IDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGdjLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdCk6IE1ha2Ugc3VyZSB3ZSBkb24ndCBjYXN0IGF3YXkgY29uc3QKCXdoZW4gZGVhbGluZyB3aXRoIHJlZmVyZW5jZXMsIGFuZCBtYWtlIHN1cmUgd2UgaGFuZGxlIGR5bmFtaWMKCWNhc3RpbmcgdG8gYSBjdiBxdWFsaWZpZWQgcmVmZXJlbmNlLgoKVGh1IERlYyAyMSAyMzo1MDozNSAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoc3RydWN0IGVoX2NvbnRleHQpOiBOZXcgc3RydWN0dXJlIHRvcCBob2xkIGVoIGNvbnRleHQKCWluZm9ybWF0aW9uLgoJKHB1c2hfZWhfY29udGV4dCk6IE5ldyByb3V0aW5lLgoJKHBvcF9laF9jb250ZXh0KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaF9jcF9mdW5jdGlvbl9jb250ZXh0KTogVXNlIHRoZW0uCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCldlZCBEZWMgMjAgMTI6NDI6NTEgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBBbHNvIHBydW5lIHVuaW50ZXJlc3RpbmcgZnVuY3Rpb25zIGluIHRoZQoJaW5saW5lIGVtaXNzaW9uIGxvb3AuCgpXZWQgRGVjIDIwIDAyOjMyOjA3IDE5OTUgIEplZmZyZXkgQSBMYXcgIDxsYXdAY3lnbnVzLmNvbT4KCgkqIHNpZy5jIChidWlsZF9zaWduYXR1cmVfdGFibGVfY29uc3RydWN0b3IpOiBNYXJrIGZ1bmN0aW9ucwoJaW4gdGhlIHNpZ25hdHVyZSBhcyByZWZlcmVuY2VkLgoKVHVlIERlYyAxOSAyMjozNjo1NiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IERvIGFsbCB0aGUgdnRhYmxlL3N5bnRoZXNpcyBzdHVmZiBiZWZvcmUKCXRoZSBpbmxpbmUgZW1pc3Npb24gc3R1ZmYuCgpNb24gRGVjIDE4IDE1OjUxOjMzIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCwgZGVjbDIuYyAoZmxhZ193ZWFrKTogTmV3IGZsYWcgdG8gY29udHJvbCB0aGUgdXNlIG9mCgl3ZWFrIHN5bWJvbHMuCgkqIGxhbmctb3B0aW9ucy5oOiBBZGQgLWZ7bm8tLH13ZWFrLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSWYgdGhlIHRhcmdldCBkb2VzIG5vdCBzdXBwb3J0IHdlYWsKCXN5bWJvbHMsIGRvbid0IHVzZSB0aGVtLgoJKiBkZWNsMi5jLCBwdC5jOiBzL1NVUFBPUlRTX1dFQUsvZmxhZ193ZWFrLy4KClN1biBEZWMgMTcgMjE6MTM6MjMgMTk5NSAgUnVzdHkgUnVzc2VsbCAgPHJ1c3R5QGFkZWxhaWRlLm1hcHRlay5jb20uYXU+CgoJKiBpbml0LmMgKGV4cGFuZF9tZW1iZXJfaW5pdCk6IHdhcm5pbmcgZm9yIGJhc2UgaW5pdCBhZnRlciBtZW1iZXJzLgoKRnJpIERlYyAxNSAxNTozMjoxOCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjdnQuYyAoYnVpbGRfZXhwcl90eXBlX2NvbnZlcnNpb24pOiBEb24ndCBjb252ZXJ0IHRvIGEgcmVmZXJlbmNlCgl0eXBlLgoKVGh1IERlYyAxNCAxNjowNTo1OCAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAocmVwb3J0X3R5cGVfbWlzbWF0Y2gpOiBJbXByb3ZlIHdvcmRpbmcgZm9yIHZvbGF0aWxlCgltaXNtYXRjaGVzLgoKVGh1IERlYyAxNCAxNDoxNjoyNiAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGV4cGFuZF9hZ2dyX2luaXRfMSk6IFVzZSBleHBhbmRfYWdncl9pbml0XzEgaW5zdGVhZCBvZgoJZXhwYW5kX2Fzc2lnbm1lbnQsIGFzIHRoZSBsYXRlciBkb2Vzbid0IGhhbmRsZSB0aGluZ3MgdGhhdCBoYXZlCgljb3B5IGNvbnN0cnVjdG9ycyB3ZWxsLiAgVGhlIGNvbXBpbGVyIHdvdWxkIGRvIGJpdHdpc2UgY29weWluZywKCWluc3RlYWQgb2YgY3RvciBjYWxsaW5nIGluIHNvbWUgY2FzZXMuCgpXZWQgRGVjIDEzIDE3OjA1OjU0IDE5OTUgIFBhdWwgRWdnZXJ0ICA8ZWdnZXJ0QHR3aW5zdW4uY29tPgoKCSogZysrLmMgKG15X3N0cmVycm9yKTogUmV0dXJuICJjYW5ub3QgYWNjZXNzIiBpZiBlcnJubyBpcyAwLgoJKHBmYXRhbF93aXRoX25hbWUsIHBlcnJvcl9leGVjKTogRG9uJ3QgYXNzdW1lIHRoYXQKCXRoZSByZXR1cm5lZCB2YWx1ZSBmcm9tIG15X3N0cmVycm9yIGNvbnRhaW5zIG5vICclJ3MuCgkoY29uY2F0KTogUmVtb3ZlLgoJKHN5c19uZXJyb3IpOiBEZWNsYXJlIG9ubHkgaWYgSEFWRV9TVFJFUlJPUiBpcyBub3QgZGVmaW5lZC4KCldlZCBEZWMgMTMgMTY6MjI6MzggMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCUxvc2UgQ0xBU1NUWVBFX01FVEhPRFMvREVDTF9ORVhUX01FVEhPRCBjaGFpbjsgbWFrZQoJVFlQRV9NRVRIT0RTL1RSRUVfQ0hBSU4gbWVhbiB3aGF0IHRoZXkgdXNlZCB0by4KCSogZGVjbDIuYyAoY29uc3RydWN0b3JfbmFtZV9mdWxsKTogUmVmZXIgdG8gQ0xBU1NUWVBFX01FVEhPRF9WRUMKCWluc3RlYWQgb2YgVFlQRV9NRVRIT0RTLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IExvc2UgcmVmZXJlbmNlcyB0byBERUNMX05FWFRfTUVUSE9ELgoJKiB0cmVlLmMgKHRyZWVfY29weV9sYW5nX2RlY2xfZm9yX2RlZmVycmVkX291dHB1dCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9NRVRIT0RTKTogTG9zZS4KCShDTEFTU1RZUEVfTUVUSE9EX1ZFQyk6IFBvaW50IHRvIGxhbmdfc3BlYy0+bWV0aG9kcyBpbnN0ZWFkIG9mCglUWVBFX01FVEhPRFMuCgkoc3RydWN0IGxhbmdfZGVjbCk6IExvc2UgbmV4dF9tZXRob2QgZmllbGQuCgkoREVDTF9ORVhUX01FVEhPRCk6IExvc2UuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IERvbid0IG1lc3Mgd2l0aCBUWVBFX01FVEhPRFMuCgkoZmluaXNoX3N0cnVjdCk6IEp1c3QgdXNlIFRZUEVfTUVUSE9EUzsgd2UgZG9uJ3QgbmVlZCBmbl9maWVsZHMKCWFueW1vcmUuCgkoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogRG9uJ3QgbWVzcyB3aXRoIHRoZSBUUkVFX0NIQUlOcyBpbgoJZm5fZmllbGRzLgoKCSogc2VhcmNoLmMgKGFkZF9jb252ZXJzaW9ucyk6IERvbid0IHVzZSBUUkVFX0NIQUlOIHRvIHRyYXZlcnNlIG1ldGhvZAoJdmVjdG9yLgoKCSogY2FsbC5jIChidWlsZF9tZXRob2RfY2FsbCk6IFN5bnRoZXNpemUgaGVyZSBldmVuIHdoZW4gbm90IGlubGluaW5nLgoJKiB0eXBlY2suYyAoYnVpbGRfZnVuY3Rpb25fY2FsbF9yZWFsKTogTGlrZXdpc2UuCgpXZWQgRGVjIDEzIDE1OjAyOjM5IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNwL2xleC5jIChjaGVja19uZXdsaW5lKTogSWYgREJYX0RFQlVHR0lOR19JTkZPIGFuZCB3cml0ZV9zeW1ib2xzCgk9PSBEQlhfREVCVUcsIGNhbGwgZGJ4b3V0X3N0YXJ0X25ld19zb3VyY2VfZmlsZSBhbmQKCWRieG91dF9yZXN1bWVfcHJldmlvdXNfc291cmNlX2ZpbGUgd2hlbiBhcHByb3ByaWF0ZS4KClR1ZSBEZWMgMTIgMjA6Mzg6NTUgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKHN0YXJ0X2Fub25fZnVuYyk6IFB1c2ggdG8gdGhlIHRvcCBsZXZlbC4KCShlbmRfYW5vbl9mdW5jKTogUG9wIGZyb20gdGhlIHRvcCBsZXZlbC4KCk1vbiBEZWMgMTEgMTg6NTY6MTQgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY3AtdHJlZS5oIChidWlsZF9jbGVhbnVwKTogTmV3IHJvdXRpbmUgdG8gYnVpbGQgY2xlYW51cHMuCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogVXNlIGJ1aWxkX2NsZWFudXAgdG8gYnVpbGQgYSBjbGVhbnVwCgljYWxsIGF0IGN0b3IgdGltZSBhbmQgdXNlIGF0ZXhpdCB0byBydW4gaXQgbGF0ZXIuCgkqIGRlY2wyLmMgKGJ1aWxkX2NsZWFudXApOiBOZXcgcm91dGluZSwgdGFrZW4gZnJvbSBmaW5pc2hfZmlsZS4KCShmaW5pc2hfZmlsZSk6IFVzZSBidWlsZF9jbGVhbnVwIGluc3RlYWQsIGFuZCBkb24ndCBwdXQgZnVuY3Rpb24KCWxvY2FsIHN0YXRpY3MgaW4gZ2xvYmFsIGR0b3IgbGlzdC4KCldlZCBEZWMgIDYgMTQ6MzQ6MjkgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IEVuc3VyZSB0aGF0IHdlIGhhdmUgY2xlYW51cHMsIGlmIHdlIHRyeQoJYW5kIGV4cGFuZCBjbGVhbnVwcy4KCldlZCBEZWMgIDYgMTE6NDg6MjEgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IEFkZCBsb2dpYyB0byBtYW5hZ2UgZHluYW1pYyBjbGVhbnVwcyBmb3IKCXRoZSBFSCBvYmplY3QuCgkoZXhwYW5kX2VuZF9jYXRjaF9ibG9jayk6IFVzZSB0aGUgbWFnaWMgb2YgZXhwYW5kX2dvdG8sIGluc3RlYWQgb2YKCWVtaXRfanVtcCBzbyB0aGF0IHdlIGdldCB0aGUgY2xlYW51cCBmb3IgYW55IGNhdGNoIGNsYXVzZSBwYXJhbWV0ZXIKCWFuZCB0aGUgY2xlYW51cCBmb3IgdGhlIGV4Y2VwdGlvbiBvYmplY3QuICBVcGRhdGUgdG8gcmVmbGVjdCBsYWJlbAoJY2hhbmdlcy4KCShwdXNoX2VoX2NsZWFudXApOiBOZXcgcm91dGluZSB0byByZWdpc3RlciBhIGNsZWFudXAgZm9yIGFuCglleGNlcHRpb24gb2JqZWN0LgoJKGVtcHR5X2ZuZGVjbCk6IFVzZWQgdG8gZGVmYXVsdCBjbGVhbnVwIGFjdGlvbnMgdG8KCW5vdGhpbmcuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IFNldHVwIGVtcHR5X2ZuZGVjbC4gIFNldHVwCglzYXZlZF9jbGVhbnVwLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFVwZGF0ZSB0byByZWZsZWN0IGxhYmVsIGNoYW5nZXMuICBDYWxsCglwdXNoX2VoX29iamVjdCB0byByZWdpc3RlciB0aGUgY2xlYW51cCBmb3IgdGhlIEVIIG9iamVjdC4KCShzdGFydF9hbm9uX2Z1bmMpOiBOZXcgcm91dGluZSB0byBzdGFydCBidWlsZGluZyBsYW1iZGEgZXhwcmVzc2lvbnMKCWZyb20gdHJlZXMuCgkoZW5kX2Fub25fZnVuYyk6IE5ldyByb3V0aW5lIHRvIGVuZCB0aGVtLgoJKHN0cnVjdCBsYWJlbE5vZGUpOiBDaGFuZ2Ugc28gdGhhdCB3ZSBjYW4gdXNlIHRyZWUgbGFiZWxzLCBvciBydHgKCWxhYmVscy4KCShzYXZlZF9jbGVhbnVwKTogT2JqZWN0IHRvIGNoZWNrIGZvciBkeW5hbWljIGNsZWFudXBzIGZvciB0aGUKCWV4Y2VwdGlvbiBoYW5kbGluZyBvYmplY3QuCgkocHVzaF9sYWJlbF9lbnRyeSk6IENoYW5nZSBzbyB0aGF0IHdlIGNhbiB1c2UgdHJlZSBsYWJlbHMsIG9yIHJ0eAoJbGFiZWxzLgoJKHBvcF9sYWJlbF9lbnRyeSk6IExpa2V3aXNlLgoJKHRvcF9sYWJlbF9lbnRyeSk6IExpa2V3aXNlLgoJKGV4cGFuZF9zdGFydF9hbGxfY2F0Y2gpOiBVc2UgdHJlZSBsYWJlbCBpbnN0ZWFkIG9mIHJ0eCBsYWJlbCwgc28KCXRoYXQgd2UgY2FuIGdldCB0aGUgbWFnaWMgb2YgZXhwYW5kX2dvdG8uCgkoZXhwYW5kX2VuZF9hbGxfY2F0Y2gpOiBVcGRhdGUgdG8gcmVmbGVjdCBsYWJlbCBjaGFuZ2VzLgoKCSogY2xhc3MuYyAoYnVpbGRfdmZuX3JlZik6IFJlbW92ZSBidWlsZGluZ19jbGVhbnVwIGxvZ2ljLCBhcyB3ZSBub3cKCXVzZSBVTlNBVkVfRVhQUnMuCgkqIHR5cGVjay5jIChnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IFJlbW92ZSByZW1uYW50cyBvZgoJYnVpbGRpbmdfY2xlYW51cCBsb2dpYywgYXMgd2Ugbm93IHVzZSBVTlNBVkVfRVhQUnMuCgkqIGNwLXRyZWUuaCAodW5zYXZlX2V4cHIpOiBEZWNsYXJlIGl0LgoJKiBkZWNsLmMgKGJ1aWxkaW5nX2NsZWFudXApOiBSZW1vdmUuCgkobWF5YmVfYnVpbGRfY2xlYW51cCk6IFJlbW92ZSBidWlsZGluZ19jbGVhbnVwIGxvZ2ljLCBhbmQgdXNlCglVTlNBVkVfRVhQUiBpbnN0ZWFkLgoKU3VuIERlYyAgMyAwMTozNDo1OCAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBnYy5jIChidWlsZF90X2Rlc2MpOiBVcGRhdGUgZXJyb3IgbWVzc2FnZSB0byBzYXkgPHR5cGVpbmZvPi4KClRodSBOb3YgMzAgMTI6MzA6MDUgMTk5NSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoZGVjbCk6IE9ubHkgd2FybiBhYm91dCBzaGFkb3dpbmcgYSBsb2NhbCB2YXJpYWJsZSBpZgoJd2Fybl9zaGFkb3cgaXMgdHJ1ZS4KClN1biBOb3YgMjYgMTY6MDY6NTUgMTk5NSAgUnVzdHkgUnVzc2VsbCAgPHJ1c3R5QGFkZWxhaWRlLm1hcHRlay5jb20uYXU+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IEFkZGVkIHdhcm5pbmcgYWJvdXQKCWNvbXBhcmlzb25zIGJldHdlZW4gZGlmZmVyZW50IGVudW0gdHlwZXMgd2l0aCAtV2FsbCwgdW5sZXNzCgktZmVudW0taW50LWVxdWl2IHNldC4KCldlZCBOb3YgMjIgMTU6NDQ6MDIgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogU2tpcCBkb3duIHRvIHRoZSBpbm5lciB0eXBlIGluCgltdWx0aWRpbWVuc2lvbmFsIGFycmF5cy4gIEVuc3VyZXMgY3RvcnMgd2lsbCBiZSBtYWRlIGZvciB0eXBlcyB0aGF0CgluZWVkIGNvbnN0cnVjdGluZy4KCldlZCBOb3YgMjIgMTQ6MTk6MjIgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChsYXN0X2R0b3JfaW5zbik6IE5ldyB0byB0cmFjayB0aGUgbGFzdCBjb21waWxlciBnZW5lcmF0ZWQKCWluc24gaW4gYSBkdG9yLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBTZXQgaXQuCgkoZmluaXNoX2Z1bmN0aW9uKTogVXNlIGl0IHRvIHNlZSBpZiB0aGUgZHRvciBpcyBlbXB0eS4gIEF2b2lkIGRvaW5nCgl2dGFibGUgc2V0dXAgYWxsIHRoZSB0aW1lLCBpZiB3ZSBjYW4uCgkoc3RydWN0IGNwX2Z1bmN0aW9uKTogQWRkIGxhc3RfZHRvcl9pbnNuLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IFNhdmUgaXQuCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBSZXN0b3JlIGl0LgoKV2VkIE5vdiAyMiAxMTo1MjoxOSAxOTk1ICBQYXVsIFJ1c3NlbGwgIDxSdXN0eS5SdXNzZWxsQGFkZWxhaWRlLm1hcHRlay5jb20uYXU+CgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBTZXQgVFJFRV9OT19VTlVTRURfV0FSTklORyB0byBhdm9pZAoJd2FybmluZ3MuCgpUdWUgTm92IDIxIDE3OjE1OjIzIDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChleHBhbmRfdGFyZ2V0X2V4cHIpOiBNYWtlIHN1cmUgdGFyZ2V0cyBnZXQgcHV0IGludG8gdGhlCgljdXJyZW50IHRlbXBfc2xvdF9sZXZlbCwgc28gdGhhdCB0aGUgZnJlZV90ZW1wX3Nsb3RzIGNhbGwgd2lsbCByZXVzZQoJdGhlbS4KClR1ZSBOb3YgMjEgMTM6MzI6MDMgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogRGVsYXkgZGVsdGEgZml4dXBzIGZvciB2aXJ0dWFsIGJhc2VzCgl1bnRpbCBhZnRlciB3ZSBoYXZlIGRvbmUgdGhlIGhhcmQgdmlydHVhbHMsIHRvIGF2b2lkIGEgYm9ndXMgYGV2ZXJ5Cgl2aXJ0dWFsIGZ1bmN0aW9uIG11c3QgaGF2ZSBhIHVuaXF1ZSBmaW5hbCBvdmVycmlkZXInIGZvciB2aXJ0dWFsCglmdW5jdGlvbnMgdGhhdCBhcmUgb25seSBvdmVycmlkZGVuIGJ5IGhhcmQgdmlydHVhbHMuCgpUaHUgTm92ICA5IDEzOjM1OjMwIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHB0LmMgKGRvX2Z1bmN0aW9uX2luc3RhbnRpYXRpb24pOiBEb24ndCB0cnkgdG8gZmluZCBhIGZpbGUtc2NvcGUKCXRlbXBsYXRlIGZvciBhIG1lbWJlciBmdW5jdGlvbi4KClR1ZSBOb3YgMTQgMDY6MjA6MzUgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZysrLmMgKG1haW4pOiBBZGQgaGFuZGxpbmcgb2YgLW5vZGVmYXVsdGxpYnMuCgpNb24gTm92IDEzIDE1OjQ1OjM0IDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoSU5ESVJFQ1RfQklORCk6IEFkZCBhIHdheSBmb3IgdGhlIGZyb250ZW5kIHRvCglkaXN0aW5ndWlzaCBiZXR3ZWVuIGRpcmVjdCBiaW5kaW5ncyBvZiByZWZlcmVuY2UgdmFyaWFibGVzLCBhbmQKCWluZGlyZWN0IGJpbmRpbmdzIG9mIHJlZmVyZW5jZSB2YXJpYWJsZXMuCgkqIGN2dC5jIChidWlsZF91cF9yZWZlcmVuY2UpOiBVc2UgaXQuCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IFVzZSBpdCB0byBpbmRpY2F0ZSB0aGlzIGlzIGFuCglpbmRpcmVjdCBiaW5kaW5nLgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogRW5zdXJlIHRoYXQgd2UgcmV1c2Ugc3RhY2sgc2xvdHMgYXMgZmFzdAoJYXMgdGhleSBhcmUgdW51c2VkLgoJKGV4cGFuZF9zdGF0aWNfaW5pdCk6IExpa2V3aXNlLgoJKGNwbHVzX2V4cGFuZF9leHByX3N0bXQpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBMaWtld2lzZS4KCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogTGlrZXdpc2UuCgkoZW1pdF9iYXNlX2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfYWdncl92YmFzZV9pbml0XzEpOiBMaWtld2lzZS4KCkZyaSBOb3YgMTAgMDk6MTg6MDkgMTk5NSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChwdXNoX25hbWVzcGFjZSk6IFJld3JpdGUgdG8gdXNlIGJ1aWxkX2xhbmdfZGVjbCwgc28gd2UKCWdldCBhIERFQ0xfTEFOR19TUEVDSUZJQyBub2RlLgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IEFkZCBuZXcgbWVtYmVyIGBsZXZlbCcuCgkoTkFNRVNQQUNFX0xFVkVMKTogRG9uJ3QgdXNlIGRlY2wuYXJndW1lbnRzLCBpbnN0ZWFkIHVzZSB0aGUKCWRlY2xfZmxhZ3MgbGV2ZWwgbWVtYmVyLgoKTW9uIE5vdiAgNiAxODozNjoxMyAxOTk1ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogTWFrZSBzdXJlIGluc3RhbmNlIGhhcyBhCglUWVBFX0xBTkdfU1BFQ0lGSUMgbm9kZSBiZWZvcmUgd2UgZGl2ZSBpbnRvIGl0LgoKU2F0IE5vdiAgNCAyMDowMTo1MiAxOTk1ICBKYXNvbiBNb2xlbmRhICA8Y3Jhc2hAcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogVXNlIFRSRUVfU0VUX0NPREUgdG8gc2V0IHRodW5rJ3MgdHJlZSBjb2RlLgoKVGh1IE5vdiAgMiAxNzo1Njo1NyAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFdoZW4gc21hc2hpbmcgZGVjbHMsIHNtYXNoIHN0YXRpY25lc3MgaW4KCXRoZSB1c3VhbCB3YXkuCgpUaHUgTm92ICAyIDE2OjQ0OjAyIDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBIYW5kbGUgdGhlIG1lcmdpbmcgb2Ygc3ViYmxvY2tzIG9mIGNsZWFudXBzCgl3aGVuIGZpbmlzaGluZyBibG9ja3MgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBjcmVhdGVkICh1c3VhbGx5IGR1ZSB0bwoJdGhlIGZpeHVwIGdvdG8gY29kZSkuICBGaXhlcyBiYWQgZGVidWdnaW5nIGluZm9ybWF0aW9uLgoKV2VkIE5vdiAgMSAxMjozMzo1MyAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoaGFja19pZGVudGlmaWVyKTogRG9uJ3QgYWJvcnQgd2hlbiB3ZSBnZXQgYSBUUkVFX0xJU1QKCXRoYXQncyBub3QgYSBsaXN0IG9mIG92ZXJsb2FkZWQgZnVuY3Rpb25zLgoKV2VkIE5vdiAgMSAxMTozODo1OCAxOTk1ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkBsaXNhLmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChtYXJrX3Z0YWJsZV9lbnRyaWVzKTogQ2hlY2sgREVDTF9MQU5HX1NQRUNJRklDIG9uIGZuCgliZWZvcmUgdHJ5aW5nIHRvIHVzZSBERUNMX0FCU1RSQUNUX1ZJUlRVQUxfUC4KClR1ZSBPY3QgMzEgMTE6NTY6NTUgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAobWFya191c2VkKTogTmV3IGZ1bmN0aW9uIGZvciBob29raW5nIGludG8gc2V0dGluZyBvZgoJVFJFRV9VU0VEIG9uIGRlY2xzLgoJKiBjYWxsLmMgKGJ1aWxkX21ldGhvZF9jYWxsKTogVXNlIGl0LgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IExpa2V3aXNlLiAgRG9uJ3QgY2FsbCBhc3NlbWJsZV9leHRlcm5hbAoJZm9yIGFsbCBsaWtlLW5hbWVkIGZ1bmN0aW9ucy4KCSogbWV0aG9kLmMgKGhhY2tfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKGVtaXRfdGh1bmspOiBEb24ndCBjYWxsIGFzc2VtYmxlX2V4dGVybmFsLgoJKG1ha2VfdGh1bmspOiBDcmVhdGUgdGh1bmsgYXMgYSBGVU5DVElPTl9ERUNMIHNvIHRoYXQgaXQKCWdldHMgdGhlIHJpZ2h0IG1vZGUgYW5kIEVOQ09ERV9TRUNUSU9OX0lORk8gd29ya3MuCgoJKiBwYXJzZS55OiBVc2UgbWFya191c2VkLiAgUGFzcyBvcGVyYXRvciBuYW1lcyB0byBkb19pZGVudGlmaWVyLgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IEhhbmRsZSBvcGVyYXRvciBuYW1lcy4KCgkqIGRlY2wyLmMgKGdyb2tjbGFzc2ZuKTogVHdlYWsgX19pbl9jaHJnIGF0dHJpYnV0ZXMuCgpUaHUgT2N0IDI2IDE2OjQ1OjU4IDE5OTUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGVycmZuLmM6IEluY2x1ZGUgc3RkaW8uaC4KCShjcF9zcHJpbnRmKTogVGFrZSBvdXQgZGVjbCBvZiBzcHJpbnRmLCBhbmQgY2FzdCBzcHJpbnRmIHRvIGVycm9yZm4qLgoKV2VkIE9jdCAyNSAxODo1ODo0MSAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiB0eXBlY2syLmMgKGRpZ2VzdF9pbml0KTogQWx3YXlzIGNvbnZlcnQgaW5pdGlhbGl6ZXJzIHRvIHRoZQoJcmlnaHQgdHlwZS4KCldlZCBPY3QgMjUgMTM6MjU6MjQgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogaW5pdC5jIChtZW1iZXJfaW5pdF9va19vcl9lbHNlKTogRG9uJ3QgYWxsb3cgbWVtYmVyIGluaXRpYWxpemVycwoJZm9yIGluZGlyZWN0IG1lbWJlcnMsIGFzIGl0IGlzIGludmFsaWQuCgpXZWQgT2N0IDI1IDExOjM1OjI4IDE5OTUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBhbGxvdyBgZnJpZW5kIHNpZ25lZCAoKScuCgpGcmkgT2N0IDIwIDEwOjMwOjU5IDE5OTUgIE1pa2UgU3R1bXAgIDxtcnNAY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZvci5pbml0LnN0YXRlbWVudCk6IENhdGNoIGNvbXBvdW5kIHN0YXRlbWVudHMgaW5zaWRlIGZvcgoJaW5pdGlhbGl6YXRpb25zLCBpZiB3ZSdyZSBiZWluZyBwZWRhbnRpYy4KCkZyaSBPY3QgMjAgMTA6MDM6NDIgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZGVjbC5jIChsb29rdXBfdGFnKTogUmV0dXJuIE5VTExfVFJFRSBpZiB3ZSBkb24ndCBmaW5kIHdoYXQgd2UgYXJlCglsb29raW5nIGZvci4KClRodSBPY3QgMTkgMTQ6MjY6MTAgMTk5NSAgTWlrZSBTdHVtcCAgPG1yc0BjeWdudXMuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9leHByKTogRG9uJ3QgY29yZSBkdW1wIHdoZW4gYSBib29sZWFuIGV4cHJlc3Npb24gaXMKCXVzZWQgYXMgYSBkZWZhdWx0IGFyZ3VtZW50LgoKVGh1IE9jdCAxOSAxMDozNjozMCAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2JpdHMpOiBDaGVjayBhZ2dyZWdhdGVfdmFsdWVfcCBpbnN0ZWFkIG9mCglSRVRVUk5fSU5fTUVNT1JZLgoKV2VkIE9jdCAxOCAxODoxMjozMiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2JpdHMpOiBBbHNvIHNldCBUUkVFX0FERFJFU1NBQkxFIG9uIGEKCUJMS21vZGUgdHlwZSB0aGF0IHdvdWxkIG90aGVyd2lzZSBiZSByZXR1cm5lZCBpbiByZWdpc3RlcnMuCgpNb24gT2N0IDE2IDEyOjMyOjE5IDE5OTUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGcrKy5jIChXSVRITElCQyk6IE5ldyBtYWNyby4KCShtYWluKTogRGVjbGFyZSBzYXdfbGliYy4gIFVzZSBXSVRITElCQyBpZiBgLWxjJyB3YXMgdXNlZDsgc2V0CglzYXdfbGliYyBhbmQgcGFzcyBpdCBhdCB0aGUgZW5kIGlmIGl0IHdhcyBzZXQuCgpXZWQgT2N0IDExIDE2OjMwOjM0IDE5OTUgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIHBhcnNlLnkgKGZuLmRlZjEpOiBDYWxsIHNwbGl0X3NwZWNzX2F0dHJzIGluCglkZWNsbW9kcyBub3R5cGVfZGVjbGFyYXRvciBjYXNlLgo=