MjAwOC0wOC0wNyAgQWFyb24gVy4gTGFGcmFtYm9pc2UgIDxhYXJvbmF2YXk2MkBhYXJvbndsLmNvbT4KCgkqIHBleC13aW4zMi5jIChhcmd2X3RvX2FyZ2MpOiBOZXcgZnVuY3Rpb24uCgkoc3Bhd25fc2NyaXB0KTogRHVwbGljYXRlIGFyZ3YgYmVmb3JlIGNhbGxpbmcgd2luMzJfc3Bhd24uCgoyMDA4LTA3LTMxICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIG1rc3RlbXBzLmMgKG1rc3RlbXBzKTogS2VlcCBsb29waW5nIGV2ZW4gZm9yIEVJU0RJUi4KCjIwMDgtMDctMzEgIERlbnlzIFZsYXNlbmtvICA8ZHZsYXNlbmtAcmVkaGF0LmNvbT4KCgkqIG1rc3RlbXBzLmMgKG1rc3RlbXBzKTogSWYgb3BlbiBmYWlsZWQgd2l0aCBlcnJubyBvdGhlciB0aGFuCglFRVhJU1QsIHJldHVybiBpbW1lZGlhdGVseS4KCSogbWFrZS10ZW1wLWZpbGUuYzogSW5jbHVkZSBlcnJuby5oLgoJKG1ha2VfdGVtcF9maWxlKTogSWYgbWtzdGVtcHMgZmFpbGVkLCBwcmludCBhbiBlcnJvciBtZXNzYWdlCgliZWZvcmUgYWJvcnRpbmcuCgoyMDA4LTA3LTI0ICBSYWxmIFdpbGRlbmh1ZXMgIDxSYWxmLldpbGRlbmh1ZXNAZ214LmRlPgoKCSogbWFpbnQtdG9vbCAoZGVwcyk6IE91dHB1dCBjb25maWcuaCBpbnN0ZWFkIG9mIHN0YW1wLWguCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkIGRlcHMuCgkobWFpbnRhaW5lci1jbGVhbi1zdWJkaXIpOiBEZXBlbmQgb24gc3RhbXAtaCByYXRoZXIgdGhhbiBjb25maWcuaC4KCVJldmVydHMgMjAwNy0wNy0xMSBjaGFuZ2UuCgoyMDA4LTA2LTE5ICBFcmljIEJsYWtlICA8ZWJiOUBieXUubmV0PgoKCUFkanVzdCBzdHJzaWduYWwgdG8gUE9TSVggMjAweCBwcm90b3R5cGUuCgkqIHN0cnNpZ25hbC5jIChzdHJzaWduYWwpOiBSZW1vdmUgY29uc3QuCgoyMDA4LTA2LTE3ICBSYWxmIFdpbGRlbmh1ZXMgIDxSYWxmLldpbGRlbmh1ZXNAZ214LmRlPgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwOC0wNi0xNSAgUmFsZiBXaWxkZW5odWVzICA8UmFsZi5XaWxkZW5odWVzQGdteC5kZT4KCgkqIGxpYmliZXJ0eS50ZXhpOiBFeHBhbmQgVEFCcywgZHJvcCBpbmRlbnRhdGlvbiBvdXRzaWRlIGV4YW1wbGVzLgoJKiBvYnN0YWNrcy50ZXhpOiBMaWtld2lzZS4KCjIwMDgtMDQtMjEgIEF1cmVsaWVuIEphcm5vICA8YXVyZWxpZW5AYXVyZWwzMi5uZXQ+CgoJKiBsaWJpYmVydHkvY29uZmlndXJlLmFjOiB1c2UgLWZQSUMgb24gTGludXgvTUlQUyBob3N0cy4KCSogbGliaWJlcnR5L2NvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDgtMDQtMTggIEtyaXMgVmFuIEhlZXMgPGtyaXMudmFuLmhlZXNAb3JhY2xlLmNvbT4KCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkZWQgdGVzdHMgZm9yIGNoYXIxNl90IGFuZCBjaGFyMzJfdC4KCjIwMDgtMDQtMTggIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgYm9vdHN0cmFwLzM1NDU3CgkqIGFjbG9jYWwubTQ6IEFkZCBvdmVycmlkZS5tNC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwOC0wMy0zMSAgSWFuIExhbmNlIFRheWxvciAgPGlhbnRAZ29vZ2xlLmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRfc3Vic3RpdHV0aW9uKTogQ29ycmVjdCBvdmVyZmxvdyBjaGVjayB0byBhdm9pZAoJLWZzdHJpY3Qtb3ZlcmZsb3cgb3B0aW1pemF0aW9ucy4KCjIwMDgtMDMtMjcgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWd1cmUuYWMgKGZyYWdzKTogRG9uJ3Qgc2V0LCB1c2UgZnJhZyBpbnN0ZWFkLgoJKFBJQ0ZMQUcpOiBTZXQgaGVyZSBhbmQgc3Vic3RpdHV0ZS4KCSogTWFrZWZpbGUuaW4gKFBJQ0ZMQUcpOiBTdWJzdGl0dXRlIGZyb20gYXV0b2NvbmYuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDgtMDMtMjQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50QGdvb2dsZS5jb20+CgoJKiBzaGExLmM6IE5ldyBmaWxlLCBmcm9tIGdudWxpYi4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQgZGVwZW5kZW5jaWVzLgoJKENGSUxFUyk6IEFkZCBzaGExLmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIHNoYTEuby4KCjIwMDgtMDMtMjQgIERvdWcgRXZhbnMgIDxkamVAZ29vZ2xlLmNvbT4KCgkqIG1ha2UtcmVsYXRpdmUtcHJlZml4LmMgKG1ha2VfcmVsYXRpdmVfcHJlZml4XzEpOiBIYW5kbGUgTlVMTAoJcmV0dXJuIGZyb20gc3RyZHVwLgoKMjAwOC0wMy0xMiAgU2VvbmdiYWUgUGFyayA8c2VvbmdiYWUucGFya0BnbWFpbC5jb20+CgoJKiBjcGx1cy1kZW0uYyAobWFsbG9jLCByZWFsbG9jKTogVXNlIHZvaWQgKiBpbnN0ZWFkIG9mIGNoYXIgKgoJYXMgcmV0dXJuIHR5cGUuCgoyMDA4LTAzLTExICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgoKCSogbWQ1LmMgKG1kNV9wcm9jZXNzX2J5dGVzKTogRG8gbm90IGFzc3VtZSB0aGF0IG1lbWNweSB3aWxsCglwcm92aWRlIGEgcmV0dXJuIHZhbHVlLgoKMjAwOC0wMi0xOSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJUFIgb3RoZXIvMTI2MTgKCSogdGVzdHN1aXRlL01ha2VmaWxlLmluIChtb3N0bHljbGVhbik6IFJlbW92ZSBhbnkgY29yZSBmaWxlLgoKMjAwOC0wMS0yNiAgRGF2aWQgRGFuZXkgIDxkZGFuZXlAYXZ0cmV4LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRfZHVtcCk6IEhhbmRsZSBERU1BTkdMRV9DT01QT05FTlRfSkFWQV9SRVNPVVJDRSwKCURFTUFOR0xFX0NPTVBPTkVOVF9DT01QT1VORF9OQU1FLCBhbmQKCURFTUFOR0xFX0NPTVBPTkVOVF9DSEFSQUNURVIgY2FzZXMuCgkoZF9tYWtlX2NvbXApOiBIYW5kbGUgREVNQU5HTEVfQ09NUE9ORU5UX0NPTVBPVU5EX05BTUUgYW5kCglERU1BTkdMRV9DT01QT05FTlRfSkFWQV9SRVNPVVJDRSBjYXNlcy4KCShkX21ha2VfY2hhcmFjdGVyKTogTmV3IGZ1bmN0aW9uLgoJKGRfamF2YV9yZXNvdXJjZSk6IFNhbWUuCgkoZF9zcGVjaWFsX25hbWUpOiBIYW5kbGUgIkdyIiBjYXNlLgoJKGRfcHJpbnRfY29tcCk6IEhhbmRsZSBERU1BTkdMRV9DT01QT05FTlRfSkFWQV9SRVNPVVJDRSwKCURFTUFOR0xFX0NPTVBPTkVOVF9DT01QT1VORF9OQU1FLCBhbmQKCURFTUFOR0xFX0NPTVBPTkVOVF9DSEFSQUNURVIgY2FzZXMuCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIHRlc3QgZm9yIGphdmEgcmVzb3VyY2UgbmFtZQoJbWFuZ2xpbmcuCgoyMDA4LTAxLTIzICBUaGlhZ28gSnVuZyBCYXVlcm1hbm4gIDxiYXVlcm1hbkBici5pYm0uY29tPgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2Z1bmN0aW9uX25hbWUpOiBDaGFuZ2VkIHRvIHJldHVybiB2YWx1ZQoJaW5kaWNhdGluZyBpZiBhIG5hbWUgd2FzIGNvcnJlY3RseSBkZW1hbmdsZWQuCgkoaXRlcmF0ZV9kZW1hbmdsZV9mdW5jdGlvbik6IFVzZSBkZW1hbmdsZV9mdW5jdGlvbl9uYW1lIHJldHVybgoJdmFsdWUuCgoyMDA4LTAxLTE5ICBNYW51ZWwgTG9wZXotSWJhbmV6ICA8bWFudUBnY2MuZ251Lm9yZz4KCglQUiBvdGhlci8zMzc2OAoJKiBzcGxheS10cmVlLmMgKHJvdGF0ZV9sZWZ0KTogRml4IG1pbm9yIHR5cG8gaW4gY29tbWVudC4KCShyb3RhdGVfcmlnaHQpOiBMaWtld2lzZS4KCjIwMDctMTEtMTIgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogZmxvYXRmb3JtYXQuYyAoZmxvYXRmb3JtYXRfaWJtX2xvbmdfZG91YmxlX2lzX3ZhbGlkKTogRml4Cgljb21waWxlciB3YXJuaW5ncy4KCShmbG9hdGZvcm1hdF9pYm1fbG9uZ19kb3VibGUpOiBVc2UKCWZsb2F0Zm9ybWF0X2libV9sb25nX2RvdWJsZV9pc192YWxpZC4KCjIwMDctMTEtMDcgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoJICAgIERhbmllbCBKYWNvYm93aXR6ICA8ZGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmbG9hdGZvcm1hdC5jIChtYW50X2JpdHNfc2V0KTogTmV3LgoJKGZsb2F0Zm9ybWF0X3RvX2RvdWJsZSk6IFVzZSBpdC4gIE5vdGUgbm8gc3BlY2lhbCBoYW5kbGluZyBvZgoJc3BsaXQgZm9ybWF0cy4KCShmbG9hdGZvcm1hdF9mcm9tX2RvdWJsZSk6IE5vdGUgbm8gc3BlY2lhbCBoYW5kaW5nIG9mIHNwbGl0Cglmb3JtYXRzLgoJKGZsb2F0Zm9ybWF0X2libV9sb25nX2RvdWJsZV9pc192YWxpZCwKCWZsb2F0Zm9ybWF0X2libV9sb25nX2RvdWJsZSk6IE5ldy4KCShmbG9hdGZvcm1hdF9pZWVlX3NpbmdsZV9iaWcsIGZsb2F0Zm9ybWF0X2llZWVfc2luZ2xlX2xpdHRsZSwKCWZsb2F0Zm9ybWF0X2llZWVfZG91YmxlX2JpZywgZmxvYXRmb3JtYXRfaWVlZV9kb3VibGVfbGl0dGxlLAoJZmxvYXRmb3JtYXRfaWVlZV9kb3VibGVfbGl0dGxlYnl0ZV9iaWd3b3JkLCBmbG9hdGZvcm1hdF92YXhfZiwKCWZsb2F0Zm9ybWF0X3ZheF9kLCBmbG9hdGZvcm1hdF92YXhfZywgZmxvYXRmb3JtYXRfaTM4N19leHQsCglmbG9hdGZvcm1hdF9tNjg4ODFfZXh0LCBmbG9hdGZvcm1hdF9pOTYwX2V4dCwKCWZsb2F0Zm9ybWF0X204ODExMF9leHQsIGZsb2F0Zm9ybWF0X204ODExMF9oYXJyaXNfZXh0LAoJZmxvYXRmb3JtYXRfYXJtX2V4dF9iaWcsIGZsb2F0Zm9ybWF0X2FybV9leHRfbGl0dGxlYnl0ZV9iaWd3b3JkLAoJZmxvYXRmb3JtYXRfaWE2NF9zcGlsbF9iaWcsIGZsb2F0Zm9ybWF0X2lhNjRfc3BpbGxfbGl0dGxlLAoJZmxvYXRmb3JtYXRfaWE2NF9xdWFkX2JpZywgZmxvYXRmb3JtYXRfaWE2NF9xdWFkX2xpdHRsZSk6IFVwZGF0ZQoJZm9yIGFkZGl0aW9uIG9mIHNwbGl0X2hhbGYgZmllbGQuCgoyMDA3LTA5LTA2ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBwZXhlY3V0ZS50eGggKHBleF9mcmVlKTogRG9jdW1lbnQgcHJvY2VzcyBraWxsaW5nLgoKMjAwNy0wOC0zMSAgRG91Z2xhcyBHcmVnb3IgIDxkb3VnLmdyZWdvckBnbWFpbC5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkX2R1bXApOiBIYW5kbGUKCURFTUFOR0xFX0NPTVBPTkVOVF9SVkFMVUVfUkVGRVJFTkNFLgoJKGRfbWFrZV9jb21wKTogRGl0dG8uCgkoY3BsdXNfZGVtYW5nbGVfdHlwZSk6IERpdHRvLgoJKGRfcHJpbnRfY29tcCk6IERpdHRvLgoJKGRfcHJpbnRfbW9kKTogRGl0dG8uCgkoZF9wcmludF9mdW5jdGlvbl90eXBlKTogRGl0dG8uCgoyMDA3LTA4LTI0ICBLYWkgVGlldHogIDxrYWkudGlldHpAb25ldmlzaW9uLmNvbT4KCgkqIHBleC1jb21tb24uaDogKHBleF9mdW5jcyk6IFJldHlwZWQgd2FpdCBhbmQgZXhlY19jaGlsZCB0byBwaWRfdC4KCSogcGV4LWRqZ3BwLmM6IExpa2V3aXNlLgoJKiBwZXgtbXNkb3MuYzogTGlrZXdpc2UuCgkqIHBleC11bml4LmM6IExpa2V3aXNlLgoJKiBwZXgtd2luMzIuYzogTGlrZXdpc2UuCgoyMDA3LTA4LTE3ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAYWNjZXNzLWNvbXBhbnkuY29tPgoKCSogbWFrZS1yZWxhdGl2ZS1wcmVmaXguYyAobWFrZV9yZWxhdGl2ZV9wcmVmaXhfMSk6IFJlc291cmNlIGxlYWtzLgoKMjAwNy0wOC0wMyAgTWljaGFlbCBTbnlkZXIgIDxtc255ZGVyQGFjY2Vzcy1jb21wYW55LmNvbT4KCgkqIG1ha2UtcmVsYXRpdmUtcHJlZml4LmMgKG1ha2VfcmVsYXRpdmVfcHJlZml4XzEpOiBGaXggcmVzb3VyY2UKCWxlYWsuCgoyMDA3LTA3LTMxICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAYWNjZXNzLWNvbXBhbnkuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoZF9wcmludF9jb21wKTogR3VhcmQgYWdhaW5zdCBudWxsLgoKMjAwNy0wNy0yNSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogUmVtb3ZlIHRlcm5hcnkuYy4KCShSRVFVSVJFRF9PRklMRVMpOiBSZW1vdmUgLi90ZXJuYXJ5Lm8uCgkoSU5TVEFMTEVEX0hFQURFUlMpOiBSZW1vdmUgdGVybmFyeS5oLgoJKHRlcm5hcnkubyk6IFJlbW92ZS4KCSogdGVybmFyeS5jOiBSZW1vdmUuCgoyMDA3LTA3LTIzICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGFyZ3YuYyAod3JpdGVhcmd2KTogRml4IHR5cG8gaW4gaW5saW5lIGRvY3VtZW50YXRpb24uCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwNy0wNy0xNyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMgKHRhcmdldF9oZWFkZXJfZGlyLCBtc2Rvc2RqZ3BwKTogUmVtb3ZlIGR1cGxpY2F0ZQoJZ2V0dGltZW9mZGF5IGVudHJ5LgoJKiBjb25maWd1cmU6IExpa2V3aXNlLgoKMjAwNy0wNy0xMSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBtYWludC10b29sIChkZXBzKTogT3V0cHV0IHN0YW1wLWggaW5zdGVhZCBvZiBjb25maWcuaC4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQgZGVwcy4KCShtYWludGFpbmVyLWNsZWFuLXN1YmRpcik6IERlcGVuZCBvbiBzdGFtcC1oIHJhdGhlciB0aGFuIGNvbmZpZy5oLgoKMjAwNy0wNy0wMiAgU2ltb24gQmFsZHdpbiA8c2ltb25iQGdvb2dsZS5jb20+CgoJKiBhcmd2LmMgKHdyaXRlYXJndik6IFJlbW92ZWQgZGVjbGFyYXRpb24gb2YgdW51c2VkIHZhcmlhYmxlLgoKMjAwNy0wNi0xNCAgUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogVXNlIEFDWF9QUk9HX0NDX0FMTU9TVF9QRURBTlRJQyB0b28uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDctMDYtMTQgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBhY2xvY2FsLm00OiBJbmNsdWRlIGNvbmZpZy93YXJuaW5ncy5tNC4KCSogY29uZmlndXJlLmFjOiBVc2UgQUNYX1BST0dfQ0NfV0FSTklOR19PUFRTLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA3LTA2LTA3ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogTm9uLWRlZmF1bHQgbXVsdGlsaWJzIGNhbiBiZSBjcm9zcyBjb21waWxhdGlvbnMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZQoKMjAwNy0wNS0wNyAgTmF0aGFuIEZyb3lkICA8ZnJveWRuakBjb2Rlc291cmNlcnkuY29tPgoKCSogYXJndi5jICh3cml0ZWFyZ3YpOiBOZXcgZnVuY3Rpb24uCgoyMDA3LTA1LTA1ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRfbmFtZSk6IERldGVjdCBsb2NhbC1zb3VyY2UtbmFtZS4KCShkX3ByZWZpeCk6IExpa2V3aXNlLgoJKGRfdW5xdWFsaWZpZWRfbmFtZSk6IEltcGxlbWVudCBsb2NhbC1zb3VyY2UtbmFtZS4KCjIwMDctMDUtMDMgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgoKCSogZmlsZW5hbWVfY21wLmM6IFJlcGxhY2UgaW5jbHVkZSBvZiBjdHlwZS5oIGJ5IGluY2x1ZGUgb2YKCXNhZmUtY3R5cGUuaC4KCShmaWxlbmFtZV9jbXApOiBVc2UgVE9MT1dFUiBpbnN0ZWFkIG9mIHRvbG93ZXIgZm9yIGNvbnZlcnNpb25zCgl0aGF0IGFyZSBsb2NhbGUtaW5kZXBlbmRlbnQuCgkqIE1ha2VmaWxlLmluIChmaWxlbmFtZV9jbXAubyk6IEFkZCBkZXBlbmRlbmN5IG9uIHNhZmUtY3R5cGUuaC4KCjIwMDctMDQtMTEgIFRob21hcyBOZXVtYW5uICB0bmV1bWFubkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQKCgkqIGFyZ3YuYzogVXNlIEFOU0kgQyBkZWNsYXJhdGlvbnMuCgkqIG1ha2UtcmVsYXRpdmUtcHJlZml4LmM6IExpa2V3aXNlLgoKMjAwNy0wNC0wNiAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29yZS5jb20+CgoJKiBmaWxlbmFtZV9jbXAuYyAoZmlsZW5hbWVfY21wKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoKMjAwNy0wNC0wMiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGZpbGVuYW1lX2NtcC5jOiBJbmNsdWRlICJjb25maWcuaCIuCgoyMDA3LTAzLTI5ICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBhZGFjb3JlLmNvbT4KCgkqIGZpbGVuYW1lX2NtcC5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBmaWxlbmFtZV9jbXAuYy4KCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgZmlsZW5hbWVfY21wLm8KCShmaWxlbmFtZV9jbXAubyk6IE5ldyBydWxlLgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDctMDMtMTUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAYXBwbGUuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoZF9lbmNvZGluZyk6IEV4aXQgZWFybHkgb24gZXJyb3IuCgkoZF9wb2ludGVyX3RvX21lbWJlcl90eXBlKTogRXhpdCBlYXJseSBpZiBjcGx1c19kZW1hbmdsZV90eXBlCglyZXR1cm5zIE5VTEwuCgkoY3BsdXNfZGVtYW5nbGVfdHlwZSk6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IE5ldyB0ZXN0Y2FzZS4KCjIwMDctMDMtMDEgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW46IEFkZCBpbnN0YWxsLXBkZiB0YXJnZXQgYXMgY29waWVkIGZyb20KCWF1dG9tYWtlIHYxLjEwIHJ1bGVzLgoJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IEFkZCBkdW1teSBpbnN0YWxsLXBkZiB0YXJnZXQuCgoyMDA3LTAzLTAxICBQZXRlciBCcmVpdGVubG9obmVyICA8cGViQG1wcG11Lm1wZy5kZT4KCSAgICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGxpYmVydHlzdXJmLmZyPgoKCVBSIG90aGVyLzE2NTEzCgkqIE1ha2VmaWxlLmluOiBJbnN0YWxsIGxpYnJhcnkgdW5kZXIgJChNVUxUSU9TRElSKSwgbm90ICQoTVVMVElTVUJESVIpLgoJSW5zdGFsbCBoZWFkZXJzIGluIG11bHRpbGliIGluZGVwZW5kZW50IGxvY2F0aW9uLgoKMjAwNy0wMi0yNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWM6IGFkZCBkamdwcC1zcGVjaWZpYyByZXN1bHRzLCBzbyB3ZSBkb24ndCBoYXZlIHRvCglsaW5rIGR1cmluZyBhIGNyb3NzIGNvbXBpbGF0aW9uLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwNy0wMS0zMSAgUmFsZiBXaWxkZW5odWVzICA8UmFsZi5XaWxkZW5odWVzQGdteC5kZT4KCgkqIGhleC5jOiBGaXggdHlwby4KCSogY2hvb3NlLXRlbXAuYzogTGlrZXdpc2UuCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwNy0wMS0zMSAgVmxhZGltaXIgUHJ1cyAgPHZsYWRpbWlyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwZXgtY29tbW9uLmggKHN0cnVjdCBwZXhfb2JqKTogTmV3IGZpZWxkcwoJc3RkZXJyX3BpcGUgYW5kIHJlYWRfZXJyLgoJKiBwZXgtY29tbW9uLmMgKHBleF9pbml0X2NvbW1vbik6IEluaXRpYWxpemUKCXN0ZGVycl9waXBlLgoJKHBleF9ydW5faW5fZW52aXJvbm1lbnQpOiBBZGQgZXJyb3IgY2hlY2tpbmcKCWZvciBQRVhfU1RERVJSX1RPX1BJUEUuICBDcmVhdGUgYSBwaXBlCglmb3Igc3RkZXJyIGlmIG5lY2Vzc2FyeS4KCShwZXhfcmVhZF9lcnIpOiBOZXcuCgkocGV4X2ZyZWUpOiBDbG9zZSByZWFkX2Vyci4KCSogcGV4ZWN1dGUudHhoOiBEb2N1bWVudCBjaGFuZ2VzLgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZWQuCgoyMDA3LTAxLTMxICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIHN0cnNpZ25hbC5jIChwc2lnbmFsKTogQ2hhbmdlIHR5cGUgb2Ygc2lnbm8gdG8gaW50LgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDctMDEtMjkgIFNpbW9uIEJhbGR3aW4gPHNpbW9uYkBnb29nbGUuY29tPgoKCSogY3AtZGVtYW5nbGUuaCAoY3BsdXNfZGVtYW5nbGVfb3BlcmF0b3JzKTogRXh0ZXJuYWwgZGVmaW5pdGlvbgoJc3VwcHJlc3NlZCBpZiBub3QgYnVpbGRpbmcgZm9yIGxpYnN0ZGMrKy4KCSogY3AtZGVtYW5nbGUuYyAoX19nY2NsaWJjeHhfZGVtYW5nbGVfY2FsbGJhY2spOiBBdWdtZW50ZWQgaW50ZXJmYWNlCgl0byBkZW1hbmdsaW5nLCBwcm92aWRlcyBhIG1hbGxvYy1sZXNzIHZlcnNpb24gb2YgX19jeGFfZGVtYW5nbGUuCgkoY3BsdXNfZGVtYW5nbGVfcHJpbnRfY2FsbGJhY2spOiBQdWJsaWMgY2FsbGJhY2sgdmVyc2lvbiBvZgoJY3BsdXNfZGVtYW5nbGVfcHJpbnQuCgkoc3RydWN0IGRfZ3Jvd2FibGVfc3RyaW5nKTogTmV3IGdyb3dhYmxlIHN0cmluZyBzdHJ1Y3R1cmUuCgkoZF9ncm93YWJsZV9zdHJpbmdfaW5pdCk6IE5ldyBmdW5jdGlvbiwgcHJvdmlkZXMgc3VwcG9ydCBmb3IKCWdyb3dhYmxlIHN0cmluZ3Mgc2VwYXJhdGUgZnJvbSBwcmludCBpbmZvLgoJKGRfZ3Jvd2FibGVfc3RyaW5nX3Jlc2l6ZSk6IExpa2V3aXNlLgoJKGRfZ3Jvd2FibGVfc3RyaW5nX2FwcGVuZF9idWZmZXIpOiBMaWtld2lzZS4KCShkX2dyb3dhYmxlX3N0cmluZ19jYWxsYmFja19hZGFwdGVyKTopOiBMaWtld2lzZS4KCShkX3ByaW50X2luaXQpOiBOZXcgcHJpbnQgaW5mbyBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KCShkX3ByaW50X2Vycm9yKTogTWFjcm8gcmVwbGFjZSBieSBpbmxpbmUgZnVuY3Rpb24uCgkoZF9wcmludF9zYXdfZXJyb3IpOiBMaWtld2lzZS4KCShkX2FwcGVuZF9jaGFyKTogTGlrZXdpc2UuCgkoZF9hcHBlbmRfYnVmZmVyKTogTGlrZXdpc2UuCgkoZF9hcHBlbmRfc3RyaW5nKTogTmV3IGlubGluZSBmdW5jdGlvbiwgcmVwbGFjZXMgdGhlCglkX2FwcGVuZF9zdHJpbmdfY29uc3RhbnQgbWFjcm8uCgkoZF9mbHVzaF9idWZmZXIpOiBOZXcgZnVuY3Rpb24sIGZsdXNoZXMgYnVmZmVyIHRvIGNhbGxiYWNrLgoJKGRfZGVtYW5nbGVfY2FsbGJhY2ssIGlzX2N0b3Jfb3JfZHRvcik6IE1hbGxvYy1iYXNlZCBmYWxsYmFjawoJZm9yIHVuc3VwcG9ydGVkIGR5bmFtaWMgYXJyYXlzIHJlcGxhY2VkIGJ5IGFsbG9jYSgpLgoJKGRfZGVtYW5nbGUpOiBSZXR1cm4gc3RyaW5nIGxlbmd0aCBlc3RpbWF0aW5nIHJlbW92ZWQuCgkoZF9kdW1wKTogTW92ZWQgZXJyb3IgY2FzZSBoYW5kbGluZyBmcm9tIGNhbGwgc2l0ZSBpbnRvIGZ1bmN0aW9uLgoJKGRfcHJpbnRfcmVzaXplKTogRnVuY3Rpb24gcmVtb3ZlZC4KCShkX3ByaW50X2FwcGVuZF9jaGFyKTogTGlrZXdpc2UuCgkoZF9wcmludF9hcHBlbmRfYnVmZmVyKTogTGlrZXdpc2UuCgkoZF9wcmludF9lcnJvcik6IExpa2V3aXNlLgoJKGRfcHJpbnRfY29tcCk6IEFkZGVkIHNwZWNpYWwgY2FzZSBoYW5kbGluZyBmb3IgSmF2YSBhcnJheXMuCgkoamF2YV9kZW1hbmdsZV92Myk6IFJlbW92ZWQgc3RyaW5nIHBvc3QtcHJvY2Vzc2luZyBmb3IgSmF2YSBhcnJheXMsCglub3cgcmVwbGFjZWQgYnkgc3BlY2lhbCBjYXNlIGhhbmRsaW5nIGluIGRfcHJpbnRfY29tcC4KCShjcGx1c19kZW1hbmdsZV92M19jYWxsYmFjayk6IEF1Z21lbnRlZCBpbnRlcmZhY2UgdG8gZGVtYW5nbGluZywKCXByb3ZpZGVzIGEgbWFsbG9jLWxlc3MgdmVyc2lvbiBvZiBjcGx1c19kZW1hbmdsZV92My4KCShqYXZhX2RlbWFuZ2xlX3YzX2NhbGxiYWNrKTogQXVnbWVudGVkIGludGVyZmFjZSB0byBkZW1hbmdsaW5nLAoJcHJvdmlkZXMgYSBtYWxsb2MtbGVzcyB2ZXJzaW9uIG9mIGphdmFfZGVtYW5nbGVfdjMuCgoyMDA3LTAxLTEyICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIHBleC11bml4LmMgKHdyaXRlZXJyKTogQ2FzdCB3cml0ZSByZXN1bHQgdG8gdm9pZC4KCgkqIGNob29zZS10ZW1wLmMgKGNob29zZV90ZW1wX2Jhc2UpOiBDaGVjayB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsCgl0byBta3RlbXAgcmF0aGVyIHRoYW4gdGVzdGluZyB0aGUgbGVuZ3RoIG9mIHRoZSBtb2RpZmllZCBzdHJpbmcuCgoyMDA2LTEyLTIwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmg6IEFkZCBjb21tZW50IGV4cGxhaW5pbmcgd2hhdCB0byBkbyB0byBhdm9pZAoJb3ZlcnJ1bm5pbmcgc3RyaW5nLgoJKGRfY2hlY2tfY2hhcik6IE5ldy4KCShkX25leHRfY2hhcik6IERvbid0IGFkdmFuY2UgcGFzdCB0cmFpbGluZyAnXDAnLgoJKiBjcC1kZW1hbmdsZS5jIChjcGx1c19kZW1hbmdsZV9tYW5nbGVkX25hbWUpOiBVc2UgZF9jaGVja19jaGFyLgoJKGRfbmVzdGVkX25hbWUpOiBMaWtld2lzZS4KCShkX3NwZWNpYWxfbmFtZSk6IExpa2V3aXNlLgoJKGRfY2FsbF9vZmZzZXQpOiBMaWtld2lzZS4KCShkX2Z1bmN0aW9uX3R5cGUpOiBMaWtld2lzZS4KCShkX2FycmF5X3R5cGUpOiBMaWtld2lzZS4KCShkX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGUpOiBMaWtld2lzZS4KCShkX3RlbXBsYXRlX3BhcmFtKTogTGlrZXdpc2UuCgkoZF90ZW1wbGF0ZV9hcmdzKTogTGlrZXdpc2UuCgkoZF90ZW1wbGF0ZV9hcmcpOiBMaWtld2lzZS4KCShkX2V4cHJfcHJpbWFyeSk6IExpa2V3aXNlLgoJKGRfbG9jYWxfbmFtZSk6IExpa2V3aXNlLgoJKGRfc3Vic3RpdHV0aW9uKTogTGlrZXdpc2UuCgkoZF9jdG9yX2R0b3JfbmFtZSk6IFVzZSBkX2FkdmFuY2UgcmF0aGVyIHRoYW4gZF9uZXh0X2NoYXIuCgkqIHRlc3RzdWl0ZS90ZXN0LWRlbWFuZ2xlLmM6IEluY2x1ZGUgc3lzL21tYW4uaC4KCShNQVBfQU5PTllNT1VTKTogRGVmaW5lLgoJKHByb3RlY3RfZW5kKTogTmV3LgoJKG1haW4pOiBVc2UgcHJvdGVjdF9lbmQuCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIHRlc3RjYXNlcyBmb3Igb3ZlcnJ1bm5pbmcKCXRoZSBlbmQgb2YgdGhlIHN0cmluZy4KCjIwMDYtMTEtMzAgIEFuZHJldyBTdHViYnMgIDxhbmRyZXcuc3R1YmJzQHN0LmNvbT4KCSAgICBKIm9ybiBSZW5uZWNrZSA8am9lcm4ucmVubmVja2VAc3QuY29tPgoKCVBSIGRyaXZlci8yOTkzMQoJKiBtYWtlLXJlbGF0aXZlLXByZWZpeC5jIChtYWtlX3JlbGF0aXZlX3ByZWZpeF8xKTogTmV3IGZ1bmN0aW9uLAoJYnJva2VuIG91dCBvZiBtYWtlX3JlbGF0aXZlX3ByZWZpeC4gIE1ha2UgbGluayByZXNvbHV0aW9uIGRlcGVuZGVudAoJb24gbmV3IHBhcmFtZXRlci4KCShtYWtlX3JlbGF0aXZlX3ByZWZpeCk6IFVzZSBtYWtlX3JlbGF0aXZlX3ByZWZpeF8xLgoJKG1ha2VfcmVsYXRpdmVfcHJlZml4X2lnbm9yZV9saW5rcyk6IE5ldyBmdW5jdGlvbi4KCjIwMDYtMTEtMDggIFZsYWRpbWlyIFBydXMgIDx2bGFkaW1pckBjb2Rlc291cmNlcnkuY29tPgoKCSogcGV4LXdpbjMyLmMgKG5vX3N1ZmZpeGVzKTogUmVtb3ZlLgoJKHN0ZF9zdWZmaXhlcyk6IEFkZCAiIiBhcyBmaXJzdCBlbGVtZW50LgoJKGZpbmRfZXhlY3V0YWJsZSk6IFJlbW92ZSBkZXRlY3Rpb24gb2YgYWxyZWFkeS1wcmVzZW50CglleHRlbnNpb24uIFRyeSBhbGwgc3VmZml4ZXMgaW4gc3RkX3N1ZmZpeGVzLgoKMjAwNi0xMS0wNyAgSnVsaWFuIEJyb3duICA8anVsaWFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmbG9hdGZvcm1hdC5jIChnZXRfZmllbGQpOiBGaXggc2VnZmF1bHQgd2l0aCBsaXR0bGUtZW5kaWFuIHdvcmQKCW9yZGVyIG9uIDY0LWJpdCBob3N0cy4KCShwdXRfZmllbGQpOiBMaWtld2lzZS4KCShtaW4pOiBNb3ZlIGRlZmluaXRpb24uCgoyMDA2LTEwLTI2ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCXBleC13aW4zMi5jIChhcmd2X3RvX2NtZGxpbmUpOiBSZXBsYWNlIHhtYWxsb2Mgd2l0aCBYTkVXVkVDLgoJKGZpbmRfZXhlY3V0YWJsZSk6IExpa2V3aXNlLgoJKHdpbjMyX3NwYXduKTogQ2FzdCBhbGxvY2EgcmV0dXJuIHRvIChjaGFyKiopLgoJUmVwbGFjZSBtYWxsb2Mgd2l0aCBYTkVXVkVDLgoJYmNvcHkuYyAoYmNvcHkpOiBBZGQgZXhwbGljdCBjYXN0cyBpbiBhc3NpZ25tZW50cy4KCjIwMDYtMTAtMjUgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogcGV4ZWN1dGUudHhoOiBXcmFwIHBleGVjdXRlJ3MgImZsYWciIGFyZ3VtZW50IHdpdGggQHZhciB7Li59LgoKMjAwNi0xMC0xMCAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIE1ha2VmaWxlLmluOiBBZGRlZCAicGRmIiwgImxpYmliZXJ0eS5wZGYiIHRhcmdldCBzdXBwb3J0LgoJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IEFkZGVkIGVtcHR5ICJwZGYiIHRhcmdldC4KCjIwMDYtMDktMjIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJUFIgb3RoZXIvMjkxNzYKCSogY3AtZGVtYW5nbGUuYyAoZF9zdWJzdGl0dXRpb24pOiBDaGVjayBmb3Igb3ZlcmZsb3cgd2hlbgoJY29tcHV0aW5nIHN1YnN0aXR1dGlvbiBpbmRleC4KCjIwMDYtMDgtMzAgIENvcmlubmEgVmluc2NoZW4gIDxjb3Jpbm5hQHZpbnNjaGVuLmRlPgoKCSogY29uZmlndXJlLmFjOiBBZGQgY2FzZSBmb3IgTWluZ3cgYXMgaG9zdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNi0wOC0yNyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCglQUiBkcml2ZXIvMjc2MjIKCSogcGV4LWNvbW1vbi5oIChzdHJ1Y3QgcGV4X2Z1bmNzKTogQWRkIHRvY2xvc2UgcGFyYW1ldGVyIHRvCglleGVjX2NoaWxkIGZpZWxkLgoJKiBwZXgtY29tbW9uLmMgKHBleF9ydW5faW5fZW52aXJvbm1lbnQpOiBQYXNzIHRvY2xvc2UgdG8KCWV4ZWNfY2hpbGQuCgkqIHBleC1kamdwcC5jIChwZXhfZGpncHBfZXhlY19jaGlsZCk6IEFkZCB0b2Nsb3NlIHBhcmFtZXRlci4KCSogcGV4LXVuaXguYyAocGV4X3VuaXhfZXhlY19jaGlsZCk6IExpa2V3aXNlLgoJKiBwZXgtbXNkb3MuYyAocGV4X21zZG9zX2V4ZWNfY2hpbGQpOiBMaWtld2lzZS4KCSogcGV4LXdpbjMyLmMgKHBleF93aW4zMl9leGVjX2NoaWxkKTogTGlrZXdpc2UuCgoJUFIgb3RoZXIvMjg3OTcKCSogY3AtZGVtYW5nbGUuYyAoZF9wb2ludGVyX3RvX21lbWJlcl90eXBlKTogRG8gYWRkIGEgc3Vic3RpdHV0aW9uCglmb3IgYSBxdWFsaWZpZWQgbWVtYmVyIHdoaWNoIGlzIG5vdCBhIGZ1bmN0aW9uLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCB0ZXN0IGNhc2UuCgoyMDA2LTA3LTI3ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJUFIgcnRsLW9wdGltaXphdGlvbi8yODA3MQoJKiBoYXNodGFiLmMgKGh0YWJfZW1wdHkpOiBDbGVhciBvdXQgbl9kZWxldGVkL25fZWxlbWVudHM7Cglkb3duc2l6ZSB0aGUgaGFzaHRhYmxlLgoKMjAwNi0wNy0wNCAgUGV0ZXIgTydHb3JtYW4gIDxwZXRlckBwb2dtYS5jb20+CgoJKiBNYWtlZmlsZS5pbjogY2htb2QgNjQ0IGJlZm9yZSByYW5saWIgZHVyaW5nIGluc3RhbGwuCgoyMDA2LTA2LTAyICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBleC11bml4LmMgKHBleF91bml4X2V4ZWNfY2hpbGQpOiBJbnNlcnQgY2FzdCB3aGVuIGFzc2lnbmluZwoJdG8gZW52aXJvbi4KCjIwMDYtMDYtMDEgIE1hcmsgU2hpbndlbGwgIDxzaGlud2VsbEBjb2Rlc291cmNlcnkuY29tPgoKCSogcGV4LWNvbW1vbi5jOiBOZXcgZnVuY3Rpb24gcGV4X3J1bl9pbl9lbnZpcm9ubWVudC4KCSogcGV4LWNvbW1vbi5oOiBBZGQgZW52aXJvbm1lbnQgcGFyYW1ldGVyIHRvIGV4ZWNfY2hpbGQuCgkqIHBleC1tc2Rvcy5jOiBBZGQgZW52aXJvbm1lbnQgcGFyYW1ldGVyIHRvIHBleF9tc2Rvc19leGVjX2NoaWxkLgoJKiBwZXgtZGpncHAuYzogQWRkIGVudmlyb25tZW50IHBhcmFtZXRlciB0byBwZXhfZGpncHBfZXhlY19jaGlsZC4KCShwZXhfZGpncHBfZXhlY19jaGlsZCk6IFBhc3MgZW52aXJvbm1lbnQgdG8gY2hpbGQgcHJvY2Vzcy4KCSogcGV4LXVuaXguYzogQWRkIGVudmlyb25tZW50IHBhcmFtZXRlciB0byBwZXhfdW5peF9leGVjX2NoaWxkLgoJKHBleF91bml4X2V4ZWNfY2hpbGQpOiBQYXNzIGVudmlyb25tZW50IHRvIGNoaWxkIHByb2Nlc3MuCgkqIHBleC13aW4zMi5jOiBBZGQgZW52aXJvbm1lbnQgcGFyYW1ldGVyIHRvIHBleF93aW4zMl9leGVjX2NoaWxkLgoJTmV3IGZ1bmN0aW9uIGVudl9jb21wYXJlIGZvciBjb21wYXJpbmcgVkFSPVZBTFVFIHBhaXJzLgoJKHdpbjMyX3NwYXduKTogQXNzZW1ibGUgZW52aXJvbm1lbnQgYmxvY2sgYW5kIHBhc3MgdG8gQ3JlYXRlUHJvY2Vzcy4KCShzcGF3bl9zY3JpcHQpOiBQYXNzIGVudmlyb25tZW50IHRocm91Z2ggdG8gd2luMzJfc3Bhd24uCgkocGV4X3dpbjMyX2V4ZWNfY2hpbGQpOiBQYXNzIGVudmlyb25tZW50IHRocm91Z2ggdG8gc3Bhd25fc2NyaXB0IGFuZAoJd2luMzJfc3Bhd24uCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlLgoJKiBwZXhlY3V0ZS50eGg6IERvY3VtZW50IHBleF9ydW5faW5fZW52aXJvbm1lbnQuCgoyMDA2LTA1LTI4ICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1rc3RlbXBzLmM6IE9wZW4gdGVtcG9yYXJ5IGZpbGVzIGluIGJpbmFyeSBtb2RlLgoKMjAwNi0wNS0xMiAgQW50b24gQmxhbmNoYXJkICA8YW50b25Ac2FtYmEub3JnPgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IEVuc3VyZSBidWYgaXMgbGFyZ2UgZW5vdWdoIHRvCglob2xkICJpbnQldV90Ii4KCjIwMDYtMDQtMjQgIEp1bGlhbiBCcm93biAgPGp1bGlhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZmxvYXRmb3JtYXQuYyAoZmxvYXRmb3JtYXRfdG9fZG91YmxlKTogRml4IChiaWFzZWQpIGV4cG9uZW50PTAgY2FzZS4KCjIwMDYtMDMtMjkgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwZXgtY29tbW9uLmMgKHBleF9pbnB1dF9maWxlLCBwZXhfaW5wdXRfcGlwZSk6IE5ldyBmdW5jdGlvbnMuCgkocGV4X2luaXRfY29tbW9uKTogSW5pdGlhbGl6ZSBvYmotPmlucHV0X2ZpbGUuCgkocGV4X3J1bik6IENsb3NlIGFueSBmaWxlIG9wZW5lZCBieSBwZXhfaW5wdXRfZmlsZS4KCSogcGV4ZWN1dGUudHhoIChwZXhfaW5wdXRfZmlsZSwgcGV4X2lucHV0X3BpcGUpOiBOZXcgZG9jcy4KCSogcGV4LWNvbW1vbi5oIChzdHJ1Y3QgcGV4X29iaik6IE5ldyBmaWVsZCBpbnB1dF9maWxlLgoJKHN0cnVjdCBwZXhfZnVuY3MpOiBOZXcgZnVuY3Rpb24gcHRyIGZkb3BlbncuCgkqIHBleC11bml4LmMgKHBleF91bml4X2Zkb3BlbncpOiBOZXcgZnVuY3Rpb24uCgkoZnVuY3MpOiBMaXN0IGl0IGFzIG91ciBmZG9wZW53IGZ1bmN0aW9uLgoJKiBwZXgtd2luMzIuYyAocGV4X3dpbjMyX2Zkb3BlbncpOiBOZXcgZnVuY3Rpb24uCgkoZnVuY3MpOiBMaXN0IGl0IGFzIG91ciBmZG9wZW53IGZ1bmN0aW9uLgoJKiBwZXgtZGpncHAuYyAoZnVuY3MpOiBMZWF2ZSBmZG9wZW53IG51bGwuCgkqIHBleC1tc2RvcyAoZnVuY3MpOiBTYW1lLgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZWQuCgoyMDA2LTA0LTEwICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgoKCSogcGV4LWNvbW1vbi5jICh0ZW1wX2ZpbGUpOiBOZXcgZnVuY3Rpb24sIGNvbnRhaW5pbmcgZ3V0cyBvZgoJcGV4LXN0eWxlIHRlbXBvcmFyeSBmaWxlIG5hbWUgZ2VuZXJhdGlvbi4KCShwZXhfcnVuKTogVXNlIGl0LgoKMjAwNi0wNC0wNiAgQ2FybG9zIE8nRG9uZWxsICA8Y2FybG9zQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIGluc3RhbGwtaHRtbCwgaW5zdGFsbC1odG1sLWFtLCBhbmQKCWluc3RhbGwtaHRtbC1yZWN1cnNpdmUgdGFyZ2V0cy4gRGVmaW5lIG1rZGlyX3AgYW5kCglOT1JNQUxfSU5TVEFMTC4KCSogY29uZmlndXJlLmFjOiBBQ19TVUJTVCBkYXRhcm9vdGRpciwgZG9jZGlyLCBodG1sZGlyLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbjogQWRkIGluc3RhbGwtaHRtbCBhbmQgaHRtbCB0YXJnZXRzLgoKMjAwNi0wMy0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBleC13aW4zMi5jICg8ZXJybm8uaD4pOiBJbmNsdWRlLgoJKGZpeF9hcmd2KTogUmVtb3ZlLgoJKGFyZ3ZfdG9fY21kbGluZSk6IE5ldyBmdW5jdGlvbi4KCShzdGRfc3VmZml4ZXMpOiBOZXcgdmFyaWFibGUuCgkobm9fc3VmZml4ZXMpOiBMaWtld2lzZS4KCShmaW5kX2V4ZWN1dGFibGUpOiBOZXcgZnVuY3Rpb24uCgkod2luMzJfc3Bhd24pOiBMaWtld2lzZS4KCShzcGF3bl9zY3JpcHQpOiBVc2Ugd2luMzJfc3Bhd24gaW5zdGVhZCBvZiBfc3Bhd252W3BdLgoJKHBleF93aW4zMl9leGVjX2NoaWxkKTogUmVwbGFjZSBNU1ZDUlQgY2FsbHMgd2l0aCBXaW4zMiBBUEkgY2FsbHMuCgkocGV4X3dpbjMyX3dhaXQpOiBMaWtld2lzZS4KCjIwMDYtMDMtMjQgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwZXgtY29tbW9uLmMgKHBleF9ydW4pOiBTaW1wbGlmeSBvdXRwdXQgbmFtZSBoYW5kbGluZy4KCjIwMDYtMDMtMTIgIEppbSBCbGFuZHkgIDxqaW1iQHJlZC1iZWFuLmNvbT4KCgkqIHBleC1jb21tb24uaCAoc3RydWN0IHBleF9vYmopOiBEb2MgZml4ZXMuCgoyMDA2LTAzLTExICBKaW0gQmxhbmR5ICA8amltYkByZWQtYmVhbi5jb20+CgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDYtMDItMjEgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogcGV4ZWN1dGUuYyAocHdhaXQpOiBTeW50YXggZml4IGZvciBwcmV2aW91cyBjaGFuZ2UuCgoyMDA2LTAyLTE3ICBVdHRhbSBQYXdhciAgPHV0dGFtcEB1cy5pYm0uY29tPgoKCSogcGV4ZWN1dGUuYyAocHdhaXQpOiBGcmVlIHZlY3RvciBwb2ludGVyLgoJKiBwYXJ0aXRpb24uYyAocGFydGl0aW9uX3ByaW50KTogRnJlZSBjbGFzc19lbGVtZW50cyBwb2ludGVyLgoKMjAwNi0wMi0xMSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgkgICAgUi4gU2NvdHQgQmFpbGV5ICA8c2NvdHQuYmFpbGV5QGVkcy5jb20+CgkgICAgQmlsbCBOb3J0aGNvdHQgIDx3Lm5vcnRoY290dEB1bnN3LmVkdS5hdT4KCglQUiBib290c3RyYXAvMTY3ODcKCSogZmxvYXRmb3JtYXQuYzogSW5jbHVkZSA8ZmxvYXQuaD4gd2hlcmUgYXZhaWxhYmxlLgoJKE5BTik6IFVzZSB2YWx1ZSBvZiBEQkxfUU5BTiBpZiBkZWZpbmVkLCBhbmQgTkFOIGlzbid0LgoKMjAwNi0wMS0yOSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBpbnRlZ3JhYmxlLXNvbHV0aW9ucy5uZXQ+CgoJKiBjb25maWd1cmUuYWM6IEFkZCAtV2MrKy1jb21wYXQgdG8gYWNfbGliaWJldHlfd2Fybl9jZmxhZ3Mgd2hlcmUKCXN1cHBvcnRlZC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDYtMDEtMjAgIENhcmxvcyBPJ0RvbmVsbCAgPGNhcmxvc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdGVzdHN1aXRlL01ha2VmaWxlLmluOiBBZGQgdGVzdC1leHBhbmRhcmd2IHRlc3QuCgkqIHRlc3RzdWl0ZS90ZXN0LWV4cGFuZGFyZ3YuYzogTmV3IHRlc3QuCgkqIGFyZ3YuYyAoZXhwYW5kYXJndik6IENoZWNrIGZvciBlcnJvcnMgd2l0aCBmZXJyb3IsCglyYXRoZXIgdGhhbiBqdXN0IGJ5IGxvb2tpbmcgYXQgcmV0dXJuIHZhbHVlIGZyb20gZnJlYWQuCgoyMDA1LTEyLTE3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X2kzODdfZXh0X2lzX3ZhbGlkKTogVXNlIGV4cGxpY2l0IGNhc3QKCXRvIGNvbnZlcnQgZnJvbSAiZnJvbSIuCgkoZmxvYXRmb3JtYXRfdG9fZG91YmxlKTogTGlrZXdpc2UuCgkoZmxvYXRmb3JtYXRfZnJvbV9kb3VibGUpOiBVc2UgZXhwbGljaXQgY2FzdCB0byBjb252ZXJ0IGZyb20gInRvIi4KCjIwMDUtMTItMTAgIFRlcnJ5IExhdXJlbnpvICA8dGxhdXJlbnpvQGdtYWlsLmNvbT4KCglQUiBqYXZhLzk4NjEKCSogY3AtZGVtYW5nbGUuYyAoZF9iYXJlX2Z1bmN0aW9uX3R5cGUpOiBSZWNvZ25pemUgbmV3ICdKJyBxdWFsaWZlcgoJYW5kIGluY2x1ZGUgcmV0dXJuIHR5cGUgd2hlbiBmb3VuZC4KCShkX3ByaW50X2NvbXApW0RFTUFOR0xFX0NPTVBPTkVOVF9GVU5DVElPTl9UWVBFXTogQWRkCgljb25kaXRpb25hbCBsb2dpYyB0byBjaGFuZ2UgcHJpbnRpbmcgb3JkZXIgb2YgcmV0dXJuIHR5cGUud2hlbgoJdGhlIERNR0xfUkVUX1BPU1RGSVggb3B0aW9uIGlzIHByZXNlbnQuCgkoamF2YV9kZW1hbmdsZV92Myk6IEFkZCBETUdMX1JFVF9QT1NURklYIG9wdGlvbiB0byBkX2RlbWFuZ2xlCgljYWxsLgoJKiB0ZXN0c3VpdGUvdGVzdC1kZW1hbmdsZS5jIChtYWluKTogUmVjb2duaXplIG9wdGlvbiAtLXJldC1wb3N0Zml4CgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogVGVzdCBjYXNlcyB0byB2ZXJpZnkgZXh0ZW5kZWQgZW5jb2RpbmcuCglVcGRhdGVkIGNvbW1lbnQgdG8gZG9jdW1lbnQgLS1yZXQtcG9zdGZpeCBvcHRpb24uCgoyMDA1LTExLTA2ICBSaWNoYXJkIEd1ZW50aGVyICA8cmd1ZW50aGVyQHN1c2UuZGU+CgoJKiBzcGxheS10cmVlLmMgKHJvdGF0ZV9sZWZ0KTogTmV3IGZ1bmN0aW9uLgoJKHJvdGF0ZV9yaWdodCk6IExpa2V3aXNlLgoJKHNwbGF5X3RyZWVfc3BsYXlfaGVscGVyKTogUmVtb3ZlLgoJKHNwbGF5X3RyZWVfc3BsYXkpOiBSZS1pbXBsZW1lbnQuCgoyMDA1LTEwLTMxICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X3ZheF9haW5nbGUsIGZsb2F0Zm9ybWF0X3ZheF9kb3VibGUpOgoJTmV3IHZhcmlhYmxlcy4KCjIwMDUtMTAtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBhdC1maWxlLnRleGk6IEZpeCB0eXBvLgoKMjAwNS0xMC0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGF0LWZpbGUudGV4aTogTmV3IGZpbGUuCgoyMDA1LTA5LTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYXJndi5jIChleHBhbmRhcmd2KTogRG8gbm90IHVzZSB4bWFsbG9jX2ZhaWxlZC4KCjIwMDUtMDktMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBhcmd2LmMgKHNhZmUtY3R5cGUuaCk6IEluY2x1ZGUgaXQuCgkoSVNCTEFOSyk6IFJlbW92ZS4KCShzdGRpby5oKTogSW5jbHVkZS4KCShidWlsZGFyZ3YpOiBVc2UgSVNTUEFDRSBpbnN0ZWFkIG9mIElTQkxBTksuCgkoZXhwYW5kYXJndik6IE5ldyBmdW5jdGlvbi4KCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGVkLgoKMjAwNS0wOS0xNCAgQ2hyaXN0b3BoZXIgRmF5bG9yICA8Y2dmQHRpbWVzeXMuY29tPgoKCSogcGV4LXdpbjMyLmM6IEluY2x1ZGUgIndpbmRvd3MuaCIuCgkoYmFja3NsYXNoaWZ5KTogTmV3IGZ1bmN0aW9uLgoJKGZpeF9hcmd2KTogVXNlIGJhY2tzbGFzaGlmeSB0byBjb252ZXJ0IHBhdGggdG8gd2luZG93cyBmb3JtYXQuCglBbGxvY2F0ZSBvbmUgbW9yZSBwbGFjZSBpbiBuZXcgYXJndiBmb3IgcG90ZW50aWFsIGV4ZWN1dGFibGUgZnJvbSAnIyEnCglwYXJzaW5nLgoJKHRhY2tfb25fZXhlY3V0YWJsZSk6IE5ldyBmdW5jdGlvbi4gIENvbmRpdGlvbmFsIG9uIFVTRV9NSU5HV19NU1lTCgkob3BlbmtleSk6IERpdHRvLgoJKG1pbmd3X3Jvb3RpZnkpOiBEaXR0by4KCShtc3lzX3Jvb3RpZnkpOiBEaXR0by4KCShzcGF3bl9zY3JpcHQpOiBOZXcgZnVuY3Rpb24uCgkocGV4X3dpbjMyX2V4ZWNfY2hpbGQpOiBTYXZlIHRyYW5zbGF0ZWQgYXJndiBpbiBuZXdhcmd2LiAgUGFzcyB0bwoJc3Bhd25fc2NyaXB0IGlmIHNwYXdudiogZmFpbHMuCgkobWFpbik6IE5ldyBmdW5jdGlvbi4gIENvbmRpdGlvbmFsIG9uIE1BSU4uICBVc2VmdWwgZm9yIHRlc3RpbmcuCgoyMDA1LTA4LTE3ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X2Fsd2F5c192YWxpZCk6IENoYW5nZSB0eXBlIG9mIGxhc3QKCWFyZ3VtZW50IHRvIGB2b2lkIConLgoJKGZsb2F0Zm9ybWF0X2kzODdfZXh0X2lzX3ZhbGlkKTogTGlrZXdpc2UuCgkoZmxvYXRmb3JtYXRfdG9fZG91YmxlKTogQ2hhbmdlIHR5cGUgb2Ygc2Vjb25kIGFyZ3VtZW50IHRvIGBjb25zdAoJdm9pZCAqJy4KCShmbG9hdGZvcm1hdF9mcm9tX2RvdWJsZSk6IENoYW5nZSB0eXBlIG9mIGxhc3QgYXJndW1lbnQgdG8gYHZvaWQKCSonLgoJKGZsb2F0Zm9ybWF0X2lzX3ZhbGlkKTogQ2hhbmdlIHR5cGUgb2YgbGFzdCBhcmd1bWVudCB0byBgY29uc3QKCXZvaWQgKicuCgkoaWVlZV90ZXN0KTogUmVtb3ZlIHJlZHVuZGFudCBjYXN0cy4KCjIwMDUtMDgtMTcgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBzdHJ2ZXJzY21wLmM6IFVwZGF0ZSBGU0YgYWRkcmVzcy4KCSogdGVzdHN1aXRlL01ha2VmaWxlLmluOiBMaWtld2lzZS4KCSogdGVzdHN1aXRlL3Rlc3QtZGVtYW5nbGUuYzogTGlrZXdpc2UuCgkqIHRlc3RzdWl0ZS90ZXN0LXBleGVjdXRlLmM6IExpa2V3aXNlLgoKMjAwNS0wNy0yMyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZ2V0b3B0LmM6IEluY2x1ZGUgYW5zaWRlY2wuaCBiZWZvcmUgc3lzdGVtIGhlYWRlcnMuCgoyMDA1LTA3LTIyICBCZW4gRWxsaXN0b24gIDxiamVAZ251Lm9yZz4KCgkqIGdldG9wdC5jOiBJbmNsdWRlICJhbnNpZGVjbC5oIi4KCShfZ2V0b3B0X2luaXRpYWxpemUpOiBNYXJrIGFyZ2MgYW5kIGFyZ3YgcGFyYW1ldGVycyBhcyB1bnVzZWQuCgoyMDA1LTA3LTIyICBCZW4gRWxsaXN0b24gIDxiamVAZ251Lm9yZz4KCgkqIHJlZ2V4LmMgKHJlZ2NvbXApOiBDaGFuZ2UgdHlwZSBvZiBgaScgZnJvbSB1bnNpZ25lZCB0byBpbnQuCgoyMDA1LTA3LTIyICBCZW4gRWxsaXN0b24gIDxiamVAZ251Lm9yZz4KCglSZWNvdmVyIHBhdGNoIGxvc3QgaW4gdGhlIHNvdXJjZXdhcmUgcmVwb3NpdG9yeToKCTIwMDUtMDctMDkgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoJKiBtZW1jcHkuYzogUmVtb3ZlIEFOU0lfUFJPVE9UWVBFUyBjb25kaXRpb25hbCBjb2RlLgoJKiBtZW1tb3ZlLmM6IExpa2V3aXNlLgoJKiBvYmphbGxvYy5jOiBMaWtld2lzZS4KCjIwMDUtMDctMjIgIEJlbiBFbGxpc3RvbiAgPGJqZUBnbnUub3JnPgoKCSogY29uZmlndXJlLmFjOiBDaGVjayBmb3IgYSBnZXRvcHQoMykgZGVjbGFyYXRpb24uCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwNS0wNy0xNSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiByZWdleC5jIChUUkFOU0xBVEUpOiBDYXN0IHJocyBvZiB0ZXJuYXJ5IGV4cHJlc3Npb24gdG8gY2hhci4KCjIwMDUtMDctMTIgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogZmxvYXRmb3JtYXQuYyAoZmxvYXRmb3JtYXRfdG9fZG91YmxlKTogQWRkIGEgY29tbWVudCBhYm91dCBhCglwb3RlbnRpYWwgc291cmNlIG9mIHdhcm5pbmdzIHdoZW4gY29tcGlsaW5nIHRoaXMgZmlsZS4KCjIwMDUtMDctMTIgIEJlbiBFbGxpc3RvbiAgPGJqZUBhdS5pYm0uY29tPgoKCSogcGV4ZWN1dGUuYyAocGV4ZWN1dGUpOiBDYXN0IHN0cmluZyBsaXRyYWxzIHRvIGNoYXIgKi4KCSogcmVnZXguYyAocmVfY29tcCk6IENhc3QgYSBjYWxsIHRvIGdldHRleHQoKSB0byBjaGFyICouCgoyMDA1LTA3LTA3ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogY29uZmlnLnRhYmxlOiBEZWxldGUgZmlsZS4gIE1vdmUgZm9ybWVyIGNvbnRlbnRzIGludG8gLi4uCgkqIGNvbmZpZ3VyZS5hYzogLi4uIGhlcmUgYW5kIGVzY2FwZSBhbnkgYnJhY2tldHMgZm9yIG00LgoJKiBNYWtlZmlsZS5pbiAoY29uZmlnLnN0YXR1cyk6IFJlbW92ZSBkZXBlbmRlbmN5IG9uIGNvbmZpZy50YWJsZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNS0wNy0wNyAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZSBmb3IgNi8yMCBjaGFuZ2UuCgoyMDA1LTA3LTAzICBTdGV2ZSBFbGxjZXkgIDxzamVAY3VwLmhwLmNvbT4KCglQUiBvdGhlci8xMzkwNgoJKiBtZDUuYyAobWQ1X3Byb2Nlc3NfYnl0ZXMpOiBDaGVjayBhbGlnbm1lbnQuCgoyMDA1LTA3LTAxICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCVBSIG90aGVyLzIyMjY4CgkqIGNwLWRlbWFuZ2xlLmMgKGRfZXhwcl9wcmltYXJ5KTogRG9uJ3QgcnVuIG9mZiB0aGUgZW5kIG9mIHRoZQoJc3RyaW5nIHdoaWxlIGxvb2tpbmcgZm9yIHRoZSBlbmQgb2YgYSBsaXRlcmFsIHZhbHVlLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCB0ZXN0IGNhc2UuCgoyMDA1LTA2LTMwICBEYW5pZWwgQmVybGluICA8ZGJlcmxpbkBkYmVybGluLm9yZz4KCgkqIGhhc2h0YWIuYyAoRU1QVFlfRU5UUlkpOiBNb3ZlZCBhbmQgcmVuYW1lZC4KCShERUxFVEVEX0VOVFJZKTogRGl0dG8uCgoyMDA1LTA2LTIwICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIHN0cnZlcnNjbXAuYzogTmV3LgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIHN0cnZlcnNjbXAuYy4KCShDT05GSUdVUkVEX09GSUxFUyk6IEFkZCBzdHJ2ZXJzY21wLm8uCgkoc3RydmVyc2NtcC5vKTogTmV3IHJ1bGUuCgkoc3RhbXAtZnVuY3Rpb25zKTogQWRkICQoc3JjZGlyKSB0byBmaWxlcyBpbiBzb3VyY2UgZGlyZWN0b3J5LgoJKiBjb25maWd1cmUuYWMgKGZ1bmNzKTogQWRkIHN0cnZlcnNjbXAuCgkoQUNfQ0hFQ0tfRlVOQ1MpOiBBZGQgc3RydmVyc2NtcC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDUtMDUtMjggIEVsaSBaYXJldHNraWkgIDxlbGl6QGdudS5vcmc+CgoJKiBjb25maWd1cmUuYWM6IEFkZCBzbnByaW50ZiBhbmQgdnNucHJpbnRmIHRvIEFDX0NIRUtfREVDTFMuCgkqIGNvbmZpZy5pbiwgY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNS0wNS0yNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRfZHVtcCk6IEhhbmRsZSBERU1BTkdMRV9DT01QT05FTlRfSElEREVOX0FMSUFTLgoJKGRfbWFrZV9jb21wLCBkX3ByaW50X2NvbXApOiBMaWtld2lzZS4KCShkX3NwZWNpYWxfbmFtZSk6IEdlbmVyYXRlIG9uZS4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgYSBoaWRkZW4gYWxpYXMgdGVzdC4KCjIwMDUtMDUtMjQgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogY29uZmlndXJlLmFjOiBDaGVjayBkZWNsYXJhdGlvbnMgZm9yIGNhbGxvYygpLCBnZXRlbnYoKSwKCW1hbGxvYygpLCByZWFsbG9jKCkgYW5kIHNicmsoKS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IExpa2V3aXNlLgoKCSogYWxsb2NhLmMgKENfYWxsb2NhKTogQ2hhbmdlICJuZXciIHRvICJuZXdfc3RvcmFnZSIuICBVc2UgWE5FV1ZFQwoJaW5zdGVhZCBvZiB4bWFsbG9jLgoJKiBjaG9vc2UtdGVtcC5jIChjaG9vc2VfdGVtcF9iYXNlKTogVXNlIFhORVdWRUMgaW5zdGVhIG9kIHhtYWxsb2MuCgkqIGNvbmNhdC5jIChsaWliZXJ0eV9jb25jYXRfcHRyKTogU3Vycm91bmQgZGVmaW5pdGlvbiB3aXRoIGFuCglleHRlcm4gIkMiIGJsb2NrLCBpZiBfX2NwbHVzcGx1cy4KCShjb25jYXQpOiBVc2UgWE5FV1ZFQyBpbnN0ZWFkIG9mIHhtYWxsb2MuCgkocmVjb25jYXQpOiBMaWtld2lzZS4KCSogY3AtZGVtYW5nbGUuYyAoc3RydWN0IGRfcHJpbnRfdGVtcGxhdGUpOiBSZW5hbWUgbWVtYmVyCgkidGVtcGxhdGUiIHRvICJ0ZW1wbGF0ZV9kZWNsIi4gIEFkanVzdCB1c2UgdGhyb3VnaG91dCB0aGUgZmlsZS4KCShkX3ByaW50X3Jlc2l6ZSk6IFByb3Blcmx5IGNhc3QgcmV0dXJuIHZhbHVlIG9mIHJlYWxsb2MoKS4KCShjcGx1c19kZW1hbmdsZV9wcmludCk6IFNhbWUgZm9yIG1hbGxvYygpLgoJKGRfZGVtYW5nbGUpOiBMaWtld2lzZS4KCSogY3AtZGVtaW50LmMgKGNwbHVzX2RlbWFuZ2xlX2ZpbGxfYnVpbHRpbl90eXBlKTogUmVuYW1lIHBhcmFtZXRlcgoJInR5cGVuYW1lIiB0byAidHlwZV9uYW1lIi4KCSogY3BsdXMtZGVtLmMgKGdyb3dfdmVjdCk6IFVzZSBYUkVTSVpFVkVDIGluc3RlYWQgb2YgeHJlYWxsb2MoKS4KCSh3b3JrX3N0dWZmX2NvcHlfdG9fZnJvbSk6IFVzZSBYTkVXVkVDIGluc3RlYW5kIG9mIHhtYWxsb2MoKS4KCShkZW1hbmdsZV90ZW1wbGF0ZV92YWx1ZV9wYXJtKTogTGlrZXdpc2UuCgkoZGVtYW5nbGVfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShyZWN1cnNpdmVseV9kZW1hbmdsZSk6IExpa2V3aXNlLgoJKGRvX2hwYWNjX3RlbXBsYXRlX2xpdGVyYWwpOiBMaWtld2lzZS4KCShkb19hcmcpOiBMaWtld2lzZS4KCShyZW1lbWJlcl90eXBlKTogTGlrZXdpc2UuCgkocmVtZW1iZXJfS3R5cGUpOiBMaWtld2lzZS4KCShyZWdpc3Rlcl9CdHlwZSk6IExpa2V3aXNlLgoJKHN0cmluZ19uZWVkKTogVXNlIFhSRVNJWkVWRUMgaW5zdGVhZCBvZiB4cmVhbGxvYygpLgoJKiBkeW4tc3RyaW5nLmMgKGR5bl9zdHJpbmdfaW5pdCk6IFVzZSBYTkVXVkVDLgoJKGR5bl9zdHJpbmdfbmV3KTogVXNlIFhORVcuCgkoZHluX3N0cmluZ19yZXNpemUpOiBVc2UgWFJFU0laRVZFQy4KCSogZm5tYXRjaC5jIChmbm1hdGNoKTogUmVuYW1lIGxvY2FsIHZhcmlhYmxlICJub3QiIHRvICJuZWdhdGUiLgoJKiBnZXRvcHQuYyAoZ2V0ZW52KTogRGVjbGFyZSBvbmx5IGlmICFfX2NwbHVzcGx1cyBhbmQgIWdldGVudi4KCU90aGVyd2lzZSBpbmNsdWRlIDxzdGRsaWIuaD4uCgkoZXhjaGFuZ2UpOiBDYXN0IHJldHVybiB2YWx1ZSBvZiBtYWxsb2MoKS4KCSogaGFzaHRhYi5jIChodGFiX3NpemUpOiBEZWZpbmUgYXMgYm90aCBtYWNybyBhbmQgbm9uLWlubGluZQoJZnVuY3Rpb24uCgkoaHRhYl9lbGVtZW50cyk6IExpa2V3aXNlLgoJKiBnZXRwd2QuYyAoZ2V0cHdkKTogVXNlIFhORVdWRUMuCgkoaHRhYl9jcmVhdGVfYWxsb2NfZXgpOiBVc2UgQzkwIHByb3RvdHlwZS1zdHlsZS4KCSogbHJlYWxwYXRoLmMgKGxyZWFscGF0aCk6IEFwcHJvcHJpYXRlbHkgY2FzdCByZXR1cm4gdmFsdWUgb2YKCW1hbGxvYygpLgoJKiBtYWtlLXJlbGF0aXZlLXByZWZpeC5jIChzYXZlX3N0cmluZyk6IExpa2V3aXNlLgoJKiBtYWtlLXRlbXAtZmlsZS5jICh0cnlfZGlyKTogUmVuYW1lIGZyb20gInRyeSIuICBBZGp1c3QgdXNlIGluCgl0aGUgZmlsZS4KCShjaG9vc2VfdG1wZGlyKTogVXNlIFhORVdWRUMuCgkqIG1rc3RlbXBzLmMgKG1rc3RlbXBzKTogUmVuYW1lIHBhcmFtZXRlciAidGVtcGxhdGUiIHRvICJwYXR0ZXJuIi4KCSogcGV4LWNvbW1vbi5jIChwZXhfaW5pdF9jb21tb24pOiBVc2UgWE5FVy4KCShwZXhfYWRkX3JlbW92ZSk6IFVzZSBYUkVTSVpFVkVDLgoJKHBleF9ydW4pOiBMaWtld2lzZS4KCShwZXhfZ2V0X3N0YXR1c19hbmRfdGltZSk6IExpa2V3aXNlLgoJKiBwZXgtZGpncHAuYyAocGV4X2RqZ3BwX2V4ZWNfY2hpbGQpOiBMaWtld2lzZS4KCSogcGV4LW1zZG9zLmMgKHBleF9pbml0KTogVXNlIFhORVcuCgkocGV4X21zZG9zX2V4ZWNfY2hpbGQpOiBMaWtld2lzZS4KCShwZXhfbXNkb3NfZXhlY19jaGlsZCk6IFVzZSBYUkVTSVpFVkVDLgoJKiBwZXgtdW5peC5jIChwZXhfd2FpdCk6IFVzZSBYTkVXLgoJKiBwZXgtd2luMzIuYyAoZml4X2FyZ3YpOiBVc2UgWE5FV1ZFQy4KCSogcGV4ZWN1dGUuYyAocHdhaXQpOiBMaWtld2lzZS4KCSogc2V0ZW52LmMgKHNldGVudik6IFByb3Blcmx5IGNhc3QgcmV0dXJuIHZhbHVlIG9mIG1hbGxvYygpLgoJKiBzaWdzZXRtYXNrLmMgKHNpZ3NldG1hc2spOiBSZW5hbWUgbG9jYWwgdmFyaWFibGVzICJvbGQiIGFuZAoJIm5ldyIgdG8gIm9sZF9zaWciIGFuZCAibmV3X3NpZyIuCgkqIHNvcnQuYyAobWFpbik6IFVzZSBYTkVXVkVDLgoJKiBzcGFjZXMuYyAoc3BhY2VzKTogQ2FzdCByZXR1cm4gdmFsdWUgb2YgbWFsbG9jKCkuCgkqIHN0cm5kdXAuYyAoc3RybmR1cCk6IExpa2V3aXNlLgoJKiB0ZXJuYXJ5LmMgKHRlcm5hcnlfaW5zZXJ0KTogVXNlIFhORVcuCgkqIHhtYWxsb2MuYyAobWFsbG9jLCByZWFsbG9jLCBjYWxsb2MsIHNicmspOiBTdXJyb3VuZCBkZWNsYXJhdGlvbgoJd2l0aCBhbiBleHRlcm4gIkMiIGJsb2NrIGlmIF9fY3BsdXNwbHVzLgoJKiB4c3RyZHVwLmMgKHhzdHJkdXApOiBDYXN0IHJldHVybiB2YWx1ZSBvZiBtZW1jcHkoKS4KCSogeHN0cmVycm9yLmMgKHN0cmVycm9yKTogRW5jbG9zZSBkZWNsYXJhdGlvbiBpbiBhbiBleHRlcm4gIkMiCglibG9jayBpZiBfX2NwbHVzcGx1cy4KCSogeHN0cm5kdXAuYyAoeHN0cm5kdXApOiBVc2UgWE5FVy4gQ2FzdCByZXR1cm4gdmFsdWUgb2YgbWVtY3B5KCkuCgoyMDA1LTA1LTE2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBnZXRwd2QuYzogUmVtb3ZlIHVubmVlZGVkIHByb3RvdHlwZSBnZXRjd2QgYW5kIG1vdmUgZ2V0d2Qgc28KCXRoYXQgaXQncyBvbmx5IGRlY2xhcmVkIGlmIG5lZWRlZC4KCgkqIGdldG9wdDEuYzogQ2hhbmdlIG9yZGVyIG9mIGluY2x1ZGVzIHNvIHRoYXQgX19HTlVfTElCUkFSWV9fIGlzCglkZWZpbmVkLgoKMjAwNS0wNS0xNSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZnVuY3Rpb25zLnRleGk6IFJlZ2VuZXJhdGVkLgoKMjAwNS0wNS0xNSAgRWxpIFphcmV0c2tpaSAgPGVsaXpAZ251Lm9yZz4KCgkqIHBleGVjdXRlLnR4aDogRW5jbG9zZSBtdWx0aS13b3JkIGRhdGEgdHlwZXMgaW4gQGRlZnR5cGVmbiBpbgoJYnJhY2VzLiAgTWlub3Igd29yZGluZyBmaXhlcy4gIFVzZSAtLS0gZm9yIGVtLWRhc2guICBVc2UKCUBlbnVtZXJhdGUgaW4gZW51bWVyYXRlZCBsaXN0cy4KCgkqIGZvcGVuX3VubG9ja2VkLmM6IEVuY2xvc2UgbXVsdGktd29yZCBkYXRhIHR5cGVzIGluIEBkZWZ0eXBlZm4gaW4KCWJyYWNlcy4KCjIwMDUtMDUtMTEgIEVsaSBaYXJldHNraWkgIDxlbGl6QGdudS5vcmc+CgoJKiBwZXgtZGpncHAuYzogSW5jbHVkZSBzdHJpbmcuaCwgZmNudGwuaCwgdW5pc3RkLmgsIGFuZAoJc3lzL3N0YXQuaC4KCShwZXhfaW5pdCk6IEZpeCBsYXN0IGFyZ3VtZW50IHRvIHBleF9pbml0X2NvbW1vbi4KCShwZXhfZGpncHBfZXhlY19jaGlsZCk6IFJlbW92ZSBsZWFkaW5nIHVuZGVyc2NvcmUgZnJvbSBfb3BlbiwKCV9kdXAsIF9kdXAyLCBfY2xvc2UsIGFuZCBfc3Bhd252L19zcGF3bnZwLiAgUmVwbGFjZSBgcHJvZ3JhbScsCgl3aGljaCBpcyB1bmRlY2xhcmVkLCB3aXRoIGBleGVjdXRhYmxlJywgd2hpY2ggd2FzIHVudXNlZC4gIFJlbW92ZQoJdW51c2VkIHZhcmlhYmxlIGBlJy4gIEZpeCBjYXN0aW5nIG9mIGxhc3QgYXJnIHRvIHNwYXdudi9zcGF3bnZwLgoJKHBleF9kamdwcF93YWl0KTogRGVjbGFyZSBhcmd1bWVudHMgd2l0aCBBVFRSSUJVVEVfVU5VU0VELgoKMjAwNS0wNS0xMSAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZWdlbmVyYXRlIGRlcGVuZGVuY2llcy4KCjIwMDUtMDUtMTAgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBVcGRhdGUgdGhlIGFkZHJlc3MgYW5kIHBob25lIG51bWJlciBvZiB0aGUgRlNGIG9yZ2FuaXphdGlvbiBpbgoJdGhlIEdQTCBub3RpY2VzIGluIHRoZSBmb2xsb3dpbmcgZmlsZXM6CglDT1BZSU5HLkxJQiwgTWFrZWZpbGUuaW4sIF9kb3BybnQuYywgYXJndi5jLCBhc3ByaW50Zi5jLAoJY2hvb3NlLXRlbXAuYywgY2xvY2suYywgY29uY2F0LmMsIGNvcHlpbmctbGliLnRleGksIGNwLWRlbWFuZ2xlLmMsCgljcC1kZW1hbmdsZS5oLCBjcC1kZW1pbnQuYywgY3BsdXMtZGVtLmMsIGR5bi1zdHJpbmcuYywgZmRtYXRjaC5jLAoJZmliaGVhcC5jLCBmbG9hdGZvcm1hdC5jLCBmbm1hdGNoLmMsIGZvcGVuX3VubG9ja2VkLmMsCglnYXRoZXItZG9jcywgZ2V0b3B0LmMsIGdldG9wdDEuYywgZ2V0cnVudGltZS5jLCBoYXNodGFiLmMsIGhleC5jLAoJbGJhc2VuYW1lLmMsIGxyZWFscGF0aC5jLCBtYWludC10b29sLCBtYWtlLXJlbGF0aXZlLXByZWZpeC5jLAoJbWFrZS10ZW1wLWZpbGUuYywgbWQ1LmMsIG1lbXBjcHkuYywgbWtzdGVtcHMuYywgb2JqYWxsb2MuYywKCW9ic3RhY2suYywgcGFydGl0aW9uLmMsIHBleC1jb21tb24uYywgcGV4LWNvbW1vbi5oLCBwZXgtZGpncHAuYywKCXBleC1tc2Rvcy5jLCBwZXgtb25lLmMsIHBleC11bml4LmMsIHBleC13aW4zMi5jLCBwZXhlY3V0ZS5jLAoJcGh5c21lbS5jLCBwdXRlbnYuYywgcmVnZXguYywgc2FmZS1jdHlwZS5jLCBzZXRlbnYuYywgc25wcmludGYuYywKCXNvcnQuYywgc3BhY2VzLmMsIHNwbGF5LXRyZWUuYywgc3RwY3B5LmMsIHN0cG5jcHkuYywgc3RybmR1cC5jLAoJc3RydG9kLmMsIHRlcm5hcnkuYywgdW5saW5rLWlmLW9yZGluYXJ5LmMsIHZhc3ByaW50Zi5jLAoJdnNucHJpbnRmLmMsIHZzcHJpbnRmLmMsIHhleGl0LmMsIHhtYWxsb2MuYywgeHN0cm5kdXAuYwoKMjAwNS0wNS0wNiAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGFjbG9jYWwubTQgKEFDX0RFRklORV9OT0FVVE9IRUFERVIpOiBSZW1vdmUuCgkqIGNvbmZpZ3VyZS5hYzogUmVwbGFjZSBhbnkgQUNfREVGSU5FX05PQVVUT0hFQURFUiB3aXRoIEFDX0RFRklORS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNS0wNS0wNiAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5hYzogVXNlIEFDX0NfQklHRU5ESUFOIGluc3RlYWQgb2YgQUNfQ19CSUdFTkRJQU5fQ1JPU1MuCglVc2UgQUNfQ0hFQ0tfU0laRU9GIGluc3RlYWQgb2YgQUNfQ09NUElMRV9DSEVDS19TSVpFT0YuCgkqIGFjbG9jYWwubTQ6IERvbid0IGluY2x1ZGUgYWNjcm9zcy5tNC4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoyMDA1LTA0LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBmb3Blbl91bmxvY2tlZC5jICh1bmxvY2tfc3RkX3N0cmVhbXMpOiBOZXcuCgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDUtMDQtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGZvcGVuX3VubG9ja2VkLmMgKHVubG9ja19zdHJlYW0pOiBOZXcuCglDb25zb2xpZGF0ZSB1bmxvY2tpbmcgY29kZSBpbnRvIGEgaGVscGVyIGZ1bmN0aW9uLgoKCSogZnVuY3Rpb25zLnRleGk6IFJlZ2VuZXJhdGUuCgoyMDA1LTA0LTEzICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGFzcHJpbnRmLmM6IEluY2x1ZGUgY29uZmlnLmguCgkqIGJhc2VuYW1lLmM6IExpa2V3aXNlLgoJKiBmZG1hdGNoLmM6IExpa2V3aXNlLgoJKiBoZXguYzogTGlrZXdpc2UuCgkqIGxiYXNlbmFtZS5jOiBMaWtld2lzZS4KCSogc3BhY2VzLmM6IExpa2V3aXNlLgoJKiB4YXRleGl0LmM6TGlrZXdpc2UuCgkqIGNvbmZpZ3VyZS5hYzogIERvIGNoZWNrIGRlY2xhcmF0aW9ucyBmb3IgYmFzZW5hbWUsIGZmcywgYXNwcmludGYKCWFuZCB2YXNwcmludGYgZm9yIHJlYWwuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDUtMDQtMTMgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogYXJndi5jIChkdXBhcmd2KTogQWxsb2NhdGUgc3BhY2Ugb2YgYXJndlthcmdjXSwgbm90CglzaXplb2YoY2hhciAqKSBvZiB0aGF0IGFtb3VudC4gIENhc3QgcmVzdWx0IHRvIGNoYXIgKi4KCjIwMDUtMDQtMTIgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogcmVnZXguYyAod2NzX3JlX21hdGNoXzJfaW50ZXJuYWwsIGJ5dGVfcmVfbWF0Y2hfMl9pbnRlcm5hbCk6CglSZXBsYWNlIG5vdCB3aXRoIG5lZ2F0ZS4KCjIwMDUtMDQtMTIgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCSogY29uZmlndXJlLmFjOiBDaGVjayBkZWNsYXJhdGlvbnMgZm9yIGJhc2VuYW1lLCBmZnMsIGFzcHJpbnRmLAoJdmFzcHJpbnRmLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5pbjogTGlrZXdpc2UuCgoyMDA1LTA0LTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIGZvcGVuX3VubG9ja2VkLmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIC4vZm9wZW5fdW5sb2NrZWQuby4KCVJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzLgoKCSogY29uZmlndXJlLmFjOiBDaGVjayBmb3Igc3RkaW9fZXh0LmggYW5kIF9fZnNldGxvY2tpbmcuCgoJKiBmb3Blbl91bmxvY2tlZC5jOiBOZXcgZmlsZS4KCgkqIGZ1bmN0aW9ucy50ZXhpLCBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCjIwMDUtMDQtMDQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiB0ZXN0c3VpdGUvdGVzdC1wZXhlY3V0ZS5jIChURVNUX1BFWF9SVU4pOiBNb3ZlIHZhcmlhYmxlCglkZWNsYXJhdGlvbiBiZWZvcmUgc3RhdGVtZW50LgoKMjAwNS0wNC0wMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYmNtcC5jOiBGaXggd2FybmluZ3MgYW5kIGltcGxlbWVudCB1c2luZyBtZW1jbXAuCgkqIGJjb3B5LmM6IEZpeCB3YXJuaW5ncy4KCSogYnplcm8uYzogRml4IHdhcm5pbmdzIGFuZCBpbXBsZW1lbnQgdXNpbmcgbWVtc2V0LgoKCSogY29uZmlndXJlLmFjIChhY19saWJpYmVydHlfd2Fybl9jZmxhZ3MpOiBBZGQgLVd3cml0ZS1zdHJpbmdzCgktV3N0cmljdC1wcm90b3R5cGVzLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCgkqIGJzZWFyY2guYywgaW5kZXguYywgcmluZGV4LmMsIHN0cnN0ci5jLCBzdHJ0b2wuYywgd2FpdHBpZC5jOiBGaXgKCXdhcm5pbmdzIGFuZCByZWNvbmNpbGUgaW50ZXJmYWNlcyB3aXRoIHJlbGV2YW50IHN0YW5kYXJkcy4KCjIwMDUtMDQtMDIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AYWlycy5jb20+CgoJKiBjcC1kZW1hbmdsZS5jOiBVcGRhdGUgY29weXJpZ2h0LgoKMjAwNS0wMy0zMSAgSm9zZXBoIFMuIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBnZXR0aW1lb2ZkYXkuYzogQWRkICJTdXBwbGVtZW50YWwiIHRvIEBkZWZ0eXBlZm4uCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwNS0wMy0yOCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCgkqIHBleC1jb21tb24uYzogTmV3IGZpbGUuCgkqIHBleC1vbmUuYzogTmV3IGZpbGUuCgkqIHBleGVjdXRlLmM6IE5ldyBmaWxlLgoJKiBwZXgtY29tbW9uLmg6IEluY2x1ZGUgPHN0ZGlvLmg+LgoJKHN0cnVjdCBwZXhfb2JqKTogRGVmaW5lLgoJKHN0cnVjdCBwZXhfZnVuY3MpOiBEZWZpbmUuCgkocGV4X2luaXRfY29tbW9uKTogRGVjbGFyZS4KCSogcGV4LXVuaXguYzogUmV3cml0ZS4KCSogcGV4LXdpbjMyLmM6IFJld3JpdGUuCgkqIHBleC1kamdwcC5jOiBSZXdyaXRlLgoJKiBwZXgtbXNkb3MuYzogUmV3cml0ZS4KCSogdGVzdHN1aXRlL3RleHQtcGV4ZWN1dGUuYzogTmV3IGZpbGUuCgkqIHBleGVjdXRlLnR4aDogUmV3cml0ZS4KCSogY29uZmlndXJlLmFjOiBDaGVjayBmb3Igd2FpdDMgYW5kIHdhaXQ0LiAgU2V0IENIRUNLIHRvCglyZWFsbHktY2hlY2sgcmF0aGVyIHRoYW4gY2hlY2stY3BsdXMtZGVtLgoJKiBmdW5jdGlvbnMudGV4aTogUmVidWlsZC4KCSogTWFrZWZpbGUuaW46IFJlYnVpbGQgZGVwZW5kZW5jaWVzLgoJKENGSUxFUyk6IEFkZCBwZXhlY3V0ZS5jLCBwZXgtY29tbW9uLmMsIHBleC1vbmUuYy4KCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgcGV4ZWN1dGUubywgcGV4LWNvbW1vbi5vLCBwZXgtb25lLm8uCgkqIHRlc3RzdWl0ZS9NYWtlZmlsZS5pbiAocmVhbGx5LWNoZWNrKTogTmV3IHRhcmdldC4KCShjaGVjay1wZXhlY3V0ZSwgdGVzdC1wZXhlY3V0ZSk6IE5ldyB0YXJnZXRzLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoyMDA1LTAzLTI4ICBNYXJrIEtldHRlbmlzICA8a2V0dGVuaXNAZ251Lm9yZz4KCgkqIHVubGluay1pZi1vcmRpbmFyeS5jOiBJbmNsdWRlIDxzeXMvdHlwZXMuaD4uCgoyMDA1LTAzLTI3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglDb252ZXJ0IGxpYmliZXJ0eSB0byB1c2UgSVNPIEMgcHJvdG90eXBlIHN0eWxlIDcvbi4KCSogcmVnZXguYyAoUEFSQU1TKTogUmVtb3ZlIGRlZmluaXRpb24uCgkoUFJFRklYKTogVW5jb25kaXRpb25hbHkgZGVmaW5lIHVzaW5nIElTTyBDICMjIG9wZXJhdG9yLgoJKGluaXRfc3ludGF4X29uY2UsIGV4dHJhY3RfbnVtYmVyLCBleHRyYWN0X251bWJlcl9hbmRfaW5jciwKCXByaW50X2Zhc3RtYXAsIHByaW50X3BhcnRpYWxfY29tcGlsZWRfcGF0dGVybiwKCXByaW50X2NvbXBpbGVkX3BhdHRlcm4sIHByaW50X2RvdWJsZV9zdHJpbmcsIHByaW50Y2hhciwKCWNvbnZlcnRfbWJzX3RvX3djcywgcmVfc2V0X3N5bnRheCwgcmVnZXhfZ3Jvd19yZWdpc3RlcnMsCglyZWdleF9jb21waWxlLCBzdG9yZV9vcDEsIHN0b3JlX29wMiwgaW5zZXJ0X29wMSwgaW5zZXJ0X29wMiwKCWF0X2JlZ2xpbmVfbG9jX3AsIGF0X2VuZGxpbmVfcCwgZ3JvdXBfaW5fY29tcGlsZV9zdGFjaywKCWluc2VydF9zcGFjZSwgd2NzX2NvbXBpbGVfcmFuZ2UsIGJ5dGVfY29tcGlsZV9yYW5nZSwKCXRydW5jYXRlX3djaGFyLCByZV9jb21waWxlX2Zhc3RtYXAsIHJlX2NvbXBpbGVfZmFzdG1hcCwKCXJlX3NldF9yZWdpc3RlcnMsIHJlX3NlYXJjaCwgcmVfc2VhcmNoXzIsIHJlX3NlYXJjaF8zLCByZV9tYXRjaCwKCXJlX21hdGNoXzIsIGNvdW50X21ic19sZW5ndGgsIHdjc19yZV9tYXRjaF8yX2ludGVybmFsLAoJYnl0ZV9yZV9tYXRjaF8yX2ludGVybmFsLCBncm91cF9tYXRjaF9udWxsX3N0cmluZ19wLAoJYWx0X21hdGNoX251bGxfc3RyaW5nX3AsIGNvbW1vbl9vcF9tYXRjaF9udWxsX3N0cmluZ19wLAoJYmNtcF90cmFuc2xhdGUsIHJlX2NvbXBpbGVfcGF0dGVybiwgcmVfY29tcCwgcmVfZXhlYywgcmVnY29tcCwKCXJlZ2V4ZWMsIHJlZ2Vycm9yLCByZWdmcmVlKTogVXNlIElTTyBDIHByb3RvdHlwZSBzdHlsZS4KCSogcGFydGl0aW9uLmM6IChlbGVtX2NvbXBhcmUpOiBMaWtld2lzZS4KCSogY3AtZGVtYW5nbGUuYyAocHJpbnRfdXNhZ2UpOiBMaWtld2lzZS4KCjIwMDUtMDMtMjcgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCUNvbnZlcnQgbGliaWJlcnR5IHRvIHVzZSBJU08gQyBwcm90b3R5cGUgc3R5bGUgNS9uLgoJKiByYW5kb20uYyAoc3JhbmRvbSwgaW5pdHN0YXRlLCBzZXRzdGF0ZSwgcmFuZG9tKTogVXNlIElTTyBDCglwcm90b3R5cGVzLgoJKiBwdXRlbnYuYyAocHV0ZW52KTogTGlrZXdpc2UuCgkqIHBoeXNtZW0uYyAocGh5c21lbV9hdmFpbGFibGUsIHBoeXNtZW1fdG90YWwsIG1haW4pOiBMaWtld2lzZS4KCSogcGV4LXdpbjMyLmMgKGZpeF9hcmd2LCBwZXhlY3V0ZSwgcHdhaXQpOiBMaWtld2lzZS4KCSogcGV4LXVuaXguYyAocGV4ZWN1dGUsIHB3YWl0KTogTGlrZXdpc2UuCgkqIHBleC1tc2Rvcy5jIChwZXhlY3V0ZSwgcHdhaXQpOiBMaWtld2lzZS4KCSogcGV4LWRqZ3BwLmMgKHBleGVjdXRlLCBwd2FpdCk6IExpa2V3aXNlLgoJKiBwYXJ0aXRpb24uYyAocGFydGl0aW9uX25ldywgcGFydGl0aW9uX2RlbGV0ZSwgcGFydGl0aW9uX3VuaW9uKQoJKGVsZW1fY29tcGFyZSwgcGFydGl0aW9uX3ByaW50KTogTGlrZXdpc2UuCgkqIG9ic3RhY2suYyAoX29ic3RhY2tfYmVnaW4sIF9vYnN0YWNrX2JlZ2luXzEsIF9vYnN0YWNrX25ld2NodW5rLAoJX29ic3RhY2tfYWxsb2NhdGVkX3AsIF9vYnN0YWNrX2ZyZWUsIG9ic3RhY2tfZnJlZSwKCV9vYnN0YWNrX21lbW9yeV91c2VkLCBwcmludF9hbmRfYWJvcnQsIG9ic3RhY2tfbmV4dF9mcmVlLAoJb2JzdGFja19vYmplY3Rfc2l6ZSwgb2JzdGFja19iYXNlKTogTGlrZXdpc2UuICBSZW1vdmUgY29kZXMKCXByZWRpY2F0ZWQgb24gIWRlZmluZWQoX19TVERDX18pLgoJKiBvYmphbGxvYy5jIChvYmphbGxvY19jcmVhdGUsIF9vYmphbGxvY19hbGxvYywgb2JqYWxsb2NfZnJlZSwKCW9iamFsbG9jX2ZyZWVfYmxvY2spOiBVc2UgSVNPIEMgcHJvdG90eXBlcy4KCSogbWtzdGVtcHMuYyAobWtzdGVtcHMpOiBMaWtld2lzZS4KCSogbWVtc2V0LmMgKG1lbXNldCk6IExpa2V3aXNlLgoJKiBtZW1wY3B5LmMgKG1lbXBjcHkpOiBMaWtld2lzZS4KCSogcmVuYW1lLmMgKHJlbmFtZSk6IExpa2V3aXNlLgoJKiByaW5kZXguYyAocmluZGV4KTogTGlrZXdpc2UuCgkqIHNldGVudi5jIChzZXRlbnYsIHVuc2V0ZW52KTogTGlrZXdpc2UuCgkqIHNpZ3NldG1hc2suYyAoc2lnc2V0bWFzayk6IExpa2V3aXNlLgoJKiBzbnByaW50Zi5jIChzbnByaW50Zik6IExpa2V3aXNlLgoJKiBzb3J0LmMgKHNvcnRfcG9pbnRlcnMsIHhtYWxsb2MpOiBMaWtld2lzZS4KCSogc3BhY2VzLmMgKHNwYWNlcyk6IExpa2V3aXNlLgoJKiBzcGxheS10cmVlLmMgKHNwbGF5X3RyZWVfZGVsZXRlX2hlbHBlciwKCXNwbGF5X3RyZWVfc3BsYXlfaGVscGVyLCBzcGxheV90cmVlX3NwbGF5LAoJc3BsYXlfdHJlZV9mb3JlYWNoX2hlbHBlciwgc3BsYXlfdHJlZV94bWFsbG9jX2FsbG9jYXRlLAoJc3BsYXlfdHJlZV9uZXcsIHNwbGF5X3RyZWVfeG1hbGxvY19hbGxvY2F0ZSwKCXNwbGF5X3RyZWVfbmV3X3dpdGhfYWxsb2NhdG9yLCBzcGxheV90cmVlX2RlbGV0ZSwKCXNwbGF5X3RyZWVfaW5zZXJ0LCBzcGxheV90cmVlX3JlbW92ZSwgc3BsYXlfdHJlZV9sb29rdXAsCglzcGxheV90cmVlX21heCwgc3BsYXlfdHJlZV9taW4sIHNwbGF5X3RyZWVfcHJlZGVjZXNzb3IsCglzcGxheV90cmVlX3N1Y2Nlc3Nvciwgc3BsYXlfdHJlZV9mb3JlYWNoLAoJc3BsYXlfdHJlZV9jb21wYXJlX2ludHMsIHNwbGF5X3RyZWVfY29tcGFyZV9wb2ludGVycyk6IExpa2V3aXNlLgoJKiBzdHBjcHkuYyAoc3RwY3B5KTogTGlrZXdpc2UuCgkqIHN0cG5jcHkuYyAoc3RwbmNweSk6IExpa2V3aXNlLgoJKiBzdHJjYXNlY21wLmMgKHN0cmNhc2VjbXApOiBMaWtld2lzZS4KCSogc3RyY2hyLmMgKHN0cmNocik6IExpa2V3aXNlLgoJKiBzdHJkdXAuYyAoc3RyZHVwKTogTGlrZXdpc2UuCgoyMDA1LTAzLTI3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglDb252ZXJ0IGxpYmliZXJ0eSB0byB1c2UgSVNPIEMgcHJvdG90eXBlIHN0eWxlIDYvbi4KCSogc3RyZXJyb3IuYyAoaW5pdF9lcnJvcl90YWJsZXMsIGVycm5vX21heCwgc3RyZXJyb3IsIHN0cmVycm5vLAoJc3RydG9lcnJubywgbWFpbik6IFVzZSBJU08gQyBwcm90b3R5cGUgc3R5bGUuCgkqIHN0cm5jYXNlY21wLmMgKHN0cm5jYXNlY21wKTogTGlrZXdpc2UuCgkqIHN0cm5jbXAuYyAoc3RybmNtcCk6IExpa2V3aXNlLgoJKiBzdHJuZHVwLmMgKHN0cm5kdXApOiBMaWtld2lzZS4KCSogc3RycmNoci5jIChzdHJyY2hyKTogTGlrZXdpc2UuCgkqIHN0cnNpZ25hbC5jIChpbml0X3NpZ25hbF90YWJsZXMsIHNpZ25vX21heCwgc3Ryc2lnbmFsLAoJc3Ryc2lnbm8sIHN0cnRvc2lnbm8sIHBzaWduYWwsIG1haW4pOiBMaWtld2lzZS4KCSogc3Ryc3RyLmMgKHN0cnN0cik6IExpa2V3aXNlLgoJKiBzdHJ0b2QuYyAoc3RydG9kLCBhdG9mKTogTGlrZXdpc2UuCgkqIHN0cnRvbC5jIChzdHJ0b2wpOiBMaWtld2lzZS4KCSogc3RydG91bC5jIChzdHJ0b3VsKTogTGlrZXdpc2UuCgkqIHRlcm5hcnkuYyAodGVybmFyeV9pbnNlcnQsIHRlcm5hcnlfY2xlYW51cCwgdGVybmFyeV9zZWFyY2gsCgl0ZXJuYXJ5X3JlY3Vyc2l2ZXNlYXJjaCk6IExpa2V3aXNlLgoJKiB0bXBuYW0uYyAodG1wbmFtKTogTGlrZXdpc2UuCgkqIHVubGluay1pZi1vcmRpbmFyeS5jICh1bmxpbmtfaWZfb3JkaW5hcnkpOiBMaWtld2lzZS4KCSogdmFzcHJpbnRmLmMgKGludF92YXNwcmludGYsIHZhc3ByaW50ZiwgY2hlY2tpdCwgbWFpbik6IExpa2V3aXNlLgoJKiB2Zm9yay5jICh2Zm9yayk6IExpa2V3aXNlLgoJKiB2ZnByaW50Zi5jICh2ZnByaW50Zik6IExpa2V3aXNlLgoJKiB2cHJpbnRmLmMgKHZwcmludGYpOiBMaWtld2lzZS4KCSogdnNucHJpbnRmLmMgKHZzbnByaW50ZiwgY2hlY2tpdCwgbWFpbik6IExpa2V3aXNlLgoJKiB2c3ByaW50Zi5jICh2c3ByaW50Zik6IExpa2V3aXNlLgoJKiB3YWl0cGlkLmMgKHdhaXRwaWQpOiBMaWtld2lzZS4KCSogeGF0ZXhpdC5jICh4YXRleGl0LCB4YXRleGl0X2NsZWFudXApOiBMaWtld2lzZS4KCSogeGV4aXQuYyAoeGV4aXQpOiBMaWtld2lzZS4KCSogeG1hbGxvYy5jICh4bWFsbG9jX3NldF9wcm9ncmFtX25hbWUsIHhtYWxsb2NfZmFpbGVkLCB4bWFsbG9jLAoJeGNhbGxvYywgeHJlYWxsb2MpOiBMaWtld2lzZS4KCSogeG1lbWR1cC5jICh4bWVtZHVwKTogTGlrZXdpc2UuCgkqIHhzdHJkdXAuYyAoeHN0cmR1cCk6IExpa2V3aXNlLgoJKiB4c3RyZXJyb3IuYyAoeHN0cmVycm9yKTogTGlrZXdpc2UuCgkqIHhzdHJuZHVwLmMgKHhzdHJuZHVwKTogTGlrZXdpc2UuCgoyMDA1LTAzLTI3ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25maWd1cmUuYWMgKGFjX2NfcHJlcHJvY193YXJuX2ZsYWcpOiBSZW1vdmUgLVd0cmFkaXRpb25hbAoJZmxhZ3MuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDA1LTAzLTI3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCgkqIGdldG9wdDEuYyAoZ2V0b3B0X2xvbmdfb25seSk6IEZpeCB0aGlua28uCgoyMDA1LTAzLTI3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglDb252ZXJ0IGxpYmliZXJ0eSB0byB1c2UgSVNPIEMgcHJvdG90eXBlIHN0eWxlIDQvbi4KCSogaGFzaHRhYi5jIChoaWdoZXJfcHJpbWVfaW5kZXgsIGhhc2hfcG9pbnRlciwgZXFfcG9pbnRlciwKCWh0YWJfc2l6ZSwgaHRhYl9lbGVtZW50cywgaHRhYl9tb2RfMSwgaHRhYl9tb2QsIGh0YWJfbW9kX20yLAoJaHRhYl9jcmVhdGVfYWxsb2MsIGh0YWJfc2V0X2Z1bmN0aW9uc19leCwgaHRhYl9jcmVhdGUsCglodGFiX3RyeV9jcmVhdGUsIGh0YWJfZGVsZXRlLCBodGFiX2VtcHR5LAoJZmluZF9lbXB0eV9zbG90X2Zvcl9leHBhbmQsIGh0YWJfZXhwYW5kLCBodGFiX2ZpbmRfd2l0aF9oYXNoLAoJaHRhYl9maW5kLCBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gsIGh0YWJfZmluZF9zbG90LAoJaHRhYl9yZW1vdmVfZWx0LCBodGFiX3JlbW92ZV9lbHRfd2l0aF9oYXNoLCBodGFiX2NsZWFyX3Nsb3QsCglodGFiX3RyYXZlcnNlX25vcmVzaXplLCBodGFiX3RyYXZlcnNlLCBodGFiX2NvbGxpc2lvbnMsCglodGFiX2hhc2hfc3RyaW5nLCBpdGVyYXRpdmVfaGFzaCk6IFVzZSBJU08gQyBwcm90b3R5cGUuCgkqIGhleC5jIChoZXhfaW5pdCk6IExpa2V3aXNlLgoJKiBpbmRleC5jIChpbmRleCk6IExpa2V3aXNlLgoJKiBpbnNxdWUuYyAoaW5zcXVlLCByZW1xdWUpOiBMaWtld2lzZS4KCSogbGJhc2VuYW1lLmMgKGxiYXNlbmFtZSk6IExpa2V3aXNlLgoJKiBscmVhbHBhdGguYyAobHJlYWxwYXRoKTogTGlrZXdpc2UuCgkqIG1ha2UtcmVsYXRpdmUtcHJlZml4LmMgKHNhdmVfc3RyaW5nLCBzcGxpdF9kaXJlY3RvcmllcywKCWZyZWVfc3BsaXRfZGlyZWN0b3JpZXMsIG1ha2VfcmVsYXRpdmVfcHJlZml4KTogTGlrZXdpc2UuCgkqIG1ha2UtdGVtcC1maWxlLmMgKHRyeSwgY2hvb3NlX3RtcGRpciwgbWFrZV90ZW1wX2ZpbGUpOiBMaWtld2lzZS4KCSogbWQ1LmMgKG1kNV9pbml0X2N0eCwgbWQ1X3JlYWRfY3R4LCBtZDVfZmluaXNoX2N0eCwgbWQ1X3N0cmVhbSwKCW1kNV9idWZmZXIsIG1kNV9wcm9jZXNzX2J5dGVzLCBtZDVfcHJvY2Vzc19ibG9jayk6IExpa2V3aXNlLgoJKiBtZW1jaHIuYyAobWVtY2hyKTogTGlrZXdpc2UuCgkqIG1lbWNweS5jIChtZW1jcHkpOiBMaWtld2lzZS4KCSogbWVtbW92ZS5jIChtZW1tb3ZlKTogTGlrZXdpc2UuCgkqIGdldHRpbWVvZmRheS5jIChnZXR0aW1lb2ZkYXkpOiBMaWtld2lzZS4KCSogZ2V0cnVudGltZS5jIChnZXRfcnVuX3RpbWUpOiBMaWtld2lzZS4KCSogZ2V0cHdkLmMgKGdldHB3ZCwgZ2V0cHdkKTogTGlrZXdpc2UuCgkqIGdldHBhZ2VzaXplLmMgKGdldHBhZ2VzaXplKTogTGlrZXdpc2UuCgkqIGdldG9wdDEuYyAoZ2V0b3B0X2xvbmcsIGdldG9wdF9sb25nX29ubHksIG1haW4pOiBMaWtld2lzZS4KCSogZ2V0b3B0LmMgKG15X2luZGV4LCBleGNoYW5nZSwgX2dldG9wdF9pbml0aWFsaXplLAoJX2dldG9wdF9pbnRlcm5hbCwgZ2V0b3B0LCBtYWluKTogTGlrZXdpc2UuCgkqIGdldGN3ZC5jIChnZXRjd2QpOiBMaWtld2lzZS4KCSogZm5tYXRjaC5jIChmbm1hdGNoKTogTGlrZXdpc2UuCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X2Fsd2F5c192YWxpZCwKCWZsb2F0Zm9ybWF0X2kzODdfZXh0X2lzX3ZhbGlkLCBnZXRfZmllbGQsIGZsb2F0Zm9ybWF0X3RvX2RvdWJsZSwKCXB1dF9maWVsZCwgZmxvYXRmb3JtYXRfZnJvbV9kb3VibGUsIGZsb2F0Zm9ybWF0X2lzX3ZhbGlkLAoJaWVlZV90ZXN0LCBtYWluKTogTGlrZXdpc2UuCgkqIGZpYmhlYXAuYyAoZmliaGVhcF9uZXcsIGZpYm5vZGVfbmV3LCBmaWJoZWFwX2NvbXBhcmUsCglmaWJoZWFwX2NvbXBfZGF0YSwgZmliaGVhcF9pbnNlcnQsIGZpYmhlYXBfbWluLCBmaWJoZWFwX21pbl9rZXksCglmaWJoZWFwX3VuaW9uLCBmaWJoZWFwX2V4dHJhY3RfbWluLCBmaWJoZWFwX3JlcGxhY2Vfa2V5X2RhdGEsCglmaWJoZWFwX3JlcGxhY2Vfa2V5LCBmaWJoZWFwX3JlcGxhY2VfZGF0YSwgZmliaGVhcF9kZWxldGVfbm9kZSwKCWZpYmhlYXBfZGVsZXRlLCBmaWJoZWFwX2VtcHR5LCBmaWJoZWFwX2V4dHJfbWluX25vZGUsCglmaWJoZWFwX2luc19yb290LCBmaWJoZWFwX3JlbV9yb290LCBmaWJoZWFwX2NvbnNvbGlkYXRlLAoJZmliaGVhcF9saW5rLCBmaWJoZWFwX2N1dCwgZmliaGVhcF9jYXNjYWRpbmdfY3V0LAoJZmlibm9kZV9pbnNlcnRfYWZ0ZXIsIGZpYm5vZGVfcmVtb3ZlKTogTGlrZXdpc2UuCgkqIGZmcy5jIChmZnMpOiBMaWtld2lzZS4KCSogZmRtYXRjaC5jIChmZG1hdGNoKTogTGlrZXdpc2UuCgkqIGR5bi1zdHJpbmcuYyAoZHluX3N0cmluZ19pbml0LCBkeW5fc3RyaW5nX25ldywKCWR5bl9zdHJpbmdfZGVsZXRlLCBkeW5fc3RyaW5nX3JlbGVhc2UsIGR5bl9zdHJpbmdfcmVzaXplLAoJZHluX3N0cmluZ19jbGVhciwgZHluX3N0cmluZ19jb3B5LCBkeW5fc3RyaW5nX2NvcHlfY3N0ciwKCWR5bl9zdHJpbmdfcHJlcGVuZCwgZHluX3N0cmluZ19wcmVwZW5kX2NzdHIsIGR5bl9zdHJpbmdfaW5zZXJ0LAoJZHluX3N0cmluZ19pbnNlcnRfY3N0ciwgZHluX3N0cmluZ19pbnNlcnRfY2hhciwKCWR5bl9zdHJpbmdfYXBwZW5kLCBkeW5fc3RyaW5nX2FwcGVuZF9jc3RyLAoJZHluX3N0cmluZ19hcHBlbmRfY2hhciwgZHluX3N0cmluZ19zdWJzdHJpbmcsIGR5bl9zdHJpbmdfZXEpOgoJTGlrZXdpc2UuCgoyMDA1LTAzLTI3ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGludGVncmFibGUtc29sdXRpb25zLm5ldD4KCglDb252ZXJ0IGxpYmliZXJ0eSB0byB1c2UgSVNPIEMgcHJvdG90eXBlIHN0eWxlIDMvbi4KCSogY3BsdXMtZGVtLmMgKHNldF9jcGx1c19tYXJrZXJfZm9yX2RlbWFuZ2xpbmcsIGNvbnN1bWVfY291bnQsCgljb25zdW1lX2NvdW50X3dpdGhfdW5kZXJzY29yZXMsIGNvZGVfZm9yX3F1YWxpZmllciwKCXF1YWxpZmllcl9zdHJpbmcsIGRlbWFuZ2xlX3F1YWxpZmllciwgY3BsdXNfZGVtYW5nbGVfb3BuYW1lLAoJY3BsdXNfbWFuZ2xlX29wbmFtZSwgY3BsdXNfZGVtYW5nbGVfc2V0X3N0eWxlLAoJY3BsdXNfZGVtYW5nbGVfbmFtZV90b19zdHlsZSwgY3BsdXNfZGVtYW5nbGUsIGdyb3dfdmVjdCwKCWFkYV9kZW1hbmdsZSwgaW50ZXJuYWxfY3BsdXNfZGVtYW5nbGUsIHNxdWFuZ2xlX21vcF91cCwKCXdvcmtfc3R1ZmZfY29weV90b19mcm9tLCBkZWxldGVfbm9uX0JfS193b3JrX3N0dWZmLAoJZGVsZXRlX3dvcmtfc3R1ZmYsIG1vcF91cCwgZGVtYW5nbGVfc2lnbmF0dXJlLAoJZGVtYW5nbGVfbWV0aG9kX2FyZ3MsIGRlbWFuZ2xlX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm0sCglkZW1hbmdsZV9leHByZXNzaW9uLCBkZW1hbmdsZV9pbnRlZ3JhbF92YWx1ZSwKCWRlbWFuZ2xlX3JlYWxfdmFsdWUsIGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0sCglkZW1hbmdsZV90ZW1wbGF0ZSwgYXJtX3B0LCBkZW1hbmdsZV9hcm1faHBfdGVtcGxhdGUsCglkZW1hbmdsZV9jbGFzc19uYW1lLCBkZW1hbmdsZV9jbGFzcywgaXRlcmF0ZV9kZW1hbmdsZV9mdW5jdGlvbiwKCWRlbWFuZ2xlX3ByZWZpeCwgZ251X3NwZWNpYWwsIHJlY3Vyc2l2ZWx5X2RlbWFuZ2xlLCBhcm1fc3BlY2lhbCwKCWRlbWFuZ2xlX3F1YWxpZmllZCwgZ2V0X2NvdW50LCBkb190eXBlLCBkZW1hbmdsZV9mdW5kX3R5cGUsCglkb19ocGFjY190ZW1wbGF0ZV9jb25zdF92YWx1ZSwgZG9faHBhY2NfdGVtcGxhdGVfbGl0ZXJhbCwKCXNuYXJmX251bWVyaWNfbGl0ZXJhbCwgZG9fYXJnLCByZW1lbWJlcl90eXBlLCByZW1lbWJlcl9LdHlwZSwKCXJlZ2lzdGVyX0J0eXBlLCByZW1lbWJlcl9CdHlwZSwgZm9yZ2V0X0JfYW5kX0tfdHlwZXMsCglmb3JnZXRfdHlwZXMsIGRlbWFuZ2xlX2FyZ3MsIGRlbWFuZ2xlX25lc3RlZF9hcmdzLAoJZGVtYW5nbGVfZnVuY3Rpb25fbmFtZSwgc3RyaW5nX25lZWQsIHN0cmluZ19kZWxldGUsIHN0cmluZ19pbml0LAoJc3RyaW5nX2NsZWFyLCBzdHJpbmdfZW1wdHksIHN0cmluZ19hcHBlbmQsIHN0cmluZ19hcHBlbmRzLAoJc3RyaW5nX2FwcGVuZG4sIHN0cmluZ19wcmVwZW5kLCBzdHJpbmdfcHJlcGVuZHMsIHN0cmluZ19wcmVwZW5kbiwKCXN0cmluZ19hcHBlbmRfdGVtcGxhdGVfaWR4KTogVXNlIElTTyBDIHByb290eXBlIHN0eWxlLgoJKiBjcC1kZW1pbnQuYyAoY3BsdXNfZGVtYW5nbGVfZmlsbF9jb21wb25lbnQsCgljcGx1c19kZW1hbmdsZV9maWxsX2J1aWx0aW5fdHlwZSwgY3BsdXNfZGVtYW5nbGVfZmlsbF9vcGVyYXRvciwKCWNwbHVzX2RlbWFuZ2xlX3YzX2NvbXBvbmVudHMpOiBMaWtld2lzZS4KCjIwMDUtMDMtMjYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCUNvbnZlcnQgbGliaWJlcnR5IHRvIHVzZSBJU08gQyBwcm90b3R5cGUgc3R5bGUgMi9uLgoJKiBjcC1kZW1hbmdsZS5oOiBSZW1vdmUgdXNlcyBvZiBQQVJBTVMuCgkqIGNwLWRlbWFuZ2xlLmM6IExpa2V3aXNlLgoJKGRfZHVtcCwgY3BsdXNfZGVtYW5nbGVfZmlsbF9uYW1lLAoJY3BsdXNfZGVtYW5nbGVfZmlsbF9leHRlbmRlZF9vcGVyYXRvciwgY3BsdXNfZGVtYW5nbGVfZmlsbF9jdG9yLAoJY3BsdXNfZGVtYW5nbGVfZmlsbF9kdG9yLCBkX21ha2VfZW1wdHksIGRfbWFrZV9jb21wLCBkX21ha2VfbmFtZSwKCWRfbWFrZV9idWlsdGluX3R5cGUsIGRfbWFrZV9vcGVyYXRvciwgZF9tYWtlX2V4dGVuZGVkX29wZXJhdG9yLAoJZF9tYWtlX2N0b3IsIGRfbWFrZV9kdG9yLCBkX21ha2VfdGVtcGxhdGVfcGFyYW0sIGRfbWFrZV9zdWIsCgljcGx1c19kZW1hbmdsZV9tYW5nbGVkX25hbWUsIGhhc19yZXR1cm5fdHlwZSwKCWlzX2N0b3JfZHRvcl9vcl9jb252ZXJzaW9uLCBkX2VuY29kaW5nLCBkX25hbWUsIGRfbmVzdGVkX25hbWUsCglkX3ByZWZpeCwgZF91bnF1YWxpZmllZF9uYW1lLCBkX3NvdXJjZV9uYW1lLCBkX251bWJlciwKCWRfaWRlbnRpZmllciwgZF9vcGVyYXRvcl9uYW1lLCBkX3NwZWNpYWxfbmFtZSwgZF9jYWxsX29mZnNldCwKCWRfY3Rvcl9kdG9yX25hbWUsIGNwbHVzX2RlbWFuZ2xlX3R5cGUsIGRfY3ZfcXVhbGlmaWVycywKCWRfZnVuY3Rpb25fdHlwZSwgZF9iYXJlX2Z1bmN0aW9uX3R5cGUsIGRfY2xhc3NfZW51bV90eXBlLAoJZF9hcnJheV90eXBlLCBkX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGUsIGRfdGVtcGxhdGVfcGFyYW0sCglkX3RlbXBsYXRlX2FyZ3MsIGRfdGVtcGxhdGVfYXJnLCBkX2V4cHJlc3Npb24sIGRfZXhwcl9wcmltYXJ5LAoJZF9sb2NhbF9uYW1lLCBkX2Rpc2NyaW1pbmF0b3IsIGRfYWRkX3N1YnN0aXR1dGlvbiwKCWRfc3Vic3RpdHV0aW9uLCBkX3ByaW50X3Jlc2l6ZSwgZF9wcmludF9hcHBlbmRfY2hhciwKCWRfcHJpbnRfYXBwZW5kX2J1ZmZlciwgZF9wcmludF9lcnJvciwgY3BsdXNfZGVtYW5nbGVfcHJpbnQsCglkX3ByaW50X2NvbXAsIGRfcHJpbnRfamF2YV9pZGVudGlmaWVyLCBkX3ByaW50X21vZF9saXN0LAoJZF9wcmludF9tb2QsIGRfcHJpbnRfZnVuY3Rpb25fdHlwZSwgZF9wcmludF9hcnJheV90eXBlLAoJZF9wcmludF9leHByX29wLCBkX3ByaW50X2Nhc3QsIGNwbHVzX2RlbWFuZ2xlX2luaXRfaW5mbywKCWRfZGVtYW5nbGUsIF9fY3hhX2RlbWFuZ2xlLCBjcGx1c19kZW1hbmdsZV92MywgamF2YV9kZW1hbmdsZV92MywKCWlzX2N0b3Jfb3JfZHRvciwgaXNfZ251X3YzX21hbmdsZWRfY3RvciwgaXNfZ251X3YzX21hbmdsZWRfZHRvciwKCXByaW50X3VzYWdlLCBtYWluKToKCjIwMDUtMDMtMjYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAaW50ZWdyYWJsZS1zb2x1dGlvbnMubmV0PgoKCUNvbnZlcnQgbGliaWJlcnR5IHRvIElTTyBDIHByb3RvdHlwZSBzdHlsZSAxL24uCgkqIF9kb3BybnQuYzogUmVtb3ZlIGNvbmRpdGlvbmFsICNpbmNsdWRlIDx2YXJhcmdzLmg+IG9uCglBTlNJX1BST1RPVFlQRVMgYXMgdGhlIGxhdHRlciBpcyBhbHdheXMgYXNzdW1lZC4KCShfZG9wcm50LCBjaGVja2l0LCBtYWluKTogVXNlIElTTyBDIHByb3RvdHlwZS4KCSogYWxsb2NhLmMgKGZpbmRfc3RhY2tfZGlyZWN0aW9uLCBDX2FsbG9jYSk6IFVzZSBJU08gQyBwcm90b3R5cGUuCgkqIGFyZ3YuYzogUmVtb3ZlIGNvbmRpdGlvbmFsICNpbmNsdWRlcyBvbiBBTlNJX1BST1RPVFlQRVMuCgkoZHVwYXJndiwgZnJlZWFyZ3YsIGJ1aWxkYXJndiwgbWFpbik6IFVzZSBJU08gQyBwcm90b3R5cGUuCgkqIGF0ZXhpdC5jIChhdGV4aXQpOiBMaWtld2lzZQoJKiBhc3ByaW50Zi5jOiBSZW1vdmUgY29uZGl0aW9uYWwgaW5jbHVkZSBvbiBBTlNJX1BST1RPVFlQRVMuCgkoYXNwcmludGYpOiBVc2UgSVNPIEMgcHJvdG90eXBlLgoJKiBiYXNlbmFtZS5jIChiYXNlbmFtZSk6IExpa2V3aXNlCgkqIGJjbXAuYyAoYmNtcCk6IExpa2V3aXNlLgoJKiBiY29weS5jIChiY29weSk6IExpa2V3aXNlLgoJKiBiemVyby5jIChiemVybyk6IExpa2V3aXNlLgoJKiBic2VhcmNoLmMgKGJzZWFyY2gpOiBMaWtld2lzZS4gIEltcHJvdmUgY29uc3QtY29ycmVjdG5lc3MuCgkqIGNob29zZS10ZW1wLmMgKGNob29zZV90ZW1wX2Jhc2UpOiBMaWtld2lzZS4KCSogY2FsbG9jLmM6IFJlbW92ZSBjb25kaXRpb25hbCAjaW5jbHVkZSBvbiBBTlNJX1BST1RPVFlQRVMuCgkoY2FsbG9jKTogVXNlIElTTyBDIHByb3RvdHlwZS4KCSogY2xvY2suYyAoY2xvY2spOiBMaWtld2lzZS4KCSogY29uY2F0LmM6IFJlbW92ZSBjb25kaXRpb25hbCAjaW5jbHVkZSBvbiBBTlNJX1BST1RPVFlQRVMuCgkodmNvbmNhdF9sZW5ndGgsIHZjb25jYXRfY29weSwgY29uY2F0X2xlbmd0aCwgY29uY2F0X2NvcHksCgljb25jYXRfY29weTIsIGNvbmNhdCwgcmVjb25jYXQsIG1haW4pOiBVc2UgSVNPIEMgcHJvdG90eXBlLgoJKiBjb3B5c2lnbi5jIChjb3B5c2lnbik6IExpa2V3aXNlLgoKMjAwNS0wMy0yNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBzdHJuZHVwLmMgYW5kIHhzdHJuZHVwLmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIHhzdHJuZHVwLm8uCgkoQ09ORklHVVJFRF9PRklMRVMpOiBBZGQgc3RybmR1cC5vLgoJUmVnZW5lcmF0ZSBkZXBlbmRlbmNpZXMuCgoJKiBjb25maWd1cmUuYWMgKGZ1bmNzLCBBQ19DSEVDS19GVU5DUyk6IEFkZCBzdHJuZHVwLgoKCSogc3RybmR1cC5jLCB4c3RybmR1cC5jOiBOZXcuCgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZSwgZnVuY3Rpb25zLnRleGk6IFJlZ2VuZXJhdGUuCgoyMDA1LTAzLTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB4bWVtZHVwLmMsIHhzdHJkdXAuYzogRXhwb3NlIHRoZSB0YWlsIGNhbGwuCgoyMDA1LTAzLTA5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlndXJlLmFjIChmdW5jcyk6IEFkZCBnZXR0aW1lb2ZkYXkuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGdldHRpbWVvZmRheS5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBnZXR0aW1lb2ZkYXkuCgkoQ09ORklHVVJFRF9PRklMRVMpOiBBZGQgZ2V0dGltZW9mZGF5Lm8uCgkoLi9nZXR0aW1lb2ZkYXkubyk6IE5ldyBydWxlLgoKMjAwNS0wMy0wOSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBhaXJzLmNvbT4KCgkqIHBleC1vczIuYzogUmVtb3ZlLgoJKiBjb25maWd1cmUuYWM6IFJlbW92ZSAqLSotb3MyLWVteCogY2FzZSB3aGVuIHNldHRpbmcgcGV4ZWN1dGUuCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBSZW1vdmUgcGV4LW9zMi5jLgoJKENPTkZJR1VSRURfT0ZJTEVTKTogUmVtb3ZlIHBleC1vczIuby4KCShwZXgtb3MyLm8pOiBSZW1vdmUgdGFyZ2V0LgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgoyMDA1LTAzLTA3ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGFpcnMuY29tPgoKCSogbXB3LWNvbmZpZy5pbjogUmVtb3ZlLgoJKiBtcHctbWFrZS5zZWQ6IFJlbW92ZS4KCSogbXB3LmM6IFJlbW92ZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IFJlbW92ZSBwZXgtbXB3LmMuCgkoQ09ORklHVVJFRF9PRklMRVMpOiBSZW1vdmUgcGV4LW1wdy5vLgoJKG1wdy5vLCBwZXgtbXB3Lm8pOiBSZW1vdmUgdGFyZ2V0cy4KCSogbWFpbnQtdG9vbCAodW5kb2MpOiBSZW1vdmUgcmVmZXJlbmNlIHRvIG1wdy5jLgoKMjAwNS0wMy0wNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuYWMgKHRhcmdldF9oZWFkZXJfZGlyKTogdmZvcmsgaXMgYSBzdHViIHVuZGVyIGRqZ3BwLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwNS0wMy0wMSAgSmFuIEJldWxpY2ggIDxqYmV1bGljaEBub3ZlbGwuY29tPgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCB1bmxpbmstaWYtb3JkaW5hcnkuYwoJKFJFUVVJUkVEX09GSUxFUyk6IEFkZCB1bmxpbmstaWYtb3JkaW5hcnkuby4KCUFkZCBkZXBlbmRlbmNpZXMgYW5kIHJ1bGUgZm9yIHVubGluay1pZi1vcmRpbmFyeS5vLgoJKiB1bmxpbmstaWYtb3JkaW5hcnkuYzogTmV3LgoKMjAwNS0wMy0wMSAgQmVuIEVsbGlzdG9uICA8YmplQGF1LmlibS5jb20+CgoJKiBoYXNodGFiLmMgKGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCk6IE1ha2UgZnVuY3Rpb24KCWRvY3VtZW50YXRpb24gY2xlYXJlci4KCjIwMDUtMDItMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoX19jeGFfZGVtYW5nbGUpOiBDaGFuZ2UgcmVzb2x1dGlvbiBvZiBhbWJpZ3VvdXMKCWFyZ3VtZW50cy4KCjIwMDUtMDEtMTEgIFRvYmlhcyBTY2hsInV0ZXIgIDx0b2JpYXMuc2NobHVldGVyQHBoeXNpay51bmktbXVlbmNoZW4uZGU+CgoJKiBoZXguYyAoaGV4X3ZhbHVlKTogR3JvdXAgJ3Vuc2lnbmVkIGludCcgdG9nZXRoZXIgdG8gZ2V0IGNvcnJlY3QKCW1hcmt1cC4KCSogZnVuY3Rpb25zLnRleGk6IFJlZ2VuZXJhdGVkLgoKMjAwNC0xMi0yNyAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogTWFrZWZpbGUuaW46IFVuZG8gdG8gMjAwNC0xMi0xNy4KCSogYWNsb2NhbC5tNDogTGlrZXdpc2UuCgkqIGNvbmZpZy50YWJsZTogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZS5hYzogTGlrZXdpc2UuCgkqIG1haW50LXRvb2w6IExpa2V3aXNlLgoJKiBjb25maWd1cmU6IExpa2V3aXNlLgoKMjAwNC0xMi0xOSAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCVBSIGJvb3RzdHJhcC8xOTA3MgoJKiBNYWtlZmlsZS5pbiAoZW5hYmxlX3NoYXJlZCk6IE5ldyBzdWJzdGl0dXRlLgoJKExUVEFSR0VUTElCKTogTmV3LgoJKFBSRUZJWFRBUkdFVExJQik6IE5ldy4KCShMVFRFU1RMSUIpOiBOZXcuCgkoUFJFRklYVEVTVExJQik6IE5ldy4KCShDQ0xEKTogTmV3LgoJKExJTkspOiBOZXcuCgkoJChUQVJHRVRMSUIpKTogVXNlICQoTElOSykgdG8gY3JlYXRlIGxpYnJhcmllcyBhbmQgY3JlYXRlCgl0YXJnZXRzIGJ5IGhhbmQuCgkoJChURVNUTElCKSk6IExpa2V3aXNlLgoJKG1vc3RseWNsZWFuKTogRG9uJ3QgcmVtb3ZlIC5saWJzLiBSZW1vdmUgdGhlIGxpYnRvb2wgb2JqZWN0CglkaXJlY3RvcnkuCgoJKiBjb25maWcudGFibGUgKGVuYWJsZV9zaGFyZWQpOiBSZW1vdmVkLgoKCSogY29uZmlndXJlLmFjIChlbmFibGVfc3RhdGljKTogU2V0IHRvIHllcy4KCShBQ19QUk9HX0xJQlRPT0wpOiBSZW1vdmVkLgoJKEFNX0RJU0FCTEVfU0hBUkVEKTogVW5jb21tZW50ZWQuCgkoQU1fUFJPR19MSUJUT09MKTogTGlrZXdpc2UuCgkoTElCT0JKUyk6IEFkZCBgLi8nIHRvIGF2b2lkIFZQQVRILgoJKExUTElCT0JKUyk6IExpa2V3aXNlLgoJKGVuYWJsZV9zaGFyZWQpOiBTdWJzdGl0dXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwNC0xMi0xOCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogTWFrZWZpbGUuaW4gKHRvcF9idWlsZGRpcik6IFNldCB0byBgLicuCgkoT1VUUFVUX09QVElPTik6IFJlbW92ZWQuCgkoTElCVE9PTCk6IE5ldy4KCShMVExJQk9CSlMpOiBOZXcuCgkoRVhUUkFfTFRPRklMRVMpOiBOZXcuCgkoRkxBR1NfVE9fUEFTUyk6IEFkZCBFWFRSQV9MVE9GSUxFUy4KCShhbGwpOiBSZW1vdmUgc3RhbXAtcGljZGlyLgoJKExUQ09NUElMRSk6IE5ldy4KCSguYy5sbyk6IE5ldyBydWxlLgoJKFJFUVVJUkVEX0xUT0ZJTEVTKTogTmV3LgoJKENPTkZJR1VSRURfTFRPRklMRVMpOiBOZXcuCgkoJChUQVJHRVRMSUIpKTogQ2hlY2sgLmxpYnMgZm9yIFBJQyBvYmplY3QgZmlsZXMuIERlcGVuZCBvbgoJJChSRVFVSVJFRF9MVE9GSUxFUykgJChFWFRSQV9MVE9GSUxFUykgJChMVExJQk9CSlMpLgoJKHN0YW1wLXBpY2Rpcik6IENvbXBsZXRlbHkgcmVtb3ZlZC4KCShtYWludC1taXNzaW5nKTogUGFzcyAkKFJFUVVJUkVEX0xUT0ZJTEVTKQoJJChDT05GSUdVUkVEX0xUT0ZJTEVTKSBpbnN0ZWFkIG9mIChSRVFVSVJFRF9PRklMRVMpCgkkKENPTkZJR1VSRURfT0ZJTEVTKQoJKG1haW50LWJ1aWxkYWxsKTogRGVwZW5kIG9uICQoUkVRVUlSRURfTFRPRklMRVMpCgkkKENPTkZJR1VSRURfTFRPRklMRVMpLgoJKG1vc3RseWNsZWFuKTogQWxzbyByZW1vdmUgKi5sbyAubGlicy4KCVJ1biAibWFrZSBtYWludC1kZXBzIi4KCgkqIGFjbG9jYWwubTQ6IEluY2x1ZGUgLi4vbGlidG9vbC5tNC4KCgkqIGNvbmZpZy50YWJsZTogRG9uJ3QgY2hlY2sgLS1lbmFibGUtc2hhcmVkLgoKCSogY29uZmlndXJlLmFjIChBQ19QUk9HX0xJQlRPT0wpOiBBZGQuCgkoQUNfUFJPR19DQ19DX08pOiBSZW1vdmVkLgoJKE9VVFBVVF9PUFRJT04pOiBSZW1vdmVkLgoJKE5PX01JTlVTX0NfTUlOVVNfTyk6IFJlbW92ZWQuCgkobHRwZXhlY3V0ZSk6IE5ldyBzdWJzdGl0dXRlLgoJKExJQk9CSlMpOiBDbGVhbnVwLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKCSogbWFpbnQtdG9vbDogVXBkYXRlZCBmb3IgLmxvL2xpYnRvb2wuCgoyMDA0LTEyLTExICBCZW4gRWxsaXN0b24gIDxiamVAYXUuaWJtLmNvbT4KCgkqIGNvbmZpZ3VyZS5hYzogSW52b2tlIEFDX0NIRUNLX1NJWkVPRiBmb3Igc2l6ZW9mIChpbnQpLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIGNvbmZpZy5pbjogTGlrZXdpc2UuCgoyMDA0LTEyLTA3ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV9kZWxldGVfaGVscGVyKTogUmVkZXNpZ24gdGhlIGxvZ2ljIHNvCgl0aGF0IHJlY3Vyc2lvbiAoYW5kIHRodXMgbGFyZ2Ugc3RhY2sgc3BhY2UpIGlzIG5vdCBuZWVkZWQuCgoyMDA0LTExLTI5ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBwZXgtdW5peC5jOiBGaXggdGhlIHNwZWxsaW5nIG9mIGxvbmdqbXAuCgoyMDA0LTExLTIzICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCVBSIG90aGVyLzE4NjIzCgkqIGNwLWRlbWFuZ2xlLmMgKGRfY2FsbF9vZmZzZXQpOiBSZW1vdmUgdXNlbGVzcyBsb2NhbCB2YXJpYWJsZXMKCW9mZnNldCBhbmQgdmlydHVhbF9vZmZzZXQuCgkqIGNwbHVzLWRlbS5jIChhZGFfZGVtYW5nbGUpOiBSZW1vdmUgdXNlbGVzcyBsb2NhbCB2YXJpYWJsZQoJYXRfc3RhcnRfbmFtZS4KCShkZW1hbmdsZV90ZW1wbGF0ZSk6IFJlbW92ZSB1c2VsZXNzIGxvY2FsIHZhcmlhYmxlIHN0YXJ0LgoKMjAwNC0xMS0xOSAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBvYmphbGxvYy5jLCBzdHJzaWduYWwuYywgeHN0cmVycm9yLmM6IEluY2x1ZGUgImNvbmZpZy5oIiBiZWZvcmUKCSJhbnNpZGVjbC5oIiB0byBhdm9pZCByZWRlY2xhcmF0aW9uIGVycm9ycyB3aXRoIG5hdGl2ZSBjb21waWxlcnMuCgkqIHJlZ2V4LmM6IFByb3RlY3QgY29uZmlnLmggZnJvbSBtdWx0aXBsZSBpbmNsdXNpb24uCgoyMDA0LTExLTEyICBNaWtlIFN0dW1wICA8bXJzQGFwcGxlLmNvbT4KCgkqIE1ha2VmaWxlLmluIChsaWJpYmVydHkuaHRtbCk6IEZpeCBodG1sIGdlbmVyYXRpb24uCgoyMDA0LTA5LTA4ICBBZGFtIE5lbWV0ICA8YW5lbWV0QGxueHcuY29tPgoKCSogdmFzcHJpbnRmLmM6IEFjY2VwdCBfX3ZhX2NvcHkgaW4gYWRkaXRpb24gdG8gdmFfY29weS4KCjIwMDQtMDktMDMgIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTA5LTAyICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogY29uZmlndXJlLmFjOiBEbyBub3QgZW5hYmxlIG11bHRpbGlicyBmb3IgYnVpbGQtc2lkZSBsaWJpYmVydHkuCgoyMDA0LTA2LTI5ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogbHJlYWxwYXRoLmMgKGxyZWFscGF0aCk6IEFkZCBfV0lOMzIgc3VwcG9ydC4KCjIwMDQtMDYtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5oOiBEZWNsYXJlIGNwbHVzX2RlbWFuZ2xlX29wZXJhdG9ycywKCWNwbHVzX2RlbWFuZ2xlX2J1aWx0aW5fdHlwZXMsIGNwbHVzX2RlbWFuZ2xlX21hbmdsZWRfbmFtZSwgYW5kCgljcGx1c19kZW1hbmdsZV90eXBlIGFzIHN0YXRpYyBpZiBJTl9HTElCQ1BQX1YzLgoKMjAwNC0wNi0yOCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCglQUiBvdGhlci8xNjI0MAoJKiBjcC1kZW1hbmdsZS5jIChkX2V4cHJfcHJpbWFyeSk6IENoZWNrIGZvciBhIGZhaWx1cmUgcmV0dXJuIGZyb20KCWNwbHVzX2RlbWFuZ2xlX3R5cGUuCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIHRlc3QgY2FzZS4KCjIwMDQtMDUtMzEgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBwZXgtd2luMzIuYyAoZml4X2FyZ3YpOiBFeHBhbmQgY29tbWVudC4KCjIwMDQtMDUtMjUgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BmYWxzZS5vcmc+CgoJKiBNYWtlZmlsZS5pbjogQWRkIC5OT0VYUE9SVC4KCjIwMDQtMDQtMjkgIERvdWdsYXMgQiBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIG1rc3RlbXBzLmMgKG1rc3RlbXBzKSBbVk1TXTogUmVtb3ZlIHNwZWNpYWwgb3BlbiBvcHRpb24uIFVwZGF0ZQoJY29weXJpZ2h0LgoKMjAwNC0wNC0yNiAgTWFjaWVqIFcuIFJvenlja2kgIDxtYWNyb0BkczIucGcuZ2RhLnBsPgoKCSogY29uZmlndXJlLmFjIChVTlNJR05FRF82NEJJVF9UWVBFKTogVW5xdW90ZSB0aGUgZGVmaW5pdGlvbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wNC0yMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuYzogSW5jbHVkZSBsaW1pdHMuaCwgc3RkaW50LmgsIGFuc2lkZWNsLmguCgkoQ0hBUl9CSVQpOiBQcm92aWRlIGRlZmF1bHQuCgkoc3RydWN0IHByaW1lX2VudCwgcHJpbWVfdGFiKTogTmV3LgoJKGhpZ2hlcl9wcmltZV9pbmRleCk6IFJlbmFtZSBmcm9tIGhpZ2hlcl9wcmltZV9udW1iZXIsIHJldHVybiBpbmRleC4KCShodGFiX21vZF8xKTogTmV3LgoJKGh0YWJfbW9kLCBodGFiX21vZF9tMik6IFVzZSBpdC4KCShodGFiX2NyZWF0ZV9hbGxvYywgaHRhYl9jcmVhdGVfYWxsb2NfZXgpOiBTdG9yZSBwcmltZSBpbmRleC4KCShodGFiX2V4cGFuZCk6IExpa2V3aXNlLgoJKiBjb25maWd1cmUuYWM6IENoZWNrIGZvciBzdGRpbnQuaC4KCShVTlNJR05FRF82NEJJVF9UWVBFKTogTmV3IGRlZmluZSBhbmQgY2hlY2tzIHRvIGZpbGwgaXQgaW4uCgkqIGNvbmZpZy5pbiwgY29uZmlndXJlOiBSZWJ1aWxkLgoKMjAwNC0wNC0xMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIHN0cmVycm9yLmM6IEluY2x1ZGUgY29uZmlnLmgsIGFuZCByZWRlZmluZSBzeXNfbmVyciBhbmQKCXN5c19lcnJsaXN0LCBiZWZvcmUgaW5jbHVkaW5nIGFuc2lkZWNsLmggYW5kIGxpYmliZXJ0eS5oLgoKMjAwNC0wNC0xMyAgSmVmZiBMYXcgIDxsYXdAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuYyAoaHRhYl9yZW1vdmVfZWx0X3dpdGhfaGFzaCk6IE5ldyBmdW5jdGlvbi4KCShodGFiX3JlbW92ZV9lbHQpOiBJbXBsZW1lbnQgaW4gdGVybXMgb2YgaHRhYl9yZW1vdmVfZWx0X3dpdGhfaGFzaC4KCjIwMDQtMDMtMzEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmMgKGh0YWJfc2l6ZSk6IE1vdmUgdG8gdG9wIG9mIGZpbGU7IG1hcmsgaW5saW5lLgoJKGh0YWJfZWxlbWVudHMpOiBMaWtld2lzZS4KCShodGFiX21vZCwgaHRhYl9tb2RfbTIpOiBOZXcuCgkoaHRhYl9kZWxldGUpOiBSZWZhY3RvciBodGFiLT5zaXplIGFuZCBodGFiLT5lbnRyaWVzLgoJKGh0YWJfZW1wdHkpOiBMaWtld2lzZS4KCShmaW5kX2VtcHR5X3Nsb3RfZm9yX2V4cGFuZCk6IFVzZSBodGFiX3NpemUsIGh0YWJfbW9kLCBodGFiX21vZF9tMi4KCShodGFiX2ZpbmRfd2l0aF9oYXNoLCBodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBMaWtld2lzZS4KCShodGFiX2NsZWFyX3Nsb3QpOiBVc2UgaHRhYl9zaXplLCBodGFiX2VsZW1lbnRzLgoJKGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUsIGh0YWJfdHJhdmVyc2UpOiBMaWtld2lzZS4KCjIwMDQtMDMtMTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBwZXgtdW5peC5jIChwZXhlY3V0ZSk6IFVzZSB2Zm9yayBpbnN0ZWFkIG9mIGZvcmssIHdpdGgKCWFwcHJvcHJpYXRlIGNoYW5nZXMgdG8gbWFrZSB0aGlzIHNhZmUuCgkqIHBleC1jb21tb24uaCAoU1RERVJSX0ZJTEVfTk8pOiBEZWZpbmUuCgoJKiBNYWtlZmlsZS5pbjogQ2xlYW4gdXAgUkVRVUlSRURfT0ZJTEVTIGFuZCBDT05GSUdVUkVEX09GSUxFUyBmb3IKCWFuIDgwIGNvbHVtbiBzY3JlZW4uICBSdW4gbWFpbnQtZGVwcy4KCjIwMDQtMDMtMDkgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBjb25maWd1cmUuYWM6IEJ1bXAgdmVyc2lvbiB0byAyLjU5LiAgQXBwbHkgc3VnZ2VzdGVkIGF1dG91cGRhdGVzLgoJKiBhY2NvbmZpZy5oOiBEZWxldGUgcmVkdW5kYW50IGZpbGUuCgkqIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwNC0wMy0wOSAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUgZm9yIGNvbmZpZy9hY2Nyb3NzLm00IGNvcnJlY3Rpb24uCgoyMDA0LTAzLTA3ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB0ZXN0c3VpdGUvdGVzdC1kZW1hbmdsZS5jOiBJbmNsdWRlIDxzdHJpbmcuaD4gYW5kIDxzdGRsaWIuaD4gZm9yCglwcm90b3R5cGVzLgoJKG1haW4pOiBJbml0aWFsaXplIHN0eWxlLgoKMjAwNC0wMi0yNCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmggKGVudW0gZF9idWlsdGluX3R5cGVfcHJpbnQpOiBBZGQgRF9QUklOVF9VTlNJR05FRCwKCURfUFJJTlRfVU5TSUdORURfTE9ORywgRF9QUklOVF9MT05HX0xPTkcsCglEX1BSSU5UX1VOU0lHTkVEX0xPTkdfTE9ORywgRF9QUklOVF9GTE9BVC4KCSogY3AtZGVtYW5nbGUuYyAoY3BsdXNfZGVtYW5nbGVfYnVpbHRpbl90eXBlcyk6IENoYW5nZSBjaGFyIGFuZAoJc2hvcnQgdHlwZXMgdG8gRF9QUklOVF9ERUZBVUxULiAgQ2hhbmdlIG90aGVyIGludGVnZXIgdHlwZXMgdG8gdXNlCgluZXcgRF9QUklOVF8qIHZhbHVlcyB3aGVyZSBhcHByb3ByaWF0ZS4gIENoYW5nZSBmbG9hdCB0eXBlcyB0bwoJRF9QUklOVF9GTE9BVC4KCShkX3ByaW50X2NvbXApIFtMSVRFUkFMLCBMSVRFUkFMX05FR106IEhhbmRsZSBuZXcgRF9QUklOVF8qCgl2YWx1ZXMuCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRqdXN0IHR3byB0ZXN0IGNhc2VzLgoKCSogY3AtZGVtYW5nbGUuYyAoZF9wcmludF9mdW5jdGlvbl90eXBlKTogUHJpbnQgYSBzcGFjZSBiZWZvcmUgdGhlCglwYXJlbnRoZXNpcyBhcm91bmQgdGhlIGZ1bmN0aW9uIHR5cGUgaW4gbW9yZSBjYXNlcy4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGp1c3Qgb25lIHRlc3QgY2FzZS4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRfcHJpbnRfY29tcCkgW1VOQVJZXTogRG9uJ3QgZW1pdCBleHRyYQoJcGFyZW50aGVzZXMgYXJvdW5kIGEgY2FzdC4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGp1c3QgdHdvIHRlc3QgY2FzZXMgdG8gbWF0Y2ggbmV3CglvdXRwdXQuCgoJKiBjcC1kZW1hbmdsZS5jIChfX2N4YV9kZW1hbmdsZSk6IFBhc3MgRE1HTF9QQVJBTVMgdG8gZF9kZW1hbmdsZS4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRfcHJpbnRfY29tcCkgW1JFU1RSSUNULCBWT0xBVElMRSwgQ09OU1RdOiBEb24ndAoJcHVzaCBtb3JlIHRoYW4gb25lIG9mIHRoZSBzYW1lIENWLXF1YWxpZmllciBvbiB0aGUgdG9wIG9mIHRoZQoJc3RhY2suCgkoZF9wcmludF9jb21wKSBbQVJSQVlfVFlQRV06IElmIHRoZSBhcnJheSBpdHNlbGYgaXMgQ1YtcXVhbGlmaWVkLAoJbW92ZSB0aGUgQ1YtcXVhbGlmaWVycyB0byBhcHBseSB0byB0aGUgZWxlbWVudCB0eXBlIGluc3RlYWQuCgkoZF9wcmludF9hcnJheV90eXBlKTogV2hlbiBjaGVja2luZyB0aGUgbW9kaWZpZXJzLCBrZWVwIGxvb2tpbmcKCXBhc3Qgb25lcyB3aGljaCBoYXZlIGJlZW4gcHJpbnRlZCBhbHJlYWR5LgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCB0aHJlZSB0ZXN0IGNhc2VzLgoKMjAwNC0wMi0yMyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKF9fY3hhX2RlbWFuZ2xlKTogQWRqdXN0IGxhc3QgcGF0Y2ggdG8gaGFuZGxlCgllbXB0eSBzdHJpbmcgY29ycmVjdGx5LgoKCSogY3AtZGVtYW5nbGUuYyAoX19jeGFfZGVtYW5nbGUpOiBJdCBpcyBub3QgYW4gZXJyb3IgaWYgc3RhdHVzIGlzCglub3QgTlVMTC4gIEl0IGlzIGFuIGVycm9yIGlmIHRoZSBtYW5nbGVkIG5hbWUgaXMgdGhlIHNhbWUgYXMgYQoJYnVpbHQtaW4gdHlwZSBuYW1lLgoJKG1haW4pOiBJZiBJTl9HTElCQ1BQX1YzIGlzIGRlZmluZWQsIHRlc3QgX19jeGFfZGVtYW5nbGUgcmF0aGVyCgl0aGFuIGNwbHVzX2RlbWFuZ2xlX3YzLgoKCSogZHluLXN0cmluZy5jOiBSZW1vdmUgdGVzdCBvZiBJTl9MSUJHQ0MyIGFuZCBJTl9HTElCQ1BQX1YzIGFuZAoJdGhlIGFzc29jaWF0ZWQgI2RlZmluZSBvZiBSRVRVUk5fT05fQUxMT0NBVElPTl9GQUlMVVJFLgoKMjAwNC0wMi0xNiAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogcmVnZXguYzogSW5jbHVkZSA8YW5zaWRlY2wuaD4uCgkocmVnY29tcCk6IENhc3QgaSB0byBpbnQuCgkocmVnZXJyb3IpOiBBZGQgQVRUUklCVVRFX1VOVVNFRCB0byBwYXJhbWV0ZXIgcHJlZy4KCjIwMDQtMDEtMjUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjb25maWd1cmUuYWM6IEFkZCBtNF9wYXR0ZXJuX2FsbG93KExJQk9CSlMpLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDA0LTAxLTIyICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBDb252ZXJ0IHRvIC4vIHRocm91Z2hvdXQuICBSZWJ1aWxkIGRlcGVuZGVuY2llcwoJd2l0aCBleHBsaWNpdCBidWlsZCBydWxlcy4KCShWUEFUSCk6IFJlbW92ZS4KCSguYy5vKTogUG9pc29uLgoJKiBjb25maWd1cmUuYWMgKHBleGVjdXRlLCBMSUJPQkpTKTogQWRkIC4vIC4KCSogbWFpbnQtdG9vbDogQnVpbGQgZGVwZW5kZW5jaWVzIHdpdGggZXhwbGljaXQgcnVsZXMuCgoyMDA0LTAxLTE1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogc3RyZHVwLmMgKHN0cmR1cCk6IENvbnN0aWZ5IHRoZSBhcmd1bWVudC4KCjIwMDQtMDEtMTQgIExvcmVuIEouIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoZGlzdGNsZWFuKTogUmVtb3ZlIGNvbmZpZy5jYWNoZS4KCjIwMDQtMDEtMTMgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoZF9tYWtlX2NvbXApOiBERU1BTkdMRV9DT01QT05FTlRfQ09OU1RSVUNUSU9OX1ZUQUJMRQoJdGFrZXMgdHdvIHBhcmFtZXRlcnMuCgkqIGNwLWRlbWludC5jIChjcGx1c19kZW1hbmdsZV9maWxsX2NvbXBvbmVudCk6IExpa2V3aXNlLgoKMjAwNC0wMS0xMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmM6IEluY2x1ZGUgImNwLWRlbWFuZ2xlLmgiLiAgSWYgSU5fR0xJQkNQUF9WMyBpcwoJZGVmaW5lZCwgcmVuYW1lIHNvbWUgZnVuY3Rpb25zIHdoaWNoIGFyZSB0byBiZWNvbWUgc3RhdGljIHZpYQoJI2RlZmluZS4KCShDUF9TVEFUSUNfSUZfR0xJQkNQUF9WMyk6IERlZmluZS4KCShzdHJ1Y3QgZF9vcGVyYXRvcl9pbmZvKTogTW92ZSBkZWZpbml0aW9uIHRvIGNwLWRlbWFuZ2xlLmgsIGFuZAoJcmVuYW1lIHRvIGRlbWFuZ2xlX29wZXJhdG9yX2luZm8uICBDaGFuZ2UgYWxsIHVzZXMuCgkoZW51bSBkX2J1aWx0aW5fdHlwZV9wcmludCk6IE1vdmUgZGVmaW5pdGlvbiB0byBjcC1kZW1hbmdsZS5oLgoJKHN0cnVjdCBkX2J1aWx0aW5fdHlwZV9pbmZvKTogTW92ZSBkZWZpbml0aW9uIHRvIGNwLWRlbWFuZ2xlLmgsCglhbmQgcmVuYW1lIHRvIGRlbWFuZ2xlX2J1aWx0aW5fdHlwZV9pbmZvLiAgQ2hhbmdlIGFsbCB1c2VzLgoJKGVudW0gZF9jb21wX3R5cGUpOiBNb3ZlIGRlZmluaXRpb24gdG8gaW5jbHVkZS9kZW1hbmdsZS5oLCBhbmQKCXJlbmFtZSB0byBkZW1hbmdsZV9jb21wb25lbnRfdHlwZSwgYW5kIGNoYW5nZSBhbGwgZW51bXMgdG8gc3RhcnQKCXdpdGggREVNQU5HTEVfQ09NUE9ORU5UXyBpbnN0ZWFkIG9mIERfLiAgQ2hhbmdlIGFsbCB1c2VzLgoJKHN0cnVjdCBkX2NvbXApOiBNb3ZlIGRlZmluaXRpb24gdG8gaW5jbHVkZS9kZW1hbmdsZS5oLCBhbmQgcmVuYW1lCgl0byBkZW1hbmdsZV9jb21wb25lbnQuICBDaGFuZ2UgYWxsIHVzZXMuCgkoc3RydWN0IGRfaW5mbyk6IE1vdmUgZGVmaW5pdGlvbiB0byBjcC1kZW1hbmdsZS5oLgoJKGNwbHVzX2RlbWFuZ2xlX2ZpbGxfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShjcGx1c19kZW1hbmdsZV9maWxsX2V4dGVuZGVkX29wZXJhdG9yKTogTmV3IGZ1bmN0aW9uLgoJKGNwbHVzX2RlbWFuZ2xlX2ZpbGxfY3Rvcik6IE5ldyBmdW5jdGlvbi4KCShjcGx1c19kZW1hbmdsZV9maWxsX2R0b3IpOiBOZXcgZnVuY3Rpb24uCgkoZF9tYWtlX2VtcHR5KTogUmVtb3ZlIHR5cGUgcGFyYW1ldGVyLiAgQ2hhbmdlIGFsbCBjYWxsZXJzLgoJKGRfbWFrZV9uYW1lKTogVXNlIGNwbHVzX2RlbWFuZ2xlX2ZpbGxfbmFtZS4KCShkX21ha2VfZXh0ZW5kZWRfb3BlcmF0b3IpOiBVc2UKCWNwbHVzX2RlbWFuZ2xlX2ZpbGxfZXh0ZW5kZWRfb3BlcmF0b3IuCgkoZF9tYWtlX2N0b3IpOiBVc2UgY3BsdXNfZGVtYW5nbGVfZmlsbF9jdG9yLgoJKGRfbWFrZV9kdG9yKTogVXNlIGNwbHVzX2RlbWFuZ2xlX2ZpbGxfZHRvci4KCShjcGx1c19kZW1hbmdsZV9tYW5nbGVkX25hbWUpOiBSZW5hbWUgZnJvbSBkX21hbmdsZWRfbmFtZS4gIE1ha2UKCW5vbi1zdGF0aWMgYnkgZGVmYXVsdC4gIENoYW5nZSBhbGwgY2FsbGVycy4KCShjcGx1c19kZW1hbmdsZV9vcGVyYXRvcnMpOiBSZW5hbWUgZnJvbSBkX29wZXJhdG9ycy4gIENoYW5nZSBhbGwKCXVzZXMuICBNYWtlIG5vbi1zdGF0aWMgYnkgZGVmYXVsdC4gIEFkZCBzZW50aW5lbCBhdCBlbmQgb2YgYXJyYXkuCgkoZF9vcGVyYXRvcl9uYW1lKTogQWRqdXN0IGluaXRpYWxpemF0aW9uIG9mIGhpZ2ggZm9yIG5ldyBzZW50aW5lbAoJaW4gY3BsdXNfZGVtYW5nbGVfb3BlcmF0b3JzLgoJKGNwbHVzX2RlbWFuZ2xlX2J1aWx0aW5fdHlwZXMpOiBSZW5hbWUgZnJvbSBkX2J1aWx0aW5fdHlwZXMuCglDaGFuZ2UgYWxsIHVzZXMuICBNYWtlIG5vbi1zdGF0aWMgYnkgZGVmYXVsdC4gIENoYW5nZSBpbml0aWFsaXplcgoJdG8gdXNlIERfQlVJTFRJTl9UWVBFX0NPVU5UIGluc3RlYWQgb2YgbWFnaWMgbnVtYmVyIDI2LgoJKGNwbHVzX2RlbWFuZ2xlX3R5cGUpOiBSZW5hbWUgZnJvbSBkX3R5cGUuICBNYWtlIG5vbi1zdGF0aWMgYnkKCWRlZmF1bHQuICBDaGFuZ2UgYWxsIGNhbGxlcnMuCgkoY3BsdXNfZGVtYW5nbGVfaW5pdF9pbmZvKTogUmVuYW1lIGZyb20gZF9pbml0X2luZm8uICBNYWtlCglub24tc3RhdGljIGJ5IGRlZmF1bHQuICBDaGFuZ2UgYWxsIGNhbGxlcnMuCgkqIGNwLWRlbWFuZ2xlLmg6IE5ldyBmaWxlLgoJKiBjcC1kZW1pbnQuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluOiBSZWJ1aWxkIGRlcGVuZGVuY2llcy4KCShDRklMRVMpOiBBZGQgY3AtZGVtaW50LmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIGNwLWRlbWludC5vLgoKMjAwNC0wMS0wOSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGNvbmZpZ3VyZS5pbjogIFJlbmFtZSBmaWxlIHRvIC4uLgoJKiBjb25maWd1cmUuYWM6ICAuLi4gdGhpcy4KCSogTWFrZWZpbGUuaW46IFVwZGF0ZSBhIGNvbW1lbnQgZm9yIGFib3ZlIGNoYW5nZS4KCSogUkVBRE1FOiBMaWtld2lzZS4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwNC0wMS0wMiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRfZW5jb2RpbmcpOiBXaGVuIERNR0xfUEFSQU1TIGlzIG5vdCBzZXQsIHN0cmlwCglDVi1xdWFsaWZpZXJzIGZyb20gRF9DT01QX0xPQ0FMX05BTUUgcmlnaHQgc3VidHJlZS4KCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2FybV9ocF90ZW1wbGF0ZSk6IFNldCBETUdMX1BBUkFNUyB3aGVuCglkZW1hbmdsaW5nIHRlbXBsYXRlIHBhcmFtZXRlcnMuCgkqIHRlc3RzdWl0ZS90ZXN0LWRlbWFuZ2xlLmMgKGZhaWwpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKG1haW4pOiBTdXBwb3J0IG5ldyBvcHRpb25zIGluIGlucHV0IGZpbGU6IC0tbm8tcGFyYW1zLAoJLS1pcy12My1jdG9yLCBhbmQgLS1pcy12My1kdG9yLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCAtLW5vLXBhcmFtcyB0byBtb3N0IHRlc3RzLCBhbmQKCWFkZCB0aGUgY29ycmVjdCByZXN1bHQgd2hlbiBwYXJhbWV0ZXJzIGFyZSBub3QgZGVtYW5nbGVkLiAgQWRkCglzb21lIHNpbXBsZSB0ZXN0cyBmb3IgVjMgY29uc3RydWN0b3IvZGVzdHJ1Y3RvciByZWNvZ25pdGlvbi4KCjIwMDMtMTItMjUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGlzX2N0b3Jfb3JfZHRvcik6IEZpeCBlcnJvciBpbiBsYXN0IGNoYW5nZS4KCjIwMDMtMTItMjIgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCVBSIGRlYnVnLzEzMjcyCgkqIE1ha2VmaWxlLmluIChsYmFzZW5hbWUubyk6IERlcGVuZCBvbiBmaWxlbmFtZXMuaC4KCSogbGJhc2VuYW1lLmM6IEluY2x1ZGUgImZpbGVuYW1lcy5oIiBpbnN0ZWFkIG9mIGRlZmluaW5nCglpdHMgbWFjcm9zIGxvY2FsbHkuCgoyMDAzLTEyLTIyICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoQ1BfRFlOQU1JQ19BUlJBWVMpOiBEZWZpbmUgaWYgY29tcGlsZXIgc3VwcG9ydHMKCWR5bmFtaWMgYXJyYXlzLgoJKHN0cnVjdCBkX29wZXJhdG9yX2luZm8pOiBBZGQgbGVuIGZpZWxkLgoJKHN0cnVjdCBkX2J1aWx0aW5fdHlwZV9pbmZvKTogQWRkIGxlbiBhbmQgamF2YV9sZW4gZmllbGRzLgoJKHN0cnVjdCBkX3N0YW5kYXJkX3N1Yl9pbmZvKTogQWRkIHNpbXBsZV9sZW4sIGZ1bGxfbGVuLCBhbmQKCXNldF9sYXN0X25hbWVfbGVuIGZpZWxkcy4KCShzdHJ1Y3QgZF9jb21wKTogQWRkIGxlbiBmaWVsZCB0byBzX3N0cmluZy4KCShzdHJ1Y3QgZF9pbmZvKTogQWRkIHNlbmQsIGRpZF9zdWJzLCBhbmQgZXhwYW5zaW9uIGZpZWxkcy4KCShkX2FwcGVuZF9zdHJpbmdfY29uc3RhbnQpOiBEZWZpbmUuCgkoZF9hcHBlbmRfc3RyaW5nKTogUmVtb3ZlLiAgQ2hhbmdlIGFsbCB1c2VycyB0byB1c2UKCWRfYXBwZW5kX3N0cmluZ19jb25zdGFudCBvciBkX2FwcGVuZF9idWZmZXIgaW5zdGVhZC4KCShkX21ha2Vfc3ViKTogQWRkIGxlbiBwYXJhbWV0ZXIuICBDaGFuZ2UgYWxsIGNhbGxlcnMuCgkoZF9uYW1lKTogSW5jcmVhc2UgZXhwYW5zaW9uIHdoZW4gc3Vic3RpdHV0aW5nIHN0ZDo6LgoJKGRfdW5xdWFsaWZpZWRfbmFtZSk6IEluY3JlYXNlIGV4cGFuc2lvbiBmb3IgYW4gb3BlcmF0b3IuCgkoZF9udW1iZXIpOiBEb24ndCB1c2UgbXVsdGlwbGljYXRpb24gZm9yIG5lZ2F0aXZlIG51bWJlcnMuCgkoZF9pZGVudGlmaWVyKTogTWFrZSBzdXJlIHRoZXJlIGFyZSBlbm91Z2ggY2hhcmFjdGVycyBpbiB0aGUKCXN0cmluZyBmb3IgdGhlIHNwZWNpZmllZCBsZW5ndGguICBBZGp1c3QgZXhwYW5zaW9uIGZvciBhbgoJYW5vbnltb3VzIG5hbWVzcGFjZS4KCShkX29wZXJhdG9ycyk6IEluaXRpYWxpemUgbGVuIGZpZWxkLgoJKGRfc3BlY2lhbF9uYW1lLCBkX2N0b3JfZHRvcl9uYW1lKTogSW5jcmVhc2UgZXhwYW5zaW9uLgoJKGRfYnVpbHRpbl90eXBlcyk6IEluaXRpYWxpemUgbGVuIGFuZCBqYXZhX2xlbiBmaWVsZHMuCgkoZF90eXBlKTogSW5jcmVhc2UgZXhwYW5zaW9uIGZvciBhIGJ1aWx0aW4gdHlwZS4KCShkX2N2X3F1YWxpZmllcnMpOiBJbmNyZWFzZSBleHBhbnNpb24gZm9yIGVhY2ggcXVhbGlmaWVyLgoJKGRfYmFyZV9mdW5jdGlvbl90eXBlKTogRGVjcmVhc2UgZXhwYW5zaW9uIHdoZW4gcmVtb3Zpbmcgc2luZ2xlCgl2b2lkIHBhcmFtZXRlci4KCShkX3RlbXBsYXRlX3BhcmFtKTogSW5jcmVtZW50IGRpZF9zdWJzLgoJKGRfZXhwcmVzc2lvbik6IEluY3JlYXNlIGV4cGFuc2lvbiBmb3IgYW4gb3BlcmF0b3IuCgkoZF9leHByX3ByaW1hcnkpOiBEZWNyZWFzZSBleHBhbnNpb24gZm9yIGEgdHlwZSB3ZSB3aWxsIHByaW50CglzcGVjaWFsbHkuCgkoc3RhbmRhcmRfc3Vicyk6IEluaXRpYWxpemUgbmV3IGZpZWxkcy4KCShkX3N1YnN0aXR1dGlvbik6IEluY3JlbWVudCBkaWRfc3VicyB3aGVuIGRvaW5nIGEgbm9ybWFsCglzdWJzdGl0dXRpb24uICBJbmNyZWFzZSBleHBhbnNpb24gZm9yIGEgc3BlY2lhbCBzdWJzdGl0dXRpb24uCgkoZF9wcmludCk6IEFkZCBlc3RpbWF0ZSBwYXJhbWV0ZXIuICBDaGFuZ2UgYWxsIGNhbGxlcnMuCgkoZF9wcmludF9jb21wKSBbRF9DT01QX05BTUVdOiBIYW5kbGUgQysrIGNhc2UgaW5saW5lLgoJKGRfcHJpbnRfY29tcCkgW0RfQ09NUF9CSU5BUlldOiBVc2UgbGVuZ3RoIHRvIGF2b2lkIHN0cmNtcCBjYWxsLgoJKGRfcHJpbnRfamF2YV9pZGVudGlmaWVyKTogUmVuYW1lIGZyb20gZF9wcmludF9pZGVudGlmaWVyLiAgSGFuZGxlCglvbmx5IEphdmEgY2FzZS4gIENoYW5nZSBjYWxsZXIuCgkoZF9pbml0X2luZm8pOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gdm9pZC4gIENoYW5nZSBhbGwgY2FsbGVycy4KCUluaXRpYWxpemUgc2VuZCwgZGlkX3N1YnMsIGFuZCBleHBhbnNpb24gZmllbGRzLiAgRG8gbm90Cglpbml0aWFsaXplIGNvbXBzIGFuZCBzdWJzIGZpZWxkcy4KCShkX2RlbWFuZ2xlKTogSWZkZWYgQ1BfRFlOQU1JQ19BUlJBWVMsIGFsbG9jYXRlIGNvbXBzIGFuZCBzdWJzCglhcnJheXMgb24gc3RhY2suICBNYWtlIGFuIGVzdGltYXRlIG9mIHRoZSBsZW5ndGggb2YgdGhlIGRlbWFuZ2xlZAoJbmFtZS4gIElmZGVmIENQX0RFTUFOR0xFX0RFQlVHLCBwcmludCBlc3RpbWF0aW9uIGZhaWx1cmVzLgoJKGlzX2N0b3Jfb3JfZHRvcik6IElmZGVmIENQX0RZTkFNSUNfQVJSQVlTLCBhbGxvY2F0ZSBjb21wcyBhbmQKCXN1YnMgYXJyYXlzIG9uIHN0YWNrLgoKMjAwMy0xMi0yMCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRfaWRlbnRpZmllcik6IEluIEphdmEgbW9kZSwgc2tpcCBhbiBvcHRpb25hbCAnJCcKCWFmdGVyIHRoZSBpZGVudGlmaWVyLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCB0ZXN0IGNhc2UuCgoyMDAzLTEyLTE5ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCUZpeCBmb3IgUFIgYysrLzEzNDQ3OgoJKiBjcC1kZW1hbmdsZS5jIChlbnVtIGRfY29tcF90eXBlKTogQWRkIERfQ09NUF9MT0NBTF9OQU1FLgoJKGRfZHVtcCwgZF9tYWtlX2NvbXApOiBIYW5kbGUgRF9DT01QX0xPQ0FMX05BTUUuCgkoaXNfY3Rvcl9kdG9yX29yX2NvbnZlcnNpb24pOiBIYW5kbGUgRF9DT01QX0xPQ0FMX05BTUUgbGlrZQoJRF9DT01QX1FVQUxfTkFNRS4KCShpc19jdG9yX29yX2R0b3IpOiBMaWtld2lzZS4KCShkX2xvY2FsX25hbWUpOiBVc2UgRF9DT01QX0xPQ0FMX05BTUUgcmF0aGVyIHRoYW4KCURfQ09NUF9RVUFMX05BTUUuCgkoZF9wcmludF9jb21wKSBbRF9DT01QX0xPQ0FMX05BTUVdOiBOZXcuCgkoZF9wcmluVF9jb21wKSBbRF9DT01QX1RZUEVEX05BTUVdOiBJZiB0aGUgbGVmdCB0cmVlIGlzCglEX0NPTVBfTE9DQUxfTkFNRSwgcHVsbCBhbnkgcXVhbGlmaWVycyBvZmYgaXRzIHJpZ2h0IHN1YnRyZWUuCgkoZF9wcmludF9tb2RfbGlzdCk6IEhhbmRsZSBEX0NPTVBfTE9DQUxfTkFNRS4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgdHdvIHRlc3QgY2FzZXMuCgoJKiBjcC1kZW1hbmdsZS5jIChkX3ByaW50X2Z1bmN0aW9uX3R5cGUpOiBDbGVhciB0aGUgZ2xvYmFsIG1vZGlmaWVyCglsaXN0IHdoZW4gcHJpbnRpbmcgdGhlIG1vZGlmaWVycywgbm90IGp1c3Qgd2hlbiBwcmludGluZyB0aGUKCWZ1bmN0aW9uIHBhcmFtZXRlcnMuCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIHR3byB0ZXN0IGNhc2VzLgoKMjAwMy0xMi0xNSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRfcHJpbnRfZnVuY3Rpb25fdHlwZSk6IFByaW50IHRoZSBmdW5jdGlvbgoJcGFyYW1ldGVycyB3aXRoIG5vIG1vZGlmaWVycy4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgdGVzdCBjYXNlLgoKCSogY3AtZGVtYW5nbGUuYyAoZF9kZW1hbmdsZSk6IElmIERNR0xfUEFSQU1TIGlzIG5vdCBzZXQsIGRvbid0CglleHBlY3QgdGhhdCB3ZSd2ZSByZWFkIHRoZSBlbnRpcmUgc3RyaW5nLgoJKGlzX2N0b3Jfb3JfZHRvcik6IERvbid0IGV4cGVjdCB0aGF0IHdlJ3ZlIHJlYWQgdGhlIGVudGlyZQoJc3RyaW5nLS1yZXZlcnNlIHBhdGNoIG9mIDIwMDMtMTEtMjkuCgoyMDAzLTEyLTE1ICBCcmVuZGFuIEtlaG9lICA8YnJlbmRhbkB6ZW4ub3JnPgoKCSogbGliaWJlcnR5L01ha2VmaWxlLmluIChmbG9hdGZvcm1hdC5vKTogQWRkIGRlcGVuZGVuY3kgb24KCWNvbmZpZy5oIHRvIGFjY29tcGFueSBjaGFuZ2Ugb2YgMjAwMy0xMi0wMy4KCjIwMDMtMTItMTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJRml4IGhhbmRsaW5nIG9mIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3Igb2Ygc3RhbmRhcmQgc3Vic3RpdHV0aW9uOgoJKiBjcC1kZW1hbmdsZS5jIChzdHJ1Y3QgZF9zdGFuZGFyZF9zdWJfaW5mbyk6IERlZmluZS4KCShkX3N1YnN0aXR1dGlvbik6IEFkZCBwcmVmaXggYXJndW1lbnQuICBDaGFuZ2UgYWxsIGNhbGxlcnMuCglSZXdvcmsgaGFuZGxpbmcgb2Ygc3RhbmRhcmQgc3Vic3RpdHV0aW9ucyB0byBwcmludCBmdWxsIG5hbWUgd2hlbgoJcXVhbGlmeWluZyBhIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IsIG9yIHdoZW4gRE1HTF9WRVJCT1NFIGlzIHNldC4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgdGVzdCBjYXNlLgoKCUZpeCBoYW5kbGluZyBvZiBuZWdhdGl2ZSBsaXRlcmFsIGNvbnN0YW50czoKCSogY3AtZGVtYW5nbGUuYyAoZW51bSBkX2NvbXBfdHlwZSk6IEFkZCBEX0NPTVBfTElURVJBTF9ORUcuCgkoZF9kdW1wLCBkX21ha2VfY29tcCk6IEhhbmRsZSBEX0NPTVBfTElURVJBTF9ORUcuCgkoZF9leHByX3ByaW1hcnkpOiBVc2UgRF9DT01QX0xJVEVSQUxfTkVHIGZvciBhIG5lZ2F0aXZlIG51bWJlci4KCShkX3ByaW50X2NvbXApOiBIYW5kbGUgRF9DT01QX0xJVEVSQUxfTkVHLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCB0ZXN0IGNhc2UuCgoyMDAzLTEyLTA0ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoSVNfVVBQRVIsIElTX0xPV0VSKTogRGVmaW5lLgoJKGRfbGFzdF9jaGFyKTogRGVmaW5lIG5ldyBtYWNyby4KCShkX21ha2VfbmFtZSk6IFJlamVjdCBhbiBlbXB0eSBuYW1lLgoJKGRfcHJlZml4LCBkX3VucXVhbGlmaWVkX25hbWUsIGRfdHlwZSk6IFVzZSBuZXcgSVNfKiBtYWNyb3MuCgkoZF9zdWJzdGl0dXRpb24sIGRfcHJpbnRfaWRlbnRpZmllcik6IExpa2V3aXNlLgoJKGRfcHJpbnRfY29tcCkgW0RfQ09NUF9PUEVSQVRPUl06IExpa2V3aXNlLgoJKGRfcHJpbnRfY29tcCkgW0RfQ09NUF9URU1QTEFURV06IFVzZSBuZXcgZF9sYXN0X2NoYXIgbWFjcm8uCgkoZF9wcmludF9tb2QpIFVzZSBuZXcgZF9sYXN0X2NoYXIgbWFjcm8uCgkoZF9wcmludF9jYXN0KTogVXNlIG5ldyBkX2xhc3RfY2hhciBtYWNyby4KCShpc19jdG9yX29yX2R0b3IpOiBEb24ndCBsZWFrIG1lbW9yeS4KCglGaXggaGFuZGxpbmcgb2YgbWVtYmVyIGZ1bmN0aW9uIG1vZGlmaWVyczoKCSogY3AtZGVtYW5nbGUuYyAoZW51bSBkX2NvbXBfdHlwZSk6IEFkZCBEX0NPTVBfUkVTVFJJQ1RfVEhJUywKCURfQ09NUF9WT0xBVElMRV9USElTLCBhbmQgRF9DT01QX0NPTlNUX1RISVMuCgkoZF9kdW1wKTogRHVtcCBuZXcgZF9jb21wX3R5cGUgdmFsdWVzLgoJKGRfbWFrZV9jb21wKTogQWNjZXB0IG5ldyBkX2NvbXBfdHlwZSB2YWx1ZXMuCgkoaGFzX3JldHVybl90eXBlKTogT25seSBhY2NlcHQgX1RISVMgdmFyaWFudHMgb2YgcXVhbGlmaWVycy4KCShkX2VuY29kaW5nKTogV2l0aG91dCBETUdMX1BBUkFNUywgb25seSByZW1vdmUgX1RISVMgdmFyaWFudHMgb2YKCXF1YWxpZmllcnMuCgkoZF9jdl9xdWFsaWZpZXJzKTogQWRkIG1lbWJlcl9mbiBwYXJhbWV0ZXIuICBDaGFuZ2UgYWxsIGNhbGxlcnMuCgkoZF9wcmludF9jb21wKSBbRF9DT01QX1RZUEVEX05BTUVdOiBSYXRoZXIgdGhhbiByZW1vdmluZwoJcXVhbGlmaWVycyBhbmQgcHJpbnRpbmcgdGhlbSBhdCB0aGUgZW5kLCBhZGQgX1RISVMgcXVhbGlmaWVycyB0bwoJdGhlIG1vZGlmaWVyIGxpc3QuCgkoZF9wcmludF9jb21wKSBbRF9DT01QXypfVEhJU106IE5ldyBjYXNlcy4KCShkX3ByaW50X2NvbXApIFtEX0NPTVBfUFRSTUVNX1RZUEVdOiBSZW1vdmUgc3BlY2lhbCBoYW5kbGluZyBvZgoJcXVhbGlmaWVycy4KCShkX3ByaW50X21vZF9saXN0KTogQWRkIHN1ZmZpeCBwYXJhbWV0ZXIuICBDaGFuZ2UgYWxsIGNhbGxlcnMuCglLZWVwIHdhbGtpbmcgdGhlIGxpc3QgZXZlbiBpZiB0aGUgY3VycmVudCBtb2RpZmllciBoYXMgYmVlbgoJcHJpbnRlZC4KCShkX3ByaW50X21vZCk6IEhhbmRsZSBuZXcgX1RISVMgcXVhbGlmaWVycy4KCShkX3ByaW50X2Z1bmN0aW9uX3R5cGUpOiBIYW5kbGUgbmV3IF9USElTIHF1YWxpZmllcnMgd2hlbiBkZWNpZGluZwoJd2hldGhlciB0byBwcmludCBhIHBhcmVudGhlc2lzLiAgUHV0IGEgc3BhY2UgYmVmb3JlIHRoZQoJcGFyZW50aGVzaXMgaW4gc29tZSBjYXNlcy4gIENhbGwgZF9wcmludF9tb2RfbGlzdCBhZ2FpbiBhdCB0aGUKCWVuZCwgcGFzc2luZyBzdWZmaXggYXMgMS4KCShpc19jdG9yX29yX2R0b3IpOiBMb29rIGZvciBuZXcgX1RISVMgcXVhbGlmaWVycy4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgdGVzdCBjYXNlLgoKCUZpeCBmb3IgUFIgZ2NjLzEzMzA0OgoJKiBjcC1kZW1hbmdsZS5jIChkX3ByaW50X2NvbXApIFtEX0NPTVBfVEVNUExBVEVdOiBJZiB0aGUgY2hhcmFjdGVyCgliZWZvcmUgdGhlICc8JyBpcyBpdHNlbGYgYSAnPCcsIGluc2VydCBhIHNwYWNlLgoJKGRfcHJpbnRfY2FzdCk6IExpa2V3aXNlLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCB0ZXN0IGNhc2UuCgoJRml4IGZvciBQUiBnY2MvMTMyNDQ6CgkqIGNwLWRlbWFuZ2xlLmMgKGRfcHJpbnRfY29tcCkgW0RfQ09NUF9CSU5BUlldOiBXcmFwIGFuIGV4cHJlc3Npb24KCXdoaWNoIHVzZXMgdGhlICc+JyBvcGVyYXRvciBpbiBhbiBleHRyYSBsYXllciBvZiBwYXJlbnMuCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIHRlc3QgY2FzZS4KCjIwMDMtMTItMDMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBmbG9hdGZvcm1hdC5jOiBJbmNsdWRlICJjb25maWcuaCIgYW5kIDxzdHJpbmcuaD4gaWYgYXZhaWxhYmxlLgoJKElORklOSVRZLCBOQU4pOiBEZWZpbmUgaWYgbm90IGRlZmluZWQgYnkgPG1hdGguaD4uCgkoZmxvYXRmb3JtYXRfdG9fZG91YmxlKTogSGFuZGxlIE5hTiwgaW5maW5pdHksIGFuZCBkZW5vcm1hbGl6ZWQKCW51bWJlcnMuCgkoZmxvYXRmb3JtYXRfZnJvbV9kb3VibGUpOiBMaWtld2lzZS4KCShpZWVlX3Rlc3QpOiBJbiBkZWJ1Z2dpbmcgY29kZSwgdXNlIGxpdHRsZSBlbmRpYW4gcmF0aGVyIHRoYW4gYmlnCgllbmRpYW4uICBDb3JyZWN0IHRlc3RzIHRvIGhhbmRsZSBOYU4gYW5kIHRvIGNoZWNrIGNvcnJlY3Qgc2lnbiBvZgoJemVyby4gIE9taXQgbTY4ayBleHRlbmRlZCB0ZXN0LgoJKG1haW4pOiBBZGQgbW9yZSBkZWJ1Z2dpbmcgY2FzZXMuCgoyMDAzLTExLTI5ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoZF9kZW1hbmdsZSk6IE9ubHkgcmV0dXJuIHN1Y2Nlc3MgaWYgd2UgY29uc3VtZWQKCXRoZSBlbnRpcmUgZGVtYW5nbGVkIHN0cmluZy4KCShpc19jdG9yX29yX2R0b3IpOiBMaWtld2lzZS4KCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogUmV2ZXJ0IG9uZSBwYXJ0IG9mIDIwMDMtMDYtMjYgcGF0Y2gKCXRvIHJlc3RvcmUgZXhwZWN0ZWQgcmVzdWx0IG9mIEVERyB0ZXN0IGNhc2UgdG8gb3JpZ2luYWwgZXhwZWN0ZWQKCXJlc3VsdC4KCjIwMDMtMTEtMjYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChzdHJ1Y3QgZF9wcmludF9tb2QpOiBBZGQgdGVtcGxhdGVzIGZpZWxkLgoJKGRfbWFrZV9idWlsdGluX3R5cGUpOiBDaGVjayBmb3IgTlVMTCB0eXBlLgoJKGRfbWFrZV9leHRlbmRlZF9vcGVyYXRvcik6IENoZWNrIGZvciBOVUxMIG5hbWUuCgkoZF9tYWtlX2N0b3IsIGRfbWFrZV9kdG9yKTogTGlrZXdpc2UuCgkoZF9tYW5nbGVkX25hbWUpOiBBZGQgdG9wX2xldmVsIHBhcmFtZXRlci4gIENoYW5nZSBhbGwgY2FsbGVycy4KCShkX2VuY29kaW5nKTogSWYgRE1HTF9QQVJBTVMgaXMgbm90IHNldCwgc3RyaXAgb2ZmIGluaXRpYWwKCUNWLXF1YWxpZmllcnMuCgkoZF90eXBlKTogQ2hlY2sgc29tZSByZXR1cm4gdmFsdWVzIHdlIHJlbHkgb24uCgkoZF9iYXJlX2Z1bmN0aW9uX3R5cGUsIGRfYXJyYXlfdHlwZSk6IExpa2V3aXNlLgoJKGRfcG9pbnRlcl90b19tZW1iZXJfdHlwZSwgZF90ZW1wbGF0ZV9hcmdzKTogTGlrZXdpc2UuCgkoZF9hZGRfc3Vic3RpdHV0aW9uKTogRmFpbCBpZiBhcmd1bWVudCBpcyBOVUxMLgoJKGRfcHJpbnRfcmVzaXplKTogQ2hlY2sgd2hldGhlciBidWYgaXMgTlVMTC4KCShkX3ByaW50X2NvbXApOiBTYXZlIGN1cnJlbnQgdGVtcGxhdGVzIGxpc3Qgd2l0aCBlYWNoIG1vZGlmaWVyLgoJRG9uJ3QgcGFzcyB0aGUgbW9kaWZpZXIgbGlzdCBkb3duIHdoZW4gcHJpbnRpbmcgYSB0ZW1wbGF0ZS4KCShkX3ByaW50X2Nhc3QpOiBEb24ndCBwYXNzIHRoZSBtb2RpZmllciBsaXN0IGRvd24gd2hlbiBwcmludGluZyBhCgl0ZW1wbGF0ZS4KCShkX3ByaW50X21vZF9saXN0KTogVGVtcG9yYXJpbHkgc2V0IHRlbXBsYXRlcyBsaXN0IHdoaWxlIHByaW50aW5nCglhIG1vZGlmaWVyLgoJKGRfcHJpbnRfbW9kKTogQ2hlY2sgdGhhdCBidWYgaXMgbm90IE5VTEwgYmVmb3JlIHVzaW5nIGl0LgoJKGRfcHJpbnRfZnVuY3Rpb25fdHlwZSk6IFByaW50IHBhcmVucyBpZiB0aGVyZSBpcyBubyBtb2RpZmllci4KCShkX2luaXRfaW5mbyk6IFBlcm1pdCBhcyBtYW55IHN1YnN0aXR1dGlvbnMgYXMgdGhlcmUgYXJlCgljaGFyYWN0ZXJzIGluIHRoZSBtYW5nbGVkIG5hbWUuCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIHR3byBuZXcgdGVzdCBjYXNlcy4KCjIwMDMtMTEtMjUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChqYXZhX2RlbWFuZ2xlX3YzKTogUGFzcyBETUdMX1BBUkFNUyB0bwoJZF9kZW1hbmdsZS4KCjIwMDMtMTEtMjIgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkX2VuY29kaW5nKTogQWRkIHRvcF9sZXZlbCBwYXJhbWV0ZXIuICBDaGFuZ2UgYWxsCgljYWxsZXJzLgoJKHByaW50X3VzYWdlKTogRGlzcGxheSBuZXcgLXAgb3B0aW9uLgoJKGxvbmdfb3B0aW9ucyk6IEFkZCAtLW5vLXBhcmFtcy4KCShtYWluKTogQWNjZXB0IGFuZCBoYW5kbGUgLXAuCgoyMDAzLTExLTIxICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoaGFzX3JldHVybl90eXBlKTogU2tpcCBxdWFsaWZpZXJzIHdoZW4gY2hlY2tpbmcKCXdoZXRoZXIgd2UgaGF2ZSBhIHRlbXBsYXRlLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCBmb3VyIG5ldyB0ZXN0cy4KCjIwMDMtMTEtMjAgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5Ad2FzYWJpc3lzdGVtcy5jb20+CgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IE1pbm9yIGNoYW5nZXMgdG8gbWF0Y2ggb3V0cHV0IG9mCgluZXcgZGVtYW5nbGVyOiBhZGp1c3Qgd2hpdGVzcGFjZSBpbiBmb3VyIHRlc3RzLCBhbmQgY2hhbmdlIG9yZGVyCglvZiBxdWFsaWZpZXJzIGluIG9uZSB0ZXN0LgoKCSogY3AtZGVtYW5nbGUuYzogQ29tcGxldGUgcmV3cml0ZS4KCjIwMDMtMTEtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV90eXBlKTogQ29ycmVjdCB0aGlua28gaW4gc3Vic3RpdHV0aW9uCglwcm9jZXNzaW5nLgoKMjAwMy0xMS0xOCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkB3YXNhYmlzeXN0ZW1zLmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX29wZXJhdG9yX25hbWUpOiBSZW1vdmUgc3BhY2UgYmVmb3JlCgkic2l6ZW9mIi4KCShkZW1hbmdsZV90eXBlX3B0cik6IFB1dCBxdWFsaWZpZXJzIGluIHRoZSByaWdodCBwbGFjZS4gIEhhbmRsZQoJcXVhbGlmaWVycyBpbiBwb2ludGVyIHRvIG1lbWJlciBzcGVjaWFsbHkuCgkoZGVtYW5nbGVfdHlwZSk6IEhhbmRsZSBxdWFsaWZpZXJzIGZvciBwb2ludGVyIG9yIHJlZmVyZW5jZQoJc3BlY2lhbGx5LiAgSGFuZGxlIGZ1bmN0aW9uIHR5cGUuCgkoZGVtYW5nbGVfbG9jYWxfbmFtZSk6IFNhdmUgYW5kIHJlc3RvcmUgY2FyZXQgYXJvdW5kIGRlbWFuZ2xpbmcgb2YKCWluaXRpYWwgZW5jb2RpbmcuCgoJKiB0ZXN0c3VpdGUvdGVzdC1kZW1hbmdsZS5jIChtYWluKTogRG9uJ3QgcGFzcyBETUdMX1ZFUkJPU0UgdG8KCWNwbHVzX2RlbWFuZ2xlLgoKCSogdGVzdHN1aXRlL01ha2VmaWxlLmluICh0ZXN0LWRlbWFuZ2xlKTogRGVwZW5kIHVwb24gbGliaWJlcnR5LmEuCgoyMDAzLTEwLTMxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF9hbHdheXNfdmFsaWQpOiBBZGQgdW51c2VkIGF0dHJpYnV0ZS4KCjIwMDMtMTAtMzAgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCglKYW4gSHViaWNrYSA8amhAc3VzZS5jej4KCSogdmFzcHJpbnRmLmMgKGludF92YXNwcmludGYpOiBQYXNzIHZhX2xpc3QgYnkgdmFsdWUuCglVc2UgdmFfY29weSBmb3IgY29weWluZyB2YV9saXN0LgoJKHZhc3ByaW50Zik6IFBhc3MgdmFfbGlzdCBieSB2YWx1ZS4KCjIwMDMtMTAtMzAgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGhhc2h0YWIuYyAoaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogRGVjcmVhc2Ugbl9kZWxldGVkCglpbnN0ZWFkIG9mIGluY3JlYXNpbmcgbl9lbGVtZW50cyB3aGVuIGluc2VydGluZyB0byBkZWxldGVkIHNsb3QuCgoyMDAzLTEwLTIwICBKLiBCcm9iZWNrZXIgIDxicm9iZWNrZXJAZ25hdC5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfdGVtcGxhdGUpOiBSZWdpc3RlciBhIG5ldyBCdHlwZSBvbmx5Cgl3aGVuIG5lZWRlZC4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgYSBuZXcgdGVzdC4KCjIwMDMtMTAtMTYgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogVXBkYXRlIHRoZSBleHBlY3RlZCBvdXRwdXQgb2YKCV9HTE9CQUxfX0lfX1oyZm52LgoKMjAwMy0xMC0wMiAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBzdHJlcnJvci5jOiBSZXZlcnQgbGFzdCBjaGFuZ2UuICBEZWNsYXJlIHN0YXRpYyBzeXNfbmVycgoJYW5kIHN5c19lcnJsaXN0IHVzaW5nIGRpZmZlcmVudCBuYW1lcy4KCjIwMDMtMTAtMDEgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogc3RyZXJyb3IuYzogRG9uJ3QgcHJvdmlkZSBvciByZWZlcmVuY2Ugc3lzX2Vycmxpc3QgaWYKCXN0cmVycm9yIGlzIGF2YWlsYWJsZS4KCjIwMDMtMTAtMDEgIEguSi4gTHUgIDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgaWYgJE1BS0VJTkZPIGlzIG1pc3NpbmcuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAzLTA5LTI0ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogVXNlIEFDX1BST0dfQ1BQX1dFUlJPUi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDMtMDktMjIgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAcmVkaGF0LmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X2kzODdfZXh0X2lzX3ZhbGlkKTogTmV3IGZ1bmN0aW9uLgoJKGZsb2F0Zm9ybWF0X2Fsd2F5c192YWxpZCk6IE5ldyBmdW5jdGlvbi4KCShmbG9hdGZvcm1hdF9pMzg3X2V4dCk6IEluaXRpYWxpemUgbmV3ICJpc192YWxpZCIgZmllbGQgdG8KCSJmbG9hdGZvcm1hdF9pMzg3X2V4dF9pc192YWxpZCIuCgkoZmxvYXRmb3JtYXRfaWVlZV9zaW5nbGVfbGl0dGxlKTogSW5pdGlhbGl6ZSAiaXNfdmFsaWQiIGZpZWxkIHRvCglmbG9hdGZvcm1hdF9hbHdheXNfdmFsaWQuCgkoZmxvYXRmb3JtYXRfaWVlZV9kb3VibGVfYmlnKTogRGl0dG8uCgkoZmxvYXRmb3JtYXRfaWVlZV9kb3VibGVfbGl0dGxlKTogRGl0dG8uCgkoZmxvYXRmb3JtYXRfaWVlZV9kb3VibGVfbGl0dGxlKTogRGl0dG8uCgkoZmxvYXRmb3JtYXRfaWVlZV9kb3VibGVfbGl0dGxlYnl0ZV9iaWd3b3JkKTogRGl0dG8uCgkoZmxvYXRmb3JtYXRfaTk2MF9leHQpOiBEaXR0by4KCShmbG9hdGZvcm1hdF9tODgxMTBfZXh0KTogRGl0dG8uCgkoZmxvYXRmb3JtYXRfbTg4MTEwX2hhcnJpc19leHQpOiBEaXR0by4KCShmbG9hdGZvcm1hdF9hcm1fZXh0X2JpZyk6IERpdHRvLgoJKGZsb2F0Zm9ybWF0X2FybV9leHRfbGl0dGxlYnl0ZV9iaWd3b3JkKTogRGl0dG8uCgkoZmxvYXRmb3JtYXRfaWE2NF9zcGlsbF9iaWcpOiBEaXR0by4KCShmbG9hdGZvcm1hdF9pYTY0X3NwaWxsX2xpdHRsZSk6IERpdHRvLgoJKGZsb2F0Zm9ybWF0X2lhNjRfcXVhZF9iaWcpOiBEaXR0by4KCShmbG9hdGZvcm1hdF9pYTY0X3F1YWRfbGl0dGxlKTogRGl0dG8uCgkoZmxvYXRmb3JtYXRfaWE2NF9xdWFkX2xpdHRsZSk6IERpdHRvLgoJKGZsb2F0Zm9ybWF0X2lzX3ZhbGlkKTogQ2FsbCAiaXNfdmFsaWQiLgoKMjAwMy0wOS0xNSAgQW5kcmV3IENhZ25leSAgPGNhZ25leUByZWRoYXQuY29tPgoKCSogZmxvYXRmb3JtYXQuYyAoZ2V0X2ZpZWxkKTogTWFrZSAiZGF0YSIgY29uc3RhbnQuCgkoZmxvYXRmb3JtYXRfaXNfdmFsaWQsIGZsb2F0Zm9ybWF0X3RvX2RvdWJsZSk6IE1ha2UgImZyb20iCgljb25zdGFudCwgZml4IGNhc3RzLgoJKGZsb2F0Zm9ybWF0X2Zyb21fZG91YmxlKTogTWFrZSAiZnJvbSIgY29uc3RhbnQuCgoyMDAzLTA5LTE1ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X2lzX3ZhbGlkKTogTmV3IGZ1bmN0aW9uLgoJKGdldF9maWVsZCwgcHV0X2ZpZWxkKTogQ29ycmVjdCBjb21tZW50cy4KCjIwMDMtMDktMDYgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIGZpYmhlYXAuYyAoZmliaGVhcF9yZXBsYWNlX2tleV9kYXRhKTogQ2hhbmdlIHR5cGUgb2YgT0tFWSB0bwoJRklCSEVBUEtFWV9ULgoKMjAwMy0wOS0wMiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBib290c3RyYXAvMTIxMDAKCSogYWNsb2NhbC5tNCAoQUNfTEFOR19GVU5DX0xJTktfVFJZKTogRGVmaW5lLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgoyMDAzLTA4LTI3ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIGFjbG9jYWwubTQ6IEluY2x1ZGUgYWN4Lm00IGFuZCBuby1leGVjdXRhYmxlcy5tNC4KCShsaWJpYmVydHlfQUNfRlVOQ19TVFJOQ01QKTogVXNlIEFDX0xJQk9CSi4KCShMSUJfQUNfUFJPR19DQyk6IFJlbW92ZS4KCSogY29uZmlndXJlLmluOiBVcGRhdGUgQUNfUFJFUkVRIHRvIDIuNTcuICBVc2UgR0NDX05PX0VYRUNVVEFCTEVTLgoJVXNlIEFDX1BST0dfQ0MgYW5kIHNldCBhY19saWJpYmVydHlfd2Fybl9jZmxhZ3MgaW5zdGVhZCBvZiB1c2luZwoJTElCX0FDX1BST0dfQ0MuICBVc2UgQUNfTElCT0JKLiAgQ2FsbCBBQ19JU0NfUE9TSVggbGF0ZXIsIG9ubHkgaWYKCXBlcmZvcm1pbmcgbGluayB0ZXN0cy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDMtMDgtMTIgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogY3AtZGVtYW5nbGUuYzogQ2xhcmlmeSB3aGF0IHBhY2thZ2UocykgdGhpcyBpcyBwYXJ0IG9mLgoKMjAwMy0wNy0wNSAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHBleC13aW4zMi5jIChwZXhlY3V0ZSk6IE1hcmsgcGFyYW1ldGVycyB0aGlzX3BuYW1lIGFuZAoJdGVtcF9iYXNlIGFzIHVudXNlZC4gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgcmV0cmllcywKCXNsZWVwX2ludGVydmFsLiBJbml0aWFsaXplIG9yZ19zdGRpbiwgb3JnX3N0ZG91dC4KCShwd2FpdCk6IE1hcmsgcGFyYW1ldGVyIGZsYWdzIGFzIHVudXNlZC4KCjIwMDMtMDctMDIgIERhbm55IFNtaXRoICA8ZGFubnlzbWl0aEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBwZXgtd2luMzIuYyAoZml4X2FyZ3YpOiBFbnN1cmUgdGhhdCB0aGUgZXhlY3V0YWJsZSBwYXRobmFtZQoJdXNlcyBXaW4zMiBiYWNrc2xhc2hlcy4KCShwZXhlY3V0ZSk6IENhc3QgYXdheSBjb25zdG5lc3Mgd2hlbiBhc3NpZ25pbmcgKmVycm1zZ19hcmcuCgoyMDAzLTA2LTI2ICBILkouIEx1IDxob25naml1Lmx1QGludGVsLmNvbT4KCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIG1vcmUgR05VIFYzIHRlc3RjYXNlcy4KCjIwMDMtMDYtMjIgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzYWZlLWN0eXBlLmM6IFVzZSBIT1NUX0NIQVJTRVRfQVNDSUkgYW5kIEhPU1RfQ0hBUlNFVF9FQkNESUMsCglub3QgSENfQVNDSUkgYW5kIEhDX0VCQ0RJQy4KCUFkZCBkb2N1bWVudGF0aW9uIGluIGZvcm0gZXhwZWN0ZWQgYnkgZ2F0aGVyLWRvY3MuCgkqIGhleC5jOiBVc2UgSE9TVF9DSEFSU0VULCBub3QgaGFuZC1jb2RlZCBjaGVjayBvZiBjaGFyYWN0ZXIgc2V0LgoJKiBNYWtlZmlsZS5pbiwgZnVuY3Rpb25zLnRleGk6IFJlZ2VuZXJhdGUuCgoyMDAzLTA2LTIxICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2FmZS1jdHlwZS5jOiBTZXBhcmF0ZSBvdXQgRU9GPT0tMSBjaGVjay4gIFVzZSBIT1NUX0NIQVJTRVQKCWZvciBjaGFyc2V0IGRldGVybWluYXRpb24uCgoyMDAzLTA2LTE5ICBEYXJhIEhhemVnaGkgIDxkaGF6ZWdoaUB5YWhvby5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZCBjaGVjayBmb3IgbWFsbG9jLmggbmVlZGVkIGJ5CgltNjhrIGZvciBmdW5jdGlvbiBmcmVlKCkuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGNvbmZpZy5pbjogQWRkIEhBVkVfTUFMTE9DX0guCgkqIGhhc2h0YWIuYzogaW5jbHVkZSBtYWxsb2MuaCB3ZXJlIGF2YWlsYWJsZSBmb3IKCWZyZWUoKS4KCjIwMDMtMDYtMDkgIEFsYmVydCBDaGluLUEtWW91bmcgIDxjaGluYUB0aGV3cml0dGVud29yZC5jb20+CgoJUFIgYm9vdHN0cmFwLzEwOTc0CgkqIHBoeXNtZW0uYzogVXBkYXRlIGNvbW1lbnQuCgkqIGNvbmZpZ3VyZS5pbjogTW9kaWZ5IHRlc3QgZm9yIF9zeXN0ZW1fY29uZmlndXJhdGlvbiBmb3Igb2xkZXIKCUFJWCBzeXN0ZW1zLgoKCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMy0wNi0wNSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlLmFuZ2xpbkBucmMtY25yYy5nYy5jYT4KCglQUiBvdGhlci8xMDgxMAoJKiB0ZXN0LWRlbWFuZ2xlLmMgKGdldGxpbmUpOiBGaXggZmVuY2UtcG9zdCBlcnJvci4KCjIwMDMtMDYtMDMgIE5pY2sgQ2xpZnRvbiAgPG5pY2tjQHJlZGhhdC5jb20+CgoJKiBhc3ByaW50Zi5jOiBDaGFuZ2UgY29tbWVudCB0byBub3RlIHRoYXQgLTEgaXMgcmV0dXJuZWQgdXBvbgoJZXJyb3IuCgkqIHZhc3ByaW50Zi5jOiBMaWtld2lzZS4KCSh2YXNwcmludGYpOiBSZXR1cm4gLTEgdXBvbiBlcnJvci4KCSogZnVuY3Rpb25zLnRleGk6IERvY3VtZW50IGNoYW5nZXMgdG8gYXNwcmludGYgYW5kIHZhc3ByaW50Zi4KCjIwMDMtMDUtMTkgIEtlbGxleSBDb29rICA8a2VsbGV5Y29va0B3aWRlb3Blbndlc3QuY29tPgoKCSogY29uZmlnLnRhYmxlOiBBY2NlcHQgaVszNDU4NjddODYgdmFyaWFudC4KCjIwMDMtMDUtMTUgIEppbSBCbGFuZHkgIDxqaW1iQHJlZGhhdC5jb20+CgoJKiBoZXguYyAoX2hleF92YWx1ZSk6IE1ha2UgdGhpcyB1bnNpZ25lZC4KCShoZXhfdmFsdWUpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiBmb3IgbmV3IHJldHVybiB0eXBlLiAgaGV4X3ZhbHVlCglub3cgZXhwYW5kcyB0byBhbiB1bnNpZ25lZCBpbnQgZXhwcmVzc2lvbiwgdG8gYXZvaWQgdW5leHBlY3RlZAoJc2lnbiBleHRlbnNpb24gd2hlbiB3ZSBzdG9yZSBpdCBpbiBhIGJmZF92bWEsIHdoaWNoIGlzIGxhcmdlciB0aGFuCglpbnQgb24gc29tZSBwbGF0Zm9ybXMuCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlZC4KCjIwMDMtMDUtMDcgIEpvc2VmIFpsb21layAgPHpsb21la2pAc3VzZS5jej4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV9wcmVkZWNlc3Nvcik6IEZpeCBjb21tZW50LgoJKHNwbGF5X3RyZWVfc3VjY2Vzc29yKTogRml4IGNvbW1lbnQuCgoyMDAzLTA1LTA3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuYyAoaXRlcmF0aXZlX2hhc2gpOiBOZXcgZm4uCgkqIGNvbmZpZ3VyZS5pbjogQWRkIEFDX0NfQklHRU5ESUFOX0NST1NTLgoJKiBhY2xvY2FsLm00OiBJbmNsdWRlIGFjY3Jvc3MubTQuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKMjAwMy0wNS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uZmlndXJlLmluIChBQ19DSEVDS19GVU5DUyk6IERvbid0IG1ha2UgbXVsdGlwbGUgY2FsbHMuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDMtMDUtMDMgIENhcmxvIFdvb2QgIDxjYXJsb0BhbGlub2UuY29tPgoKCSogY3AtZGVtYW5nbGUuYzogRml4IHR5cG8gaW4gImNoYXJfdHJhaW50cyIgc3RyaW5nLWxpdGVyYWwuCgoyMDAzLTA0LTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB2c25wcmludGYuYyAodnNucHJpbnRmKTogRG9uJ3QgcGFkIHN0cmluZyB3aXRoIGV4dHJhIG51bGxzLgoJKG1haW4pOiBUZXN0IHRoYXQgd2UgZG9uJ3Qgd3JpdGUgdG9vIG11Y2ggZGF0YS4KCjIwMDMtMDQtMTYgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoZnVuY3MsIEFDX0NIRUNLX0ZVTkNTKTogQWRkIHNucHJpbnRmIGFuZAoJdnNucHJpbnRmLgoJKiBzbnByaW50Zi5jLCB2c25wcmludGYuYzogTmV3IGZpbGVzLgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIHNucHJpbnRmLmMgYW5kIHZzbnByaW50Zi5jLgoJKENPTkZJR1VSRURfT0ZJTEVTKTogQWRkIHNucHJpbnRmLm8gYW5kIHZzbnByaW50Zi5vLgoJUmVnZW5lcmF0ZSBkZXBlbmRlbmNpZXMuCgoJKiBmdW5jdGlvbnMudGV4aSwgY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGVkLgoKMjAwMy0wNC0xNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWVtcGNweS5jLCBzdHBjcHkuYywgc3RwbmNweS5jOiBOZXcgZmlsZXMuCgkqIGNvbmZpZ3VyZS5pbiAoZnVuY3MsIEFDX0NIRUNLX0ZVTkNTKTogQWRkIG1lbXBjcHksIHN0cGNweQoJYW5kIHN0cG5jcHkuCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgbWVtcGNweS5jLCBzdHBjcHkuYyBhbmQgc3RwbmNweS5jLgoJKENPTkZJR1VSRURfT0ZJTEVTKTogQWRkIG1lbXBjcHkubywgc3RwY3B5Lm8gYW5kIHN0cG5jcHkuby4KCVJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzLgoKCSogZnVuY3Rpb25zLnRleGksIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlZC4KCjIwMDMtMDQtMTUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFyZ3YuYzogRml4IGNvbW1lbnRzLgoJKiBjYWxsb2MuYzogRG9uJ3QgdW5uZWNlc3NhcmlseSBpbmNsdWRlICJsaWJpYmVydHkuaCIuCgkoYnplcm8pOiBBZGQgcHJvdG90eXBlLgoJKiBmbG9hdGZvcm1hdC5jOiBJbmNsdWRlICJhbnNpZGVjbC5oIiwgcmVseSBvbiBBTlNJX1BST1RPVFlQRVMuCgkqIGdldGN3ZC5jIChnZXRjd2QpOiBVc2Ugc3RhbmRhcmQgZGVmaW5pdGlvbiB0byBhdm9pZCBjb25mbGljdHMKCXdpdGggc3lzdGVtIGhlYWRlcnMuCgkqIGhhc2h0YWIuYyAoaHRhYl90cmF2ZXJzZSk6IERlbGV0ZSB1bnVzZWQgdmFyaWFibGVzLgoJKiByZW5hbWUuYzogSW5jbHVkZSAiYW5zaWRlY2wuaCIuCgkocmVuYW1lKTogVXNlIHN0YW5kYXJkIGRlZmluaXRpb24gdG8gYXZvaWQgY29uZmxpY3RzIHdpdGggc3lzdGVtCgloZWFkZXJzLgoJKiBzdHJzaWduYWwuYzogUmVseSBvbiBBTlNJX1BST1RPVFlQRVMuCgkqIHN0cnN0ci5jOiBDaGVjayBHTlVDID49IDIsIG5vdCBHTlVDID09IDIuCgkqIHZmcHJpbnRmLmM6IEluY2x1ZGUgImFuc2lkZWNsLmgiLCByZWx5IG9uIEFOU0lfUFJPVE9UWVBFUy4KCSogdnByaW50Zi5jOiBJbmNsdWRlICJhbnNpZGVjbC5oIiBlYXJsaWVyLCByZWx5IG9uCglBTlNJX1BST1RPVFlQRVMuCgkqIHZzcHJpbnRmLmM6IEluY2x1ZGUgImFuc2lkZWNsLmgiIGVhcmxpZXIsIHJlbHkgb24KCUFOU0lfUFJPVE9UWVBFUyBhbmQgcG9zc2libHkgaW5jbHVkZSA8c3RkYXJnLmg+LgoKCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUgZGVwZW5kZW5jaWVzLgoKMjAwMy0wNC0xNSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBtYWludC10b29sIChkZXBzKTogU2NhbiBmb3IgaGVhZGVycyBpbiAkc3JjZGlyIGFsc28uCgoyMDAzLTA0LTE1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJUFIgdGFyZ2V0LzEwMzM4CglQUiBib290c3RyYXAvMTAxOTgKCVBSIGJvb3RzdHJhcC8xMDE0MAoJKiBnZXRvcHQuYyAoZXhjaGFuZ2UsIF9nZXRvcHRfaW5pdGlhbGl6ZSk6IFVzZSBtZW1wY3B5IG5vdAoJX19tZW1wY3B5LgoJKiByZWdleC5jIChyZWdlcnJvcik6IExpa2V3aXNlLgoKMjAwMy0wNC0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBhcmd2LmM6IFVzZSBBTlNJX1BST1RPVFlQRVMgaW5zdGVhZCBvZiBfX1NURENfXy4KCSogbWVtY2hyLmM6IExpa2V3aXNlLgoJKiBzdHJjYXNlY21wLmM6IExpa2V3aXNlLgoJKiBzdHJuY2FzZWNtcC5jOiBMaWtld2lzZS4KCSogc3RybmNtcC5jOiBMaWtld2lzZS4KCSogeGF0ZXhpdC5jOiBMaWtld2lzZS4KCSogeG1hbGxvYy5jOiBMaWtld2lzZS4KCgkqIGNvcHlzaWduLmM6IFVzZSB0cmFkaXRpb25hbCBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpbnN0ZWFkIG9mIERFRlVOLgoJKiBzaWdzZXRtYXNrLmM6IExpa2V3aXNlLgoKCSogbWVtY21wLmM6IEJvdGggb2YgdGhlIGFib3ZlLCBBTlNJX1BST1RPVFlQRVMgYW5kIERFRlVOLgoJKiBtZW1zZXQuYzogTGlrZXdpc2UuCgoJKiBtZW1jcHkuYzogQU5TSV9QUk9UT1RZUEVTLCBERUZVTiBhbmQgcHJvdG90eXBlIGJjb3B5LgoJKiBtZW1tb3ZlLmM6IExpa2V3aXNlLgoKMjAwMy0wNC0xNCAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBzdHJkdXAuYyAoc3RyZHVwKTogVHdlYWsgaW1wbGVtZW50YXRpb24gdG8gdXNlIG1lbWNweS4KCjIwMDMtMDQtMTQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoSEFWRV9VSU5UUFRSX1QpOiBBbHdheXMgZGVmaW5lLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMy0wMy0yMyAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTVVMVElPU0RJUik6IE5ldyBtYWNyby4gIFVzZSAkKENDKSAkKExJQkNGTEFHUykKCWluc3RlYWQgb2YgJCRDQyBhbG9uZS4KCShpbnN0YWxsX3RvX3Rvb2xkaXIpOiBVc2UgaXQuCgoyMDAzLTE3LTAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBoYXNodGFiLmMgKGh0YWJfdHJhdmVyc2Vfbm9yZXNpemUpOiBCcmVhayBvdXQgZnJvbSAuLi4KCSogaGFzaHRhYi5jIChodGFiX3RyYXZlcnNlKTogLi4uIGhlcmUuCgoyMDAzLTEyLTAzICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBoYXNodGFiLmMgKGh0YWJfZXhwYW5kKTogRml4IHdhcm5pbmcuCgoJKiBoYXNodGFiLmMgKGh0YWJfZXhwYW5kKTogQ29tcHV0ZSB0aGUgc2l6ZSBvZiBoYXNodGFibGUgYmFzZWQKCW9uIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgYWN0dWFsbHkgdXNlZC4KCShodGFiX3RyYXZlcnNlKTogIENhbGwgaHRhYl9leHBhbmQgd2hlbiB0YWJsZSBpcyB0b28gZW1wdHkuCgoyMDAzLTAzLTExICBDYXJsbyBXb29kICA8Y2FybG9AZ251Lm9yZz4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9pbnRlZ3JhbF92YWx1ZSk6IENvcnJlY3Rpb24gdG8gcmVmbGVjdAoJcGF0Y2ggb2YgMjAwMi0wMS0xMCBpbiBvcmRlciB0byBhbHNvIG1ha2UgbmVnYXRpdmUgbXVsdGktZGlnaXRzCgl3aXRob3V0IGxlYWRpbmcgdW5kZXJzY29yZSB3b3JrLgoKMjAwMy0wMy0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBBZGQgbGljZW5zZSBleGNlcHRpb24gdG8gY29weXJpZ2h0IG5vdGljZS4KCjIwMDMtMDItMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHBoeXNtZW0uYzogRm9ybWF0dGluZyBjaGFuZ2VzIGZyb20gdXBzdHJlYW0uCgoyMDAzLTAyLTI0ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlLmZvcmdlLm5ldD4KCgkqIHBoeXNtZW0uYyAocGh5c21lbV90b3RhbCk6IEFkZCBfV0lOMzIgc3VwcG9ydC4KCShwaHlzbWVtX2F2YWlsYWJsZSk6IExpa2V3aXNlLgoKMjAwMy0wMi0yNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBwaHlzbWVtLmMgKHBoeXNtZW1fdG90YWwpIFtIQVZFX0dFVFNZU0lORk9dOiBUZXN0IGZvcgoJR1NJX1BIWVNNRU0uCgkocGh5c21lbV9hdmFpbGFibGUpIFtIQVZFX1RBQkxFXTogVGVzdCBmb3IgVEJMX1ZNU1RBVFMuCgoyMDAzLTAyLTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciBzeXMvc3lzdGVtY2ZnLmggYW5kCglfc3lzdGVtX2NvbmZpZ3VyYXRpb24uCgkqIHBoeXNtZW0uYzogQWRkIHN1cHBvcnQgZm9yIEFJWC4gIFR3ZWVrIGZvcm1hdHRpbmcgYXMgcGVyCgl1cHN0cmVhbSBjb3JldXRpbHMgYmV0YS4KCjIwMDMtMDItMjIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCSAgICBSaWNoYXJkIEVhcm5zaGF3ICA8cmVhcm5zaGFAYXJtLmNvbT4KCSAgICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIHN5cy9zeXNjdGwuaCBhbmQgc3lzY3RsLgoJKiBwaHlzbWVtLmM6IEFkZCBzdXBwb3J0IGZvciAqYnNkIGFuZCBkYXJ3aW4uCgkqIE1ha2VmaWxlLmluOiBHZW5lcmF0ZSBkZXBlZGVuY3kgZm9yIHBoeXNtZW0uby4KCjIwMDMtMDItMjEgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogcGh5c21lbS5jIChwaHlzbWVtX3RvdGFsKSBbSEFWRV9HRVRTWVNJTkZPXTogVXNlIGdldHN5c2luZm8gb24KCVRydTY0IFVOSVguCgkocGh5c21lbV9hdmFpbGFibGUpIFtIQVZFX1RBQkxFICYmIEhBVkVfU1lTX1RBQkxFX0hdOiBVc2UgdGFibGUgb24KCVRydTY0IFVOSVguCgoJKiBjb25maWd1cmUuaW4gKEFDX0NIRUNLX0hFQURFUlMpOiBDaGVjayBmb3Igc3lzL3N5c2luZm8uaCwKCW1hY2hpbmUvaGFsX3N5c2luZm8uaCwgc3lzL3RhYmxlLmguCgkoY2hlY2tmdW5jcywgQUNfQ0hFQ0tGVU5DUyk6IENoZWNrIGZvciBnZXRzeXNpbmZvLCB0YWJsZS4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoyMDAzLTAyLTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciBzeXMvc3lzbXAuaCBhbmQgc3lzbXAuCgkqIHBoeXNtZW0uYzogUHVsbCB1cHN0cmVhbSBjb3B5LCBhZGQgc3VwcG9ydCBmb3IgaXJpeDYuCgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAzLTAyLTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBwaHlzbWVtLmMgKHBoeXNtZW1fdG90YWwsIHBoeXNtZW1fYXZhaWxhYmxlKTogRGUtQU5TSS1meS4KCSogY29uZmlndXJlLmluIChBQ19DSEVDS19GVU5DUyk6IEFkZCBwc3RhdF9nZXRzdGF0aWMgYW5kCglwc3RhdF9nZXRkeW5hbWljLgoKMjAwMy0wMi0yMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBwaHlzbWVtLmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIHBoeXNtZW0uby4KCSogY29uZmlndXJlLmluOiBDaGVjayBmb3Igc3lzL3BzdGF0LmguCgkoY2hlY2tmdW5jcyk6IEFkZCBwc3RhdF9nZXRzdGF0aWMgYW5kIHBzdGF0X2dldGR5bmFtaWMuCgkqIHBoeXNtZW0uYzogTmV3IGZpbGUsIGNvcGllZCBmcm9tIHRleHR1dGlscy4KCgkqIGNvbmZpZy5pbiwgY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDMtMDItMjAgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBscmVhbHBhdGguYy4KCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgbHJlYWxwYXRoLm8uCgkobHJlYWxwYXRoLm8pOiBBZGQgcnVsZS4KCSogYWNsb2NhbC5tNCAobGliaWJlcnR5X05FRURfREVDTEFSQVRJT04pOiBBZGQuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIHJlYWxwYXRoIGFuZCBjYW5vbmljYWxpemVfZmlsZV9uYW1lIHRvCgljaGVja2Z1bmNzIGFuZCBBQ19DSEVDS19GVU5DUy4gIFVzZSBsaWJpYmVydHlfTkVFRF9ERUNMQVJBVElPTgoJZm9yIGNhbm9uaWNhbGl6ZV9maWxlX25hbWUuCgkqIGxyZWFscGF0aC5jOiBOZXcgZmlsZS4KCSogbWFrZS1yZWxhdGl2ZS1wcmVmaXguYzogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkobWFrZV9yZWxhdGl2ZV9wcmVmaXgpOiBTaW1wbGlmeS4gIFVzZSBsYmFzZW5hbWUgYW5kIGxyZWFscGF0aC4KCSogY29uZmlnLmluOiBSZWdlbmVyYXRlZC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCSogZnVuY3Rpb25zLnRleGk6IFJlZ2VuZXJhdGVkLgoKMjAwMy0wMi0yMCAgam1jICA8am1jQHByaW9yaXMubWluaS5wdy5lZHUucGw+CgoJKiBjcGx1c19kZW0uYzogRml4IHR5cG86IGludGlhbGl6ZXMgLT4gaW5pdGlhbGl6ZXMuCgoyMDAzLTAyLTIwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogUHJvcGFnYXRlIE9SSUdJTkFMX0xEX0ZPUl9NVUxUSUxJQlMgdG8KCWNvbmZpZy5zdGF0dXMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDMtMDItMTMgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCUZpeCBQUiBjKysvNzYxMi4KCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3NpZ25hdHVyZSk6IENhbGwgc3RyaW5nX2RlbGV0ZS4KCVJlbW92ZSBleHRyYSBzdHJpbmdfaW5pdC4KCShkZW1hbmdsZV9hcm1faHBfdGVtcGxhdGUpOiBDYWxsIHN0cmluZ19kZWxldGUgaW5zdGVhZCBvZgoJc3RyaW5nX2NsZWFyLiAgQWRkIG1pc3Npbmcgc3RyaW5nX2RlbGV0ZSBjYWxsLgoJKGRlbWFuZ2xlX3F1YWxpZmllZCk6IEFkZCBtaXNzaW5nIHN0cmluZ19kZWxldGUgY2FsbC4KCShkb190eXBlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBidHlwZS4gIEFkZCBtaXNzaW5nIHN0cmluZ19kZWxldGUKCWNhbGwuICBDYWxsIHN0cmluZ19kZWxldGUgaW5zdGVhZCBvZiBzdHJpbmdfY2xlYXIuCgkoZGVtYW5nbGVfZnVuZF90eXBlKTogTW92ZSB2YXJpYWJsZSBidHlwZSBpbnNpZGUgb2YgdGhlIHN3aXRjaAoJc3RhdGVtZW50LiAgQWRkIG1pc3Npbmcgc3RyaW5nX2RlbGV0ZSBjYWxsLgoJKGRvX2FyZyk6IENhbGwgc3RyaW5nX2RlbGV0ZSBpbnN0ZWFkIG9mIHN0cmluZ19jbGVhci4gIFJlbW92ZSBleHRyYQoJc3RyaW5nX2luaXQuCgkoZGVtYW5nbGVfbmVzdGVkX2FyZ3MpOiBGcmVlIHdvcmstPnByZXZpb3VzX2FyZ3VtZW50LgoKMjAwMy0wMi0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYWNjb25maWcuaDogTmV3IGZpbGUuICBBZGQgdWludHB0cl90LgoJKiBjb25maWcuaW46IFJlZ2VuZXJhdGVkLgoKMjAwMy0wMi0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBsaWJpYmVydHkudGV4aTogVXBkYXRlIHRvIEdGREwgMS4yLgoKMjAwMy0wMS0zMCAgQ2hyaXN0aWFuIENvcm5lbHNzZW4gIDxjY29ybkBjcy50dS1iZXJsaW4uZGU+CgoJKiBNYWtlZmlsZS5pbiAobGliaWJlcnR5X3RvcGRpcik6IE5ldyBzdWJzdC4KCShta2luc3RhbGxkaXJzKTogUmVkZWZpbmUgaW4gdGVybXMgb2YgdGhlIGFib3ZlLgoJKiBjb25maWd1cmUuaW46IEFDX1NVQlNUIGl0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTAxLTI4ICBDaHJpc3RpYW4gQ29ybmVsc3NlbiAgPGNjb3JuQGNzLnR1LWJlcmxpbi5kZT4KCgkqIE1ha2VmaWxlLmluIChhbGwtc3ViZGlyLCBjaGVjay1zdWJkaXIsIGluc3RhbGxjaGVjay1zdWJkaXIpCgkoaW5mby1zdWJkaXIsIGluc3RhbGwtaW5mby1zdWJkaXIsIGNsZWFuLWluZm8tc3ViZGlyKQoJKGR2aS1zdWJkaXIsIGluc3RhbGwtc3ViZGlyLCBldGFncy1zdWJkaXIsIG1vc3RseWNsZWFuLXN1YmRpcikKCShjbGVhbi1zdWJkaXIsIGRpc3RjbGVhbi1zdWJkaXIsIG1haW50YWluZXItY2xlYW4tc3ViZGlyKToKCVBhc3MgJChGTEFHU19UT19QQVNTKS4KCjIwMDMtMDEtMjcgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGxfdG9fdG9vbGRpcik6IEluc3RlYWQgb2YgJChNVUxUSVNVQkRJUiksIHVzZQoJL2AkJENDIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnlgLgoKMjAwMy0wMS0yNiAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBoYXNodGFiLmMgKGh0YWJfY3JlYXRlX2FsbG9jX2V4KTogTmV3IGZ1bmN0aW9uLgoJKGhhdGFiX3NldF9mdW5jdGlvbnNfZXgpOiBOZXcgZnVuY3Rpb24uCgkoaHRhYl9kZWxldGUsIGh0YWJfZXhwYW5kKTogU3VwcG9ydCBhbHRlcm5hdGUgYWxsb2NhdGlvbiBmdW5jdGlvbnMuCgoyMDAzLTAxLTI0ICBDaHJpc3RvcGhlciBGYXlsb3IgIDxjZ2ZAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogUmVtb3ZlIHNwZWNpYWwgcGV4LWN5Z3dpbiBjb25zaWRlcmF0aW9uLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgkqIHBleC1jeWd3aW4uYzogUmVtb3ZlLgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHBleC1jeWd3aW4uW2NvXSBsaW5lcy4KCjIwMDMtMDEtMjQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIHBleC0qLmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQ2hhbmdlIHBleGVjdXRlLm8gdG8gQHBleGVjdXRlQAoJKENPTkZJR1VSRURfT0ZJTEVTKTogQWRkIHBleC0qLm8uCgkoVEVYSUZJTEVTKTogQWRkIHBleGVjdXRlLnR4aC4KCShwZXhlY3V0ZS5vKTogRGVsZXRlIHJ1bGUuCgkocGV4LWN5Z3dpbi5vLCBwZXgtZGpncHAubywgcGV4LW1wdy5vLCBwZXgtbXNkb3MubywgcGV4LW9zMi5vLAoJcGV4LXVuaXgubywgcGV4LXdpbjMyLm8pOiBOZXcgcnVsZXMuCgkqIGNvbmZpZ3VyZS5pbjogQ2hhbmdlIEFDX0lOSVQgYXJndW1lbnQgdG8geG1hbGxvYy5jLgoJQ29tcHV0ZSBhcHByb3ByaWF0ZSBwZXhlY3V0ZSBpbXBsZW1lbnRhdGlvbiBhbmQgc3Vic3RpdHV0ZSBpdAoJYXMgQHBleGVjdXRlQC4KCgkqIHBleGVjdXRlLmM6IFNwbGl0IHVwIGludG8uLi4KCSogcGV4LWN5Z3dpbi5jLCBwZXgtZGpncHAuYywgcGV4LW1wdy5jLCBwZXgtbXNkb3MuYywgcGV4LW9zMi5jLAoJcGV4LXVuaXguYywgcGV4LXdpbjMyLmMsIHBleC1jb21tb24uaCwgcGV4ZWN1dGUudHhoOiAuLi4gdGhlc2UKCW5ldyBmaWxlcy4KCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoyMDAzLTAxLTIwICBKb3NlZiBabG9tZWsgIDx6bG9tZWtqQHN1c2UuY3o+CgoJKiBoYXNodGFiLmMgKGh0YWJfZXhwYW5kKTogRml4IGFsbG9jYXRpb24gb2YgbmV3IGVudHJpZXMuCgoyMDAzLTAxLTA5ICBDaHJpc3RpYW4gQ29ybmVsc3NlbiAgPGNjb3JuQGNzLnR1LWJlcmxpbi5kZT4KCgkqIE1ha2VmaWxlLmluIChGTEFHU19UT19QQVNTKTogQWxzbyBwYXNzIERFU1RESVIuCgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbF90b19saWJkaXIsIGluc3RhbGxfdG9fdG9vbGRpcik6IEFkZCBhCglta2luc3RhbGxkaXJzIGNvbW1hbmQuCgoyMDAyLTEyLTA0ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogbWFrZS1yZWxhdGl2ZS1wcmVmaXguYyAoSEFWRV9IT1NUX0VYRUNVVEFCTEVfU1VGRklYKToKCURlZmluZSBmb3IgaG9zdHMgd2l0aCBIT1NUX0VYRUNVVEFCTEVfU1VGRklYLgoKMjAwMi0xMS0yNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIG1ha2UtcmVsYXRpdmUtcHJlZml4LmMgKG1ha2VfcmVsYXRpdmVfcHJlZml4KTogRW5zdXJlIHJldHVybgoJc3RyaW5nIGlzIGVtcHR5IGJlZm9yZSB1c2luZyBzdHJjYXQgdG8gY29uc3RydWN0IGl0LgoKMjAwMi0xMS0yMiAgRGFuaWVsIEphY29ib3dpdHogIDxkcm93QG12aXN0YS5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIG1ha2UtcmVsYXRpdmUtcHJlZml4LmMuCgkqIG1ha2UtcmVsYXRpdmUtcHJlZml4LmM6IE5ldyBmaWxlLgoJKiBmdW5jdGlvbnMudGV4aTogUmVidWlsdC4KCjIwMDItMTEtMTYgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogbWQ1LmMgKG1kNV9wcm9jZXNzX2Jsb2NrKTogQXZvaWQgYGZ1bmN0aW9uLWxpa2UgbWFjcm8gIkZ7RyxILEl9IiBtdXN0IGJlCgl1c2VkIHdpdGggYXJndW1lbnRzIGluIHRyYWRpdGlvbmFsIEMnIHdhcm5pbmdzLgoKMjAwMi0xMC0xNiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjb25maWcudGFibGU6IFVzZSBtaC1zMzkwcGljIGZvciBzMzkweCB0b28uCgoyMDAyLTEwLTA2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBsaWJpYmVydHkvY3BsdXMtZGVtLmMgKGFkYV9kZW1hbmdsZSk6IEdldCByaWQgb2YgdW5uZWVkZWQKCXZhcmlhYmxlIGFuZCBvZiBzdHJpY3QtYWxpYXNpbmcgd2FybmluZy4KCShncm93X3ZlY3QpOiBVc2UgY2hhciBhcyBmaXJzdCBwYXJhbWV0ZXIuCgoyMDAyLTA5LTIyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoYWxsKTogRml4IG11bHRpbGliIHBhcmFsbGVsIGJ1aWxkLgoKMjAwMi0wOS0xOSAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpdWx5MS5oaWEubnJjLmNhPgoKCSogY3AtZGVtYW5nbGUuYyAoZGVtYW5nbGluZ19uZXcpOiBDYXN0IDAgdG8gZW51bS4KCShkZW1hbmdsZV9jaGFyKTogQ2FzdCByZXR1cm4gb2Ygc3RyZHVwIHRvIGNoYXIgKi4KCShpc19nbnVfdjNfbWFuZ2xlZF9jdG9yKTogQ2FzdCAwIHRvIGVudW0uCgkoaXNfZ251X3YzX21hbmdsZWRfZHRvcik6IExpa2V3aXNlLgoJKiBjcGx1cy1kZW0uYyAoZ3Jvd192ZWN0KTogQ2FzdCByZXR1cm4gb2YgeHJlYWxsb2MgdG8gdm9pZCAqLgoJKHdvcmtfc3R1ZmZfY29weV90b19mcm9tKTogQ2FzdCByZXR1cm4gb2YgeG1hbGxvYyB0byBjaGFyICoqLgoJKiBmaWJoZWFwLmMgKGZpYm5vZGVfbmV3KTogQ2FzdCByZXR1cm4gb2YgeGNhbGxvYyB0byBmaWJub2RlX3QuCgkqIG1kNS5jIChtZDVfcHJvY2Vzc19ieXRlcyk6IENhc3QgcmVzdWx0cyBiYWNrIHRvIGNvbnN0IHZvaWQgKi4KCShtZDVfcHJvY2Vzc19ibG9jayk6IEFkZCBjYXN0IHRvIGNvbnN0IG1kNV91aW50MzIgKi4KCSogcmVnZXguYyAocmVfY29tcGlsZV9mYXN0bWFwKTogQ2FzdCBlbnVtIHRvIFVDSEFSX1QuCgkqIHNhZmUtY3R5cGUuYyAoTCwgWEwsIFUsIFhVLCBELCBQLCBfLCBDLCBaLCBNLCBWLCBULCBTKTogQWRkIGNhc3QgdG8KCXVuc2lnbmVkIHNob3J0LgoJKiBzcGxheS10cmVlLmMgKHNwbGF5X3RyZWVfeG1hbGxvY19hbGxvY2F0ZSk6IENhc3QgcmV0dXJuIG9mIHhtYWxsb2MKCXRvIHZvaWQgKi4KCSogdmFzcHJpbnRmLmMgKGludF92YXNwcmludGYpOiBDYXN0IHJldHVybiBvZiBtYWxsb2MgdG8gY2hhciAqLgoKMjAwMi0wOS0xOSAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KCgkqIFJFQURNRTogVXBkYXRlIGVtYWlsIGFkZHJlc3NlcyBmb3IgYnVncyBhbmQgcGF0Y2hlcy4KCjIwMDItMDktMTAgIE1pa2UgU3R1bXAgIDxtcnNAYXBwbGUuY29tPgoKCSogc3BsYXktdHJlZS5jIChzcGxheV90cmVlX3N1Y2Nlc3Nvcik6IEZpeCBjb21tZW50cy4KCjIwMDItMDktMTEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcGx1cy1kZW0uYzogQ29kZSB1bmRlciAjaWZkZWYgTUFJTiBtb3ZlZCB0byBnY2MvY3AvY3h4ZmlsdC5jLgoJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IEFkanVzdCBmb3IgdGVzdC1kZW1hbmdsZS4KCSogdGVzdHN1aXRlL3JlZ3Jlc3MtZGVtYW5nbGU6IERlbGV0ZWQuCgkqIHRlc3RzdWl0ZS90ZXN0LWRlbWFuZ2xlLmM6IE5ldyBmaWxlLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IENoYW5nZSBcJCB0byAkIHRocm91Z2hvdXQsIG5vdyB0aGF0Cgl0aGlzIGZpbGUgaXMgbm90IGJlaW5nIHJlYWQgYnkgYSBzaGVsbCBzY3JpcHQuCgoyMDAyLTA5LTA1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHJlZ2V4LmM6IE9ubHkgdXNlICIjcHJhZ21hIGFsbG9jYSIgb24gQUlYIHdoZW4gbm90IHVzaW5nIGdjYy4KCjIwMDItMDgtMDcgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogcmVnZXguYyAocmVfZXJyb3JfbXNnaWQpOiBKdXN0IHVzZSBhIHNpbXBsZSBhcnJheSBvZiBzdHJpbmdzLgoJKHJlX2NvbXBpbGVfcGF0dGVybik6IENvbXBlbnNhdGUuCgkocmVfY29tcCk6IExpa2V3aXNlLgoJKHJlX2NvbXApOiBMaWtld2lzZS4KCShyZWdlcnJvcik6IExpa2V3aXNlLgoKMjAwMi0wNy0yOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogY3BsdXMtZGVtLmMgKFBSRVBFTkRfQkxBTkspOiBSZW1vdmUuCgoyMDAyLTA3LTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX2lkZW50aWZpZXIpOiBTdXBwb3J0IGV4dGVuZGVkIFVuaWNvZGUKCWNoYXJhY3RlcnMuCgoyMDAyLTA3LTA4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV92M193aXRoX2RldGFpbHMpOiBXcmFwIGluCgkhZGVmaW5lZCBJTl9HTElCQ1BQX1YzLgoKMjAwMi0wNy0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX29wZXJhdG9yX25hbWUpOiBBZGQgdHlwZV9hcmcgcGFyYW1ldGVyLgoJU2V0IGl0IGZvciB0aGUgInN0IiBvcGVyYXRvci4KCShkZW1hbmdsZV9leHByZXNzaW9uKTogSGFuZGxlIGV4cHJlc3Npb25zIHdpdGggdHlwZXMgYXMgYXJndW1lbnRzLgoKMjAwMi0wNi0zMCAgRG91Z2xhcyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoT1VUUFVUX09QVElPTixOT19NSU5VU19DX01JTlVTX08pOiBDb25maWd1cmUuCgkqIE1ha2VmaWxlLmluIChPVVRQVVRfT1BUSU9OKTogVXNlLgoKMjAwMi0wNi0yMiAgUGV0ZXIgQnJlaXRlbmxvaG5lciA8cGViQG1wcG11Lm1wZy5kZT4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsX3RvX2xpYmRpcik6IEFkZCAkKERFU1RESVIpLgoJKGluc3RhbGxfdG9fdG9vbGRpcik6IExpa2V3aXNlLgoKMjAwMi0wNi0xNyAgRG91Z2xhcyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIGxiYXNlbmFtZS5jOiBBZGQgMjAwMiB0byBjb3B5cmlnaHQuCgkoSVNfRElSX1NFUEFSQVRPUik6IFJlbW92ZSBWTVMganVuay4KCjIwMDItMDYtMDUgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAcmVkaGF0LmNvbT4KCgkqIGhhc2h0YWIuYyAoaHRhYl9jcmVhdGUpOiBOZXcgc3R1YiBmdW5jdGlvbiBmb3IgYmFja3dhcmQKCWNvbXBhdGliaWxpdHkuCgkoaHRhYl90cnlfY3JlYXRlKTogTGlrZXdpc2UuCgoyMDAyLTA2LTAzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmMgKGh0YWJfY3JlYXRlKTogRGVsZXRlLgoJKGh0YWJfdHJ5X2NyZWF0ZSk6IERlbGV0ZS4KCShodGFiX2NyZWF0ZV9hbGxvYyk6IE5ldy4KCShodGFiX2RlbGV0ZSk6IFN1cHBvcnQgdXNlci1zcGVjaWZpZWQgbWVtb3J5IGFsbG9jYXRpb24uCgkoaHRhYl9leHBhbmQpOiBMaWtld2lzZS4KCjIwMDItMDUtMjIgIFJvbWFuIExlY2h0Y2hpbnNreSAgPHJsQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGNvbmZpZ3VyZS5pbjogRml4IHR5cG8gaW4gdGhlIGNvZGUgY2hlY2tpbmcgZm9yIHN5c19lcnJsaXN0LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMi0wNS0xMyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIGNvbmZpZy50YWJsZTogVXNlIG1oLXg4NnBpYyBhbHNvIGZvciB4ODYtNjQuCgoyMDAyLTA1LTA4ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoT1JJR0lOQUxfTERfRk9SX01VTFRJTElCUyk6IFByZXNlcnZlIExEIGF0CglzY3JpcHQgZW50cnksIGFuZCBzZXQgTEQgdG8gaXQgd2hlbiBjb25maWd1cmluZyBtdWx0aWxpYnMuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCjIwMDItMDUtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjb25maWd1cmUuaW4gKEFDX1RZUEVfUElEX1QpOiBVc2UgaXQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgkqIGdldHJ1bnRpbWUuYzogSW5jbHVkZSA8c3lzL3R5cGVzLmg+LgoJKiB3YWl0cGlkLmM6IExpa2V3aXNlLiAgVXNlIHBpZF90LCBub3QgaW50LCBhcyB0aGUgdHlwZSBvZiAicGlkIi4KCjIwMDItMDQtMDkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmMgKGhpZ2hlcl9wcmltZV9udW1iZXIpOiBVc2UgNyBhcyBtaW5pbXVtLgoJKGZpbmRfZW1wdHlfc2xvdF9mb3JfZXhwYW5kKTogRG9uJ3QgY29tcHV0ZSBoYXNoMiB1bmxlc3MgbmVlZGVkLgoJKGh0YWJfZmluZF9zbG90X3dpdGhfaGFzaCk6IExpa2V3aXNlLgoKMjAwMi0wNC0wMSAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogY3AtZGVtYW5nbGUuYyAoX19jeGFfZGVtYW5nbGUpOiAgQWxzbyBwcm90ZWN0IHdpdGggSU5fR0xJQkNQUF9WMy4KCShpc19nbnVfdjNfbWFuZ2xlZF9jdG9yLCBpc19nbnVfdjNfbWFuZ2xlZF9jdG9yKTogIENvbmRpdGlvbmFsbHkKCW5vdCBjb21waWxlIGlmIElOX0dMSUJDUFBfVjMgZGVmaW5lZC4KCSogZHluLXN0cmluZy5jOiAgQWxzbyBhbGxvdyBJTl9HTElCQ1BQX1YzIHRvIGNoYW5nZSBhbGxvY2F0aW9uIHNjaGVtZS4KCjIwMDItMDMtMzAgIEJyeWNlIE1jS2lubGF5ICA8YnJ5Y2VAd2FpdGFraS5vdGFnby5hYy5uej4KCgkqIGNwLWRlbWFuZ2xlLmMgKGphdmFfZGVtYW5nbGVfdjMpOiBEb24ndCB0cnkgdG8gcmVsZWFzZSAiZGVtYW5nbGVkIgoJaWYgaXQgaXMgTlVMTC4KCjIwMDItMDMtMjcgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogaGV4LmM6IEFkZCBkb2N1bWVudGF0aW9uLgoJKF9oZXhfdmFsdWUpOiBQcm92aWRlIG5vbi1BU0NJSSBlbXB0eSB0YWJsZS4KCShoZXhfaW5pdCk6IEluaXRpYWxpemUgdGhlIG5vbi1BU0NJSSB0YWJsZS4KCSogZnVuY3Rpb25zLnRleGk6IFJlZ2VuZXJhdGUuCgoyMDAyLTAzLTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZHluLXN0cmluZy5jOiBBZGQgbGliZ2NjIGV4Y2VwdGlvbiB0byBjb3B5cmlnaHQgbm90aWNlLgoKMjAwMi0wMy0yNiAgSC5KLiBMdSAgKGhqbEBnbnUub3JnKQoKCSogY29uZmlnLnRhYmxlOiBTdXBwb3J0IC0td2l0aC1idWlsZC1zdWJkaXIuCgkqIGNvbmZpZ3VyZS5pbjogTGlrZXdpc2UuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCjIwMDItMDMtMTggIFN0dWFydCBHcmlmZml0aCAgPFN0dWFydF9HcmlmZml0aEBjcmVkZW5jZS5jb20+CgoJKiBzdHJ0b2QuYyAoc3RydG9kKTogSW5jcmVtZW50IDggY2hhcnMsIG5vdCA3LCB3aGVuIGBpbmZpbml0eScKCXNlZW4uCgoyMDAyLTAzLTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtZGVtYW5nbGUuYzogQWRkIGxpYmdjYyBleGNlcHRpb24gdG8gY3AtZGVtYW5nbGUuYyBjb3B5cmlnaHQKCW5vdGljZS4KCjIwMDItMDMtMTEgIERvdWdsYXMgQiBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIHhhdGV4aXQuYyBbVk1TXTogSW5jbHVkZSBzdGRsaWIuaCBhbmQgdW5peGxpYi5oLgoKMjAwMi0wMy0wNiAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV94bWFsbG9jX2FsbG9jYXRlLAoJc3BsYXlfdHJlZV94bWFsbG9jX2RlYWxsb2NhdGUpOiBVc2UgSyZSLXN0eWxlIGRlZmluaXRpb25zLCBub3QKCXByb3RvdHlwZWQgZGVmaW5pdGlvbnMuICBNYXJrIGBkYXRhJyBhcmd1bWVudHMgYXMgdW51c2VkLgoKMjAwMi0wMy0wNiAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF9hcm1fZXh0X2JpZyk6IERlbGV0ZSBkZWZpbml0aW9uLgoKMjAwMi0wMy0wNCAgUGhpbCBFZHdhcmRzICA8cG1lQGdjYy5nbnUub3JnPgoKCSogY29uZmlndXJlLmluOiAgQWRkIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IG9wdGlvbi4KCSogTWFrZWZpbGUuaW4gKElOU1RBTExFRF9IRUFERVJTKTogIE5ldyB2YXJpYWJsZS4KCShpbnN0YWxsX3RvX2xpYmRpcik6ICBQb3NzaWJseSBhbHNvIGNvcHkgaGVhZGVycy4KCSogY29uZmlndXJlOiAgUmVnZW5lcmF0ZWQuCgoyMDAyLTAzLTA0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiB4bWFsbG9jLmMgKHhtYWxsb2NfZmFpbCk6IENsYXJpZnkgZXJyb3IgbWVzc2FnZSBmdXJ0aGVyLgoKMjAwMi0wMy0wMyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogeG1hbGxvYy5jICh4bWFsbG9jX2ZhaWwpOiBDbGFyaWZ5IGVycm9yIG1lc3NhZ2UuCgoyMDAyLTAyLTIyICBKaW0gQmxhbmR5ICA8amltYkByZWRoYXQuY29tPgoKCSogc3BsYXktdHJlZS5jIChzcGxheV90cmVlX3htYWxsb2NfYWxsb2NhdGUsCglzcGxheV90cmVlX3htYWxsb2NfZGVhbGxvY2F0ZSk6IE5ldyBmdW5jdGlvbnMuCgkoc3BsYXlfdHJlZV9uZXcpOiBDYWxsIHNwbGF5X3RyZWVfbmV3X3dpdGhfYWxsb2NhdG9yLCBwYXNzaW5nIHRoZQoJYWJvdmUgZnVuY3Rpb25zIGFuZCBhIGR1bW15IGRhdGEgcG9pbnRlci4KCShzcGxheV90cmVlX25ld193aXRoX2FsbG9jYXRvcik6IE5ldyBmdW5jdGlvbi4KCShzcGxheV90cmVlX2RlbGV0ZV9oZWxwZXIsIHNwbGF5X3RyZWVfZGVsZXRlLCBzcGxheV90cmVlX2luc2VydCwKCXNwbGF5X3RyZWVfcmVtb3ZlKTogVXNlIHRoZSBzcGxheSB0cmVlJ3MgYWxsb2NhdGlvbiBhbmQKCWRlYWxsb2NhdGlvbiBmdW5jdGlvbnMuCgoyMDAyLTAyLTE5ICBTY290dCBTbnlkZXIgIDxzbnlkZXJAZm5hbC5nb3Y+CgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCB0ZXN0IGNhc2UgZm9yIGluZmluaXRlIGxvb3AgaW4KCWRlbWFuZ2xlci4KCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2FybV9ocF90ZW1wbGF0ZSk6IFN0b3AgdHJ5aW5nIHRvIGRlbWFuZ2xlCglpZiBkb190eXBlKCkgZG9lc24ndCBtYWtlIGFueSBwcm9ncmVzcyAtLS0gcHJldmVudHMgYW4gaW5maW5pdGUKCWxvb3AuCgoyMDAyLTAyLTE4ICBDYXJsbyBXb29kICA8Y2FybG9AZ251Lm9yZz4KCglQUiBjKysvNTM5MAoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfaW50ZWdyYWxfdmFsdWUpOiBBY2NlcHQgbXVsdGktZGlnaXQKCW51bWJlcnMgdGhhdCBkbyBub3Qgc3RhcnQgd2l0aCBhbiB1bmRlcnNjb3JlOyBUaGlzIGlzIG5lZWRlZAoJZm9yIGludGVnZXIgdGVtcGxhdGUgcGFyYW1ldGVycy4gVGhpcyBkb2Vzbid0IGJyZWFrIGFueXRoaW5nCgliZWNhdXNlIG11bHRpLWRpZ2l0IG51bWJlcnMgYXJlIG5ldmVyIGZvbGxvd2VkIGJ5IGEgZGlnaXQuCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQ29ycmVjdGVkIGFsbCBtYW5nbGVkIHRlc3QKCWNhc2VzIHdpdGggbXVsdGktZGlnaXQgdGVtcGxhdGUgcGFyYW1ldGVyczogZysrIDIuOTUueCBkb2VzCglub3QgZ2VuZXJhdGUgdW5kZXJzY29yZXMgYXJvdW5kIHRoZXNlIHBhcmFtZXRlcnMuCgoyMDAyLTAyLTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNwbHVzLWRlbS5jIChmbGFncyk6IEFkZCBETUdMX1ZFUkJPU0UKCShjcGx1c19kZW1hbmdsZV92M19wKTogUmVtb3ZlLgoJKGRlbWFuZ2xlX2l0KTogQWRkIERNR0xfVFlQRVMgdG8gcGFzc2VkIGZsYWdzLgoJKiBjcC1kZW1hbmdsZS5jIChjcGx1c19kZW1hbmdsZV92M19hbGwpOiBSZW1vdmUuCgkoY3BsdXNfZGVtYW5nbGVfdjNfdHlwZSk6IFJlbW92ZS4KCShjcGx1c19kZW1hbmdsZV92Myk6IEFkZCBvcHRpb25zIHBhcm0uCgoyMDAyLTAyLTAyICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBjcC1kZW1hbmdsZS5jIChjcF9kZW1hbmdsZV90eXBlKTogRG8gbm90IHByb3RlY3Qgd2l0aAoJSU5fTElCR0NDMi4KCShjcGx1c19kZW1hbmdsZV92M19hbGwpOiBOZXcuCgkoY3BsdXNfZGVtYW5nbGVfdjMpOiBDYWxsIGNwbHVzX2RlbWFuZ2xlX3YzX2FsbC4KCShjcGx1c19kZW1hbmdsZV92M190eXBlKTogQ2FsbCBjcGx1c19kZW1hbmdsZV92M19hbGwuCgoJKiBjcGx1cy1kZW0uYyAoY3BsdXNfZGVtYW5nbGVfdjNfcCk6IE5ldyBmdW5jdGlvbiBwb2ludGVyLgoJSW5pdGlhbGl6ZWQgdG8gY3BsdXNfZGVtYW5nbGVfdjMuCgkoY3BsdXNfZGVtYW5nbGVfd2l0aF9zdHlsZSk6IENhbGwgY3BsdXNfZGVtYW5nbGVfdjNfcCBpbnN0ZWFkCglvZiBjcGx1c19kZW1hbmdsZV92My4KCShtYWluKTogU2V0IGNwbHVzX2RlbWFuZ2xlX3YzX3AgdG8gY3BsdXNfZGVtYW5nbGVfdjNfdHlwZSBmb3IKCWNvbW1hbmQgbGluZSBzeW1ib2wuCgoJKiB0ZXN0c3VpdGUvcmVncmVzcy1kZW1hbmdsZTogUGFzcyB0aGUgbWFuZ2xlZCBuYW1lIGF0IHRoZQoJY29tbWFuZCBsaW5lLgoKMjAwMi0wMi0wMSAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogY3AtZGVtYW5nbGUuYyAoY3BfZGVtYW5nbGVfdHlwZSk6IENhbGwgZGVtYW5nbGluZ19uZXcgd2l0aAoJRE1HTF9HTlVfVjMuCgoyMDAyLTAxLTMxICBQaGlsIEVkd2FyZHMgIDxwbWVAZ2NjLmdudS5vcmc+CgoJKiBjcC1kZW1hbmdsZS5jOiAgUmV2ZXJ0IHllc3RlcmRheSdzIGNoYW5nZS4KCjIwMDItMDEtMzEgIEFkYW0gTWVnYWN6ICA8YWRhbUB4d3Qub3JnPgoKCSogZ2NjL2xpYmliZXJ0eS9jb25maWd1cmUuaW46IFRyZWF0IG1pbmd3IHRoZSBzYW1lIGFzIGN5d2luCgl3cnQgSEFWRV9TWVNfRVJSTElTVC4KCjIwMDItMDEtMzAgIFBoaWwgRWR3YXJkcyAgPHBtZUBnY2MuZ251Lm9yZz4KCgkqIGNwLWRlbWFuZ2xlLmMgKGNwX2RlbWFuZ2xlX3R5cGUpOiAgRG8gbm90IHByb3RlY3Qgd2l0aCBJTl9MSUJHQ0MyLgoJKGNwbHVzX2RlbWFuZ2xlX3YzKTogIE1pbWljIF9fY3hhX2RlbWFuZ2xlIGFuZCBmYWxsIGJhY2sgb24KCWNwX2RlbWFuZ2xlX3R5cGUuCgkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogIE5ldyBnbnUtdjMgdGVzdC4KCjIwMDItMDEtMjIgIE1vbWNoaWwgVmVsaWtvdiAgPHZlbGNvQGZhZGF0YS5iZz4KCgkqIGNvbmZpZ3VyZS5pbiAodmFyaWFibGUgZGV0ZWN0aW9uKTogVXNlIGFycmF5cyBvZiB1bnNwZWNpZmllZAoJc2l6ZSBpbnN0ZWFkIG9mIHBsYWluIGludGVnZXJzLgoKMjAwMi0wMS0xOCAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoVEVTVExJQik6IE5ldy4gIFRoaXMgbGlicmFyeSBpcyBmb3IgZnV0dXJlCgl0ZXN0c3VpdGVzLgoJKENGSUxFUywgUkVRVUlSRURfT0ZJTEVTLCBDT05GSUdVUkVEX09GSUxFUyk6IFJlLWFscGhhYmV0aXplLAoJYnJlYWsgZG93biBieSBsZXR0ZXIuCgkoUkVRVUlSRURfT0ZJTEVTKTogTGlzdCBsb25nLXRvLWNvbXBpbGUgZmlsZXMgZmlyc3QuCgkobWFpbnQtZGVwcyk6IE5ldywgdGFyZ2V0IGZvciB1cGRhdGluZyBkZXBlbmRlbmNpZXMuCgkoZGVwZW5kZW5jaWVzKTogVXBkYXRlLgoJKiBtYWludC10b29sOiBBZGQgZGVwZW5kZW5jeS1nZW5lcmF0aW5nIG9wdGlvbi4KCSogY29uZmlndXJlLmluOiBDaGVjayBmb3IgX2RvcHJudCBldmVuIGlmIHdlJ3JlIG5vdCBwcm92aWRpbmcgaXQuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCgkqIF9kb3BybnQuYzogTW9kaWZpY2F0aW9ucyB0byBhbGxvdyBjb21waWxpbmcgb24gYW55IHBsYXRmb3JtLgoJKiBjb3B5c2lnbi5jOiBMaWtld2lzZS4KCSogcHV0ZW52LmM6IExpa2V3aXNlLgoJKiBzZXRlbnYuYzogTGlrZXdpc2UuCgkqIHZzcHJpbnRmLmM6IExpa2V3aXNlLgoKMjAwMi0wMS0xNSAgRG91Z2xhcyBCIFJ1cHAgIDxydXBwQGduYXQuY29tPgoKCSogbWtzdGVtcHMuYyAobWtzdGVtcHMpOiBPbiBWTVMsIG9wZW4gdGVtcCBmaWxlIHdpdGggb3B0aW9uCgl0aGF0IGNhdXNlcyBpdCB0byBiZSBkZWxldGVkIHdoZW4gY2xvc2VkLgoKMjAwMi0wMS0wMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3AtZGVtYW5nbGUuYyAobG9uZ19vcHRpb25zKTogQ29uc3QtaWZ5LgoJKiBjcGx1cy1kZW0uYyAobG9uZ19vcHRpb25zKTogTGlrZXdpc2UuCgoJKiBjcGx1cy1kZW0uYyAobXlzdHJzdHIpOiBEZWxldGUuICBBbGwgY2FsbGVycyBjaGFuZ2VkIHRvIHVzZQoJc3Ryc3RyIGluc3RlYWQuCgoyMDAxLTEyLTMxICBJcmEgUnViZW4JPGlyYUBhcHBsZS5jb20+CgoJKiBhY2xvY2FsLm00IChsaWJpYmVydHlfQUNfRlVOQ19TVFJOQ01QKTogVXNlIGFub24gbW1hcCBhcyAybmQgdHJ5LgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKMjAwMS0xMi0yNCAgRG91Z2xhcyBCLiBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAodWludHB0cl90KTogVXNlIEFDX0NIRUNLX1RZUEUuCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZWQuCgoyMDAxLTEyLTEyICBDcmFpZyBSb2RyaWd1ZXMgIDxyb2RyaWdjQGdjYy5nbnUub3JnPgoKCVBSIG90aGVyLzI3MTkKCSogY3BsdXMtZGVtLmMgKGNvbnN1bWVfY291bnQpOiBUcmVhdCBuZWdhdGl2ZSBjb3VudCBhcyBhbiBlcnJvci4KCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGRlZCB0ZXN0Y2FzZS4KClR1ZSBEZWMgMTEgMDc6MDg6NTcgMjAwMSAgRG91Z2xhcyBCLiBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogSGFyZGNvZGUgdGhhdCB2Zm9yayB3b3JrcyBvbiBWTVMgaG9zdC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlZC4KCjIwMDEtMTItMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjcGx1cy1kZW0uYyAobGliaWJlcnR5X2RlbWFuZ2xlcnMpOiBBZGQgbm9fZGVtYW5nbGluZyBjYXNlLgoJKGNwbHVzX2RlbWFuZ2xlKTogU3VwcG9ydCBub19kZW1hbmdsaW5nLgoKMjAwMS0xMS0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIF9kb3BybnQuYzogTW92ZWQgaGVyZSBmcm9tIGdjYy9kb3ByaW50LmMuICBBZGp1c3QgdG8gYnVpbGQKCWluIGxpYmliZXJ0eSBjb250ZXh0LiAgRml4IHR5cG8gaW4gbGVhZGluZyBjb21tZW50LgoJKiBjb25maWd1cmUuaW46IEZpeCB2YXJpb3VzIEFDX0RFRklORXMgc28gYXV0b2hlYWRlciB3b3Jrcy4KCUlmIGFueSBvZiB2cHJpbnRmLCB2c3ByaW50ZiwgdmZwcmludGYgaXMgbWlzc2luZyBmcm9tIGxpYmMsCgl0aGVuIEFDX1JFUExBQ0VfRlVOQ1MoX2RvcHJudCkuCgoyMDAxLTExLTI2ICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCSAgICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRyb3dAbXZpc3RhLmNvbT4KCgkqIE1ha2VmaWxlLmluIChzdGFtcC1oKTogRGVwZW5kIG9uIE1ha2VmaWxlIGZvciBwcm9wZXIKCXNlcmlhbGl6YXRpb24uCgkoKi1zdWJkaXIpOiBEZXBlbmQgb24gY29uZmlnLmggZm9yIHByb3BlciBzZXJpYWxpemF0aW9uLgoKMjAwMS0xMS0yNiAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciBhbGxvY2EuaCAoZm9yIHJlZ2V4LmMgYW5kIHB1dGVudi5jKS4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBjb25maWcuaDogQWRkIEhBVkVfQUxMT0NBX0guCgoyMDAxLTExLTE2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiByZWdleC5jOiBDaGVjayBkZWZpbmVkKF9fU1REQ19fKSB8fCBkZWZpbmVkKEFMTU9TVF9TVERDKSB8fAoJZGVmaW5lZChIQVZFX1NUUklOR0laRSkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgSVNPIENQUCB0b2tlbiBwYXN0aW5nCglpcyBhdmFpbGFibGUuCgpUaHUgTm92IDE1IDExOjA2OjI1IDIwMDEgIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy5pbiAoSEFWRV9VSU5UUFRSX1QpOiBQcm92aWRlIGF1dG9jb25mIHN0dWIuCgkqIGNvbmZpZ3VyZS5pbiAoSEFWRV9VSU5UUFRSX1QpOiBUZXN0IGZvciBzeXN0ZW0gZGVmaW5pbmcKCXVpbnRwdHJfdCBhbmQgZGVmaW5lIEhBVkVfVUlOVFBUUl9UIGFwcHJvcHJpYXRlbHkuCgkqIHJlZ2V4LmMgKHVpbnRwdHJfdCk6IERvIG5vdCBwcm92aWRlIGEgZGVmaW5pdGlvbiBpZiB0aGUKCXN5c3RlbSBwcm92aWRlZCBvbmUuCgoJKiByZWdleC5jIChQUkVGSVgpOiBQcm92aWRlIGFuIGFsdGVybmF0ZSBkZWZpbml0aW9uIGZvcgoJbm9uLUFOU0kvSVNPIGNvbXBpbGVycy4KCShBUkdfUFJFRklYKTogTGlrZXdpc2UuCgoyMDAxLTExLTEyICBKaW0gTWV5ZXJpbmcgIDxtZXllcmluZ0BsdWNlbnQuY29tPgoKCSogb2JzdGFjay5jIChfKTogSG9ub3IgdGhlIHNldHRpbmcgb2YgRU5BQkxFX05MUy4gIE90aGVyd2lzZSwKCXRoaXMgY29kZSB3b3VsZCBlbmQgdXAgY2FsbGluZyBnZXR0ZXh0IGV2ZW4gaW4gcGFja2FnZXMgYnVpbHQKCXdpdGggLS1kaXNhYmxlLW5scy4KCSogZ2V0b3B0LmMgKF8pOiBMaWtld2lzZS4KCSogcmVnZXguYyAoXyk6IExpa2V3aXNlLgoKMjAwMS0xMS0wMyAgQWxhbiBNb2RyYSAgPGFtb2RyYUBiaWdwb25kLm5ldC5hdT4KCgkqIGNvbmZpZ3VyZS5pbjogQ29wZSB3aXRoIG1pc3NpbmcgbWFrZWluZm8uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMTAtMjIgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGhleC5jIChoZXhfaW5pdCk6IFByb3ZpZGUgZW1wdHkgc3R1Yi4KCgkqIGhleC5jIChoZXhfaW5pdCk6IERlbGV0ZS4KCShfaGV4X3ZhbHVlKTogQ29uc3QtaWZ5IGFuZCBpbml0aWFsaXplIGF0IGNvbXBpbGUtdGltZS4KCjIwMDEtMTAtMTkgIEguSi4gTHUgPGhqbEBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKCQoVEFSR0VUTElCKSk6IEFsc28gZ2VuZXJhdGUgcGljLyQoVEFSR0VUTElCKSBpZgoJbmVjZXNzYXJ5LgoKMjAwMS0xMC0xNyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBhcmd2LmMsIGFzcHJpbnRmLmMsIGNob29zZS10ZW1wLmMsIGNvbmNhdC5jLCBjcGx1cy1kZW0uYywKCWZmcy5jLCBmbm1hdGNoLnR4aCwgZ2V0cnVudGltZS5jLCBtYWtlLXRlbXAtZmlsZS5jLAoJbWtzdGVtcHMuYywgcGV4ZWN1dGUuYywgcmFuZG9tLmMsIHN0cnNpZ25hbC5jLCB2YXNwcmludGYuYzoKCUltcHJvdmUgbWFudWFsIGZvcm1hdHRpbmcuCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwMS0xMC0xNSAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoVEVYSUZJTEVTKTogQWRkIGZubWF0Y2gudHhoLgoJKG1haW50LXVuZG9jKTogTmV3LgoJbWFpbnQtdG9vbDogQWRkICJ1bmRvYyIgdG9vbC4KCSogYWxsb2NhLmMsIGFyZ3YuYywgYXNwcmludGYuYywgY2hvb3NlLXRlbXAuYywgY29uY2F0LmMsCglmZG1hdGNoLmMsIGZmcy5jLCBnZXRydW50aW1lLmMsIGluc3F1ZS5jLCBsYmFzZW5hbWUuYywKCW1ha2UtdGVtcC1maWxlLmMsIG1rc3RlbXBzLmMsIHBleGVjdXRlLmMsIHJhbmRvbS5jLCBzcGFjZXMuYywKCXN0cmVycm9yLnMsIHN0cnNpZ25hbC5jLCBzdHJ0b2wuYywgdmFzcHJpbnRmLmM6IEFkZCBvciB1cGRhdGUKCWRvY3VtZW50YXRpb24uCgkqIGZubWF0Y2gudHhoOiBOZXcuCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwMS0xMC0xMCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogYmNtcC5jLCBzZXRlbnYuYzogVXNlICJub256ZXJvIiBpbnN0ZWFkIG9mICJub24temVybyIuCgkqIHN0cnRvZC5jOiBVc2UgIklTTyBDIiBpbnN0ZWFkIG9mICJBTlNJIEMiLgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDEtMTAtMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGFsbG9jYS5jLCBjbG9jay5jLCBnZXRjd2QuYywgZ2V0cGFnZXNpemUuYywgZ2V0cHdkLmMsIGluZGV4LmMsCglsaWJpYmVydHkudGV4aSwgbWVtY2hyLmMsIHB1dGVudi5jLCByaW5kZXguYywgc3RyY2hyLmMsIHN0cmR1cC5jLAoJc3RyZXJyb3IuYywgc3RycmNoci5jLCBzdHJzdHIuYywgc3RydG9kLmMsIHRtcG5hbS5jLCB2Zm9yay5jLAoJeGF0ZXhpdC5jLCB4bWFsbG9jLmMsIHhzdHJlcnJvci5jOiBJbXByb3ZlIG1hbnVhbCBmb3JtYXR0aW5nLiAgRml4CglzcGVsbGluZy4gIEdpdmUgbmFtZXMgdG8gZnVuY3Rpb24gYXJndW1lbnRzIGluIGRvY3VtZW50YXRpb24uICBVc2UKCSh2b2lkKSBwcm90b3R5cGVzIGluIGRvY3VtZW50YXRpb24uCgkqIGZ1bmN0aW9ucy50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwMS0xMC0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYXJndi5jIChidWlsZGFyZ3YsIHRlc3RzLCBtYWluKTogQ29uc3QtaWZ5LgoJKiBjcC1kZW1hbmdsZS5jIChvcGVyYXRvcl9jb2RlKTogTGlrZXdpc2UuCgkqIGNwbHVzLWRlbS5jIChvcHRhYmxlLCBsaWJpYmVydHlfZGVtYW5nbGVycywKCWNwbHVzX2RlbWFuZ2xlX3NldF9zdHlsZSwgY3BsdXNfZGVtYW5nbGVfbmFtZV90b19zdHlsZSwKCXByaW50X2RlbWFuZ2xlcl9saXN0KTogTGlrZXdpc2UuCgkqIGhhc2h0YWIuYyAoaGlnaGVyX3ByaW1lX251bWJlcik6IExpa2V3aXNlLgoJKiBzdHJjYXNlY21wLmMgKGNoYXJtYXApOiBMaWtld2lzZS4KCSogc3RyZXJyb3IuYyAoZXJyb3JfaW5mbywgc3RyZXJyb3IsIG1haW4pOiBMaWtld2lzZS4KCSogc3RybmNhc2VjbXAuYyAoY2hhcm1hcCk6IExpa2V3aXNlLgoJKiBzdHJzaWduYWwuYyAoc2lnbmFsX2luZm8pOiBMaWtld2lzZS4KCjIwMDEtMDktMjkgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0wOS0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uY2F0LmM6IEluY2x1ZGUgc3RkbGliLmguCgoyMDAxLTA5LTI3ICBFbGkgWmFyZXRza2lpICA8ZWxpekBpcy5lbHRhLmNvLmlsPgoKCSogbGliaWJlcnR5LnRleGk6IChUb3AgbGV2ZWwpOiBBZGQgc3luY29kZWluZGV4IHBnLiAgQWRkCglAZGlyY2F0ZWdvcnkgYW5kIEBkaXJlbnRyeSBkaXJlY3RpdmVzLiAgQWRkIEBmaW5hbG91dC4KCShtYW55IG5vZGVzKTogTG9zZSB0aGUgbmV4dCxwcmV2LHVwIHBvaW50ZXJzIG9uIHRoZSBAbmlkZSBsaW5lLgoJKFVzaW5nLCBTdXBwbGVtZW50YWwgRnVuY3Rpb25zLCBSZXBsYWNlbWVudCBGdW5jdGlvbnMpOiBGaXgKCW1hcmt1cC4KCShGdW5jdGlvbnMpOiBNb3ZlIGFyb3VuZCwgdG8gYWxsb3cgbWFrZWluZm8gdG8gYnVpbGQgdGhlIG1hbnVhbAoJd2l0aG91dCBuZXh0LHByZXYsdXAgcG9pbnRlcnMgaW4gdGh5ZSBub2RlIGxpbmVzLgoJKExpY2Vuc2VzKTogRml4IHR5cG9zLgoKCSogaW5kZXguYywgcmluZGV4LmMsIHN0cmNoci5jLCBzdHJlcnJvci5jLCBzdHJyY2hyLmMsIHN0cnN0ci5jLAoJc3RydG9sLmMsIHhhdGV4aXQuYywgeGV4aXQuYywgeG1hbGxvYy5jOiBGaXggc3BlbGxpbmcgYW5kIG1hcmt1cC4KCSogZnVuY3Rpb25zLnRleGk6IFJlZ2VuZXJhdGUuCgoJKiBjb3B5aW5nLWxpYi50ZXhpOiBMb3NlIHRoZSBuZXh0LHByZXYsdXAgcG9pbnRlcnMgb24gdGhlIEBub2RlCglsaW5lLgoKMjAwMS0wOS0yNyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBjb25maWd1cmUuaW46IERvbid0IHVzZSBpbi10cmVlIHRleGluZm8sIGJlY2F1c2UgbGliaWJlcnR5IG11c3QKCWJlIGJ1aWx0IGJlZm9yZSBpdC4gIENoZWNrIGZvciBtYWtlaW5mbyB2ZXJzaW9uIDQgb3IgaGlnaGVyLgoJKiBmdW5jdGlvbnMudGV4aTogUmVnZW5lcmF0ZS4KCjIwMDEtMDktMjAgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoJICAgIFBoaWwgRWR3YXJkcyAgPHBlZHdhcmRzQGRpc2FzdGVyLmphai5jb20+CgoJKiBjb25maWd1cmUuaW4gKE1BS0VJTkZPLCBQRVJMKTogRGV0ZWN0IHRoZXNlLgoJKC0tZW5hYmxlLW1haW50YWluZXItbW9kZSk6IEFkZC4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbiAoTUFLRUlORk8sIFBFUkwpOiBEZWZpbmUuCgkobGliaWJlcnR5LmluZm8sIGxpYmliZXJ0eS5kdmksIGxpYmliZXJ0eS5odG1sKTogTmV3LgoJKENGSUxFUyk6IEFkZCBic2VhcmNoLmMuCgkoQ09ORklHVVJFRF9PRklMRVMpOiBOZXcsIGxpc3Qgb2Ygb2JqZWN0cyBjb25maWd1cmUgbWlnaHQgYWRkLgoJKG1haW50LW1pc3NpbmcsIG1haW50LWJ1aWxkYWxsKTogTmV3LCBmb3IgbWFpbnRhaW5lcnMgb25seS4KCShjbGVhbiwgbW9zdGx5Y2xlYW4pOiBBZGQgaW5mby9kdmkvaHRtbCBmaWxlcy4KCSogbGliaWJlcnR5LnRleGksIGNvcHlpbmctbGliLnRleGksIG9ic3RhY2tzLnRleGksIGZ1bmN0aW9ucy50ZXhpOiBOZXcuCgkqIGdhdGhlci1kb2NzOiBOZXcsIGZvciBtYWludGFpbmVycy4KCSogbWFpbnQtdG9vbDogTmV3LCBmb3IgbWFpbnRhaW5lcnMuCgkqIGFsbG9jYS5jLCBhdGV4aXQuYywgYmFzZW5hbWUuYywgYmNtcC5jLCBiY29weS5jLCBic2VhcmNoLmMsCgliemVyby5jLCBjYWxsb2MuYywgY2xvY2suYywgY29uZmlndXJlLmluLCBjb25maWd1cmUsIGdldGN3ZC5jLAoJZ2V0cGFnZXNpemUuYywgZ2V0cHdkLmMsIGluZGV4LmMsIG1lbWNoci5jLCBtZW1jbXAuYywgbWVtY3B5LmMsCgltZW1tb3ZlLmMsIG1lbXNldC5jLCBwdXRlbnYuYywgcmVuYW1lLmMsIHJpbmRleC5jLCBzZXRlbnYuYywKCXNpZ3NldG1hc2suYywgc3RyY2FzZWNtcC5jLCBzdHJjaHIuYywgc3RyZHVwLmMsIHN0cmVycm9yLmMsCglzdHJuY2FzZWNtcC5jLCBzdHJuY21wLmMsIHN0cnJjaHIuYywgc3Ryc3RyLmMsIHN0cnRvZC5jLCBzdHJ0b2wuYywKCXRtcG5hbS5jLCB2Zm9yay5jLCB2cHJpbnRmLmMsIHdhaXRwaWQuYywgeGF0ZXhpdC5jLCB4ZXhpdC5jLAoJeG1hbGxvYy5jLCB4bWVtZHVwLmMsIHhzdHJkdXAuYywgeHN0cmVycm9yLmM6IEFkZCBvciB1cGRhdGUKCWRvY3VtZW50YXRpb24uCgoyMDAxLTA5LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25jYXQuYyAocmVjb25jYXQpOiBGaXggZm9yIHRyYWRpdGlvbmFsIEMuCgoyMDAxLTA5LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25jYXQuYyAocmVjb25jYXQpOiBOZXcgZnVuY3Rpb24uCgoyMDAxLTA5LTE3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjb25jYXQuYyAodmNvbmNhdF9sZW5ndGgsIHZjb25jYXRfY29weSwgY29uY2F0X2xlbmd0aCwKCWNvbmNhdF9jb3B5LCBjb25jYXRfY29weTIpOiBOZXcgZnVuY3Rpb25zLgoJKGNvbmNhdCk6IFVzZSB2Y29uY2F0X2xlbmd0aC92Y29uY2F0X2NvcHkuCgoJKiBhbGxvY2EuYyAobGliaWJlcnR5X29wdHIsIGxpYmliZXJ0eV9ucHRyLCBsaWJpYmVydHlfbGVuKToKCURlZmluZS4KCjIwMDEtMDktMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFzcHJpbnRmLmM6IERvbid0IGRlZmluZSBVU0VfU1REQVJHLiAgVXNlIFZQQVJBTVMsIFZBX09QRU4sCglWQV9GSVhFREFSRyAmIFZBX0NMT1NFLgoKCSogdmFzcHJpbnRmLmM6IENoZWNrIEhBVkVfU1RSSU5HX0ggd2hlbiBpbmNsdWRpbmcgc3RyaW5nLmguCgkoY2hlY2tpdCk6IERlbGV0ZSByZWR1bmRhbnQgcHJvdG90eXBlLiAgQWRkIEFUVFJJQlVURV9QUklOVEZfMS4KCVVzZSBWQV9PUEVOLCBWQV9GSVhFREFSRyAmIFZBX0NMT1NFLiAgRnJlZSBhbGxvY2F0ZWQgc3RyaW5nLgoKMjAwMS0wOC0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uY2F0LmMgKGNvbmNhdCk6IFVzZSBWUEFSQU1TLCBWQV9PUEVOLCBWQV9GSVhFREFSRyAmIFZBX0NMT1NFLgoKMjAwMS0wOC0yMyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiByZWdleC5jICh0cnVuY2F0ZV93Y2hhcik6IFVzZSB3Y3J0b21iIG5vdCB3Y3RvbWIuCgoyMDAxLTA4LTIzICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAcmVkaGF0LmNvbT4KCgkqIHBvc2l4L3JlZ2V4LmMgW19MSUJDXSAoY29udmVydF9tYnNfdG9fd2NzKTogVXNlIF9fbWJydG93YwoJaW5zdGVhZCBvZiBtYnJ0b3djLgoJW19MSUJDXTogVXNlIF9faXN3Y3R5cGUgaW5zdGVhZCBvZiBpc3djdHlwZSwgX193Y3NsZW4gaW5zdGVhZCBvZgoJd2NzbGVuLCBhbmQgX193Y3Njb2xsIGluc3RlYWQgb2Ygd2NzY29sbC4KCjIwMDEtMDgtMjIgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY2FybmVnaWVtZWxsb24uZWR1PgoKCSogZmliaGVhcC5jIChmaWJoZWFwX2luaXQsIGZpYm5vZGVfaW5pdCk6IFJlbW92ZS4KCShmaWJoZWFwX25ldywgZmlibm9kZV9uZXcpOiBVc2UgeGNhbGxvYyB0byBhbGxvY2F0ZSBhbmQKCWluaXRpYWxpemUgbWVtb3J5LgoJKGZpYmhlYXBfaW5zZXJ0KTogUmVtb3ZlIGNoZWNrIGZvciBub2RlIGFsbG9jYXRpb24gZmFpbHVyZS4KCjIwMDEtMDgtMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZmliaGVhcC5vKTogRGVwZW5kIG9uIGNvbmZpZy5oLgoJKiBmaWJoZWFwLmM6IFRpZHkgZm9ybWF0dGluZy4gIFVzZSBjb25maWcuaC5gIFJlYXJyYW5nZSBzb21lCglmdW5jdGlvbnMgZm9yIGlubGluaW5nLgoKVHVlIEF1ZyAyMSAxMjozNTowNCAyMDAxICBDaHJpc3RvcGhlciBGYXlsb3IgPGNnZkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBOZWVkIHRvIHNldCBIQVZFX1NZU19FUlJMSVNUIGFuZCBIQVZFX1NZU19ORVJSIHdoZW5ldmVyCglob3N0aW5nIG9uIGN5Z3dpbi4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoKMjAwMS0wOC0yMCAgQW5kcmV3IENhZ25leSAgPGFjMTMxMzEzQHJlZGhhdC5jb20+CgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF9tODgxMTBfZXh0KTogUmVtb3ZlICNpZmRlZgoJSEFSUklTX0ZMT0FUX0ZPUk1BVC4KCShmbG9hdGZvcm1hdF9pYTY0X3NwaWxsX2xpdHRsZSwgZmxvYXRmb3JtYXRfaWE2NF9xdWFkX2xpdHRsZSkKCShmbG9hdGZvcm1hdF9pYTY0X3NwaWxsX2JpZywgZmxvYXRmb3JtYXRfaWE2NF9xdWFkX2JpZykKCShmbG9hdGZvcm1hdF9hcm1fZXh0X2JpZywgZmxvYXRmb3JtYXRfYXJtX2V4dF9saXR0bGVieXRlX2JpZ3dvcmQpCgkoZmxvYXRmb3JtYXRfbTg4MTEwX2hhcnJpc19leHQpOiBOZXcgZmxvYXQgZm9ybWF0cy4KCjIwMDEtMDgtMjAgIERhbmllbCBCZXJsaW4gIDxkYW5AY2dzb2Z0d2FyZS5jb20+CgoJKiBmaWJoZWFwLmM6IE5ldyBmaWxlLiBGaWJvbmFjY2kgaGVhcC4KCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgZmliaGVhcC5jLgoJKFJFUVVJUkVEX09GSUxFUyk6IEFkZCBmaWJoZWFwLm8uCgkoZmliaGVhcC5vKTogQWRkIGRlcGVuZGVuY2llcyBmb3IgZmliaGVhcC5vLgoKMjAwMS0wOC0xNyAgQ2hyaXN0b3BoZXIgRmF5bG9yIDxjZ2ZAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogQWx3YXlzIHNldCBIQVZFX1NZU19FUlJMSVNUIHdoZW4gdGFyZ2V0dGluZyBjeWd3aW4uCgkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KCjIwMDEtMDgtMTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBoYXNodGFiLmMgKGh0YWJfaGFzaF9zdHJpbmcpOiBOZXcuCgoyMDAxLTA4LTEzICBBbmRyZXcgQ2FnbmV5ICA8YWMxMzEzMTNAcmVkaGF0LmNvbT4KCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X2llZWVfZG91YmxlX2xpdHRsZWJ5dGVfYmlnd29yZCk6IEZpeAoJbmFtZS4KCjIwMDEtMDgtMTIgIElzYW11IEhhc2VnYXdhICA8aXNhbXVAeWFtYXRvLmlibS5jb20+CgoJKiByZWdleC5jICh3Y3NfcmVnZXhfY29tcGlsZSk6IFVzZSBhcHByb3ByaWF0ZSBzdHJpbmcKCXRvIGNvbXBhcmUgd2l0aCBjb2xsYXRpbmcgZWxlbWVudC4KCUZpeCB0aGUgcGFkZGluZyBmb3IgdGhlIGFsaWdubWVudC4KCjIwMDEtMDgtMTAgIEFuZHJldyBDYWduZXkgIDxhYzEzMTMxM0ByZWRoYXQuY29tPgoKCSogbGJhc2VuYW1lLmMgKGxiYXNlbmFtZSk6IENoYW5nZSBmdW5jdGlvbiBkZWZpbml0aW9uIHRvIHJldHVybiBhCgljb25zdCBjaGFyIHBvaW50ZXIuCgoyMDAxLTA4LTA3ICBKYXNvbiBNZXJyaWxsICA8amFzb25fbWVycmlsbEByZWRoYXQuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoZGVtYW5nbGVfc3BlY2lhbF9uYW1lKTogIkdSIiAtPiAicmVmZXJlbmNlIHRlbXBvcmFyeQoJZm9yIi4KCjIwMDEtMDgtMDMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoY29uY2F0Lm8pOiBEZXBlbmQgb24gY29uZmlnLmguCgoyMDAxLTA3LTMwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBjb25jYXQuYzogSW5jbHVkZSAiY29uZmlnLmgiLgoKMjAwMS0wNy0zMCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogcmVnZXguYzogRGVjbGFyZSB3Y3MgZnVuY3Rpb25zIG9ubHkgaWYgY29tcGlsaW5nIHdpdGgKCU1CU19TVVBQT1JULgoJRG9uJ3QgdXNlICNlbGlmIGZvciB0cmFkaXRpb25hbCBDLgoKMjAwMS0wNy0yMyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiByZWdleC5jOiBSZXZhbXAgbWVtb3J5IGFsbG9jYXRpb24gZm9yIFdDSEFSIGZ1bmN0aW9ucyB0bwoJbm90IHVzZSB0b28gbXVjaCBzdGFjay4KCjIwMDEtMDctMzAgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHJlZ2V4LmM6IERlY2xhcmUgd2NzIGZ1bmN0aW9ucyBvbmx5IGlmIGNvbXBpbGluZyB3aXRoCglNQlNfU1VQUE9SVC4KCURvbid0IHVzZSAjZWxpZiBmb3IgdHJhZGl0aW9uYWwgQy4KCjIwMDEtMDctMjUgIERhbmllbCBKYWNvYm93aXR6ICA8ZHJvd0BtdmlzdGEuY29tPgoKCSogTWFrZWZpbGUuaW4gKHJlZ2V4Lm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBjb25maWcuaC4KCjIwMDEtMDctMTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiByZWdleC5jIChXT1JEQ0hBUl9QKSBbV0NIQVJdOiBBbHNvIHJldHVybiB0cnVlIGZvciB0aGUKCXVuZGVyc2NvcmUgY2hhcmFjdGVyLgoKMjAwMS0wNy0xOCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiByZWdleC5jOiBMaW1pdCBzdHJpbmcgbGVuZ3RoIHByaW50ZWQgaW4gZGVidWcgbWVzc2FnZXMgdG8gMTAwCgljaGFycy4KCjIwMDEtMDctMTggIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIHJlZ2V4LmM6IFBsYWNlIHVuZGVyIExHUEwgdmVyc2lvbiAyLjEuCgoyMDAxLTA3LTEwICBKZWZmIEpvaG5zdG9uICA8ampvaG5zdG5AcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgc3VwcG9ydCBmb3IgcmVnZXggY29kZS4KCSogcmVnZXguYzogTmV3IGZpbGUuCgoyMDAxLTA3LTA1ICBNYXJrIEtsZWluICA8bWtsZWluQGRpcy5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIGZmcy5jIGRlcGVuZGVuY3kuCgkqIGNvbmZpZ3VyZS5pbjogQWRkIGZmcy5jLgoJKiBmZnMuYzogTmV3IGZpbGUuCgoyMDAxLTA2LTE4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uY2F0LmM6IEluY2x1ZGUgPHN5cy90eXBlcy5oPi4KCjIwMDEtMDYtMTEgIExvcmVuIEouIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJYm9vdHN0cmFwLzMxMDYKCSogc3RyZXJyb3IuYyAoc3lzX25lcnIpOiBIaWRlIHRoZSBPUyBoZWFkZXIgdmVyc2lvbi4KCSogc3Ryc2lnbmFsLmMgKHN5c19uc2lnKTogTGlrZXdpc2UuCgoyMDAxLTA2LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uY2F0LmM6IEluY2x1ZGUgc3RyaW5nLmguICBGaXggaW50IHZzIHNpemVfdCB1c2FnZS4KCVNpbXBsaWZ5IHRoZSBpdGVyYXRpb24gbG9vcHMuICBVc2UgbWVtY3B5LgoKMjAwMS0wNS0xNiAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jYXJuZWdpZW1lbGxvbi5lZHU+CgoJKiBwYXJ0aXRpb24uYzogRml4IG1pc3NwZWxsaW5nIG9mIGBpbXBsZW1lbnRhdGlvbicuCgoyMDAxLTA1LTA5ICBUaGllbW8gU2V1ZmVyICA8c2V1ZmVyQGNzdi5pY2EudW5pLXN0dXR0Z2FydC5kZT4KCgkqIG1kNS5jIChtZDVfaW5pdF9jdHgpOiBEZWNsYXJlIGNvbnN0YW50cyBhcyB1bnNpZ25lZC4KCShtZDVfcHJvY2Vzc19ibG9jayk6IExpa2V3aXNlLgoKMjAwMS0wNS0wNyAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX3YzX3dpdGhfZGV0YWlscywKCWlzX2dudV92M19tYW5nbGVkX2N0b3IsIGlzX2dudV92M19tYW5nbGVkX2R0b3IpOiBVc2UgSytSIHN0eWxlCglmdW5jdGlvbiBkZWZpbml0aW9uLgoJKiB0ZXJuYXJ5LmM6IFVzZSBLK1Igc3R5bGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMuICBVc2UgUFRSLCBub3QKCXZvaWQgKi4gIE1ha2UgYXJndW1lbnRzIGNvbnN0YW50IHdoZXJlIHBvc3NpYmxlLgoKMjAwMS0wNS0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuaCAoc3BsYXlfdHJlZV9tYXgpOiBOZXcgZnVuY3Rpb24uCgkoc3BsYXlfdHJlZV9taW4pOiBMaWtld2lzZS4KCjIwMDEtMDQtMTUgIERhbmllbCBCZXJsaW4gIDxkYW5AY2dzb2Z0d2FyZS5jb20+CgoJKiB0ZXJuYXJ5LmM6IE5ldyBmaWxlIC0gVGVybmFyeSBzZWFyY2ggdHJlZSBpbXBsZW1lbnRhdGlvbi4KCgkqIE1ha2VmaWxlLmluOiBBZGQgdGVybmFyeS5vLCBhbmQgdGVybmFyeS5jIGRlcGVuZGVuY2llcy4KCjIwMDEtMDQtMDMgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBtYWtlLXRlbXAtZmlsZS5jICh0cnkpOiBJbmxpbmUuCgoyMDAxLTAyLTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKG1ha2UtdGVtcC1maWxlLm8pOiBEZXBlbmQgb24gY29uZmlnLmguCgoyMDAxLTAzLTI3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBtZW1jaHIuYyAobWVtY2hyKTogQWRqdXN0IGNvbmRpdGlvbiB0byBhdm9pZCBpbmZpbml0ZSBsb29wLgoKMjAwMS0wMy0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV9kaXNjcmltaW5hdG9yKTogYF8wJyBpcyBkaXNjcmltaW5hdG9yICMxLAoJYF8nIG5vdCBmb2xsb3dlZCBieSBhIGRpZ2l0IGlzIGludmFsaWQuCgoyMDAxLTAzLTIyICBKaW0gQmxhbmR5ICA8amltYkByZWRoYXQuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoc3RyaW5nX2xpc3RfZGVsZXRlKTogVXNlIGR5bl9zdHJpbmdfZGVsZXRlCglpbnN0ZWFkIG9mIGZyZWUsIHRvIGZyZWUgdGhlIGNvbnRlbnRzIGFzIHdlbGwgYXMgdGhlIHN0cmluZwoJc3RydWN0dXJlLgoKMjAwMS0wMy0yMSAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIG1ha2UtdGVtcC1maWxlLmM6IEFsd2F5cyBkZWZhdWx0IERJUl9TRVBBUkFUT1IgdG8gJy8nLgoJRG9uJ3QgZGVmYXVsdCBQX3RtcGRpciB0byBhbnl0aGluZy4gIFRyeSAvdmFyL3RtcCBiZWZvcmUKCS91c3IvdG1wLgoKMjAwMS0wMy0yMCAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGNob29zZS10ZW1wLmM6IFNwbGl0IG9mZiBtYWtlX3RlbXBfZmlsZSwgYW5kIHRoZSBjb2RlCglkdXBsaWNhdGVkIGJldHdlZW4gaXQgYW5kIGNob29zZV90ZW1wX2Jhc2UsIGludG8uLi4KCSogbWFrZS10ZW1wLWZpbGUuYzogLi4uIGhlcmU7IG5ldyBmaWxlLgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBtYWtlLXRlbXAtZmlsZS5jLgoJKFJFUVVJUkVEX09GSUxFUyk6IEFkZCBtYWtlLXRlbXAtZmlsZS5vLgoKMjAwMS0wMy0yMCAgSmltIEJsYW5keSAgPGppbWJAcmVkaGF0LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKHN0cnVjdCBkZW1hbmdsaW5nX2RlZik6IE5ldyBmaWVsZHM6Cglpc19jb25zdHJ1Y3RvciBhbmQgaXNfZGVzdHJ1Y3Rvci4KCShkZW1hbmdsaW5nX25ldyk6IEluaXRpYWxpemUgdGhlbS4KCShkZW1hbmdsZV9jdG9yX2R0b3JfbmFtZSk6IFNldCB0aGVtLCBpZiB3ZSBkZXRlY3QgYSBjb25zdHJ1Y3RvcgoJb3IgZGVzdHJ1Y3Rvci4KCShkZW1hbmdsZV92M193aXRoX2RldGFpbHMsIGlzX2dudV92M19tYW5nbGVkX2N0b3IsCglpc19nbnVfdjNfbWFuZ2xlZF9kdG9yKTogTmV3IGZ1bmN0aW9ucy4KCjIwMDEtMDMtMjAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogY3BsdXMtZGVtLmMgKG1haW4pOiBTa2lwIGluaXRpYWwgJC4KCjIwMDEtMDMtMTUgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckByZWRoYXQuY29tPgoKCSogaGFzaHRhYi5jIChoaWdoZXJfcHJpbWVfbnVtYmVyKTogU2lsZW5jZSB3YXJuaW5nIHRoYXQgNDI5NDk2NzI5MQoJbWlnaHQgYmUgYSBzaWduZWQgaW50ZWdlciB1bmRlciBwcmUtSVNPIEMgc3lzdGVtcy4KCjIwMDEtMDMtMTAgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCSAgICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogbGliaWJlcnR5L2xiYXNlbmFtZS5jOiBOZXcgZmlsZS4KCSogbGliaWJlcnR5L01ha2VmaWxlLmluOiBVcGRhdGUgZm9yIGxiYXNlbmFtZS4KCjIwMDEtMDMtMDYgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBhY2xvY2FsLm00IChsaWJpYmVydHlfQUNfRlVOQ19DX0FMTE9DQSk6IE5ldy4KCSogY29uZmlndXJlLmluOiBSZXBsYWNlIGFsbCBhbGxvY2EgbG9naWMgd2l0aCBhIHNpbXBsZSB1c2Ugb2YKCXRoZSBhYm92ZSBuZXcgbWFjcm8uCgkqIGNvbmZpZy50YWJsZTogS2lsbCAqLSotYmVvcyogZW50cnkuCgkqIGNvbmZpZy9taC1iZW9zOiBEZWxldGUuCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoKCSogTWFrZWZpbGUuaW4gKEFMTE9DQSwgSEZJTEVTKTogS2lsbC4KCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgYWxsb2NhLm8uCgkoYWxsb2NhLm8pOiBEZXBlbmQgb24gbGliaWJlcnR5LmguCgkoYXJndi5vKTogRG9uJ3QgZGVwZW5kIG9uIGFsbG9jYS1jb25mLmguCgkqIGFsbG9jYS1jb25mLmg6IERlbGV0ZS4KCSogYWxsb2NhLmM6IEluY2x1ZGUgbGliaWJlcnR5LmguICBLaWxsIGFsbCAjaWZkZWYgZW1hY3MKCWJsb2Nrcy4gIFByb3ZpZGUgdGhlIEMgYWxsb2NhIHVuY29uZGl0aW9uYWxseS4gIFVzZSBQVFIgd2hlcmUKCWFwcHJvcHJpYXRlLiAgTWFrZSBpMDBhZnVuYyBzdGF0aWMuCgkqIGFyZ3YuYzogRG9uJ3QgaW5jbHVkZSBhbGxvY2EtY29uZi5oLgoKMjAwMS0wMy0wNCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGNwbHVzLWRlbS5jIChtYWluKTogQ2FzdCBlbnVtIHN0eWxlIHRvIGludC4KCjIwMDEtMDItMTYgIExvcmVuIEouIFJpdHRsZSAgPGxqcml0dGxlQGFjbS5vcmc+CgoJKiBjcGx1cy1kZW0uYyAobWFpbik6IEluaXRpYWxpemUgc3R5bGUuCgoyMDAxLTAyLTAyICBQaGlsIEVkd2FyZHMgIDxwbWVAc291cmNlcy5yZWRoYXQuY29tPgoKCSogQ09QWUlORy5MSUI6ICBVcGRhdGUgdG8gTEdQTCAyLjEgZnJvbSB0aGUgRlNGLgoKMjAwMS0wMS0zMSAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUBhbGJhdHJvc3MuY28ubno+CgoJQWRkIHN1cHBvcnQgZm9yIEphdmEgZGVtYW5nbGluZyB1bmRlciB0aGUgdjMgQUJJOgoJKiBjcC1kZW1hbmdsZS5jIChOQU1FU1BBQ0VfU0VQQVJBVE9SKTogTmV3IGRlZmluZS4KCShzdHJ1Y3QgZGVtYW5nbGluZ19kZWYpOiBBZGQgYHN0eWxlJyBmaWVsZC4KCShkZW1hbmdsaW5nX25ldyk6IE5ldyBwYXJhbWV0ZXIgYHN0eWxlJy4gU2V0IGl0IGluIGRlbWFuZ2xpbmdfdC4KCShkZW1hbmdsZV9wcmVmaXgpOiBVc2UgTkFNRVNQQUNFX1NFUEFSQVRPUi4KCShkZW1hbmdsZV90eXBlX3B0cik6IERvbid0IGVtaXQgcG9pbnRlciBzeW1ib2wgaWYgZG9pbmcgSmF2YSBvdXRwdXQuCgkoY3BfZGVtYW5nbGUpOiBOZXcgcGFyYW1ldGVyIGBzdHlsZScuIFBhc3MgaXQgdG8gZGVtYW5nbGluZ19uZXcoKS4KCShtYWluKTogQ2FsbCBjcF9kZW1hbmdsZSB3aXRoIGV4dHJhIHBhcmFtZXRlci4KCShqYXZhX2RlbWFuZ2xlX3YzKTogTmV3IGZ1bmN0aW9uLgoJKGphdmFfYnVpbHRpbl90eXBlX25hbWVzKTogTmV3LiBUYWJsZSBvZiBwcmltaXRpdmUgdHlwZSBuYW1lcyB1c2VkCglmb3IgSmF2YSBkZW1hbmdsaW5nLgoJKGRlbWFuZ2xlX2J1aWx0aW5fdHlwZSk6IExvb2sgdXAgaW4gamF2YV9idWlsdGluX3R5cGVfbmFtZXMgaWYgZG9pbmcKCUphdmEgb3V0cHV0LgoJKiBjcGx1cy1kZW0uYyAoY3BsdXNfZGVtYW5nbGUpOiBVc2UgamF2YV9kZW1hbmdsZV92MyB0byBkbyBKYXZhCglkZW1hbmdsaW5nLgoJKGxvbmdfb3B0aW9ucyk6IFJlbW92ZSBvYnNvbGV0ZSBgamF2YScgb3B0aW9uLgoJKG1haW4pOiBSZW1vdmUgZXhwbGljaXQgaGFuZGxpbmcgb2YgYGphdmEnIG9wdGlvbi4gSW5zdGVhZCwgcGFzcyBzdHlsZQoJcGFyYW1ldGVyIGluIGNwbHVzX2RlbWFuZ2xlIGZsYWdzIGFzIGdkYiBkb2VzLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUuZXhwZWN0ZWQ6IEFkZCBzb21lIEphdmEgdGVzdCBjYXNlcy4KCjIwMDAtMTItMjkgIERKIERlbG9yaWUgIDxkakByZWRoYXQuY29tPgoKCSogZm5tYXRjaC5jOiBNYWtlIHRoZSBub3RlIGFib3V0IHRoZSBvcmlnaW5zIG9mIHRoaXMgZmlsZSBtb3JlCglhY2N1cmF0ZSwgYXQgbGVhc3QgdW50aWwgd2UgY2FuIHN5bmMgd2l0aCBnbGliYy4KCSogZ2V0b3B0LmM6IERpdHRvLgoJKiBnZXRvcHQxLmM6IERpdHRvLgoJKiBtZDUuYzogRGl0dG8uCgkqIG9ic3RhY2suYzogRGl0dG8uCgoyMDAwLTEyLTI2ICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBic2VhcmNoLmM6IE5ldyBmaWxlLgoJKiBjb25maWd1cmUuaW4gKGZ1bmNzKTogQWRkIGJzZWFyY2guCgkoQUNfQ0hFQ0tfRlVOQ1MpOiBMaWtld2lzZS4KCSogY29uZmlndXJlLCBjb25maWcuaW46IFJlZ2VuZXJhdGUuCgoyMDAwLTEyLTEzICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBzYWZlLWN0eXBlLmM6ICNpbmNsdWRlICJhbnNpZGVjbC5oIi4KCSogc3RydG9kLmM6IExpa2V3aXNlLgoKMjAwMC0xMi0xMyAgTWljaGFlbCBTb2tvbG92ICA8bXNva29sb3ZAaXZhbi5IYXJoYW4uT1JHPgoKCSogc3RydG91bC5jOiBJbmNsdWRlIHNhZmUtY3R5cGUuaCwgbm90IGN0eXBlLmguCgoyMDAwLTEyLTA3ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogc2FmZS1jdHlwZS5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBzYWZlLWN0eXBlLmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIHNhZmUtY3R5cGUuby4KCgkqIGFyZ3YuYzogRGVmaW5lIElTQkxBTksgYW5kIHVzZSBpdCwgbm90IGlzc3BhY2UuCgkqIGJhc2VuYW1lLmMsIGNwbHVzLWRlbS5jLCBmbm1hdGNoLmMsIHBleGVjdXRlLmMsIHN0cnRvZC5jLAoJc3RydG9sLmMsIHN0cnRvdWwuYzogSW5jbHVkZSBzYWZlLWN0eXBlLmgsIG5vdCBjdHlwZS5oLiAgVXNlCgl1cHBlcmNhc2UgY3R5cGUgbWFjcm9zLiAgRG9uJ3QgdGVzdCBJU1VQUEVSKGMpL0lTTE9XRVIoYykKCWJlZm9yZSBjYWxsaW5nIFRPTE9XRVIoYykvVE9VUFBFUihjKS4KCjIwMDAtMTItMDcgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChkaXN0Y2xlYW4pOiBXaGVuIGNsZWFuaW5nLCByZW1vdmUgdGVzdHN1aXRlLgoKMjAwMC0xMi0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChjcGx1c19kZW1hbmdsZV92Myk6IENoZWNrIHRoYXQgaXQncyBhIHYzIG1hbmdsZWQKCW5hbWUgYmVmb3JlIGFsbG9jYXRpbmcgdGhlIGR5bl9zdHJpbmcuCgoyMDAwLTEyLTA0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmM6IHMvbmV3X2FiaS92My8uCgkqIGNwbHVzLWRlbS5jOiBMaWtld2lzZS4KCShjdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUpOiBOb3cgYXV0b19kZW1hbmdsaW5nLgoJKGNwbHVzX2RlbWFuZ2xlKTogVHJ5IHYzIGRlbWFuZ2xpbmcgaWYgQVVUT19ERU1BTkdMSU5HLgoJKG1haW4pOiBVc2Ugc3RhbmRhcmQgc3ltYm9sIGNoYXJzIGZvciBhdXRvX2RlbWFuZ2xpbmcuCgoyMDAwLTExLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaGFzaHRhYi5jIChoaWdoZXJfcHJpbWVfbnVtYmVyKTogVXNlIGEgdGFibGUsIHJhdGhlciB0aGFuIGEKCXNlaXZlLCB0byBmaW5kIHRoZSBuZXh0IHByaW1lLgoKMjAwMC0xMS0yMiAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogY3BsdXMtZGVtLmMgKG1haW4pOiBIYW5kbGUgZ25hdF9kZW1hbmdsaW5nLgoKMjAwMC0xMS0yMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIGFjbG9jYWwubTQgKExJQl9BQ19QUk9HX0NDKTogTW92ZWQgaGVyZSBmcm9tIGNvbmZpZ3VyZS5pbi4KCShBQ19ERUZJTkVfTk9BVVRPSEVBREVSKTogTmV3IC0gd29yayBhcm91bmQgYnVnIGluIGF1dG9oZWFkZXIuCgkqIGNvbmZpZ3VyZS5pbjogQ2FsbCBBQ19DX0lOTElORSBhbmQgQUNfQ19DT05TVC4gIFVzZSB0aHJlZQoJYXJndW1lbnQgZm9ybSBvZiBBQ19ERUZJTkUgaW4gZHVtbXkgZGVmaW5pdGlvbnMgYmxvY2suICBVc2UKCUFDX0RFRklORV9OT0FVVE9IRUFERVIgZm9yIHJlYWwgZGVmaW5pdGlvbnMgb2YgdGhpbmdzIGRlZmluZWQKCWluIGR1bW15IGJsb2NrLiAgUHJlbG9hZCBjYWNoZSB2YXJpYWJsZXMgaW5zdGVhZCBvZiBieXBhc3NpbmcKCXRlc3RzLCB3aGVyZSBwb3NzaWJsZS4KCSogYWNjb25maWcuaDogUmVtb3ZlZC4KCgkqIHhtYWxsb2MuYyAoeG1hbGxvY19mYWlsZWQpOiBOZXcgZnVuY3Rpb24sIGRvZXMgZXJyb3IKCXJlcG9ydGluZyBvbiBmYWlsZWQgYWxsb2NhdGlvbi4KCSh4bWFsbG9jLCB4Y2FsbG9jLCB4cmVhbGxvYyk6IFVzZSBpdC4KCjIwMDAtMTEtMjEgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChjcGx1c19kZW1hbmdsZSk6IEZpeCBmb3JtYXR0aW5nLgoJKGdyb3dfdmVjdCk6IERpdHRvLgoJKGFkYV9kZW1hbmdsZSk6IERpdHRvLgoJKGludGVybmFsX2NwbHVzX2RlbWFuZ2xlKTogRGl0dG8uCgkobW9wX3VwKTogRGl0dG8uCgoyMDAwLTExLTIxICBILkouIEx1ICA8aGpsQGdudS5vcmc+CgoJKiBjcGx1cy1kZW0uYyAobWFpbik6IEhhbmRsZSBqYXZhX2RlbWFuZ2xpbmcuCgoyMDAwLTExLTE5ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcGx1cy1kZW0uYyAoZ3Jvd192ZWN0KTogUHJvdG90eXBlLgoJKGFkYV9kZW1hbmdsZSk6IENhc3QgdGhlIGFyZyBvZiBjdHlwZSBtYWNyb3MgdG8gdW5zaWduZWQgY2hhci4KCjIwMDAtMTEtMTUgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGJpdHJhbmdlLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChhZGFfZGVtYW5nbGUpOiBBZGQgYmFjayBBVFRSSUJVVEVfVU5VU0VEIGZvcgoJcGFyYW1ldGVyIGBvcHRpb24nLgoKMjAwMC0xMS0xNSAgS2VubmV0aCBCbG9jayAgPGtlbm5ldGguYmxvY2tAY29tcGFxLmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBFbGltaW5hdGUgdXNlIG9mIERFRlVOLCBpdCBpcyBvYnNvbGV0ZSBhbmQgY2Fubm90CgliZSB1c2VkIGluIEdDQy4KCjIwMDAtMTEtMTUgIEtlbm5ldGggQmxvY2sgIDxrZW5uZXRoLmJsb2NrQGNvbXBhcS5jb20+CgoJKiBjcGx1cy1kZW0uYzogQWRkIGduYXQgZGVtYW5nbGVyLiAgQWRkIGphdmEgdG8gZGVtYW5nbGUgc3R5bGUKCWxpc3QuCgoyMDAwLTExLTA0ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBoYXNodGFiLmMgKGh0YWJfZXhwYW5kKTogQ2hhbmdlIHRvIHJldHVybiBpbnQuICBVc2UgY2FsbG9jIG9yCgl4Y2FsbG9jIGRlcGVuZGluZyBvbiBodGFiLT5yZXR1cm5fYWxsb2NhdGlvbl9mYWlsdXJlLiAgUmV0dXJuIHplcm8KCWlmIGNhbGxvYyBmYWlscy4KCShodGFiX2NyZWF0ZSk6IFVwZGF0ZSBjb21tZW50IHRvIGNvdmVyIG1lbW9yeSBhbGxvY2F0aW9uLgoJKGh0YWJfdHJ5X2NyZWF0ZSk6IE5ldy4KCShodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBSZXR1cm4gTlVMTCBpZiBodGFiX2V4cGFuZCBmYWlscy4KCVVwZGF0ZSBjb21tZW50IHRvIGNvdmVyIHRoaXMuCgoyMDAwLTExLTAzICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBoYXNodGFiLmM6IENoYW5nZSB2b2lkICogdG8gUFRSIHdoZXJlIG5lY2Vzc2FyeS4KCShodGFiX2NyZWF0ZSwgaHRhYl9leHBhbmQpOiBDb3JyZWN0IGZvcm1hdHRpbmcgb2YgY29tbWVudCBiZWZvcmUKCWZ1bmN0aW9uLgoKMjAwMC0xMC0yMiAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKHN0cmluZ19saXN0X2RlZik6IEFkZCBjYXJldF9wb3NpdGlvbiBhbmQgY29tbWVudHMuCgkocmVzdWx0X2NhcmV0X3Bvcyk6IE5ldyBtYWNyby4KCShyZXN1bHRfYXBwZW5kX3N0cmluZyk6IFJlbmFtZSB0by4uLgoJKHJlc3VsdF9hZGRfc3RyaW5nKTogLi4uIHRoaXMsIGFuZCBpbnNlcnQgYXQgY2FyZXQgcG9zaXRpb24uCglSZW5hbWUgdGhyb3VnaG91dC4KCShyZXN1bHRfYXBwZW5kKTogUmVuYW1lIHRvLi4uCgkocmVzdWx0X2FkZCk6IC4uLiB0aGlzLCBhbmQgaW5zZXJ0IGF0IGNhcmV0IHBvc2l0aW9uLiAgUmVuYW1lCgl0aHJvdWdob3V0LgoJKHJlc3VsdF9hcHBlbmRfY2hhcik6IFJlbmFtZSB0by4uLgoJKHJlc3VsdF9hZGRfY2hhcik6IC4uLiB0aGlzLCBhbmQgaW5zZXJ0IGF0IGNhcmV0IHBvc2l0aW9uLiAgUmVuYW1lCgl0aHJvdWdob3V0LgoJKHJlc3VsdF9hcHBlbmRfc3BhY2UpOiBSZW1vdmUuCgkoc3RyaW5nX2xpc3RfbmV3KTogSW5pdGlhbGl6ZSBjYXJldCBwb3NpdGlvbi4KCShyZXN1bHRfYWRkX3NlcGFyYXRlZF9jaGFyKTogVXNlIGNhcmV0IHBvc2l0aW9uLgoJKHJlc3VsdF9nZXRfY2FyZXQpOiBOZXcgZnVudGlvbi4KCShyZXN1bHRfc2V0X2NhcmV0KTogTGlrZXdpc2UuCgkocmVzdWx0X3NoaWZ0X2NhcmV0KTogTGlrZXdpc2UuCgkocmVzdWx0X3ByZXZpb3VzX2NoYXJfaXNfc3BhY2UpOiBMaWtld2lzZS4KCShzdWJzdGl0dXRpb25fc3RhcnQpOiBVc2UgY2FyZXQgcG9zaXRpb24uCgkoc3Vic3RpdHV0aW9uX2FkZCk6IExpa2V3aXNlLgoJKGRlbWFuZ2xpbmdfbmV3KTogSW5pdGlhbGl6ZSBjYXJldCBwb3NpdGlvbi4KCShkZW1hbmdsZV9lbmNvZGluZyk6IFVzZSBjYXJldCBwb3NpdGlvbi4KCShkZW1hbmdsaW5fbmVzdGVkX25hbWUpOiBQdXQgQ1YgcXVhbGlmaWVycyBhZnRlciBuYW1lLgoJKGRlbWFuZ2xlX3R5cGVfcHRyKTogVXNlIHN3aXRjaCBzdGF0ZW1lbnQuICBIYW5kbGUgcG9pbnRlcnMgdG8KCWFycmF5cy4gIERvbid0IHVzZSByZXN1bHRfYXBwZW5kX3NwYWNlLiAgVXNlIGNhcmV0IHBvc2l0aW9uLgoJKGRlbWFuZ2xlX3R5cGUpOiBFbWl0IENWIHF1YWxpZmllcnMgYWZ0ZXIgdW5kZXJseWluZyB0eXBlLiAgQWRqdXN0CgljYWxsIHRvIGRlbWFuZ2xlX2FycmF5X3R5cGUuCgkoZGVtYW5nbGVfYXJyYXlfdHlwZSk6IEFkZCBwYXJhbWV0ZXIgdG8gaGFuZGxlIHBvaW50ZXJzIHRvIGFycmF5cy4KCjIwMDAtMTAtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmMgKHNwbGF5X3RyZWVfaW5zZXJ0KTogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTA5LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5jIChzcGxheV90cmVlX3ByZWRlY2Vzc29yKTogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDAtMDktMTQgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCgkqIHNwbGF5LXRyZWUuYzogI2luY2x1ZGUgPHN0ZGlvLmg+LgoKMjAwMC0wOS0xNCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCB0d28gdGVzdHMgZm9yIGFub255bW91cwoJbmFtZXNwYWNlcy4KCSogY3BsdXMtZGVtLmMgKGdudV9zcGVjaWFsKTogSGFuZGxlIGFub255bW91cyBuYW1lc3BhY2VzLgoKMjAwMC0wOS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV9wcmVkZWNlc3Nvcik6IE5ldyBmdW5jdGlvbi4KCShzcGxheV90cmVlX3N1Y2Nlc3Nvcik6IExpa2V3aXNlLgoKMjAwMC0wOS0xMCAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYXhpcy5jb20+CgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IEFkZCBmb3VyIHRlc3RzIGZvciB0eXBlX2luZm8KCW1hbmdsaW5nLgoJKiBjcGx1cy1kZW0uYyAoZ251X3NwZWNpYWwpOiBVc2UgZG9fdHlwZSwgbm90IGRlbWFuZ2xlX2Z1bmRfdHlwZSwKCWZvciBhIG5vbi10ZW1wbGF0ZSBub24tcXVhbGlmaWVkIHR5cGVfaW5mbyBmdW5jdGlvbiBvciBub2RlLgoKMjAwMC0wOS0wOCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmM6IEZpeCBjb3B5cmlnaHQgYmFubmVyLgoKMjAwMC0wOS0wNyAgTWljaGFlbCBTb2tvbG92ICA8bXNva29sb3ZAaXZhbi5IYXJoYW4uT1JHPgoKCSogbWQ1LmM6ICNpbmNsdWRlICJhbnNpZGVjbC5oIi4KCjIwMDAtMDktMDYgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChzdGF0dXNfYWxsb2NhdGlvbl9mYWlsZWQpOiBSZWFycmFuZ2Ugd2hpdGVzcGFjZS4KCShkZW1hbmdsZV90eXBlKTogSGFuZGxlIHN1YnN0aXR1dGlvbiBjYW5kaWRhdGVzIGNvcnJlY3RseSBpbiB0aGUKCWZhY2Ugb2Ygc3BlY2lhbCBzdWJzdGl0dXRpb25zLgoKMjAwMC0wOS0wNSAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX2VuY29kaW5nKTogUmVuYW1lIHZhcmlhYmxlLgoJKGRlbWFuZ2xlX25hbWUpOiBSZW5hbWUgcGFyYW1ldGVyLiAgSGFuZGxlIHJldHVybiB0eXBlCglzdXBwcmVzc2lvbi4KCShkZW1hbmdsZV9uZXN0ZWRfbmFtZSk6IFJlbmFtZSBwYXJhbWV0ZXIuCgkoZGVtYW5nbGVfcHJlZml4KTogTGlrZXdpc2UuICBDaGFuZ2UgcmV0dXJuIHR5cGUgc3VwcHJlc3Npb24uCgkoZGVtYW5nbGVfdW5xdWFsaWZpZWRfbmFtZSk6IEFkZCBwYXJhbWV0ZXIuICBGbGFnIGNvbnN0cnVjdG9ycyBhbmQKCWNvbnZlcnNpb24gb3BlcmF0b3JzLgoJKGRlbWFuZ2xlX3NwZWNpYWxfbmFtZSk6IEZpeCBjb21tZW50LgoJKGRlbWFuZ2xlX3R5cGUpOiBSZW5hbWUgdmFyaWFibGUuCgkoZGVtYW5nbGVfYmFyZV9mdW5jdGlvbl90eXBlKTogQ2hlY2sgZm9yIG1pc3NpbmcgcmV0dXJuIHR5cGUgYW5kCglwYXJhbWV0ZXIuCgkoZGVtYW5nbGVfY2xhc3NfZW51bV90eXBlKTogUmVuYW1lIHBhcmFtZXRlci4KCShkZW1hbmdsZV9kaXNjcmltaW5hdG9yKTogRml4IG1pc3NwZWxsaW5nIGluIGNvbW1lbnQuCgoyMDAwLTA4LTMxICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoQ3lnd2luKTogc3BlY2lhbCBjYXNlIGN5Z3dpbiBvbmx5IHdoZW4gd2UncmUKCWJ1aWxkaW5nIGN5Z3dpbiwgbm90IHdoZW4gd2UncmUgaG9zdGluZyBjeWd3aW4uCgoyMDAwLTA5LTA0ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoZGVtYW5nbGVfdGVtcGxhdGVfYXJnKTogRWF0IGFuIGBFJyBhZnRlciBhbgoJPGV4cHJlc3Npb24+LgoKMjAwMC0wOS0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX3R5cGVfcHRyKTogSW5jcmVtZW50IHBvc2l0aW9uIHBhc3QKCXBvaW50ZXIgYW5kIHJlZmVyZW5jZSBjaGFyYWN0ZXJzLgoKMjAwMC0wOS0wNCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX252X29mZnNldCk6IE5ldyBmdW5jdGlvbi4KCShkZW1hbmdsZV92X29mZnNldCk6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX2NhbGxfb2Zmc2V0KTogTGlrZXdpc2UuCgkoZGVtYW5nbGVfc3BlY2lhbF9uYW1lKTogVXBkYXRlIHRodW5rIGRlbWFuZ2xpbmcgdG8gY29tcGx5IHdpdGgKCUFCSSBjaGFuZ2VzLgoKMjAwMC0wOS0wMyAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKEFOT05ZTU9VU19OQU1FU1BBQ0VfUFJFRklYKTogTmV3IG1hY3JvLgoJKHN1YnN0aXR1dGlvbl9kZWYpOiBSZW1vdmUgdGVtcGxhdGVfcGFybV9udW1iZXIuCgkoTk9UX1RFTVBMQVRFX1BBUk0pOiBSZW1vdmUuCgkocmVzdWx0X2luc2VydF9zdHJpbmcpOiBOZXcgbWFjcm8uCgkocmVzdWx0X2luc2VydCk6IExpa2V3aXNlLgoJKHJlc3VsdF9pbnNlcnRfY2hhcik6IExpa2V3aXNlLgoJKHN1YnN0aXR1dGlvbl9hZGQpOiBSZW1vdmUgbGFzdCBwYXJhbWV0ZXIuICBEb24ndCBzdG9yZSB0ZW1wbGF0ZQoJcGFybSBudW1iZXIuCgkoQkZUX05PX1JFVFVSTl9UWVBFKTogRGVmaW5lIGFzIE5VTEwuCgkoZGVtYW5nbGVfZW5jb2RpbmcpOiBBZGp1c3QgY2FsbCB0byBkZW1hbmdsZV9iYXJlX2Z1bmN0aW9uX3R5cGUuCgkoZGVtYW5nbGVfbmFtZSk6IEFkanVzdCBzdWJzdGl0dXRpb24uICBBZGp1c3QgY2FsbCB0bwoJc3Vic3RpdHV0aW9uX2FkZC4KCShkZW1hbmdsZV9wcmVmaXgpOiBBZGp1c3QgY2FsbCB0byBzdWJzdGl0dXRpb25fYWRkLgoJKGRlbWFuZ2xlX2lkZW50aWZpZXIpOiBIYW5kbGUgYW5vbnltb3VzIG5hbWVzcGFjZXMuCgkoZGVtYW5nbGVfb3BlcmF0b3JfbmFtZSk6IENoYW5nZSBkZW1hbmdsaW5nIG9mIHZlbmRvci1leHRlbmRlZAoJb3BlcmF0b3IgdG8gbWF0Y2ggQUJJIGNoYW5nZXMuCgkoZGVtYW5nbGVfdHlwZV9wdHIpOiBDaGFuZ2UgcGFyYW1ldGVycy4gIE1ha2UgcmVjdXJzaXZlLiAgSGFuZGxlCglzdWJzdGl0dXRpb25zIGhlcmUuCgkoZGVtYW5nbGVfdHlwZSk6IEFkanVzdCBjYWxscyB0byBkZW1hbmdsZV90ZW1wbGF0ZV9wYXJhbSwKCXN1YnN0aXR1dGlvbl9hZGQsIGFuZCBkZW1hbmdsZV90eXBlX3B0ci4gIEZpeCBzdWJzdGl0dXRpb24gb2YKCXRlbXBsYXRlZCB0eXBlcy4KCShkZW1hbmdsZV9mdW5jdGlvbl90eXBlKTogQ2hhbmdlIHBhcmFtZXRlciB0byBhIHBvaW50ZXIuCgkoZGVtYW5nbGVfYmFyZV9mdW5jdGlvbl90eXBlKTogTGlrZXdpc2UuICBBZGp1c3QgaW5zZXJ0aW9uIHBvaW50LgoJKGRlbWFuZ2xlX3RlbXBsYXRlX3BhcmFtKTogUmVtb3ZlIGxhc3QgcGFyYW1ldGVyLgoJKGRlbWFuZ2xlX2V4cHJfcHJpbWFyeSk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuICBBZGp1c3QgY2FsbCB0bwoJZGVtYW5nbGVfdGVtcGxhdGVfcGFyYW0uCgkoaXNfbWFuZ2xlZF9jaGFyKTogQWNjZXB0IGAkJyBhbmQgYC4nLgoJKiBjcGx1cy1kZW0uYyAoZ251X25ld19hYmlfc3ltYm9sX2NoYXJhY3RlcnMpOiBBZGQgJyQnIGFuZCAnLicuCgkqIGR5bi1zdHJpbmcuYyAoZHluX3N0cmluZ19pbnNlcnRfY2hhcik6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMDgtMzEgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQgbmluZSB0ZXN0cyBmb3IKCXVuZGVyc2NvcmUtYWZ0ZXItbnVtYmVyIGZvbGxvd2VkIGJ5IGZpdmUgdGVzdHMgZm9yIG5hbWUtc2lnbmF0dXJlCglkZWxpbWl0ZXIuCgoyMDAwLTA4LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKG1kNS5vKTogRGVwZW5kIG9uIGNvbmZpZy5oLgoKMjAwMC0wOC0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoUkVRVUlSRURfT0ZJTEVTKTogQWRkIG1kNS5vLgoJKENGSUxFUyk6IEFkZCBtZDUuYy4KCSogbWQ1LmM6IE5ldyBmaWxlLgoKMjAwMC0wOC0yNyAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX25hbWUpOiBJbml0aWFsaXplIHRlbXBsYXRlX3AgaW4gbG9jYWwKCW5hbWUgY2FzZS4gIERvbid0IHJlLWFkZCBzdWJzdGl0dXRpb25zIGFzIGNhbmRpZGF0ZXMuCgkoZGVtYW5nbGVfbmVzdGVkX25hbWUpOiBVc2UgPHVucXVhbGlmaWVkLW5hbWU+LgoJKGRlbWFuZ2xlX3ByZWZpeCk6IExpa2V3aXNlLiAgRG9uJ3QgYWRkIHRlbXBsYXRlIG5hbWVzIGFzCglzdWJzdGl0dXRpb24gY2FuZGlkYXRlcyB0d2ljZSwgb3IgcmUtYWRkIGEgc3Vic3RpdHV0aW9uIG9yIHRoZQoJbGFzdCBwcmVmaXggY29tcG9uZW50LgoJKGRlbWFuZ2xlX2xvY2FsX25hbWUpOiBBZGp1c3Qgb3V0cHV0IGZvcm1hdC4KCjIwMDAtMDgtMjUgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChyZXN1bHRfYWRkX3NlcGFyYXRlZF9jaGFyKTogQ2hhbmdlIHBhcmFtZXRlciB0bwoJaW50LgoJKHN1YnN0aXR1dGlvbl9hZGQpOiBEb24ndCBjaGVjayBmb3IgZHVwbGljYXRlcy4gIENoZWNrIGlmCglwcmV2aW91c2x5IGFsbG9jYXRlZCBzaXplIGlzIHplcm8uCgkoZGVtYW5nbGVfbmFtZSk6IFJlbW92ZSBkdXBsaWNhdGUgY2hlY2sgZm9yIHN0ZCBzdWJzdGl0dXRpb24uCglDbGVhciB0ZW1wbGF0ZSBmbGFnIGFwcHJvcHJpYXRlbHkuCgkoZGVtYW5nbGVfcHJlZml4KTogUmVtb3ZlIGFyZ3VtZW50IHRvIGRlbWFuZ2xlX3N1YnN0aXR1dGlvbi4KCURvbid0IGNoZWNrIHRoYXQgdGVtcGxhdGUgZmxhZyBpcyBhbHJlYWR5IHNldC4KCShkZW1hbmdsZV9vcGVyYXRvcl9uYW1lKTogQWRkIHB0IG9wZXJhdG9yLgoJKGRlbWFuZ2xlX3R5cGUpOiBEb24ndCB0cmVhdCByIGFzIGJ1aWx0LWluIHR5cGUuICBSZW1vdmUgYXJndW1lbnQKCXRvIGRlbWFuZ2xlX3N1YnN0aXR1dGlvbi4gIEZpeCBzdWJzdGl0dXRpb24gY2FuZGlkYXRlIG1lY2hhbmljcy4KCUhhbmRsZSA8dGVtcGxhdGUtdGVtcGxhdGUtcGFybT5zLiAgSW1wcm92ZSBjb21tZW50cy4KCShkZW1hbmdsZV90ZW1wbGF0ZV9wYXJhbSk6IERvbid0IGhhbmRsZSB0ZW1wbGF0ZSBhcmcgbGlzdHMgaGVyZS4KCShkZW1hbmdsZV9zdWJzdGl0dXRpb24pOiBSZW1vdmUgcGFyYW1ldGVyLgoJKHByaW50X3VzYWdlKTogUmVtb3ZlIGV4dHJhIGZwcmludGYgb3B0aW9uLgoKMjAwMC0wOC0yNCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBsaWJpYmVydHkvcmFuZG9tLmMgKGVuZF9wdHIpOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoKMjAwMC0wOC0yNCAgR3JlZyBNY0dhcnkgIDxncmVnQG1jZ2FyeS5vcmc+CgoJKiBsaWJpYmVydHkvY3BsdXMtZGVtLmMgKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSwgY3BsdXNfbWFuZ2xlX29wbmFtZSwKCWRlbWFuZ2xlX2V4cHJlc3Npb24sIGRlbWFuZ2xlX2Z1bmN0aW9uX25hbWUpOiBVc2UgQVJSQVlfU0laRS4KCSogbGliaWJlcnR5L3JhbmRvbS5jIChlbmRfcHRyKTogTGlrZXdpc2UuCgoyMDAwLTA4LTIzICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAocmVzdWx0X2Nsb3NlX3RlbXBsYXRlX2xpc3QpOiBSZW1vdmUgZnVuY3Rpb24uCgkocmVzdWx0X2FkZF9zZXBhcmF0ZWRfY2hhcik6IE5ldyBmdW5jdGlvbi4KCShyZXN1bHRfb3Blbl90ZW1wbGF0ZV9saXN0KTogTmV3IG1hY3JvLgoJKHJlc3VsdF9jbG9zZV90ZW1wbGF0ZV9saXN0KTogTGlrZXdpc2UuCgkoZGVtYW5nbGVfcHJlZml4KTogRG9uJ3Qgc2V0IHRlbXBsYXRlX3AgaWYgdGhlCglwcmVmaXggZW5kcyB3aXRoIGEgY3RvciBuYW1lLgoJKGRlbWFuZ2xlX3R5cGVfcHRyKTogUmVtb3ZlIGR1cGxpY2F0ZSBSRVRVUk5fSUZfRVJST1IuCgkoZGVtYW5nbGVfdHlwZSk6IENoZWNrIGZvciB0ZW1wbGF0ZSBhcmdzIGFmdGVyIHN1YnN0aXR1dGlvbi4KCShkZW1hbmdsZV90ZW1wbGF0ZV9hcmdzKTogVXNlIHJlc3VsdF9vcGVuX3RlbXBsYXRlX2xpc3QuCgoyMDAwLTA4LTAyICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBwZXhlY3V0ZS5jOiAgRG9uJ3QgdXNlIHZmb3JrLiAgSW5pdGlhbGl6ZSAncGlkJyBiZWZvcmUgcmV0cnkgbG9vcC4KCjIwMDAtMDctMjYgIERhdmUgUGl0dHMgIDxkcGl0dHNAY296eC5jb20+CgoJKiBjb25maWcvbWgtb3BlbmVkaXRpb24uaDogQWRkZWQgLURMRTM3MCBkZWZpbml0aW9uLgoKMjAwMC0wNy0yNiBNYXJrIEVsYnJlY2h0IDxzbm93YmFsbDNAYmlnZm9vdC5jb20+CgoJKiBwZXhlY3V0ZS5jIChwZXhlY3V0ZSkgW19fTVNET1NfX106IENoYW5nZSBfX0dPMzJfXyB0bwoJX19ESkdQUF9fLiBVc2UgUF9XQUlUIGluc3RlYWQgb2YgY29uc3RhbnQgaW4gdGhlIHNwYXdudiogY2FsbC4KCUNhc3QgcHJvZ3JhbSB0byAnY2hhciAqJyBpbiBlcnJtc2dfYXJnIGFzc2lnbm1lbnQuCgkoUFdBSVRfRVJST1IpOiBEZWZpbmUuCgkocHdhaXQpOiBVc2UgUFdBSVRfRVJST1IuICBBZGp1c3QgREpHUFAncyBzdGF0dXMgY29kZSB0byBjb25mb3JtCgl0byBESkdQUCdzIFdJRiogbWFjcm9zLgoKMjAwMC0wNy0yNyAgUm9kbmV5QnJvd24gIDxSb2RuZXlCcm93bkBwbXNjLmNvbT4KCSAgICBKZWZmIExhdyA8bGF3QGN5Z251cy5jb20+CgoJKiBnZXRjd2QuYzogSW5jbHVkZSBzdHJpbmcuaCwgc3RkbGliLmggZm9yIHByb3RvdHlwZXMKCgkqIE1ha2VmaWxlLmluIChyZW5hbWUubywgd2FpdHBpZC5vKTogRGVwZW5kIG9uIGNvbmZpZy5oCgkqIHJlbmFtZS5jOiBJbmNsdWRlIGNvbmZpZy5oLCB1bmlzdGQuaAoJKiB3YWl0cGlkLmM6IEluY2x1ZGUgY29uZmlnLmgsIHN5cy93YWl0LmgKCjIwMDAtMDctMjQgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKHdvcmtfc3R1ZmZfY29weV90b19mcm9tKTogTmV3LgoJKGRlbGV0ZV9ub25fQl9LX3dvcmtfc3R1ZmYpOiBOZXcuCgkoZGVsZXRlX3dvcmtfc3R1ZmYpOiBOZXcuCgkobW9wX3VwKTogQnJlYWsgb3V0IHdvcmtfc3R1ZmYgcGFydGx5IGRlc3RydWN0aW9uIHRvCglkZWxldGVfbm9uX0JfS193b3JrX3N0dWZmLgoJKGl0ZXJhdGVfZGVtYW5nbGVfZnVuY3Rpb24pOiBOZXcuCgkoZGVtYW5nbGVfcHJlZml4KTogQ2FsbCBpdGVyYXRlX2RlbWFuZ2xlX2Z1bmN0aW9uIGluc3RlYWQgb2YKCWRlbWFuZ2xlX2Z1bmN0aW9uX25hbWUuICBMZWF2ZSBoYW5kbGluZyBvZiBuYW1lLXNpZ25hdHVyZQoJX18tZGVsaW1pdGVycyB0byBpdGVyYXRlX2RlbWFuZ2xlX2Z1bmN0aW9uLgoJKGRlbWFuZ2xlX2ludGVncmFsX3ZhbHVlKTogU3RyaXAgYW4gb3B0aW9uYWwKCWZvbGxvd2luZyB1bmRlcnNjb3JlIGNhdXRpb3VzbHkuICBIYW5kbGUgbmVnYXRpdmUgbnVtYmVycy4KCjIwMDAtMDctMjQgIERhbmllbCBCZXJsaW4gPGRiZXJsaW5AcmVkaGF0LmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9zaWduYXR1cmUpOiBDaGFuZ2UgaWYgKEdOVV9ERU1BTkdMSU5HKSB0bwoJaWYgKEFVVE9fREVNQU5HTElORyB8fCBHTlVfREVNQU5HTElORykKCjIwMDAtMDctMjEgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV9jdG9yX2R0b3JfbmFtZSk6IFJlbW92ZSBub3QtaW4tY2hhcmdlCglhbGxvY2F0aW5nIGN0b3IgbWFuZ2xpbmcuCgkoZGVtYW5nbGVfYXJyYXlfdHlwZSk6IEhhbmRsZSBlbXB0eSBhbmQgbm9uLWNvbnN0YW50IGFycmF5IGxlbmd0aC4KCjIwMDAtMDctMjMgIE1pY2hhZWwgU29rb2xvdiAgPG1zb2tvbG92QGl2YW4uSGFyaGFuLk9SRz4KCSAgICBKZWZmIExhdyA8bGF3QGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKEFDX0NIRUNLX0hFQURFUlMpOiBBZGQgdGltZS5oLgoJKEFDX0hFQURFUl9USU1FKTogQWRkIGNoZWNrLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogZ2V0cnVudGltZS5jOiBQb3J0YWJseSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4gYW5kL29yIDx0aW1lLmg+LgoKCSogY29uZmlndXJlLmluIChBQ19DSEVDS19IRUFERVJTKTogQWRkIGxpbWl0cy5oLgoJKiBjb25maWd1cmUsIGNvbmZpZy5pbjogUmVnZW5lcmF0ZS4KCSogc29ydC5jOiBQb3J0YWJseSAjaW5jbHVkZSA8bGltaXRzLmg+IGFuZC9vciA8c3lzL3BhcmFtLmg+LgoJKiBzdHJ0b2wuYywgc3RydG91bC5jOiAjaW5jbHVkZSAiY29uZmlnLmgiLiBQb3J0YWJseSAjaW5jbHVkZQoJPGxpbWl0cy5oPiBhbmQvb3IgPHN5cy9wYXJhbS5oPi4KCSogTWFrZWZpbGUuaW4gKHN0cnRvbC5vLCBzdHJ0b3VsLm8pOiBVcGRhdGUgZGVwZW5kZW5jaWVzLgoKCSogYWNsb2NhbC5tNCAobGliaWJlcnR5X0FDX0RFQ0xBUkVfRVJSTk8pOiBOZXcgbWFjcm8uCgkqIGNvbmZpZ3VyZS5pbiAobGliaWJlcnR5X0FDX0RFQ0xBUkVfRVJSTk8pOiBBZGQgY2hlY2suCgkqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgoJKiBwZXhlY3V0ZS5jLCBzdHJ0b2wuYywgc3RydG91bC5jOiBEZWNsYXJlIGVycm5vIGlmIG5lY2Vzc2FyeS4KCgkqIGNwLWRlbWFuZ2xlLmMsIG1rc3RlbXBzLmM6ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4uCgoyMDAwLTA3LTIxICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoeGV4aXQubyk6IEFkZCBkZXBlbmRlbmN5IGZvciBjb25maWcuaCBpbiB4ZXhpdC5jLgoJKiAodmFzcHJpbnRmLm8pOiBBZGQgZGVwZW5kZW5jeSBmb3IgY29uZmlnLmggaW4gdmFzcHJpbnRmLmMuCgoyMDAwLTA3LTIxICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC1kZW1hbmdsZS5jIChjcF9kZW1hbmdsZV90eXBlKTogV3JhcCBpbiBJTl9MSUJHQ0MyLgoKCSogc2V0ZW52LmMgKHNldGVudik6IEluaXRpYWxpemUgdmFyaWFibGUgYGVwJy4KCgkqIHNpZ3NldG1hc2suYyAoYWJvcnQpOiBQcm90b3R5cGUuCgoJKiB2YXNwcmludGYuYzogSW5jbHVkZSBjb25maWcuaC4gIENoZWNrIEFOU0lfUFJPVE9UWVBFUywgbm90CglfX1NURENfXyBmb3Igc3RkYXJnLmggaW5jbHVkZS4KCShpbnRfdmFzcHJpbnRmKTogUHJvdG90eXBlLgoJKGNoZWNraXQpOiBQcm90b3R5cGUuICBVc2UgVlBBUkFNUy9BTlNJX1BST1RPVFlQRVMvVkFfU1RBUlQgaW4KCWRlZmluaXRpb24uICBDYXN0IGBnbG9iYWxfdG90YWxfd2lkdGgnIGluIGNvbXBhcmlzb24uCgkobWFpbik6IFByb3RvdHlwZS4gIFJldHVybiBhIHZhbHVlLgoKCSogdmZvcmsuYyAoZm9yayk6IFByb3RvdHlwZS4KCgkqIHhleGl0LmM6IEluY2x1ZGUgY29uZmlnLmguCgoyMDAwLTA3LTIwICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfZnVuZF90eXBlKTogTWFrZSAnZGVjJyBhbiB1bnNpZ25lZCBpbnQsCglhbmQgcHJpbnQgaXQgd2l0aCAldS4KCjIwMDAtMDctMTcgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogdGVzdHN1aXRlL3JlZ3Jlc3MtZGVtYW5nbGUgKGZhaWxlZCB0ZXN0KTogU2hvdyByZXN1bHQgYW5kCglleHBlY3RlZCBvdXRwdXQuCgoyMDAwLTA3LTA3ICBBbmRyZXcgSGFsZXkgIDxhcGhAY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChtYWluKTogZmZsdXNoKCkgYWZ0ZXIgZW1pdHRpbmcgbGFzdCBjaGFyIGJlZm9yZQoJd2FpdGluZyBmb3IgaW5wdXQuCgoyMDAwLTA2LTI4ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtZGVtYW5nbGUuYyAoZGVtYW5nbGVfZW5jb2RpbmcpOiBBY2NlcHQgbm8gc3Vic3RpdHV0aW9ucy4KCShkZW1hbmdsZV9uYW1lKTogSGFuZGxlIDxzdWJzdGl0dXRpb24+IGZvbGxvd2VkIGJ5Cgk8dW5xdWFsaWZpZWQtdGVtcGxhdGUtbmFtZT4uCgkoZGVtYW5nbGVfdHlwZSk6IEZvbGxvdyBzcGVjaWFsIHN1YnN0aXR1dGlvbnMgd2l0aAoJPGNsYXNzLWVudW0tdHlwZT4KCShkZW1hbmdsZV9zdWJ0aXR1dGlvbik6IFNldCB0ZW1wbGF0ZV9wIGZvciBzcGVjaWFsIHN1YnN0aXR1dGlvbnMuCgkobWFpbik6IEZpeCB0eXBvcy4KCjIwMDAtMDYtMjcgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV9zcGVjaWFsX25hbWUpOiBTd2FwIGJhc2UgYW5kIGRlcml2ZWQKCWNsYXNzIHdoZW4gZGVtYW5nbGluZyBjb25zdHJ1Y3Rpb24gdnRhYmxlcy4KCjIwMDAtMDYtMjEgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC1kZW1hbmdsZS5jOiBEb24ndCBpbmNsdWRlIGN0eXBlLmguCgkoSVNfRElHSVQpOiBOZXcgbWFjcm8uCgkoSVNfQUxQSEEpOiBMaWtld2lzZS4gIFVzZSBJU19ESUdJVCBhbmQgSVNfQUxQSEEgdGhyb3VnaG91dAoJaW5zdGVhZCBvZiBpc2RpZ2l0IGFuZCBpc2FscGFudW0uCgkoZGVtYW5nbGluZ19kZWYpOiBNYWtlIG5hbWUgYW5kIG5leHQgY29uc3QgcG9pbnRlcnMuCgkoU1RBVFVTX0FMTE9DQVRJT05fRkFJTEVEKTogTmV3IHN0YXR1cyBjb2RlLgoJKGR5bl9zdHJpbmdfYXBwZW5kX3NwYWNlKTogSGFuZGxlIGZhaWx1cmUgaW4KCWR5bl9zdHJpbmdfYXBwZW5kX2NoYXIuCgkoaW50X3RvX2R5bl9zdHJpbmcpOiBMaWtld2lzZS4gIENoYW5nZSByZXR1cm4gdmFsdWUgdG8gc3RhdHVzX3QuCgkoc3RyaW5nX2xpc3RfbmV3KTogSGFuZGxlIGZhaWx1cmUgb2YgZHluX3N0cmluZ19pbml0LgoJKHJlc3VsdF9jbG9zZV90ZW1wbGF0ZV9saXN0KTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIHN0YXR1c190LgoJSGFuZGxlIGZhaWx1cmUgaW4gZHluX3N0cmluZ19hcHBlbmQuCgkocmVzdWx0X3B1c2gpOiBDaGFuZ2UgcmV0dXJuIHZhbHVlIHRvIHN0YXR1c190LiAgSGFuZGxlIGZhaWx1cmUgaW4KCXN0cmluZ19saXN0X25ldy4gIEhhbmRsZSBmYWlsdXJlIG9mIHJlc3VsdF9wdXNoIHRocm91Z2hvdXQuCgkoc3Vic3RpdHV0aW9uX2FkZCk6IENoYW5nZSByZXR1cm4gdmFsdWUgdG8gc3RhdHVzX3QuICBIYW5kbGUKCWR5bl9zdHJpbmcgZmFpbHVyZXMuICBIYW5kbGUgZmFpbHVyZSBvZiBzdWJzdGl0dXRpb25fYWRkCgl0aHJvdWdob3V0LgoJKHRlbXBsYXRlX2FyZ19saXN0X25ldyk6IFJldHVybiBOVUxMIG9uIGFsbG9jYXRpb24gZmFpbHVyZS4KCShyZXN1bHRfYXBwZW5kX3N0cmluZyk6IFJldHVybiBTVEFUVVNfQUxMT0NBVElPTl9GQUlMRUQgb24gZXJyb3IuCglIYW5kbGUgZXJyb3IgcmVzdWx0IHRocm91Z2hvdXQuCgkocmVzdWx0X2FwcGVuZCk6IExpa2V3aXNlLgoJKHJlc3VsdF9hcHBlbmRfY2hhcik6IExpa2V3aXNlLgoJKHJlc3VsdF9hcHBlbmRfc3BhY2UpOiBMaWtld2lzZS4KCShkZW1hbmdsaW5nX25ldyk6IE1ha2UgYXJndW1lbnQgYSBjb25zdCBwb2ludGVyLiAgSGFuZGxlCglhbGxvY2F0aW9uIGZhaWx1cmVzLgoJKGRlbWFuZ2xlX3RlbXBsYXRlX2FyZ3MpOiBIYW5kbGUgZmFpbHVyZSBpbiB0ZW1wbGF0ZV9hcmdfbGlzdF9uZXcKCWFuZCByZXN1bHRfY2xvc2VfdGVtcGxhdGVfbGlzdC4KCShkZW1hbmdsZV9kaXNjcmltaW5hdG9yKTogUmV0dXJuIGlmIGludF90b19keW5fc3RyaW5nIGZhaWxzLgoJKGNwX2RlbWFuZ2xlKTogTGlrZXdpc2UuCgkoY3BfZGVtYW5nbGVfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShjcGx1c19kZW1hbmdsZV9uZXdfYWJpKTogRG9uJ3QgY2FsbCBkeW5fc3RyaW5nX2RlbGV0ZS4gIEFib3J0IG9uCgltZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlLgoJKG1haW4pOiBMaWtld2lzZS4KCSogZHluLXN0cmluZy5jIChSRVRVUk5fT05fQUxMT0NBVElPTl9GQUlMVVJFKTogRGVmaW5lIGlmCglJTl9MSUJHQ0MyLgoJKGR5bl9zdHJpbmdfaW5pdCk6IENoYW5nZSByZXR1cm4gdmFsdWUgdG8gaW50LiAgSGFuZGxlCglSRVRVUk5fT05fQUxMT0NBVElPTl9GQUlMVVJFIGNhc2UuCgkoZHluX3N0cmluZ19uZXcpOiBIYW5kbGUgUkVUVVJOX09OX0FMTE9DQVRJT05fRkFJTFVSRSBjYXNlLgoJKGR5bl9zdHJpbmdfcmVsZWFzZSk6IERlbGV0ZSB0aGUgZHluX3N0cmluZy4KCShkeW5fc3RyaW5nX3Jlc2l6ZSk6IEhhbmRsZSBSRVRVUk5fT05fQUxMT0NBVElPTl9GQUlMVVJFIGNhc2UuCgkoZHluX3N0cmluZ19jb3B5KTogQ2hhbmdlIHJldHVybiB0eXBlIHRvIGludC4KCShkeW5fc3RyaW5nX2NvcHlfY3N0cik6IExpa2V3aXNlLgoJKGR5bl9zdHJpbmdfcHJlcGVuZCk6IExpa2V3aXNlLgoJKGR5bl9zdHJpbmdfcHJlcGVuZF9jc3RyKTogTGlrZXdpc2UuCgkoZHluX3N0cmluZ19pbnNlcnQpOiBMaWtld2lzZS4KCShkeW5fc3RyaW5nX2luc2VydF9jc3RyKTogTGlrZXdpc2UuCgkoZHluX3N0cmluZ19hcHBlbmQpOiBMaWtld2lzZS4KCShkeW5fc3RyaW5nX2FwcGVuZF9jc3RyKTogTGlrZXdpc2UuCgkoZHluX3N0cmluZ19hcHBlbmRfY2hhcik6IExpa2V3aXNlLgoJKGR5bl9zdHJpbmdfc3Vic3RyaW5nKTogTGlrZXdpc2UuCgoyMDAwLTA2LTA5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjcC1kZW1hbmdsZS5jIChkZW1hbmdsZV9vcGVyYXRvcl9uYW1lKTogQWRkIHNwYWNlcyBiZWZvcmUKCW5hbWVzIGJlZ2lubmluZyB3aXRoIGEgbGV0dGVyOiBkZWxldGUsIGRlbGV0ZVtdLCBuZXcsIG5ld1tdLAoJc2l6ZW9mLgoJKGRlbWFuZ2xlX3NwZWNpYWxfbmFtZSk6IEhhbmRsZSBURiA8dHlwZT4gYW5kIFRKIDx0eXBlPi4KClRodSBKdW4gIDggMTg6NTI6MjQgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBjcC1kZW1hbmdsZS5jICh0ZW1wbGF0ZV9hcmdfbGlzdF9uZXcpOiBSZXZlcnQgcHJldmlvdXMgUEFSQU1TIHBhdGNoLgoKVGh1IEp1biAgOCAwOToyNTo1NCAyMDAwICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGNwLWRlbWFuZ2xlLmMgKHN0ZGlvLmgpOiBGaWxlIGluY2x1ZGVkIHVuY29uZGl0aW9uYWx5LgoJKHRlbXBsYXRlX2FyZ19saXN0X25ldyk6IFBhcmFtZXRlciBsaXN0IGlzIFBBUkFNUyAoKHZvaWQpKSwgbm90ICgpLgoJKiBkeW4tc3RyaW5nLmMgKHN0ZGlvLmgpOiBGaWxlIGluY2x1ZGVkLgoJKiBwYXJ0aXRpb24uYyAocGFydGl0aW9uX3ByaW50KTogTm8gYCYnIG5lZWRlZCB0byB0YWtlIHRoZSBhZGRyZXNzIG9mCglhIGZ1bmN0aW9uLgoKMjAwMC0wNi0wNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY29uZmlndXJlLmluIChhY19saWJpYmVydHlfd2Fybl9jZmxhZ3MpOiBBZGQgLXBlZGFudGljLgoKCSogY2hvb3NlLXRlbXAuYyAodHJ5LCBjaG9vc2VfdGVtcF9iYXNlLCBtYWtlX3RlbXBfZmlsZSk6IENvbnN0aWZ5LgoKCSogY3AtZGVtYW5nbGUuYyAoZGVtYW5nbGVfY2hhcik6IENoYW5nZSBwYXJhbWV0ZXIgZnJvbSBjaGFyIHRvIGludC4KCShkZW1hbmdsZV9leHByZXNzaW9uLCBkZW1hbmdsZV9leHByX3ByaW1hcnkpOiBSZW1vdmUgZXh0cmEKCXNlbWktY29sb24gaW4gcHJvdG90eXBlLgoKCSogZHluLXN0cmluZy5jIChkeW5fc3RyaW5nX2FwcGVuZF9jaGFyKTogQ2hhbmdlIHBhcmFtZXRlciBmcm9tCgljaGFyIHRvIGludC4KCgkqIG1lbWNtcC5jIChtZW1jbXApOiBDb25zdGlmeS4KCgkqIG1rc3RlbXBzLmMgKGdjY191aW50NjRfdCk6IE1hcmsgR05VQyBgbG9uZyBsb25nJyBjYXNlIHdpdGgKCV9fZXh0ZW5zaW9uX18uCgoJKiBwYXJ0aXRpb24uYyAoZWxlbV9jb21wYXJlKTogUHJvdG90eXBlLiAgRG9uJ3QgY2FzdCBhd2F5Cgljb25zdC1uZXNzLgoKCSogc2V0ZW52LmMgKHNldGVudik6IFVzZSBicmFjZXMgdG8gYXZvaWQgYW1iaWd1b3VzIGBlbHNlJy4KCjIwMDAtMDYtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChjcC1kZW1hbmdsZS5vKTogRGVwZW5kIG9uICQoSU5DRElSKS9kZW1hbmdsZS5oLgoKCSogY3AtZGVtYW5nbGUuYzogSW5jbHVkZSBkZW1hbmdsZS5oLgoJKHRlbXBsYXRlX2FyZ19saXN0X25ldyk6IERlQU5TSWZ5LgoJKGNwX2RlbWFuZ2xlKTogTWFrZSBzdGF0aWMgYW5kIGFkZCBwcm90b3R5cGUuCgkob3BlcmF0b3JfY29kZSwgb3BlcmF0b3JzKTogQ29uc3RpZnkuCgkoZGVtYW5nbGVfb3BlcmF0b3JfbmFtZSk6IExpa2V3aXNlIGZvciB2YXJpYWJsZXMgYHAxJywgYHAyJyBhbmQgYHAnLgoKMjAwMC0wNi0wNSAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWRlbWFuZ2xlLmMgKGRlbWFuZ2xlX3ByZWZpeCk6IENhc3QgYXJndW1lbnQgdG8gaXNkaWdpdCB0bwoJdW5zaWduZWQgY2hhci4KCShkZW1hbmdsZV91bnF1YWxpZmllZF9uYW1lKTogTGlrZXdpc2UuCgkoZGVtYW5nbGVfbnVtYmVyX2xpdGVyYWxseSk6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX3R5cGUpOiBMaWtld2lzZS4KCShkZW1hbmdsZV9zdWJzdGl0dXRpb24pOiBMaWtld2lzZS4KCShpc19tYW5nbGVkX2NoYXIpOiBMaWtld2lzZSwgZm9yIGlzYWxudW0uCgoyMDAwLTA2LTA0ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBjcC1kZW1hbmdsZS5jIGFuZCBkeW4tc3RyaW5nLmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIGNwLWRlbWFuZ2xlLm8gYW5kIGR5bi1zdHJpbmcuby4KCShjcC1kZW1hbmdsZS5vKTogTmV3IGRlcGVuZGVuY3kuCgkoZHluLXN0cmluZy5vKTogTGlrZXdpc2UuCgoJKiBkeW4tc3RyaW5nLmM6IE1vdmUgaGVyZSBmcm9tIGdjYy9keW4tc3RyaW5nLmMuICBBZGQgbmV3IGZ1bmN0aW9ucy4KCgkqIGNwbHVzLWRlbS5jIChsaWJpYmVydHlfZGVtYW5nbGVycyk6IEFkZCBpbml0aWFsaXplciBmb3IgbmV3LUFCSQoJZGVtYW5nbGVyLgoJKGNwbHVzX2RlbWFuZ2xlKTogQ2FsbCBjcGx1c19kZW1hbmdsZV9uZXdfYWJpIGlmIGluIG5ldy1BQkkKCWRlbWFuZ2xpbmcgbW9kZS4KCShnbnVfbmV3X2FiaV9zeW1ib2xfY2hhcmFjdGVycyk6IE5ldyBmdW5jdGlvbi4KCShtYWluKTogVXNlIGdudV9uZXdfYWJpX3N5bWJvbF9jaGFyYWN0ZXJzLiAgKiBjcC1kZW1hbmdsZS5jOiBOZXcKCWZpbGUuCgkqIGNwLWRlbWFuZ2xlLmM6IE5ldyBmaWxlLgoKVHVlIE1heSAzMCAxNjo0NToyNSAyMDAwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBmbG9hdGZvcm1hdC5jOiBBZGQgbmFtZSB0byBlYWNoIGZsb2F0Zm9ybWF0IGZpZWxkLgoKVHVlIE1heSAzMCAxNTowNzo1MiAyMDAwICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAob2JqYWxsb2Mubyk6IERlcGVuZCBvbiBjb25maWcuaAoKMjAwMC0wNS0yOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaGFzaHRhYi5jLCBwYXJ0aXRpb24uYywgc29ydC5jLCB4bWVtZHVwLmM6IEluY2x1ZGUgc3RyaW5nLmgKCWlmIEhBVkVfU1RSSU5HX0guCgkqIHBleGVjdXRlLmMsIHhleGl0LmM6IEluY2x1ZGUgc3RkbGliLmggaWYgSEFWRV9TVERMSUJfSC4KCSogb2JqYWxsb2MuYzogSW5jbHVkZSBjb25maWcuaC4gIEluY2x1ZGUgc3RkbGliLmggYW5kIGRvbid0CglkZWNsYXJlIG1hbGxvYyBvciBmcmVlIGlmIEhBVkVfU1RETElCX0guCgkqIHN0cmVycm9yLmMsIHN0cnNpZ25hbC5jOiBJbmNsdWRlIHN0ZGxpYi5oIGlmIEhBVkVfU1RETElCX0gsCgllbHNlIGRlY2xhcmUgbWFsbG9jIHdpdGhvdXQgcHJvdG90eXBlLiAgSW5jbHVkZSBzdHJpbmcuaCBpZgoJSEFWRV9TVFJJTkdfSCwgZWxzZSBkZWNsYXJlIG1lbXNldCB3aXRob3V0IHByb3RvdHlwZS4gIERvbid0CglpbmNsdWRlIHN0ZGRlZi5oLgoKMjAwMC0wNS0yMyAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHhtYWxsb2Mubyk6IEFkZCBkZXBlbmRlbmN5IGZvciBjb25maWcuaCwgZml4ZXMgbWFrZQoJLWozLgoKMjAwMC0wNS0xOCAgSi4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiB4bWFsbG9jLmM6IEluY2x1ZGUgY29uZmlnLmggZm9yIEhBVkVfU0JSSyBkZWZpbml0aW9uLgoKMjAwMC0wNS0xNiAgSG9yc3Qgdm9uIEJyYW5kIDx2b25icmFuZEBzbGVpcG5pci52YWxwYXJhaXNvLmNsPgoKCSogaGFzaHRhYi5jIChoYXNoX3BvaW50ZXIpOiBEZWxldGUgbG93LW9yZGVyIGJpdHMgd2hpY2ggYXJlCglwcm9iYWJseSB6ZXJvLCBhbHNvIGVsaW1pbmF0ZSBhIHdhcm5pbmcgb24gYWxwaGEuCgoyMDAwLTA1LTE1ICBEYXZpZCBFZGVsc29obiAgPGVkZWxzb2huQGdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbjogQ2hhbmdlICJwaWMiIHRvIGRlcGVuZCBvbiAkKFBJQ0ZMQUcpLCBub3QKCW9uICQoZW5hYmxlX3NoYXJlZCkuCgoyMDAwLTA1LTEwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNvbmZpZy50YWJsZTogVXNlIG1oLXNwYXJjcGljIGZvciBzcGFyYyotKi0qLgoKMjAwMC0wNS0wOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgc3RybmNtcC5jLgoJKE5FRURFRCk6IEFkZCBzdHJuY21wLgoKMjAwMC0wNS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BsdXMtZGVtLmMgKGNwbHVzX2RlbWFuZ2xlX29wbmFtZSwgZGVtYW5nbGVfZnVuY3Rpb25fbmFtZSk6CglDYXN0IHRoZSBhcmd1bWVudHMgdG8gYGlzbG93ZXInIHRvIGB1bnNpZ25lZCBjaGFyJy4KCShwcmludF9kZW1hbmdsZXJfbGlzdCk6IFByb3RvdHlwZS4KClRodSBNYXkgIDQgMTc6MTQ6NDEgMjAwMCAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBzb3J0LmMgKFVDSEFSX01BWCk6IFByb3ZpZGUgZmFsbGJhY2sgZGVmaW5pdGlvbi4KCjIwMDAtMDQtMjkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKG1haW50YWluZXItY2xlYW4tc3ViZGlyKTogRml4IGhhbmRsaW5nIG9mIGVtcHR5CglTVUJESVJTLgoKMjAwMC0wNC0yOCAgS2VubmV0aCBCbG9jayAgPGJsb2NrQHprMy5kZWMuY29tPgoJICAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGxpYmliZXJ0eV9kZW1hbmdsZXJzKTogTmV3IHRhYmxlIGZvciBkZW1hbmdsZSBzdHlsZXMuCgkoY3BsdXNfZGVtYW5nbGVfc2V0X3N0eWxlKTogTmV3IGZ1bmN0aW9uIGZvciBzZXR0aW5nIHN0eWxlLgoJKGNwbHVzX2RlbWFuZ2xlX25hbWVfdG9fc3R5bGUpOiBOZXcgZnVuY3Rpb24gdG8gdHJhbnNsYXRlIG5hbWUuCgoyMDAwLTA0LTI3ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBhY2xvY2FsLm00OiBOZXcgZmlsZSB3aXRoIG5ldyB0ZXN0IGxpYmliZXJ0eV9BQ19GVU5DX1NUUk5DTVAuCgoJKiBjb25maWd1cmUuaW4gKEFDX0NIRUNLX0hFQURFUlMpOiBBZGQgc3lzL21tYW4uaCBmY250bC5oLgoJKGxpYmliZXJ0eV9BQ19GVU5DX1NUUk5DTVApOiBJbnZva2UuCgoJKiBzdHJuY21wLmM6IE5ldyBmaWxlLgoKVGh1IEFwciAyNyAxNjo1ODo0MyBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIGhhc2h0YWIuYyAoaHRhYl9leHBhbmQpOiBBZGQgcHJvdG90eXBlLgoJKGZpbmRfZW1wdHlfc2xvdF9mb3JfZXhwYW5kKTogTGlrZXdpc2UuCgoyMDAwLTA0LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBoYXNodGFiLmMgKGhhc2hfcG9pbnRlciwgZXFfcG9pbnRlcik6IE1ha2UgZGVmaW5pdGlvbiBzdGF0aWMgdG8KCW1hdGNoIHByb3RvdHlwZS4KCShodGFiX2V4cGFuZCk6IENhc3QgdGhlIHJldHVybiB2YWx1ZSBvZiB4Y2FsbG9jLgoKMjAwMC0wNC0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGhhc2h0YWIuYyAoaGFzaF9wb2ludGVyKTogTmV3IGZ1bmN0aW9uLgoJKGVxX3BvaW50ZXIpOiBMaWtld2lzZS4KCShodGFiX2hhc2hfcG9pbnRlcik6IE5ldyB2YXJpYWJsZS4KCShodGFiX2VxX3BvaW50ZXIpOiBMaWtld2lzZS4KCjIwMDAtMDQtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzb3J0LmMgKHNvcnRfcG9pbnRlcnMpOiBGaXggZW5kaWFubmVzcyBidWdzLgoKCSogc29ydC5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBzb3J0LmMKCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgc29ydC5vLgoJKHNvcnQubyk6IE5ldyB0YXJnZXQuCgoyMDAwLTA0LTIxICBNaWNoYWVsIFNva29sb3YgIDxtc29rb2xvdkBpdmFuLkhhcmhhbi5PUkc+CgoJKiBNYWtlZmlsZS5pbiAoKi1zdWJkaXIpOiBSZXZhbXAgc2xpZ2h0bHkgdG8gYXZvaWQgbG9zaW5nIG9uCgk0LjNCU0Qgc3lzdGVtcy4KClR1ZSBBcHIgMTggMTY6MjM6MzEgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGhhc2h0YWIuYzogVmFyaW91cyBtaW5vciBjbGVhbnVwcy4KCShodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBJTlNFUlQgaXMgbm93IGVudW0gaW5zZXJ0X29wdGlvbi4KCShodGFiX2ZpbmRfc2xvdCk6IExpa2V3aXNlLgoKMjAwMC0wNC0xNiAgRGF2ZSBQaXR0cyAgPGRwaXR0c0Bjb3p4LmNvbT4KCgkqIGNwbHVzLWRlbS5jIChjcGx1c19kZW1hbmdsZV9vcG5hbWUpOiBDaGFuZ2VkIHRvIHVzZSBpc2xvd2VyLgoKMjAwMC0wNC0wNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV9yZW1vdmUpOiBOZXcuCgoyMDAwLTAzLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaGFzaHRhYi5jIChmaW5kX2VtcHR5X3Nsb3RfZm9yX2V4cGFuZCk6IFVzZSBoYXNodmFsX3QgZm9yIGhhc2gKCWNvZGVzLgoJKGh0YWJfZmluZF93aXRoX2hhc2gpOiBMaWtld2lzZS4KCShodGFiX2ZpbmRfc2xvdF93aXRoX2hhc2gpOiBMaWtld2lzZS4KCjIwMDAtMDMtMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGhhc2h0YWIuYyAoaHRhYl9maW5kX3dpdGhfaGFzaCk6IEF2b2lkIGNhbGN1bGF0aW5nIGhhc2gyCgl1bmxlc3MgaXQgd2lsbCBiZSB1c2VkLiAgUmVhcnJhbmdlIGxvb3AgZm9yIGJldHRlcgoJb3B0aW1pemF0aW9uLgoJKGhpZ2hlcl9wcmltZV9udW1iZXIpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KClRodSBNYXIgMTYgMDE6MzM6NTggMjAwMCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKHBhcnRpdGlvbi5vKTogRGVwZW5kIG9uIGNvbmZpZy5oCgoyMDAwLTAzLTE0ICBCZXJuZCBTY2htaWR0ICA8YmVybmRzQGN5Z251cy5jby51az4KCgkqIGhhc2h0YWIuYyAoZmluZF9lbXB0eV9zbG90X2Zvcl9leHBhbmQpOiBOZXcgZnVuY3Rpb24uCgkoaHRhYl9leHBhbmQpOiBVc2UgaXQgaW5zdGVhZCBvZiBodGFiX2ZpbmRfc2xvdC4KCShodGFiX2ZpbmRfd2l0aF9oYXNoKTogUmVuYW1lZCBmcm9tIGh0YWJfZmluZDsgbm93IGFjY2VwdHMgZXh0cmEKCWFyZ3VtZW50IEhBU0guCgkoaHRhYl9maW5kX3Nsb3Rfd2l0aF9oYXNoKTogTGlrZXdpc2UgZm9yIGh0YWJfZmluZF9zbG90LgoJKGh0YWJfZmluZCk6IE5ldyB3cmFwcGVyIGZ1bmN0aW9uLgoJKGh0YWJfZmluZF9zbG90KTogTGlrZXdpc2UuCgkoaHRhYl90cmF2ZXJzZSk6IFBhc3Mgc2xvdCwgbm90IGVudHJ5LCB0byBjYWxsZWQgZnVuY3Rpb24uCgoyMDAwLTAzLTA5ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBwYXJ0aXRpb24uYy4KCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgcGFydGl0aW9uLm8uCgkocGFydGl0aW9uLm8pOiBOZXcgcnVsZS4KCSogcGFydGl0aW9uLmM6IE5ldyBmaWxlLgoKMjAwMC0wMy0wOSAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaGFzaHRhYi5jIChodGFiX2NyZWF0ZSk6IFNldCBkZWxfZi4KCShodGFiX2RlbGV0ZSwgaHRhYl9lbXB0eSwgaHRhYl9yZW1vdmVfZWx0LCBodGFiX2NsZWFyX3Nsb3QpOgoJVXNlIGl0LgoKMjAwMC0wMy0wOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogaGFzaHRhYi5jOiBSZW1vdmUgZGVidWdnaW5nIHZhcmlhYmxlcyAoYWxsX3NlYXJjaGVzLAoJYWxsX2NvbGxpc2lvbnMsIGFsbF9leHBhbnNpb25zKS4gRGVsZXRlCglhbGxfaGFzaF90YWJsZV9jb2xsaXNpb25zLgoJKGNyZWF0ZV9oYXNoX3RhYmxlLCBkZWxldGVfaGFzaF90YWJsZSwgZW1wdHlfaGFzaF90YWJsZSwKCWZpbmRfaGFzaF90YWJsZV9lbnRyeSwgcmVtb3ZlX2VsZW1lbnRfZnJvbV9oYXNoX3RhYmxlX2VudHJ5LAoJY2xlYXJfaGFzaF90YWJsZV9zbG90LCB0cmF2ZXJzZV9oYXNoX3RhYmxlLCBoYXNoX3RhYmxlX3NpemUsCgloYXNoX3RhYmxlX2VsZW1lbnRzX251bWJlciwgaGFzaF90YWJsZV9jb2xsaXNpb25zKTogUmVuYW1lIHRvOgoJaHRhYl9jcmVhdGUsIGh0YWJfZGVsZXRlLCBodGFiX2VtcHR5LCBodGFiX2ZpbmRfc2xvdCwKCWh0YWJfcmVtb3ZlX2VsdCwgaHRhYl9jbGVhcl9zbG90LCBodGFiX3RyYXZlcnNlLCBodGFiX3NpemUsCglodGFiX2VsZW1lbnRzLCBodGFiX2NvbGxpc2lvbnMuCgkoaHRhYl9maW5kKTogTmV3IGZ1bmN0aW9uLCBoYW5kbGVzIGNvbW1vbiBjYXNlIHdoZXJlIHlvdSBkb24ndAoJcGxhbiB0byBhZGQgb3IgZGVsZXRlIGFuIGVudHJ5LgoJKGh0YWJfZXhwYW5kKTogRG9uJ3QgY3JlYXRlIGEgd2hvbGUgbmV3IHRhYmxlLCBqdXN0IGEgbmV3CgllbnRyeSB2ZWN0b3IuCgkoaHRhYl9maW5kX3Nsb3QpOiBTaW1wbGlmeSBsb2dpYy4KCjE5OTktMDgtMDMgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogZmxvYXRmb3JtYXQuYzogQWRkIGNhc3RzIHRvIGF2b2lkIHNpZ25lZC91bnNpZ25lZCB3YXJuaW5ncy4KCSogcGV4ZWN1dGUuYzogQWRkIEFUVFJJQlVURV9VTlVTRUQgYXMgbmVlZGVkIG9uIFVuaXguCgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbF90b19saWJkaXIpOiBDaGFuZ2UgJChUQVJHRVRMSUIpLm4gdG8KCSQoVEFSR0VUTElCKW4gc28gaXQgd29ya3Mgb24gTVNET1MuCgkoaW5zdGFsbF90b190b29sZGlyKTogTGlrZXdpc2UuCgoxOTk5LTA3LTIxICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQHplbWJ1LmNvbT4KCglGcm9tIE1hcmsgRWxicmVjaHQ6CgkqIG1ha2VmaWxlLmRvczogUmVtb3ZlOyBvYnNvbGV0ZS4KCSogY29uZmlndXJlLmJhdDogUmVtb3ZlOyBvYnNvbGV0ZS4KCjE5OTktMDctMTEgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogc3BsYXktdHJlZS5jIChzcGxheV90cmVlX2luc2VydCk6IEFkZCBpbml0aWFsaXphdGlvbiB0byBhdm9pZAoJd2FybmluZy4KCjIwMDAtMDEtMDQgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogcGV4ZWN1dGUuYzogQ29uZGl0aW9uYWxseSBpbmNsdWRlIHN0cmluZy5oLgoJKGZpeF9hcmd2KTogSGFuZGxlIGVtYmVkZGVkIHdoaXRlc3BhY2UgaW4gYXJncyBmb3IgTWluZ3czMi4KCjIwMDAtMDEtMDQgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoYWNfbGliaWJlcnR5X3dhcm5fY2ZsYWdzKTogVHVybiBvbiB3YXJuaW5ncyBpZgoJd2UncmUgdXNpbmcgZ2NjLgoKCSogTWFrZWZpbGUuaW4gKENPTVBJTEUuYyk6IEFkZCBAYWNfbGliaWJlcnR5X3dhcm5fY2ZsYWdzQAoKMTk5OS0xMi0yNyAgR2VvZmYgS2VhdGluZyAgPGdlb2Zma0BjeWdudXMuY29tPgoKCSogdmFzcHJpbnRmLmMgKGludF92YXNwcmludGYpOiBEb24ndCByZS1yZWFkIHRoZSBmb3JtYXQgY2hhcmFjdGVyCglhcyB0aGlzIG1pc2hhbmRsZXMgc3RyaW5ncyBsaWtlICclJXMnLgoKMTk5OS0xMi0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV9uZXcpOiBVc2Ugc3RydWN0IHNwbGF5X3RyZWVfbm9kZV9zCglyYXRoZXIgdGhhbiBzdHJ1Y3Qgc3BsYXlfdHJlZV9ub2RlLgoJKHNwbGF5X3RyZWVfaW5zZXJ0KTogVXNlIHN0cnVjdCBzcGxheV90cmVlX3MgcmF0aGVyIHRoYW4gc3RydWN0CglzcGxheV90cmVlLgoKU3VuIE5vdiAyOCAwMDo1OTozOSAxOTk5ICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIGhhc2h0YWIuYyAoc3lzL3R5cGVzLmgpOiBGaWxlIGluY2x1ZGVkLgoKMTk5OS0xMS0yMiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBzdHJ0b3VsLmMsIHN0cnRvbC5jLCByYW5kb20uYzogUmVtb3ZlIGFkdmVydGlzaW5nIGNsYXVzZSBmcm9tCglCU0QgbGljZW5zZSwgcHVyc3VhbnQgd2l0aAoKCSAgZnRwOi8vZnRwLmNzLmJlcmtlbGV5LmVkdS9wdWIvNGJzZC9SRUFETUUuSW1wdC5MaWNlbnNlLkNoYW5nZQoKV2VkIE5vdiAxMCAwOTo0MjozOSAxOTk5ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBoYXNodGFiLmM6IEluY2x1ZGUgc3RkaW8uaC4KCk1vbiBOb3YgIDggMDk6MjM6NDEgMTk5OSAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogaGFzaHRhYi5jICh0cmF2ZXJzZV9oYXNoX3RhYmxlKTogUHJvdGVjdCBwcm90b3R5cGUgd2l0aCBQQVJBTVMuCgpUdWUgTm92ICAyIDAzOjIzOjEzIDE5OTkgIFBoaWxpcHBlIERlIE11eXRlciAgPHBoZG1AbWFjcWVsLmJlPgoKCSogeHN0cmR1cCAoc3lzL3R5cGVzLmgpOiBJbmNsdWRlIHRoaXMgZmlsZS4KCjE5OTktMTAtMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGFjbS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoU1VCRElSUyk6IE5ldyBtYWNyby4KCShtb3N0bHljbGVhbiwgY2xlYW4sIGRpc3RjbGVhbiwgbWFpbnRhaW5lci1jbGVhbik6IEFkanVzdCB0bwoJYXZvaWQgbXVsdGlwbGUgc3ViZGlyZWN0b3J5IGNsZWFuaW5nLgoJKCotc3ViZGlyKTogVXNlIFNVQkRJUlMuCgoxOTk5LTEwLTI1ICBKaW0gS2luZ2RvbiAgPGh0dHA6Ly9kZXZlbG9wZXIucmVkaGF0LmNvbS8+CgoJKiBjcGx1cy1kZW0uYzogTW92ZSBkZWNsYXJhdGlvbnMgb2Ygc3RhbmRhcmRfc3ltYm9sX2NoYXJhY3RlcnMgYW5kCglocF9zeW1ib2xfY2hhcmFjdGVycyBpbnNpZGUgI2lmZGVmIE1BSU4gdG8gYXZvaWQgY29tcGlsZXIKCXdhcm5pbmdzLgoKMTk5OS0xMC0yMyAwODo1MSAtMDcwMCAgWmFjayBXZWluYmVyZyAgPHphY2tAYml0bW92ZXIuY29tPgoKCSogaGFzaHRhYi5jIChmaW5kX2hhc2hfdGFibGVfZW50cnkpOiBXaGVuIHJldHVybmluZyBhCglERUxFVEVEX0VOVFJZIHNsb3QsIGNoYW5nZSBpdCB0byBFTVBUWV9FTlRSWSBmaXJzdC4KCShjbGVhcl9oYXNoX3RhYmxlX3Nsb3QpOiBOZXcgZnVuY3Rpb24gd2hpY2ggZGVsZXRlcyBhbiBlbnRyeQoJYnkgaXRzIHBvc2l0aW9uIGluIHRoZSB0YWJsZSwgbm90IGl0cyB2YWx1ZS4KCSh0cmF2ZXJzZV9oYXNoX3RhYmxlKTogTmV3IGZ1bmN0aW9uIHdoaWNoIGNhbGxzIGEgaG9vawoJZnVuY3Rpb24gZm9yIGV2ZXJ5IGxpdmUgZW50cnkgaW4gdGhlIHRhYmxlLgoKMTk5OS0xMC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwbHVzLWRlbS5jIChJTlRCVUZfU0laRSk6IE5ldyBtYWNyby4KCShzdHJpbmdfYXBwZW5kX3RlbXBsYXRlX2lkeCk6IE5ldyBmdW5jdGlvbi4KCShkZW1hbmdsZV9leHByZXNzaW9uKTogTGlrZXdpc2UuCgkoZGVtYW5nbGVfaW50ZWdyYWxfdmFsdWUpOiBVc2UgaXQuCgkoZGVtYW5nbGVfcmVhbF92YWx1ZSk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20gLi4uCgkoZGVtYW5nbGVfdGVtcGxhdGVfdmFsdWVfcGFybSk6IC4uLiBoZXJlLiAgVXNlCglzdHJpbmdfYXBwZW5kX3RlbXBsYXRlX2lkeC4gIFVzZSBkZW1hbmdsZV9yZWFsX3ZhbHVlLgoJKGRlbWFuZ2xlX3RlbXBsYXRlKTogVXNlIHN0cmluZ19hcHBlbmRfdGVtcGxhdGVfaWR4LgoJKGRlbWFuZ2xlX3F1YWxpZmllZCk6IFVzZSBjb25zdW1lX2NvdW50X3dpdGhfdW5kZXJzY29yZXMuCgkoZ2V0X2NvdW50KTogVHdlYWsgZm9ybWF0dGluZy4KCShkb190eXBlKTogVXNlIHN0cmluZ19hcHBlbmRfdGVtcGxhdGVfaWR4LgoKMTk5OS0xMC0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2FsbG9jLmM6IEFkZCBhIHB1YmxpYyBkb21haW4gbm90aWNlLgoKTW9uIE9jdCAxOCAwMjozMDo0NyAxOTk5ICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIHNldGVudi5jIChzeXMvdHlwZXMuaCwgc3RkaW8uaCk6IEluY2x1ZGUgdGhvc2UgZmlsZXMgdW5jb25kaXRpb25hbHkuCgpGcmkgT2N0IDE1IDAxOjQ3OjUxIDE5OTkgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkBsb29ueS5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBoYXNodGFiLmMKCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgaGFzaHRhYi5vCgkoaGFzaHRhYi5vKTogQWRkIGRlcGVuZGVuY2llcy4KCSogaGFzaHRhYi5jOiBOZXcgZmlsZQoKV2VkIE9jdCAxMyAwMToxNjo0NyAxOTk5ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGJhc2VuYW1lLmMgKERJUl9TRVBBUkFUT1IpOiBOZXcgbWFjcm8uCgkoRElSX1NFUEFSQVRPUl8yKTogTGlrZXdpc2UuCgkoSEFWRV9ET1NfQkFTRURfRklMRVNZU1RFTSk6IExpa2V3aXNlLgoJKElTX0RJUl9TRVBBUkFUT1IpOiBMaWtld2lzZS4KCShtYWluKTogSGFuZGxlIE1TRE9TIHN0eWxlIHBhdGhuYW1lLgoKMTk5OS0xMC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkb190eXBlKTogSGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVyIHR5cGVzIHdob3NlCgllbmNsb3NpbmcgY2xhc3NlcyBoYXZlIG5hbWVzcGFjZSBzY29wZS4KClN1biBPY3QgMTAgMDE6MjM6NTAgMTk5OSAgTWFyYyBFc3BpZSA8ZXNwaWVAY3ZzLm9wZW5ic2Qub3JnPgoKCSogY29uZmlnLnRhYmxlOiAgUHJvdmlkZSBhIGJhY2t1cCBzaGVsbCBmb3IgZXhlY3V0aW5nIG1vdmUtaWYtY2hhbmdlLgoKMTk5OS0xMC0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHhtYWxsb2MuYyAoeG1hbGxvYyk6IEZpeCBzcGVsbGluZyBlcnJvci4KCSh4Y2FsbG9jLCB4cmVhbGxvYyk6IExpa2V3aXNlLgoKMTk5OS0xMC0wMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BsdXMtZGVtLmMgKGZhbmN5X2Fib3J0LCBkZW1hbmdsZV9pbnRlZ3JhbF92YWx1ZSwKCWRlbWFuZ2xlX2FybV9ocF90ZW1wbGF0ZSwgcmVjdXJzaXZlbHlfZGVtYW5nbGUsCglzdGFuZGFyZF9zeW1ib2xfY2hhcmFjdGVycywgaHBfc3ltYm9sX2NoYXJhY3RlcnMsIG1haW4pOiBBZGQgcHJvdG90eXBlLgoJKHByb2dyYW1fbmFtZSwgcHJvZ3JhbV92ZXJzaW9uLCBmYXRhbCk6IENvbnN0aWZ5IGEgY2hhciouCgkodXNhZ2UsIGZhdGFsKTogTWFyayB3aXRoIEFUVFJJQlVURV9OT1JFVFVSTi4KCShtYWluKTogQ2FsbCByZXR1cm4sIG5vdCBleGl0LgoKMTk5OS0wOS0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2hvb3NlLXRlbXAuYzogUmVtb3ZlIG9ic29sZXRlIGNvbW1lbnQgYWJvdXQgZ2NjLgoJKG1ha2VfdGVtcF9maWxlKTogQ29uc3RpZnkgYSBjaGFyKi4KCldlZCBTZXAgIDggMjA6MDM6MjggMTk5OSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogeG1lbWR1cC5jOiBJbmNsdWRlIHN5cy90eXBlcy5oLgoKMTk5OS0wOS0wNyAgSmVmZiBHYXJ6aWsgIDxqZ2FyemlrQHBvYm94LmNvbT4KCgkqIHhtZW1kdXAuYzogTmV3IHhtZW1kdXAgZnVuY3Rpb24uCgkqIE1ha2VmaWxlLmluLCBtYWtlZmlsZS52bXMsIHZtc2J1aWxkLmNvbTogIFVzZSB4bWVtZHVwLltjb10uCgpUdWUgU2VwICA3IDIzOjMyOjE4IDE5OTkgIExpbmFzIFZlcHN0YXMgIDxsaW5hc0BsaW5hcy5vcmc+CgoJKiBjb25maWcudGFibGU6IEFkZCBvcGVuZWRpdGlvbiB0YXJnZXQuCgkqIGNvbmZpZy9taC1vcGVuZWRpdGlvbjogTmV3IGZpbGUuCgpUaHUgU2VwICAyIDAxOjM2OjEyIDE5OTkgIE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIHBleGVjdXRlLmMgKHBleGVjdXRlKTogIEZpbGwgaW4gdGVtcF9iYXNlIHdoZW4gbmVlZGVkLgoKMTk5OS0wOC0zMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIGdldHB3ZC5jOiBDaGVjayBIQVZFX0dFVENXRCBiZWZvcmUgZGVmaW5pbmcgaXQgYXdheS4KCjE5OTktMDgtMzAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgY2FsbG9jLmMgYW5kIGdldHB3ZC5jLgoJKFJFUVVJUkVEX09GSUxFUyk6IEFkZCBnZXRwd2Quby4KCShnZXRwd2Qubyk6IEFkZCB0YXJnZXQuCgoJKiBjb25maWd1cmUuaW4gKEFDX1BSRVJFUSk6IEJ1bXAgdG8gMi4xMy4KCShBQ19DSEVDS19IRUFERVJTKTogQWRkIGNoZWNrIGZvciA8c3lzL3N0YXQuaD4uCgoJKiBnZXRwd2QuYzogTmV3IGZpbGUsIG1vdmVkIGhlcmUgZnJvbSBnY2MuCgoxOTk5LTA4LTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcGx1cy1kZW0uYyAoZ251X3NwZWNpYWwpOiBDYXN0IGEgYHNpemVfdCcgdG8gYGxvbmcnIHdoZW4KCWNvbXBhcmluZyBhZ2FpbnN0IGEgc2lnbmVkIHF1YW50aXR5LgoJKGFybV9zcGVjaWFsKTogTGlrZXdpc2UuCgkoZGVtYW5nbGVfZnVuZF90eXBlKTogTGlrZXdpc2UuCgkoZG9faHBhY2NfdGVtcGxhdGVfY29uc3RfdmFsdWUpOiBNYXJrIHBhcmFtZXRlciBgd29yaycgd2l0aAoJQVRUUklCVVRFX1VOVVNFRC4KCShtYWluKTogQ29uc3RpZnkgdmFyaWFibGUgYHZhbGlkX3N5bWJvbHMnLgoKVHVlIEF1ZyAyNCAwMjo1MDo0NSAxOTk5ICBQaGlsaXBwZSBEZSBNdXl0ZXIgIDxwaGRtQG1hY3FlbC5iZT4KCgkqIHN0cnRvdWwuYyAoc3RydG91bCk6IEFkZCBwYXJlbnRoZXNlcyBhcm91bmQgJiYgd2l0aGluIHx8LgoKRnJpIEF1ZyAgNiAyMzozMjoyOSAxOTk5ICBEYW5pZWwgSmFjb2Jvd2l0eiA8ZHJvd0Bkcm93LnRoZW0ub3JnPgoKCSogTWFrZWZpbGUuaW4gKEZMQUdTX1RPX1BBU1MpOiBJbmNsdWRlIHByZWZpeCwgZXhlY19wcmVmaXgsCglsaWJkaXIsIGxpYnN1YmRpciBhbmQgdG9vbGRpci4KCjE5OTktMDgtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmMgKHNwbGF5X3RyZWVfaW5zZXJ0KTogUmV0dXJuIHRoZSBuZXcgbm9kZS4KCjE5OTktMDctMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBhcmd2LmM6IEluY2x1ZGUgc3RkbGliLmggYW5kIHN0cmluZy5oIGluc3RlYWQgb2YKCXByb3RvdHlwaW5nIGRpcmVjdGx5LgoJKiBjaG9vc2UtdGVtcC5jOiBDb25kaXRpb25hbGx5IGluY2x1ZGUgc3RyaW5nLmguCgoxOTk5LTA3LTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AeW9yaWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoTkVFREVEKTogQWRkIGJjbXAsIGJjb3B5LCBiemVyby4KCjE5OTktMDctMTEgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AemVtYnUuY29tPgoKCSogc3BsYXktdHJlZS5jIChzcGxheV90cmVlX2luc2VydCk6IEFkZCBpbml0aWFsaXphdGlvbiB0byBhdm9pZAoJd2FybmluZy4KCjE5OTktMDctMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChuZWVkZWQtbGlzdCk6IE9ubHkgaW5jbHVkZSBzdHVmZiB3ZSBhY3R1YWxseSBuZWVkCglmb3IgbGlic3RkYysrLgoKMTk5OS0wNi0yMSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uY3MudW5pLWRvcnRtdW5kLmRlPgoKCSogY29uZmlndXJlLmluIChjaGVja2Z1bmNzKTogQWRkIGdldHRpbWVvZmRheS4KCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlZ2VuZXJhdGVkLgoKTW9uIEp1biAyMSAwNTo1NjowMSAxOTk5ICBNdW1pdCBLaGFuICA8a2hhbkB4cmF5bGl0aC53aXNjLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbiAoKi0qLXV3aW4qKTogVVdJTiBoYXMgc3lzX3tlcnJsaXN0LG5lcnJ9IGV2ZW4gaWYKCXRoZSB0ZXN0IGZhaWxzLgoJKiBjb25maWd1cmU6IFJlZ2VuZXJhdGUuCgoxOTk5LTA2LTEwICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoc2V0ZW52Lm8pOiBBZGQgY29uZmlnLmggZGVwIGZvciBzZXRlbnYubyB0byBmaXgKCXBhcmFsbGVsIGJ1aWxkcy4KCjE5OTktMDUtMjggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHB1dGVudi5jOiBJbmNsdWRlIGFuc2lkZWNsLmggdG8gZGVmaW5lIGBjb25zdCcuCgkqIHNldGVudi5jOiBMaWtld2lzZS4KCldlZCBNYXkgMjYgMDM6NTg6MjAgMTk5OSAgIk1lbGlzc2EgTydOZWlsbCIgPG9uZWlsbEBjcy5zZnUuY2E+CgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIHB1dGVudi5jIGFuZCBzZXRlbnYuYy4KCSogY29uZmlndXJlLmluIChmdW5jcyk6IEFkZCBwdXRlbnYgYW5kIHNldGVudi4KCShBQ19DSEVDS19GVU5DUyk6IENoZWNrIGZvciBwdXRlbnYgYW5kIHNldGVudi4KCSogY29uZmlndXJlOiBSZWJ1aWx0LgoJKiBwdXRlbnYuYyBzZXRlbnYuYzogTmV3IGZpbGVzLgoKCSogZ2V0Y3dkLmMgKGdldGN3ZCk6IElmIHBhdGhuYW1lIGlzIE5VTEwsIHRoZW4gb2J0YWluIFNJWkUKCWJ5dGVzIG9mIHNwYWNlIHVzaW5nIG1hbGxvYy4KCk1vbiBNYXkgMTcgMDE6NDI6MzQgMTk5OSAgU3R1IEdyb3NzbWFuICA8Z3Jvc3NtYW5AYmFieWxvbi01LmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfZnVuZF90eXBlIChuZWFyICdJJyBjYXNlKSk6IERvbid0IGFkdmFuY2UKCXRoZSAqbWFuZ2xlZCBwb2ludGVyIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBzdHJpbmcuICBDbGVhbiB1cCBjb2RlIHRvCgltYXRjaCBwcmV2YWlsaW5nIGNvZGluZyBzdHlsZS4KCjE5OTktMDUtMTMgIE1pY2hhZWwgSGF5ZXMgIDxtLmhheWVzQGVsZWMuY2FudGVyYnVyeS5hYy5uej4KCgkqIHRtcG5hbS5jIChMX3RtcG5hbSk6IEZpeCB0eXBvLgoKVGh1IE1heSAxMyAwMToxNDo0NiAxOTk5IE1hcmMgRXNwaWUgPGVzcGllQGN2cy5vcGVuYnNkLm9yZz4KCgkqIGNwbHVzLWRlbS5jIChzdGFuZGFyZF9zeW1ib2xfY2hhcmFjdGVycyk6IFJlbmFtZWQgZnJvbQoJc3RhbmRhcmRfc3ltYm9sX2FscGhhYmV0LiAgTm8gbG9uZ2VyIG1vZGlmeSBUQUJMRS4KCShocF9zeW1ib2xfY2hhcmFjdGVycyk6IFJlbmFtZWQgZnJvbSBocF9zeW1ib2xfYWxwaGFiZXQuICBObyBsb25nZXIKCW1vZGlmeSBUQUJMRS4KCShtYWluKTogQ29ycmVzcG9uZGluZyBjaGFuZ2VzLiAgVXNlIHN0cmNociB0byBkZXRlcm1pbmUgaWYgYQoJY2hhcmFjdGVyIGlzIHZhbGlkLgoKMTk5OS0wNS0xMSAgSmltIEJsYW5keSAgPGppbWJAendpbmdsaS5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKG1haW4pOiBVc2UgdGFibGUgbG9va3VwIHRvIGRpc3Rpbmd1aXNoIGlkZW50aWZpZXIKCWNoYXJhY3RlcnMgZnJvbSBub24taWRlbnRpZmllciBjaGFyYWN0ZXJzLgoJKHN0YW5kYXJkX3N5bWJvbF9hbHBoYWJldCwgaHBfc3ltYm9sX2FscGhhYmV0KTogTmV3IGZ1bmN0aW9ucy4KClRodSBNYXkgIDYgMjA6MzQ6NDIgMTk5OSAgRnJlZCBGaXNoICA8Zm5mQGJlLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbiAoc3lzL3Jlc291cmNlLmgpOiBBZGQgdG8gQUNfQ0hFQ0tfSEVBREVSUyBsaXN0LgoJKiBnZXRydW50aW1lLmM6IE9ubHkgYXR0ZW1wdCB0byBpbmNsdWRlIHN5cy9yZXNvdXJjZS5oIGFuZAoJdXNlIGdldHJ1c2FnZSBpZiBib3RoIEhBVkVfR0VUUlVTQUdFIGFuZCBIQVZFX1NZU19SRVNPVVJDRV9ICglhcmUgZGVmaW5lZC4KCk1vbiBBcHIgMjYgMDE6MzY6MDYgMTk5OSAgRG9ubiBUZXJyeSAoZG9ubkBpbnRlcml4LmNvbSkKCgkqIGNvbmZpZ3VyZS5pbiAoYWxsb2NhIGRldGVjdGlvbik6IEhhbmRsZSBhbGxvY2EgZGlyZWN0bHkgZm9yIGludGVyaXguCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KClN1biBBcHIgMjUgMDE6MTg6MjEgMTk5OSAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBjaG9vc2UtdGVtcC5jIChESVJfU0VQQVJBVE9SKTogVXNlICdcXCcgb25seSBmb3IgbmF0aXZlIHdpbmRvd3MzMi4KCjE5OTktMDQtMjAgIEppbSBCbGFuZHkgIDxqaW1iQHp3aW5nbGkuY3lnbnVzLmNvbT4KCglGaXggZnJvbSBEYWxlIEhhd2tpbnM6CgkqIGNwbHVzLWRlbS5jIChtb3BfdXApOiBTZXQgdHlwZXZlY19zaXplIHRvIHplcm8sIHNvIGl0J2xsIGJlCglyZWFsbG9jYXRlZCBwcm9wZXJseSBpZiB3ZSB1c2UgaXQgYWdhaW4uCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfZnVuZF90eXBlKTogQ2hlY2sgZm9yIGJ1ZmZlciBvdmVycnVuLiAgQmUKCXN0cmljdGVyIGFib3V0IHN5bnRheC4gIEFsd2F5cyBudWxsLXRlcm1pbmF0ZSBzdHJpbmcuCgpUaHUgQXByIDE1IDIzOjAwOjU1IDE5OTkgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogY29uZmlndXJlLmluIChjaGVja2Z1bmNzKTogQ2hlY2sgZm9yIHNicmsuCgkqIGNvbmZpZy5pbjogUmVidWlsdC4KCSogY29uZmlndXJlOiBMaWtld2lzZS4KCSogeG1hbGxvYy5jOiBVc2UgSEFWRV9TQlJLIGluc3RlYWQgb2YgdGhlIGhvc3Qgc3BlY2lmaWMgZGVmaW5pdGlvbnMuCgoxOTk5LTA0LTEyICBKaW0gQmxhbmR5ICA8amltYkB6d2luZ2xpLmN5Z251cy5jb20+CgoJRml4IGZyb20gTWFyY3VzIERhbmllbHM6CgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9mdW5kX3R5cGUpOiBEb24ndCBydW4gb2ZmIHRoZSBlbmQgb2YgdGhlCglpZGVudGlmaWVyIGxvb2tpbmcgZm9yIGFub3RoZXIgdW5kZXJzY29yZS4KClN1biBBcHIgMTEgMjM6MjA6NTkgMTk5OSAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBwZXhlY3V0ZS5jOiBDaGFuZ2UgYWxsIHJlZmVyZW5jZXMgdG8gX19VV0lOX18gdG8gX1VXSU4uCgkqIHhtYWxsb2MuYzogTGlrZXdpc2UuCgkoeGNhbGxvYyk6IFVXSU4gaGFzIHNicmsuCgkoeHJlYWxsb2MpOiBGaXggZ3VhcmQgbWFjcm8uCgoxOTk5LTA0LTExICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogYWxsb2NhLWNvbmYuaCAoYWxsb2NhKSBbQ19BTExPQ0FdOiBEb24ndCB1c2UgR2NjIGJ1aWx0aW4KCW9yIDxhbGxvY2EuaD4uCgkqIGNsb2NrLmMgKEdOVV9IWik6IE5ldyBkZWZpbml0aW9uLgoJKGNsb2NrKTogVXNlIGl0LgoJKiBnZXRydW50aW1lLmM6IExpa2V3aXNlLgoKCSogY29uZmlnLnRhYmxlOiBVc2UgbWgtYmVvcy4KCSogY29uZmlnL21oLWJlb3M6IE5ldyBmaWxlLgoKMTk5OS0wNC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZV92YWx1ZV9wYXJtKTogSGFuZGxlCglwb2ludGVycy10by1tZW1iZXJzLgoJKGRvX3R5cGUpOiBIYW5kbGUgdGVtcGxhdGUgcGFyYW1ldGVycyBhcyBxdWFsaWZpZXJzLgoKMTk5OS0wNC0wMSAgSmltIEJsYW5keSAgPGppbWJAendpbmdsaS5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmM6IEF0dGVtcHQgdG8gaGFuZGxlIG92ZXJmbG93cyBpbiBjb3VudHMgd2l0aCBzb21lCglzZW1ibGFuY2Ugb2YgZ3JhY2UuCgkoY29uc3VtZV9jb3VudCk6IERldGVjdCBvdmVyZmxvd3MuICBSZXR1cm4gLTEgdG8gaW5kaWNhdGUgZXJyb3JzLAoJaW5zdGVhZCBvZiB6ZXJvLgoJKGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0sIGRlbWFuZ2xlX3RlbXBsYXRlKTogSGFuZGxlIGNoYW5nZQoJdG8gY29uc3VtZV9jb3VudCdzIHJldHVybiBjb252ZW50aW9uLgoKMTk5OS0wNC0wNSAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogdGVzdHN1aXRlL3JlZ3Jlc3MtZGVtYW5nbGU6IE5ldyBmaWxlLgoJKiB0ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQ6IE5ldyBmaWxlLgoKCSogTWFrZWZpbGUuaW4gKGFsbCwgY2hlY2ssIGluc3RhbGxjaGVjaywgaW5mbywgaW5zdGFsbC1pbmZvLAoJY2xlYW4taW5mbywgZHZpLCBpbnN0YWxsLCBldGFncywgdGFncywgbW9zdGx5Y2xlYW4sIGNsZWFuLAoJZGlzdGNsZWFuLCBtYWludGFpbmVyLWNsZWFuLCByZWFsY2xlYW4pOiBEZXBlbmQgb24gY29ycmVzcG9uZGluZwoJYC1zdWJkaXInIHRhcmdldC4KCShhbGwtc3ViZGlyIGNoZWNrLXN1YmRpciBpbnN0YWxsY2hlY2stc3ViZGlyIGluZm8tc3ViZGlyCglpbnN0YWxsLWluZm8tc3ViZGlyIGNsZWFuLWluZm8tc3ViZGlyIGR2aS1zdWJkaXIKCWluc3RhbGwtaW5mby1zdWJkaXIgZXRhZ3Mtc3ViZGlyIG1vc3RseWNsZWFuLXN1YmRpciBjbGVhbi1zdWJkaXIKCWRpc3RjbGVhbi1zdWJkaXIgbWFpbnRhaW5lci1jbGVhbi1zdWJkaXIpOiBOZXcgdGFyZ2V0LgoJKiB0ZXN0c3VpdGUvTWFrZWZpbGUuaW46IE5ldyBmaWxlLgoJKiBjb25maWd1cmU6IFJlYnVpbHQuCgkqIGNvbmZpZ3VyZS5pbjogQ3JlYXRlIHRlc3RzdWl0ZS9NYWtlZmlsZS4KCjE5OTktMDQtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmggKHNwbGF5X3RyZWVfY29tcGFyZV9wb2ludGVycyk6IERlZmluZS4KCjE5OTktMDMtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGxheS10cmVlLmMgKHNwbGF5X3RyZWVfY29tcGFyZV9pbnRzKTogRGVmaW5lLgoKMTk5OS0wMy0zMCAgVG9tIFRyb21leSAgPHRyb21leUBjeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGNvbnN1bWVfY291bnQpOiBJZiBgY291bnQnIHdyYXBzLCByZXR1cm4gMCBhbmQKCWRvbid0IGFkdmFuY2UgaW5wdXQgcG9pbnRlci4KCShkZW1hbmdsZV9jbGFzc19uYW1lKTogSWYgY29uc3VtZV9jb3VudCBkaWRuJ3QgZmluZCBhIGNvdW50LCBkbwoJbm90aGluZy4gIERvbid0IGJvdGhlciB3aXRoIGBzdHJsZW4nIHNhbml0eSBjaGVjazsgY29uc3VtZV9jb3VudAoJZG9lcyBpdCBmb3IgdXMuCgoxOTk5LTAzLTE2ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJRnJvbSBBcnQgSGFhcyAgPGFoYWFzQG5lb3NvZnQuY29tPjoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3ByZWZpeCk6IERvbid0IGdyYWIgYWxsIHRoZSAnX18nIHN0cmluZ3MKCXdoZW4gZG9pbmcgYXJtIG9yIGhwIHN0eWxlLgoJKGRlbWFuZ2xlX25lc3RlZF9hcmdzKTogRGVjciBmb3JnZXR0aW5nX3R5cGVzIGZpZWxkIHdoZW4gZG9uZS4KClRodSBNYXIgMTEgMDE6MjI6NTggMTk5OSAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBwZXhlY3V0ZS5jIChfX0NZR1dJTjMyX18pOiBSZW5hbWUgdG8KCShfX0NZR1dJTl9fKTogdGhpcy4KCSogeG1hbGxvYy5jOiBMaWtld2lzZS4KCglDaGFuZ2VzIHRvIHN1cHBvcnQgaTM4Ni1wYy11d2luLgoJKiBjb25maWd1cmUuaW4gKCotKi11d2luKik6IFdvcmthcm91bmQgZm9yIHZmb3JrIGJ1Zy4KCSogY29uZmlndXJlOiBSZWdlbmVyYXRlLgoJKiBwZXhlY3V0ZS5jIChwZXhlY3V0ZSk6IEJlIGxpa2Ugc3RhbmRhcmQgVW5peC4KCShwd2FpdCk6IExpa2V3aXNlLgoJKiB4bWFsbG9jLmMgKGZpcnN0X2JyZWFrKTogRGVmaW5lLgoJKHhtYWxsb2Nfc2V0X3Byb2dyYW1fbmFtZSk6IFVzZS4KCSh4bWFsbG9jKTogVXNlLgoKVGh1IE1hciAxMSAwMTowNzo1NSAxOTk5ICBGcmFueiBTaXJsIDxGcmFuei5TaXJsLWtlcm5lbEBsYXV0ZXJiYWNoLmNvbT4KCgkqIGNvbmZpZy50YWJsZTogQ2xlYW51cCBhbmQgYWRkIG1oLSpwaWMgaGFuZGxpbmcgZm9yIGFscGhhLCBhcm0sIHBvd2VycGMKClN1biBGZWIgMjggMjI6MzA6NDQgMTk5OSAgR2VvZmZyZXkgTm9lciAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy50YWJsZTogQ2hlY2sgY3lnd2luKiwgbm90IGN5Z3dpbjMyKi4KClR1ZSBGZWIgIDkgMTY6Mzk6MDEgMTk5OSAgRGF2ZSBCcm9sbGV5ICA8YnJvbGxleUBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW46IENoYW5nZSBta3N0ZW1wIC0+IG1rc3RlbXBzLgoKVHVlIEZlYiAgOSAwMToxMjoyNyAxOTk5ICBNYXJjIEVzcGllIDxNYXJjLkVzcGllQGxpYWZhLmp1c3NpZXUuZnI+CgoJKiBNYWtlZmlsZS5pbiAoUkVRVUlSRURfT0ZJTEVTKTogcmVtb3ZlIG1rc3RlbXAubwoJKiBjb25maWd1cmUuaW4gKGZ1bmNzKTogQ2hlY2sgZm9yIGFuZCBjb25kaXRpb25hbGx5IGFkZCBta3N0ZW1wcyB0bwoJdGhlIGxpc3Qgb2YgZnVuY3Rpb25zIGxpYmliZXJ0eSB3aWxsIHByb3ZpZGUuCgkqIGNvbmZpZ3VyZTogUmVidWlsdC4KCldlZCBGZWIgIDMgMDA6MDE6MTUgMTk5OSAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBjbG9jay5jIChIWik6IERlZmluZSBpbiB0ZXJtcyBvZiAoSVNPIEMpIENMT0NLU19QRVJfU0VDIG9uCglwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIEhaLgoJKiBnZXRydW50aW1lLmMgKEhaKTogTGlrZXdpc2UuCgpTYXQgSmFuIDMwIDEzOjI4OjA0IDE5OTkgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoeHN0cmR1cC5vKTogRGVwZW5kIG9uIGNvbmZpZy5oLgoKV2VkIEphbiAxMyAwNzoyNjo0NCAxOTk5ICBILkouIEx1ICAoaGpsQGdudS5vcmcpCgoJKiBjcGx1cy1kZW0uYyAobW9wX3VwKTogU2V0IHdvcmstPnByZXZpb3VzX2FyZ3VtZW50IHRvIE5VTEwgYWZ0ZXIKCWZyZWVpbmcgaXQuCgpXZWQgSmFuIDEzIDE0OjE2OjM2IDE5OTkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHhzdHJkdXAuYyAoeHN0cmR1cCk6IFN3aXRjaCBmcm9tIHN0cmNweSB0byBtZW1jcHkgZm9yIHNwZWVkLgoKVHVlIEphbiAgNSAxNTo1ODoyOSAxOTk5ICBFbGVuYSBaYW5ub25pICA8ZXphbm5vbmlAa3dpa2VtYXJ0LmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogZml4IHR5cG8sIHNwbGF5LXRyZWUuYyBpbnN0ZWFkIG9mCglzcGxheS10cmVlLm8uCgoxOTk5LTAxLTA0ICBKYXNvbiBNb2xlbmRhICAoanNtQGJ1Z3NoYWNrLmN5Z251cy5jb20pCgoJKiBjb25maWd1cmUuaW46IFJlcXVpcmUgYXV0b2NvbmYgMi4xMi4xIG9yIGhpZ2hlci4KCjE5OTgtMTItMzAgIE1pY2hhZWwgTWVpc3NuZXIgIDxtZWlzc25lckBjeWdudXMuY29tPgoKCSogcmFuZG9tLmMgKE5VTEwpOiBEb24ndCByZWRlZmluZSBOVUxMIGlmIGl0IGlzIGFscmVhZHkgZGVmaW5lZC4KClR1ZSBEZWMgMjIgMDk6NDM6MzUgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogYXJndi5jIChidWlsZGFyZ3YpOiBDYXN0IHRoZSByZXN1bHQgb2YgYWxsb2NhIGluIGFzc2lnbm1lbnQuCgoJKiBjaG9vc2UtdGVtcC5jOiBJbmNsdWRlIHN0ZGxpYi5oLgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2FybV9wdCk6IFJlbW92ZSB1bnVzZWQgcHJvdG90eXBlLgoJKHNuYXJmX251bWVyaWNfbGl0ZXJhbCk6IENvbnN0aWZ5IGZpcnN0IHBhcmFtZXRlci4KCShjb2RlX2Zvcl9xdWFsaWZpZXIpOiBBdm9pZCBhIGdjYyBleHRlbnNpb24sIG1ha2UgdGhlIHBhcmFtZXRlciBhbgoJaW50LCBub3QgYSBjaGFyLgoJKGRlbWFuZ2xlX3F1YWxpZmllcik6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX3NpZ25hdHVyZSk6IENhc3QgdGhlIGFyZ3VtZW50IG9mIGEgY3R5cGUgZnVuY3Rpb24gdG8KCXVuc2lnbmVkIGNoYXIuCgkoYXJtX3B0KTogQWRkIHBhcmVucyBhcm91bmQgYXNzaWdubWVudCB1c2VkIGFzIHRydXRoIHZhbHVlLgoJKGRlbWFuZ2xlX2FybV9ocF90ZW1wbGF0ZSk6IENvbnN0aWZ5IHZhcmlhYmxlIGBhcmdzJy4KCShkb19ocGFjY190ZW1wbGF0ZV9jb25zdF92YWx1ZSk6IENhc3QgdGhlIGFyZ3VtZW50IG9mIGEgY3R5cGUKCWZ1bmN0aW9uIHRvIHVuc2lnbmVkIGNoYXIuCgkoZG9faHBhY2NfdGVtcGxhdGVfbGl0ZXJhbCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGknLgoJKHNuYXJmX251bWVyaWNfbGl0ZXJhbCk6IENvbnN0aWZ5IHBhcmFtZXRlciBgYXJncycuCglDYXN0IHRoZSBhcmd1bWVudCBvZiBhIGN0eXBlIGZ1bmN0aW9uIHRvIHVuc2lnbmVkIGNoYXIuCgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF90b19kb3VibGUpOiBBZGQgZXhwbGljaXQgYnJhY2VzIHRvCglhdm9pZCBhbWJpZ3VvdXMgYGVsc2UnLgoKCSogZm5tYXRjaC5jIChmbm1hdGNoKTogQ2hhbmdlIHR5cGUgb2YgdmFyaWFibGVzIGBjJywgYGMxJywKCWBjc3RhcnQnIGFuZCBgY2VuZCcgdG8gdW5zaWduZWQgY2hhci4gIENhc3QgdGhlIGFyZ3VtZW50IG9mIG1hY3JvCglgRk9MRCcsIHdoaWNoIHVzZXMgY3R5cGUgZnVuY3Rpb25zLCB0byB1bnNpZ25lZCBjaGFyLgoKCSogb2JqYWxsb2MuYyAoZnJlZSk6IEFkZCBwcm90b3R5cGUuCgpTdW4gRGVjIDIwIDE2OjAzOjQ2IDE5OTggIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuc2U+CgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogRml4IHR5cG86IHNwbGF5LXRyZWUuYywgbm90IHNwbGF5LXRyZWUubwoKRnJpIERlYyAxOCAxNzo1MDoxOCAxOTk4ICBEYXZpZCBUYXlsb3IgIDx0YXlsb3JAdGV4YXMuY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9hcm1fcHQpOiByZW1vdmUgZGVjbGFyYXRpb24gLS0gZnVuY3Rpb24KCWRvZXNuJ3QgZXhpc3QuCgkoZG9faHBhY2NfdGVtcGxhdGVfbGl0ZXJhbCk6IHJlbW92ZSB1bnVzZWQgdmFyaWFibGUgYGknLgoKRnJpIERlYyAxOCAxNjoxMTo0MyBFU1QgMTk5OCAgQW5kcmV3IE1hY0xlb2QgIDxhbWFjbGVvZEBjeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IFByb2Nlc3MgQ1YgYW5kIHUgY29kZXMgYmVmb3JlCglidW1waW5nIHRoZSBwb2ludGVyIHdlIHJlYWQgZnJvbS4gQWxzbyBwcmVwZW5kIHRoZXNlIGNvZGVzLAoJYXMgd2UgZG8gaW4gb3RoZXIgcGxhY2VzLgoKMTk5OC0xMi0xOCAgTmljayBDbGlmdG9uICA8bmlja2NAY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9hcm1faHBfdGVtcGxhdGUpOiBNYWtlIHZhcmlhYmxlICdhcmdzJyBiZQoJJ2NvbnN0IGNoYXIgKicgaW4gb3JkZXIgdG8gbWF0Y2ggaXRzIHVzYWdlIHdoZW4gY2FsbGluZyBzaWJsaW5ncy4KCShzbmFyZl9udW1lcmljX2xpdGVyYWwpOiBNYWtlIGZpcnN0IGFyZyAnY29uc3QgY2hhciAqKicgaW4gb3JkZXIKCXRvIG1hdGNoIHVzYWdlLgoKTW9uIERlYyAxNCAwOTo1NTo1MCAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjaG9vc2UtdGVtcC5jOiBEb24ndCBjaGVjayBJTl9HQ0MgYW55bW9yZS4KCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X2Zyb21fZG91YmxlKTogVXNlIGBjb25zdCcsIG5vdCBgQ09OU1QnLgoJKiBtZW1jaHIuYyAobWVtY2hyKTogTGlrZXdpc2UuCgkqIG1lbWNweS5jIChtZW1jcHkpOiBMaWtld2lzZS4KCSogbWVtbW92ZS5jIChtZW1tb3ZlKTogTGlrZXdpc2UuCgoJKiBta3N0ZW1wLmM6IERvbid0IGNoZWNrIElOX0dDQyBhbnltb3JlLgoJKiBwZXhlY3V0ZS5jOiBMaWtld2lzZS4KCSogc3BsYXktdHJlZS5jOiBMaWtld2lzZS4KCgkqIHN0cmNoci5jIChzdHJjaHIpOiBVc2UgYGNvbnN0Jywgbm90IGBDT05TVCcuCgkqIHN0cnJjaHIuYyAoc3RycmNocik6IExpa2V3aXNlLgoJKiBzdHJ0b2wuYyAoc3RydG9sKTogTGlrZXdpc2UuCgkqIHN0cnRvdWwuYyAoc3RydG91bCk6IExpa2V3aXNlLgoKRnJpIERlYyAgNCAxMzo1MTowNCAxOTk4ICBEYXZpZCBUYXlsb3IgICA8dGF5bG9yQHRleGFzLmN5Z251cy5jb20+CgkJCSAgRWxlbmEgWmFubm9uaSAgPGV6YW5ub25pQGN5Z251cy5jb20+CgkJCSAgU3RhbiBTaGVicyAgICAgPHNoZWJzQGN5Z251cy5jb20+CgkJCSAgRWRpdGggRXBzdGVpbiAgPGVlcHN0ZWluQGN5Z251cy5jb20+CgkJCSAgQW5kcmVzIE1hY0xlb2QgPGFtYWNsZW9kQGN5Z251cy5jb20+CgkJCSAgU2F0aXNoIFBhaQkgPHBhaUBhcG9sbG8uaHAuY29tPgoKCSogSFAgYUNDIGRlbWFuZ2xpbmcgc3VwcG9ydC4KCSogY3BsdXMtZGVtLmMKCShtYWluKTogUmVtb3ZlIGRlZmF1bHQgdG8gSFAgc3R5bGUgZGVtYW5nbGluZywgc2V0IHRvIEVERwoJZGVtYW5nbGluZyBjb3JyZWN0bHkgd2hlbiAtZWRnIHNwZWNpZmllZDsgc2V0IHRoZSBkZW1hbmdsaW5nIHN0eWxlCgl3aGVuIHVzZXIgc3BlY2lmaWVzICdlZGcnLiBTZXQgc3RyaXBfdW5kZXJzY29yZSB0bwoJcHJlcGVuZHNfdW5kZXJzY29yZSwgaWYgbm90IEhQVVhIUFBBLiAgU2V0CgljdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUgdG8gaHBfZGVtYW5nbGluZyBpZiBIUFVYSFBQQS4gIFNldAoJY3VycmVudCBkZW1hbmdsaW5nIHN0eWxlIGNvcnJlY3RseSBpZiB0aGUgc3dpdGNoIGlzIGhwLiAgUmVhZAoJbGFiZWwgY29ycmVjdGx5IGFsc28gaW4gdGhlIEhQIHN0eWxlIGNhc2UuCgkod29ya19zdHVmZik6IGFkZCB0ZW1wX3N0YXJ0IGZpZWxkOyBhZGQgZmllbGQgZm9yIHZvbGF0aWxlIG1lbWJlcgoJZnVuY3Rpb24uCgkoYXJtX3B0KTogaGFuZGxlIEFSTV9ERU1BTkdMSU5HIGFuZCBFREdfREVNQU5HTElORyBzdHlsZXM7IEhQCglzdHlsZSBmb3IgdGhpcyBjYXNlIGlzIHRoZSBzYW1lIGFzIEFSTS4KCShkZW1hbmdsZV9hcmdzKTogaGFuZGxlIEVER19ERU1BTkdMSU5HIHN0eWxlOyBzdXBwb3J0IEhQIHN0eWxlLgoJKGRlbWFuZ2xlX2FybV9ocF90ZW1wbGF0ZSk6IG5ldyBmdW5jdGlvbi4gKEl0IHdhcwoJZGVtYW5nbGVfYXJtX3B0Lik7IGNoZWNrIGFuZCBzZXQgdmFsdWUgb2YgdGVtcF9zdGFydCBmaWVsZCBpbgoJbXVsdGlwbGUgcGxhY2VzLiBBbHNvLCB3aGVuIGNlY2hpbmcgZm9yIGVuZCBvZiB0ZW1wbGF0ZSBhcmdzLAoJY2hlY2sgdG8gc2VlIGlmIGF0IGVuZCBvZiBzdGF0aWMgbWVtYmVyIG9mIHRlbXBsYXRlIGNsYXNzLgoJKGRlbWFuZ2xlX2NsYXNzKTogbmV3IGxvY2FsIHZhcmlhYmxlIDogc2F2ZV9jbGFzc19uYW1lX2VuZCBEb24ndAoJaW5jbHVkZSB0ZW1wbGF0ZSBhcmdzIGluIHN0cmluZyBkZWZpbmluZyBjbGFzcy4KCShkZW1hbmdsZV9jbGFzc19uYW1lKTogdXNlIGRlbWFuZ2VsX2FybV9ocF90ZW1wbGF0ZS4KCShkZW1hbmdsZV9mdW5jdGlvbl9uYW1lKTogaGFuZGxlIGNhc2Ugd2hlcmUgZGVtYW5nbGluZyBzdHlsZSBpcwoJSFBfREVNQU5HTElORyBhbmQgY3VycmVudGx5IHBvaW50IGF0IGFuICdYJyBpbiB0aGUgbWFuZ2xlZCBuYW1lLgoJSGFuZGxlIEVER19ERU1BTkdMSU5HIHN0eWxlLiAgSGFuZGxlIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yCglvcHMgZm9yIEhQIHN0eWxlLgoJKGRlbWFuZ2xlX3ByZWZpeCk6IGhhbmRsZSBFREdfREVNQU5HTElORyBhbmQgQVJNX0RFTUFOR0xJTkcKCXN0eWxlcy4gIGdsb2JhbCBkZXN0cnVjdG9yIGFuZCBjb25zdHJ1Y3RvciBmb3IgSFAgc3R5bGUgYXJlIHNhbWUKCWFzIGZvciBBUk0gc3R5bGUuIFNhbWUgZm9yIGxvY2FsIHZhcmlhYmxlcy4KCShkZW1hbmdsZV9xdWFsaWZpZWQpOiBoYW5kbGUgRURHX0RFTUFOR0xJTkcgc3R5bGUuCgkoZGVtYW5nbGVfc2lnbmF0dXJlKTogYWRkIGNhc2UgZm9yIHZvbGF0aWxlIG1lbWJlciBmdW5jdGlvbi4gIEZvcgoJY2FzZXMgJzEnIC0gJzknIDogaW5pdGlhbGl6ZSB0aGUgdGVtcF9zdGFydCBmaWVsZCB0byAtMSBhbmQgaGFuZGxlCgl0aGUgRURHX0RFTUFOR0xJTkcgc3R5bGUuICBmb3IgY2FzZSAnRicgOiBoYW5kbGUgRURHX0RFTUFOR0xJTkcKCWFuZCBBVVRPX0RFTUFOR0xJTkcgc3R5bGVzLiAgSWYgZXhwZWN0aW5nIGEgZnVuY3Rpb24gYW5kIG1hbmFnZWQKCXRvIGRlbWFuZ2xlIHRoZSBmdW5jdCBhcmdzLCB0aGVuIGhhbmRsZSB0aGUgTFVDSURfREVNQU5HTElORywKCUFSTV9ERU1BTkdMSU5HLCBhbmQgRURHX0RFTUFOR0xJTkcgc3R5bGVzLiAgQWRkIGNhc2UgZm9yIGxvY2FsCgljbGFzcyBuYW1lIGFmdGVyICJMbm5uXyBpbiBIUCBzdHlsZSBjYXNlLiBIUCBzdHlsZSB0b28gbmVlZHMgdG8KCWZvcmdldCB0eXBlcy4gIF9ubm4gaXMgT0sgZm9yIEhQIHN0eWxlLCBzbyBkb24ndCByZXBvcnQgZmFpbHVyZS4KCShkb19ocGFjY190ZW1wbGF0ZV9jb25zdF92YWx1ZSk6IG5ldyBmdW5jdGlvbi4gSGFuZGxlIHRlbXBsYXRlJ3MKCXZhbHVlIHBhcmFtIGZvciBIUC9hQ0MuCgkoZG9faHBhY2NfdGVtcGxhdGVfbGl0ZXJhbCk6IG5ldyBmdW5jdGlvbi4gIEhhbmRsZSBhIHRlbXBsYXRlJ3MKCWxpdGVyYWwgcGFyYW1ldGVyIGZvciBIUCBhQ0MuCgkocmVjdXJzaXZlbHlfZGVtYW5nbGUpOiBuZXcgZnVuY3Rpb24KCShzbmFyZl9udW1lcmljX2xpdGVyYWwpOiBuZXcgZnVuY3Rpb24uCgkodXNhZ2UpOiBhZGQgJ2VkZycgdG8gdGhlIGxpc3Qgb2YgZGVtYW5nbGluZyBzdHlsZXM7IGFkZCBocCBzd2l0Y2gKCXRvIG1lc3NhZ2UuCgpTYXQgTm92IDI4IDE3OjI1OjIyIDE5OTggIENocmlzdG9waGVyIEZheWxvciA8Y2dmQGN5Z251cy5jb20+CgoJKiBwZXhlY3V0ZS5jOiBSZW1vdmUgb2Jzb2xldGUgaWZkZWZlZCBjeWd3aW4gY29kZS4KCkZyaSBOb3YgMjcgMTM6MjY6MDYgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2hvb3NlLXRlbXAuYzogQWx3YXlzIGluY2x1ZGUgbGliaWJlcnR5LmguICBBdm9pZCByZWR1bmRhbmNpZXMuCgkqIGNwbHVzLWRlbS5jOiBMaWtld2lzZS4gIENvbmZvcm0gdG8gbGliaWJlcnR5LmguCgkqIHBleGVjdXRlLmM6IExpa2V3aXNlLgoJKiBzcGxheS10cmVlLmM6IExpa2V3aXNlLgoKMTk5OC0xMS0yNSAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogTWFrZWZpbGUuaW4gKHNwbGF5LXRyZWUubyk6IEFkZCBjb25maWcuaCBkZXBlbmRlbmN5LgoKTW9uIE5vdiAyMyAxNjo1OTo0OSAxOTk4ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiAgY29uZmlndXJlLmluOiBVc2UgQUNfUFJFUkVRKDIuMTIuMSkuCgoxOTk4LTExLTE2ICBCZW5qYW1pbiBLb3NuaWsgIDxia296QGhhaWdodC5jb25zdGFudC5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfZnVuZF90eXBlKTogQWRkIGRlbWFuZ2xpbmcgZm9yIEM5eCB0eXBlcy4KClRodSBOb3YgMTkgMjI6MTU6NTAgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogbXB3LmMgKG1wd19hY2Nlc3MpOiBBZGQgbWlzc2luZyBwYXJlbnMuCgpUaHUgTm92IDE5IDEyOjU5OjIxIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2FsbCBBQ19IRUFERVJfU1lTX1dBSVQuCgoJKiBwZXhlY3V0ZS5jOiBJbmNsdWRlIHN5cy93YWl0Lmggd2hlbiAhSU5fR0NDLgoKVGh1IE5vdiAxOSAxNDozODoyMCAxOTk4ICBHZW9mZnJleSBOb2VyICA8bm9lckBjeWdudXMuY29tPgoKCSogcGV4ZWN1dGUuYzogcmV2ZXJ0IGJhY2sgdG8gY2hlY2tpbmcgb2xkIEN5Z3dpbgoJcHJlcHJvY2Vzc29yIHN5bWJvbCB1bnRpbCBzb21lIHRpbWUgaGFzIHBhc3NlZC4KCldlZCBOb3YgMTggMDg6NTI6MjYgMTk5OCAgQ2hyaXN0b3BoZXIgRmF5bG9yIDxjZ2ZAY3lnbnVzLmNvbT4KCgkqIHBleGVjdXRlLmM6IFJlb3JnYW5pemUgV0lOMzIgY2FzZSB0byBhY2NvbW9kYXRlIEN5Z3dpbgoJc2luY2UgaXQgd2lsbCBub3cgc3VwcG9ydCBzaW1pbGFyIGNvbnN0cnVjdHMuCgpGcmkgTm92IDEzIDE5OjE4OjA1IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNvbmZpZ3VyZS5pbjogQ2hlY2sgZm9yIGNhbGxvYy4KCgkqIGNhbGxvYy5jOiBOZXcJZmlsZS4KCgkqIHhtYWxsb2MuYyAoeGNhbGxvYyk6IE5ldyBmdW5jdGlvbi4KCkZyaSBOb3YgMTMgMDg6NTE6NDYgRVNUIDE5OTggIEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3ByZWZpeCk6IFVzZSB0aGUgbGFzdCAiX18iCglpbiB0aGUgbWFuZ2xlZCBuYW1lIHdoZW4gbG9va2luZyBmb3IgdGhlIHNpZ25hdHVyZS4gVGhpcyBhbGxvd3MKCXRlbXBsYXRlIG5hbWVzIHRvIGJlZ2luIHdpdGggIl9fIi4KCjE5OTgtMTEtMDggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcGx1cy1kZW0uYyAodHlwZV9raW5kX3QpOiBBZGQgdGtfcmVmZXJlbmNlLgoJKGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0pOiBIYW5kbGUgaXQuCgkoZG9fdHlwZSk6IFVzZSBpdCBmb3IgcmVmZXJlbmNlcywgaW5zdGVhZCBvZiB0a19wb2ludGVyLgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0pOiBVc2UgY3BsdXNfZGVtYW5nbGUsCglub3QgaW50ZXJuYWxfY3BsdXNfZGVtYW5nbGUuCgpTYXQgTm92ICA3IDE2OjAyOjEwIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNob29zZS10ZW1wLmM6IERvbid0IGluY2x1ZGUgZ2Fuc2lkZWNsLmguCgkqIG1rc3RlbXAuYzogTGlrZXdpc2UuCgkqIHBleGVjdXRlLmM6IExpa2V3aXNlLgoKTW9uIE5vdiAgMiAxNTowNTozMyAxOTk4ICBHZW9mZnJleSBOb2VyICA8bm9lckBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBkZXRlY3QgY3lnd2luKiBpbnN0ZWFkIG9mIGN5Z3dpbjMyKgoJKiBjb25maWd1cmU6IHJlZ2VuZXJhdGUKCk1vbiBOb3YgIDIgMTA6MjI6MDEgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogcGV4ZWN1dGUuYzogQ2hlY2sgSEFWRV9DT05GSUdfSCwgbm90IElOX0dDQywgd2hlbiBkZXRlcm1pbmluZwoJd2hldGhlciB0byBpbmNsdWRlIGNvbmZpZy5oLiAgUG9zc2libHkgaW5jbHVkZSB1bmlzdGQuaCBpbiB0aGUKCSFJTl9HQ0MgY2FzZS4gIERlZmluZSBWRk9SS19TVFJJTkcgYXMgYSBwcmludGFibGUgZnVuY3Rpb24gY2FsbAoJZm9yIGVycm9yIG1lc3NhZ2VzIChlaXRoZXIgInZmb3JrIiBvciAiZm9yayIuKSAgSWYgSEFWRV9WRk9SS19IIGlzCglkZWZpbmVkLCBpbmNsdWRlIHZmb3JrLmguICBJZiBWTVMgaXMgZGVmaW5lZCwgZGVmaW5lIHZmb3JrKCkKCWFwcHJvcHJpYXRlbHkuICBSZW1vdmUgdmZvcmsgY2hlY2sgb24gVVNHLCB3ZSdyZSB1c2luZyBhdXRvY29uZi4KCShwZXhlY3V0ZSk6IFNldCBgZXJybXNnX2ZtdCcgdG8gVkZPUktfU1RSSU5HIGluc3RlYWQgb2YgY2hlY2tpbmcKCWxvY2FsbHkgd2hhdCBzdHJpbmcgdG8gdXNlLgoKMTk5OC0xMC0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIHNwbGF5LXRyZWUuYzogVHdlYWsgaW5jbHVkZSBkaXJlY3RpdmVzIHRvIG1ha2Ugc3VyZSBkZWNsYXJhdGlvbnMgb2YKCXhtYWxsb2MgYW5kIGZyZWUgYXJlIGF2YWlsYWJsZS4KCjE5OTgtMTAtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcGx1cy1kZW0uYyAoZ251X3NwZWNpYWwpOiBGaXggaGFuZGxpbmcgb2YgdmlydHVhbCB0YWJsZXMgaW4KCWFub255bW91cyBuYW1lc3BhY2VzLgoKMTk5OC0xMC0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwbHVzLWRlbS5jICh3b3JrX3N0dWZmKTogUmVwbGFjZSBjb25zdF90eXBlIGFuZCB2b2xhdGlsZV90eXBlCgl3aXRoIHR5cGVfcXVhbHMuCgkoVFlQRV9VTlFVQUxJRklFRCk6IE5ldyBtYWNyby4KCShUWVBFX1FVQUxfQ09OU1QpOiBMaWtld2lzZS4KCShUWVBFX1FVQUxfVk9MQVRJTEUpOiBMaWtld2lzZS4KCShUWVBFX1FVQUxfUkVTVFJJQ1QpOiBMaWtld2lzZS4KCShjb2RlX2Zvcl9xdWFsaWZpZXIpOiBOZXcgZnVuY3Rpb24uCgkocXVhbGlmaWVyX3N0cmluZyk6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX3F1YWxpZmllcik6IExpa2V3aXNlLgoJKGludGVybmFsX2NwbHVzX2RlbWFuZ2xlKTogVXNlIHRoZW0uCgkoZGVtYW5nbGVfc2lnbmF0dXJlKTogTGlrZXdpc2UuCgkoZGVtYW5nbGVfdGVtcGxhdGVfdmFsdWVfcGFybSk6IExpa2V3aXNlLgoJKGRvX3R5cGUpOiBMaWtld2lzZS4KCShkZW1hbmdsZV9mdW5kX3R5cGUpKTogTGlrZXdpc2UuCgpUaHUgT2N0IDIyIDE5OjU4OjQzIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHNwbGF5LXRyZWUuYyAoc3BsYXlfdHJlZV9mb3JlYWNoX2hlbHBlcik6IE1ha2UgZGVmaW5pdGlvbiBzdGF0aWMKCXRvIG1hdGNoIHByb3RvdHlwZS4KCjE5OTgtMTAtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBzcGxheS10cmVlLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIGl0LgoJKFJFUVVJUkVEX09GSUxFUyk6IExpa2V3aXNlLgoJKHNwbGF5LXRyZWUubyk6IEFkZCBkZXBlbmRlbmNpZXMuCgpUdWUgT2N0IDIwIDEyOjI5OjAyIDE5OTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmNzLnVuaS1kb3J0bXVuZC5kZT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9xdWFsaWZpZWQpOiBGaXggb2ZmLWJ5LW9uZSB3aGVuIGNoZWNraW5nCglyYW5nZSBvZiAnSycgaW5kZXguCgpUaHUgT2N0IDE1IDE4OjUxOjEyIDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNob29zZS10ZW1wLmM6IFByb3RvdHlwZSBta3N0ZW1wcygpIHdoZW4gSU5fR0NDLgoKCSogY3BsdXMtZGVtLmMgKGNvbnN1bWVfY291bnQpOiBDYXN0IGFyZ3VtZW50IG9mIGN0eXBlIG1hY3JvIHRvCglgdW5zaWduZWQgY2hhcicuCgkoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogQ2FzdCB0aGUgcmVzdWx0IG9mIGBzdHJsZW4nIHRvIChpbnQpIHdoZW4KCWNvbXBhcmluZyBhZ2FpbnN0IG9uZS4KCShjcGx1c19tYW5nbGVfb3BuYW1lKTogTGlrZXdpc2UuCgkoZGVtYW5nbGVfaW50ZWdyYWxfdmFsdWUpOiBDYXN0IGFyZ3VtZW50IG9mIGN0eXBlIG1hY3JvIHRvCglgdW5zaWduZWQgY2hhcicuCgkoZGVtYW5nbGVfdGVtcGxhdGVfdmFsdWVfcGFybSk6IExpa2V3aXNlLgoJKGRlbWFuZ2xlX3RlbXBsYXRlKTogSW5pdGlhbGl6ZSB2YXJpYWJsZSBgYmluZGV4Jy4gIENhc3QgdGhlCglyZXN1bHQgb2YgYHN0cmxlbicgdG8gKGludCkgd2hlbiBjb21wYXJpbmcgYWdhaW5zdCBvbmUuICBSZW1vdmUKCXVudXNlZCB2YXJpYWJsZSBgc3RhcnRfb2ZfdmFsdWVfcGFybScuCgkoZGVtYW5nbGVfY2xhc3NfbmFtZSk6IENhc3QgdGhlIHJlc3VsdCBvZiBgc3RybGVuJyB0byAoaW50KSB3aGVuCgljb21wYXJpbmcgYWdhaW5zdCBvbmUuCgkoZGVtYW5nbGVfcHJlZml4KTogQ2FzdCBhcmd1bWVudCBvZiBjdHlwZSBtYWNybyB0byBgdW5zaWduZWQgY2hhcicuCgkoZ251X3NwZWNpYWwpOiBMaWtld2lzZS4gIENhc3QgdGhlIHJlc3VsdCBvZiBgc3RybGVuJyB0byAoaW50KQoJd2hlbiBjb21wYXJpbmcgYWdhaW5zdCBvbmUuCgkoZGVtYW5nbGVfcXVhbGlmaWVkKTogQ2FzdCBhcmd1bWVudCBvZiBjdHlwZSBtYWNybyB0byBgdW5zaWduZWQgY2hhcicuCgkoZ2V0X2NvdW50KTogTGlrZXdpc2UuCgkoZG9fdHlwZSk6IExpa2V3aXNlLiAgQ2FzdCB0aGUgcmVzdWx0IG9mIGBzdHJsZW4nIHRvIChpbnQpIHdoZW4KCWNvbXBhcmluZyBhZ2FpbnN0IG9uZS4KCShkZW1hbmdsZV9mdW5kX3R5cGUpOiBDYXN0IGFyZ3VtZW50IG9mIGN0eXBlIG1hY3JvIHRvIGB1bnNpZ25lZCBjaGFyJy4KCShkZW1hbmdsZV9mdW5jdGlvbl9uYW1lKTogQ2FzdCB0aGUgcmVzdWx0IG9mIGBzdHJsZW4nIHRvIChpbnQpCgl3aGVuIGNvbXBhcmluZyBhZ2FpbnN0IG9uZS4KCgkqIG1rc3RlbXAuYyAobWtzdGVtcHMpOiBDYXN0IHZhcmlhYmxlIGBsZW4nIHRvIChpbnQpIHdoZW4KCWNvbXBhcmluZyBhZ2FpbnN0IG9uZS4KClR1ZSBPY3QgMTMgMjM6NTE6NTEgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogbWtzdGVtcC5jOiBDaGVjayBIQVZFX1NZU19USU1FX0ggYmVmb3JlIGluY2x1ZGluZyBzeXMvdGltZS5oCgkqIGNvbmZpZ3VyZS5pbiAoQUNfQ0hFQ0tfSEVBREVSUyk6IENoZWNrIGZvciBzeXMvdGltZS5oIHRvby4KCSogY29uZmlnLmluLCBjb25maWd1cmU6IFJlYnVpbHQuCgoJKiBnZXRvcHQuYzogQ2hlY2sgSEFWRV9TVFJJTkdTX0ggYmVmb3JlIGluY2x1ZGluZyBzdHJpbmdzLmguCgkqIGNvbmZpZ3VyZS5pbiAoQUNfQ0hFQ0tfSEVBREVSUyk6IENoZWNrIGZvciBzdHJpbmdzLmggdG9vLgoJKiBjb25maWcuaW4sIGNvbmZpZ3VyZTogUmVidWlsdC4KCk1vbiBPY3QgMTIgMTk6MTU6NTkgMTk5OCAgR2VvZmZyZXkgTm9lciAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogaW4gY29tbWVudCwgY2FsbCBBQ19FWEVFWFQgaW5zdGVhZCBvZiBBTV9FWEVFWFQKClN1biBPY3QgMTEgMTc6MzY6MDYgMTk5OCAgTWljaGFlbCBUaWVtYW5uICA8dGllbWFubkBob2xvZGVjay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGNwbHVzLWRlbS5vLCBvYnN0YWNrLm8pOiBEZXBlbmQgdXBvbiBjb25maWcuaC4KClRodSBPY3QgIDggMjM6NDI6MDggMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWVyZ2UgZWdjcyAmIGRldm8gbGliaWJlcnR5LgoKMTk5OC0wOS0wOCAgTWFydGluIHZvbiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9hcm1fcHQpOiBEZW1hbmdsZSBhbm9ueW1vdXMgbmFtZXNwYWNlcy4KCk1vbiBTZXAgIDcgMjM6Mjk6MDEgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWtzdGVtcC5jOiBJbmNsdWRlIGNvbmZpZy5oIGV2ZW4gd2hlbiBub3QgSU5fR0NDLiAgV3JhcCBoZWFkZXIKCWluY2x1c2lvbnMgaW5zaWRlIEhBVkVfKl9IIG1hY3Jvcy4gIEluY2x1ZGUgYW5zaWRlY2wuaCB3aGVuIG5vdAoJSU5fR0NDLgoKCSogdmFzcHJpbnRmLmM6IEluY2x1ZGUgc3RkYXJnLmgvdmFyYXJncy5oIGZpcnN0LgoKCSogdnByaW50Zi5jOiBMaWtld2lzZS4KClNhdCBTZXAgIDUgMDM6MjQ6NDkgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogcGV4ZWN1dGUuYzogVXBkYXRlcyBmcm9tIGdjYy4gIENvcHkgaW4gZ2NjIGhhcyBiZWVuIHJlbW92ZWQuICBUaGlzCglpcyB0aGUgY2Fub25pY2FsIGNvcHkuICBEZWZpbmUgSVNTUEFDRSBpZiAhSU5fR0NDLgoJKiBhbGxvY2EuYywgdmZwcmludGYuYywgY2hvb3NlLXRlbXAuYywgbWtzdGVtcC5jLCBnZXRvcHQuYzogU2ltaWxhcmx5LgoJKiBnZXRvcHQxLmMsIG9ic3RhY2suYzogU2ltaWxhcmx5LgoJKiBNYWtlZmlsZS5pbjogQnVpbGQgbWtzdGVtcC5vCgpUdWUgU2VwICAxIDIzOjEyOjQ3IDE5OTggIENocmlzdG9waGVyIEZheWxvciA8Y2dmQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEluY2x1ZGUgYXNwcmludGYgaW4gbGlzdCBvZiBmdW5jdGlvbnMga25vd24gbm90Cgl0byBiZSBpbiBuZXdsaWIuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCldlZCBBdWcgMTkgMTQ6MDU6MDEgMTk5OCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBjcGx1cy1kZW0uYyAod29ya19zdHVmZik6IEFkZCBkbGxpbXBvcnRlZC4KCShkZW1hbmdsZWRfcHJlZml4KTogTWFyayBzeW1ib2xzIGltcG9ydGVkIGZyb20gUEUgRExMLgoJKGludGVybmFsX2NwbHVzX2RlbWFuZ2xlZCk6IEhhbmRsZS4KCjE5OTgtMDgtMTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkb190eXBlKTogRml4IHNpbXBsZSBhcnJheSBoYW5kbGluZy4gIElmIHdlIGZhaWwsCglzdGF5IGZhaWxlZC4KCk1vbiBBdWcgMTcgMTA6NDA6MzQgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BsdXMtZGVtLmM6IEluY2x1ZGUgY29uZmlnLmggaWYgaXQgZXhpc3RzLiAgQWxzbywgb25seQoJcHJvdG90eXBlIG1hbGxvYy9yZWFsbG9jIGlmIHdlIGNhbid0IGdldCBzdGRsaWIuaC4KClNhdCBBdWcgMTUgMTY6MTU6MDEgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBTd2l0Y2ggYmFjayB0byBjaGVja2luZyAtLXdpdGgtdGFyZ2V0LXN1YmRpciB3aGVuCglkZWNpZGluZyB3aGV0aGVyIHRvIGNoZWNrIGZvciBuZXdsaWIsIHVuZG9pbmcgcGFydCBvZiBKdWx5IDE1CgljaGFuZ2UuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KClRodSBBdWcgMTMgMTY6NDc6MzggMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwbHVzLWRlbS5jICh0eXBlX2tpbmRfdCk6IE5ldyB0eXBlLgoJKGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0pOiBBZGQgdHlwZV9raW5kX3QgcGFyYW1ldGVyLiAgUmVseQoJb24gdGhpcyBwYXJhbXRlciwgcmF0aGVyIHRoYW4gZGVtYW5nbGluZyB0aGUgdHlwZSBhZ2Fpbi4KCShkZW1hbmdsZV9pbnRlZ3JhbF92YWx1ZSk6IFBhc3MgdGtfaW50ZWdyYWwuCgkoZGVtYW5nbGVfdGVtcGxhdGVfOiBQYXNzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGRvX3R5cGUuCgkoZG9fdHlwZSk6IFJldHVybiBhIHR5cGVfa2luZF90LiAgUGFzcyB0a19pbnRlZ3JhbCB0bwoJZGVtYW5nbGVfdGVtcGxhdGVfdmFsdWVfcGFybSBmb3IgYXJyYXkgYm91bmRzLgoJKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IExpa2V3aXNlLgoKCUFsc28gaW5jb3Jwb3JhdGUgZnJvbSBHQ0MgdmVyc2lvbjoKCglUdWUgSnVsIDIxIDEzOjI4OjE5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkb190eXBlKTogVXNlIGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0gZm9yIGFycmF5cy4KClRodSBBdWcgMTMgMTY6NDc6MzggMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX25lc3RlZF9hcmdzKTogTWFrZSBmdW5jdGlvbiBkZWZpbml0aW9uCglzdGF0aWMgdG8gbWF0Y2ggdGhlIHByb3RvdHlwZS4KClR1ZSBKdWwgMjggMTE6MzM6MDkgMTk5OCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAbWFya21pdGNoZWxsLmNvbT4KCgkqIGNwbHVzLWRlbS5jICh0eXBlX2tpbmRfdCk6IE5ldyB0eXBlLgoJKGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0pOiBBZGQgdHlwZV9raW5kX3QgcGFyYW1ldGVyLiAgUmVseQoJb24gdGhpcyBwYXJhbXRlciwgcmF0aGVyIHRoYW4gZGVtYW5nbGluZyB0aGUgdHlwZSBhZ2Fpbi4KCShkZW1hbmdsZV9pbnRlZ3JhbF92YWx1ZSk6IFBhc3MgdGtfaW50ZWdyYWwuCgkoZGVtYW5nbGVfdGVtcGxhdGVfOiBQYXNzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGRvX3R5cGUuCgkoZG9fdHlwZSk6IFJldHVybiBhIHR5cGVfa2luZF90LiAgUGFzcyB0a19pbnRlZ3JhbCB0bwoJZGVtYW5nbGVfdGVtcGxhdGVfdmFsdWVfcGFybSBmb3IgYXJyYXkgYm91bmRzLgoJKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IExpa2V3aXNlLgoKCUFsc28gaW5jb3Jwb3JhdGUgZnJvbSBHQ0MgdmVyc2lvbjoKCglUdWUgSnVsIDIxIDEzOjI4OjE5IDE5OTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkb190eXBlKTogVXNlIGRlbWFuZ2xlX3RlbXBsYXRlX3ZhbHVlX3Bhcm0gZm9yIGFycmF5cy4KCk1vbiBKdWwgMjcgMTI6MTY6MDggMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEFMTE9DQSk6IE5ldyB2YXJpYWJsZS4KCSgkKFRBUkdFVExJQikpOiBBZGQgJChBTExPQ0EpIHRvIGxpYnJhcnkuCgkobmVlZGVkLWxpc3QpOiBBZGQgJChBTExPQ0EpLgoJKCQoQUxMT0NBKSk6IERlcGVuZCB1cG9uIHN0YW1wLXBpY2Rpci4KClN1biBKdWwgMTkgMDg6MjM6MTcgMTk5OCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX25lc3RlZF9hcmdzKTogTWFrZSBmdW5jdGlvbiBkZWZpbml0aW9uCglzdGF0aWMgdG8gbWF0Y2ggdGhlIHByb3RvdHlwZS4KCldlZCBKdWwgMTUgMDA6MTI6NTggMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBDaGVjayAtLXdpdGgtY3Jvc3MtaG9zdCByYXRoZXIgdGhhbgoJLS13aXRoLXRhcmdldC1zdWJkaXIgd2hlbiBkZWNpZGluZyB3aGV0aGVyIGJ1aWxkIHVzZXMgYSBjcm9zcwoJY29tcGlsZXIsIGFuZCB3aGVuIGRlY2lkaW5nIHdoZXJlIHRvIGluc3RhbGwgdGhlIGxpYnJhcnkuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KClN1biBKdWwgMTIgMDE6Mjc6MDUgMTk5OCAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX25lc3RlZF9hcmdzKTogUmV0dXJuIGEgdmFsdWUuCgpTYXQgSnVsIDExIDE2OjE5OjQ4IDE5OTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQG1hcmttaXRjaGVsbC5jb20+CgoJKiBjcGx1cy1kZW0uYyAoc3RyaW5nKTogTW92ZSBkZWZpbml0aW9uIGJlZm9yZSB3b3JrX3N0dWZmLgoJKHdvcmtfc3R1ZmYpOiBBZGQgdm9sYXRpbGVfdHlwZSwgZm9yZ2V0dGluZ190eXBlcywKCXByZXZpb3VzX2FyZ3VtZW50LCBhbmQgbnJlcGVhdHMgZmllbGRzLgoJKFNDT1BFX1NUUklORyk6IE5ldyBtYWNyby4KCShkZW1hbmdsZV90ZW1wbGF0ZSk6IEFkZCBgcmVtZW1iZXInIHBhcmFtZXRlci4gIEFkZCBjb21tZW50LgoJUmVnaXN0ZXIgdGhlIGBCJyBjb2RlIHR5cGUgaGVyZSwgaWYgcmVtZW1iZXJpbmcuICBUaWR5LiAgRml4IGNyYXNoCglvbiBOVUxMIHRtcGxfYXJndmVjLiAgQmUgY29uc2lzdGVudCB3aXRoIHVzZSBvZiB0bmFtZS90cmF3bmFtZS4KCShkZW1hbmdsZV9uZXN0ZWRfYXJncyk6IE5ldyBmdW5jdGlvbi4KCShpbnRlcm5hbF9jcGx1c19kZW1hbmdsZSk6IEhhbmRsZSB2b2xhdGlsZS1xdWFsaWZpZWQgbWVtYmVyCglmdW5jdGlvbnMuCgkobW9wX3VwKTogRGVsZXRlIHRoZSBwcmV2aW91c19hcmd1bWVudCBzdHJpbmcgaWYgcHJlc2VudC4KCShkZW1hbmdsZV9zaWduYXR1cmUpOiBUaWR5LiAgSGFuZGxlIHZvbGF0aWxlLXF1YWxpZmllZCBtZW1iZXIKCWZ1bmN0aW9ucy4gIEhhbmRsZSBiYWNrLXJlZmVyZW5jZXMgdXNpbmcgdGhlIGBCJyBjb2RlLiAgVXNlIGV4dHJhCglwYXJhbWV0ZXIgdG8gZGVtYW5nbGVfdGVtcGxhdGUgYW5kIFNDT1BFX1NUUklORyB3aGVyZSBhcHByb3ByaWF0ZS4KCShkZW1hbmdsZV90ZW1wbGF0ZV92YWx1ZV9wYXJtKTogRml4IHRoaW5rbzsgJ0InIGlzIG5vdCBhbiBpbnRlZ3JhbAoJY29kZS4KCShkZW1hbmdsZV9jbGFzcyk6IFVzZSBTQ09QRV9TVFJJTkcuCgkoZ251X3NwZWNpYWwpOiBQYXNzIGFkZGl0aW9uYWwgYXJndW1lbnQgdG8gZGVtYW5nbGVfdGVtcGxhdGUuCglVc2UgU0NPUEVfU1RSSU5HLgoJKGRlbWFuZ2xlX3F1YWxpZmllZCk6IFNhdmUgcXVhbGlmaWVkIHR5cGVzIGZvciBsYXRlcgoJYmFjay1yZWZlcmVuY2VzLiAgSGFuZGxlIGNvbnN0cnVjdG9ycyBhbmQgZGVzdHJ1Y3RvcnMgZm9yIHRlbXBsYXRlCgl0eXBlcyBjb3JyZWN0bHkuCgkoZG9fdHlwZSk6IFRpZHkuICBVc2UgU0NPUEVfU1RSSU5HLiAgUGFzcyBleHRyYSBhcmd1bWVudCB0bwoJZGVtYW5nbGVfdGVtcGxhdGUuICBVc2UgZGVtYW5nbGVkX25lc3RlZF9hcmdzLiAgRG9uJ3QgcmVtZW1iZXIKCXF1YWxpZmllZCB0eXBlcyBoZXJlOyB0aGF0J3Mgbm93IGRvbmUgaW4gZGVtYW5nbGVfcXVhbGlmaWVkLgoJU2ltaWxhcmx5IGZvciB0ZW1wbGF0ZXMuCgkoZG9fYXJnKTogSW1wcm92ZSBjb21tbWVudC4gIEhhbmRsZSAnbicgcmVwZWF0IGNvZGUuCgkocmVtZW1iZXJfdHlwZSk6IENoZWNrIGZvcmdldHRpbmdfdHlwZXMuCgkoZGVtYW5nbGVfYXJncyk6IERlYWwgd2l0aCAnbicgcmVwZWF0IGNvZGVzLiAgVGlkeS4KClRodSBKdWwgIDIgMTY6MjY6MjQgMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlnLnRhYmxlOiBPbmx5IHVzZSBtaC1mYnNkMjEgb24gKi0qLWZyZWVic2QyLjIuWzAxMl0sIG5vdCBvbgoJKi0qLWZyZWVic2QyLjIuKi4gIEZyb20gRG1pdHJpaiBUZWpibHVtIDx0ZWpibHVtQGFyYy5ocS5jdGkucnU+LgoKTW9uIEp1biAxNSAxNjoyOTowMSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW4gKHNldG9ianMpOiBDb3JyZWN0IHF1b3RpbmcgZXJyb3IgaW4gY3lnd2luMzIgY2FzZS4KCUZyb20gQ2hyaXMgRmF5bG9yIDxjZ2ZAY3lnbnVzLmNvbT4uCgpNb24gSnVuICAxIDEzOjQ3OjU1IDE5OTggIEphc29uIE1vbGVuZGEgIChjcmFzaEBidWdzaGFjay5jeWdudXMuY29tKQoKCSogb2JzdGFjay5jOiBVcGRhdGUgdG8gbGF0ZXN0IEZTRiB2ZXJzaW9uLgoKTW9uIEp1biAgMSAxNDoxNzozNiAxOTk4ICBNaWtlIFN0dW1wICA8bXJzQHdycy5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIGEgZGVwZW5kZW5jeSBvbiBzdGFtcC1waWNkaXIgZm9yIHRoZQoJb2JqZWN0cywgc28gdGhhdCB3ZSBjYW4gZG8gYSBwYXJhbGxlbCBidWlsZC4KClNhdCBNYXkgMzAgMjI6MTc6MTMgMTk5OCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgoJKiBjb25maWd1cmUuaW4gKGNoZWNrZnVuY3MpOiBBZGQgbWlzc2luZyAiJyIuCgpGcmkgTWF5IDI5IDEyOjQwOjQxIDE5OTggIEphc29uIE1vbGVuZGEgIChjcmFzaEBidWdzaGFjay5jeWdudXMuY29tKQoKCSogb2JzdGFjay5jIChfb2JzdGFja19tZW1vcnlfdXNlZCk6ICBFbGlkZSB0aGlzIGZ1bmN0aW9uIGlmIHdlJ3JlCglvbiBhIHN5c3RlbSB3aXRoIEdOVSBsaWJjLgoKVHVlIE1heSAyNiAxODoyODo0MyAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZGlzdGNsZWFuKTogUmVtb3ZlIGNvbmZpZy5sb2cuCgpUdWUgTWF5IDI2IDE1OjAxOjUyIDE5OTggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgoKCSogTWFrZWZpbGUuaW4gKGRpc3RjbGVhbik6IERvbid0IHJlbW92ZSBhbGxvY2EtY29uZi5oLgoKRnJpIE1heSAyMiAwMTozODowNyAxOTk4ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBheGlzLnNlPgoKCSogY3BsdXMtZGVtLmMgKE1CVUZfU0laRSk6IEJ1bXBlZCBmcm9tIDUxMiB0byAzMjc2Ny4KCjE5OTgtMDUtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtbWl0Y2hlbGxAdXNhLm5ldD4KCgkqIGNwbHVzLWRlbS5jIChkb190eXBlKTogSGFuZGxlIHZvbGF0aWxlIHF1YWxpZmljYXRpb24uCgoxOTk4LTA1LTIxICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBjb25maWd1cmUuaW46IENoZWNrIGZvciB1bmlzdGQuaCBhcyB3ZWxsLgoJKiBjb25maWd1cmU6IFJlYnVpbGQuCgkqIGNvbmZpZy5pbjogUmVidWlsZC4KCSogZ2V0cGFnZXNpemUuYyAoR05VX09VUl9QQUdFU0laRSk6IFVzZSBzeXNjb25mIG9ubHkgaWYgX1NDX1BBR0VTSVpFCglpcyBkZWZpbmVkIGluIHVuaXN0ZC5oLiBSZWZvcm1hdCBjb25kaXRpb25hbCBibG9jayBmb3IgZWFzaWVyIHJlYWRpbmcuCgoJKiBjb25maWcudGFibGUgKHNoYXJlZCk6IERlZmF1bHQgdG8gbm8gaWYgJHtlbmFibGVfc2hhcmVkfQoJaXMgdW5zZXQgb3IgZW1wdHk7IHRoaXMgbG9naWMgaXMgdXNlZCBieSB0aGUgdG9wbGV2ZWwKCWNvbmZpZ3VyZSBzY3JpcHRzLCB0b28uCgpTYXQgTWF5IDE2IDE0OjAxOjI2IDE5OTggIEplZmZyZXkgQSBMYXcgIChsYXdAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy50YWJsZTogQWRkIGxpbmUgdG8gc2V0IGVuYWJsZV9zaGFyZWQgaW4gdGhlIE1ha2VmaWxlCglhcyBuZWVkZWQuCgpXZWQgTWF5IDEzIDE0OjI0OjM4IDE5OTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwbHVzLWRlbS5jIChzcXVhbmdsZV9tb3BfdXApOiBDaGFuZ2UgcmV0dXJuIHR5cGUgdG8gdm9pZC4KCShpbnRlcm5hbF9jcGx1c19kZW1hbmdsZSk6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyIGBvcHRpb25zJy4KCUFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogUmVtb3ZlIGZ1bmN0aW9uIHdpZGUgdmFyaWFibGUgYGludCBpJyBhbmQKCXJlcGxhY2Ugd2l0aCBgc2l6ZV90IGknIGF0IGVhY2ggbG9jYXRpb24gd2hlcmUgaXQgaXMgdXNlZC4KCShjcGx1c19tYW5nbGVfb3BuYW1lKTogY2hhbmdlIHR5cGUgb2YgYGknIGZyb20gaW50IHRvIHNpemVfdC4KCldlZCBNYXkgMTMgMTM6Mzk6MzggMTk5OCAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogYWxsb2NhLWNvbmYuaDogSW5jbHVkZSBjb25maWcuaC4gIENoZWNrIEhBVkVfQUxMT0NBX0ggcmF0aGVyCgl0aGFuIHNwYXJjIG9yIHN1bi4KCSogTWFrZWZpbGUuaW4gKGFyZ3Yubyk6IERlcGVuZCB1cG9uIGNvbmZpZy5oIGFuZCBhbGxvY2EtY29uZi5oLgoKRnJpIE1heSAgOCAwMDoyMzo1MSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IFNldCBsaWJpYmVydHlfdG9wZGlyIGNvcnJlY3RseSB3aGVuIHNyY2RpciBpcwoJIi4iIGFuZCB3aXRoX3RhcmdldF9zdWJkaXIgaXMgbm90IHNldC4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKVGh1IE1heSAgNyAxMzowMTo0NCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEFkZCAqLSotbWluZ3czMiogY2FzZS4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKV2VkIE1heSAgNiAxMTozMzo1MSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWcudGFibGU6IE5ldmVyIHVzZSBhIFBJQyBmaWxlIGZvciAqLSotY3lnd2luMzIqLgoKCSogTWFrZWZpbGUuaW4gKGNvbmZpZy5zdGF0dXMpOiBEZXBlbmQgdXBvbiBjb25maWcudGFibGUuCgoJKiBjb25maWd1cmUuaW46IE9uIGEgY3lnd2luMzIgaG9zdCwgYWx3YXlzIGNvbXBpbGUgcmFuZG9tLCBhbmQKCWRvbid0IHRlc3QgZm9yIHN5c19zaWdsaXN0LCBzdHJzaWduYWwsIG9yIHBzaWduYWwuCgkqIGNvbmZpZ3VyZTogUmVidWlsZC4KCgkqIGNsb2NrLmM6IENoZWNrIEhBVkVfU1lTX1BBUkFNX0ggcmF0aGVyIHRoYW4gTk9fU1lTX1BBUkFNX0guCgkqIGdldGN3ZC5jOiBMaWtld2lzZS4KCSogZ2V0cGFnZXNpemUuYzogTGlrZXdpc2UuCgkqIGdldHJ1bnRpbWUuYzogTGlrZXdpc2UuCgpUdWUgTWF5ICA1IDE4OjA4OjMyIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCglVc2UgYXV0b2NvbmYgdGVzdHMgcmF0aGVyIHRoYW4gdGhlIG9sZCBkdW1teS5jIHRlc3Q6CgkqIGNvbmZpZ3VyZS5pbjogQWRkIEFDX0FSR19XSVRIIGNhbGxzIGZvciAtLXdpdGgtdGFyZ2V0LXN1YmRpciBhbmQKCS0td2l0aC1uZXdsaWIuICBBZGQgQUNfQ09ORklHX0hFQURFUi4gIFVzZSBBQ19SRVBMQUNFX0ZVTkNTIGZvcgoJbW9zdCBmdW5jdGlvbnMuICBBZGQgc3BlY2lhbCBjYXNlcyB0byBoYW5kbGUgbmV3bGliIGFuZCBWeFdvcmtzLgoJUmVtb3ZlIHRhcmdldF9tYWtlZmlsZV9mcmFnLiAgQ3JlYXRlIHN0YW1wLWggaW4gQUNfT1VUUFVUIGlmCglDT05GSUdfSEVBREVSUyBpcyBzZXQuICBPbmx5IGNhbGwgY29uZmlnLW1sLmluIGluIEFDX09VVFBVVCBpZgoJQ09ORklHX0ZJTEVTIGlzIHNldDsgc2V0IGFjX2ZpbGUgYmVmb3JlIGNhbGxpbmcgaXQuCgkqIGNvbmZpZy50YWJsZSAoYXJtLSotcmlzY2l4KiwgKi0qLWN5Z3dpbjMyKTogUmVtb3ZlLgoJKCotKi1ocHV4KiwgKi0qLWhpdXgqLCAqLSotaXJpeDQqLCAqLSotc29sYXJpczIqKTogUmVtb3ZlLgoJKCotKi1zeXN2NCosICotKi1nbzMyLCAqLSotdnh3b3JrczUqLCAqLSotdnh3b3Jrcyk6IFJlbW92ZQoJKGlbMzQ1Nl0tKi1taW5ndzMyKik6IFJlbW92ZS4KCSogTWFrZWZpbGUuaW4gKEVSUk9SU19DQywgQ09ORklHX0gsIE5FRURFRF9MSVNUKTogUmVtb3ZlLgoJKExJQk9CSlMpOiBOZXcgdmFyaWFibGUuCgkoSE9TVF9PRklMRVMsIERPX0FMU08sIFNUQUdFU1RVRkYpOiBSZW1vdmUuCgkoYWxsKTogRGVwZW5kIHVwb24gbmVlZGVkLWxpc3QuICBEb24ndCBjaGVjayBSVUxFMS4KCShAdGFyZ2V0X21ha2VmaWxlX2ZyYWdAKTogUmVtb3ZlLgoJKENPTVBJTEUuYyk6IEluY2x1ZGUgQERFRlNALgoJKEhGSUxFUyk6IEFkZCBhbGxvY2EtY29uZi5oLgoJKFJFUVVJUkVEX09GSUxFUyk6IFJlbW92ZSBiYXNlbmFtZS5vLgoJKCQoVEFSR0VUTElCKSk6IE5ldyB0YXJnZXQuCgkoc3RhbXAtbmVlZGVkLCBsbmVlZGVkLWxpc3QsIG5lZWRlZC5hd2ssIHN0YW1wLWNvbmZpZyk6IFJlbW92ZS4KCShsY29uZmlnLmgsIG5lZWRlZDIuYXdrLCBkdW1teS5vLCBlcnJvcnMpOiBSZW1vdmUuCgkobmVlZGVkLWxpc3QsIGNvbmZpZy5oKTogUmV3cml0ZS4KCShSVUxFMSwgJChSVUxFMSksIFJVTEUyLCAkKFJVTEUyKSk6IFJlbW92ZS4KCSguYWx3YXlzLik6IFJlbW92ZS4KCShNYWtlZmlsZSk6IFNldCBDT05GSUdfRklMRVMgYW5kIENPTkZJR19IRUFERVJTLgoJKHN0YW1wLWgpOiBOZXcgdGFyZ2V0LgoJKGF0ZXhpdC5vLCBjbG9jay5vLCBnZXRjd2QubywgZ2V0cGFnZXNpemUubyk6IE5ldyB0YXJnZXRzLgoJKGJhc2VuYW1lLm8pOiBEb24ndCBkZXBlbmQgdXBvbiBjb25maWcuaC4KCShnZXRydW50aW1lLm8pOiBEZXBlbmQgdXBvbiBjb25maWcuaC4KCSogYXRleGl0LmM6IEluY2x1ZGUgY29uZmlnLmguICBDaGVjayBIQVZFX09OX0VYSVQgcmF0aGVyIHRoYW4KCU5FRURfb25fZXhpdC4KCSogYmFzZW5hbWUuYzogRG9uJ3QgaW5jbHVkZSBjb25maWcuaC4gIERvbid0IGNoZWNrIE5FRURfYmFzZW5hbWUuCgkqIGNsb2NrLmM6IEluY2x1ZGUgY29uZmlnLmguCgkqIGdldGN3ZC5jOiBMaWtld2lzZS4KCSogZ2V0cGFnZXNpemUuYzogTGlrZXdpc2UuCgkqIGdldHJ1bnRpbWUuYzogTGlrZXdpc2UuICBGaXggY2hlY2tzIHdoaWNoIHNldCBIQVZFX0dFVFJVU0FHRSBhbmQKCUhBVkVfVElNRVMuCgkqIHN0cmVycm9yLmM6IENoYW5nZSB1c2VzIG9mIE5FRURfc3lzX2Vycmxpc3QgdG8KCUhBVkVfU1lTX0VSUkxJU1QuICBMaWtld2lzZSBmb3IgTkVFRF9zdHJlcnJvciBhbmQgSEFWRV9TVFJFUlJPUi4KCSogc3Ryc2lnbmFsLmM6IExpa2V3aXNlIGZvciBORUVEX3N5c19zaWdsaXN0IGFuZCBIQVZFX1NZU19TSUdMSVNULAoJYW5kIGZvciBORUVEX3N0cnNpZ25hbCBhbmQgSEFWRV9TVFJTSUdOQUwgYW5kIGZvciBORUVEX3BzaWduYWwgYW5kCglIQVZFX1BTSUdOQUwuCgkqIGFjY29uZmlnLmg6IE5ldyBmaWxlLgoJKiBkdW1teS5jOiBSZW1vdmUuCgkqIGZ1bmN0aW9ucy5kZWY6IFJlbW92ZS4KCSogY29uZmlnL21oLWN4dXg3IChIREVGSU5FUyk6IFJlbW92ZSAtREhBVkVfU1lTQ09ORi4KCSogY29uZmlnL21oLXdpbmRvd3MgKEhERUZJTkVTKTogUmVtb3ZlLgoJKiBjb25maWcvbWgtY3lnd2luMzI6IFJlbW92ZS4KCSogY29uZmlnL21oLWdvMzI6IFJlbW92ZS4KCSogY29uZmlnL21oLWlyaXg0OiBSZW1vdmUuCgkqIGNvbmZpZy9taC1yaXNjaXg6IFJlbW92ZS4KCSogY29uZmlnL21oLXN5c3Y0OiBSZW1vdmUuCgkqIGNvbmZpZy9tdC1taW5ndzMyOiBSZW1vdmUuCgkqIGNvbmZpZy9tdC12eHdvcmtzNTogUmVtb3ZlLgoJKiBjb25maWcuaW46IE5ldyBmaWxlLCBnZW5lcmF0ZWQgdXNpbmcgYXV0b2hlYWRlci4KCSogY29uZmlndXJlOiBSZWJ1aWxkLgoKTW9uIE1heSAgNCAxMzowMDoyOCAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IFJld3JpdGUgdG8gdXNlIGF1dG9jb25mLgoJKiBjb25maWd1cmU6IEdlbmVyYXRlIHVzaW5nIGF1dG9jb25mLgoJKiBjb25maWcvbWgtYTY4YnNkOiBSZW1vdmUuCgkqIGNvbmZpZy9taC1hcG9sbG82ODogUmVtb3ZlLgoJKiBjb25maWcvbWgtaHBic2Q6IFJlbW92ZS4KCSogY29uZmlnL21oLW5jcjMwMDA6IFJlbW92ZS4KCSogY29uZmlnL21oLXN5c3Y6IFJlbW92ZS4KCSogY29uZmlnL21oLWFpeCAoUkFOTElCLCBJTlNUQUxMKTogRG9uJ3QgZGVmaW5lLgoJKiBjb25maWcvbWgtY3h1eDcgKFJBTkxJQiwgSU5TVEFMTCk6IERvbid0IGRlZmluZS4KCSogY29uZmlnL21oLWlyaXg0IChDQywgUkFOTElCLCBJTlNUQUxMKTogRG9uJ3QgZGVmaW5lLgoJKiBjb25maWcvbWgtc3lzdjQgKFJBTkxJQiwgSU5TVEFMTCk6IERvbid0IGRlZmluZS4KCSogY29uZmlnLnRhYmxlOiBDaGFuZ2UgY29uZmlnX3NoZWxsIHRvIENPTkZJR19TSEVMTCwgYW5kIHVzZQoJbGliaWJlcnR5X3RvcGRpciB0byBmaW5kIG1vdmUtaWYtY2hhbmdlLgoJKG02OGstYXBvbGxvLWJzZCosIG02OGstYXBvbGxvLXN5c3YqKTogUmVtb3ZlLgoJKGlbMzQ1Nl04Ni1uY3Itc3lzdjQqLCAqLSotZGd1eCosIGhwcGEqLWhwLWJzZCopOiBSZW1vdmUuCgkoKi0qLWlyaXgqLCAqLSotbTg4a2JjcyosICotKi1zeXN2Kik6IFJlbW92ZS4KCSogTWFrZWZpbGUuaW4gKHNyY2Rpcik6IFNldCB0byBAc3JjZGlyQC4KCShWUEFUSCk6IExpa2V3aXNlLgoJKHByZWZpeCwgZXhlY19wcmVmaXgsIGJpbmRpciwgbGliZGlyKTogU2V0IHRvIGF1dG9jb25mIHZhcmlhYmxlcy4KCShTSEVMTCwgSU5TVEFMTCwgSU5TVEFMTF9QUk9HUkFNLCBJTlNUQUxMX0RBVEEpOiBMaWtld2lzZS4KCShDQywgQ0ZMQUdTLCBSQU5MSUIpKTogTGlrZXdpc2UuCgkoZGF0YWRpciwgbWFuKmRpciwgaW5mb2RpciwgaW5jbHVkZWRpciwgTUFLRUlORk8pOiBSZW1vdmUuCgkodGFyZ2V0X21ha2VmaWxlX2ZyYWcsIGhvc3RfbWFrZWZpbGVfZnJhZyk6IEFkZCBzdWJzdGl0dXRpb25zLgoJKElOU1RBTExfREVTVCk6IFNldCB0byBASU5TVEFMTF9ERVNUQC4KCShNYWtlZmlsZSk6IERlcGVuZCB1cG9uIGNvbmZpZy5zdGF0dXMuICBEb24ndCBkZXBlbmQgdXBvbgoJJChob3N0X21ha2VmaWxlX2ZyYWcpIG9yICQodGFyZ2V0X21ha2VmaWxlX2ZyYWcpLgoJKGNvbmZpZy5zdGF0dXMpOiBOZXcgdGFyZ2V0LgoKU3VuIE1heSAgMyAxNzo1ODo0OSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWcvbXQtc3Vub3M0OiBSZW1vdmUuICBTaG91bGQgYmUgaGFuZGxlZCBieSAtLXdpdGgtaGVhZGVycwoJYW5kIC0td2l0aC1saWJyYXJpZXMgb3B0aW9ucyBhdCB0b3AgbGV2ZWwuCgkqIGNvbmZpZy50YWJsZTogTmV2ZXIgdXNlIG10LXN1bm9zNC4KCgkqIGFsbG9jYS1jb25mLmg6IE5ldyBmaWxlLCBjb21iaW5pbmcgYWxsb2NhLW5vcm0uaCBhbmQKCWFsbG9jYS1ib3RjaC5oLgoJKiBhbGxvY2Etbm9ybS5oOiBSZW1vdmUuCgkqIGFsbG9jYS1ib3RjaC5oOiBSZW1vdmUuCgkqIGNvbmZpZ3VyZS5pbjogU2V0IHNoZWxsIHZhcmlhYmxlcyBmaWxlcyBhbmQgbGlua3MgdG8gZW1wdHkuCgkqIGNvbmZpZy50YWJsZTogRG9uJ3Qgc2V0IHNoZWxsIHZhcmlhYmxlIGZpbGVzLgoJKiBjb25maWd1cmUuYmF0OiBEb24ndCBjcmVhdGUgYWxsb2NhLWNvbmYuaC4KCSogbWFrZWZpbGUudm1zOiBMaWtld2lzZS4KCSogbXB3LWNvbmZpZy5pbjogTGlrZXdpc2UuCgkqIHZtc2J1aWxkLmNvbTogTGlrZXdpc2UuCgpGcmkgTWF5ICAxIDExOjQxOjQyIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluICgkKEhPU1RfT0ZJTEVTKSAkKFJFUVVJUkVEX09GSUxFUykpOiBSZW1vdmUgb2xkCgl0YXJnZXQgZGVwZW5kaW5nIHVwb24gY29uZmlnLmguCgkoYWxsb2NhLm8pOiBBZGQgdGFyZ2V0IGRlcGVuZGluZyB1cG9uIGNvbmZpZy5oCgkoYmFzZW5hbWUubywgY2hvb3NlLXRlbXAubywgZm5tYXRjaC5vKTogTGlrZXdpc2UuCgkoZ2V0b3B0Lm8sIGdldG9wdDEubywgcGV4ZWN1dGUubywgc3RyZXJyb3Iubyk6IExpa2V3aXNlLgoJKHN0cnNpZ25hbC5vLCB4c3RyZXJyb3Iubyk6IExpa2V3aXNlLgoKRnJpIE1heSAgMSAwNDoyNjoyNSAxOTk4ICBQZXRlciBTY2hhdWVyIDxwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZT4KCgkqIGNwbHVzLWRlbS5jIChjcGx1c19kZW1hbmdsZV9vcG5hbWUpOiAgSW5pdGlhbGl6ZSB3b3JrLgoKTW9uIEFwciAyNyAxNTo1MzozMCBFRFQgMTk5OCBBbmRyZXcgTWFjTGVvZCA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9xdWFsaWZpZWQpOiBSZXBsYWNlIG1pc3NpbmcgZWxzZS4KClN1biBBcHIgMjYgMTU6Mzg6NTAgMTk5OCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAaXNzYW4uaW5mb3JtYXRpay51bmktZG9ydG11bmQuZGU+CgoJKiBjcGx1cy1kZW0uYyAoZ251X3NwZWNpYWwpOiBGaXggb2ZmLWJ5LW9uZSBidWcgd2hlbiBjaGVja2luZyB0aGUKCWxlbmd0aCBpbiB0aGUgbmFtZSBvZiBhIHZpcnR1YWwgdGFibGUuCgpXZWQgQXByIDIyIDEwOjUzOjQ5IEVEVCAxOTk4IEFuZHJldyBNYWNMZW9kICA8YW1hY2xlb2RAY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChzdHJ1Y3Qgd29yayBzdHVmZik6IEFkZCBmaWVsZCBmb3IgQiBhbmQgSyBtYW5nbGUgY29kZXMuCgkoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogQ2FsbCBtb3BfdXBfc3F1YW5nbGUuCgkoY3BsdXNfZGVtYW5nbGUpOiBJbml0aWFsaXplIHNxdWFuZ2xlIGluZm8sIHRoZW4gY2FsbAoJaW50ZXJuYWxfY3BsdXNfZGVtYW5nbGUuIChNb3N0IGNvZGUgbW92ZWQgdGhlcmUgYXMgd2VsbCkKCShpbnRlcm5hbF9jcGx1c19kZW1hbmdsZSk6IE5ldyBmdW5jdGlvbiwgcGVyZm9ybXMgbW9zdCBvZiB3aGF0IHVzZQoJdG8gYmUgZG9uZSBpbiBjcGx1c19kZW1hbmdsZSwgYnV0IGlzIG9ubHkgY2FsbGVkIHdpdGggdGhpcyBmaWxlLgoJKHNxdWFuZ2xlX21vcF91cCk6IE5ldyBmdW5jdGlvbiB0byBjbGVhbiB1cCBCIGFuZCBLIGNvZGUgZGF0YS4KCShtb3BfdXApOiBzZXQgcG9pbnRlcnMgdG8gTlVMTCBhZnRlciBmcmVlaW5nLgoJKGRlbWFuZ2xlX3NpZ25hdHVyZSwgZGVtYW5nbGVfdGVtcGxhdGUsIGRlbWFuZ2xlX2NsYXNzKTogQWRkCglzd2l0Y2ggZWxlbWVudHMgdG8gaGFuZGxlIEsgYW5kIEIgY29kZXMuCgkoZGVtYW5nbGVfcHJlZml4LCBnbnVfc3BlY2lhbCwgZGVtYW5nbGVfcXVhbGlmaWVkKTogQWRkCgljb2RlIHRvIGhhbmRsZSBLIGFuZCBCIGNvZGVzLgoJKGRvX3R5cGUsIGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IEhhbmRsZSBCIGFuZCBLIGNvZGVzLgoJKHJlbWVtYmVyX0t0eXBlKTogTmV3IGZ1bmN0aW9uIHRvIHN0b3JlIEsgaW5mby4KCShyZWdpc3Rlcl9CdHlwZSwgcmVtZW1iZXJfQnR5cGUpOiBOZXcgZnVuY3Rpb25zIGZvciBCIGNvZGVzLgoJKGZvcmdldF9CX2FuZF9LX3R5cGVzKTogTmV3IGZ1bmN0aW9uIHRvIGRlc3Ryb3kgQiBhbmQgSyBpbmZvLgoKRnJpIEFwciAxMCAwMTo0OToxMCAxOTk4ICBKZWZmcmV5IEEgTGF3ICAobGF3QGN5Z251cy5jb20pCgoJKiBDT1BZSU5HLkxJQiwgY2hvb3NlLXRlbXAuYywgY3BsdXMtZGVtLmM6IFN5bmMgd2l0aCBlZ2NzICYgZ2NjLgoKVGh1IE1hciAgNSAwOToyMzoyOCAxOTk4ICBNYW5mcmVkIEhvbGxzdGVpbiAgPG1hbmZyZWRAcy1kaXJla3RuZXQuZGU+CgoJKiBjb25maWcudGFibGU6IE1ha2UgbG9jYXRpbmcgZnJhZyBmaWxlcyBmYWlsc2FmZSBldmVuIGZvciB0aGUKCXNwZWNpYWwgY2FzZSBpZiBjb25maWd1cmluZyBhbmQgYnVpbGRpbmcgaW4gc3JjZGlyLgoKTW9uIEZlYiAyMyAxNDozMzoxNSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjaG9vc2UtdGVtcC5jOiBGaXggaGFuZGxpbmcgb2Ygc3lzL2ZpbGUuaCB0byB3b3JrIGluIGxpYmliZXJ0eS4KClN1biBGZWIgMjIgMTg6MDM6MjMgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY2hvb3NlLXRlbXAuYzogU3luYyB3aXRoIGNvcHkgaW4gZ2NjLgoKVGh1IEZlYiAxMiAxNjoyOTo0OSAxOTk4ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBnZXRvcHQuYzogVXBkYXRlIHRvIGxhdGVzdCBGU0YgdmVyc2lvbi4KCSogZ2V0b3B0MS5jOiBMaWtld2lzZS4KClR1ZSBGZWIgMTAgMTY6NTg6MzMgMTk5OCAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGdudV9zcGVjaWFsKTogRG9uJ3QgZ2V0IGNvbmZ1c2VkIGJ5IC48ZGlnaXRzPgoJc3RyaW5ncyB0aGF0IGFyZSBub3QgYWN0dWFsbHkgbGVuZ3Rocy4KCkZyaSBGZWIgIDYgMDE6MzU6MTcgMTk5OCAgTWFuZnJlZCBIb2xsc3RlaW4gIDxtYW5mcmVkQHMtZGlyZWt0bmV0LmRlPgoKCSogTWFrZWZpbGUuaW4gKEZMQUdTX1RPX1BBU1MpOiBEb24ndCBwYXNzIFBJQ0ZMQUcuCgkoLmMubyk6IENoZWNrIHZhbHVlIG9mIGVuYWJsZV9zaGFyZWQsIG5vdCBQSUNGTEFHLgoJKHN0YW1wLXBpY2Rpcik6IERpdG8uCgpUaHUgRmViICA1IDE4OjQ4OjU2IDE5OTggIEdlb2ZmcmV5IE5vZXIgIDxub2VyQGN5Z251cy5jb20+CgoJKiBjb25maWcvbWgtY3lnd2luMzI6IHJlbW92ZSB2YXNwcmludGYubyBmcm9tIEVYVFJBX09GSUxFUwoJc2luY2UgaXQgZ2V0cyBidWlsdCBhdXRvbWF0aWNhbGx5CgpTdW4gRmViICAxIDAyOjUyOjMyIDE5OTggIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIGNvbmZpZy50YWJsZSAodnh3b3JrcyBjb25maWdzKTogRGVmYXVsdCB0byBWeFdvcmtzIDUueCwgYXMgdGhhdCBpcwoJdGhlIGN1cnJlbnRseSBzaGlwcGluZyBPUy4KClR1ZSBKYW4gMjcgMTY6MDg6MjAgMTk5OCAgUGF0IFJhbmtpbiAgPHJhbmtpbkBlcWwuY2FsdGVjaC5lZHU+CgoJKiB2bXNidWlsZC5jb20gW1JFUVVJUkVfT0ZJTEVTXTogU3luY2hyb25pemVkIHdpdGggTWFrZWZpbGUuaW46CglBZGQgZm5tYXRjaC5vIGFuZCBvYmphbGxvYy5vOyByZW1vdmUgdmFzcHJpbnRmLm8uCglbY29uZmlnLmhdOiBEZWZpbmUgTkVFRF9zdHJzaWduYWwuCgpNb24gSmFuIDE5IDEyOjIwOjAxIDE5OTggIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGZ1bmN0aW9ucy5kZWY6IENvcnJlY3QgYXJndW1lbnQgdHlwZXMgZm9yIHN0cmVycm9yIGFuZAoJc3Ryc2lnbmFsLiAgUmVwb3J0ZWQgYnkgQWxleCBHdXRtYW4gPGFndXRtYW5AZW1jLmNvbT4uCgpTdW4gSmFuIDE4IDE1OjU3OjI4IDE5OTggIE1pY2hhZWwgU255ZGVyICA8bXNueWRlckBjbGVhdmVyLmN5Z251cy5jb20+CgoJKiB2YXNwcmludGYuYyAoaW50X3Zhc3ByaW50Zik6IEluY3JlYXNlIGJ1ZmZlciBzaXplIGZvciBmbG9hdC9kb3VibGUKCXZhbHVlcy4KClNhdCBKYW4gMTcgMjI6Mjg6MzggMTk5OCAgTXVtaXQgS2hhbiAgPGtoYW5AeHJheWxpdGgud2lzYy5lZHU+CgkJCSAgSi5KLiBWYW5kZXJIZWlqZGVuIDxKLkoudmFuZGVySGVpamRlbkBzdHVkZW50LnV0d2VudGUubmw+CgoJQWRkIG1pbmd3MzIgc3VwcG9ydC4KCSogcGV4ZWN1dGUuYyAocGV4ZWN1dGUpOiBOZXcgZnVuY3Rpb24gZm9yIG1pbmd3MzIuIFN1cHBvcnRzIHBpcGVzLgoJKHB3YWl0KTogTmV3IGZ1bmN0aW9uIGZvciBtaW5ndzMyLgoKCSogY29uZmlnLnRhYmxlIChpWzM0NTZdODYtKi1taW5ndzMyKik6IFN1cHBvcnQgZm9yIGkzODYtbWluZ3czMi4KCSogY29uZmlnL210LW1pbmd3MzI6IE5ldyBmaWxlLgoJKiB4bWFsbG9jLmMgKGZpcnN0X2JyZWFrKTogTm90IHVzZWQgZm9yIG1pbmd3MzIuCgkoeG1hbGxvY19zZXRfcHJvZ3JhbV9uYW1lKTogRG9uJ3QgdXNlIHNicmsgb24gbWluZ3czMi4KCSh4bWFsbG9jKTogTGlrZXdpc2UuCgkoeHJlYWxsb2MpOiBMaWtld2lzZS4KClNhdCBKYW4gMTcgMjI6Mjg6MDUgMTk5OCAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogY2hvb3NlLXRlbXAuYzogU3luYyB3aXRoIGdjYyB2ZXJzaW9uLgoKVHVlIEphbiAxMyAxODozNDozOSAxOTk4ICBKaW0gV2lsc29uICA8d2lsc29uQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbF90b19saWJkaXIsIGluc3RhbGxfdG9fdG9vbGRpcik6IEFkZCBNVUxUSVNVQkRJUgoJdG8gYWxsIGZpbGVuYW1lcyBpbiBsaWJkaXIgYW5kIHRvb2xkaXIuCgkoZGlzdGNsZWFuKTogRG8gTVVMVElDTEVBTiBiZWZvcmUgZGVsZXRpbmcgTWFrZWZpbGUuCgkoc3RhbXAtbmVlZGVkLCBzdGFtcC1jb25maWcpOiBBZGQgTVVMVElTUkNUT1AgdG8KCXBhdGhuYW1lIGZvciBtb3ZlLWlmLWNoYW5nZS4KClRodSBEZWMgIDQgMTc6MjU6MTkgMTk5NyAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogc3Ryc2lnbmFsLmMgKHN5c19uc2lnKTogVHJ5IE5TSUcgYW5kIF9OU0lHLgoKV2VkIE5vdiAxOSAxMzozNzowNiAxOTk3ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAY3lnbnVzLmNvbT4KCgkqIGFsbG9jYS1ub3JtLmggKGFsbG9jYSwgR0NDIGNhc2UpOiBEb24ndCByZWRlZmluZSBhbGxvY2EgaWYgaXQKCXdhcyBhbHJlYWR5IGRlZmluZWQgcHJldmlvdXNseS4KCk1vbiBOb3YgMTAgMTI6NDg6MDMgMTk5NyAgUGhpbGlwcGUgRGUgTXV5dGVyICA8cGhkbUBtYWNxZWwuYmU+CgoJKiBNYWtlZmlsZS5pbiAoSU5TVEFMTCk6IFVzZSAuLi9pbnN0YWxsLXNoLCBub3QgaW5zdGFsbC4KClR1ZSBPY3QgMjggMjM6NDE6MTUgMTk5NyAgSnVkeSBHb2xkYmVyZyAgPGpvZHlnQGlkdC5uZXQ+CgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIHBleGVjdXRlLmMuCgpXZWQgT2N0IDE1IDE5OjEzOjQ4IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGFzcHJpbnRmLmM6IENvbnNpc3RlbnRseSB1c2UgZWl0aGVyIHN0ZGFyZyBvciB2YXJhcmdzLgoKVHVlIE9jdCAxNCAxMjowMTowMCAxOTk3ICBNYXJrIE1pdGNoZWxsICA8bW1pdGNoZWxsQHVzYS5uZXQ+CgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfc2lnbmF0dXJlKTogRG9uJ3QgbG9vayBmb3IgcmV0dXJuIHR5cGVzIG9uCgljb25zdHJ1Y3RvcnMuICBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlIGNvbnN0cnVjdG9ycy4KCkZyaSBPY3QgIDMgMTc6NTM6MzAgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogUkVBRE1FOiBGaXggY29uZmlndXJhdGlvbiBpbnN0cnVjdGlvbnMuCgpNb24gU2VwIDI5IDEyOjI4OjQxIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIHBleGVjdXRlLmM6IFVwZGF0ZSB0byBjdXJyZW50IHZlcnNpb24gZnJvbSAvZ2QvZ251L2xpYjoKCglNb24gU2VwIDI5IDEyOjI3OjU5IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIHBleGVjdXRlLmM6IFVzZSBzcGF3biBpZiBfX0NZR1dJTjMyX18uCgoJMTk5Ny0wOC0wOCAgUGF1bCBFZ2dlcnQgIDxlZ2dlcnRAdHdpbnN1bi5jb20+CgoJKiBwZXhlY3V0ZS5jOiBJbmNsdWRlICJjb25maWcuaCIgZmlyc3QsIGFzIHBlciBhdXRvY29uZiBtYW51YWwuCgoJRnJpIEp1biAyNyAxNToyMDoyOSAxOTk3ICBTY290dCBDaHJpc3RsZXkgPHNjb3R0Y0BuZXQtY29tbXVuaXR5LmNvbT4KCgkqIHBleGVjdXRlLmMgKGZpeF9hcmd2KTogTmV3IGZ1bmN0aW9uLgoJKHBleGVjdXRlKTogV2luMzIgYnV0IG5vdCBDeWd3aW4zMiBuZWVkcyBpdHMgYXJndW1lbnRzIGZpeGVkLgoJQWRkIHVuZGVyc2NvcmUgdG8gY3dhaXQgZnVuY3Rpb24gY2FsbC4KClN1biBTZXAgMjggMTI6MDA6NTIgMTk5NyAgTWFyayBNaXRjaGVsbCAgPG1taXRjaGVsbEB1c2EubmV0PgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3RlbXBsYXRlKTogQWRkIG5ldyBwYXJhbWV0ZXIuICBIYW5kbGUgbmV3Cgl0ZW1wbGF0ZS1mdW5jdGlvbiBtYW5nbGluZy4KCShjb25zdW1lX2NvdW50X3dpdGhfdW5kZXJzY29yZXMpOiBOZXcgZnVuY3Rpb24uCgkoZGVtYW5nbGVfc2lnbmF0dXJlKTogSGFuZGxlIG5ldyBuYW1lLW1hbmdsaW5nIHNjaGVtZS4KCldlZCBTZXAgMjQgMDA6MzE6NTkgMTk5NyAgRmVsaXggTGVlICA8ZmxlZUB5aW4uY3lnbnVzLmNvbT4KCgkqIGFzcHJpbnRmLmM6IHN0ZGFyZy5oIHdoZW4gQUxNT1NUX1NUREMKCSogY29uZmlnL21oLXdpbmRvd3MgKEVYVFJBX09GSUxFUyk6IGFkZCBhc3ByaW50Zi5vIGFuZAoJc3RybmNhc2VjbXAuby4KClRodSBBdWcgMjggMTQ6Mjc6MTUgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogdmFzcHJpbnRmLmMgKHZhc3ByaW50Zik6IEFsbG93IGZvciBfQlNEX1ZBX0xJU1RfLgoKCSogY29uZmlnLnRhYmxlOiBBZGQgY2FzZSBmb3IgRnJlZUJTRCAyLjEgYW5kIDIuMiwgbmVlZHMgbWgtZmJzZDIxLgoKCSogY29uZmlnL21oLWZic2QyMSAoRVhUUkFfT0ZJTEVTKTogRm9yY2UgdmFzcHJpbnRmLm8KCldlZCBTZXAgMTAgMTI6NDM6MTAgMTk5NyAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IENoYW5nZSAiY29tcGxleCIgdG8gIl9fY29tcGxleCIuCgpGcmkgU2VwICA1IDE2OjM0OjQyIDE5OTcgIEFuZHJldyBDYWduZXkgIDxjYWduZXlAYjEuY3lnbnVzLmNvbT4KCgkqIGFzcHJpbnRmLmMgKGFzcHJpbnRmKTogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBBZGQgYXNwcmludGYuYwoJKiBmdW5jdGlvbnMuZGVmOiBEaXR0by4KClRodSBBdWcgMjggMTg6NTM6MzQgMTk5NyAgQW5kcmV3IENhZ25leSAgPGNhZ25leUBiMS5jeWdudXMuY29tPgoKCSogYXJndi5jIChkdXBhcmd2KTogTmV3IGZ1bmN0aW9uLCBkdXBsaWNhdGUgYW4gYXJndW1lbnQgdmVjdG9yLgoKVHVlIEF1ZyAxOSAyMDoyODo0NSAxOTk3ICBHZW9mZnJleSBOb2VyICA8bm9lckBjeWdudXMuY29tPgoKCSogY29uZmlnL21oLWN5Z3dpbjMyOiBhbHNvIGJ1aWxkIHJhbmRvbS5vCgpUdWUgQXVnIDE5IDE3OjEwOjU2IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBBZGQgJ2V4dGVybicgdG8gcHJlcGVuZHNfdW5kZXJzY29yZS4KCldlZCBKdWwgMzAgMTE6NDI6MTkgMTk5NyAgUGVyIEJvdGhuZXIgIDxib3RobmVyQGN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYzogVmFyaW91cyBjaGFuZ2VzIHRvIHByb2R1Y2UgSmF2YSBvdXRwdXQgd2hlbiBwYXNzZWQKCURNR0xfSkFWQS4gIFRodXMgIjo6IiBiZWNvbWVzICIuIiBhbmQgIkpBcnJheTxGb28+IiBiZWNvbWVzICJGb29bXSIuCgkobWFpbik6IFN1cHBvcnQgLS1qYXZhIGFuZCAtaiBmbGFncyB0byBzZXQgRE1HTF9KQVZBLgoKVHVlIEp1bCAyMiAxOTowNToyMyAxOTk3ICBSb2JlcnQgSG9laG5lIDxyb2JlcnQuaG9laG5lQE1hdGhlbWF0aWsuVFUtQ2hlbW5pdHouREU+CgoJKiBjb25maWcvbWgtZ28zMiAoQ0MsIEFSLCBSQU5MSUIpOiBEb24ndCBkZWZpbmUuCgpUdWUgSnVsIDIyIDE3OjQ5OjU0IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChSRVFVSVJFRF9PRklMRVMpOiBBZGQgcGV4ZWN1dGUuby4KCShwZXhlY3V0ZS5vKTogTmV3IHRhcmdldC4KCgkqIE1ha2VmaWxlLmluIChzdGFtcC1uZWVkZWQpOiBOZXcgdGFyZ2V0LCByZXBsYWNpbmcgbmVlZGVkLWxpc3QuCgkobmVlZGVkLWxpc3QpOiBKdXN0IGRlcGVuZCB1cG9uIHN0YW1wLW5lZWRlZC4KCShzdGFtcC1jb25maWcpOiBOZXcgdGFyZ2V0LCByZXBsYWNpbmcgY29uZmlnLmguCgkoY29uZmlnLmgpOiBKdXN0IGRlcGVuZCB1cG9uIHN0YW1wLWNvbmZpZy4KCShtb3N0bHljbGVhbik6IFJlbW92ZSBzdGFtcC0qLgoKVGh1IEp1biAxMiAxMTowMDoxOCAxOTk3ICBBbmdlbGEgTWFyaWUgVGhvbWFzIChhbmdlbGFAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChGTEFHU19UT19QQVNTKTogcGFzcyBJTlNUQUxMLCBJTlNUQUxMX1BST0dSQU0gYW5kCglJTlNUQUxMX0RBVEEgZm9yIG11bHRpbGliYmVkIGluc3RhbGxzCgpUdWUgSnVuICAzIDEzOjIxOjA1IDE5OTcgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJVHVlIERlYyAxMCAwOTo0NDo1NyAxOTk2ICBQYXVsIEVnZ2VydCAgPGVnZ2VydEB0d2luc3VuLmNvbT4KCgkqIGNob29zZS10ZW1wLmMgKGNob29zZV90ZW1wX2Jhc2UpOiBEb24ndCBkdW1wIGNvcmUgaWYgVE1QRElSIGlzIGVtcHR5LgoKCSogY2hvb3NlLXRlbXAuYyAodHJ5KTogSW5zaXN0IHRoYXQgdGVtcCBkaXIgYmUgc2VhcmNoYWJsZS4KCglXZWQgT2N0IDIzIDE3OjM2OjM5IDE5OTYgIERvdWcgUnVwcCAgKHJ1cHBAZ25hdC5jb20pCgoJKiBjaG9vc2UtdGVtcC5jIChjaG9vc2VfdGVtcF9iYXNlKTogT24gVk1TLCB1c2UgcHJvcGVyIHN5bnRheAoJZm9yIGN1cnJlbnQgZGlyZWN0b3J5LgoKCVNhdCBGZWIgMTUgMTk6MDM6NDggMTk5NyAgR2VvZmZyZXkgTm9lciAgKG5vZXJAY3lnbnVzLmNvbSkKCgkqIHBleGVjdXRlLmM6IFJlbW92ZSBzcGVjaWFsIGNhc2VzIGZvciBjeWd3aW4zMi4KCShwd2FpdCk6IFJlbW92ZSBsb2NhbCBkZWZpbml0aW9uIG9mIGBwaWQnLgoKCVR1ZSBOb3YgMTIgMTg6MjY6MTUgMTk5NiAgRG91ZyBSdXBwICAocnVwcEBnbmF0LmNvbSkKCgkqIHBleGVjdXRlLmMgKHZmb3JrKTogU3VwcGx5IG5ldyBkZWZpbml0aW9uIGZvciBWTVMuCgkocHdhaXQpOiBVc2Ugd2FpdHBpZCBpbnN0ZWFkIG9mIHdhaXQgZm9yIFZNUy4KClR1ZSBNYXkgMjAgMTQ6MDI6MjAgMTk5NyAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGRvX3R5cGUpOiBIYW5kbGUgYEonLgoJKGRlbWFuZ2xlX2Z1bmRfdHlwZSk6IFByaW50ICJjb21wbGV4IiBmb3IgaXQuCgpXZWQgQXByIDMwIDEyOjE1OjQ1IDE5OTcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogRG9uJ3QgdHVybiBvbiBtdWx0aWxpYiBoZXJlLgoKTW9uIEFwciAyOCAxOTowNDozMSAxOTk3ICBNaWNoYWVsIFNueWRlciAgPG1zbnlkZXJAY2xlYXZlci5jeWdudXMuY29tPgoKCSogb2JzdGFjay5jOiBtb3ZlIF9vYnN0YWNrX21lbW9yeV91c2VkIG91dHNpZGUgb2YgaWZkZWYuICBDYW5ub3QgYmUKCWVsaWRlZDsgbmVlZGVkIGJ5IGdkYiBhbmQgbm90IHByZXNlbnQgaW4gbGliYy4KClRodSBBcHIgMjQgMTk6MzM6NDcgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGNsZWFuKTogUmVtb3ZlIHRtcG11bHRpLm91dC4KClR1ZSBBcHIgMjIgMTA6MjU6MTUgMTk5NyAgRnJlZCBGaXNoICA8Zm5mQGN5Z251cy5jb20+CgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF9pZWVlX2RvdWJsZV9saXR0bGVieXRlX2JpZ3dvcmQpOgoJQWRkIG5ldyBmbG9hdGZvcm1hdCwgbWFpbmx5IGZvciBBUk0gZG91Ymxlcy4KCk1vbiBBcHIgMTQgMTI6MTE6MTYgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlnLnRhYmxlOiBVc2UgJHtjb25maWdfc2hlbGx9IHdpdGggJHttb3ZlaWZjaGFuZ2V9LiAgRnJvbQoJVGhvbWFzIEdyYWljaGVuIDxncmFpY2hlbkByenBkLmRlPi4KCkZyaSBBcHIgIDQgMDM6MDk6MjQgMTk5NyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IEVuYWJsZSBtdWx0aWxpYmluZyBieSBkZWZhdWx0LgoJVXBkYXRlIG11bHRpbGliIHRlbXBsYXRlIHRvIHJlYWQgY29uZmlnLW1sLmluLgoKVHVlIEFwciAgMSAxNjoyNjozOSAxOTk3ICBLbGF1cyBLYWVtcGYgIDxra2FlbXBmQHByb2dpcy5kZT4KCgkqIG1ha2VmaWxlLnZtczogQWRkIG9iamFsbG9jLgoKTW9uIE1hciAzMSAyMzo1Nzo1MSAxOTk3ICBILkouIEx1ICA8aGpsQGdudS5haS5taXQuZWR1PgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2l0KTogQWRkIHByb3RvdHlwZSBkZWNsYXJhdGlvbi4KCSh1c2FnZSwgZmF0YWwpOiBMaWtld2lzZS4KCgkqIHhleGl0LmMgKF94ZXhpdF9jbGVhbnVwKTogQWRkIHByb3RvdHlwZS4KCgkqIHN0cmVycm9yLmMgKGluaXRfZXJyb3JfdGFibGVzKTogRGVjbGFyZS4KCkZyaSBNYXIgMjggMTE6NDM6MjAgMTk5NyAgSC5KLiBMdSAgPGhqbEBsdWNvbi5vcmc+CgoJKiBmdW5jdGlvbnMuZGVmOiBBZGQgREVGIG9mIHZhc3ByaW50ZiwgYW5kIERFRkZVTkMgb2Ygc3Ryc2lnbmFsLgoJKiBzdHJzaWduYWwuYzogT25seSBkZWZpbmUgc3Ryc2lnbmFsIGlmIE5FRURfc3Ryc2lnbmFsLgoJKiBNYWtlZmlsZS5pbiAoUkVRVUlSRURfT0ZJTEVTKTogUmVtb3ZlIHZhc3ByaW50Zi5vLgoJKiBjb25maWd1cmUuaW46IEFkZCBORUVEX3N0cnNpZ25hbCB0byB4Y29uZmlnLmguICBBZGQgdmFzcHJpbnRmLm8KCXRvIHhuZWVkZWQtbGlzdC4KCSogY29uZmlnL21oLWN5Z3dpbjMyIChIREVGSU5FUyk6IEFkZCAtRE5FRURfc3Ryc2lnbmFsLgoJKEVYVFJBX09GSUxFUyk6IERlZmluZSB0byB2YXNwcmludGYuby4KCSogY29uZmlnL21oLXdpbmRvd3MgKEhERUZJTkVTKTogQWRkIC1ETkVFRF9zdHJzaWduYWwuCgkoRVhUUkFfT0ZJTEVTKTogQWRkIHZhc3ByaW50Zi5vLgoJKiBjb25maWcvbXQtdnh3b3JrczUgKHZ4Y29uZmlnLmgpOiBEZWZpbmUgTkVFRF9zdHJzaWduYWwuCgkodnhuZWVkZWQtbGlzdCk6IEFkZCB2YXNwcmludGYuby4KClRodSBNYXIgMjAgMTc6MDI6MDkgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogb2JqYWxsb2MuYzogSW5jbHVkZSA8c3RkaW8uaD4uCgpNb24gTWFyIDE3IDE5OjIzOjExIDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIG9iamFsbG9jLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIG9iamFsbG9jLmMKCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgb2JqYWxsb2Muby4KCShvYmphbGxvYy5vKTogTmV3IHRhcmdldC4KClNhdCBNYXIgMTUgMTg6NDk6NDEgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogb2JzdGFjay5jOiBVcGRhdGUgdG8gY3VycmVudCBGU0YgdmVyc2lvbi4KCkZyaSBNYXIgMTQgMTQ6MTg6NDcgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmM6IEFkZCBwcm90b3R5cGVzIGZvciBhbGwgc3RhdGljIGZ1bmN0aW9ucy4KCShteXN0cnN0cik6IE1ha2Ugc3RhdGljLiAgTWFrZSBhcmd1bWVudHMgYW5kIHJlc3VsdCBjb25zdC4KCShjcGx1c19tYXRjaCk6IFJlbW92ZTsgbm90IHVzZWQuCgpUdWUgTWFyIDExIDE0OjIwOjMxIDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChnbnVfc3BlY2lhbCk6IENhbGwgZGVtYW5nbGVkX2Z1bmRfdHlwZSBmb3Igb3RoZXIKCV9fdCogc3ltYm9scy4KClR1ZSBNYXIgMTEgMTU6NDE6MjEgMTk5NyAgSC5KLiBMdSAgPGhqbEBsdWNvbi5vcmc+CgoJKiBzcGFjZXMuYzogRGVjbGFyZSBtYWxsb2MgYW5kIGZyZWUgcHJvcGVybHkuCgkqIHN0cnNpZ25hbC5jIChpbml0X3NpZ25hbF90YWJsZXMpOiBBZGQgcHJvdG90eXBlLgoJKiB4YXRleGl0LmMgKF94ZXhpdF9jbGVhbnVwKTogQWRkIHBhcmFtZXRlciBkZWNsYXJhdGlvbnMuCgpXZWQgRmViIDE5IDE1OjQzOjI0IDE5OTcgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChsbmVlZGVkLWxpc3QpOiBJZiBhbGxvY2EubyBpcyBuZWVkZWQsIHhleGl0Lm8gaXMKCWFsc28gcmVxdWlyZWQgYmVjYXVzZSBvZiB4bWFsbG9jLm8uCgpGcmkgRmViIDE0IDEzOjQzOjM4IDE5OTcgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIHN0cnNpZ25hbC5jOiBVbmNvbmRpdGlvbmFsbHkgcmVkZWZpbmUgc3lzX3NpZ2xpc3QgYXJvdW5kIHRoZQoJaW5jbHVzaW9uIG9mIHRoZSBzeXN0ZW0gaGVhZGVyIGZpbGVzLgoKVGh1IEZlYiAxMyAyMjowMTowNCAxOTk3ICBLbGF1cyBLYWVtcGYgIDxra2FlbXBmQHByb2dpcy5kZT4KCgkqIG1ha2VmaWxlLnZtczogUmVtb3ZlIDggYml0IGNoYXJhY3RlcnMuICBVcGRhdGUgdG8gbGF0ZXN0CglnY2MgcmVsZWFzZS4KClR1ZSBGZWIgIDQgMTE6NTI6MTkgMTk5NyAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogc3Ryc2lnbmFsLmM6IFVzZSBORUVEX3N5c19zaWdsaXN0IGluc3RlYWQgb2YKCUxPU0lOR19TWVNfU0lHTElTVC4KCSogY29uZmlnLnRhYmxlOiBEb24ndCB1c2UgbWgtbHlueG9zLgoJKiBjb25maWcvbWgtbHlueG9zOiBSZW1vdmUuCgpUaHUgSmFuIDE2IDE0OjUxOjAzIDE5OTcgIEJvYiBNYW5zb24gIDxtYW5zb25AY2hhcm1lZC5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmM6IEZpeCBpbmRlbnRpbmc7IG1ha2UgaWRlbnRpY2FsIHRvIHRoZSBjb3B5CglpbiBHQ0MuCgkoZG9fdHlwZSwgY2FzZSAnTScpOiBDaGVjayBmb3IgYSB0ZW1wbGF0ZSBhcyB3ZWxsIGFzIGEgY2xhc3MuCgpUaHUgRGVjIDE5IDEzOjUxOjMzIDE5OTYgIEJyZW5kYW4gS2Vob2UgIDxicmVuZGFuQGxpc2EuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9tdC12eHdvcmtzNSAodnhuZWVkZWQtbGlzdCk6IFJlbW92ZSBzaWdzZXRtYXNrLm8sIHNpbmNlCgl2eHdvcmtzIDUuWzAtM10gYWxsIGhhdmUgc2lnc2V0bWFzayBpbiB0aGVtOyB0aGUgb25lIHByb3ZpZGVkIGJ5CglsaWJpYmVydHkgaXMgaW5jb3JyZWN0LCBhcyB3ZWxsLgoKTW9uIERlYyAgMiAxNTowMzo0MiAxOTk2ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGlrdG9rLmN5Z251cy5jb20+CgoJKiBhbGxvY2EuYyAoYWxsb2NhKTogV2hlbiBjb21waWxlZCB3aXRoIGFuIEFOU0kvSVNPIGNvbXBpbGVyLAoJYWxsb2NhIHRha2VzIGEgc2l6ZV90IGFyZ3VtZW50LCBub3QganVzdCB1bnNpZ25lZC4KCk1vbiBOb3YgMTggMTU6NDI6MDggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmM6IE5vdGUgdGhhdCB0aGlzIGZpbGUgYWxzbyBsaXZlcyBpbiBHQ0MuCgpNb24gTm92IDE4IDE1OjE5OjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGFsbG9jYS5jOiBSZW1vdmUgaW5jbHVkZSBvZiBsaWJpYmVydHkuaCBmb3IgaHB1eC4KCSogYXJndi5jOiAgUmVwbGFjZSBkZWZzIGZyb20gbGliaWJlcnR5LmguCgkqIHNwYWNlcy5jOiBQdXQgYmFjayBleHRlcm5zIGZyb20gcmVtb3ZlZCBmcm9tIGxpYmliZXJ0eS5oLgoJKiB2YXNwcmludGYuYzogUmVtb3ZlIGluY2x1ZGUgb2YgbGliaWJlcnR5LmggZm9yIGhwdXguCgpNb24gTm92IDE4IDE0OjA4OjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBDaGVja2luZyBpbiBhZ2FpbjsgbGFzdCBjaGVja2luIGZpbGVkIGR1ZSB0byBzdGlja3kgdGFnLgoKV2VkIE5vdiAxMyAwODoyMjowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYzogUmV2ZXJ0IGxhc3QgdHdvIGNvbW1pdHMgZHVlIHRvIGNvbmZsaWN0cyB3aXRoCglocHV4IHN5c3RlbSBoZWFkZXJzLgoKV2VkIE5vdiAxMyAwODoyMjowMCAxOTk2ICBEYXduIFBlcmNoaWsgIDxkYXduQGNyaXR0ZXJzLmN5Z251cy5jb20+CgoJKiBhbGxvY2EuYywgYXJndi5jLCBzcGFjZXMuYywgc3RyY2FzZWNtcC5jLCB2YXNwcmludGYuYywgdnByaW50Zi5jOgoJUmV2ZXJ0IGxhc3QgY29tbWl0IGR1ZSB0byBjb25mbGljdHMgd2l0aCBocHV4IHN5c3RlbSBoZWFkZXJzLgoKV2VkIE5vdiAxMyAxMDozNjo1MCAxOTk2ICBNaWNoYWVsIE1laXNzbmVyICA8bWVpc3NuZXJAdGlrdG9rLmN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoeHttLHJlfWFsbG9jKTogTWFrZSBkZWNsYXJhdGlvbnMgY29tcGF0aWJpbGUgd2l0aAoJbGliaWJlcnR5Lmggd2hlbiBjb21waWxlZCB3aXRoIGEgc3RhbmRhcmQgY29tcGlsZXIuCgpUdWUgTm92IDEyIDE2OjMxOjAwIDE5OTYgIERhd24gUGVyY2hpayAgPGRhd25AY3JpdHRlcnMuY3lnbnVzLmNvbT4KCgkqIGFsbG9jYS5jOiBJbmNsdWRlIGxpYmliZXJ0eS5oIGZvciBkZWZpbml0aW9uIG9mIHhtYWxsb2MuCglEb24ndCByZWRlZmluZSBOVUxMLgoJKiBhcmd2LmM6IE1vdmUgcHJvdG90eXBlcyB0byBsaWJpYmVydHkuaC4KCSogY3BsdXMtZGVtLmM6IEluY2x1ZGUgbGliaWJlcnR5LmggZm9yIGRlZmluaXRpb24gb2YgeG1hbGxvYy4KCURvbid0IHJlZGVmaW5lIE5VTEwuCglVc2UgY2FzdHMgdG8gZWxpbWluYXRlIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiBzcGFjZXMuYzogUmVtb3ZlIHByb3RvdHlwZXMgZm9yIG1hbGxvYyBhbmQgZnJlZSB3aGljaCBhcmUKCWFscmVhZHkgaW4gbGliaWJydHkuaC4KCSogc3RyY2FzZWNtcC5jOiBVc2UgY2FzdHMgdG8gZWxpbWluYXRlIGNvbXBpbGVyIHdhcm5pbmdzLgoJKiB2YXNwcmludGYuYzogSW5jbHVkZSBsaWJpYmVydHkuaCBmb3IgZGVmaW5pdGlvbiBvZiBtYWxsb2MuCglEb24ndCByZWRlZmluZSBOVUxMLgoJKiB2cHJpbnRmLmM6IEluY2x1ZGUgc3RkYXJnLmggaWYgX19TVERDX18uCgpGcmkgT2N0IDExIDE1OjQyOjEyIDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBjb25maWcvbWgtd2luZG93czogIEFkZCBzdHJjYXNlY21wLm8gdG8gRVhUUkFfT0ZJTEVTLgoKRnJpIE9jdCAxMSAxMToxNjozMSAxOTk2ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBtcHcuYyAobXB3aWZ5X2ZpbGVuYW1lKTogUmV3cml0ZSB0byBzaW1wbGlmeSwgYW5kIHRvIGhhbmRsZQoJdXB3YXJkIGNvbXBvbmVudHMgY29ycmVjdGx5LgoKVHVlIE9jdCAgOCAwODo1NTozNCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogY29uZmlnLnRhYmxlLCBjb25maWcvbWgtd2luZG93czogIEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyB1bmRlcgoJTVNWQyAodGhlIE1pY3Jvc29mdCBidWlsZCBlbnZpcm9ubWVudCkuCgpNb24gT2N0ICA3IDEwOjUwOjI3IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGZubWF0Y2guYzogVW5kZWYgY29uc3QgaWYgbm90IF9fU1REQ19fLgoKVGh1IE9jdCAgMyAxMzo0NjozOSAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBmbm1hdGNoLmM6IE5ldyBmaWxlLgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIGZubWF0Y2guYy4KCShSRVFVSVJFRF9PRklMRVMpOiBBZGQgZm5tYXRjaC5vLgoJKGZubWF0Y2gubyk6IE5ldyB0YXJnZXQuCgpXZWQgU2VwIDE4IDE0OjQ5OjEzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZSk6IEZpeCBoYW5kbGluZyBvZiBhZGRyZXNzIGFyZ3MuCgkoZ251X3NwZWNpYWwpOiBIYW5kbGUgdHlwZV9pbmZvIHN0dWZmLgoKRnJpIFNlcCAxMyAxNzo1Mjo1NSAxOTk2ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBtcHcuYyAoRGVidWdQSSk6IE1ha2Ugc2V0dGFibGUgZnJvbSB0aGUgZW52IHZhciBERUJVR19QQVRITkFNRVMuCgkobXB3aWZ5X2ZpbGVuYW1lKTogSGFuZGxlICI6Oi8iIGNhc2UuCgpUaHUgU2VwIDEyIDEzOjMwOjQwIDE5OTYgIEdlb2ZmcmV5IE5vZXIgIDxub2VyQGN5Z251cy5jb20+CgoJKiBjb25maWcvbWgtY3lnd2luMzI6IG5ldyBmaWxlIChuZWVkIC1ETkVFRF9iYXNlbmFtZSBhbmQKCQktRE5FRURfc3lzX3NpZ2xpc3QgZm9yIG5hdGl2ZSBOVCByZWJ1aWxkaW5nKQoJKiBjb25maWcudGFibGUgKCotKi1jeWd3aW4zMik6IG5ldyBlbnRyeQoJKiBjaG9vc2UtdGVtcC5jOiBicmluZyBpbiBzeW5jIHdpdGggZ2NjIChyZXZlcnQgQXVnIDE3IGNoYW5nZSkKClRodSBBdWcgMjkgMTY6NDg6NDUgMTk5NiAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHRpa3Rvay5jeWdudXMuY29tPgoKCSogY29uZmlnLnRhYmxlIChpWzM0NV04Ni0qLSopOiBSZWNvZ25pemUgaTY4NiBmb3IgcGVudGl1bSBwcm8uCgpUdWUgQXVnIDI3IDEzOjQ3OjU4IDE5OTYgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIHBleGVjdXRlLmMgKHBleGVjdXRlKSBbTVBXXTogUmVtb3ZlIG9sZCBib2d1cyBjb2RlIHRoYXQKCW1lc3NlZCB3aXRoIGFyZ3VtZW50cyB0aGF0IGluY2x1ZGVkIGEgJy8nLCBhZGQgZXNjYXBlIGNoYXJzCgl0byBkb3VibGUgcXVvdGVzLCByZW1vdmUgY29uc3QgZGVjbCBmcm9tIGFyZyB0aGF0IE1hYwoJY29tcGlsZXJzIGRvbid0IHNlZW0gdG8gbGlrZS4KClNhdCBBdWcgMTcgMDQ6NDQ6MjcgMTk5NiAgR2VvZmZyZXkgTm9lciAgPG5vZXJAY3lnbnVzLmNvbT4KCgkqIHBleGVjdXRlLmM6IFVwZGF0ZSB0ZXN0IGZvciB3aW4zMiAoJiYgISBjeWd3aW4zMikuCgkqIGNob29zZS10ZW1wLmM6IGZpeCBXSU4zMiBwcmVwcm9jZXNzb3IgZGVmaW5lcwoKVGh1IEF1ZyAxNSAxMjoyNjo0OCAxOTk2ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBtcHctbWFrZS5zZWQ6IEFkZCBAREFTSF9DX0ZMQUdAIGFuZCBAU0VHTUVOVF9GTEFHKHtEZWZhdWx0fSlACgl0byBlZGl0aW5nIG9mIGRlZmF1bHQgbWFrZWZpbGUgcnVsZS4KClN1biBBdWcgMTEgMjE6MDM6MjcgMTk5NiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3JpdHRlcnMuY3lnbnVzLmNvbSkKCgkqIGFsbG9jYS1ub3JtLmg6ICBJbmNsdWRlIDxtYWxsb2MuaD4gaWYgX1dJTjMyLgoJKiBhcmd2LmM6ICBJbmNsdWRlIG5vbi1wcm90b3R5cGVkIGRlY2xzIGZvciBtYWxsb2MgYW5kIHN0cmluZwoJZnVuY3Rpb25zIGlmICEgX1dJTjMyIG9yIGlmIF9fR05VQ19fLgoKVGh1IEF1ZyAgOCAxMjo0Mjo0MCAxOTk2ICBLbGF1cyBLYWVtcGYgIDxra2FlbXBmQHByb2dpcy5kZT4KCgkqIGNvbmZpZy5oLXZtczogTmV3IGZpbGUuCgkqIG1ha2VmaWxlLnZtczogVXNlIGl0LgoKV2VkIEF1ZyAgNyAxNzoxNjoxMiAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmMgKF9nZXRvcHRfaW50ZXJuYWwpOiAgSWYgYXJnYyBpcyAwLCBqdXN0IHJldHVybiAoYmVmb3JlCgl3ZSByZWZlcmVuY2UgKmFyZ3YgYW5kIHNlZ2ZhdWx0KS4KCk1vbiBBdWcgIDUgMDE6Mjk6MDggMTk5NiAgSmFzb24gTWVycmlsbCAgPGphc29uQHlvcmljay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKGRpc3RjbGVhbik6IEFkZCBtdWx0aWxpYi5vdXQuCgpUaHUgSnVsIDE4IDE3OjQwOjU1IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGFsbG9jYS1ub3JtLmg6IENoYW5nZSAjaWZkZWYgc3BhcmMgdG8gI2lmIGRlZmluZWQgKHNwYXJjKSAmJgoJZGVmaW5lZCAoc3VuKS4gIEZyb20gQW5kcmV3IEdpZXJ0aCA8QU5EUkVXR0BtaWNyb2xpc2UuY28udWs+LgoKTW9uIEp1bCAgMSAxMzo0MDo0NCAxOTk2ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5AY3lnbnVzLmNvbT4KCglUdWUgTWF5IDI4IDE1OjI5OjAzIDE5OTYgIFBhdCBSYW5raW4gIDxyYW5raW5AZXFsLmNhbHRlY2guZWR1PgoKCSogdm1zYnVpbGQuY29tIChSRVFVSVJEX09GSUxFUyk6IEFkZCBjaG9vc2UtdGVtcC5vIGFuZCB4c3RyZHVwLm8uCgoJVGh1IEphbiAyNSAxODoyMDowNCAxOTk2ICBQYXQgUmFua2luICA8cmFua2luQGVxbC5jYWx0ZWNoLmVkdT4KCgkqIHZtc2J1aWxkLmNvbTogQ2hhbmdlcyB0byBoYW5kbGUgREVGRlVOQyhvbl9leGl0KS4KCShkb19vZmlsZXMpOiBBbGxvdyBub25leGlzdGVudCBzb3VyY2UgZmlsZSBpbiBwYXNzIDMuCgkoY2hrX2RlZmZ1bmMpOiBOZXcgcm91dGluZS4KClR1ZSBKdW4gMjUgMTk6MjQ6NDMgMTk5NiAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIHBleGVjdXRlLmMgKFBFWEVDVVRFX1ZFUkJPU0UpOiBEZWZpbmUuCgkoTVBXIHBleGVjdXRlKTogQ2hlY2sgZmxhZ3MgJiBQRVhFQ1VURV9WRVJCT1NFIGluc3RlYWQgb2YgdmVyYm9zZV9mbGFnLgoKVHVlIEp1biAyNSAyMzoxMTo0OCAxOTk2ICBKYXNvbiBNb2xlbmRhICAoY3Jhc2hAZ29kemlsbGEuY3lnbnVzLmNvLmpwKQoKCSogTWFrZWZpbGUuaW4gKGRvY2Rpcik6IFJlbW92ZWQuCgpUdWUgSnVuIDI1IDIzOjAxOjA3IDE5OTYgIEphc29uIE1vbGVuZGEgIChjcmFzaEBnb2R6aWxsYS5jeWdudXMuY28uanApCgoJKiBNYWtlZmlsZS5pbiAob2xkaW5jbHVkZWRpcik6IFJlbW92ZWQuCgpUdWUgSnVuIDI1IDIyOjUwOjA3IDE5OTYgIEphc29uIE1vbGVuZGEgIChjcmFzaEBnb2R6aWxsYS5jeWdudXMuY28uanApCgoJKiBNYWtlZmlsZS5pbiAoZGF0YWRpcik6IFNldCB0byAkKHByZWZpeCkvc2hhcmUuCgpUaHUgSnVuIDIwIDIxOjE3OjUyIDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9hcm1fcHQpOiBSZWluZGVudC4gIEF2b2lkIGVuZGxlc3MgbG9vcCBieQoJY2hlY2tpbmcgZm9yIGVycm9ycyBmcm9tIGRvX3R5cGUuCgpUdWUgSnVuIDE4IDE0OjM2OjE5IDE5OTYgIEtsYXVzIEthZW1wZiAgPGtrYWVtcGZAcHJvZ2lzLmRlPgoKCSogbWFrZWZpbGUudm1zOiBOZXcgZmlsZS4KCSogeG1hbGxvYy5jOiBJZiBWTVMsIGluY2x1ZGUgPHN0ZGxpYi5oPiBhbmQgPHVuaXhsaWIuaD4gcmF0aGVyCgl0aGFuIGRlY2xhcmluZyBtYWxsb2MsIHJlYWxsb2MsIGFuZCBzYnJrLgoKTW9uIEp1biAxMCAxMzoxNzoxNyAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogcGV4ZWN1dGUuYzogTmV3IGZpbGUuCgpXZWQgSnVuICA1IDE2OjU3OjQ1IDE5OTYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHRhbXUuZWR1PgoKCSogeG1hbGxvYy5jOiBEZWNsYXJlIHNicmsuCgpTYXQgTWF5ICA0IDA1OjA4OjQ1IDE5OTYgIFBldGVyIFNjaGF1ZXIgIChwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZSkKCgkqIGFsbG9jYS1ub3JtLmg6ICBBZGQgU1BBUkN3b3JrcyBjYyBjb21wYXRpYmxlIF9fYnVpbHRpbl9hbGxvY2EKCWRlY2xhcmF0aW9uLgoKTW9uIEFwciAyMiAxODo0MTo0OSAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiB4c3RyZXJyb3IuYzogSW5jbHVkZSA8c3RkaW8uaD4uCgpTdW4gQXByIDIxIDExOjU1OjEyIDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoQ0ZJTEVTKTogQWRkIGF0ZXhpdC5jLgoKU3VuIEFwciAyMSAwOTo1MDowOSAxOTk2ICBTdGVwaGVuIEwgTW9zaGllciAgKG1vc2hpZXJAd29ybGQuc3RkLmNvbSkKCgkqIGNob29zZS10ZW1wLmM6IEluY2x1ZGUgc3lzL3R5cGVzLmggYmVmb3JlIHN5cy9maWxlLmggZm9yIHNjbzMuMnY1LgoKV2VkIEFwciAxNyAxMToxNzo1NSAxOTk2ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogY2hvb3NlLXRlbXAuYzogRG9uJ3QgI2luY2x1ZGUgc3lzL2ZpbGUuaCBpZmRlZiBOT19TWVNfRklMRV9ILgoJI2luY2x1ZGUgPHN0ZGlvLmg+CgkqIGNvbmZpZy9tdC12eHdvcmtzNSAoSERFRklORVMpOiBEZWZpbmUgTk9fU1lTX0ZJTEVfSC4KClR1ZSBBcHIgMTYgMTE6Mjc6MTYgMTk5NiAgSmVmZnJleSBBIExhdyAgKGxhd0BjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGxuZWVkZWQtbGlzdCk6IElmIGFsbG9jYS5vIGlzIG5lZWRlZCwgc28gaXMgeG1hbGxvYy5vLgoJUmV2ZXJ0cyBGZWIgOCwgMTk5NSBjaGFuZ2UuCgpNb24gQXByIDE1IDEyOjUzOjI2IDE5OTYgIERvdWcgRXZhbnMgIDxkamVAY2FudWNrLmN5Z251cy5jb20+CgoJKiBjaG9vc2UtdGVtcC5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCBjaG9vc2UtdGVtcC5jLgoJKFJFUVVJUkVEX09GSUxFUyk6IEFkZCBjaG9vc2UtdGVtcC5vLgoKU2F0IEFwciAxMyAxNDoxOTozMCAxOTk2ICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbkBjcml0dGVycy5jeWdudXMuY29tKQoKCSogZmxvYXRmb3JtYXQuYyAoZmxvYXRmb3JtYXRfdG9fZG91YmxlKTogIERvbid0IGJpYXMgZXhwb25lbnQgd2hlbgoJaGFuZGxpbmcgemVybydzLCBkZW5vcm1zIG9yIE5hTnMuCgpUaHUgQXByIDExIDEzOjM2OjU2IDE5OTYgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuQGNyaXR0ZXJzLmN5Z251cy5jb20pCgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF90b19kb3VibGUpOiAgRml4IGJ1Z3Mgd2l0aCBoYW5kbGluZwoJbnVtYmVycyB3aXRoIGZyYWN0aW9ucyA8IDMyIGJpdHMuCgpNb24gQXByICA4IDE0OjQ4OjM0IDE5OTYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy50YWJsZTogUGVybWl0IC0tZW5hYmxlLXNoYXJlZCB0byBzcGVjaWZ5IGEgbGlzdCBvZgoJZGlyZWN0b3JpZXMuCgpUdWUgTWFyIDE5IDIyOjAyOjA3IDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZSk6IEZpeCBmb3Igbm9uLW1hbmdsZWQgcG9pbnRlcgoJYXJndW1lbnRzLgoKRnJpIE1hciAgOCAxNzoyNDoxOCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWd1cmUuaW46IElmIHNyY2RpciBpcyBgLicgYW5kIHdpdGhfdGFyZ2V0X3N1YmRpciBpcyBub3QKCWAuJywgdGhlbiBzZXQgTVVMVElTUkNUT1AgYmVmb3JlIGNhbGxpbmcgY29uZmlnLW1sLmluLgoKVGh1IE1hciAgNyAxMzozNzoxMCAxOTk2ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBtcHcuYyAobXB3X29wZW4pOiBBZGQgZGVidWdnaW5nIG91dHB1dCBvcHRpb24uCgpXZWQgTWFyICA2IDE3OjM2OjAzIDE5OTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZSk6IEZpeCBmb3IgYWRkcmVzcy1vZi1leHRlcm4gYXJndW1lbnRzLgoKVHVlIEZlYiAyNyAxMjowMDo1MCAxOTk2ICBSYXltb25kIEpvdSAgPHJqb3VAbWV4aWNhbi5jeWdudXMuY29tPgoKCSogbXB3LmMgKG1wd2lmeV9maWxlbmFtZSk6IENoYW5nZSA2IHRvIDUgaW4KCXN0cm5jbXAgKHVuaXhuYW1lLCAiL3RtcC8iLCA1KS4KClR1ZSBGZWIgMjAgMTA6NTU6NTMgMTk5NiAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3RlbXBsYXRlKTogSW5pdGlhbGl6ZSBpc19ib29sLiAgQ29ycmVjdGx5CgloYW5kbGUgMCBhcyBhIHBvaW50ZXIgdmFsdWUgcGFyYW1ldGVyLgoKTW9uIEZlYiAgNSAxNjo0MTo0NCAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAoYWxsKTogRGVwZW5kIHVwb24gcmVxdWlyZWQtbGlzdC4KCShyZXF1aXJlZC1saXN0KTogTmV3IHRhcmdldC4KCShjbGVhbik6IFJlbW92ZSByZXF1aXJlZC1saXN0LgoKV2VkIEphbiAzMSAxMDoxOTo0MSAxOTk2ICBTdGV2ZSBDaGFtYmVybGFpbiAgPHNhY0BzbGFzaC5jeWdudXMuY29tPgoKCSogd2luMzIuYzogRGVsZXRlZC4KCSogY29uZmlnLnRhYmxlIChpMzg2LSotd2luMzIpOiBEZWxldGVkLgoJKiBjb25maWcvbWgtaTM4NndpbjMyOiBEZWxldGVkLgoKVGh1IEphbiAxOCAxMTozNDoxNyAxOTk2ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjcGx1cy1kZW0uYyAoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogQ2hhbmdlIG9wbmFtZSBwYXJhbWV0ZXIgdG8KCWNvbnN0IGNoYXIgKi4KCShjcGx1c19tYW5nbGVfb3BuYW1lKTogQ2hhbmdlIHJldHVybiB0eXBlIGFuZCBvcG5hbWUgcGFyYW1ldGVyIHRvCgljb25zdCBjaGFyICouICBEb24ndCBjYXN0IHJldHVybiB2YWx1ZS4KClR1ZSBKYW4gMTYgMTI6MTM6MTEgMTk5NiAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogbXB3LmM6IEluY2x1ZGUgVGltZXIuaCwgaW4gb3JkZXIgdG8gZ2V0IG02OGsgTWljcm9zZWNvbmRzIHRyYXAKCWRlZmluaXRpb24uCgpXZWQgSmFuICAzIDEzOjE1OjA0IDE5OTYgIEZyZWQgRmlzaCAgPGZuZkBjeWdudXMuY29tPgoKCSogb2JzdGFjay5jOiBVcGRhdGUgY29weXJpZ2h0IHRvIDE5OTYuCgkoX29ic3RhY2tfbWVtb3J5X3VzZWQpOiBEZWZpbmUgbmV3IGZ1bmN0aW9uLiAgQ2FsbGVkIHZpYQoJb2JzdGFja19tZW1vcnlfdXNlZCBtYWNyby4KClRodSBEZWMgMjggMTE6Mzk6NDAgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogeHN0cmR1cC5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyk6IEFkZCB4c3RyZHVwLmMuCgkoUkVRVUlSRURfT0ZJTEVTKTogQWRkIHhzdHJkdXAuby4KCSh4c3RyZHVwLm8pOiBOZXcgdGFyZ2V0LgoKTW9uIERlYyAxMSAxODoxODo1MiAxOTk1ICBNaWtlIFN0dW1wICA8bXJzQGN5Z251cy5jb20+CgoJKiBhdGV4aXQuYzogTmV3IHN0dWIgdG8gcHJvdmlkZSBhdGV4aXQgb24gc3lzdGVtcyB0aGF0IGhhdmUKCW9uX2V4aXQsIGxpa2UgU3VuT1MgNC4xLnggc3lzdGVtcy4KCSogZnVuY3Rpb25zLmRlZiAob25fZXhpdCwgYXRleGl0KTogRGl0dG8uCgpNb24gRGVjIDExIDE1OjQyOjE0IDE5OTUgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIG1wdy5jIChtcHdfYWJvcnQpOiBSZW1vdmUgZGVjbC4KCShtcHdfYWNjZXNzKTogTW92ZSBkZWJ1Z2dpbmcgcHJpbnRmLgoKU2F0IERlYyAgMiAwMToyNToyMyAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWcudGFibGU6IENvbnNpc3RlbnRseSB1c2UgJHtob3N0fSByYXRoZXIgdGhhbiAke3hob3N0fSBvcgoJJHt0YXJnZXR9LgoJKiBjb25maWd1cmUuaW46IERvbid0IGJvdGhlciB0byBzZXQgJHt4aG9zdH0gYmVmb3JlIGNhbGxpbmcKCWNvbmZpZy50YWJsZS4KClR1ZSBOb3YgMjggMTQ6MTY6NTcgMTk5NSAgQnJlbmRhbiBLZWhvZSAgPGJyZW5kYW5AbGlzYS5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKC5jLm8pOiBVc2UgdGVzdCBpbnN0ZWFkIG9mIHRoZSBsZWZ0IGJyYWNrZXQsIHRvCglhdm9pZCBwcm9ibGVtcyB3aXRoIHNvbWUgdmVyc2lvbnMgb2YgbWFrZS4KClR1ZSBOb3YgMjggMTE6NDU6MTcgMTk5NSAgU3RhbiBTaGVicyAgPHNoZWJzQGFuZHJvcy5jeWdudXMuY29tPgoKCSogbXB3LW1ha2Uuc2VkOiBGaXggSU5DRElSIGVkaXQgdG8gd29yayB3aXRoIE5vdiAxNCBjaGFuZ2UuCgpUdWUgTm92IDIxIDExOjI2OjM0IDE5OTUgIEZyZWQgRmlzaCAgPGZuZkBydGwuY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taC1ocHV4OiBSZW1vdmUuICBJdCB3YXMgb25seSB1c2VkIHRvIGRlZmluZSBFWFRSQV9PRklMRVMsCgl3aGljaCB3YXMgc2V0IHRvIGp1c3QgYWxsb2NhLm8sIHdoaWNoIGlzIG5vdyBhdXRvbWF0aWNhbGx5IG1hcmtlZAoJYXMgbmVlZGVkIGJ5IHRoZSBhdXRvY29uZmlndXJhdGlvbiBwcm9jZXNzLgoKVHVlIE5vdiAyMSAxNDoxNTowNiAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWcudGFibGU6IENoZWNrICR7d2l0aF9jcm9zc19ob3N0fSByYXRoZXIgdGhhbiBjb21wYXJpbmcKCSR7aG9zdH0gYW5kICR7dGFyZ2V0fS4KClRodSBOb3YgMTYgMTQ6MzQ6NDIgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBJZiB3aXRoX3RhcmdldF9zdWJkaXIgaXMgZW1wdHksIHNldCB4aG9zdCB0bwoJJHtob3N0fSByYXRoZXIgdGhhbiAke3RhcmdldH0gYmVmb3JlIGNhbGxpbmcgY29uZmlnLnRhYmxlLgoKVHVlIE5vdiAxNCAwMTozODozMCAxOTk1ICBEb3VnIEV2YW5zICA8ZGplQGNhbnVjay5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKE1VTFRJVE9QKTogRGVsZXRlZC4KCShNVUxUSVNSQ1RPUCwgTVVMVElCVUlMRFRPUCk6IE5ldy4KCShGTEFHU19UT19QQVNTKTogRGVsZXRlIElOQ0RJUi4KCShJTkNESVIpOiBBZGQgJChNVUxUSVNSQ1RPUCkuCgkoaW5zdGFsbF90b19saWJkaXIpOiBBZGQgJChNVUxUSVNVQkRJUikuICBDYWxsICQoTVVMVElETykuCgkqIGNvbmZpZ3VyZS5pbjogRGVsZXRlIGNhbGwgdG8gY2ZnLW1sLWNvbS5pbi4gIENhbGwgY29uZmlnLW1sLmluCglpbnN0ZWFkIG9mIGNmZy1tbC1wb3MuaW4uCgkoY3Jvc3MtY29tcGlsZSBjaGVjayk6IENoYW5nZSB0byB0ZXN0IGZvciB3aXRoX3RhcmdldF9zdWJkaXIuCgkoRVhUUkFfTElOS1MpOiBEZWxldGUuCgpTdW4gTm92IDEyIDEyOjEzOjA0IDE5OTUgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIG1wdy1tYWtlLnNlZDogQWRkIGdldHBhZ2VzaXplLmMubyB0byBuZWVkZWQtbGlzdC4KCSogbXB3LmMgW1VTRV9NV19IRUFERVJTXTogQ29uZGl0aW9uYWxpemUgY29tcGlsaW5nIG9mCglmdW5jdGlvbnMgdGhhdCBhcmUgc3VwcGxpZWQgYnkgTWV0cm93ZXJrcyBsaWJyYXJpZXMuCgkoZnN0YXQpOiBDbGVhbiB1cCBkZXNjcmlwdG9yLT5wb2ludGVyIGNvbnZlcnNpb24gY29kZS4KCShJbnN0YWxsQ29uc29sZSwgZXRjKTogRW1wdHkgZGVmaW5pdGlvbnMsIGZvciB3aGVuIGxpbmtpbmcKCXdpdGggU0lPVVguCgpTdW4gTm92ICA1IDE5OjI1OjI3IDE5OTUgIFBlciBCb3RobmVyICA8Ym90aG5lckBrYWxlc3Npbi5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKEZMQUdTX1RPX1BBU1MpOiAgQWxzbyBwYXNzIFBJQ0ZMQUdTLgoJKC5jLm8pOiAgU3R5bGlzdGljIGNoYW5nZS4KClRodSBOb3YgIDIgMTI6MDY6MjkgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogc3RydG9sLmMsIHN0cnRvdWwuYzogRG9uJ3QgaW5jbHVkZSA8c3RkbGliLmg+LiAgRnJvbQoJcGhkbUBpbmZvLnVjbC5hYy5iZSAoUGhpbGlwcGUgRGUgTXV5dGVyKS4KCldlZCBOb3YgIDEgMTE6NTk6MzYgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogY29uZmlndXJlLmluOiBDb3JyZWN0IHNlZCBjYWxsLgoKTW9uIE9jdCAzMCAxMzowMzo0NSAxOTk1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIGNvbmZpZ3VyZS5pbjogIENsZWFuIHVwIC8gc2ltcGxpZnkgZm9yIG5hdGl2ZS4KCgkqIGNvbmZpZ3VyZS5pbjogIE1lcmdlIGluIHN0dWZmIGZyb20gLi4veGliZXJ0eS9jb25maWd1cmUuaW4uCgkqIE1ha2VmaWxlLmluIChDQyk6ICBBZGQgZGVmaW5pdGlvbiAoc28gaXQgY2FuIGJlIG92ZXJycmlkZGVuCglieSAuLi9jb25maWd1cmUpLgoKVHVlIE9jdCAyNCAxNzo1NzoyNyAxOTk1ICBTdGFuIFNoZWJzICA8c2hlYnNAYW5kcm9zLmN5Z251cy5jb20+CgoJKiBtcHctbWFrZS5zZWQ6IExlYXZlIHN0cmVycm9yLmMubyBpbiBzdGFuZGFyZCBsaXN0IG9mIGZ1bmN0aW9ucy4KCSogbXB3LmMgKFJfT0ssIEVOT0VOVCwgRUFDQ0VTUywgRU5PU1lTKTogUmVtb3ZlLgoJKGxpbmspOiBSZW1vdmUgdXNlbGVzcyBkZWZpbml0aW9uIHdpdGggZXJyb3IgcmV0dXJuLgoJKGxhc3RfbWljcm9zZWNvbmRzLCB3YXJuX2lmX3NwaW5fZGVsYXksIHJlY29yZF9mb3Jfc3Bpbl9kZWxheSk6CglVc2UgVW5zaWduZWRXaWRlIHR5cGUgZm9yIG1pY3Jvc2Vjb25kIGNvdW50cy4KClRodSBPY3QgMTkgMTA6NTI6MDcgMTk5NSAgTWljaGFlbCBNZWlzc25lciAgPG1laXNzbmVyQHdvZ2dsZWJ1Zy50aWFjLm5ldD4KCgkqIG1lbWNtcC5jIChtZW1jbXApOiBBcmd1bWVudCB0eXBlcyBhcmUgY29uc3Qgdm9pZCAqLCBub3Qgdm9pZAoJKmNvbnN0LgoKCSogc3RybmNhc2VjbXAuYyAoc3RybmNhc2VjbXApOiBJbmNsdWRlIGFuc2lkZWNsLmgvc3RkYXJnLmgsIG5vdAoJc3lzL3R5cGVzLmguCgkqIHN0cmNhc2VjbXAuYyAoc3RyY2FzZWNtcCk6IERpdHRvLgoKVHVlIE9jdCAxMCAxMTowMzoyNCAxOTk1ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChCSVNPTik6ICBSZW1vdmUgbWFjcm8uCgpUdWUgU2VwIDI2IDE1OjA2OjQ2IDE5OTUgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChIRklMRVMpOiBBZGQgZGVmYXVsdCBlbXB0eSBkZWZpbml0aW9uLgoJKiBtcHctY29uZmlnLmluIChjb25maWcuaCk6IE9ubHkgdXBkYXRlIGlmIGNoYW5nZWQuCgkqIG1wdy1tYWtlLmluOiBSZW1vdmUuCgkqIG1wdy1tYWtlLnNlZDogTmV3IGZpbGUsIGVkaXRzIE1ha2VmaWxlLmluIGludG8gTVBXIG1ha2VmaWxlLgoJKiBtcHcuYzogUmVtb3ZlIHNlbWktY2xvbmUgb2Ygc3RyZXJyb3IgY29kZS4KCShzeXNfbmVyciwgc3lzX2Vycmxpc3QpOiBEZWZpbmUgaGVyZS4KCShNaWNyb3NlY29uZHMpOiBPbmx5IGRlZmluZSBhcyBBLWxpbmUgdHJhcCBpZiBtNjhrIE1hYy4KCldlZCBTZXAgMjAgMTI6NTM6MzIgMTk5NSAgSWFuIExhbmNlIFRheWxvciAgPGlhbkBjeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKG1haW50YWluZXItY2xlYW4pOiBOZXcgc3lub255bSBmb3IgZGlzdGNsZWFuLgoKTW9uIEF1ZyAyOCAxOTo0Nzo1MiAxOTk1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy50YWJsZTogIEZvciBob3N0LCBnZW5lcmFsaXplIHJzNjAwMC1pYm0tYWl4KgoJdG8gKi1pYm0tYWl4KiBzbyB3ZSBhbHNvIGluY2x1ZGUgcG93ZXJwYy4KClR1ZSBBdWcgMjIgMDM6MTg6MDUgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGtyLWxhcHRvcC5jeWdudXMuY29tPgoKCUZyaSBKdW4gMTYgMTg6MzU6NDAgMTk5NSAgUGF0IFJhbmtpbiAgKHJhbmtpbkBlcWwuY2FsdGVjaC5lZHUpCgoJKiB4c3RyZXJyb3IuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluLCB2bXNidWlsZC5jb206IENvbXBpbGUgaXQuCgpNb24gSnVsIDMxIDEyOjE2OjMyIDE5OTUgIHN0ZXZlIGNoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiBjb25maWcudGFibGUgKGkzODYtKi13aW4zMik6IE5ldy4KCkZyaSBKdWwgMjEgMTE6MzU6NTIgMTk5NSAgRG91ZyBFdmFucyAgPGRqZUBjYW51Y2suY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluIChNVUxUSVRPUCk6IE5ldyB2YXJpYWJsZS4KCShNVUxUSURJUlMsIE1VTFRJU1VCRElSLCBNVUxUSURPLCBNVUxUSUNMRUFOKTogTGlrZXdpc2UuCgkoYWxsKTogQWRkIG11bHRpbGliIHN1cHBvcnQuCgkoaW5zdGFsbF90b190b29sZGlyLCAqY2xlYW4pOiBMaWtld2lzZS4KCk1vbiBKdWwgMTAgMTE6NDc6MjcgMTk5NSAgS2VuIFJhZWJ1cm4gIDxyYWVidXJuQGN5Z251cy5jb20+CgoJKiBtYWtlZmlsZS5kb3MgKE9CSlMpOiBBZGQgaGV4Lm8uICBGcm9tIERKIERlbG9yaWUuCgpGcmkgSnVuIDMwIDE3OjI4OjU5IDE5OTUgIFBhdCBSYW5raW4gIChyYW5raW5AZXFsLmNhbHRlY2guZWR1KQoKCSogdm1zYnVpbGQuY29tOiAgY3JlYXRlICJuZXctbGliLm9sYiIsIGJ1aWxkIGxpYmliZXJ0eSB1bmRlciB0aGF0CgluYW1lLCBhbmQgdGhlbiBtYWtlIGl0IGJlY29tZSAibGliZXJ0eS5vbGIiIHdoZW4gZG9uZSwgc28gdGhhdCBhbgoJaW5jb21wbGV0ZSBidWlsZCBhdHRlbXB0IG5ldmVyIGxlYXZlcyBiZWhpbmQgc29tZXRoaW5nIHdoaWNoIGxvb2tzCglsaWtlIGEgY29tcGxldGUgbGlicmFyeS4KClRodSBKdW4gMjkgMDA6MjI6MDIgMTk5NSAgU3RldmUgQ2hhbWJlcmxhaW4gIDxzYWNAc2xhc2guY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy9taC1pMzg2cGU6IE5ldyBmaWxlIGZvciBQRSBob3N0cy4KCSogY29uZmlnLnRhYmxlOiBVbmRlcnN0YW5kIFBFIGhvc3RzLgoKV2VkIEp1biAyOCAxOToxMzoyMyAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBVcGRhdGUgZnJvbSBnY2MuCgoJKiBhcmd2LmMsIGR1bW15LmM6IElmIF9fU1REQ19fLCAjaW5jbHVkZSAiYWxsb2NhLWNvbmYuaCIgYWZ0ZXIKCTxzdGRkZWYuaD4uCgkqIGFsbG9jYS1ub3JtLmg6IElmIF9fU1REQ19fLCBkZWNsYXJlIGFsbG9jYSB3aXRoIGl0cyBwYXJhbWV0ZXIuCgpUaHUgSnVuIDIyIDE4OjU3OjQ3IDE5OTUgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkqIG1wdy1tYWtlLmluIChBTExfQ0ZMQUdTKTogRGVmaW5lIE5FRURfYmFzZW5hbWUuCgkqIG1wdy5jOiBPbmx5IHRlc3QgRGVidWdQSSBvbmNlIHdoZW5ldmVyIHByaW50aW5nIGRlYnVnIGluZm8uCgkobXB3aWZ5X2ZpbGVuYW1lKTogSWYgZmlsZW5hbWUgaXMgL3RtcC9mb28sIGNoYW5nZSBpdCBpbnRvIDpfZm9vLAoJYWxzbyBmaXggdG8gbm90IHdyaXRlIG9uIGlucHV0IGZpbGVuYW1lIGJ1ZmZlci4KCShtcHdfYWNjZXNzKTogVXNlIHN0YXQoKSBpbnN0ZWFkIG9mIG9wZW4oKSwgd29ya3MgZm9yIGRpcmVjdG9yaWVzCglhcyB3ZWxsIGFzIGZpbGVzLgoKTW9uIEp1biAxOSAwMDozMzoyMiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBNYXNzYWdlIGJyb2tlbiBzaGVsbHMgdGhhdCByZXF1aXJlICdlbHNlIHRydWUnLgoKU2F0IEp1biAxNyAyMzoyMTo1OCAxOTk1ICBGcmVkIEZpc2ggIDxmbmZAY3lnbnVzLmNvbT4KCgkqIGFsbG9jYS1ub3JtLmg6IERlY2xhcmUgYWxsb2NhIGFzIHR5cGUgIlBUUiIgdG8gbWF0Y2ggZnVuY3Rpb25zLmRlZi4KCURlY2xhcmUgX19idWlsdGluX2FsbG9jYSBpbiB0aGUgc3BhcmMgY2FzZSwgYXMgYXJndi5jIGRpZC4KCSogYXJndi5jOiBSZXBsYWNlIGlubGluZSB2ZXJzaW9uIG9mIGFsbG9jYS1ub3JtLmggYXQgc3RhcnQgb2YgZmlsZSB3aXRoCglhICNpbmNsdWRlIG9mIGFsbG9jYS1jb25mLmguICBQcmVjZWRlIGl0IHdpdGggYW4gaW5jbHVkZSBvZiBhbnNpZGVjbC5oCgliZWNhdXNlIGFsbG9jYS1ub3JtLmggbmVlZHMgdG8gZGVjbGFyZSBhbGxvY2EgYXMgIlBUUiIuCgpNb24gSnVuIDEyIDE0OjI0OjI2IDE5OTUgIFN0ZXZlIENoYW1iZXJsYWluICA8c2FjQHNsYXNoLmN5Z251cy5jb20+CgoJKiB3aW4zMi5jOiBOZXcgZmlsZS4KCkZyaSBKdW4gIDkgMTU6MTY6MTQgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBkdW1teS5jOiAjaW5jbHVkZSAiYWxsb2NhLWNvbmYuaCIuCgpXZWQgSnVuICA3IDExOjQ2OjIzIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogTWFrZWZpbGUuaW4gKG1vc3RseWNsZWFuKTogUmVtb3ZlIHN0YW1wLXBpY2Rpci4KCShjbGVhbik6IERvbid0LgoKTW9uIEp1biAgNSAxODo0NjowNiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGNvbmZpZy50YWJsZSAoZnJhZ3MpOiBVc2UgdG9wbGV2ZWwgcGljIGZyYWdzLgoKCSogTWFrZWZpbGUuaW4gKFBJQ0ZMQUcpOiBOZXcgbWFjcm8uCgkoYWxsKTogRGVwZW5kIG9uIHN0YW1wLXBpY2Rpci4KCShuZWVkZWQtbGlzdCk6IERpdHRvLgoJKC5jLm8pOiBBbHNvIGJ1aWxkIHBpYyBvYmplY3QuCgkoc3RhbXAtcGljZGlyKTogTmV3IHJ1bGUuCgkobW9zdGx5Y2xlYW4pOiBSZW1vdmUgcGljLgoJKGNsZWFuKTogUmVtb3ZlIHN0YW1wLXBpY2Rpci4KCkZyaSBNYXIgMjQgMTY6NTU6NDggMTk5NSAgUGF0IFJhbmtpbiAgKHJhbmtpbkBlcWwuY2FsdGVjaC5lZHUpCgoJKiB2bXNidWlsZC5jb20gKGNvbmZpZy5oKTogQWRkIGAjZGVmaW5lIE5FRURfYmFzZW5hbWUnLgoKVHVlIE1heSAyMyAxMDoxMjo0NiAxOTk1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIGNsb2NrLmMsIGdldG9wdC5jLCBzdHJ0b2QuYywgdnNwcmludGYuYzogIENoYW5nZSBmcm9tIHVzaW5nIExHUEwKCXRvIGxpYmlvLXN0eWxlIGNvcHlyaWdodC4KCSogZ2V0cGFnZXNpemUuYzogIFJlbW92ZSBGU0YgY29weXJpZ2h0LgoKU2F0IE1heSAyMCAxMjozMDoyMyAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5Aa3ItbGFwdG9wLmN5Z251cy5jb20+CgoJQWRkZWQgaW1wcm92ZWQgVk1TIHN1cHBvcnQgZnJvbSBQYXQgUmFua2luOgoKCUZyaSBNYXIgMTcgMTg6NDA6MzYgMTk5NSAgUGF0IFJhbmtpbiAgKHJhbmtpbkBlcWwuY2FsdGVjaC5lZHUpCgoJKiB2bXNidWlsZC5jb206ICBuZXcgZmlsZS4KCgkqIGdldHBhZ2VzaXplLmMgKGdldHBhZ2VzaXplKTogIGltcGxlbWVudCBmb3IgVk1TOwoJKiBzdHJlcnJvci5jIChzdHJlcnJvciwgc3RyZXJybm8sIHN0cnRvZXJybm8pOiAgYWRkIHJ1ZGltZW50YXJ5CglzdXBwb3J0IGZvciBFVk1TRVJSLgoKVGh1IE1heSAxOCAxNzowMTo0MiAxOTk1ICBLZW4gUmFlYnVybiAgPHJhZWJ1cm5Aa3ItbGFwdG9wLmN5Z251cy5jb20+CgoJV2VkIE1heSAxMCAxNDoyODoxNiAxOTk1IFJpY2hhcmQgRWFybnNoYXcgKHJlYXJuc2hhQGFybWx0ZC5jby51aykKCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X2FybV9leHQpOiBEZWZpbmUuCgpUdWUgTWF5IDE2IDEzOjMwOjU5IDE5OTUgIFBlciBCb3RobmVyICA8Ym90aG5lckBrYWxlc3Npbi5jeWdudXMuY29tPgoKCSogYmFzZW5hbWUuYywgYmNtcC5jLCBnZXRjd2QuYywgaW5zcXVlLmMsIHJlbmFtZS5jLCBzaWdzZXRtYXNrLmMsCglzdHJlcnJvci5jLCBzdHJzaWduYWwuYzogIFJlbW92ZSBGU0YgY29weXJpZ2h0LgoJKiBzaWdzZXRtYXNrLmM6ICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4gLSBzZWVtcyB0byBiZSBuZWVkZWQgYnkgSVNDLgoKTW9uIE1heSAxNSAxOTo1MzoxNyAxOTk1ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIGJjb3B5LmMsIGJ6ZXJvLmMsIG1lbWNtcC5jLCBtZW1jcHkuYywgbWVtc2V0LmMsIHN0cmNoci5jLAoJc3RycmNoci5jLCBzdHJzdHIuYywgdmZvcmsuYzogIFJlbW92ZSBGU0YgQ29weXJpZ2h0LCBiZWNhdXNlIHRoaXMKCW1pZ2h0IGNvbnRhbWluYXRlIGxpYnN0ZGMrKyB3aXRoIHRoZSBMR1BMLiAgKE9LJ2QgYnkgUk1TIDExIE9jdCA5NC4pCgkqIHN0cmNoci5jLCBzdHJyY2hyLmM6ICBBZGQgY2FzdCB0byBzdXBwcmVzcyBjb25zdCB3YXJuaW5nLgoKVGh1IE1heSAgNCAxNDozNjo0MiAxOTk1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcGh5ZGVhdXguY3lnbnVzLmNvbT4KCgkqIGNwbHVzLWRlbS5jOiBVc2UgY29uc3QgaW5zdGVhZCBvZiBDT05TVC4gIERvbid0IGluY2x1ZGUKCWFuc2lkZWNsLmggZGlyZWN0bHkuCgpXZWQgQXByIDE5IDAxOjMwOjI3IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmM6IERvbid0IGluY2x1ZGUgbGliaWJlcnR5LmguICBEbyBkZWNsYXJlIHhtYWxsb2MgYW5kCgl4cmVhbGxvYy4KCSgtRE1BSU4pOiBEb24ndCByZWx5IG9uIGFuIGV4dGVybmFsbHktZGVmaW5lZCB2ZXJzaW9uIG51bWJlcjsKCWluc3RlYWQsIHJlcXVpcmUgdGhlIHZlcnNpb24gbnVtYmVyIHRvIGJlIGRlZmluZWQgYXMgYQoJcHJlcHJvY2Vzc29yIG1hY3JvLiAgSGFuZGxlIHRoZSBSUy82MDAwIGxlYWRpbmcgZG90LiAgRGVmaW5lCgl4bWFsbG9jLCB4cmVhbGxvYyBhbmQgZmF0YWwuICBEb24ndCBzdHJpcCBhIGxlYWRpbmcgdW5kZXJzY29yZQoJaWYgd2UgY291bGRuJ3QgZGVtYW5nbGUgdGhlIHdvcmQuCgpUdWUgQXByICA0IDEzOjAzOjUxIDE5OTUgIFN0YW4gU2hlYnMgIDxzaGVic0BhbmRyb3MuY3lnbnVzLmNvbT4KCgkoT2xkIG1wdy5jIGNoYW5nZSBkZXNjcmlwdGlvbnMgcmV0YWluZWQgZm9yIGluZm9ybWF0aW9uYWwgdmFsdWUuKQoJKiBtcHcuYyAod2FybmluZ190aHJlc2hvbGQpOiBEZWZhdWx0IHRvIC40IHNlYy4KCShvdmVyZmxvd19jb3VudCwgY3VycmVudF9wcm9ncmVzcyk6IE5ldyBnbG9iYWxzLgoJKHdhcm5faWZfc3Bpbl9kZWxheSk6IEluY2x1ZGUgY3VycmVudCBwcm9ncmVzcyB0eXBlLAoJc3VjaCBhcyBwcm9ncmFtIG5hbWUsIGluIG1lc3NhZ2UuCgkobXB3X3N0YXJ0X3Byb2dyZXNzKTogU2V0IGN1cnJlbnRfcHJvZ3Jlc3MgdmFyaWFibGUgZnJvbSBhcmcuCgkobXB3X2VuZF9wcm9ncmVzcyk6IFJlcG9ydCBzcGluIGRlbGF5cyBieSBwb3dlci1vZi10d28tc2l6ZQoJYnVja2V0cyBpbnN0ZWFkIG9mIGNvbnN0YW50LXNpemUgYnVja2V0cy4KCgkqIG1wdy5jOiBDbGVhbiB1cCBmb3JtYXR0aW5nLCB0eXBlcywgcmV0dXJucywgZXRjLgoJKEVOT1NZUyk6IERlZmluZS4KCShtcHdfZnJlYWQsIG1wd19md3JpdGUpOiBEZWZpbmUuCgkoc2xlZXApOiBEZWZpbmUgY29ycmVjdGx5LgoKCSogbXB3LmM6IE5ldyBjb2RlIHRvIGltcGxlbWVudCBjdXJzb3Igc3Bpbm5pbmcgc3VwcG9ydC4KCSh1bWFzayk6IE5ldyBmdW5jdGlvbi4KCShtcHdfZm9wZW4sIG1wd19mc2Vlaywgc3RhdCwgZnN0YXQpOiBDYWxsIFBST0dSRVNTLgoKCSogbXB3LmMgKG1wd19iYXNlbmFtZSwgbXB3X21peGVkX2Jhc2VuYW1lKTogTmV3IGZ1bmN0aW9ucywgZmluZAoJYmFzZW5hbWVzIGZvciBNUFcgYW5kIE1QVy9Vbml4IGZpbGVuYW1lcy4KCShtcHdfc3BlY2lhbF9pbml0KTogTmV3IGZ1bmN0aW9uLCBjYWxscyBNYWNzYnVnIGlmIGRlc2lyZWQuCgoJKiBtcHcuYzogQWRkIEdQTCBub3RpY2UuCgkobXB3aWZ5X2ZpbGVuYW1lKTogQWRkIG1vcmUgdHJhbnNmb3JtYXRpb25zLgoJKG1wd19mb3Blbik6IENhbGwgbXB3aWZ5X2ZpbGVuYW1lIG9uIGZpbGUgbmFtZXMuCgkocmVuYW1lKTogUmVtb3ZlLgoJKGNoZGlyLCBnZXRjd2QpOiBBZGQgc2ltcGxlIGRlZmluaXRpb25zLgoKCSogbXB3LmM6IFJhbmRvbSBjbGVhbnVwcywgcmVtb3ZlIHVudXNlZCBjb2RlIGJpdHMuCglBZGRlZCBjb3B5IG9mIHN0cmVycm9yLmMgZm9yIGdjYydzIHVzZS4KCShzdGF0LCBmc3RhdCwgX3N0YXQpOiBOZXcgdmVyc2lvbnMgYmFzZWQgb24gR3VpZG8gdmFuIFJvc3N1bSBjb2RlLgoKCSogbXB3LmMgKG1wd19mc2Vlayk6IE1ha2UgaXQgd29yayBjb3JyZWN0bHkgd2hlbiBkb2luZyBTRUVLX0NVUi4KCgkqIG1wdy5jIChzdGF0KTogUmVtb3ZlIGhhY2sgZGVmaW5pdGlvbiwgZ2V0IGZyb20gc3lzL3N0YXQuaC4KCShmb3JrLCB2Zm9yaywgZXRjKTogUHJpbnQgZXJyb3IgbWVzc2FnZXMgaWYgY2FsbGVkLgoJKGdldHJ1c2FnZSwgc2JyaywgZW52aXJvbiwgaXNhdHR5LCBsaW5rLCB1dGltZSwgbWtkaXIsIHJtZGlyLAoJcmVuYW1lLCBjaG93bik6IERlZmluZS4KCgkqIG1wdy1jb25maWcuaW46IE5ldyBmaWxlLCBNUFcgdmVyc2lvbiBvZiBjb25maWd1cmUuaW4uCgkqIG1wdy1tYWtlLmluOiBOZXcgZmlsZSwgTVBXIHZlcnNpb24gb2YgTWFrZWZpbGUuaW4uCgkqIG1wdy5jOiBOZXcgZmlsZSwgTVBXIGNvbXBhdGliaWxpdHkgcm91dGluZXMuCgpGcmkgTWFyIDI0IDE0OjEwOjMwIDE5OTUgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogYmFzZW5hbWUuYzogSW5jbHVkZSBjb25maWcuaCBiZWZvcmUgY2hlY2tpbmcgZm9yIE5FRURfYmFzZW5hbWUuCgpUaHUgTWFyIDIzIDE5OjA5OjU0IDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogZnVuY3Rpb25zLmRlZjogQWRkIERFRkZVTkMgZm9yIGJhc2VuYW1lLgoKCSogYmFzZW5hbWUuYzogT25seSBkZWZpbmUgYmFzZW5hbWUgaWYgTkVFRF9iYXNlbmFtZS4KClRodSBNYXIgMTYgMTM6MzY6MDUgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBjb25maWcudGFibGU6IEZpeCAtLWVuYWJsZS1zaGFyZWQgbG9naWMgZm9yIG5hdGl2ZSBidWlsZHMuCgpNb24gTWFyIDEzIDExOjA1OjExIDE5OTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBwaHlkZWF1eC5jeWdudXMuY29tPgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3RlbXBsYXRlKTogRGVtYW5nbGUgYm9vbCBsaXRlcmFscyBwcm9wZXJseS4KCk1vbiBNYXIgIDYgMjM6NTc6MjggMTk5NSAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW5AY3lnbnVzLmNvbSkKCgkqIHN0cnRvbC5jIHN0cnRvdWwuYzogIFJlcGxhY2UgdGhlc2Ugd2l0aCBsZXNzIGJ1Z2d5IHZlcnNpb25zIGZyb20KCU5ldEJTRC4gIChzdHJ0b3VsIGluIHBhcnRpY3VsYXIgY291bGRuJ3QgaGFuZGxlIGJhc2UgMTYuKQoKV2VkIE1hciAgMSAxNTo1OTowMSAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBjb25maWcvbXQtdnh3b3JrczUgKEhERUZJTkVTKTogRGVmaW5lIE5PX1NZU19QQVJBTV9ILgoKCSogY2xvY2suYzogSWYgTk9fU1lTX1BBUkFNX0ggaXMgZGVmaW5lZCwgZG9uJ3QgaW5jbHVkZQoJPHN5cy9wYXJhbS5oPi4KCSogZ2V0Y3dkLmMsIGdldHBhZ2VzaXplLmMsIGdldHJ1bnRpbWUuYzogTGlrZXdpc2UuCgpGcmkgRmViIDE3IDE1OjQwOjU1IDE5OTUgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AY3lnbnVzLmNvbT4KCgkqIGdldHJ1bnRpbWUuYyAoZ2V0X3J1bl90aW1lKTogRG9uJ3QgYXNzdW1lIHRoYXQgQ0xPQ0tTX1BFUl9TRUMgaXMKCWEgbnVtYmVyOyBBTlNJIGFwcGVhcnMgdG8gcGVybWl0IGFueSBleHByZXNzaW9uLCBpbmNsdWRpbmcgYQoJZnVuY3Rpb24gY2FsbC4KCgkqIGNvbmZpZy50YWJsZSAoKi0qLXZ4d29ya3M1Kik6IFVzZSBtdC12eHdvcmtzNSB3aGVuIGNvbmZpZ3VyaW5nCgl4aWJlcnR5LgoJKiBjb25maWcvbXQtdnh3b3JrczU6IE5ldyBmaWxlLgoKVGh1IEZlYiAgOSAxNDoxOTo0NSAxOTk1ICBJYW4gTGFuY2UgVGF5bG9yICA8aWFuQGN5Z251cy5jb20+CgoJKiBiYXNlbmFtZS5jIChiYXNlbmFtZSk6IENoYW5nZSBhcmd1bWVudCB0byBiZSBjb25zdC4KCldlZCBGZWIgIDggMTg6MDY6NTIgMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAobG5lZWRlZC1saXN0KTogRG9uJ3Qgd29ycnkgYWJvdXQgeG1hbGxvYy4KClN1biBKYW4gMTUgMDA6NDA6MzYgMTk5NSAgSmVmZiBMYXcgIChsYXdAc25ha2UuY3MudXRhaC5lZHUpCgoJKiBNYWtlZmlsZS5pbiAoZGlzdGNsZWFuKTogRGVsZXRlIHhob3N0LW1rZnJhZy4KClRodSBKYW4gMTIgMTY6NTQ6MTggMTk5NSAgSmFzb24gTWVycmlsbCAgPGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20+CgoJKiBNYWtlZmlsZS5pbiAobG5lZWRlZC1saXN0KTogSWYgYWxsb2NhLm8gaXMgbmVlZGVkLCBzbyBpcyB4bWFsbG9jLm8uCgpXZWQgSmFuIDExIDIyOjM5OjU2IDE5OTUgIEtlbiBSYWVidXJuICA8cmFlYnVybkBjdWpvLmN5Z251cy5jb20+CgoJKiBoZXguYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChSRVFVSVJFRF9PRklMRVMsIENGSUxFUyk6IExpc3QgaXQuCgkoaGV4Lm8pOiBBZGQgZGVwZW5kZW5jaWVzLgoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3ByZWZpeCk6IEZvciBHTlUgc3R5bGUgY29uc3RydWN0b3IgYW5kCglkZXN0cnVjdG9yIG5hbWVzLCB0cnkgZGVtYW5nbGluZyB0aGUgcmVtYWluZGVyIG9mIHRoZSBzdHJpbmcuCgpXZWQgRGVjIDI4IDAwOjQ5OjE1IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbT4KCgkqIHZhc3ByaW50Zi5jIChpbnRfdmFzcHJpbnRmKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCSh2YXNwcmludGYpOiBVc2UgaW50X3Zhc3ByaW50Zi4gIFJlbW92ZXMgYXNzdW1wdGlvbiB0aGF0IHZhX2xpc3QKCWlzIGFzc2lnbm1lbnQgY29tcGF0aWJsZS4KClNhdCBOb3YgIDUgMTk6Mjk6MTIgMTk5NCAgSmFzb24gTWVycmlsbCAgKGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoTElCQ0ZMQUdTKTogTmV3IHZhcmlhYmxlLgoJKEZMQUdTX1RPX1BBU1MpOiBQYXNzIGl0LgoJKC5jLm8pOiBVc2UgaXQuCgpUaHUgTm92ICAzIDE5OjA5OjQ3IDE5OTQgIEtlbiBSYWVidXJuICA8cmFlYnVybkBjdWpvLmN5Z251cy5jb20+CgoJKiBnZXRvcHQuYywgZ2V0b3B0MS5jOiBEbyBjb21waWxlIHRoZXNlIGZ1bmN0aW9ucyB1bmRlciBMaW51eCwKCXNpbmNlIG1hbnkgbmF0aXZlIHZlcnNpb25zIGFyZSBiYXNlZCBvbiBnbGliYyBidXQgYXJlIGJ1Z2d5LgoKTW9uIE9jdCAyNCAxNToxNjo0NiAxOTk0ICBQZXIgQm90aG5lciAgPGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbT4KCgkqIHZhc3ByaW50Zi5jOiAgTWFrZSAnZm9ybWF0JyBhcmcgYmUgY29uc3QsIHRvIGF2b2lkIGEgbWlzbWF0Y2gKCXdpdGggcHJvdG90eXBlIGluIEdOVSBsaWJjLiAgU3VwcG9ydCBzdGRhcmcuaCBhcyB3ZWxsIGFzIHZhcmFyZ3MuaC4KClR1ZSBPY3QgMTEgMTc6NDg6MjcgMTk5NCAgSmFzb24gTWVycmlsbCAgKGphc29uQHBoeWRlYXV4LmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoUkVRVUlSRURfT0ZJTEVTKTogQWRkIHZhc3ByaW50Zi5vLgoJKiBmdW5jdGlvbnMuZGVmOiBSZW1vdmUgdmFzcHJpbnRmLgoKV2VkIFNlcCAxNCAxNzowNDo1NSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHNhbmd1aW5lLmN5Z251cy5jb20pCgoJKiB4bWFsbG9jLmMgKGZpcnN0X2JyZWFrKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCSh4bWFsbG9jX3NldF9wcm9ncmFtX25hbWUpOiBSZWNvcmQgc2JyayAoMCkgaW4gZmlyc3RfYnJlYWsuCgkoeG1hbGxvYyk6IElmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLCB0cnkgdG8gcmVwb3J0IGhvdyBtdWNoCgltZW1vcnkgd2FzIGFsbG9jYXRlZCBieSB0aGUgcHJvZ3JhbSB1cCB0byB0aGlzIHBvaW50LgoJKHhyZWFsbG9jKTogTGlrZXdpc2UuCgpTdW4gU2VwIDA0IDE3OjU4OjEwIDE5OTQgIFJpY2hhcmQgRWFybnNoYXcgKHJ3ZUBwZWdhc3VzLmVzcHJpdC5lYy5vcmcpCgoJKiBNYWtlZmlsZS5pbiAoRVJST1JTX0NDKTogTmV3IHZhcmlhYmxlLCBkZWZhdWx0ZWQgdG8gJChDQykuICBVc2UgaXQKCXdoZW4gbGlua2luZyBkdW1teS4KCSogY29uZmlnLnRhYmxlOiBBZGQgaG9zdCBSSVNDaVggTWFrZWZpbGUgZnJhZy4KCSogY29uZmlnL21oLXJpc2NpeDogTmV3IGZpbGUuCgpUaHUgQXVnIDI1IDE3OjI5OjQ0IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChGTEFHU19UT19QQVNTKTogRGVmaW5lLgoJKCQoUlVMRTEpKTogVXNlICQoRkxBR1NfVE9fUEFTUykuCgpXZWQgQXVnIDI0IDE3OjA4OjQ3IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5Ac2FuZ3VpbmUuY3lnbnVzLmNvbSkKCgkqIHZhc3ByaW50Zi5jOiBJbmNsdWRlIDxzdHJpbmcuaD4uCgkodmFzcHJpbnRmKTogQWRkIGNhc3RzIHRvIHZvaWQgZm9yIHZhX2FyZyB0byBhdm9pZCBnY2Mgd2FybmluZ3MuCgkqIHhhdGV4aXQuYzogRGVjbGFyZSBtYWxsb2MuCgpGcmkgQXVnIDE5IDE1OjI5OjEyIDE5OTQgIEt1bmcgSHN1ICAoa3VuZ0BtZXhpY2FuLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfYXJncyk6IEZpeCBhIGJ1ZyBpbiBwcmV2aW91cyBwYXRjaCAodGhlCglvbmUgYmVsb3cpLgoKVGh1IEF1ZyAxOCAxNDozNzoxNCAxOTk0ICBLdW5nIEhzdSAgKGt1bmdAbWV4aWNhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlIGFyZ3MpOiBIYW5kbGUgQVJNIHJlcGVhdCBlbmNvZGluZyB3aGVyZQoJdGhlIHR5cGUgaW5kZXggaXMgZ3JlYXRlciB0aGFuIDkuCgpXZWQgQXVnIDE3IDE2OjEzOjQ5IDE5OTQgIEt1bmcgSHN1ICAoa3VuZ0BtZXhpY2FuLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfcXVhbGlmaWVkKTogYWNjZXB0IG9wdGlvbmFsICdfJyBiZXR3ZWVuCglxdWFsaWZpZWQgbmFtZS4gVGhpcyBpcyBiYWVjYXVzZSB0aGUgdGVtcGxhdGUgbmFtZSBtYXkgZW5kIHdpdGgKCW51bWVyaWMgYW5kIGNhbiBtaXhlZCB1cCB3aXRoIHRoZSBsZW5ndGggb2YgbmV4dCBxdWFsaWZpZWQgbmFtZS4KCldlZCBBdWcgIDMgMDU6NTI6MTQgMTk5NCAgRC4gVi4gSGVua2VsLVdhbGxhY2UgIChndW1ieUBjeWdudXMuY29tKQoKCSogY29uZmlnL210LXN1bm9zNDogVXNlIG91ciBzdGFuZGFyZCBsb2NhdGlvbiBmb3IgY3Jvc3MtaW5jbHVkZXMKCWFuZCBjcm9zcy1saWJzIHdoZW4gdGhlIHRhcmdldCBpcyBhbHNvIGEgImhvc3QiIGVudmlyb25tZW50IChpZSBubwoJbmV3bGliOyBpbmNsdWRlcyBhbmQgc3VjaCBkb24ndCBiZWxvbmcgdG8gdXMpLiAgVGhpcyBpcyBzcGVjaWZpYwoJdG8gdGhlIEN5Z251cyBTdXBwb3J0IGVudmlyb25tZW50LgoKVHVlIEF1ZyAgMiAxNToyNToxMiAxOTk0ICBLdW5nIEhzdSAgKGt1bmdAbWV4aWNhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3RlbXBsYXRlKTogZGVtYW5nbGUgYXMgeHh4PCdRJz4gbm90Cgl4eHg8Y2g9ODE+LgoKTW9uIEF1ZyAgMSAxNzowMjo0OCAxOTk0ICBLdW5nIEhzdSAgKGt1bmdAbWV4aWNhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKG1haW4pOiBmbHVzaCBzdGRvdXQgdG8gbWFrZSBwaXBlIHdvcmsuCgpTYXQgSnVsIDE2IDEyOjU2OjMyIDE5OTQgIFN0YW4gU2hlYnMgIChzaGVic0BhbmRyb3MuY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy50YWJsZSAoKi0qLWN4dXg3Kik6ICBSZWNvZ25pemUuCgkqIGZsb2F0Zm9ybWF0LmMgKGZsb2F0Zm9ybWF0X204ODExMF9leHQpIFtIQVJSSVNfRkxPQVRfRk9STUFUXToKCUhhcnJpcy1zcGVjaWZpYyBmbG9hdCBmb3JtYXQuCgkqIGNvbmZpZy9taC1jeHV4NzogTmV3IGZpbGUuCgpXZWQgSnVuIDI5IDAwOjI2OjE3IDE5OTQgIFBldGVyIFNjaGF1ZXIgIChwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZSk6ICBNYWtlIHN1cmUgdGhhdCB0aGUgcmVzdWx0IG9mCgljb25zdW1lX2NvdW50IGRvZXNuJ3QgaW5kZXggYmV5b25kIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4KCk1vbiBKdW4gMjAgMjM6NTQ6MzcgMTk5NCAgUGV0ZXIgU2NoYXVlciAgKHBlc0ByZWdlbnQuZS10ZWNobmlrLnR1LW11ZW5jaGVuLmRlKQoKCSogY3BsdXMtZGVtLmMgKGdudV9zcGVjaWFsKTogIEhhbmRsZSB2dGFibGUgbWFuZ2xpbmcgb2YgZ2NjLTIuNC41IGFuZAoJZWFybGllci4gSW1wcm92ZSB0ZXN0IGZvciBuZXcgdnRhYmxlIG1hbmdsaW5nLiBDaGFuZ2Ugb3V0cHV0IGJhY2sKCXRvIGB2aXJ0dWFsIHRhYmxlJy4KCk1vbiBKdW4gMjAgMTE6Mzc6MzAgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBzYW5ndWluZS5jeWdudXMuY29tKQoKCSogb2JzdGFjay5jOiBBbHdheXMgY29tcGlsZSB0aGlzIGNvZGUsIGV2ZW4gaWYgdXNpbmcgdGhlIEdOVQoJbGlicmFyeS4gIEF2b2lkcyBwcm9ibGVtcyB3aXRoIHJlbGF0aXZlbHkgcmVjZW50IGJpbmFyeQoJaW5jb21wYXRpYmlsaXR5LgoKVGh1IEp1biAxNiAxNzo1NDowMSAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogSW5jbHVkZSBsaWJpYmVydHkuaC4KCSh4bWFsbG9jLCB4cmVhbGxvYywgZnJlZSk6IERvbid0IGRlY2xhcmUuCgkoc3Ryc3RyKTogRG9uJ3QgZGVjbGFyZSBwYXJhbWV0ZXJzLgoJKHhtYWxsb2MsIHhyZWFsbG9jKTogRG9uJ3QgZGVmaW5lLgoJKGxvbmdfb3B0aW9ucyk6IEFkZCBuby1zdHJpcC11bmRlcnNjb3Jlcy4KCShtYWluKTogQ2FsbCB4bWFsbG9jX3NldF9wcm9ncmFtX25hbWUuICBQYXNzIG4gaW4gc2hvcnQgb3B0aW9ucyB0bwoJZ2V0b3B0X2xvbmcuICBIYW5kbGUgb3B0aW9uICduJyB0byBub3Qgc3RyaXAgdW5kZXJzY29yZXMuCgkodXNhZ2UpOiBNZW50aW9uIC1uIGFuZCAtLW5vLXN0cmlwLXVuZGVyc2NvcmVzLgoKU3VuIEp1biAxMiAwMTozNzowOSAxOTk0ICBKYXNvbiBNZXJyaWxsICAoamFzb25AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZSk6IFNlcGFyYXRlIGNvbnNlY3V0aXZlID4ncyB3aXRoIGEKCXNwYWNlLgoJKGdudV9zcGVjaWFsKTogRGVtYW5nbGUgdGVtcGxhdGUgYW5kIHF1YWxpZmllZCBuYW1lcyBpbiBhIHZ0YWJsZSBuYW1lLgoKRnJpIE1heSAyNyAxMjoyNzo1MiAxOTk0ICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tKQoKCUZyb20gZ2FzLTIuMyBhbmQgYmludXRpbHMtMi40IG5ldCByZWxlYXNlczoKCglXZWQgTWF5IDExIDIyOjMyOjAwIDE5OTQgIERKIERlbG9yaWUgKGRqQGN0cm9uLmNvbSkKCgkqIG1ha2VmaWxlLmRvczogW25ld10gTWFrZWZpbGUgZm9yIGRvcy9nbzMyCgkqIGNvbmZpZ3VyZS5iYXQ6IHVwZGF0ZSBmb3IgbGF0ZXN0IGZpbGVzCgkqIG1zZG9zLmM6IHJlbW92ZSBzb21lIGZ1bmN0aW9ucyBub3cgaW4gbGliYy5hCgpGcmkgTWF5IDIwIDE4OjUzOjMyIDE5OTQgIFBlciBCb3RobmVyICAoYm90aG5lckBrYWxlc3Npbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGdudV9zcGVjaWFsKTogIFJlY29nbml6ZSB0aHVua3MsIGFzIHdlbGwgYXMKCXRoZSBuZXcgbmFtaW5nIHN0eWxlIGZvciB2dGFibGVzICh3aGVuIC1mdnRhYmxlLXRodW5rcykuCgpXZWQgTWF5IDE4IDEzOjM0OjA2IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChYVFJBRkxBR1MpOiBEb24ndCBkZWZpbmUuCgkoLmMubywgZHVtbXkubyk6IERvbid0IHVzZSBYVFJBRkxBR1MuCgkoJChSVUxFMSkpOiBEb24ndCBwYXNzIFhUUkFGTEFHUyBkb3duIGluIHJlY3Vyc2l2ZSBjYWxsLgoKRnJpIE1heSAxMyAxNjowMjoxMiAxOTk0ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIHZhc3ByaW50Zi5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4sIGZ1bmN0aW9ucy5kZWY6IEFkZCBpdC4KCkZyaSBNYXkgMTMgMTY6MjA6MjggMTk5NCAgSmFzb24gTWVycmlsbCAgKGphc29uQGRlbmViLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfZnVuZF90eXBlKTogR3JvayBib29sLgoKRnJpIE1heSAgNiAxNDo0NDoyMSAxOTk0ICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhY0BjeWdudXMuY29tKQoKCSogY29uZmlnLnRhYmxlOiBBZGQgZ28zMgoJKiBjb25maWcvbWgtZ28zMjogTmV3IHRlbXBsYXRlLgoKRnJpIE1heSAgNiAxMTowMTo1OSAxOTk0ICBELiBWLiBIZW5rZWwtV2FsbGFjZSAgKGd1bWJ5QHJ0bC5jeWdudXMuY29tKQoKCSogY29uZmlnLnRhYmxlLCBjb25maWcvbXQtc3Vub3M0OiBjb25maWcgZm9yIHdoZW4gc3VuNCBpcyBjcm9zcyB0YXJnZXQuCgpNb24gQXByIDExIDAwOjU0OjMzIDE5OTQgIFJpY2hhcmQgU3RhbGxtYW4gIChybXNAbW9sZS5nbnUuYWkubWl0LmVkdSkKCgkqIGdldG9wdC5jIFtub3QgX19HTlVfTElCUkFSWV9fXSBbX19HQ0NfX10gW25vdCBfX1NURENfX106CglEZWNsYXJlIHN0cmxlbiB0byByZXR1cm4gaW50LiAgRG9uJ3QgaW5jbHVkZSBzdGRkZWYuaC4KCkZyaSBBcHIgIDEgMDA6Mzg6MTcgMTk5NCAgSmltIFdpbHNvbiAgKHdpbHNvbkBtb2xlLmdudS5haS5taXQuZWR1KQoKCSogZ2V0b3B0LmM6IERlbGV0ZSB1c2Ugb2YgSU5fR0NDIHRvIGNvbnRyb2wgd2hldGhlcgoJc3RkZGVmLmggb3IgZ3N0ZGRlZi5oIGlzIGluY2x1ZGVkLgoKVGh1IEFwciAxNCAxNDowMDo1NiAxOTk0ICBLdW5nIEhzdSAgKGt1bmdAbWV4aWNhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3NpZ25hdHVyZSk6IEZpeCBhIGJ1ZyBpbiB0ZW1wbGF0ZSBmdW5jdGlvbgoJdHlwZSBudW1iZXJpbmcuCgpXZWQgQXByIDEzIDE3OjIzOjAzIDE5OTQgIEt1bmcgSHN1ICAoa3VuZ0BtZXhpY2FuLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfc2lnbmF0dXJlKTogRml4IHRlbXBsYXRlIGZ1bmN0aW9uIHdpdGggYXJtCglzdHlsZSBhcmd1bWVudCB0eXBlIG51bWJlciwgVG4uCgpXZWQgQXByIDEzIDE3OjExOjE1IDE5OTQgIEphc29uIE1lcnJpbGwgIChqYXNvbkBkZW5lYi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKG9wdGFibGUpOiBBZGQgbmV3W10gYW5kIGRlbGV0ZVtdLgoKRnJpIEFwciAgOCAxMToyMTo0MiAxOTk0ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGFyZ3YuYyAoYnVpbGRhcmd2KTogRG9uJ3QgcHJvZHVjZSBlbXB0eSBhcmd1bWVudCBqdXN0IGJlY2F1c2UKCXRoZXJlIGlzIHRyYWlsaW5nIHdoaXRlc3BhY2UuCgpXZWQgQXByICA2IDExOjQyOjE0IDE5OTQgIEt1bmcgSHN1ICAoa3VuZ0BtZXhpY2FuLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfdGVtcGxhdGUpOiBmaXggJ1EnIHF1YWxpZmllZCBuYW1lIGJ1Zy4KCUhhbmRsZSAncCcgc2FtZSBhcyAnUCcuCgkqIGNwbHVzLWRlbS5jIChkb190eXBlKTogSGFuZGxlICdwJyBzYW1lIGFzICdQJy4KClNhdCBNYXIgMjYgMTI6MDA6MTMgMTk5NCAgUGV0ZXIgU2NoYXVlciAgKHBlc0ByZWdlbnQuZS10ZWNobmlrLnR1LW11ZW5jaGVuLmRlKQoKCSogZmxvYXRmb3JtYXQuYyAoZ2V0X2ZpZWxkLCBwdXRfZmllbGQpOiAgRml4IG9mZiBieSBvbmUgZXJyb3IgaW4KCWxpdHRsZSBlbmRpYW4gY2FzZS4KClRodSBNYXIgMjQgMTA6NDA6MTkgMTk5NCAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBmbG9hdGZvcm1hdC5jIChmbG9hdGZvcm1hdF9mcm9tX2RvdWJsZSk6IFBhc3MgdW5zaWduZWQgY2hhciAqLAoJbm90IGNoYXIgKiwgdG8gcHV0X2ZpZWxkLgoKRnJpIE1hciAxOCAxMjozNDozMyAxOTk0ICBQZXIgQm90aG5lciAgKGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbSkKCgkqIG1lbW1vdmUuYzogIFJlLXdyb3RlOyAgcGxhY2VkIGluIHB1YmxpYyBkb21haW4uCgpXZWQgTWFyIDE2IDEwOjMzOjA3IDE5OTQgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3ByZWZpeCk6IElmIEFSTSBkZW1hbmdsaW5nLCBkb24ndCB0cmVhdAoJX19RKiBhcyBhIGNvbnN0cnVjdG9yLgoKTW9uIE1hciAxNCAxMjoyNjowMiAxOTk0ICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBpZWVlLWZsb2F0LmM6IFJlbW92ZWQ7IG5vIGxvbmdlciB1c2VkLgoJKiBNYWtlZmlsZS5pbjogQ2hhbmdlZCBhY2NvcmRpbmdseS4KCk1vbiBNYXIgIDcgMTI6Mjg6MTcgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogZmxvYXRmb3JtYXQuYyAoZ2V0X2ZpZWxkKTogUmVtb3ZlZCB1bnVzZWQgbG9jYWwgdmFyaWFibGUgaS4KCShwdXRfZmllbGQpOiBSZW1vdmVkIHVudXNlZCBsb2NhbCB2YXJpYWJsZSBpLgoKU3VuIEZlYiAyNyAyMTo1MDoxMSAxOTk0ICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGZsb2F0Zm9ybWF0LmM6IE5ldyBmaWxlLCBpbnRlbmRlZCB0byByZXBsYWNlIGllZWUtZmxvYXQuYy4KCSogTWFrZWZpbGUuaW46IENoYW5nZSBhY2NvcmRpbmdseS4KClRodSBGZWIgMjQgMTE6NTE6MTIgMTk5NCAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHJ0bC5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmM6IFJlbW92ZSAjaWZkZWYgR0VUT1BUX0NPTVBBVCBhbmQgI2lmIDAgY29kZS4KCSAoX2dldG9wdF9pbml0aWFsaXplKTogTmV3IGZ1bmN0aW9uLCBicm9rZW4gb3V0IG9mIF9nZXRvcHRfaW50ZXJuYWwuCgkgKF9nZXRvcHRfaW50ZXJuYWwpOgoJIElmIGxvbmdfb25seSBhbmQgdGhlIEFSR1YtZWxlbWVudCBoYXMgdGhlIGZvcm0gIi1mIiwgd2hlcmUgZiBpcwoJIGEgdmFsaWQgc2hvcnQgb3B0aW9uLCBkb24ndCBjb25zaWRlciBpdCBhbiBhYmJyZXZpYXRlZCBmb3JtIG9mCgkgYSBsb25nIG9wdGlvbiB0aGF0IHN0YXJ0cyB3aXRoIGYuICBPdGhlcndpc2UgdGhlcmUgd291bGQgYmUgbm8KCSB3YXkgdG8gZ2l2ZSB0aGUgLWYgc2hvcnQgb3B0aW9uLgoKVGh1IEZlYiAxMCAxNDo0NDoxNiAxOTk0ICBSaWNoYXJkIFN0YWxsbWFuICAocm1zQG1vbGUuZ251LmFpLm1pdC5lZHUpCgoJKiBnZXRvcHQuYyBbbm90IF9fR05VX0xJQlJBUllfX10gW19fR05VQ19fXSBbbm90IElOX0dDQ106CglUZXN0IGp1c3QgX19TVERDX18sIG5vdCBlbWFjcy4KCldlZCBGZWIgIDkgMDA6MTQ6MDAgMTk5NCAgUmljaGFyZCBTdGFsbG1hbiAgKHJtc0Btb2xlLmdudS5haS5taXQuZWR1KQoKCSogZ2V0b3B0LmMgW25vdCBfX0dOVV9MSUJSQVJZX19dIFtfX0dOVUNfX10gW25vdCBJTl9HQ0NdCglbZW1hY3NdIFtub3QgX19TVERDX19dOiBEb24ndCBpbmNsdWRlIHN0ZGRlZi5oLiAgRG9uJ3QgZGVjbGFyZSBzdHJsZW4uCgpGcmkgRGVjIDI0IDE5OjQzOjAwIDE5OTMgIE5vYWggRnJpZWRtYW4gIChmcmllZG1hbkBudXRyaW1hdC5nbnUuYWkubWl0LmVkdSkKCgkqIGdldG9wdC5jIChfTk9fUFJPVE8pOiBEZWZpbmUgYmVmb3JlIGNvbmZpZy5oIGlzIGluY2x1ZGVkLgoKTW9uIFNlcCAyMCAxNTo1OTowMyAxOTkzICBSb2xhbmQgTWNHcmF0aCAgKHJvbGFuZEBjaHVyY2h5LmdudS5haS5taXQuZWR1KQoKCSogZ2V0b3B0LmMsIGdldG9wdDEuYyBbZW1hY3MgfHwgQ09ORklHX0JST0tFVFNdOiBJbmNsdWRlCgk8Y29uZmlnLmg+IG9ubHkgdW5kZXIgdGhlc2UsIGVsc2UgImNvbmZpZy5oIi4KClRodSBBdWcgMTIgMTg6MTY6NDkgMTk5MyAgUm9sYW5kIE1jR3JhdGggIChyb2xhbmRAY2h1cmNoeS5nbnUuYWkubWl0LmVkdSkKCgkqIGdldG9wdC5jLCBnZXRvcHQxLmMgW0hBVkVfQ09ORklHX0hdOiBJbmNsdWRlCgk8Y29uZmlnLmg+IGluc3RlYWQgb2YgImNvbmZpZy5oIi4KClN1biBGZWIgMjAgMTc6MTc6MDEgMTk5NCAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBsaXNhLmN5Z251cy5jb20pCgoJKiBjb25jYXQuYzogQ2hlY2sgQU5TSV9QUk9UT1RZUEVTIHJhdGhlciB0aGFuIF9fU1REQ19fIHRvIGRlY2lkZQoJd2hldGhlciB0byB1c2UgcHJvdG90eXBlcyBvciBub3QuCgkqIHN0cmVycm9yLmMgKGNvbnN0KTogTmV2ZXIgdW5kZWZpbmU7IGxldCBhbnNpZGVjbC5oIGhhbmRsZSBpdC4KCSogc3Ryc2lnbmFsLmMgKGNvbnN0KTogTGlrZXdpc2UuCgpUaHUgRmViIDE3IDEzOjI3OjM1IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIHhhdGV4aXQuYyAoX3hleGl0X2NsZWFudXApOiBEZWNsYXJlIGFzIGV4dGVybjsgZG9uJ3QgaW5pdGlhbGl6ZS4KCU1lcmdpbmcgY29tbW9uIGFuZCBpbml0aWFsaXplZCB2YXJpYWJsZXMgbmVlZCBub3QgYmUgc3VwcG9ydGVkIGJ5CglBTlNJIEMgY29tcGlsZXJzLgoJKHhhdGV4aXQpOiBJbml0aWFsaXplIF94ZXhpdF9jbGVhbnVwIGlmIG5vdCBhbHJlYWR5IHNldC4KCSogeGV4aXQuYzogQ29tbWVudCBmaXguCgpXZWQgRmViIDE2IDAxOjE1OjM2IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIHhtYWxsb2MuYzogRG9uJ3QgZGVjbGFyZSB4ZXhpdDsgaXQncyBkZWNsYXJlZCBpbiBsaWJpYmVydHkuaC4KCSh4cmVhbGxvYyk6IElmIG9sZG1lbSBpcyBOVUxMLCBhbGxvY2F0ZSB3aXRoIG1hbGxvYywgcmF0aGVyIHRoYW4KCWFzc3VtaW5nIHRoYXQgcmVhbGxvYyB3b3JrcyBjb3JyZWN0bHkuCgpUdWUgRmViIDE1IDA5OjI2OjE2IDE5OTQgIFBldGVyIFNjaGF1ZXIgIChwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZSkKCgkqIGNvbmNhdC5jLCBpZWVlLWZsb2F0LmM6ICBSZXBsYWNlIGluY2x1c2lvbiBvZiA8c3RyaW5nLmg+Cgl3aXRoIGV4cGxpY2l0IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucywgYXMgcmVjb21tZW5kZWQgYnkgSWFuIFRheWxvci4KClNhdCBGZWIgMTIgMTA6MzE6MTEgMTk5NCAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHJ0bC5jeWdudXMuY29tKQoKCSogeG1hbGxvYy5jICh4bWFsbG9jLCB4cmVhbGxvYyk6IFVzZSBQVFIgYW5kIHNpemVfdCB0aHJvdWdob3V0LgoJKG1hbGxvYywgcmVhbGxvYyk6IERlY2xhcmUuCgpUaHUgRmViIDEwIDE3OjA4OjE5IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGFyZ3YuYywgYmFzZW5hbWUuYzogSW5jbHVkZSBhbnNpZGVjbC5oIGFuZCBsaWJpYmVydHkuaC4KCSogY29uY2F0LmMsIGZkbWF0Y2guYywgZ2V0cnVudGltZS5jLCBzcGFjZXMuYzogTGlrZXdpc2UuCgkqIHN0cmVycm9yLmMsIHN0cnNpZ25hbC5jLCB4YXRleGl0LmMsIHhleGl0LmM6IExpa2V3aXNlLgoJKiB4bWFsbG9jLmM6IExpa2V3aXNlLgoJKiBjb25jYXQuYzogRG9uJ3QgZGVjbGFyZSB4bWFsbG9jLiAgSWYgX19TVERDX18sIHVzZSA8c3RkYXJnLmg+CgltYWNyb3MsIG5vdCA8dmFyYXJncy5oPiBtYWNyb3MuCgkqIHNwYWNlcy5jIChzcGFjZXMpOiBNYWtlIHJldHVybiB0eXBlIGNvbnN0LiAgRG9uJ3QgY3Jhc2ggaWYKCW1hbGxvYyByZXR1cm5zIE5VTEwuCgkqIHN0cmVycm9yLmMgKHN0cnVjdCBlcnJvcl9pbmZvKTogTWFrZSBuYW1lIGFuZCBtc2cgZmllbGRzIGNvbnN0LgoJKGVycm9yX25hbWVzKTogTWFrZSBjb25zdC4KCShzdHJlcnJubyk6IE1ha2UgY29uc3QuCgkoc3RydG9lcnJubyk6IE1ha2UgYXJndW1lbnQgY29uc3QuCgkqIHN0cnNpZ25hbC5jIChzdHJ1Y3Qgc2lnbmFsX2luZm8pOiBNYWtlIG5hbWUgYW5kIG1zZyBmaWVsZHMKCWNvbnN0LgoJKHNpZ25hbF9uYW1lcywgc3lzX3NpZ2xpc3QpOiBNYWtlIGNvbnN0LgoJKHN0cnNpZ25hbCwgc3Ryc2lnbm8pOiBNYWtlIGNvbnN0LgoJKHN0cnRvc2lnbm8pOiBNYWtlIGFyZ3VtZW50IGNvbnN0LgoJKiB4YXRleGl0LmM6IERlY2xhcmUgcGFyYW1ldGVyIHR5cGVzLgoJKiB4bWFsbG9jLmMgKG5hbWUpOiBNYWtlIGNvbnN0LgoJKHhtYWxsb2Nfc2V0X3Byb2dyYW1fbmFtZSk6IE1ha2UgYXJndW1lbnQgY29uc3QuCgkqIE1ha2VmaWxlLmluIChJTkNESVIpOiBEZWZpbmUuCgkoLmMubyk6IFVzZSAkKElOQ0RJUikuCgkoZHVtbXkubyk6IExpa2V3aXNlLgoJKGFyZ3YubywgYmFzZW5hbWUubyk6IE5ldyB0YXJnZXRzOyBkZXBlbmQgb24gbGliaWJlcnR5LmguCgkoY29uY2F0Lm8sIGZkbWF0Y2gubywgZ2V0cnVudGltZS5vLCBzcGFjZXMubyk6IExpa2V3aXNlLgoJKHN0cmVycm9yLm8sIHN0cnNpZ25hbC5vLCB4YXRleGl0Lm8sIHhleGl0Lm8pOiBMaWtld2lzZS4KCSh4bWFsbG9jLm8pOiBMaWtld2lzZS4KCShjcGx1cy1kZW0ubyk6IE5ldyB0YXJnZXQ7IGRlcGVuZCBvbiBkZW1hbmdsZS5oLgoJKGdldG9wdC5vLCBnZXRvcHQxLm8pOiBOZXcgdGFyZ2V0czsgZGVwZW5kIG9uIGdldG9wdC5oLgoJKGllZWUtZmxvYXQubyk6IE5ldyB0YXJnZXQ7IGRlcGVuZCBvbiBpZWVlLWZsb2F0LmguCgkob2JzdGFjay5vKTogTmV3IHRhcmdldDsgZGVwZW5kIG9uIG9ic3RhY2suaC4KClR1ZSBGZWIgIDggMDU6Mjk6MDggMTk5NCAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCUhhbmRsZSBvYnN0YWNrX2NodW5rX2FsbG9jIHJldHVybmluZyBOVUxMLiAgVGhpcyBhbGxvd3MKCW9ic3RhY2tzIHRvIGJlIHVzZWQgYnkgbGlicmFyaWVzLCB3aXRob3V0IGZvcmNpbmcgdGhlbQoJdG8gY2FsbCBleGl0IG9yIGxvbmdqbXAuCgkqIG9ic3RhY2suYyAoX29ic3RhY2tfYmVnaW4sIF9vYnN0YWNrX2JlZ2luXzEsIF9vYnN0YWNrX25ld2NodW5rKToKCUlmIENBTExfQ0hVTktGVU4gcmV0dXJucyBOVUxMLCBzZXQgYWxsb2NfZmFpbGVkLCBlbHNlIGNsZWFyIGl0LgoJKF9vYnN0YWNrX2JlZ2luLCBfb2JzdGFja19iZWdpbl8xKTogUmV0dXJuIDEgaWYgc3VjY2Vzc2Z1bCwgMCBpZiBub3QuCgpUdWUgRmViICA4IDAwOjMyOjI4IDE5OTQgIFBldGVyIFNjaGF1ZXIgIChwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZSkKCgkqIGNvbmNhdC5jLCBpZWVlLWZsb2F0LmM6ICBJbmNsdWRlIDxzdHJpbmcuaD4uCgpTdW4gRmViICA2IDIxOjI4OjQ2IDE5OTQgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIHhtYWxsb2MuYyAoeG1hbGxvY19zZXRfcHJvZ3JhbV9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKHhtYWxsb2MsIHhyZWFsbG9jKTogSW5jbHVkZSB0aGUgbmFtZSBpbiB0aGUgZXJyb3IgbWVzc2FnZSwgaWYgc2V0LgoKCSogUmVwbGFjZSBhdGV4aXQuYyB3aXRoIHhhdGV4aXQuYy4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyksIGZ1bmN0aW9ucy5kZWY6IENoYW5nZSByZWZlcmVuY2VzLgoKU2F0IEZlYiAgNSAxNDowMjozMiAxOTk0ICBTdGFuIFNoZWJzICAoc2hlYnNAYW5kcm9zLmN5Z251cy5jb20pCgoJKiBnZXRydW50aW1lLmMgKGdldF9ydW5fdGltZSk6IFVzZSBnZXRydXNhZ2Ugb3IgdGltZXMgaWYKCUhBVkVfR0VUUlVTQUdFIG9yIEhBVkVfVElNRVMgYXJlIGRlZmluZWQuCgpGcmkgRmViICA0IDE1OjQ5OjM4IDE5OTQgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGF0ZXhpdC5jOiBOZXcgZmlsZS4KCSogTWFrZWZpbGUuaW4gKENGSUxFUyksIGZ1bmN0aW9ucy5kZWY6IEFkZCBpdC4KCSogeGV4aXQuYzogTmV3IGZpbGUuCgkqIE1ha2VmaWxlLmluIChDRklMRVMsIFJFUVVJUkVEX09GSUxFUyk6IEFkZCBpdC4KCSogeG1hbGxvYy5jICh4bWFsbG9jLCB4cmVhbGxvYyk6IENhbGwgeGV4aXQgaW5zdGVhZCBvZiBleGl0LgoJQ2hhbmdlIHJlcXVlc3QgZm9yIDAgYnl0ZXMgaW50byByZXF1ZXN0IGZvciAxIGJ5dGUuCgpXZWQgRmViICAyIDExOjM2OjQ5IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIHhtYWxsb2MuYyAoeG1hbGxvYywgeHJlYWxsb2MpOiBQcmludCBzaXplIHVzaW5nICVsdSwgYW5kIGNhc3QgdG8KCXVuc2lnbmVkIGxvbmcsIHRvIGF2b2lkIHdhcm5pbmdzLgoKRnJpIEphbiAyOCAxNzo0OTowNiAxOTk0ICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AY3Vqby5jeWdudXMuY29tKQoKCSogZHVtbXkuYzogRG9uJ3QgaW5jbHVkZSB0aW1lLmggZXZlcjsgYWx3YXlzIGRlZmluZSBjbG9ja190IGFzCgkidW5zaWduZWQgbG9uZyIuICBVbnRpbCBnY2MvZml4aW5jbHVkZXMgZW5zdXJlcyB0aGF0IGNsb2NrX3QKCWV4aXN0cywgX19TVERDX18gaXNuJ3QgYSBzdWZmaWNpZW50IHRlc3QuICBBbmQgaWYgY2xvY2soKSBkb2Vzbid0CglleGlzdCwgY2xvY2tfdCBwcm9iYWJseSBkb2Vzbid0IGVpdGhlci4KCk1vbiBKYW4gMjQgMTE6NTI6MzEgMTk5NCAgU3RhbiBTaGVicyAgKHNoZWJzQGFuZHJvcy5jeWdudXMuY29tKQoKCSogY2xvY2suYywgZ2V0cnVudGltZS5jOiBOZXcgZmlsZXMuCgkqIE1ha2VmaWxlLmluOiBBZGQgdG8gZmlsZSBsaXN0cy4KCSogZnVuY3Rpb25zLmRlZiAoY2xvY2spOiBBZGQgdG8gbGlzdC4KCSogZHVtbXkuYyAodGltZS5oKTogQWRkIGlmIF9fU1REQ19fLgoJKGNsb2NrX3QpOiAjZGVmaW5lIGFzICJ1bnNpZ25lZCBsb25nIiBpZiBub3QgX19TVERDX18uCgpUdWUgSmFuIDExIDExOjI3OjQ0IDE5OTQgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIHN0cnRvZC5jOiBEZWNsYXJlIGF0b2YuICBGcm9tIGVkbGVyQGphbi51bHRyYS5ueXUuZWR1IChKYW4KCUVkbGVyKS4KClR1ZSBEZWMgMjggMTQ6MTc6MzAgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkB0d2VlZGxlZHVtYi5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGVycm9ycyk6IFVzZSBDRkxBR1MgYXMgd2VsbCBhcyBMREZMQUdTIHdoZW4KCWxpbmtpbmcuCgpGcmkgRGVjIDE3IDEyOjI2OjA3IDE5OTMgIEt1bmcgSHN1ICAoa3VuZ0BjaXJkYW4uY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9hcm1fcHQpOiBOZXcgZnVuY3Rpb24uICBDb21tb24gY29kZQoJZm9yIEFSTSB0ZW1wbGF0ZSBkZW1hbmdsaW5nLgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfY2xhc3NfbmFtZSk6IFVzZSBkZW1hbmdsZV9hcm1fcHQuCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9wcmVmaXgpOiBMaWtld2lzZS4KClR1ZSBOb3YgMzAgMTU6NDc6NDggMTk5MyAgSmFzb24gTWVycmlsbCAgKGphc29uQGRlbmViLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogQWRkIENPTlNUIHRvIHBsZWFzZSBnY2MuCgpTYXQgTm92IDI3IDExOjA1OjUwIDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCU1lcmdlIGNoYW5nZXMgZnJvbSB0b21AYmFzaWwuaWNjZS5ydWcubmwgKFRvbSBSLkhhZ2VtYW4pCgkqIHN0cmVycm9yLmMsIHN0cnNpZ25hbC5jOiAgQXMgYSBzbWFsbCBzcGFjZSBvcHRpbWl6YXRpb24sIGRvbid0CglpbmNsdWRlIG1lc3NhZ2VzIHdoZW4gdGhleSBhcmVuJ3QgYWN0dWFsbHkgdXNlZC4KCglNZXJnZSBjaGFuZ2VzIGZyb20gdGFrZWZpdmUuY28uYXQham9lIChKb3NlZiBMZWhlcmJhdWVyKQoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfcHJlZml4LCBkZW1hbmdsZV9mdW5jdGlvbl9uYW1lLAoJY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogIEZpeGVzIGZvciBzeXN0ZW1zIHdoZXJlIGNwbHVzX21hcmtlcgoJaXMgc29tZXRoaW5nIG90aGVyIHRoYW4gJyQnLgoKRnJpIE5vdiAyNiAxMzo1MToxMSAxOTkzICBQZXIgQm90aG5lciAgKGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbSkKCgkqIHdhaXRwaWQuYzogIFNpbXBsZS1taW5kZWQgYXBwcm9jaW1hdGlvbiB0byB3YWl0cGlkCgl1c2luZyB2YW5pbGxhIHdhaXQuCgkqIGZ1bmN0aW9ucy5kZWYsIE1ha2VmaWxlLmluOiAgVXBkYXRlIGFjY29yZGluZ2x5LAoKVGh1IE5vdiAxOCAxODowMToxNSAxOTkzICBLdW5nIEhzdSAgKGt1bmdAY2lyZGFuLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyhkZW1hbmdsZV90ZW1wbGF0ZSk6IGZpeCBidWcgdGVtcGxhdGUgaW5zdGFudGlhdGlvbgoJd2l0aCB2YWx1ZSBvZiB1c2VyIGRlZmluZWQgdHlwZS4KCldlZCBOb3YgMTcgMTg6MzA6MjEgMTk5MyAgS3VuZyBIc3UgIChrdW5nQGNpcmRhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMoY3BsdXNfZGVtYW5nbGVfb3BuYW1lKTogYWRkIHRoZSBzdWJqZWN0IG5ldyBmdW5jdGlvbgoJdG8gc3VwcG9ydCB1bmlmaWVkIHNlYXJjaCBvZiBvcGVyYXRvciBpbiBjbGFzcy4KCldlZCBOb3YgMTAgMDk6NDc6MjIgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJZ2NjIC1XYWxsIGxpbnQ6CgkqIHN0cnRvdWwuYyAoc3RydG91bCk6IHVzZSAiKGRpZ2l0ID0gKnMpICE9ICdcMCciIG5vdCBqdXN0CgkiZGlnaXQgPSAqcyIgYXMgY29uZGl0aW9uIGluIHdoaWxlIGxvb3AuCgpUdWUgTm92ICA5IDE1OjUyOjIyIDE5OTMgIE1hcmsgRWljaGluICAoZWljaGluQGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogcGFzcyBTSEVMTCB0byByZWN1cnNpdmUgbWFrZQoKVGh1IE5vdiAgNCAxMjowOToyNiAxOTkzICBQZXIgQm90aG5lciAgKGJvdGhuZXJAa2FsZXNzaW4uY3lnbnVzLmNvbSkKCgkqIHZmcHJpbnRmLmMsIHZwcmludGYuYywgdnNwcmludGYuYzogIE1ha2UgZm9ybWF0IGFyZwoJYmUgKGNvbnN0IGNoYXIqKSwgZm9yIEFOU0kgKGFuZCBnY2Mgdy9maXhwcm90bykgY29uc2lzdGVuY3kuCgpUaHUgTm92ICA0IDA4OjI5OjA0IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogY29uZmlnLnRhYmxlOiBNYWtlICotKi1oaXV4KiB1c2UgbWgtaHB1eC4KCkZyaSBPY3QgMjIgMDc6NTM6MTUgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBjb25maWcudGFibGU6IEFkZCAqIHRvIGVuZCBvZiBhbGwgT1MgbmFtZXMuCgpUdWUgT2N0IDE5IDE3OjEyOjAxIDE5OTMgIGRhdmlkIGQgYHpvbycgenVobiAgKHpvb0BydGwuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChsbmVlZGVkLWxpc3QpOiBlbnN1cmUgdGhhdCBvYmplY3QgZmlsZSBuYW1lcyBhcmUKCSAgbm90IGR1cGxpY2F0ZWQsIGFzIG11bHRpcGxlIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBvYmplY3QgZmlsZSBpbgoJICBhIGxpYnJhcnkgY2F1c2VzIHByb2JsZW1zIG9uIHNvbWUgbWFjaGluZXMKCk1vbiBPY3QgMTggMjE6NTk6MjggMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJKiBzdHJjYXNlY21wLmMsIHN0cm5jYXNlY21wLmM6IENoYW5nZSB1X2NoYXIgdG8gdW5zaWduZWQgY2hhci4KCkZyaSBPY3QgMTUgMjI6MTc6MTEgMTk5MyAgZGF2aWQgZCBgem9vJyB6dWhuICAoem9vQHJ0bC5jeWdudXMuY29tKQoKCSogc3RybmNhc2VjbXAuYzogbmV3IGZpbGUsIGltcGxlbWVudHMgc3RybmNhc2VjbXAKCSogc3RyY2FzZWNtcC5jOiBuZXcgZmlsZSwgaW1wbGVtZW50IHN0cmNhc2VjbXAKCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiBsaXN0IHRoZXNlIHR3byBuZXcgc291cmNlIGZpbGVzCgoJKiBmdW5jdGlvbnMuZGVmOiBhZGQgc3RyY2FzZWNtcCBhbmQgc3RybmNhc2VjbXAgZW50cmllcwoKRnJpIE9jdCAxNSAxNDo1MzowNSAxOTkzICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQHR3ZWVkbGVkdW1iLmN5Z251cy5jb20pCgoJKiBzdHJ0b3VsLmMgKHN0cnRvdWwpLCBzdHJ0b2wuYyAoc3RydG9sKTogSGFuZGxlIG92ZXJmbG93CglhY2NvcmRpbmcgdG8gQU5TSSBDLgoKVGh1IE9jdCAxNCAxNjozNDoxOSAxOTkzICBLdW5nIEhzdSAgKGt1bmdAY2lyZGFuLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogYWRkIHN1cHBvcnQgb2YgQVJNIGdsb2JhbCBjb25zdHJ1Y3Rvci9kZXN0cnVjdG9yLAoJYW5kICdHJyBmb3IgcGFzc2luZyByZWNvcmQgb3IgdW5pb24gaW4gcGFyYW1ldGVyLgoKV2VkIE9jdCAxMyAxMzozNjoxOSAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiBGaXggY29tbWVudCB0byBjbGFyaWZ5IHRoYXQgc3R1ZmYgaW4gUkVRVUlSRURfT0ZJTEVTCglzaG91bGQgbm90IGJlIGluIGZ1bmN0aW9ucy5kZWYuCgpXZWQgT2N0IDEzIDEzOjEzOjM4IDE5OTMgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AdHdlZWRsZWR1bWIuY3lnbnVzLmNvbSkKCgkqIGZ1bmN0aW9ucy5kZWY6IFJlbW92ZWQgeG1hbGxvYy4gIFN0dWZmIGluIFJFUVVJUkVEX09GSUxFUyBzaG91bGQKCW5vdCBiZSBpbiBmdW5jdGlvbnMuZGVmLgoKTW9uIE9jdCAgNCAxODoyNjozOSAxOTkzICBLdW5nIEhzdSAgKGt1bmdAY2lyZGFuLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogY2hhbmdlIGdsb2JsIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgdG8gcHJvcGVyIG5hbWUKClR1ZSBTZXAgMjggMTg6MTE6MDcgMTk5MyAgS3VuZyBIc3UgIChrdW5nQGNpcmRhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmM6IGZpeCBidWcgaW4gY29uc3RydWN0b3IvZGVzdHJ1Y3RvcgoKVHVlIFNlcCAyOCAxNjoyMDo0OSAxOTkzICBLdW5nIEhzdSAgKGt1bmdAY2lyZGFuLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogc3VwcG9ydCBib3RoIG9sZCBhbmQgbmV3IF92dCQuLi4gdnRibCBtYW5nbGVkIG5hbWVzCgpGcmkgU2VwIDI0IDE5OjA3OjE2IDE5OTMgIEphc29uIE1lcnJpbGwgIChqYXNvbkBkZW5lYi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmM6IEZpeCBkZW1hbmdsZV90ZW1wbGF0ZSBwcm90b3R5cGUKCkZyaSBTZXAgMjQgMTc6MzI6NTUgMTk5MyAgS3VuZyBIc3UgIChrdW5nQGNpcmRhbi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmM6IGZpeCB0ZW1wbGF0ZSBkZW1hbmdsaW5nCgkqIGNwbHVzLWRlbS5jOiBmaXggY29uc3QgdHlwZSBkZW1hbmdsaW5nCgkqIGNwbHVzLWRlbS5jOiBmaXggY29uc3RydWN0b3IvZGVzdHJ1Y3RvciwgdmlydHVhbCB0YWJsZSwKCXF1YWxpZmllciwgZ2xvYmFsIGNvbnN0cnVjdG9yL2Rlc3RydWN0b3IgZGVtYW5nbGluZwoKV2VkIFNlcCAgMSAyMzoxMzoxMSAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIHN0cnNpZ25hbC5jLCBzdHJlcnJvci5jOiBVc2UgZnVsbHktYnJhY2tldGVkIGluaXRpYWxpemVyIHRvCglrZWVwIGdjYyAtV2FsbCBoYXBweS4KCkZyaSBBdWcgMjcgMTA6MzA6MDkgMTk5MyAgSmFzb24gTWVycmlsbCAgKGphc29uQGRlbmViLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoZG9fdHlwZSk6IEFkZCBDT05TVFMgdG8gbWFrZSBnY2MgaGFwcHkgd2l0aCBsYXN0CglwYXRjaC4KCkZyaSBBdWcgMjcgMTE6MjQ6NTQgMTk5MyAgSmltIEtpbmdkb24gIChraW5nZG9uQGxpb3RoLmN5Z251cy5jb20pCgoJUGF0Y2ggZnJvbSBQYXVsIEZsaW5kZXJzOgoJKiBjcGx1cy1kZW0uYyAoZG9fdHlwZSk6IERlYWwgd2l0aCBhcnJheXMuCgpUdWUgQXVnIDI0IDE0OjIzOjUwIDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3F1YWxpZmllZDogRGVhbCB3aXRoIEdOVSBmb3JtYXQgZm9yIG1vcmUKCXRoYW4gOSBjbGFzc2VzLgoKV2VkIEF1ZyAxOCAxOTo1MDoyOSAxOTkzICBKYXNvbiBNZXJyaWxsICAoamFzb25AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChkdW1teS5vKTogUmVkaXJlY3QgdG8gL2Rldi9udWxsIHRvIGF2b2lkICJ2YXJpYWJsZQoJbm90IGluaXRpYWxpemVkIiB3YXJuaW5ncyB1bmRlciBIUC9VWAoKU3VuIEF1ZyAxNSAyMDo0Mjo0MCAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIHN0cmVycm9yLmM6IE1vdmUgaW5jbHVkZSBvZiBzdGRpby5oIGFmdGVyIHN5c19lcnJsaXN0ICNkZWZpbmUuCglBbHNvIHJlbW92ZSBOVUxMIGRlZmluaXRpb24gKHN0ZGlvLmggYWx3YXlzIGRlZmluZXMgTlVMTCwgc28gaXQKCW5ldmVyIGRpZCBhbnl0aGluZyBidXQgY2x1dHRlciB1cCB0aGUgY29kZSkuCgpTYXQgQXVnIDE0IDE0OjIxOjQ5IDE5OTMgIGRhdmlkIGQgYHpvbycgenVobiAgKHpvb0BydGwuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluLCBmdW5jdGlvbnMuZGVmOiBoYW5kbGUgeG1hbGxvYy5jCgoJKiB4bWFsbG9jLmM6IHByb3ZpZGUgeG1hbGxvYyBhbmQgeHJlYWxsb2MgZnVuY3Rpb25zCgpUaHUgQXVnIDEyIDE3OjM4OjU3IDE5OTMgIERhdmlkIEouIE1hY2tlbnppZSAgKGRqbUB0aGVwdWIuY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jOiBGaXggYSBjb21tZW50LgoKU2F0IEF1ZyAgNyAxMzo1NjozNSAxOTkzICBEYXZpZCBKLiBNYWNrZW56aWUgIChkam1AdGhlcHViLmN5Z251cy5jb20pCgoJKiBnZXRvcHQxLmM6IERlY2xhcmUgY29uc3QgdGhlIHdheSBnZXRvcHQuYyBkb2VzLgoKRnJpIEF1ZyAgNiAxNzowMzoxMyAxOTkzICBEYXZpZCBKLiBNYWNrZW56aWUgIChkam1AdGhlcHViLmN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmMsIGFsbG9jYS5jOiBVcGRhdGUgZnJvbSBGU0YuCgkqIGdldG9wdC5jLCBnZXRvcHQxLmM6IFVwZGF0ZSB0byBjdXJyZW50IEZTRiB2ZXJzaW9uLCB3aGljaAoJZG9lc24ndCB1c2UgYWxsb2NhLgoKVHVlIEp1bCAyNyAxNDowMzo1NyAxOTkzICBCcmVuZGFuIEtlaG9lICAoYnJlbmRhbkBsaXNhLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoZGVtYW5nbGUpOiBBZGQgdGhlIHRhcmdldCB3aXRoIGEgbWVzc2FnZSBzYXlpbmcKCXdoZXJlIGRlbWFuZ2xlIHdlbnQuCgpNb24gSnVsIDI2IDE1OjQ5OjU0IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBsaW90aC5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSBvYnNvbGV0ZSBgZGVtYW5nbGUnIHRhcmdldC4KClRodSBKdWwgMjIgMDg6MzE6MDEgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGRlbmViLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAoYXJtX3NwZWNpYWwpOiAgQXBwbHkgcGF0Y2ggZnJvbSBhcmdAbHVjaWQuY29tIHRvCglhdm9pZCBpbmZpbml0ZSBsb29wIG9uIHZ0Ymwgc3ltYm9scyB3aXRoIGRpc2FtYmlndWF0aW5nICJqdW5rIgoJdGFja2VkIG9uIHRoZSBlbmQuCgpNb24gSnVsIDE5IDE0OjEwOjM3IDE5OTMgIGRhdmlkIGQgYHpvbycgenVobiAgKHpvb0BydGwuY3lnbnVzLmNvbSkKCgkqIHN0cnNpZ25hbC5jOiB3b3JrIGFyb3VuZCBzb21lIHN5c3RlbXMgbG9zaW5nIGRlZmluaXRpb25zIG9mCglzeXNfc2lnbGlzdAoKCSogY29uZmlnL21oLWx5bnhvczogdGhpcyBzeXN0ZW0gaGFzIGEgbG9zaW5nIGRlZmluaXRpb24gb2YKCXN5c19zaWdsaXN0CgoJKiBjb25maWcudGFibGU6IHVzZSBtaC1seW54b3MgZm9yICotKi1seW54b3MKCk1vbiBKdWwgMTkgMTc6MDg6NTIgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQHJ0bC5jeWdudXMuY29tKQoKCSogY29uZmlnLnRhYmxlOiBBZGQgc3VwcG9ydCBmb3IgSFBQQSBCU0QgaG9zdHMuCgoJKiBjb25maWcvbWgtaHBic2Q6IE5ldyBmaWxlLgoKTW9uIEp1bCAxMiAxODowMDo0MCAxOTkzICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChUQUdTKTogbWFrZSB3b3JrIHdoZW4gc3JjZGlyICE9IG9iamRpci4KClN1biBKdW4gMjcgMTU6MzU6MzEgMTk5MyAgRGF2aWQgSi4gTWFja2VuemllICAoZGptQHRoZXB1Yi5jeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKG1haW4pOiBBZGQgbG9uZyBvcHRpb25zLCBpbmNsdWRpbmcgLS1oZWxwIGFuZAoJLS12ZXJzaW9uLgoJKHVzYWdlKTogTmV3IGZ1bmN0aW9uIGZyb20gY29kZSBpbiBtYWluLgoKVHVlIEp1biAyMiAxMTozNzozOCAxOTkzICBQZXIgQm90aG5lciAgKGJvdGhuZXJAZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy50YWJsZTogIE5ldyBzaGVsbCBzY2lwdCwgc291cmNlZCBieSBib3RoIC4vY29uZmlndXJlLGluCglhbmQgLi4veGliZXJ0eS9jb25maWd1cmUuaW4sIHRvIGF2b2lkIG1haW50YWluYW5jZSBsb3NzYWdlcy4KCSogY29uZmlndXJlLmluIGFuZCAuLi94aWJlcnR5L2NvbmZpZ3VyZS5pbjogIFVzZSBjb25maWcudGFibGUuCgoJKiBjb25maWd1cmUuaW46IERvbid0IHVzZSBtaC1haXggZm9yIEFJWCAzLjIsIG9ubHkgZm9yIDMuMS4KCSogY29uZmlndXJlLmluOiBNYXAgKi0qLWlyaXgqIChleGNlcHQgaXJpeDQpIHRvIG1oLXN5c3YuCgkqIC4uL3hpYmVydHkvY29uZmlndXJlLmluOiAgVXBkYXRlIGZyb20gLi9jb25maWd1cmUuaW4uCgpUdWUgSnVuIDE1IDE3OjA1OjMxIDE5OTMgIGRhdmlkIGQgYHpvbycgenVobiAgKHpvbyBhdCBjaXJkYW4uY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiByZW1vdmUgcGFyZW50ZGlyIHN1cHBvcnQKCldlZCBNYXkgMjYgMTI6NTk6MDkgMTk5MyAgUGV0ZXIgU2NoYXVlciAgKHBlc0ByZWdlbnQuZS10ZWNobmlrLnR1LW11ZW5jaGVuLmRlKQoKCSogY3BsdXMtZGVtLmMgKHhyZWFsbG9jKTogIE1hdGNoIGRlZmluaXRpb24gd2l0aCBwcm90b3R5cGUuCgpUdWUgTWF5IDI1IDE0OjI3OjUxIDE5OTMgIFBldGVyIFNjaGF1ZXIgIChwZXNAcmVnZW50LmUtdGVjaG5pay50dS1tdWVuY2hlbi5kZSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9wcmVmaXgpOiAgRGVtYW5nbGUgY2Zyb250Cglsb2NhbCB2YXJpYWJsZXMgYXMgYW4gZXh0ZW5zaW9uIHRvIEFSTSBkZW1hbmdsaW5nLgoKRnJpIE1heSAyMSAwOTo1Mzo1NyAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AbGlvdGguY3lnbnVzLmNvbSkKCgkqIGllZWUtZmxvYXQuYzogRG9uJ3QgcmVxdWlyZSBwb2ludGVycyB0byBkb3VibGUgdG8gYmUgYWxpZ25lZC4KClR1ZSBNYXkgMTggMTc6MTI6MTAgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKG1lcmdlIGNoYW5nZXMgZnJvbSBkbG9uZ0Bjc2UudWNzYy5lZHUpCgkqIGNwbHVzLWRlbS5jIChjb25zdW1lX2NvdW50KTogIFNpbXBsaWZ5LgoJKiBjcGx1cy1kZW0uYyAoYXJtX3B0LCBkZW1hbmdsZV9jbGFzc19uYW1lKTogIE5ldyBmdW5jdGlvbnMuCgkqIGNwbHVzLWRlbS5jICh2YXJpb3VzKTogIENhbGxzIHRvIGFybV9wdCwgZGVtYW5nbGVfY2xhc3NfbmFtZS4KCgkqIGNwbHVzLWRlbS5jICh4bWFsbG9jLCB4cmVhbGxvYywgc3Ryc3RyKTogIE1ha2UgZXh0ZXJuIGRlY2xzIGludG8KCWZ1bGwgcHJvdG90eXBlcy4KCSogY3BsdXMtZGVtLmMgKGZyZWUpOiAgQWRkIHByb3RvdHlwZS4KCSogY3BsdXMtZGVtLmMgKG9wdGFibGUpOiAgRnVsbHkgYnJhY2tldGl6ZSBpbml0aWFsaXplci4KCkZyaSBNYXkgMTQgMTc6MTM6MDUgMTk5MyAgUGVyIEJvdGhuZXIgIChib3RobmVyQGN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogIFdoZXRoZXIgaW5pdGlhbCB1bmRlcnNjb3JlcyBhcmUgc3RyaXBwZWQKCWRlcGVuZHMgb24gdGhlIGV4dGVybmFsIHZhcmlhYmxlIHByZXBlbmRzX3VuZGVyc2NvcmUKCSh3aGljaCBpcyBnZW5lcmF0ZWQgYnkgdGhlIGJpbnV0aWxzIE1ha2VmaWxlKS4KCkZyaSBNYXkgMTQgMDc6MzI6MjAgMTk5MyAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGRlbmViLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYyAobW9wX3VwLCBhcm1fc3BlY2lhbCk6IFJlbW92ZSBzb21lIHVudXNlZCB2YXJpYWJsZXMuCgpUdWUgTWF5ICA0IDIwOjMxOjU5IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGNvbnN1bWVfY291bnQpOiAgUmV0dXJuIHplcm8gaWYgYXJnIGRvZXMgbm90CglzdGFydCB3aXRoIGRpZ2l0LCBhbmQgZG9uJ3QgY29uc3VtZSBhbnkgaW5wdXQuCgpUdWUgTWF5ICA0IDA4OjEwOjI4IDE5OTMgIEppbSBLaW5nZG9uICAoa2luZ2RvbkBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGRlbWFuZ2xlKTogVXNlICR7c3JjZGlyfSBub3QgJF4uCgoJKiBzdHJ0b2QuYzogTmV3IGZpbGUsIG5lZWRlZCBhdCBsZWFzdCBmb3IgQlNEIDQuMy4KClN1biBNYXkgIDIgMTE6MzA6NDIgMTk5MyAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBzdHJzaWduYWwuYyAoc3lzX3NpZ2xpc3QpOiAgRm9yIEFOU0kgY29tcGlsYXRpb25zLCB0eXBlIGlzCgkiY29uc3QgY2hhciAqY29uc3QiLiAgQWxzbyByZW1vdmUgY29uZGl0aW9uYWxpemF0aW9uIG9uIF9fU1REQ19fCglzaW5jZSBjb25zdCBpcyBkZWZpbmVkIGF3YXkgZm9yIG5vbi1BTlNJLgoKV2VkIEFwciAyOCAxOToyOTo1NSAxOTkzICBLZW4gUmFlYnVybiAgKHJhZWJ1cm5AZGVuZWIuY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbjogUmVjb2duaXplICotKi1ocHV4LgoJKiBjb25maWcvbWgtaHB1eDogTmV3IGZpbGUuCgpUdWUgQXByIDI3IDE1OjIyOjE5IDE5OTMgIFBlciBCb3RobmVyICAoYm90aG5lckBjeWdudXMuY29tKQoKCSogdG1wbmFtLmM6ICBBZGRlZCBBTlNJIHRtcG5hbSgpIGZ1bmN0aW9uLgoJKiBmdW5jdGlvbnMuZGVmLCBNYWtlZmlsZS5pbjogIFVwZGF0ZSBhY2NvcmRpbmdseS4KClR1ZSBBcHIgMjcgMTM6Mzg6MzggMTk5MyAgUGV0ZXIgU2NoYXVlciAgKHBlc0ByZWdlbnQuZS10ZWNobmlrLnR1LW11ZW5jaGVuLmRlKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX2Z1bmN0aW9uX25hbWUpOiBHZXQgdGhlIGRlbWFuZ2xpbmcgb2YKCXN0b3BfXzFBIHJpZ2h0LgoKRnJpIEFwciAxNiAyMzo0ODoyNCAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb24gYXQgY2FsdmluKQoKCSogY3BsdXMtZGVtLmM6IERlY2xhcmUgc3Ryc3RyIHJldHVybiB0eXBlLgoKRnJpIE1hciAyNiAxMjowMToyNiAxOTkzICBKaW0gS2luZ2RvbiAgKGtpbmdkb25AY3lnbnVzLmNvbSkKCgkqIHN0cnNpZ25hbC5jOiBBZGQgc29tZSBBSVggc2lnbmFscy4KClRodSBNYXIgMjUgMTU6MTc6MjMgMTk5MyAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKE1BS0VPVkVSUklERVMpOiBEZWZpbmUgdG8gYmUgZW1wdHkuCgpXZWQgTWFyIDI0IDAxOjU5OjI1IDE5OTMgIGRhdmlkIGQgYHpvbycgenVobiAgKHpvbyBhdCBwb3NlaWRvbi5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IGFkZCBpbnN0YWxsY2hlY2sgJiBkdmkgdGFyZ2V0cwoKVGh1IE1hciAxOCAxNDowNTo0NCAxOTkzICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBpZWVlLWZsb2F0LmM6ICBOZXcgZmlsZSwgbW92ZWQgZnJvbSAuLi9nZGIgKHNpbmNlIGl0IGlzCgluZWVkZWQgYnkgLi4vb3Bjb2RlL202OGstZGlzLmMpLgoKVHVlIE1hciAgMiAxNzo0NzozMSAxOTkzICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jOiAgUmVwbGFjZSBhbGwgcmVmZXJlbmNlcyB0byBjZnJvbnQgd2l0aCBBUk0uCgpGcmkgRmViIDI2IDAwOjE3OjA3IDE5OTMgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jOiAgRml4IG1haW4gcHJvZ3JhbSAod2hlbiBjb21waWxlZCB3aXRoIC1ETUFJTikKCXRvIGJlIG1vcmUgdXNlZnVsIGFzIGEgZmlsdGVyLgoKU2F0IEZlYiAyMCAyMTo0MTozOSAxOTkzICBCcmVuZGFuIEtlaG9lICAoYnJlbmRhbkBsaXNhLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbF90b19saWJkaXIsIGluc3RhbGxfdG9fdG9vbGRpcik6IEdvIGludG8gdGhlCglkZXN0aW5hdGlvbiBkaXJlY3RvcnkgYmVmb3JlIHJ1bm5pbmcgJChSQU5MSUIpLCBpbiBjYXNlIHRoYXQKCXByb2dyYW0gdHJpZXMgdG8gY3JlYXRlIGEgZmlsZSBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkgYXMgcGFydCBvZgoJaXRzIHdvcmsuCgpUaHUgRmViIDE4IDIzOjAwOjE5IDE5OTMgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogc3Ryc2lnbmFsLmMgKHN5c19zaWdsaXN0KTogIFJlbW92ZSB5ZXQgYW5vdGhlciAqJV4mJSYkIyAiY29uc3QiCgliZWNhdXNlIEJTRCA0LjQgbGFja3Mgb25lLiAgSXNuJ3QgdGhpcyBmdW4/CgpUaHUgRmViIDE4IDExOjI0OjI1IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3NpZ25hdHVyZSk6ICBTZXQgZnVuY19kb25lIGFmdGVyCglkZW1hbmdsaW5nIGEgdGVtcGxhdGUuCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV90ZW1wbGF0ZSk6ICBGaXggc2V2ZXJhbCBzbWFsbCBidWdzCglpbiBkZW1hbmdsaW5nIEdOVSBzdHlsZSB0ZW1wbGF0ZXMuCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9wcmVmaXgpOiAgRml4IGZvciB0ZW1wbGF0ZXMgaW4gR05VCglzdHlsZSBjb25zdHJ1Y3RvcnMuCgkqIGNwbHVzLWRlbS5jIChnbnVfc3BlY2lhbCk6ICBGaXggZm9yIHRlbXBsYXRlcyBpbiBHTlUgc3R5bGUKCXN0YXRpYyBkYXRhIG1lbWJlcnMuCgpUdWUgRmViIDE2IDE3OjI4OjM1IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlX3NpZ25hdHVyZSk6ICBNb2RpZnkgdG8gaW5jbHVkZSB0eXBlCgltb2RpZmllcnMgbGlrZSBzdGF0aWMgYW5kIGNvbnN0IGluIHJlbWVtYmVyZWQgdHlwZXMuCgpUaHUgRmViIDExIDIyOjIwOjQ3IDE5OTMgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogY3BsdXMtZGVtLmMgKGRlbWFuZ2xlZF9xdWFsaWZpZWQpOiAgQWRkIG5ldyBwYXJhbWV0ZXIgdGhhdCB0ZWxscwoJd2hldGhlciB0byBwcmVwZW5kIG9yIGFwcGVuZCB0aGUgcXVhbGlmaWVycy4KCSogY3BsdXMtZGVtLmMgKHN0cmluZ19wcmVwZW5kcyk6ICBVc2VkIG5vdywgcmVtb3ZlICNpZiAwLgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfc2lnbmF0dXJlKTogIENhbGwgZGVtYW5nbGVfcXVhbGlmaWVkCgl3aXRoIHByZXBlbmRpbmcuCgkqIGNwbHVzLWRlbS5jIChnbnVfc3BlY2lhbCk6ICBSZWNvZ25pemUgc3RhdGljIGRhdGEgbWVtYmVycyB0aGF0Cgl1c2UgcXVhbGlmaWVkIG5hbWVzLgoJKiBjcGx1cy1kZW0uYyAoZGVtYW5nbGVfcXVhbGlmaWVkKTogIEFjY3VtdWxhdGUgcXVhbGlmaWVycyBpbiBhCgl0ZW1wb3JhcnkgYnVmZmVyIGFuZCB0aGUgcHJlcGVuZCBvciBhcHBlbmQgdGhlbSB0byB0aGUgcmVzdWx0LAoJYXMgc3BlY2lmaWVkIGJ5IHRoZSBuZXcgImFwcGVuZCIgZmxhZy4KCSogY3BsdXMtZGVtLmMgKGRvX3R5cGUpOiAgQ2FsbCBkZW1hbmdsZWRfcXVhbGlmaWVkIHdpdGgKCWFwcGVuZGluZy4KCk1vbiBEZWMgMjggMTA6NDc6MTkgMTk5MiAgS2VuIFJhZWJ1cm4gIChyYWVidXJuQGN5Z251cy5jb20pCgoJKiBzdHJzaWduYWwuYyAoc2lnbmFsX3RhYmxlKTogTm93IGNvbnN0LgoJKGluaXRfc2lnbmFsX3RhYmxlcyk6IFZhcmlhYmxlIGVpcCBub3cgcG9pbnRzIHRvIGNvbnN0LgoKCSogc3RyZXJyb3IuYyAoZXJyb3JfdGFibGUpOiBOb3cgY29uc3QuCgkoaW5pdF9lcnJvcl90YWJsZXMpOiBWYXJpYWJsZSBlaXAgbm93IHBvaW50cyB0byBjb25zdC4KClR1ZSBEZWMgMTUgMTU6MzY6NTAgMTk5MiAgUGVyIEJvdGhuZXIgIChib3RobmVyQGN5Z251cy5jb20pCgoJKiBtZW1jaHIuYyAobWVtY2hyKTogIE5ldyAoQU5TSSBzdGFuZGFyZCkgZnVuY3Rpb24uCgkqIE1ha2VmaWxlLmluLCBmdW5jdGlvbnMuZGVmOiAgQWRkZWQgbWVtY2hyLgoJKiBNYWtlZmlsZS5pbiAoQVJfRkxBR1MpOiBVc2UgcmMgaW5zdGFkIG9mIG5vbi1zdGFuZGFyZCBjcS4KCldlZCBEZWMgIDIgMjI6NDk6MTAgMTk5MiAgZGF2aWQgZCBgem9vJyB6dWhuICAoem9vIGF0IGNpcmRhbi5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmM6IHJlbW92ZSB1c2Ugb2YgVVNHIGFyb3VuZCA8YWxsb2NhLmg+LCB3aGljaCBuZXZlciBtZWFudAoJYW55dGhpbmcgYW55d2F5CgoJKiBjb25maWcvbWgte2FpeCxhcG9sbG82OCxuY3IzMDAwLHN5c3Ysc3lzdjR9OiByZW1vdmVkIGRlZmluaXRpb25zCglvZiBVU0cgYW5kIFVTR3I0CgpUaHUgTm92IDE5IDAzOjA5OjMzIDE5OTIgIEJyZW5kYW4gS2Vob2UgIChicmVuZGFuQGxpc2EuY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jIChkZW1hbmdsZV9mdW5kX3R5cGUpOiBSZWNvZ25pemUgYHcnLCBhIHdpZGUgY2hhcmFjdGVyOwoJaXQncyBub3cgYSB0eXBlIGFjY29yZGluZyB0byB0aGUgQU5TSSBYM0oxNiB3b3JraW5nIHBhcGVyOyBvdXRwdXQKCSJ3Y2hhcl90IiBmb3IgaXQuCgkoZGVtYW5nbGVfdGVtcGxhdGUpOiBBY2NlcHQgYHcnIGFzIGFuIGludGVncmFsIHR5cGUuCgkoeG1hbGxvYywgeHJlYWxsb2MpOiBVc2UgYGNoYXIgKicsIG5vdCBgUFRSJy4gIENhc3QgY2FsbHMgdG8gdGhlaXIKCWNvdW50ZXJwYXJ0cyBtYWxsb2MgYW5kIHJlYWxsb2MgdG8gYGNoYXIgKicuCgkobWFpbik6IEV4aXQgd2l0aCBhIDAgc3RhdHVzLgoJKiBNYWtlZmlsZS5pbiAoZGVtYW5nbGUpOiBEb24ndCBleHBlY3QgdGhlIHVzZXIgdG8gZGVmaW5lCglERU1BTkdMRSwgaW5zdGVhZCBmb3JjZSB0byBiZSBjcGx1cy1kZW0uYy4gIExvb2sgaW4gJChzcmNkaXIpLy4uL2luY2x1ZGUKCWZvciBkZW1hbmdsZS5oLiAgUGFzcyBpdCBhbnkgSERFRklORVMgb3IgWFRSQUZMQUdTLgoKV2VkIE5vdiAxOCAxODo1NjoyMCAxOTkyICBKb2huIEdpbG1vcmUgIChnbnVAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluIChBUl9GTEFHUyk6ICBBdm9pZCB2ZXJib3NpdHkuCgkqIGNvbmZpZy9taC1zeXN2NDogIFJlbW92ZSBBUl9GTEFHUyBvdmVycmlkZSwgdXNlIElOU1RBTEw9Y3AsCglyZXBsYWNlIFVTR3I0IHdpdGggSEFWRV9TWVNDT05GLgoJKiBjb25maWcvbWgtc29sYXJpczogIFJlbW92ZTsgbWgtc3lzdjQgd29ya3Mgbm93LgoJKiBnZXRwYWdlc2l6ZS5jOiAgUmVwbGFjZSBVU0dyNCB3aXRoIEhBVkVfU1lTQ09ORi4KCSogY29uZmlndXJlLmluOiAgU2ltcGxpZnkgaG9zdCBtYXRjaGluZyB0YWJsZSwgcmVtb3ZlIHNlcGFyYXRlCglzb2xhcmlzIGNvbmZpZyBmaWxlLgoKU3VuIE5vdiAxNSAwOTozNToxNiAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbiAoaVszNF04Ni0qLXNvbGFyaXMyKik6ICBBZGQsIHVzZSBtaC1zeXN2NC4KClR1ZSBOb3YgIDMgMjE6Mjc6MDMgMTk5MiAgQnJlbmRhbiBLZWhvZSAgKGJyZW5kYW5AY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jICh4bWFsbG9jLCB4cmVhbGxvYyk6IEFkZCBkZWNscy4KCShyZW1lbWJlcl90eXBlKTogRG9uJ3QgY2FzdCB4bWFsbG9jLgoJKHN0cmluZ19uZWVkKTogTGlrZXdpc2U7IGRvbid0IGNhc3QgeHJlYWxsb2MgZWl0aGVyLgoKRnJpIE9jdCAyMyAwODo1MjowMSAxOTkyICBJYW4gTGFuY2UgVGF5bG9yICAoaWFuQGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiwgZnVuY3Rpb25zLmRlZnMsIHJlbmFtZS5jOiBhZGRlZCBzaW1wbGUKCWltcGxlbWVudGF0aW9uIG9mIHJlbmFtZSwgc2luY2Ugc29tZSBiaW51dGlscyBwcm9ncmFtcyB1c2UgaXQuCgpUaHUgT2N0IDE1IDE1OjE4OjIyIDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBjeWdudXMuY29tKQoKCSogc3Ryc2lnbmFsLmM6ICBBZGQgYXBwcm9wcmlhdGUgJ2NvbnN0JyB0byBzeXNfc2lnbGlzdAoJZXh0ZXJuIGRlY2xhcmF0aW9uIChpZiBfX1NURENfXykuICAoTmVlZGVkIGZvciBMaW51eC4pCgkqIHN0cnNpZ25hbC5jIChzdHJzaWduYWwpOiBBZGQgY2FzdCB0byByZW1vdmUgY29uc3QtbmVzcy4KCkZyaSBPY3QgIDkgMDM6MjI6NTUgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbiAobmVlZGVkLmF3aywgbmVlZGVkMi5hd2spOiAgUmVtb3ZlIGVycm9uZW91cyBcJ3MKCWJlZm9yZSAiJ3MsIGRpYWdub3NlZCBieSBCU0QgNC40IGF3ay4KClRodSBPY3QgIDggMTU6MjU6MTIgMTk5MiAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IGNyZWF0ZSBjb25maWcuaCBhbmQgbmVlZGVkLWxpc3QgdGhyb3VnaCAkKENPTkZJR19IKQoJYW5kICQoTkVFREVEX0xJU1QpLCB0byBnaXZlIHNvbWUgaG9va3MgZm9yIHhpYmVydHkuCgpUaHUgT2N0ICAxIDIzOjMxOjQyIDE5OTIgIGRhdmlkIGQgYHpvbycgenVobiAgKHpvbyBhdCBjaXJkYW4uY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbjogdXNlIGNwdS12ZW5kb3ItdHJpcGxlIGluc3RlYWQgb2YgbmVzdGVkIGNhc2VzCgpXZWQgU2VwIDMwIDExOjI2OjU5IDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluLCBhcmd2LmMsIGJhc2VuYW1lLmMsIGJjbXAuYywgYmNvcHkuYywgYnplcm8uYywKCWNvbmNhdC5jLCBjcGx1cy1kZW0uYywgZmRtYXRjaC5jLCBnZXRjd2QuYywgZ2V0b3B0LmMsIGdldG9wdDEuYywKCWdldHBhZ2VzaXplLmMsIGluc3F1ZS5jLCBtZW1jbXAuYywgbWVtY3B5LmMsIG1lbW1vdmUuYywgbWVtc2V0LmMsCglvYnN0YWNrLmMsIHNpZ3NldG1hc2suYywgc3BhY2VzLmMsIHN0cmNoci5jLCBzdHJlcnJvci5jLAoJc3RycmNoci5jLCBzdHJzaWduYWwuYywgc3Ryc3RyLmMsIHZmb3JrLmMsIHZzcHJpbnRmLmM6CglDb252ZXJ0IGZyb20gdXNpbmcgR1BMIHRvIExHUEwuCgpTYXQgU2VwIDI2IDA0OjAxOjMwIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudUBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4gKGVycm9ycyk6ICBMZWF2ZSBkdW1teS5vIGFuZCBkdW1teSBhcm91bmQgc28gdGhhdAoJd2UgY2FuIHNlZSBob3cgdGhlIG5lZWRlZCBsaXN0IHdhcyBnZW5lcmF0ZWQgKGl0J3Mgc29tZXRpbWVzIHdyb25nKS4KCShtb3N0bHljbGVhbik6ICBSZW1vdmUgdGhlbS4KCk1vbiBTZXAgMjEgMTQ6NTA6NDIgMTk5MiAgSWFuIExhbmNlIFRheWxvciAgKGlhbkBjeWdudXMuY29tKQoKCSogZ2V0Y3dkLmM6IHN1cHBseSBhIGRlZmF1bHQgaWYgTUFYUEFUSExFTiBpcyBub3QgZGVmaW5lZC4KCgkqIGNvbmZpZy9taC1pcml4NDogc2V0IEVYVFJBX09GSUxFUyB0byBhbGxvY2EubywgZnJvbSBXUlMuCgpXZWQgU2VwICA5IDEyOjQxOjQ4IDE5OTIgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiBVc2UgWFRSQUZMQUdTIHdoZW4gY29tcGlsaW5nLCBzbyB0aGF0IHhpYmVydHkgd29ya3MKCXdoZW4gY3Jvc3MtY29tcGlsaW5nLgoKVGh1IFNlcCAgMyAxMzoyOTozOSAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAc2VuZGFpLmN5Z251cy5jb20pCgoJKiBjcGx1cy1kZW0uYzogKGRlbWFuZ2xlX3ByZWZpeCk6IHJlZHVjdGlvbiBpbiBzdHJlbmd0aCBvZiBzdHJzdHIKCSAgYXMgYSB0aW1lIG9wdGltaXphdGlvbi4KCgkqIGNwbHVzLWRlbS5jIChjcGx1c19kZW1hbmdsZSk6IHJlbW92ZSBzdHJwYnJrIHRlc3QuICBBcHBlYXJzIHRvCgkgIGJlIG1vcmUgZXhwZW5zaXZlIHRoYW4gc2ltcGx5IGRlbWFuZ2xpbmcuCgoJKiBjcGx1cy1kZW0uYyAoY3BsdXNfbWF0Y2gpOiBuZXcgZnVuY3Rpb24uCgpUdWUgU2VwICAxIDE1OjI0OjA0IDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jOiAgI2luY2x1ZGUgPHN0ZGlvLmg+LCB0byBkZWZpbmUgTlVMTC4KCURlZmluZSBjdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUuCgpTdW4gQXVnIDMwIDE3OjU4OjE5IDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIGNwbHVzLWRlbS5jOiAgTmV3IGZpbGUsIG1vdmVkIGZyb20gLi4vZ2RiLgoJKiBjcGx1cy1kZW0uYyAoc2V0X2NwbHVzX21hcmtlcl9mb3JfZGVtYW5nbGluZyk6ICBOZXcgZXhwb3J0ZWQKCWZ1bmN0aW9uLCB0byBhdm9pZCBjb21waWxpbmcgaW4gdGFyZ2V0LWRlcGVuZGVuY3kgZm9yIENQTFVTX01BUktFUi4KCSogY3BsdXMtZGVtLmMgKGNwbHVzX2RlbWFuZ2xlKTogIEFsbG93IGRlbWFuZ2xpbmcgc3R5bGUgb3B0aW9uCgl0byBiZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIsIGJ1dCB1c2luZyB0aGUgZ2xvYmFsIHZhcmlhYmxlCgljdXJyZW50X2RlbWFuZ2xpbmdfc3R5bGUgYXMgYSBkZWZhdWx0LgoJKiBNYWtlZmlsZS5pbjogIFVwZGF0ZSBmb3IgY3BsdXMtZGVtLmMKClNhdCBBdWcgMjkgMTA6NDQ6MDkgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmM6ICBNZXJnZSBpbiBjb21tZW50IGNoYW5nZXMgZnJvbSBGU0YgdmVyc2lvbi4gIE5vdwoJbWF0Y2hlcyB0aGUgRlNGIHZlcnNpb24gZXhhY3RseS4KCkZyaSBBdWcgMjggMTg6Mzk6MDggMTk5MiAgSm9obiBHaWxtb3JlICAoZ251QGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmMgKENBTExfRlJFRUZVTik6ICBDYW4ndCB1c2UgPzogd2l0aCB2b2lkIHZhbHVlcyAoYXQKCWxlYXN0IG9uIGxvc2luZyBERUNzdGF0aW9ucyEpOyB1c2UgaWYtdGhlbi1lbHNlIGluc3RlYWQuCgpXZWQgQXVnIDE5IDE0OjQwOjM0IDE5OTIgIElhbiBMYW5jZSBUYXlsb3IgIChpYW5AY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiBhbHdheXMgY3JlYXRlIGluc3RhbGxhdGlvbiBkaXJlY3Rvcmllcy4KCk1vbiBBdWcgMTAgMTc6MzM6NDAgMTk5MiAgZGF2aWQgZCBgem9vJyB6dWhuICAoem9vIGF0IGNpcmRhbi5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IGNsZWFuIHVwIGRlZmluaXRpb24gb2YgQ0ZJTEVTLCBtb3JlIGNvbW1lbnRzCgpTYXQgQXVnICA4IDIzOjEwOjU5IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogZ2V0b3B0LmMgKG15X2luZGV4KTogIE1ha2UgZmlyc3QgYXJnIGNvbnN0IHRvIG1hdGNoIHN0cmNociwKCXdoaWNoIGl0IHNvbWV0aW1lcyBpcyByZW1hcHBlZCB0by4KClNhdCBBdWcgIDEgMTM6NDg6NTAgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmMgKERFRkFVTFRfQUxJR05NRU5UKTogIFVwZGF0ZSB0byBtYXRjaCBGU0YgdmVyc2lvbi4KCSogb2JzdGFjay5jIChfb2JzdGFja19iZWdpbik6ICBJbml0aWFsaXplIHVzZV9leHRyYV9hcmcuCgkqIG9ic3RhY2suYyAoX29ic3RhY2tfYmVnaW5fMSk6ICBOZXcsIGZyb20gRlNGIHZlcnNpb24uCgpNb24gSnVsIDIwIDIxOjA3OjU4IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogb2JzdGFjay5jIChDQUxMX0NIRUNLRlVOLCBDQUxMX0ZSRUVGVU4pOiAgVXNlIHVzZV9leHRyYV9hcmcgYW5kCglleHRyYV9hcmcuCgkqIG9ic3RhY2suYyAoX29ic3RhY2tfYmVnaW4pOiAgUmVtb3ZlIGFyZWFfaWQgYW5kIGZsYWdzIGFyZ3VtZW50cwoJKHByZXZpb3VzbHkgYWRkZWQgZm9yIG1tYWxsb2Mgc3VwcG9ydCwgaW50ZXJmYWNlIGhhcyBjaGFuZ2VkKS4KCUFsc28gY29udmVydCBmbGFncyB1c2FnZSB0byB1c2UgdXNlX2V4dHJhX2FyZyBhbmQgbWF5YmVfZW1wdHlfb2JqZWN0LgoKRnJpIEp1bCAxMCAwMDo0MTo1MyAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGFyZ3YuYzogIE1vdmUgZXhwYW5kYXJndiBpbmxpbmUgYW5kIGVsaW1pbmF0ZSBzdGF0aWMgdmFyaWFibGVzLgoJUmV3cml0ZSB0byBhbHdheXMgYWxsb2NhdGUgaW4gcG93ZXJzIG9mIHR3by4gIEZpeCB0byByZXR1cm4gYW4KCWFyZ3Ygd2l0aCBhIHNpbmdsZSBudWxsIHN0cmluZyBhcmcgaWYgcGFzc2VkIGEgbnVsbCBzdHJpbmcuCgpGcmkgSnVsICAzIDIwOjI3OjI5IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogcmFuZG9tLmMsIHNpZ3NldG1hc2suYywgc3RyZXJyb3IuYywgc3Ryc2lnbmFsLmM6ICBSZW1vdmUKCSIodm9pZCkiIGNhc3RzIGZyb20gZnVuY3Rpb24gY2FsbHMgd2hlcmUgdGhlIHJldHVybiB2YWx1ZSBpcwoJaWdub3JlZCwgaW4gYWNjb3JkYW5jZSB3aXRoIEdOVSBjb2Rpbmcgc3RhbmRhcmRzLgoKTW9uIEp1biAyOSAxMDo1NDoxOSAxOTkyICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGJjb3B5LmMsIHN0cmVycm9yLmMsIHN0cnNpZ25hbC5jOiAgTGludC4KClRodSBKdW4gMjUgMDk6MTg6NDEgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQHJ0bC5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmM6IG1lcmdlIGNoYW5nZXMgZnJvbSBtYWtlLgoKVGh1IEp1biAyNSAwNDo0MzoyMiAxOTkyICBKb2huIEdpbG1vcmUgIChnbnUgYXQgY3lnbnVzLmNvbSkKCgkqIGFsbG9jYS5jOiAgSW5jb3Jwb3JhdGUgZml4ZXMgZnJvbSBnZGIvYWxsb2NhLmMuCglGSVhNRTogIEV2ZW50dWFsbHkgbW92ZSBnZGIncyBhbGxvY2EgY29uZmlndXJhdGlvbiBmaWxlcyBoZXJlLAoJYW5kIHJlbW92ZSBnZGIvYWxsb2NhLmMgYW5kIGl0cyBNYWtlZmlsZS5pbiBzdXBwb3J0LgoKVHVlIEp1biAyMyAyMTo1NjozMCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGR1bW15LmM6ICBEZWZpbmUgTk9USElORyB0byAvKm5vdGhpbmcqLywgY2hhbmdlIHJldHVybiB0eXBlCglvZiBtYWluIHRvIGludCBhbmQgcmV0dXJuIHplcm8uCgkqIGZ1bmN0aW9ucy5kZWY6ICBTdXBwbHkgTk9USElORyBhcyB0aGUgZm91cnRoIGFyZyB0byBtYWNyb3MKCXRoYXQgZG9uJ3QgaGF2ZSBhbiBleHBsaWNpdCBhcmcsIHRvIHNhdGlzZnkgcGlja3kgcHJlcHJvY2Vzc29ycy4KCldlZCBKdW4gMTcgMTg6MTM6NTggMTk5MiAgUGVyIEJvdGhuZXIgIChib3RobmVyQHJ0bC5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46ICBDbGVhbiB1cCAqY2xlYW4gcnVsZXMsIGFzIHBlciBzdGFuZGFyZHMudGV4aS4KClR1ZSBKdW4gMTYgMTY6MTE6NTkgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQHJ0bC5jeWdudXMuY29tKQoKCSogZ2V0b3B0LmMsIGdldG9wdDEuYzogbWVyZ2VkIGxhcmdlbHkgZ3JhdHVpdG91cywgbW9zdGx5CgkgIHdoaXRlc3BhY2UgZGlmZnMgZnJvbSBvdGhlciBwcmVwIGRpc3RyaWJ1dGlvbnMuCgpNb24gSnVuIDE1IDEyOjI1OjQ2IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogY29uZmlnL21oLW5jcjMwMDAgKElOU1RBTEwpOiAgRG9uJ3QgdXNlIC91c3IvdWNiL2luc3RhbGwsCglpdCBpcyBicm9rZW4gb24gbmNyIDMwMDAncy4KCk1vbiBKdW4gMTUgMDE6MDM6MjYgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBzaWdzZXRtYXNrLmM6ICBSZXdyaXRlLiAgT2xkIG9uZSB3YXMgdmVyeSBjb25mdXNlZCBhYm91dCBpdHMKCWFyZ3VtZW50cyBhbmQgcmVzdWx0LiAgTmV3IG9uZSBjYW4ndCBkbyBtdWNoLCBidXQgYXQgbGVhc3Qga25vd3MKCXdoYXQgaXQgY2FuJ3QgZG8sIGFuZCBpdCdzIGdvb2QgZW5vdWdoIGZvciBHREIncyB1c2UuCgpTdW4gSnVuIDE0IDE1OjE3OjQwIDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBmdW5jdGlvbnMuZGVmOiAgVXNlIHByb3BlciBwcm90b3R5cGUgZm9yIHN0cnRvdWwuCgpGcmkgSnVuIDEyIDE5OjIyOjQwIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46ICBBZGQgcmFuZG9tLmMuCgkqIGNvbmZpZy9taC0qOiAgVXNlICJ0cnVlIiByYXRoZXIgdGhhbiAiZWNobyA+L2Rldi9udWxsIiBmb3IgcmFubGliLgoJKiBjb25maWd1cmUuaW46ICB1cGRhdGUgc29sYXJpczIgY29uZmlnLgoKV2VkIEp1biAxMCAxNjozMToyOSAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIHJhbmRvbS5jOiAgQWRkIGZvciByYW5kb20oKSBhbmQgc3JhbmRvbSgpLgoJKiBmdW5jdGlvbnMuZGVmOiAgQWRkIHJhbmRvbQoKVHVlIEp1biAgOSAxNzoyNzoxOCAxOTkyICBGcmVkIEZpc2ggIChmbmZAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy97bWgtbmNyMzAwMCwgbWgtc3lzdjR9OiAgQWRkIGRlZmluaXRpb24gZm9yIElOU1RBTEwKCXVzaW5nIC91c3IvdWNiL2luc3RhbGwuCgpNb24gSnVuICAxIDEzOjIwOjE3IDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIHN0cmVycm9yLmM6ICBLbHVkZ2UgdG8gZ3VhcmQgYWdhaW5zdCBhIGNvbmZsaWN0IHdpdGgKCXBvc3NpYmxlIGRlY2xhcmF0aW9uIG9mIHN5c19lcnJsaXN0IGluIGVycm5vLmguCgpTdW4gTWF5IDMxIDE1OjA3OjQ3IDE5OTIgIE1hcmsgRWljaGluICAoZWljaGluIGF0IGN5Z251cy5jb20pCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZy9taC1zb2xhcmlzOiBhZGQgc29sYXJpczIgY29uZmlnIHN1cHBvcnQuCgpGcmkgTWF5IDI5IDE3OjIzOjIzIDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIHNpZ3NldG1hc2suYzogICNpZmRlZiBvdXQgc2lnc2V0bWFzayBpZiBTSUdfU0VUTUFTSwoJaXMgbm90IGRlZmluZWQgKHNob3VsZCBiZSBkZWZpbmVkIGluIHNpZ25hbC5oLCBzYXlzIFBvc2l4LikuCgpNb24gTWF5IDE4IDE3OjM1OjA0IDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogZ2V0b3B0LmM6IG1lcmdlZCBjaGFuZ2VzIGZyb20gbWFrZS0zLjYyLjExLgoKRnJpIE1heSAgOCAxNDo1MzowNyAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5jOiBtZXJnZWQgY2hhbmdlcyBmcm9tIGJpc29uLTEuMTguCgpUdWUgTWF5ICA1IDExOjUxOjQwIDE5OTIgIFBlciBCb3RobmVyICAoYm90aG5lckBydGwuY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiAgRG9uJ3QgaGF2ZSAkKEVYVFJBX09GSUxFUykgZGVwZW5kIG9uIGNvbmZpZy5oLAoJc2luY2UgdGhhdCBpbnRyb2R1Y2VzIGEgY2lyY3VsYXIgZGVwZW5kZW5jeS4KCSgkKEVYVFJBX09GSUxFUykgYXJlIHVzZWQgdG8gYnVpbGQgY29uZmlnLmguKQoKCSogc3RydG91bC5jOiAgRml4ZXMgdG8gaGFuZGxlIG5vbi1kZWNpbWFsIGJhc2VzIGJldHRlci4KCldlZCBBcHIgMjIgMDk6Mjc6NTEgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBjb25maWcvbWgtbmNyMzAwMDogIFJlcGxhY2UgTUlOVVNfRyB3aXRoIENGTEFHUy4KCSogTWFrZWZpbGUuZG9zOiAgRmluaXNoIE1JTlVTX0cgZXJhZGljYXRpb24uCgkqIE1ha2VmaWxlLmluIChDRklMRVMpOiAgQWRkIHN0cnNpZ25hbC5jLgoJKiBNYWtlZmlsZS5pbiAoUkVRVUlSRURfT0ZJTEVTKTogIEFkZCBzdHJlcnJvci5vIHN0cnNpZ25hbC5vCgkqIE1ha2VmaWxlLmluIChuZWVkZWQtbGlzdCk6ICBTcGxpdCBjcmVhdGlvbiBvZiBlcnJvcnMgZmlsZSB0bwoJc2VwYXJhdGUgbWFrZSB0YXJnZXQuCgkqIE1ha2VmaWxlLmluIChjb25maWcuaCwgbmVlZGVkMi5hd2ssIGVycm9ycyk6ICBOZXcgdGFyZ2V0cy4KCSogTWFrZWZpbGUuaW4gKGNsZWFuKTogIFNwbGl0IHRvIG11bHRpcGxlIGxpbmVzLCBhZGQgbmVlZGVkMi5hd2sKCWFuZCBjb25maWcuaC4KCSogZHVtbXkuYyAoREVGRlVOQywgREVGVkFSKTogIEFkZCBkZWZpbmVzIGFuZCB1bmRlZnMuCgkqIGZ1bmN0aW9ucy5kZWYgKHN0cmVycm9yKTogIFJlbW92ZSBmcm9tIG9wdGlvbmFsIGxpc3QuCgkqIGZ1bmN0aW9ucy5kZWYgKHN5c19uZXJyLCBzeXNfZXJybGlzdCwgc3lzX3NpZ2xpc3QpOiAgREVGVkFSJ3MKCSogZnVuY3Rpb25zLmRlZiAoc3RyZXJyb3IsIHBzaWduYWwpOiAgREVGRlVOQydzCgkqIHN0cmVycm9yLmM6ICBSZXdyaXRlIGZyb20gc2NyYXRjaCB0byB1c2Ugc3lzX2Vycmxpc3Qgb25seSBpZgoJYXZhaWxhYmxlLCBhZGQgZXJybm9fbWF4KCksIGFkZCBzdHJlcnJubygpLCBhZGQgc3RydG9lcnJubygpLAoJYWRkIHRlc3QgZHJpdmVyLgoJKiBzdHJzaWduYWwuYzogIE5ldyBmaWxlLCBzaWduYWwgZXF1aXZhbGVudCB0byBzdHJlcnJvci5jLgoJVXNlcyBzeXNfc2lnbGlzdCBpZiBhdmFpbGFibGUsIGRlZmluZXMgc2lnbm9fbWF4KCksIHN0cnNpZ25hbCgpLAoJc3Ryc2lnbm8oKSwgc3RydG9zaWdubygpLCBwc2lnbmFsKCksIGFuZCB0ZXN0IGRyaXZlci4KCk1vbiBBcHIgMjAgMjA6NDk6MzIgMTk5MiAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoQGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogZG8gbm90IHByaW50IHJlY3Vyc2lvbiBsaW5lLgoKCSogTWFrZWZpbGUuaW46IGFsbG93IENGTEFHUyB0byBiZSBwYXNzZWQgaW4gZnJvbSBjb21tYW5kIGxpbmUuCgkgIFJlbW92ZWQgTUlOVVNfRy4gIERlZmF1bHQgQ0ZMQUdTIHRvIC1nLgoKTW9uIEFwciAyMCAxMjo1Nzo0NiAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAcnRsLmN5Z251cy5jb20pCgoJKiBjb25maWcvbWgtYWl4OiAgTmV3LiAgRVhUUkFfT0ZJTEVTIGxpc3RzIGNvcHlzaWduLm8sCglzbyBsaWJnKysgdXNlcnMgZG9uJ3QgaGF2ZSB0byBiZSBpbmNvbnZlbmllbmNlZCBieSBhCglsaWJjLmEgYnVnIChsaWJjLmEgbmVlZHMgY29weXNpZ24sIGJ1dCBkb2Vzbid0IGRlZmluZSBpdCEpLgoJKiBjb25maWd1cmUuaW46ICBVc2UgY29uZmlnL21oLWFpeC4KCSogc3RydG91bC5jOiAgSGFuZGxlICctJyBhcyByZXF1aXJlZCBieSBBTlNJLgoJQ2xlYW4gdXAgcmFkaXggaGFuZGxpbmcuCgkqIHN0cnN0ci5jOiAgRml4IGJ1Z2d5IGFsZ29yaXRobS4KCSogTWFrZWZpbGUuaW46ICBDaGFuZ2Ugc28gdGhhdCAke0VYVFJBX09GSUxFU30gaXMKCWFwcGVuZGVkIHRvIG5lZWRlZC1saXN0ICh3aGljaCBpcyB1c2VkIGJ5IGxpYmcrKykuCgpGcmkgQXByIDEwIDIyOjUxOjQxIDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogY29uZmlndXJlLmluOiAgUmVjb2duaXplIG5ldyBuY3IzMDAwIGNvbmZpZy4KCSogY29uZmlnL21oLW5jcjMwMDA6ICBOZXcgY29uZmlnIGZpbGUuCgpXZWQgQXByICAxIDIzOjMxOjQzIDE5OTIgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogYXJndi5jLCBkdW1teS5jOiAgTGludC4KClR1ZSBNYXIgMzEgMTg6NDY6NDQgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBjb25maWcvbWgtc3lzdjQ6ICBOZXcgY29uZmlnIGZpbGUuCgkqIGNvbmZpZ3VyZS5pbiAoaG9zdF9tYWtlZmlsZV9mcmFnKTogIFNldCB0byBjb25maWcvbWgtc3lzdjQgZm9yCglob3N0X29zID09IHN5c3Y0LgoJKiBnZXRwYWdlc2l6ZS5jOiAgRm9yIFNWUjQsIHVzZSBzeXNjb25mKF9TQ19QQUdFU0laRSkgdG8gZ2V0CglwYWdlc2l6ZS4KClN1biBNYXIgMjkgMTI6MjY6NDIgMTk5MiAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBnZXRvcHQuYzogIExpbnQuCgpGcmkgTWFyIDI3IDA4OjMyOjU1IDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogZnVuY3Rpb25zLmRlZiAoYWxsb2NhKTogIEZpeCByZXR1cm4gdHlwZSBhbmQgYXJncyB0byBhdm9pZAoJdHlwZSBjbGFzaCB3aXRoIGdjYydzIGJ1aWx0aW4gYWxsb2NhLgoKVHVlIE1hciAyNCAyMzozMzo0MiAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIGNvbmZpZ3VyZS5pbiwgY29uZmlnL21oLWlyaXg0OiBpcml4NCBzdXBwb3J0LgoKCSogTWFrZWZpbGUuaW4sIGZ1bmN0aW9ucy5kZWYsIGFsbG9jYS5jOiBhZGRlZCBhbGxvY2EuCgpUdWUgTWFyIDI0IDE3OjM0OjQ2IDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmMgKENBTExfRlJFRUZVTik6ICBNYWtlIGl0IGNvbXBpbGUgb24gREVDc3RhdGlvbnMuCgpUaHUgTWFyIDE5IDEzOjU3OjQyIDE5OTIgIEZyZWQgRmlzaCAgKGZuZkBjeWdudXMuY29tKQoKCSogYXJndi5jOiAgRml4IHZhcmlvdXMgZXh0ZXJuYWwgZnVuY3Rpb24gZGVmaW5pdGlvbnMgdG8gYmUKCWNvcnJlY3QgaW4gYW4gQU5TSSBjb21waWxhdGlvbiBlbnZpcm9ubWVudC4KClNhdCBNYXIgMTQgMTc6Mjg6MTcgMTk5MiAgRnJlZCBGaXNoICAoZm5mQGN5Z251cy5jb20pCgoJKiBvYnN0YWNrLmM6ICBDaGFuZ2VzIHRvIHN1cHBvcnQgY2FsbGluZyBtbWFsbG9jIGZ1bmN0aW9ucywKCXdoaWNoIHRha2UgYW4gYWRkaXRpb25hbCBhcmd1bWVudCBvdmVyIG1hbGxvYyBmdW5jdGlvbnMuCgpGcmkgTWFyICA2IDIyOjAxOjEwIDE5OTIgIEsuIFJpY2hhcmQgUGl4bGV5ICAocmljaEBjeWdudXMuY29tKQoKCSogYWRkZWQgY2hlY2sgdGFyZ2V0LgoKVGh1IEZlYiAyNyAyMjoxOTozOSAxOTkyICBQZXIgQm90aG5lciAgKGJvdGhuZXJAY3lnbnVzLmNvbSkKCgkqIGFyZ3YuYzogICNpbmNsdWRlIGFsbG9jYS1jb25mLmggKG5lZWRlZCBieSBBSVgpLgoKV2VkIEZlYiAyNiAxODowNDo0MCAxOTkyICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2hAY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUuaW46IHJlbW92ZWQgdHJhY2VzIG9mIG5hbWVzdWJkaXIsCgkgIC1zdWJkaXJzLCAkKHN1YmRpciksICQodW5zdWJkaXIpLCBzb21lIHJjcyB0cmlnZ2Vycy4gIEZvcmNlZAoJICBjb3B5cmlnaHRzIHRvICc5MiwgY2hhbmdlZCBzb21lIGZyb20gQ3lnbnVzIHRvIEZTRi4KClNhdCBGZWIgMjIgMDE6MDk6MjEgMTk5MiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGFyZ3YuYzogIENoZWNrIGluIEZyZWQncyB2ZXJzaW9uIHdoaWNoIGZpeGVzIHByb2JsZW1zIHdpdGgKCWFsbG9jYSgpLgoKRnJpIEZlYiAgNyAyMTo0NjowOCAxOTkyICBTdHUgR3Jvc3NtYW4gIChncm9zc21hbiBhdCBjeWdudXMuY29tKQoKCSogbWFrZWZpbGUuZG9zOiAgUmVtb3ZlIE5VTCB0byBrZWVwIHBhdGNoIGZyb20gZmFpbGluZy4KClRodSBKYW4gMzAgMjI6NDg6NDEgMTk5MiAgU3R1IEdyb3NzbWFuICAoZ3Jvc3NtYW4gYXQgY3lnbnVzLmNvbSkKCgkqIGdldG9wdC5jIChfZ2V0b3B0X2ludGVybmFsKTogIEZpeCB1c2FnZSBvZiBlbnVtIGhhc19hcmcuCgpNb24gSmFuIDIwIDE4OjUzOjIzIDE5OTIgIFN0dSBHcm9zc21hbiAgKGdyb3NzbWFuIGF0IGN5Z251cy5jb20pCgoJKiBnZXRvcHQuYywgZ2V0b3B0MS5jLCAuLi9pbmNsdWRlL2dldG9wdC5oOiAgR2V0IGxhdGVzdCB2ZXJzaW9ucy4KClNhdCBKYW4gMTggMTY6NTM6MDEgMTk5MiAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBhcmd2LmM6ICBOZXcgZmlsZSB0byBidWlsZCBhbmQgZGVzdHJveSBzdGFuZGFyZCBhcmd1bWVudAoJdmVjdG9ycyBmcm9tIGEgY29tbWFuZCBzdHJpbmcuCgoJKiBNYWtlZmlsZS5pbjogIEFkZCBhcmd2LmMgYW5kIGFyZ3YubyB0byBhcHByb3ByaWF0ZSBtYWNyb3MuCgpGcmkgRGVjIDIwIDEyOjEyOjU3IDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogY29uZmlndXJlLmluOiAgQ2hhbmdlIHN2cjQgcmVmZXJlbmNlcyB0byBzeXN2NC4KCgkqIHJpbmRleC5jOiAgRGVjbGFyZSByZXR1cm4gdHlwZSBvZiBleHRlcm5hbGx5IHVzZWQgZnVuY3Rpb24KCXN0cnJjaHIoKS4KClRodSBEZWMgMTkgMTg6MzU6MDMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogIFJlbW92ZSAiKioqIiBpbiBub3JtYWwgb3V0cHV0LCBzaW5jZSBNYWtlIHByb2R1Y2VzCgl0aGlzIG9uIGVycm9ycywgYW5kIGl0J3MgY29udmVuaWVudCB0byBzZWFyY2ggZm9yLgoKVHVlIERlYyAxNyAyMzoyMTozMCAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIG1lbWNtcC5jLCBtZW1jcHkuYywgbWVtbW92ZS5jLCBtZW1zZXQuYywgc3RyY2hyLmMsIHN0cnJjaHIuYzoKCU5ldyBBTlNJIGZ1bmN0aW9ucy4gIFRoZSBvbGQgbm9uLUFOU0kgZnVuY3Rpb25zIChzdWNoIGFzIGJjb3B5KQoJc2hvdWxkIGJlIGF2b2lkZWQuCgkqIGJjb3B5LmM6ICBGaXggdG8gY29ycmVjdGx5IGhhbmRsZSBvdmVybGFwcGluZyByZWdpb25zLgoJKiBpbmRleC5jLCByaW5kZXguYzogIFJlLXdyaXRlIGluIHRlcm1zIG9mIHN0cmNocigpIGFuZCBzdHJyY2hyKCkuCgkqIGZ1bmN0aW9ucy5kZWY6ICBBZGQgdGhlIG5ldyBmdW5jdGlvbnMuCgkqIGZ1bmN0aW9ucy5kZWY6ICBBZGQgNHRoIHBhcmFtZXRlciB0byBERUYgbWFjcm8sCglhbiBhbnNpZGVjbC5oLXN0eWxlIHByb3RvdHlwZS4KCSogZHVtbXkuYzogIFVzZSBleHBhbmRlZCBERUYgbWFjcm8gdG8gY3JlYXRlIGEgZHVtbXkgZnVuY3Rpb24KCWNhbGwsIHdpdGggY29ycmVjdCBwYXJhbWV0ZXIgdHlwZXMuICAoVGhpcyBhdm9pZHMgc29tZQoJY29tcGxhaW50cyBmcm9tIGdjYyBhYm91dCBwcmVkZWZpbmVkIGJ1aWx0aW5zLikKCglNb3ZlIHRoZSBmdW5jdGlvbmFsaXR5IG9mIGNvbmZpZy9taC1kZWZhdWx0IGludG8gTWFrZWZpbGUuaW4uCglUaGlzIGF2b2lkIGR1cGxpY2F0aW9uLCBhbmQgc2ltcGxpZmllcyB0aGluZ3Mgc2xpZ2h0bHkuCgkqIE1ha2VmaWxlLmluOiAgVHdlYWsgc28gd2UgZG9uJ3QgbmVlZCBjb25maWcvbWgtZGVmYXVsdC4KCSogUkVBRE1FOiAgVXBkYXRlLgoJKiBjb25maWd1cmUuaW46ICBObyBsb25nZXIgbmVlZCBjb25maWcvbWgtZGVmYXVsdC4KCSogY29uZmlnL21oLWRlZmF1bHQ6ICBEZWxldGVkLgoJKiBjb25maWcvbWgtc3lzdjogIFJlbW92ZSBsaW5lcyBjb3BpZWQgZnJvbSBvbGQgbWgtZGVmYXVsdC4KClR1ZSBEZWMgMTcgMDU6NDY6NDYgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBmZG1hdGNoLmMgKGZkbWF0Y2gpOiAgRG9uJ3QgY29tcGFyZSBzdF9yZGV2LCB3aGljaCBpcyBmb3IKCSdta25vZCcgZGV2aWNlIG51bWJlcnMuCgpNb24gRGVjIDE2IDEyOjI1OjM0IDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogZmRtYXRjaC5jLCBNYWtlZmlsZS5pbjogIEFkZCBuZXcgZnVuY3Rpb24gdGhhdCB0YWtlcyB0d28KCW9wZW4gZmlsZSBkZXNjcmlwdG9ycyBhbmQgcmV0dXJucyBub256ZXJvIGlmIHRoZXkgcmVmZXIgdG8KCXRoZSBzYW1lIGZpbGUsIHplcm8gb3RoZXJ3aXNlLiAgKHVzZWQgaW4gZ2RiKQoKV2VkIERlYyAxMSAxNzo0MDozOSAxOTkxICBTdGV2ZSBDaGFtYmVybGFpbiAgKHNhYyBhdCBydGwuY3lnbnVzLmNvbSkKCUZyb20gREo6CgkqIG1zZG9zLmM6IHN0dWIgZnVuY3Rpb25zIGZvciBkb3MuCgkqIG1ha2VmaWxlLmRvcywgY29uZmlnZGouYmF0OiBuZXcuCgkqIGdldG9wdC5jOiBEb24ndCBpbmNsdWRlIGFsbG9jYS1jb25mLmggaW4gYSBHTzMyIHdvcmxkLgoKClR1ZSBEZWMgMTAgMDQ6MTQ6NDkgMTk5MSAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoIGF0IHJ0bC5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IGluZm9kaXIgYmVsb25ncyBpbiBkYXRhZGlyLgoKRnJpIERlYyAgNiAyMzoyNjo0NSAxOTkxICBLLiBSaWNoYXJkIFBpeGxleSAgKHJpY2ggYXQgcnRsLmN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogcmVtb3ZlIHNwYWNlcyBmb2xsb3dpbmcgaHlwaGVucyBiZWNhdXNlIGJzZCBtYWtlCgkgIGNhbid0IGNvcGUuICBhZGRlZCBzdGFuZGFyZHMudGV4dCBzdXBwb3J0LiAgaW5zdGFsbCB1c2luZwoJICBJTlNUQUxMX0RBVEEuCgoJKiBjb25maWd1cmUuaW46IHJlbW92ZSBjb21tb250YXJnZXRzIGFzIGl0IGlzIG5vIGxvbmdlciBhCgkgIHJlY29nbml6ZWQgaG9vay4KClRodSBEZWMgIDUgMjI6NDY6NDYgMTk5MSAgSy4gUmljaGFyZCBQaXhsZXkgIChyaWNoIGF0IHJ0bC5jeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IGlkZXN0ZGlyIGFuZCBkZGVzdGRpciBnbyBhd2F5LiAgQWRkZWQgY29weXJpZ2h0cwoJICBhbmQgc2hpZnQgZ3BsIHRvIHYyLiAgQWRkZWQgQ2hhbmdlTG9nIGlmIGl0IGRpZG4ndCBleGlzdC4gZG9jZGlyCgkgIGFuZCBtYW5kaXIgbm93IGtleWVkIG9mZiBkYXRhZGlyIGJ5IGRlZmF1bHQuCgpGcmkgTm92IDIyIDE5OjE1OjI5IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46ICBmaW5kLW5lZWRlZC5hd2sgZG9lcyBub3QgZml0IGluIDE0IGNoYXJzLgoKCSogTWFrZWZpbGUuaW46ICBTdXBwcmVzcyBlcnJvciBjaGVja2luZyB3aGVuIGNvbXBpbGluZyB0aGUgdGVzdAoJcHJvZ3JhbSwgYmVjYXVzZSBVbHRyaXggbWFrZS9zaCBhYm9ydHMgdGhlcmUgZHVlIHRvIGEgYnVnLgoKRnJpIE5vdiAyMiAxMjoyMzoxNyAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluOiAgUmUtZGlkIGhvdyBFWFRSQV9PRklMRVMgaXMgdXNlZCB0byBiZSBtb3JlIHVzZWZ1bC4KCSogUkVBRE1FOiAgRXhwbGFpbmVkIGhvdyB0aGUgYXV0by1jb25maWd1cmF0aW9uIHdvcmtzLAoJYW5kIGhvdyB0byBhZGQgbmV3IGZpbGVzIGFuZC9vciBjb25maWd1cmF0aW9ucy4KCkZyaSBOb3YgMjIgMDk6NDU6MjMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBzdHJ0b3VsLmM6ICBBdm9pZCBkZWZpbmluZyBVTE9OR19NQVggaWYgYWxyZWFkeSBkZWZpbmVkOwoJY2FzdCBhIGNvbnN0IGNoYXIgKiB0byBjaGFyICogZm9yIHBlZGFudHMuCgoJKiBnZXRvcHQuYzogIE9ubHkgZGVmaW5lICJjb25zdCIgYWZ0ZXIgbG9jYWwgaW5jbHVkZSBmaWxlcyBnZXQgdG8sCglhbmQgb25seSBpZiB0aGV5IGhhdmVuJ3QgZGVmaW5lZCBpdC4KClRodSBOb3YgMjEgMTY6NTg6NTMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBnZXRjd2QuYyAocmVtb3ZlIGdldHdkLmMpOiBHTlUgY29kZSBzaG91bGQgY2FsbCBnZXRjd2QoKS4gIFdlCgllbXVsYXRlIGl0IHdpdGggZ2V0d2QoKSBpZiBhdmFpbGFibGUuICBUaGlzIGF2b2lkcyBjYWxsZXJzIGhhdmluZwoJdG8gZmluZCBhIE1BWFBBVEhMRU4gb3IgUEFUSF9NQVggdmFsdWUgZnJvbSBzb21ld2hlcmUuCgkqIE1ha2VmaWxlLmluLCBmdW5jdGlvbnMuZGVmOiAgZ2V0d2QtPmdldGN3ZC4KCSogY29uZmlndXJlLmluOiAgVXNlIGdlbmVyaWMgY2FzZSBmb3IgZXZlcnkgc3lzdGVtLgoJKiBjb25maWcvbWgte2RlbHRhODgsbWFjaCxyczYwMDAsc3ZyNH06ICBSZW1vdmUuCgkqIGNvbmZpZy9taC1zeXN2OiAgVXNlIGRlZmF1bHQgaGFuZGxpbmcsIGp1c3QgYWRkIC1EVVNHLgoKVGh1IE5vdiAxNCAxMDo1ODowNSAxOTkxICBQZXIgQm90aG5lciAgKGJvdGhuZXIgYXQgY3lnbnVzLmNvbSkKCgkqIE1ha2VmaWxlLmluLCBjb25maWcvbWgtZGVmYXVsdDogUmUtZG8gbWFrZSBtYWdpYwoJc28gdGhhdCBmb3IgdGhlIGRlZmF1bHQgKCJhdXRvbWF0aWMiKSBtb2RlIHdlIG9ubHkKCWNvbXBpbGUgdGhlIGZpbGVzIHdlIGFjdHVhbGx5IG5lZWQuICBEbyB0aGlzIHVzaW5nCglhIHJlY3Vyc2l2ZSBtYWtlOiAgVGhlIHRvcC1sZXZlbCBnZW5lcmF0ZXMgdGhlIGxpc3QKCW9mIG5lZWRlZCBmaWxlcyAobG9vc2VseSwgdGhlIG9uZXMgbWlzc2luZyBpbiBsaWJjKSwKCWFuZCB0aGVuIHBhc3NlcyB0aGF0IGxpc3QgdG8gdGhlIHJlY3Vyc2l2ZSBtYWtlLgoJKiBjb25maWcvbWgtbWFjaDogIFJlbW92ZSBvYnNvbGV0ZSBTVFJFUlJPUi17QyxPfSBtYWNyb3MuCgpUdWUgTm92IDEyIDE5OjEwOjU3IDE5OTEgIEpvaG4gR2lsbW9yZSAgKGdudSBhdCBjeWdudXMuY29tKQoKCVJTLzYwMDAgaG9zdCBzdXBwb3J0IChncnVtYmxlKS4KCgkqIGNvbmZpZ3VyZS5pbjogIEJ1aWxkIGFsbG9jYS1jb25mLmggZmlsZSBmcm9tIGFsbG9jYS1ub3JtLmgKCShldmVyeXRoaW5nIGVsc2UpIG9yIGFsbG9jYS1ib3RjaC5oIChycy82MDAwKS4KCSogTWFrZWZpbGUuaW46ICBJbmNsdWRlIC4gb24gdGhlIGluY2x1ZGUgcGF0aC4KCSogZ2V0b3B0LmM6ICBVc2UgYWxsb2NhLWNvbmYuaC4KCSogYWxsb2NhLW5vcm0uaDogIEhvdyB0byBkZWNsYXJlIGFsbG9jYSBvbiByZWFzb25hYmxlIG1hY2hpbmVzLgoJKiBhbGxvY2EtYm90Y2guaDogSG93IHRvIGRlY2xhcmUgYWxsb2NhIG9uIGJyYWluZGVhZCBtYWNoaW5lcy4KClR1ZSBOb3YgMTIgMDk6MjE6NDggMTk5MSAgRnJlZCBGaXNoICAoZm5mIGF0IGN5Z251cy5jb20pCgoJKiBjb25jYXQuYyA6ICBOZXcgZmlsZSwgbGlrZSBjb25jYXQoKSBpbiBnZGIgYnV0IGNhbiB0YWtlIGEKCXZhcmlhYmxlIG51bWJlciBvZiBhcmd1bWVudHMgcmF0aGVyIHRoYW4gZml4ZWQgYXQgMyBhcmdzLiAgRm9yCglub3csIGNsaWVudCBhcHBsaWNhdGlvbnMgbXVzdCBzdXBwbHkgYW4geG1hbGxvYygpLCB3aGljaCBpcyBhCglmcm9udCBlbmQgZnVuY3Rpb24gdG8gbWFsbG9jKCkgdGhhdCBkZWFscyB3aXRoIG91dC1vZi1tZW1vcnkKCWNvbmRpdGlvbnMuCgoJKiBNYWtlZmlsZS5pbjogIEFkZCBjb25jYXQuYyBhbmQgY29uY2F0Lm8gdG8gYXBwcm9wcmlhdGUgbWFjcm9zLgoKU2F0IE5vdiAgOSAxMzoyOTo1OSAxOTkxICBGcmVkIEZpc2ggIChmbmYgYXQgY3lnbnVzLmNvbSkKCgkqIGNvbmZpZy9taC1zdnI0OiAgQWRkIHNpZ3NldG1hc2sgdG8gbGlzdCBvZiByZXF1aXJlZCBmdW5jdGlvbnMuCgpTdW4gTm92ICAzIDExOjU3OjU2IDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogdnNwcmludGYuYzogIE5ldyBmaWxlLgoJKiBmdW5jdGlvbnMuZGVmLCBNYWtlZmlsZS5pbjogIEFkZCB2c3ByaW50Zi4KClN1biBPY3QgMjcgMTY6MzE6MjIgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBjb25maWd1cmUuaW4sIGNvbmZpZy9taC1yczYwMDA6ICBBZGQgcnMvNjAwMCBob3N0IHN1cHBvcnQuCgkqIE1ha2VmaWxlLmluOiAgQ29tcGlsZSB3aXRoIGRlYnVnIGluZm8uCgpGcmkgT2N0IDI1IDE3OjAxOjEyIDE5OTEgIFBlciBCb3RobmVyICAoYm90aG5lciBhdCBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZS5pbiwgYW5kIG5ldyBmaWxlczogZHVtbXkuYywgZnVuY3Rpb25zLmRlZiwKCWNvbmZpZy9tZi1kZWZhdWx0OiAgQWRkZWQgYSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gbW9kZSwKCXdoaWNoIGluY2x1ZGVzIGludG8gbGliaWJlcnR5LmEgZnVuY3Rpb25zIHRoYXQgYXJlICJtaXNzaW5nIiBpbiBsaWJjLgoJKiBzdHJkdXAuYywgdnByaW50Zi5jLCB2ZnByaW50Zi5jOiBOZXcgZmlsZXMuCgpUaHUgT2N0IDI0IDAyOjI5OjI2IDE5OTEgIEZyZWQgRmlzaCAgKGZuZiBhdCBjeWdudXMuY29tKQoKCSogY29uZmlnL2htYWtlLXN2cjQ6IE5ldyBmaWxlLgoKCSogY29uZmlnL2htYWtlLXN5c3Y6IEFkZCBIT1NUX0NGSUxFUyBhbmQgSE9TVF9PRklMRVMuCgoJKiBiYXNlbmFtZS5jLCBiY21wLmMsIGJjb3B5LmMsIGJ6ZXJvLmMsIGdldHBhZ2VzaXplLmMgZ2V0d2QuYywKCWluZGV4LmMsIGluc3F1ZS5jLCByaW5kZXguYywgc3BhY2VzLmMsIHN0cnN0ci5jLCB2Zm9yay5jOiBOZXcKCWZpbGVzIGNvbnRhaW5pbmcgZWl0aGVyIHBvcnRhYmxlIEMgdmVyc2lvbnMgb3IgZW11bGF0aW9ucyB1c2luZwoJbmF0aXZlIGxpYnJhcnkgY2FsbHMuCgoJKiBzdHJlcnJvci5jOiAgQWRkIGNvcHlyaWdodCwgaW50ZXJuYWwgZG9jdW1lbnRhdGlvbiwgZXRjLgoKCSogc3RydG9sLmM6ICBSZXBsYWNlIGhhcmR3aXJlZCBoZXggY29uc3RhbnRzIHdpdGggc29tZSBtb3JlCglwb3J0YWJsZSBtYWNyb3MuICBSZW1vdmUgaWxsZWdhbCAoYWNjb3JkaW5nIHRvIGdjYykgY2FzdC4KCgkqIHN0cnRvdWwuYzogUmVwbGFjZSBoYXJkd2lyZWQgaGV4IGNvbnN0YW50IHdpdGggbW9yZSBwb3J0YWJsZQoJbWFjcm8uCgoJKiBNYWtlZmlsZS5pbjogTW92ZSBUQVJHRVRMSUIgYW5kIENGTEFHUyB3aGVyZSBtYWtlZmlsZSBmcmFnbWVudHMKCWNhbiBvdmVycmlkZSB0aGVtLiAgQWRkIG5ldyBzb3VyY2UgYW5kIG9iamVjdCBmaWxlIG5hbWVzIHRvIENGSUxFUwoJYW5kIE9GSUxFUyByZXNwZWN0aXZlbHkuCgoJKiBjb25maWd1cmUuaW46IEFkZCBzdXBwb3J0IGZvciBTVlI0IG1ha2VmaWxlIGZyYWdtZW50cy4KClR1ZSBPY3QgMjIgMTk6MDA6MjMgMTk5MSAgU3RldmUgQ2hhbWJlcmxhaW4gIChzdGV2ZSBhdCBjeWdudXMuY29tKQoKCSogTWFrZWZpbGUuaW46IE1vdmUgUkFOTElCLCBBUiBhbmQgQVJfRkxBR1MgdG8gd2hlcmUgdGhleSBjYW4gYmUKCW92ZXItcmlkZGVuIGJ5IGNvbmZpZy9obWFrZS0qCgkqIGNvbmZpZ3VyZS5pbjogYWRkZWQgbTg4a2N2cyB0byBzeXN2IGxpc3QKCkZyaSBPY3QgIDQgMDE6Mjk6MDggMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z251cy5jb20pCgoJKiBNYWtlZmlsZS5pbjogIE1vc3QgaG9zdHMgbmVlZCBzdHJlcnJvciwgYnV0IG9uZSBvciB0d28gZG9uJ3QsCglhbmQgdGhleSBvdmVycmlkZSB0aGVzZSBkZWZpbml0aW9ucyBpbiB0aGUgaG9zdC1kZXBlbmRlbnQgbWFrZWZpbGUKCWZyYWdtZW50LgoJKiBjb25maWcvaG1ha2UtbWFjaDogIFRoZSBvZGQgbWFuIG91dCBvbiBzdHJlcnJvciAtLSBpdCdzIHN1cHBsaWVkLgoJKiBzdHJlcnJvci5jOiAgTmV3IGZpbGUuCgoJKiBzdHJ0b2wuYywgc3RydG91bC5jOiAgQWRkIHN0cnRvbCB0byBsaWJpYmVydHksIHNpbmNlIE1hY2ggbGFja3MKCWl0IGFuZCBiZmQgdXNlcyBpdC4KCSogY29uZmlndXJlLmluLCBNYWtlZmlsZS5pbiwgY29uZmlnL2htYWtlLW1hY2g6ICBPbmx5IGNvbmZpZ3VyZQoJc3RydG9sICYgc3Ryb3RvdWwgaW4gb24gTWFjaC4KClR1ZSBTZXAgIDMgMDY6MzY6MjMgMTk5MSAgSm9obiBHaWxtb3JlICAoZ251IGF0IGN5Z2ludC5jeWdudXMuY29tKQoKCSogb2JzdGFjay5jOiAgTWVyZ2Ugd2l0aCBsYXRlc3QgRlNGIHZlcnNpb24uCgoMCkxvY2FsIFZhcmlhYmxlczoKdmVyc2lvbi1jb250cm9sOiBuZXZlcgpFbmQ6Cg==