MjAwMS0xMi0xOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvOTAKCSogdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IFVzZSBvcmlnaW5hbCBmdW5jdGlvbgoJZXhwcmVzc2lvbiBmb3IgZXJyb3JzLgoKMjAwMS0xMi0xOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogRG8gY29tcGFyZSAndGhpcycgcXVhbHMgd2hlbiB0cnlpbmcgdG8gbWF0Y2ggYQoJdXNlZCBmdW5jdGlvbi4gIERvbid0IGRlZmVyIHRvIGFub3RoZXIgdXNlZCBmdW5jdGlvbi4KCjIwMDEtMTItMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbG9uZSk6IFJlbW92ZSwgZm9sZCBpbnRvIC4uLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogLi4uIGhlcmUuIFNpbXBsaWZ5IGJ5IHJlbW92aW5nIG11dHVhbAoJcmVjdXJzaW9uLgoJKiB0eXBlY2syLmMgKGJ1aWxkX21fY29tcG9uZW50X3JlZik6IERvbid0IGN2IHF1YWxpZnkgdGhlIGZ1bmN0aW9uCglwb2ludGVkIHRvIGJ5IGEgcG9pbnRlciB0byBmdW5jdGlvbi4KCSogY2xhc3MuYyAoZGVsZXRlX2R1cGxpY2F0ZV9maWVsZHNfMSk6IFR5cG8uCgoyMDAxLTEyLTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglDKysgQUJJIGNoYW5nZTogZGVzdHJveSB2YWx1ZSBhcmd1bWVudHMgaW4gY2FsbGVyLgoJKiBzZW1hbnRpY3MuYyAoZ2VucnRsX3N0YXJ0X2Z1bmN0aW9uLCBnZW5ydGxfZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3QKCWNyZWF0ZSBhbiBleHRyYSBiaW5kaW5nIGxldmVsIGZvciB0aGUgcGFyYW1ldGVycy4KCSogZGVjbC5jIChzdG9yZV9wYXJtX2RlY2xzKTogRG9uJ3QgZG8gcGFyYW1ldGVyIGNsZWFudXBzLgoKMjAwMS0xMi0xOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogVXNlICclI1YnLgoJKiBlcnJvci5jIChjdl90b19zdHJpbmcpOiBVc2UgViBwYXJhbWV0ZXIgdG8gZGV0ZXJtaW5lIHBhZGRpbmcuCgoyMDAxLTEyLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjYWxsLmMsIGRlY2wyLmMsIGluaXQuYzogVXNlICJidWlsdC1pbiIgYW5kICJiaXQtZmllbGQiCglzcGVsbGluZ3MgaW4gbWVzc2FnZXMuCgoyMDAxLTEyLTE3ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oOiBEZWxldGUgI2RlZmluZXMgZm9yIGNwX2Vycm9yLCBjcF93YXJuaW5nLAoJY3BfcGVkd2FybiwgYW5kIGNwX2NvbXBpbGVyX2Vycm9yLgoJKiBjYWxsLmMsIGNsYXNzLmMsIGNwLXRyZWUuaCwgY3Z0LmMsIGRlY2wuYywgZGVjbDIuYywgZXJyb3IuYywKCWV4Y2VwdC5jLCBmcmllbmQuYywgaW5pdC5jLCBsZXguYywgbWV0aG9kLmMsIHBhcnNlLnksIHB0LmMsCglydHRpLmMsIHNlYXJjaC5jLCBzZW1hbnRpY3MuYywgc3Bldy5jLCB0cmVlLmMsIHR5cGVjay5jLAoJdHlwZWNrMi5jOiBDaGFuZ2UgY2FsbHMgdG8gdGhlIGFib3ZlIG1hY3JvcyB0byB1c2UgdGhlaXIKCWxhbmd1YWdlLWluZGVwZW5kZW50IGVxdWl2YWxlbnRzOiBlcnJvciwgd2FybmluZywgcGVkd2FybiwgYW5kCglpbnRlcm5hbF9lcnJvciByZXNwZWN0aXZlbHkuCgoyMDAxLTEyLTE2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IFJlbW92ZSBiYWNrX2VuZF9ob29rLgoKMjAwMS0xMi0xNiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogQ2hhbmdlTG9nLjEsIENoYW5nZUxvZy4yLCBDaGFuZ2VMb2csIE5FV1MsIGNhbGwuYywgY2xhc3MuYywKCWNwLXRyZWUuaCwgZGVjbC5jLCBkZWNsMi5jLCBleGNlcHQuYywgb3BlcmF0b3JzLmRlZiwgb3B0aW1pemUuYywKCXB0LmMsIHJ0dGkuYywgc2VtYW50aWNzLmMsIHR5cGVjay5jOiBGaXggc3BlbGxpbmcgZXJyb3JzLgoKMjAwMS0xMi0xNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogbGFuZy1vcHRpb25zLmg6IFVzZSBBbWVyaWNhbiBzcGVsbGluZyBpbiBtZXNzYWdlcy4KCjIwMDEtMTItMTMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChwYXJzZS5oKTogU2VwYXJhdGUgcnVsZSwganVzdCBkZXBlbmQgb24gcGFyc2UuYy4KCglVc2UgY2xlYW51cHMgdG8gcnVuIGJhc2UgYW5kIG1lbWJlciBkZXN0cnVjdG9ycy4KCSogaW5pdC5jIChwdXNoX2Jhc2VfY2xlYW51cHMpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tLi4uCgkoYnVpbGRfZGVsZXRlKTogLi4uaGVyZS4gIExvc2UgIVRZUEVfSEFTX0RFU1RSVUNUT1IgY29kZS4KCSogZGVjbC5jIChmaW5pc2hfZGVzdHJ1Y3Rvcl9ib2R5KTogTW92ZSB2YmFzZSBkZXN0cnVjdGlvbiBjb2RlIHRvCglwdXNoX2Jhc2VfY2xlYW51cHMuCgkoYmVnaW5fZnVuY3Rpb25fYm9keSwgZmluaXNoX2Z1bmN0aW9uX2JvZHkpOiBOZXcgZm5zLgoJKGZpbmlzaF9mdW5jdGlvbik6IE1vdmUgW2NkXXRvciBoYW5kbGluZyBhbmQgY2FsbF9wb3BsZXZlbCB0bwoJZmluaXNoX2Z1bmN0aW9uX2JvZHkuCgkocHVzaGRlY2wpOiBTa2lwIHRoZSBuZXcgbGV2ZWwuCgkqIHNlbWFudGljcy5jIChnZW5ydGxfdHJ5X2Jsb2NrKTogRG9uJ3QgY2FsbCBlbmRfcHJvdGVjdF9wYXJ0aWFscy4KCShzZXR1cF92dGJsX3B0cik6IENhbGwgcHVzaF9iYXNlX2NsZWFudXBzLgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBDYWxsIHtiZWdpbixlbmR9X2Z1bmN0aW9uX2JvZHkuCgkqIHB0LmMgKHRzdWJzdF9leHByKTogSGFuZGxlIENPTVBPVU5EX1NUTVRfQk9EWV9CTE9DSy4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIG5ldyBmbnMuCgkqIHBhcnNlLnkgKGZ1bmN0aW9uX2JvZHksIC5iZWdpbl9mdW5jdGlvbl9ib2R5KTogTmV3IG5vbnRlcm1pbmFscy4KCShmbmRlZiwgcGVuZGluZ19pbmxpbmUsIGZ1bmN0aW9uX3RyeV9ibG9jayk6IFVzZSBmdW5jdGlvbl9ib2R5LgoJKGN0b3JfaW5pdGlhbGl6ZXJfb3B0LCBmdW5jdGlvbl90cnlfYmxvY2spOiBObyBsb25nZXIgaGFzIGEgdmFsdWUuCgkoYmFzZV9pbml0KTogUmVtb3ZlIC5zZXRfYmFzZV9pbml0IHRva2VuLgoJKC5zZXRfYmFzZV9pbml0LCBjb21wc3RtdF9vcl9lcnJvcik6IFJlbW92ZS4KCSogTWFrZS1sYW5nLmluIChwYXJzZS5jKTogRXhwZWN0IHR3byBmZXdlciBzL3IgY29uZmxpY3RzLgoKCSogb3B0aW1pemUuYyAobWF5YmVfY2xvbmVfYm9keSk6IEZpeCBwYXJhbWV0ZXIgdXBkYXRpbmcuCgoyMDAxLTEyLTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoc3RvcmVfcGFybV9kZWNscyk6IFJlbW92ZSBwYXJtc19oYXZlX2NsZWFudXBzIGNydWZ0LgoJKiBzZW1hbnRpY3MuYyAoZ2VucnRsX3N0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgcGFzcwoJcGFybXNfaGF2ZV9jbGVhbnVwcyBvciBwdXNoIGFuIGV4dHJhIGJpbmRpbmcgbGV2ZWwuCgkoZ2VucnRsX2ZpbmlzaF9mdW5jdGlvbik6IExvc2UgY2xlYW51cF9sYWJlbCBjcnVmdC4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGNwX2xhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHhfY3Rvcl9sYWJlbC4KCShjdG9yX2xhYmVsKTogUmVtb3ZlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3JldHVybl9zdG10KTogTG9zZSBjdG9yX2xhYmVsIHN1cHBvcnQuCgkqIGRlY2wuYyAoZmluaXNoX2NvbnN0cnVjdG9yX2JvZHksIG1hcmtfbGFuZ19mdW5jdGlvbik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY2hlY2tfcmV0dXJuX2V4cHIpOiBDaGVjayBERUNMX0RFU1RSVUNUT1JfUCwgbm90CglkdG9yX2xhYmVsLgoKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMZXQgcmVzb2x2ZXNfdG9fZml4ZWRfdHlwZV9wCgljaGVjayBmb3IgW2NkXXRvcnMuCgkqIGNsYXNzLmMgKGZpeGVkX3R5cGVfb3JfbnVsbCwgY2FzZSBJTkRJUkVDVF9SRUYpOiBGaXguCgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IENoZWNrIFZNU19UQVJHRVQsIG5vdCBWTVMuCgoJKiBkZWNsLmMgKHN0YXJ0X2NsZWFudXBfZm4pOiBSZW1vdmUgcmVkdW5kYW50IHB1c2hsZXZlbC4KCShlbmRfY2xlYW51cF9mbik6IEFuZCBwb3BsZXZlbC4KCgkqIHNlbWFudGljcy5jIChzZXR1cF92dGJsX3B0cik6IEFsd2F5cyBidWlsZCBhIENUT1JfSU5JVElBTElaRVIKCWlmIHdlJ3JlIGluIGEgdGVtcGxhdGUuCgoyMDAxLTEyLTEyICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNwLXRyZWUuaCAoREVTVFJVQ1RPUl9ERUNMX1BSRUZJWCwgREVTVFJVQ1RPUl9OQU1FX1AsCglBTk9OX1BBUk1OQU1FX0ZPUk1BVCwgQU5PTl9QQVJNTkFNRV9QLCBERVNUUlVDVE9SX05BTUVfRk9STUFULAoJVEhJU19OQU1FX1ApOiBEZWxldGUuCgkqIHNwZXcuYyAocmVhZF9wcm9jZXNzX2lkZW50aWZpZXIpOiBSZW1vdmUgREVTVFJVQ1RPUl9OQU1FX1AsCglUSElTX05BTUVfUCBhbmQgQU5PTl9QQVJNTkFNRV9QIHRlc3RzIGZyb20gd2FybmluZyBhYm91dCBjbGFzaAoJd2l0aCBpbnRlcm5hbCBuYW1pbmcgc2NoZW1lLgoJKiBlcnJvci5jIChkdW1wX2RlY2wpOiBSZW1vdmUgREVTVFJVQ1RPUl9OQU1FX1AgdXNlLgoKMjAwMS0xMi0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEZXByZWNhdGVkIGltcGxpY2l0IHR5cGVuYW1lIHVzZS4KCjIwMDEtMTItMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgZysrLzUxCgkqIHBhcnNlLnkgKGZyb2Jfc3BlY3MpOiBJbmRpY2F0ZSBpdCBpcyBhIGxhbmd1YWdlIGxpbmthZ2Ugd2hpY2gKCWNvbnRhaW5lZCB0aGUgZXh0ZXJuLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWxsb3cgZXh0ZXJuIGxhbmd1YWdlIGxpbmthZ2Ugd2l0aAoJb3RoZXIgc3BlY2lmaWVycy4KCjIwMDEtMTItMTAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgZysrLzcyCgkqIGRlY2wuYyAoYWRkX2JpbmRpbmcpOiBEb24ndCByZWplY3QgZHVwbGljYXRlIHR5cGVkZWZzIGludm9sdmluZwoJdGVtcGxhdGUgcGFyYW1ldGVycy4KCjIwMDEtMTItMTAgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIHBhcnNlLnksIHNlbWFudGljcy5jOiBTaW1pbGFybHkuCgoyMDAxLTEyLTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGcrKy84NwoJKiBjcC10cmVlLmggKERFQ0xfQ09QWV9DT05TVFJVQ1RPUl9QKTogVXNlIGNvcHlfZm5fcC4KCShjb3B5X2FyZ3NfcCk6IFJlbmFtZSB0byAuLi4KCShjb3B5X2ZuX3ApOiAuLi4gaGVyZS4KCShncm9rX3NwZWNpYWxfbWVtYmVyX3Byb3BlcnRpZXMpOiBOZXcgZnVuY3Rpb24uCgkoZ3Jva19vcF9wcm9wZXJ0aWVzKTogTG9zZSBWSVJUVUFMUCBwYXJhbWV0ZXIuCgkoY29weV9hc3NpZ25tZW50X2FyZ19wKTogUmVtb3ZlLgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IFVzZSBjb3B5X2ZuX3AuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IFJlZm9ybWF0LiBBZGp1c3QgY2FsbCB0bwoJZ3Jva19vcF9wcm9wZXJ0aWVzLgoJKGNvcHlfYXJnc19wKTogUmVuYW1lIHRvIC4uLgoJKGNvcHlfZm5fcCk6IC4uLiBoZXJlLiBSZWplY3QgdGVtcGxhdGUgZnVuY3Rpb25zLiBDaGVjayBmb3IgcGFzcwoJYnkgdmFsdWUuCgkoZ3Jva19zcGVjaWFsX21lbWJlcl9wcm9wZXJ0aWVzKTogUmVtZW1iZXIgc3BlY2lhbCBmdW5jdGlvbnMuCgkoZ3Jva19jdG9yX3Byb3BlcnRpZXMpOiBEb24ndCByZW1lbWJlciB0aGVtIGhlcmUsIGp1c3QgY2hlY2suCgkoZ3Jva19vcF9wcm9wZXJ0aWVzKTogTGlrZXdpc2UuCgkoc3RhcnRfbWV0aG9kKTogQ2FsbCBncm9rX3NwZWNpYWxfbWVtYmVyX3Byb3BlcnRpZXMuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKGNvcHlfYXNzaWdubWVudF9hcmdfcCk6IFJlbW92ZS4KCShncm9rX2Z1bmN0aW9uX2luaXQpOiBEb24ndCByZW1lbWJlciBhYnN0cmFjdCBhc3NpZ25tZW50IGhlcmUuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogQ2FsbAoJZ3Jva19zcGVjaWFsX21lbWJlcl9wcm9wZXJ0aWVzLgoJKHRzdWJzdF9kZWNsKTogQWRqdXN0IGdyb2tfb3BfcHJvcGVydGllcyBjYWxsLgoKMjAwMS0xMi0wOCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogbGV4LmMgKHJpZF90b195eSk6IEFkZCBSSURfQ0hPT1NFX0VYUFIgYW5kCglSSURfVFlQRVNfQ09NUEFUSUJMRV9QLgoKMjAwMS0xMi0wOCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHNlbWFudGljcy5jIChzaW1wbGlmeV9hZ2dyX2luaXRfZXhwcnNfcik6IEFkZCBESVJFQ1RfQklORCBmbGFnIGluCgljYWxsIHRvIGJ1aWxkX2FnZ3JfaW5pdC4KCSogY3AtdHJlZS5oIChESVJFQ1RfQklORCk6IERvY3VtZW50IG5ldyB1c2Ugb2YgRElSRUNUX0JJTkQuCgoyMDAxLTEyLTA4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBwYXJzZS55OiBSZXBsYWNlIHVzZXMgb2YgdGhlIHN0cmluZyBub24tdGVybWluYWwgd2l0aCBTVFJJTkcuCglEb24ndCBwZXJmb3JtIHN0cmluZyBjb25jYXRlbnRhaW9uIGhlcmUuCgkoc3RyaW5nKTogUmVtb3ZlIG5vbi10ZXJtaW5hbC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9hc21fc3RtdCk6IERvbid0IGNvbmNhdGVuYXRlIHN0cmluZ3MgaGVyZS4KCjIwMDEtMTItMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogY3AtbGFuZy5jIChMQU5HX0hPT0tTX1RSRUVfSU5MSU5JTkdfU1RBUlRfSU5MSU5JTkcpOiBEZWZpbmUuCgkoTEFOR19IT09LU19UUkVFX0lOTElOSU5HX0VORF9JTkxJTklORyk6IERlZmluZS4KCSogdHJlZS5jIChjcF9zdGFydF9pbmxpbmluZywgY3BfZW5kX2lubGluaW5nKTogTmV3IGZucy4KCSogcHQuYyAocHVzaF90aW5zdF9sZXZlbCk6IE5vIGxvbmdlciBzdGF0aWMuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSB0aGVtLgoKCSogaW5pdC5jIChyZXNvbHZlX29mZnNldF9yZWYpOiBEb24ndCBjaGVjayBhY2Nlc3MgZm9yIHRoZSBiYXNlCgljb252ZXJzaW9uIHRvIGFjY2VzcyBhIEZJRUxEX0RFQ0wuCgoJKiBjcC10cmVlLmggKFRZUEVfUkVGRk5fUCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChiYWRfc3BlY2lmaWVycyk6IENoZWNrIGl0LCB0b28uCgoJKiBydHRpLmMgKGNyZWF0ZV9wc2V1ZG9fdHlwZV9pbmZvKTogU2V0IENMQVNTVFlQRV9JTlRFUkZBQ0VfT05MWQoJb24gdGhlIF9fKl90eXBlX2luZm8gdHlwZSBpZiB3ZSBoYXZlbid0IHNlZW4gYSBkZWZpbml0aW9uLgoKMjAwMS0xMi0wNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZGVjbC5jOiBJbmNsdWRlIGMtY29tbW9uLmguCgkoc2hhZG93X3dhcm5pbmcpOiBNb3ZlIHRvIGMtY29tbW9uLmMuCgpXZWQgRGVjICA1IDE3OjAwOjQ5IDIwMDEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvbid0IGNvcHkgREVDTF9OT19DSEVDS19NRU1PUllfVVNBR0UuCgoyMDAxLTEyLTA0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoZW5kX3RlbXBsYXRlX3Bhcm1fbGlzdCk6IENsZWFyIFRSRUVfQ0hBSU4gb2YgZWFjaCBwYXJtLgoKMjAwMS0xMi0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBnKysvMTY0CgkqIGluaXQuYyAoc29ydF9iYXNlX2luaXQpOiBBbGxvdyBiaW5mb3MgdG8gYmUgZGlyZWN0bHkgc3BlY2lmaWVkLgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IEV4cGxpY2l0bHkgY29udmVydCB0byB0aGUKCWJhc2UgaW5zdGFuY2UuCgkoZG9fYnVpbGRfYXNzaWduX3JlZik6IExpa2V3aXNlLgoKMjAwMS0xMi0wMyAgSGFucy1QZXRlciBOaWxzc29uICA8aHBAYml0cmFuZ2UuY29tPgoKCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IERvbid0IHVzZSBDOTkgY29uc3RydWN0IGluIHRhZ19jb2RlCglkZWNsYXJhdGlvbiBhbmQgaW5pdGlhbGl6YXRpb24uCgoyMDAxLTEyLTAzICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiB0eXBlY2syLmM6IFJlbW92ZSBsZWFkaW5nIGNhcGl0YWwgZnJvbSBkaWFnbm9zdGljIG1lc3NhZ2VzLCBhcwoJcGVyIEdOVSBjb2Rpbmcgc3RhbmRhcmRzLgoKMjAwMS0xMi0wMyAgTXVtaXQgS2hhbiAgPGtoYW5AbmFub3RlY2gud2lzYy5lZHU+CgoJUFIgYysrLzMzOTQKCSogZGVjbC5jICh4cmVmX2Jhc2V0eXBlcyk6IEhhbmRsZSBhdHRyaWJ1dGVzIGJldHdlZW4KCSdjbGFzcycgYW5kIG5hbWUuCgoyMDAxLTEyLTAzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGcrKy8zMzgxCgkqIHBhcnNlLnkgKG5hbWVkX2NvbXBsZXhfY2xhc3NfaGVhZF9zYW5zX2Jhc2V0eXBlKTogQWRkIG5ldwoJcmVkdWN0aW9uLgoJKiBNYWtlLWxhbmcuaW4gKHBhcnNlLmMpOiBBZGp1c3QgZXhwZWN0ZWQgY29uZmxpY3QgY291bnQuCgoyMDAxLTEyLTAzICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGZpbmlzaF92dGJscyk6IEZpbGwgaW4gQklORk9fVlBUUl9GSUVMRCBpbiB0aGUKCWltbWVkaWF0ZSBiaW5mb3MgZm9yIG91ciB2aXJ0dWFsIGJhc2VzLgoKMjAwMS0xMi0wMiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY2FsbC5jIChidWlsZF9qYXZhX2ludGVyZmFjZV9mbl9yZWYpOiBTaW1pbGFybHkuCgkqIGV4Y2VwdC5jIChpc19hZG1pc3NpYmxlX3Rocm93X29wZXJhbmQpOiBTaW1pbGFybHkuCgkqIGluaXQuYyAoYnVpbGRfamF2YV9jbGFzc19yZWYpOiBTaW1pbGFybHkuCgkqIHhyZWYuYyAob3Blbl94cmVmX2ZpbGUpOiBTaW1pbGFybHkuCgoyMDAxLTEyLTAxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogUmVtb3ZlIHRyYWlsaW5nIHBlcmlvZHMgZnJvbSBtZXNzYWdlcy4KCSogZGVjbC5jIChjaGVja190YWdfZGVjbCk6IFNpbWlsYXJseS4KCSogbGV4LmMgKGN4eF9zZXRfeXlkZWJ1Zyk6IFNpbWlsYXJseS4KCSogdHlwZWNrMi5jIChmcmllbmRseV9hYm9ydCk6IFNpbWlsYXJseS4KCjIwMDEtMTEtMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzMwNDgKCSogY3AtdHJlZS5oIChvdmxfbWVtYmVyKTogUmVtb3ZlLgoJKiBkZWNsMi5jIChtZXJnZV9mdW5jdGlvbnMpOiBIYW5kbGUgZXh0ZXJuICJDIiBmdW5jdGlvbnMKCXNwZWNpYWxseS4KCSogdHJlZS5jIChvdmxfbWVtYmVyKTogUmVtb3ZlLgoKMjAwMS0xMS0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvNDg0MgoJKiBjbGFzcy5jIChnZXRfYmFzZWZuZGVjbHMpOiBUYWtlIGFuIElERU5USUZJRVJfTk9ERSwgbm90IGEKCUZVTkNUSU9OX0RFQ0wsIGFzIGlucHV0LgoJKG1hcmtfb3ZlcnJpZGVycyk6IFJlbW92ZS4KCSh3YXJuX2hpZGRlbik6IFJld29yayBmb3IgdGhlIG5ldyBBQkkuCgoyMDAxLTExLTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8zNDcxCgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBEbyBub3QgYnVpbGQgYWRkaXRpb25hbCB0ZW1wb3JhcmllcwoJZm9yIHJ2YWx1ZXMgb2YgY2xhc3MgdHlwZS4KCjIwMDEtMTEtMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKFVOSVFVRUxZX0RFUklWRURfRlJPTV9QKTogVXNlIGxvb2t1cCBiYXNlLgoJKEFDQ0VTU0lCTFlfVU5JUVVFTFlfREVSSVZFRF9GUk9NX1ApOiBMaWtld2lzZS4KCShQVUJMSUNMWV9VTklRVUVMWV9ERVJJVkVEX0ZST01fUDogTGlrZXdpc2UuCgkoREVSSVZFRF9GUk9NX1ApOiBMaWtld2lzZS4KCShlbnVtIGJhc2VfYWNjZXNzKTogUmVudW1iZXIsIGFkZCBiYV9xdWlldCBiaXQgbWFzay4KCShnZXRfYmluZm8pOiBSZW1vdmUuCgkoZ2V0X2Jhc2VfZGlzdGFuY2UpOiBSZW1vdmUuCgkoYmluZm9fdmFsdWUpOiBSZW1vdmUuCgkoQUNDRVNTSUJMWV9ERVJJVkVEX0ZST01fUCk6IFJlbW92ZS4KCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogVXNlIGxvb2t1cF9iYXNlLgoJKiBjbGFzcy5jIChzdHJpY3RseV9vdmVycmlkZXMpOiBMaWtld2lzZS4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IExpa2V3aXNlLgoJKHdhcm5fYWJvdXRfYW1iaWd1b3VzX2RpcmVjdF9iYXNlcyk6IExpa2V3aXNlLgoJKGlzX2Jhc2Vfb2ZfZW5jbG9zaW5nX2NsYXNzKTogTGlrZXdpc2UuCgkoYWRkX3ZjYWxsX29mZnNldF92dGJsX2VudHJpZXNfMSk6IExpa2V3aXNlLgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogQWRqdXN0IGNvbW1lbnQuCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBSZWZvcm1hdC4KCSogc2VhcmNoLmMgKGdldF9iaW5mbyk6IFJlbW92ZS4KCShnZXRfYmFzZV9kaXN0YW5jZV9yZWN1cnNpdmUpOiBSZW1vdmUuCgkoZ2V0X2Jhc2VfZGlzdGFuY2UpOiBSZW1vdmUuCgkobG9va3VwX2Jhc2Vfcik6IFR3ZWFrLgoJKGxvb2t1cF9iYXNlKTogQWRkIGJhX3F1aWV0IGNvbnRyb2wuIENvbXBsZXRlIHRoZSB0eXBlcyBoZXJlLgoJKGNvdmFyaWFudF9yZXR1cm5fcCk6IFVzZSBsb29rdXBfYmFzZS4KCSogdHJlZS5jIChiaW5mb192YWx1ZSk6IFJlbW92ZS4KCShtYXliZV9kdW1teV9vYmplY3QpOiBVc2UgbG9va3VwX2Jhc2UuCgkqIHR5cGVjay5jIChidWlsZF9zdGF0aWNfY2FzdCk6IFVzZSBsb29rdXBfYmFzZS4KCShnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKGJpbmZvX29yX2Vsc2UpOiBVc2UgbG9va3VwX2Jhc2UuCgkoYnVpbGRfc2NvcGVkX3JlZik6IEFkZCBiYWNrIGVycm9yX21hcmtfY2hlY2suCgkoYnVpbGRfbV9jb21wb25lbnRfcmVmKTogVXNlIGxvb2t1cF9iYXNlLgoKMjAwMS0xMS0yOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogTWFrZS1sYW5nLmluIChjKysuZ2VuZXJhdGVkLW1hbnBhZ2VzKTogTmV3IGR1bW15IHRhcmdldC4KClR1ZSBOb3YgMjcgMDk6MDM6NDcgMjAwMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoY3AtbGFuZy5vKTogRGVwZW5kcyBvbiBjLWNvbW1vbi5oLgoJKiBjcC1sYW5nLmMgKGMtY29tbW9uLmgpOiBJbmNsdWRlLgoJKExBTkdfSE9PS1NfRVhQQU5EX0NPTlNUQU5ULCBMQU5HX0hPT0tTX1NBRkVfRlJPTV9QKTogTmV3IGhvb2tzLgoJKiBkZWNsLmMgKGN4eF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IHNldCBsYW5nX3NhZmVfZnJvbV9wLgoJKiBleHByLmMgKGluaXRfY3BsdXNfZXhwYW5kKTogRG9uJ3Qgc2V0IGxhbmdfZXhwYW5kX2NvbnN0YW50LgoKMjAwMS0xMS0yNiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZGVjbDIuYyAoY19sYW5ndWFnZSk6IE1vdmUgdG8gYy1jb21tb24uYy4KCSogbGV4LmMgKGN4eF9wb3N0X29wdGlvbnMsIGN4eF9pbml0X29wdGlvbnMpOiBVc2UgYy1jb21tb24uYwoJZnVuY3Rpb25zLgoJKGN4eF9pbml0KTogVXBkYXRlLgoKMjAwMS0xMS0yNiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjYWxsLmMgKGpvdXN0KTogUmVtb3ZlIENPTkRfRVhQUiBoYWNrLgoKMjAwMS0xMS0yNSAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogY3Avc2VhcmNoLmMgKGxvb2t1cF9iYXNlX3IpOiBEZWNsYXJlIGJrIGluIHZhcmlhYmxlIGRlY2xhcmF0aW9uCglzcGFjZS4KCjIwMDEtMTEtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgZysrLzMxNDUKCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcG9pbnRlcik6IFJlbW92ZS4KCShidWlsZF92YmFzZV9wYXRoKTogUmVtb3ZlLgoJKGJ1aWxkX2Jhc2VfcGF0aCk6IE5ldyBmdW5jdGlvbi4KCSogY3AtdHJlZS5oIChiYXNlX2FjY2VzcywgYmFzZV9raW5kKTogTmV3IGVudW1lcmF0aW9ucy4KCShidWlsZF9iYXNlX3BhdGgpOiBEZWNsYXJlLgoJKGNvbnZlcnRfcG9pbnRlcl90b19yZWFsKTogUmVtb3ZlLgoJKGNvbnZlcnRfcG9pbnRlcl90byk6IFJlbW92ZS4KCShsb29rdXBfYmFzZSk6IERlY2xhcmUuCgkoY29udmVydF9wb2ludGVyX3RvX3ZiYXNlKTogUmVtb3ZlLgoJKiBjYWxsLmMgKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IFVzZSBsb29rdXBfYmFzZSAmCglidWlsZF9iYXNlX3BhdGggaW5zdGVhZCBvZiBjb252ZXJ0X3BvaW50ZXJfdG9fcmVhbCwKCWdldF9iYXNlX2Rpc3RhbmNlICYgZ2V0X2JpbmZvLgoJKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogTGlrZXdpc2UuCgkoY29udmVydF90b19wb2ludGVyX2ZvcmNlKTogTGlrZXdpc2UuCgkoYnVpbGRfdXBfcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkoY29udmVydF9wb2ludGVyX3RvX3JlYWwpOiBSZW1vdmUuCgkoY29udmVydF9wb2ludGVyX3RvKTogUmVtb3ZlLgoJKiBpbml0LmMgKGRmc19pbml0aWFsaXplX3Z0YmxfcHRycyk6IFVzZSBidWlsZF9iYXNlX3BhdGgKCWluc3RlYWQgb2YgY29udmVydF9wb2ludGVyX3RvX3ZiYXNlICYgYnVpbGRfdmJhc2VfcGF0aC4KCShlbWl0X2Jhc2VfaW5pdCk6IFVzZSBidWlsZF9iYXNlX3BhdGggaW5zdGVhZCBvZgoJY29udmVydF9wb2ludGVyX3RvX3JlYWwuCgkoZXhwYW5kX3ZpcnR1YWxfaW5pdCk6IExvc2UgdW5yZXF1aXJlZCBjb252ZXJzaW9ucy4KCShyZXNvbHZlX29mZnNldF9yZWYpOiBVc2UgbG9va3VwX2Jhc2UgYW5kIGJ1aWxkX2Jhc2VfcGF0aAoJaW5zdGVhZCBvZiBjb252ZXJ0X3BvaW50ZXJfdG8uCgkqIHJ0dGkuYyAoYnVpbGRfZHluYW1pY19jYXN0XzEpOiBVc2UgbG9va3VwX2Jhc2UgJgoJYnVpbGRfYmFzZV9wYXRoIGluc3RlYWQgb2YgZ2V0X2Jhc2VfZGlzdGFuY2UgJiBidWlsZF92YmFzZV9wYXRoLgoJKiBzZWFyY2guYyAoZ2V0X3ZiYXNlXzEpOiBSZW1vdmUuCgkoZ2V0X3ZiYXNlKTogUmVtb3ZlLgoJKGNvbnZlcnRfcG9pbnRlcl90b192YmFzZSk6IFJlbW92ZS4KCShsb29rdXBfYmFzZV9yZWN1cnNpdmUpOiBOZXcgZnVuY3Rpb24uCgkobG9va3VwX2Jhc2UpOiBOZXcgZnVuY3Rpb24uCgkqIHR5cGVjay5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGUpOiBVc2UgbG9va3VwX2Jhc2UgJgoJYnVpbGRfYmFzZV9wYXRoIGluc3RlYWQgb2YgY29udmVydF9wb2ludGVyX3RvLgoJKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCShnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbXBvbmVudF9hZGRyKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoYnVpbGRfc2NvcGVkX3JlZik6IExpa2V3aXNlLgoKMjAwMS0xMS0yMiAgQnJ5Y2UgTWNLaW5sYXkgIDxicnljZUB3YWl0YWtpLm90YWdvLmFjLm56PgoKCSogY3AtdHJlZS5oIChDUF9UWVBFX1FVQUxTKTogUmVtb3ZlZC4KCSogZGVjbC5jIChjeHhfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBzZXQgbGFuZ19kdW1wX3RyZWUuCgkqIGNwLWxhbmcuYzogU2V0IExBTkdfSE9PS1NfVFJFRV9EVU1QX0RVTVBfVFJFRV9GTiBhbmQKCUxBTkdfSE9PS1NfVFJFRV9EVU1QX1RZUEVfUVVBTFNfRk4uCgkqIGR1bXAuYyAoY3BfZHVtcF90cmVlKTogVXNlIHZvaWQqIGR1bXBfaW5mbyBhcmd1bWVudCB0byBtYXRjaAoJbGFuZy1ob29rcyBwcm90b3R5cGUuCgkqIGNhbGwuYywgY3AtdHJlZS5oLCBjdnQuYywgZGVjbC5jLCBpbml0LmMsIG1hbmdsZS5jLCBtZXRob2QuYywgcHQuYywKCXJ0dGkuYywgc2VtYW50aWNzLmMsIHRyZWUuYywgdHlwZWNrLmMsIHR5cGVjazIuYzogQWxsIHJlZmVyZW5jZXMgdG8KCUNQX1RZUEVfUVVBTFMgY2hhbmdlZCB0byBjcF90eXBlX3F1YWxzLgoJKiBNYWtlLWxhbmcuaW46IFJlZmVyZW5jZXMgdG8gYy1kdW1wLmggY2hhbmdlZCB0byB0cmVlLWR1bXAuaC4KCShDWFhfQ19PQkpTKTogUmVtb3ZlIGMtZHVtcC5vLgoKMjAwMS0xMS0yMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzYzNwoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBFbnN1cmUgdGhhdCBhbGwgc3BlY2lhbGl6YXRpb25zCglhcmUgcmVnaXN0ZXJlZCBvbiB0aGUgbGlzdCBjb3JyZXNwb25kaW5nIHRvIHRoZSBtb3N0IGdlbmVyYWwKCXRlbXBsYXRlLgoKMjAwMS0xMS0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAobm9uX3JlZmVyZW5jZSk6IEFkZCBkb2N1bWVudGF0aW9uLgoJKGNvbnZlcnRfY2xhc3NfdG9fcmVmZXJlbmNlKTogRG8gbm90IHN0cmlwIHJlZmVyZW5jZSB0eXBlcwoJZnJvbSBjb252ZXJzaW9uIG9wZXJhdG9ycy4KCShtYXliZV9oYW5kbGVfcmVmX2JpbmQpOiBTaW1wbGlmeS4KCShjb21wYXJlX2ljcyk6IENvcnJlY3QgaGFuZGxpbmcgb2YgcmVmZXJlbmNlcy4KCjIwMDEtMTEtMTkgIEpvaG4gV2lsa2luc29uIDxqb2hud0ByZXNlYXJjaC5hdHQuY29tPgoKCSogZHVtcC5jIChkdW1wX29wKTogTmV3IGZ1bmN0aW9uLgoJKGNwX2R1bXBfdHJlZSk6IER1bXAgQ0xBU1NUWVBFX1RFTVBMQVRFX1NQRUNJQUxJWkFUSU9OLiAgVXNlCglkdW1wX29wLiAgRHVtcCBERUNMX01VVEFCTEUsIGFjY2VzcyBhbmQgc3RhdGljbmVzcyBmb3IgVkFSX0RFQ0xzLgoJREVDTF9QVVJFX1ZJUlRVQUxfUCwgREVDTF9WSVJUVUFMX1AsCgoyMDAxLTExLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSNDYyOQoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3NpemVvZik6IE1ha2Ugc3VyZSB0aGF0IGV4cHJlc3Npb24gY3JlYXRlZAoJd2hpbGUgcHJvY2Vzc2luZyBhIHRlbXBsYXRlIGRvIG5vdCBoYXZlIGEgdHlwZS4KCShmaW5pc2hfYWxpZ25vZik6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY19zaXplb2YpOiBMaWtld2lzZS4KCShleHByX3NpemVvZik6IExpa2V3aXNlLgoKMjAwMS0xMS0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbGV4LmMgKGN4eF9maW5pc2gpOiBDYWxsIGNfY29tbW9uX2ZpbmlzaC4KCShmaW5pc2hfcGFyc2UpOiBSZW1vdmUuCgoyMDAxLTExLTE3ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGRlY2wuYyAoY3JlYXRlX2FycmF5X3R5cGVfZm9yX2RlY2wpOiBDaGVjayBpZiBOQU1FIGlzIE5VTExfVFJFRQoJd2hlbiBkaXNwbGF5aW5nIGVycm9yIG1lc3NhZ2UgYWJvdXQgbWlzc2luZyBhcnJheSBib3VuZHMuCgoyMDAxLTExLTE3ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIG1hbmdsZS5jICh3cml0ZV9leHByZXNzaW9uKTogSGFuZGxlIENBU1RfRVhQUiwgU1RBVElDX0NBU1RfRVhQUiwKCUNPTlNUX0NBU1RfRVhQUi4KCSogb3BlcmF0b3JzLmRlZjogQWRkIENBU1RfRVhQUiwgU1RBVElDX0NBU1RfRVhQUiwgQ09OU1RfQ0FTVF9FWFBSLgoKMjAwMS0xMS0xNiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY3AtdHJlZS5oIChwcmludF9jbGFzc19zdGF0aXN0aWNzKTogUmVzdG9yZS4KCjIwMDEtMTEtMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogbWV0aG9kLmMgKHVzZV90aHVuayk6IERvbid0IGVtaXQgZGVidWdnaW5nIGluZm9ybWF0aW9uIGZvciB0aHVua3MuCgoJKiBwYXJzZS55OiBBZGQgLi4uIElERU5USUZJRVIgU0NPUEUgYW5kIC4uLiBQVFlQRU5BTUUgU0NPUEUgZXhwYW5zaW9ucy4KCSogZGVjbC5jIChtYWtlX3R5cGVuYW1lX3R5cGUpOiBIYW5kbGUgZ2V0dGluZyBhIGNsYXNzIHRlbXBsYXRlLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkX3IpOiBBIGNsYXNzIHRlbXBsYXRlIGlzIGdvb2QgZW5vdWdoIGZvcgoJd2FudF90eXBlLgoKCSogY2FsbC5jIChjb252ZXJ0X2xpa2VfcmVhbCk6IE9ubHkgdXNlIGNwX2NvbnZlcnQgZm9yIHRoZSBiYWQgcGFydC4KCShzdGFuZGFyZF9jb252ZXJzaW9uKTogQWxzbyBhbGxvdyBiYWQgaW50LT5lbnVtLgoJKiB0eXBlY2suYyAocHRyX3JlYXNvbmFibHlfc2ltaWxhcik6IEFsc28gYWxsb3cgZnVuY3Rpb25zIHRvCglpbnRlcmNvbnZlcnQuICBQb2ludGVycyB0byBzYW1lLXNpemUgaW50ZWdlcnMgYXJlIHJlYXNvbmFibHkKCXNpbWlsYXIuCgoJKiBjdnQuYyAoY29udmVydF90b192b2lkKTogSWYgd2UgYnVpbGQgYSBuZXcgQ09ORF9FWFBSLCBhbHdheXMKCWdpdmUgaXQgdm9pZCB0eXBlLgoKMjAwMS0xMS0xNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBnKysvMzE1NAoJKiBpbml0LmMgKHNvcnRfYmFzZV9pbml0KTogUmVtb3ZlIHVucmVhY2hhYmxlIGNvZGUuCgkoZXhwYW5kX21lbWJlcl9pbml0KTogQWRqdXN0IGNvbW1lbnQgdG8gcmVmbGVjdCByZWFsaXR5LiBTaW1wbGlmeQoJYW5kIHJlbW92ZSB1bnJlYWNoYWJsZSBjb2RlLgoKMjAwMS0xMS0xNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY3AtdHJlZS5oIChpbml0X3Jlc3dvcmRzLCBjeHhfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBOZXcuCgkoY3h4X2luaXQpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVuYW1lLiAgTW92ZSBudWxsIG5vZGUgaW5pdAoJdG8gaXRzIGNyZWF0aW9uIHRpbWUuCgkqIGxleC5jIChjeHhfaW5pdF9vcHRpb25zKTogVXBkYXRlLgoJKGN4eF9pbml0KTogQ29tYmluZSB3aXRoIG9sZCBpbml0X3BhcnNlOyBhbHNvIGNhbGwKCWN4eF9pbml0X2RlY2xfcHJvY2Vzc2luZy4KCjIwMDEtMTEtMTQgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoY2hlY2tfaW5pdGlhbGl6ZXIpOiBUcnkgdG8gY29tcGxldGUgdGhlIHR5cGUgb2YgYW4KCWFycmF5IGVsZW1lbnQgYmVmb3JlIGNoZWNraW5nIHdoZXRoZXIgaXQncyBjb21wbGV0ZS4gIERvbid0Cgljb21wbGFpbiBhYm91dCBhcnJheXMgd2l0aCBjb21wbGV0ZSBlbGVtZW50IHR5cGVzIGJ1dCBhbgoJdW5rbm93biBzaXplLgoJKGNwX2ZpbmlzaF9kZWNsKTogQnVpbGQgdGhlIGhpZXJhcmNoaWNhbCBjb25zdHJ1Y3RvciBiZWZvcmUKCWNhbGxpbmcgbWF5YmVfZGVkdWNlX3NpemVfZnJvbV9hcnJheV9pbml0LgoKMjAwMS0xMS0xNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogTWFrZS1sYW5nLmluOiBDaGFuZ2UgYWxsIHVzZXMgb2YgJChtYW5leHQpIHRvICQobWFuMWV4dCkuCgoyMDAxLTExLTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGcrKy80MjA2CgkqIHBhcnNlLnkgKGFscmVhZHlfc2NvcGVkX3N0bXQpOiBSZW1vdmUuCgkoc2ltcGxlX3N0bXQsIFdISUxFICYgRk9SKTogVXNlIGltcGxpY2l0bHlfc2NvcGVkX3N0bXQuCgoyMDAxLTExLTEyICBILkouIEx1IDxoamxAZ251Lm9yZz4KCgkqIGNwL2N2dC5jIChvY3BfY29udmVydCk6IERvbid0IHdhcm4gdGhlIGFkZHJlc3Mgb2YgYSB3ZWFrCglmdW5jdGlvbiBpcyBhbHdheXMgYHRydWUnLgoKMjAwMS0xMS0wOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY3AtbGFuZy5jIChMQU5HX0hPT0tTX1BSSU5UX0RFQ0wsIExBTkdfSE9PS1NfUFJJTlRfVFlQRSwKCUxBTkdfSE9PS1NfUFJJTlRfU1RBVElTVElDUywgTEFOR19IT09LU19QUklOVF9YTk9ERSwKCUxBTkdfSE9PS1NfUFJJTlRfSURFTlRJRklFUiwgTEFOR19IT09LU19TRVRfWVlERUJVRyk6IE92ZXJyaWRlLgoJKiBjcC10cmVlLmggKHByaW50X2NsYXNzX3N0YXRpc3RpY3MpOiBSZW1vdmUuCgkoY3h4X3ByaW50X3N0YXRpc3RpY3MsIGN4eF9wcmludF94bm9kZSwgY3h4X3ByaW50X2RlY2wsIGN4eF9wcmludF90eXBlLAoJY3h4X3ByaW50X2lkZW50aWZpZXIsIGN4eF9zZXRfeXlkZWJ1Zyk6IE5ldy4KCSogbGV4LmMgKHNldF95eWRlYnVnKTogUmVuYW1lIGNfc2V0X3l5ZGVidWcuCgkqIHB0cmVlLmMgKHByaW50X2xhbmdfZGVjbCwgcHJpbnRfbGFuZ190eXBlLCBwcmludF9sYW5nX2lkZW50aWZpZXIsCglsYW5nX3ByaW50X3hub2RlKTogUmVuYW1lLgoJKiB0cmVlLmMgKHByaW50X2xhbmdfc3RhdGlzdGljcyk6IFJlbmFtZS4KCjIwMDEtMTEtMDkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsYXNzLmMgKGR1bXBfYXJyYXkpOiBGaXggZm9ybWF0IHNwZWNpZmllciB3YXJuaW5nLgoKMjAwMS0xMS0wOSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY3AtbGFuZy5jIChMQU5HX0hPT0tTX05BTUUpOiBPdmVycmlkZS4KCShzdHJ1Y3QgbGFuZ19ob29rcyk6IENvbnN0aWZ5LgoJKiBsZXguYyAoY3h4X2luaXRfb3B0aW9ucyk6IFVwZGF0ZS4KCShsYW5nX2lkZW50aWZ5KTogUmVtb3ZlLgoJKiBwYXJzZS55IChsYW5ndWFnZV9zdHJpbmcpOiBSZW1vdmUuCgoyMDAxLTExLTA4ICBBbmRyZWFzIEZyYW5jayAgPGFmcmFuY2tAZ214LmRlPgoKCSogTWFrZS1sYW5nLmluIChDWFhfSU5TVEFMTF9OQU1FLCBHWFhfQ1JPU1NfTkFNRSwKCURFTUFOR0xFUl9DUk9TU19OQU1FKTogSGFuZGxlIHByb2dyYW1fdHJhbnNmb3JtX25hbWUgdGhlIHdheQoJc3VnZ2VzdGVkIGJ5IGF1dG9jb25mLgoJKEdYWF9UQVJHRVRfSU5TVEFMTF9OQU1FLCBDWFhfVEFSR0VUX0lOU1RBTExfTkFNRSk6IERlZmluZS4KCShjKysuaW5zdGFsbC1jb21tb24pOiBVc2UgdGhlIHRyYW5zZm9ybWVkIHRhcmdldCBhbGlhcyBuYW1lcy4KCjIwMDEtMTEtMDYgIE5laWwgQm9vdGggIDxuZWlsQGNhdC5kYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZS4KCSogY3AtbGFuZy5jOiBJbmNsdWRlIGxhbmdob29rcy1kZWYuaC4KCjIwMDEtMTEtMDQgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogcHQuYyAodHN1YnN0X2NvcHkpOiBDYWxsIHRzdWJzdCBmb3IgVFlQRU9GX0VYUFIuCgoyMDAxLTExLTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsZXguYyAoY29weV9sYW5nX3R5cGUpOiBBZGQgc3RhdGljIHByb3RvdHlwZS4KCjIwMDEtMTEtMDIgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogcHQuYyAodW5pZnkpOiBIYW5kbGUgU0NPUEVfUkVGLgoKMjAwMS0xMS0wMSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB0cmVlLmMgKGNwX2NvcHlfcmVzX2RlY2xfZm9yX2lubGluaW5nKTogQWRqdXN0CglERUNMX0FCU1RSQUNUX09SSUdJTiBmb3IgdGhlIHJldHVybiB2YXJpYWJsZS4KCjIwMDEtMTAtMzEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiAgTWFrZS1sYW5nLmluOiBSZXBsYWNlICQoSU5UTF9UQVJHRVRTKSB3aXRoIHBvLWdlbmVyYXRlZC4KCjIwMDEtMTAtMjggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIENoYW5nZUxvZy4xLCBDaGFuZ2VMb2cuMiwgQ2hhbmdlTG9nLCBjbGFzcy5jLCBkZWNsMi5jLCBzZWFyY2guYywKCXNlbWFudGljcy5jLCBzcGV3LmM6IEZpeCBzcGVsbGluZyBlcnJvcnMuCgoyMDAxLTEwLTI3ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGRlY2wyLmMgKHZhbGlkYXRlX25vbm1lbWJlcl91c2luZ19kZWNsKTogSGFuZGxlIE5BTUVTUEFDRV9ERUNMLgoKMjAwMS0xMC0yNSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLWxhbmcuYzogUmVkZWZpbmUgTEFOR19IT09LU19DTEVBUl9CSU5ESU5HX1NUQUNLIHRvCglwb3BfZXZlcnl0aGluZy4KClR1ZSBPY3QgMjMgMTQ6MDA6MjAgMjAwMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNwLWxhbmcuYyAoY3h4X2dldF9hbGlhc19zZXQpOiBOZXcgZnVuY3Rpb24uCglQb2ludCBMQU5HX0hPT0tTX0dFVF9BTElBU19TRVQgdG8gaXQuCgoyMDAxLTEwLTIzICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNwLXRyZWUuZGVmIChVTkJPVU5EX0NMQVNTX1RFTVBMQVRFKTogTmV3IHRyZWUgbm9kZS4KCSogY3AtdHJlZS5oIChtYWtlX3VuYm91bmRfY2xhc3NfdGVtcGxhdGUpOiBQcm90b3R5cGUgbmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKG1ha2VfdW5ib3VuZF9jbGFzc190ZW1wbGF0ZSk6IE5ldyBmdW5jdGlvbi4KCSogZGVjbDIuYyAoYXJnX2Fzc29jX3RlbXBsYXRlX2FyZyk6IEhhbmRsZSBVTkJPVU5EX0NMQVNTX1RFTVBMQVRFLgoJKiBlcnJvci5jIChkdW1wX3R5cGUpOiBMaWtld2lzZS4KCSogbWFuZ2xlLmMgKHdyaXRlX3R5cGUpOiBMaWtld2lzZS4KCSogcGFyc2UueSAodGVtcGxhdGVfcGFybSk6IExpa2V3aXNlLgoJKHRlbXBsYXRlX2FyZ3VtZW50KTogVXNlIG1ha2VfdW5ib3VuZF9jbGFzc190ZW1wbGF0ZS4KCSogcHQuYyAoY29udmVydF90ZW1wbGF0ZV9hcmd1bWVudCk6IEhhbmRsZSBVTkJPVU5EX0NMQVNTX1RFTVBMQVRFLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoJKHRzdWJzdF9jb3B5KTogTGlrZXdpc2UuCgkodW5pZnkpOiBMaWtld2lzZS4KCSogdHJlZS5jICh3YWxrX3RyZWUpOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGNvbXB0eXBlcyk6IExpa2V3aXNlLgoKMjAwMS0xMC0yMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogeHJlZi5jIChHTlVfeHJlZl9tZW1iZXIpOiBVc2Ugc2FmZS1jdHlwZSBtYWNyb3MgYW5kL29yIGZvbGQKCWV4dHJhIGNhbGxzIGludG8gZmV3ZXIgb25lcy4KCjIwMDEtMTAtMTggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBQcm9wYWdhdGUgREVDTF9VTklOTElOQUJMRS4KCVdhcm4gd2hlbiBtZXJnaW5nIGlubGluZSB3aXRoIGF0dHJpYnV0ZSBub2lubGluZS4KCShzdGFydF9kZWNsLCBzdGFydF9mdW5jdGlvbik6IFdhcm4gaWYgaW5saW5lIGFuZCBhdHRyaWJ1dGUKCW5vaW5saW5lIGFwcGVhciBpbiB0aGUgc2FtZSBkZWNsYXJhdGlvbi4KCjIwMDEtMTAtMTYgIEguSi4gTHUgPGhqbEBnbnUub3JnPgoKCSogY3AtdHJlZS5oIChCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNX1RZUEVfQ0hFQ0spOiBEZWZpbmVkCglmb3IgdHJlZSBjaGVja2luZyBkaXNhYmxlZC4KCjIwMDEtMTAtMTYgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogY3AtdHJlZS5oIChWRklFTERfTkFNRV9GT1JNQVQpIFtOT19ET0xMQVJfSU5fTEFCRUwgJiYKCU5PX0RPVF9JTl9MQUJFTF06IEFkanVzdCB0byBtYXRjaCBWRklFTERfTkFNRS4KCjIwMDEtMTAtMTUgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHB0LmMgKFVOSUZZX0FMTE9XX01BWF9DT1JSRUNUSU9OKTogRGVmaW5lLgoJKHVuaWZ5KTogT25seSBoYW5kbGUgTUlOVVNfRVhQUiBzcGVjaWFsbHkgaWYgdGhlIGFib3ZlIGZsYWcgaXMgc2V0CglhbmQgdGhlIHN1YnRyYWN0ZWQgY29uc3RhbnQgaXMgMS4gIENsZWFyIHRoZSBmbGFnIG9uIHJlY3Vyc2l2ZSBjYWxscy4KCVNldCBpdCB3aGVuIHVuaWZ5aW5nIHRoZSBtYXhpbXVtIHZhbHVlIGluIGFuIElOVEVHRVJfVFlQRSdzIHJhbmdlLgoKMjAwMS0xMC0xNSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogZGVjbC5jIChiYWRfc3BlY2lmaWVycyk6IERvbid0IGFsbG93IGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9ucwoJb24gYW55IHR5cGVkZWZzLgoKMjAwMS0xMC0xNCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY3AvbGV4LmMgKGluaXRfY3BfcHJhZ21hKTogU2ltaWxhcmx5LgoKMjAwMS0xMC0xMyAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBCdWlsZCBjb21wbGV0ZSB0ZW1wbGF0ZSBhcmd1bWVudHMKCWZvciBCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNLgoKMjAwMS0xMC0xMiAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBjcC10cmVlLmggKFRZUEVfQklORk8pOiBVcGRhdGUgY29tbWVudC4KCShCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNX1RZUEVfQ0hFQ0spOiBOZXcgbWFjcm8uCgkoVEVNUExBVEVfVEVNUExBVEVfUEFSTV9URU1QTEFURV9JTkZPKTogVXNlIHRlbXBsYXRlX2luZm8uCgkoVFlQRU5BTUVfVFlQRV9GVUxMTkFNRSk6IFVzZSBUWVBFX0ZJRUxEUy4KCShjb3B5X3R5cGUpOiBQcm90b3R5cGUgbmV3IGZ1bmN0aW9uLgoJKiBsZXguYyAoY29weV9sYW5nX2RlY2wpOiBHYXRoZXIgdHJlZSBub2RlIHN0YXRpc3RpY3MuCgkoY29weV9sYW5nX3R5cGUpOiBOZXcgZnVuY3Rpb24uCgkoY29weV90eXBlKTogTGlrZXdpc2UuCgkoY3BfbWFrZV9sYW5nX3R5cGUpOiBDcmVhdGUgbGFuZ190eXBlIGZvcgoJQk9VTkRfVEVNUExBVEVfVEVNUExBVEVfUEFSTS4gIFNldCBUWVBFX0JJTkZPIGZvciBUWVBFTkFNRV9UWVBFCglhbmQgQk9VTkRfVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCSogcHQuYyAodHN1YnN0KTogVXNlIGNvcHlfdHlwZSBpbnN0ZWFkIG9mIGNvcHlfbm9kZS4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZF8xKTogSWdub3JlIFRZUEVOQU1FX1RZUEUuCgoyMDAxLTEwLTEyICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IElnbm9yZSBmdW5jdGlvbnMgd2l0aG91dAoJREVDTF9URU1QTEFURV9JTkZPLgoKMjAwMS0xMC0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBnKysvNDQ3NgoJKiB0eXBlY2syLmMgKGFic3RyYWN0X3ZpcnR1YWxzX2Vycm9yKTogSWdub3JlIGluY29tcGxldGUgY2xhc3Nlcy4KCjIwMDEtMTAtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbl9tZXJyaWxsQHJlZGhhdC5jb20+CgoJKiB0eXBlY2syLmMgKHN0b3JlX2luaXRfdmFsdWUpOiBEb24ndCByZS1kaWdlc3QgYSBicmFja2V0ZWQKCWluaXRpYWxpemVyLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9hbm9uKTogVXNlIFRZUEVfQU5PTllNT1VTX1AgaW5zdGVhZCBvZgoJQU5PTl9BR0dSX1RZUEVfUC4KCjIwMDEtMTAtMTEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnlfcmVmKTogQ3JlYXRlIGEgVlRBQkxFX1JFRiBpbnN0ZWFkCglvZiBhbiBhc20gc3RhdGVtZW50LgoJKGJ1aWxkX3Z0YmxfcmVmXzEpOiBTcGxpdCBvdXQgZnJvbSBidWlsZF92dGJsX3JlZi4KCShidWlsZF92Zm5fcmVmKTogVXNlIGl0IHRvIGhhbmRsZSB2dGFibGUgZGVzY3JpcHRvcnMgYmVmb3JlCgljYWxsaW5nIGJ1aWxkX3Z0YWJsZV9lbnRyeV9yZWYuCgkqIGRlY2wyLmMgKG91dHB1dF92dGFibGVfaW5oZXJpdCk6IFVzZSBhc3NlbWJsZV92dGFibGVfaW5oZXJpdC4KCjIwMDEtMTAtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChhc21fb3BlcmFuZCk6IEFsbG93IG5hbWVkIG9wZXJhbmRzLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2FzbV9zdG10KTogVHdlZWsgZm9yIGNoYW5nZWQgbG9jYXRpb24KCW9mIHRoZSBvcGVyYW5kIGNvbnN0cmFudC4KCjIwMDEtMTAtMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbl9tZXJyaWxsQHJlZGhhdC5jb20+CgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBBZGQgYmFkIGNvbnZlcnNpb24gYmV0d2VlbgoJaW50ZWdlcnMgYW5kIHBvaW50ZXJzLgoJKGNvbnZlcnRfbGlrZV9yZWFsKTogRG9uJ3QgdXNlIGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uIGZvciBiYWQKCWNvbnZlcnNpb25zOyBjb21wbGFpbiBoZXJlIGFuZCB1c2UgY3BfY29udmVydC4KCShidWlsZF9vdmVyX2NhbGwpOiBEb24ndCBoYW5kbGUgYmFkIGNvbnZlcnNpb25zIHNwZWNpYWxseS4KCShwZXJmb3JtX2ltcGxpY2l0X2NvbnZlcnNpb24pOiBBbGxvdyBiYWQgY29udmVyc2lvbnMuCgkoY2FuX2NvbnZlcnRfYXJnX2JhZCk6IE5ldyBmbi4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiB0eXBlY2suYyAoY29udmVydF9mb3JfYXNzaWdubWVudCk6IFVzZSBpdC4KCShwdHJfcmVhc29uYWJseV9zaW1pbGFyKTogQW55IHRhcmdldCB0eXBlIGlzIHNpbWlsYXIgdG8gdm9pZC4KCjIwMDEtMTAtMDggIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChDWFhfT0JKUyk6IEFkZGVkIGNwLWxhbmcuby4KCShjcC9jcC1sYW5nLm8pOiBOZXcgcnVsZS4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGhvb2tzLgoJKiB0cmVlLmM6IE1ha2UgaG9va3Mgbm9uLXN0YXRpYy4KCShpbml0X3RyZWUpOiBEb24ndCBpbml0aWFsaXplIGhvb2tzIGhlcmUuCgkqIGxleC5jOiBMaWtld2lzZS4gIE1vdmUgZGVmaW5pdGlvbiBvZiBsYW5nX2hvb2tzIHRvLi4uCgkqIGNwLWxhbmcuYzogLi4uIG5ldyBmaWxlLgoKMjAwMS0xMC0wOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmdfZGVjbF9mbGFncyk6IFJlbW92ZSBkZWNsYXJlZF9pbmxpbmUuCgkoREVDTF9ERUNMQVJFRF9JTkxJTkVfUCk6IFVzZSB0aGUgYml0IGluIHN0cnVjdCBjX2xhbmdfZGVjbC4KCjIwMDEtMTAtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeV9yZWYpOiBDb25zdC1pZnkuCgkqIGRlY2wuYyAocHJlZGVmaW5lZF9pZGVudGlmaWVyLAoJaW5pdGlhbGl6ZV9wcmVkZWZpbmVkX2lkZW50aWZpZXJzKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBMaWtld2lzZS4KCSogbGV4LmMgKGNwbHVzX3RyZWVfY29kZV90eXBlLCBjcGx1c190cmVlX2NvZGVfbGVuZ3RoLCByZXN3b3JkKToKCUxpa2V3aXNlLgoKMjAwMS0xMC0wNSAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBvcHRpbWl6ZS5jIChzdHJ1Y3QgaW5saW5lX2RhdGEpOiBNb3ZlZCB0byAuLi90cmVlLWlubGluZS5jLgoJKElOU05TX1BFUl9TVE1UKTogTGlrZXdpc2UuCgkocmVtYXBfZGVjbCwgcmVtYXBfYmxvY2ssIGNvcHlfc2NvcHlfc3RtdCwgY29weV9ib2R5X3IpOiBMaWtld2lzZS4KCShjb3B5X2JvZHksIGluaXRpYWxpemVfaW5saW5lZF9wYXJhbWV0ZXJzKTogTGlrZXdpc2UuCgkoZGVjbGFyZV9yZXR1cm5fdmFyaWFibGUsIGlubGluYWJsZV9mdW5jdGlvbl9wKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NhbGxfaW5saW5lLCBleHBhbmRfY2FsbHNfaW5saW5lKTogTGlrZXdpc2UuCgkob3B0aW1pemVfaW5saW5lX2NhbGxzLCBjbG9uZV9ib2R5KTogTGlrZXdpc2UuCgkqIHRyZWUuYyAod2Fsa190cmVlKTogTW92ZWQgdG8gLi4vdHJlZS1pbmxpbmUuYy4KCSh3YWxrX3RyZWVfd2l0aG91dF9kdXBsaWNhdGVzKTogTGlrZXdpc2UuCgkoY29weV90cmVlX3IsIHJlbWFwX3NhdmVfZXhwcik6IExpa2V3aXNlLgoKMjAwMS0xMC0wNCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGNwL2RlY2wubywgY3AvdHJlZS5vKTogRGVwZW5kIG9uIHRyZWUtaW5saW5lLmguCgkoY3AvcHQubywgY3Avc2VtYW50aWNzLm8sIGNwL29wdGltaXplLm8pOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChsYW5nX2RlY2wpOiBNb3ZlZCBpbmxpbmVkX2ZucyB0byB0cmVlX2RlY2wuCgkoVFJFRV9SRUFET05MWV9ERUNMX1AsIERFQ0xfSU5MSU5FRF9GTlMpOiBNb3ZlZCB0byAuLi90cmVlLmguCgkoZmxhZ19pbmxpbmVfdHJlZXMpOiBNb3ZlZCBkZWNsYXJhdGlvbiB0byAuLi90cmVlLWlubGluZS5oLgoJKHdhbGtfdHJlZSk6IE1vdmVkIGRlY2xhcmF0aW9uIHRvIC4uL3RyZWUtaW5saW5lLmguCgkod2Fsa190cmVlX3dpdGhvdXRfZHVwbGljYXRlcywgY29weV90cmVlX3IpOiBMaWtld2lzZS4KCShyZW1hcF9zYXZlX2V4cHIpOiBMaWtld2lzZS4KCSogZGVjbC5jOiBJbmNsdWRlIHRyZWUtaW5saW5lLmguCgkobGFuZ19tYXJrX3RyZWUpOiBEb24ndCBtYXJrIGlubGluZWRfZm5zLgoJKiBkZWNsMi5jIChmbGFnX2lubGluZV90cmVlcyk6IE1vdmVkIGRlZm4gdG8gLi4vdHJlZS1pbmxpbmUuYy4KCSogb3B0aW1pemUuYzogSW5jbHVkZSB0cmVlLWlubGluZS5oLgoJKG9wdGltaXplX2lubGluZV9jYWxscyk6IE1vdmUgZGVjbGFyYXRpb24gdG8gLi4vdHJlZS5oLCBhcwoJbm9uLXN0YXRpYy4KCShyZW1hcF9kZWNsKTogVXNlIGxhbmd1YWdlLWluZGVwZW5kZW50IGNvbnN0cnVjdHMgYW5kIGhvb2tzLgoJKHJlbWFwX2Jsb2NrLCBjb3B5X2JvZHlfciwgZGVjbGFyZV9yZXR1cm5fdmFyaWFibGUpOiBMaWtld2lzZS4KCShpbmxpbmFibGVfZnVuY3Rpb25fcCk6IExpa2V3aXNlLiAgRG9uJ3QgdGVzdCBmb3IKCURFQ0xfTEFOR19TUEVDSUZJQyBiZWZvcmUgREVDTF9JTkxJTkVEX0ZOUyBhcyBpbmxpbmVkX2ZucyBpcwoJbm8gbG9uZ2VyIGxhbmd1YWdlLXNwZWNpZmljLgoJKG9wdGltaXplX2lubGluZV9jYWxscyk6IExpa2V3aXNlLiAgTWFrZSBpdCBub24tc3RhdGljLiAgTW92ZWQKCWNhbGwgb2YgZHVtcF9mdW5jdGlvbiB0by4uLgoJKG9wdGltaXplX2Z1bmN0aW9uKTogSGVyZS4uLgoJKGNsb25lX2JvZHkpOiBOZXcgZnVuY3Rpb24sIGV4dHJhY3RlZCBmcm9tLi4uCgkobWF5YmVfY2xvbmVfYm9keSk6IC4uLiBoZXJlLiAgQnVpbGQgZGVjbF9tYXAgbG9jYWxseSBhbmQgcGFzcwoJaXQgb24gdG8gY2xvbmVfYm9keS4KCSogcHQuYywgc2VtYW50aWNzLmM6IEluY2x1ZGUgdHJlZS1pbmxpbmUuaC4KCSogdHJlZS5jOiBMaWtld2lzZS4KCShjcF93YWxrX3N1YnRyZWVzKTogTmV3IGxhbmd1YWdlLXNwZWNpZmljIGhvb2sgZm9yIHRyZWUgaW5saW5pbmcuCgkoY3BfY2Fubm90X2lubGluZV90cmVlX2ZuLCBjcF9hZGRfcGVuZGluZ19mbl9kZWNscywKCWNwX2lzX292ZXJsb2FkX3AsIGNwX2F1dG9fdmFyX2luX2ZuX3AsCgljcF9jb3B5X3Jlc19kZWNsX2Zvcl9pbmxpbmluZyk6IExpa2V3aXNlLgoJKHdhbGtfdHJlZSk6IE1vdmUgbGFuZ3VhZ2Utc3BlY2lmaWMgY29uc3RydWN0cyBpbnRvLi4uCgkoY3Bfd2Fsa19zdWJ0cmVlcyk6IHRoaXMgbmV3IGZ1bmN0aW9uLgoJKGNvcHlfdHJlZV9yKTogVXNlIGxhbmd1YWdlLWluZGVwZW5kZW50IGNvbnN0cnVjdHMgYW5kIGhvb2tzLgoJKGluaXRfdHJlZSk6IEluaXRpYWxpemUgdHJlZSBpbmxpbmluZyBob29rcy4KCShyZW1hcF9zYXZlX2V4cHIpOiBBZGp1c3QgcHJvdG90eXBlIHNvIHRoYXQgdGhlIGRlY2xhcmF0aW9uCglkb2VzIG5vdCByZXF1aXJlIHRoZSBkZWZpbml0aW9uIG9mIHNwbGF5X3RyZWUuCgoyMDAxLTEwLTAzICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogcnR0aS5jIChnZXRfdGluZm9fZGVjbCk6IENhbGwgdHlwZWluZm9faW5fbGliX3Agd2l0aCB0aGUgdHlwZSB1c2VkCgl0byBidWlsZCB0aGUgZGVjbGFyYXRpb24gaW5zdGVhZCBvZiB0aGUgZGVjbGFyYXRpb24gaXRzZWxmLgoKMjAwMS0xMC0wMiAgSmFzb24gTWVycmlsbCAgPGphc29uX21lcnJpbGxAcmVkaGF0LmNvbT4KCgkqIGRlY2wyLmMgKGN4eF9kZWNvZGVfb3B0aW9uKTogQWRkICdlbHNlJy4KCgkqIHNwZXcuYyAoZW5kX2lucHV0KTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBwYXJzZS55IChkYXRhZGVmKTogQWRkICJlcnJvciBFTkRfT0ZfU0FWRURfSU5QVVQiIGV4cGFuc2lvbi4KCjIwMDEtMTAtMDIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKSwgdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6CglQYXNzIHR5cGUgYXR0cmlidXRlcyB0byBjaGVja19mdW5jdGlvbl9mb3JtYXQgcmF0aGVyIHRoYW4gbmFtZSBvcgoJYXNzZW1ibGVyIG5hbWUuICBEb24ndCByZXF1aXJlIHRoZXJlIHRvIGJlIGEgbmFtZSBvciBhc3NlbWJsZXIKCW5hbWUgdG8gY2hlY2sgZm9ybWF0cy4KCjIwMDEtMTAtMDIgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBjYWxsCglpbml0X2Z1bmN0aW9uX2Zvcm1hdF9pbmZvLiAgSW5pdGlhbGl6ZSBsYW5nX2F0dHJpYnV0ZV90YWJsZQoJZWFybGllci4KCShidWlsdGluX2Z1bmN0aW9uKTogQ2FsbCBkZWNsX2F0dHJpYnV0ZXMuCgkoaW5zZXJ0X2RlZmF1bHRfYXR0cmlidXRlcyk6IE5ldy4KCjIwMDEtMTAtMDEgIEphc29uIE1lcnJpbGwgIDxqYXNvbl9tZXJyaWxsQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ29weSBhcnJheSB0eXBlZGVmIGhhbmRsaW5nIGZyb20gQwoJZnJvbnRlbmQuCgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ29weSB0b28tbGFyZ2UgYXJyYXkgaGFuZGxpbmcgZnJvbSBDCglmcm9udGVuZC4KCjIwMDEtMDktMjkgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogY29uZmlnLWxhbmcuaW4gKHRhcmdldF9saWJzKTogQWRkZWQgdGFyZ2V0LWdwZXJmLCBzbyB0aGF0IHdlCglkb24ndCB0cnkgdG8gYnVpbGQgaXQgaWYgQysrIGlzIGRpc2FibGVkLgoKMjAwMS0wOS0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX09CSlMpOiBUYWtlIG91dCBjcC9lcnJmbi5vLgoJKGNwL2VycmZuLm8pOiBEZWxldGUgcnVsZS4KCShjcC9lcnJvci5vKTogRGVwZW5kIG9uIGZsYWdzLmguCgkqIGVycmZuLmM6IERlbGV0ZSBmaWxlLgoJKiBjcC10cmVlLmg6IERlY2xhcmUgd2Fybl9kZXByZWNhdGVkLiAgUmVtb3ZlIGRlZmluaXRpb25zIG9mCglURkZfTkFNRVNQQUNFX1NDT1BFLCBURkZfQ0xBU1NfU0NPUEUsIFRGRl9DSEFTRV9OQU1FU1BBQ0VfQUxJQVMsCglhbmQgVEZGX1RFTVBMQVRFX0RFRkFVTFRfQVJHVU1FTlRTLiAjZGVmaW5lIGNwX2Vycm9yLCBjcF93YXJuaW5nLAoJY3BfcGVkd2FybiwgYW5kIGNwX2NvbXBpbGVyX2Vycm9yIHRvIGVycm9yLCB3YXJuaW5nLCBwZWR3YXJuLCBhbmQKCWludGVybmFsX2Vycm9yIHJlc3BlY3RpdmVseS4gIE1ha2UgY3BfZGVwcmVjYXRlZCBpbnRvIGEgbWFjcm8uCglEb24ndCBkZWZpbmUgY3BfcHJpbnRlciB0eXBlZGVmIG9yIGRlY2xhcmUgY3BfcHJpbnRlcnMuCgkqIGVycm9yLmM6IEluY2x1ZGUgZmxhZ3MuaC4KCURlbGV0ZTogc3RydWN0IHRyZWVfZm9ybWF0dGluZ19pbmZvLCBwcmludF9mdW5jdGlvbl9hcmd1bWVudF9saXN0LAoJcHJpbnRfZGVjbGFyYXRpb24sIHByaW50X2V4cHJlc3Npb24sIHByaW50X2Z1bmN0aW9uX2RlY2xhcmF0aW9uLAoJcHJpbnRfZnVuY3Rpb25fcGFyYW1ldGVyLCBwcmludF90eXBlX2lkLCBwcmludF9jdl9xdWFsaWZpZXJfc2VxLAoJcHJpbnRfdHlwZV9zcGVjaWZpZXJfc2VxLCBwcmludF9zaW1wbGVfdHlwZV9zcGVjaWZpZXIsCglwcmludF9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyLCBwcmludF9yZXN0X29mX2Fic3RyYWN0X2RlY2xhcmF0b3IsCglwcmludF9wYXJhbWV0ZXJfZGVjbGFyYXRpb25fY2xhdXNlLCBwcmludF9leGNlcHRpb25fc3BlY2lmaWNhdGlvbiwKCXByaW50X25lc3RlZF9uYW1lX3NwZWNpZmllciwgYW5kIGRlZmluaXRpb24gb2YgY3BfcHJpbnRlcnMuCgkobG9jYXRlX2Vycm9yKTogTmV3IGZ1bmN0aW9uLgoJKGNwX2Vycm9yX2F0LCBjcF93YXJuaW5nX2F0LCBjcF9wZWR3YXJuX2F0KTogTW92ZWQgaGVyZSBhbmQKCXJld3JpdHRlbiBpbiB0ZXJtcyBvZiBsb2NhdGVfZXJyb3IgYW5kIGRpYWdub3N0aWMuYy4KCShjcF90cmVlX3ByaW50ZXIpOiBSZW5hbWUgY3BfcHJpbnRlcjsgd2lyZSB1cCB0byAqX3RvX3N0cmluZwoJaW5zdGVhZCBvZiBkZWxldGVkIHByaW50Xyogcm91dGluZXMuICBIYW5kbGUgJUMsICVMLCAlTywgJVEgYWxzby4KCShpbml0X2Vycm9yKTogQWRqdXN0IHRvIG1hdGNoLgoKU2F0IFNlcCAyMiAwOToxNTozMSAyMDAxICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogTWFrZS1sYW5nLmluIChDWFhfQ19PQkpTKTogQWRkIGF0dHJpYnMuby4KCjIwMDEtMDktMjEgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jIChzZXRfdmluZGV4KTogTWluZCBUQVJHRVRfVlRBQkxFX1VTRVNfREVTQ1JJUFRPUlMuCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IExpa2V3aXNlLgoJKGJ1aWxkX3Zmbl9yZWYpOiBOZXcuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBVc2UgaXQuCgkqIGRlY2wyLmMgKG1hcmtfdnRhYmxlX2VudHJpZXMpOiBNYXJrIEZERVNDX0VYUFIuCgkqIHR5cGVjay5jIChnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IE1pbmQgZGVzY3JpcHRvcnMuCgpGcmkgU2VwIDIxIDA4OjE2OjE5IDIwMDEgIEoib3JuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVXNlIEMgc3ludGF4IGZvciBhdHRyX2ZsYWdzIGRlY2xhcmF0aW9uLgoKMjAwMS0wOS0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCVRhYmxlLWRyaXZlbiBhdHRyaWJ1dGVzLgoJKiBkZWNsLmM6IFJlbmFtZSBERUNMX01BQ0hJTkVfQVRUUklCVVRFUyB0byBERUNMX0FUVFJJQlVURVMuCgkqIGRlY2wyLmMgKGNwbHVzX2RlY2xfYXR0cmlidXRlcyk6IE9ubHkgdGFrZSBvbmUgYXR0cmlidXRlcwoJcGFyYW1ldGVyLgoJKiBjcC10cmVlLmMgKGNwbHVzX2RlY2xfYXR0cmlidXRlcyk6IFVwZGF0ZSBwcm90b3R5cGUuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3QpLCBkZWNsLmMgKHN0YXJ0X2RlY2wsIHN0YXJ0X2Z1bmN0aW9uKSwKCWRlY2wyLmMgKGdyb2tmaWVsZCksIGZyaWVuZC5jIChkb19mcmllbmQpLCBwYXJzZS55CgkocGFyc2VfYml0ZmllbGQpOiBVcGRhdGUgY2FsbHMgdG8gY3BsdXNfZGVjbF9hdHRyaWJ1dGVzLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogVGFrZSBhIHBvaW50ZXIgdG8gYSBzaW5nbGUgb3JkaW5hcnkKCWF0dHJpYnV0ZSBsaXN0LgoJKiBkZWNsLmggKGdyb2tkZWNsYXJhdG9yKTogVXBkYXRlIHByb3RvdHlwZS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogVGFrZSBhIHNpbmdsZSBvcmRpbmFyeSBhdHRyaWJ1dGUgbGlzdC4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHNoYWRvd190YWcsIGdyb2t0eXBlbmFtZSwgc3RhcnRfZGVjbCwKCXN0YXJ0X2hhbmRsZXJfcGFybXMsIGdyb2tkZWNsYXJhdG9yLCBncm9rcGFybXMsIHN0YXJ0X2Z1bmN0aW9uLAoJc3RhcnRfbWV0aG9kKSwgZGVjbDIuYyAoZ3Jva2ZpZWxkLCBncm9rYml0ZmllbGQsIGdyb2tvcHR5cGVuYW1lKSwKCXBhcnNlLnkgKHBhcnNlX2ZpZWxkLCBwYXJzZV9iaXRmaWVsZCwgY29tcG9uZW50X2RlY2xfMSksIHB0LmMKCShwcm9jZXNzX3RlbXBsYXRlX3Bhcm0sIGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IFBhc3Mgc2luZ2xlCglvcmRpbmFyeSBhdHRyaWJ1dGUgbGlzdHMgYXJvdW5kLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ29ycmVjdCBoYW5kbGluZyBvZiBuZXN0ZWQgYXR0cmlidXRlcy4KCVJldmVydCB0aGUgcGF0Y2gKCTE5OTgtMTAtMTggIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCQkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBFbWJlZGRlZCBhdHRycyBiaW5kIHRvIHRoZSByaWdodCwKCQlub3QgdGhlIGxlZnQuCgkuCgkqIGNwLXRyZWUuaCAoY3BfdmFsaWRfbGFuZ19hdHRyaWJ1dGUpOiBSZW1vdmUgZGVjbGFyYXRpb24KCShjcF9hdHRyaWJ1dGVfdGFibGUpOiBEZWNsYXJlLgoJKiBkZWNsLmMgKHZhbGlkX2xhbmdfYXR0cmlidXRlKTogRG9uJ3QgZGVmaW5lLgoJKGxhbmdfYXR0cmlidXRlX3RhYmxlKTogRGVmaW5lLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBsYW5nX2F0dHJpYnV0ZV90YWJsZSBpbnN0ZWFkIG9mCgl2YWxpZF9sYW5nX2F0dHJpYnV0ZS4KCSogdHJlZS5jIChjcF92YWxpZF9sYW5nX2F0dHJpYnV0ZSk6IFJlbW92ZS4KCShoYW5kbGVfamF2YV9pbnRlcmZhY2VfYXR0cmlidXRlLCBoYW5kbGVfY29tX2ludGVyZmFjZV9hdHRyaWJ1dGUsCgloYW5kbGVfaW5pdF9wcmlvcml0eV9hdHRyaWJ1dGUpOiBOZXcgZnVuY3Rpb25zLgoJKGNwX2F0dHJpYnV0ZV90YWJsZSk6IE5ldyBhcnJheS4KCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9jbGFzcyk6IERvbid0IHVzZQoJdGFyZ2V0bS52YWxpZF90eXBlX2F0dHJpYnV0ZS4KCjIwMDEtMDktMTUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAbWVybGluLmNvZGVzb3VyY2VyeS5jb20+CgoJCSogTWFrZS1sYW5nLmluIChjcC9lcnJvci5vKTogRGVwZW5kIG9uIHJlYWwuaAoJCSogZXJyb3IuYzogI2luY2x1ZGUgInJlYWwuaCIKCjIwMDEtMDktMTUgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1hbmdsZS5jIChtYW5nbGVfY29udl9vcF9uYW1lX2Zvcl90eXBlKTogVXNlIGNvbmNhdCBpbiBsaWV1IG9mCgl4bWFsbG9jL3N0cmNweS9zdHJjYXQuCgoyMDAxLTA5LTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZWNsLmMgKHdhcm5fZXh0ZXJuX3JlZGVjbGFyZWRfc3RhdGljLCBjcF9tYWtlX2ZuYW1lX2RlY2wpOgoJQ29uc3QtaWZpY2F0aW9uLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IExpa2V3aXNlLgoKMjAwMS0wOS0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVjbDIuYyAobGFuZ19mX29wdGlvbnMpOiBDb25zdC1pZmljYXRpb24uCgkqIGxleC5jIChjcGx1c190cmVlX2NvZGVfbmFtZSk6IExpa2V3aXNlLgoJKiBzcGV3LmMgKHl5ZXJyb3IpOiBMaWtld2lzZS4KCjIwMDEtMDktMDYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzM5ODYKCSogY2xhc3MuYyAoZm9yY2VfY2Fub25pY2FsX2JpbmZvX3IpOiBDaGVjayAmIG1vdmUgYW4gaW5kaXJlY3QKCXByaW1hcnkgYmFzZSBmaXJzdC4KCShmb3JjZV9jYW5vbmljYWxfYmluZm8pOiBDaGVjayB0aGF0IGl0J3Mgbm90IGFscmVhZHkKCWNhbm9uaWNhbC4KCShtYXJrX3ByaW1hcnlfdmlydHVhbF9iYXNlKTogUmVtb3ZlIEJJTkZPIHBhcmFtZXRlci4KCShtYXJrX3ByaW1hcnlfYmFzZXMpOiBBZGp1c3QsIHNldCBCSU5GT19MT1NUX1BSSU1BUllfUCBoZXJlLgoKMjAwMS0wOS0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglSZW1vdmUgVFlQRV9OT05DT1BJRURfUEFSVFMuCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX0lOTElORV9GUklFTkRTKTogTWFwIG9udG8KCUNMQVNTVFlQRV9QVVJFX1ZJUlRVQUxTLgoJKFRZUEVfUkFJU0VTX0VYQ0VQVElPTlMpOiBNYXAgb250byBUWVBFX0JJTkZPLgoJKiBjbGFzcy5jIChkdXBsaWNhdGVfdGFnX2Vycm9yKTogUmVtb3ZlIFRZUEVfTk9OQ09QSUVEX1BBUlRTLgoJKGxheW91dF9jbGFzc190eXBlKTogRG9uJ3QgY2FsbCBmaXh1cF9pbmxpbmVfbWV0aG9kcyBoZXJlIC4uLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IC4uLiBjYWxsIGl0IGhlcmUuCgoyMDAxLTA5LTA0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBSZW1vdmUgY29kZSBkZWFkbGluZyB3aXRoCglERUNMX1NBVkVEX0lOU05TLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IERvbid0IGRlZmVyIGxvY2FsIGZ1bmN0aW9ucyBpZgoJdGhleSB3b3VsZG4ndCBiZSBkZWZlcnJlZCBmb3Igc29tZSBvdGhlciByZWFzb24uICBEb24ndAoJZ2VuZXJhdGUgUlRMIGZvciBmdW5jdGlvbnMgdGhhdCB3aWxsIG5vdCBiZSBlbWl0dGVkLgoJKGdlbnJ0bF9zdGFydF9mdW5jdGlvbik6IFJlbW92ZSBjb2RlIGRlYWRsaW5nIHdpdGgKCURFQ0xfU0FWRURfSU5TTlMuCgkoZ2VucnRsX2ZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoKMjAwMS0wOS0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvNDIwMwoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IERvIG5vdCBvcHRpbWl6ZSBhbnkgZW1wdHkgYmFzZQoJY29uc3RydWN0aW9uLgoKMjAwMS0wOC0zMSAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBlcnJvci5jIChkdW1wX3RlbXBsYXRlX2RlY2wpOiBPdXRwdXQgdGVtcGxhdGUgcGFyYW1ldGVycwoJdG9nZXRoZXIgd2l0aCB0aGVpciBzcGVjaWZpZXJzLgoJT3V0cHV0IGBjbGFzcycgcHJlZml4IGZvciB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCgkoZHVtcF9kZWNsKTogRml4IGZvcm1hdHRpbmcuCgoyMDAxLTA4LTMwICBLdXJ0IEdhcmxvZmYgIDxnYXJsb2ZmQHN1c2UuZGU+CgoJKiBvcHRpbWl6ZS5jIChpbmxpbmFibGVfZnVuY3Rpb25fcCk6IEFsbG93IG9ubHkgc21hbGxlciBzaW5nbGUKCWZ1bmN0aW9ucy4gSGFsdmUgaW5saW5lIGxpbWl0IGFmdGVyIHJlYWNoaW5nIHJlY3Vyc2l2ZSBsaW1pdC4KCjIwMDEtMDgtMzAgIEpvZXJuIFJlbm5lY2tlIDxhbXlsYWFyQHJlZGhhdC5jb20+CgkgICAgSmFzb24gTWVycmlsbCAgPGphc29uX21lcnJpbGxAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeV9yZWYpOiBTdWJ0cmFjdCBpbiBjaGFyKiwgbm90CglwdHJkaWZmX3QuCgoyMDAxLTA4LTIzICBKYXNvbiBNZXJyaWxsICA8amFzb25fbWVycmlsbEByZWRoYXQuY29tPgoKCSogdHJlZS5jIChjcF9idWlsZF9xdWFsaWZpZWRfdHlwZV9yZWFsKTogVXNlIGdldF9xdWFsaWZpZWRfdHlwZS4KCShidWlsZF9jcGx1c19hcnJheV90eXBlKTogVXNlIGNwX2J1aWxkX3F1YWxpZmllZF90eXBlLCBub3QKCVRZUEVfTUFJTl9WQVJJQU5ULCB0byBnZXQgYW4gdW5xdWFsaWZpZWQgdmVyc2lvbi4KCgkqIGRlY2wyLmMgKGdyb2tfYWxpZ25vZik6IExvc2UuCgkoYnVpbGRfZXhwcl9mcm9tX3RyZWUpOiBVc2UgZXhwcl9zaXplb2YgYW5kIGNfYWxpZ25vZl9leHByLgoJKiB0eXBlY2suYyAoY19hbGlnbm9mKTogTG9zZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9zaXplb2YsIGZpbmlzaF9hbGlnbm9mKTogTmV3LgoJKiBwYXJzZS55OiBVc2UgdGhlbS4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIHRoZW0uCgoyMDAxLTA4LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25fbWVycmlsbEByZWRoYXQuY29tPgoKCSogcHQuYyAodHN1YnN0X2V4cHIpOiBIYW5kIG9mZiB0byB0aGUgVFJFRV9DSEFJTiBvZiBhIHN0YXRlbWVudC4KCURvbid0IGxvb3AgaW4gQ09NUE9VTkRfU1RNVCwgRk9SX1NUTVQgb3IgVFJZX0JMT0NLLgoJKiB0cmVlLmMgKGNwX3N0YXRlbWVudF9jb2RlX3ApOiBBIFRBR19ERUZOIGlzIGEgc3RhdGVtZW50LgoKMjAwMS0wOC0xOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiB0eXBlY2syLmMgKGFkZF9leGNlcHRpb25fc3BlY2lmaWVyKTogT25seSByZXF1aXJlIGNvbXBsZXRlIHR5cGUgaWYKCW5vdCBpbiBwcm9jZXNzaW5nIHRlbXBsYXRlIGRlY2xhcmF0aW9uLgoKMjAwMS0wOC0xOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVjbC5jOiBDYXN0IGFyZ3VtZW50IHRvIHNpemVfdCwgbm90IEhPU1RfV0lERV9JTlQsIGluIGNhbGxzIHRvCglHTlVfeHJlZl9zdGFydF9zY29wZSBhbmQgR05VX3hyZWZfZW5kX3Njb3BlLgoKCSogdHJlZS5jIChUWVBFX0hBU0gpOiBNb3ZlZCB0byAuLi90cmVlLmguCgoyMDAxLTA4LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3Z0LmMgKGNvbnZlcnRfdG9fdm9pZCk6IFByZXNlcnZlIFRSRUVfU0lERV9FRkZFQ1RTCglvbiBDT01QT1VORF9FWFBScy4KCjIwMDEtMDgtMTQgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBjbGFzcy5jLCBjcC10cmVlLmggKGJ1aWxkX3Zmbl9yZWYpOiBSZW1vdmUuCgkqIGNhbGwuYywgcnR0aS5jOiBSZXBsYWNlIGFsbCByZWZlcm5jZXMgd2l0aCBidWlsZF92dGJsX3JlZi4KCjIwMDEtMDgtMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IE1hcmsgQ09NUE9VTkRfRVhQUnMgZ2VuZXJhdGVkIGZvcgoJZW1wdHkgY2xhc3MgYXNzaWdubWVudCBhcyBoYXZpbmcgc2lkZS1lZmZlY3RzIHRvIGF2b2lkCglzcHVyaW91cyB3YXJuaW5ncy4KCjIwMDEtMDgtMTMgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BwYW5peC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGNwL2V4Y2VwdC5vKTogQWRkIGxpYmZ1bmNzLmggdG8gZGVwZW5kZW5jaWVzLgoJKiBleGNlcHQuYzogSW5jbHVkZSBsaWJmdW5jcy5oLgoKMjAwMS0wOC0xMSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBtZXJsaW4uY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBDbGFyaWZ5IGRpYWdub3N0aWMgbWVzc2FnZS4KCjIwMDEtMDgtMTMgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogZGVjbDIuYyAoZG9fbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBSZXBsYWNlIHVzaW5nIGRpcmVjdGl2ZQoJd2l0aCB1c2luZyBkZWNsYXJhdGlvbiBpbiB0aGUgZXJyb3IgbWVzc2FnZS4KCjIwMDEtMDgtMTEgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogcHQuYyAobWF5YmVfZm9sZF9ub250eXBlX2FyZyk6IFVzZSBUUkVFX1RZUEUgb2YgQVJHIGFzIHRoZQoJY3JpdGVyaW9uIHRvIGF2b2lkIHJlYnVpbGRpbmcgZXhwcmVzc2lvbiB0cmVlIGluc3RlYWQgb2YKCXByb2Nlc3NpbmdfdGVtcGxhdGVfZGVjbC4KCjIwMDEtMDgtMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbl9tZXJyaWxsQHJlZGhhdC5jb20+CgoJU3VwcG9ydCBuYW1lZCByZXR1cm4gdmFsdWUgb3B0aW1pemF0aW9uIGZvciBpbmxpbmVzLCB0b28uCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogTnVsbGlmeSByZXR1cm5zIGhlcmUuCgkqIHNlbWFudGljcy5jIChnZW5ydGxfc3RhcnRfZnVuY3Rpb24pOiBOb3QgaGVyZS4KCShjcF9leHBhbmRfc3RtdCk6IERvbid0IG1lc3Mgd2l0aCBDTEVBTlVQX1NUTVRzLgoJKG51bGxpZnlfcmV0dXJuc19yKTogTm8gbG9uZ2VyIHN0YXRpYy4gIEp1c3QgY2xlYXIgUkVUVVJOX0VYUFIuCglBbHNvIG51bGxpZnkgdGhlIENMRUFOVVBfU1RNVCBmb3IgdGhlIG5ydi4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBvcHRpbWl6ZS5jIChkZWNsYXJlX3JldHVybl92YXJpYWJsZSk6IFJlcGxhY2UgdGhlIG5ydiB3aXRoIHRoZQoJcmV0dXJuIHZhcmlhYmxlLgoJKiB0eXBlY2suYyAoY2hlY2tfcmV0dXJuX2V4cHIpOiBCZSBtb3JlIGZsZXhpYmxlIG9uIGFsaWdubWVudCBjaGVjay4KCUlnbm9yZSBjdi1xdWFscyB3aGVuIGNoZWNraW5nIGZvciBhIG1hdGNoaW5nIHR5cGUuCgoyMDAxLTA4LTA5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX29iamVjdHMpOiBVc2UgdGFyZ2V0IGhvb2tzIGluc3RlYWQgb2YKCWFzc2VtYmxlX2NvbnN0cnVjdG9yIGFuZCBhc3NlbWJsZV9kZXN0cnVjdG9yLgoKMjAwMS0wOC0wOCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGcrK3NwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBRdW90ZSBhcmd1bWVudCBhZnRlciBgLVhsaW5rZXInLgoKMjAwMS0wOC0wNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzgyMAoJU3RvcCB1c2luZyBUWVBFX05PTkNPUElFRF9QQVJUUy4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBCZSBjYXJlZnVsIHdoZW4gY29weSBjb25zdHJ1Y3RpbmcKCW9yIGFzc2lnbmluZyB0byBhbiBlbXB0eSBjbGFzcy4KCSogY2xhc3MuYyAoY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMpOiBJdCBoYXMgYQoJQ09NUExFWF9BU1NJR05fUkVGIGlmIGl0IGhhcyBhIHZwdHIuCgkobGF5b3V0X2NsYXNzX3R5cGUpOiBEb24ndCBhZGQgZW1wdHkgY2xhc3MgcGFkZGluZyB0bwoJVFlQRV9OT05DT1BJRURfUEFSVFMuCgkoZmluaXNoX3N0cnVjdF8xKTogRG9uJ3QgYWRkIHRoZSBWRklFTEQgZWl0aGVyLgoJKiBjcC10cmVlLmggKFRZUEVfSEFTX1RSSVZJQUxfSU5JVF9SRUYpOiBNZW50aW9uIF9jb3B5XwoJaW5pdGlhbGl6YXRpb24uCgoyMDAxLTA4LTA3ICBKYXNvbiBNZXJyaWxsICA8amFzb25fbWVycmlsbEByZWRoYXQuY29tPgoKCSogdHJlZS5jICh3YWxrX3RyZWUpOiBXYWxrIHNpYmxpbmdzIGV2ZW4gaWYgIXdhbGtfc3VidHJlZXMuCgoyMDAxLTA4LTA2ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX29iamVjdHMpOiBQYXNzIGEgc3ltYm9sX3JlZiBhbmQgcHJpb3JpdHkgdG8KCWFzc2VtYmxlX3tjb25zdHJ1Y3RvcixkZXN0cnVjdG9yfS4gIFJlbW92ZSBwcmlvcml0eSBoYW5kbGluZy4KCjIwMDEtMDgtMDUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAbWVybGluLmNvZGVzb3VyY2VyeS5jb20+CgoJRG9uJ3QgYWxsb3cgdGVtcGxhdGUtaWQgaW4gdXNpbmctZGVjbGFyYXRpb24uCgkqIGRlY2wyLmMgKHZhbGlkYXRlX25vbm1lbWJlcl91c2luZ19kZWNsKTogSGFuZGxlIHRlbXBsYXRlLWlkcy4KCShkb19jbGFzc191c2luZ19kZWNsKTogTGlrZXdpc2UuCgoyMDAxLTA4LTA0ICBOZWlsIEJvb3RoICA8bmVpbEBjYXQuZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogY3Avc3Bldy5jIChyZWFkX3Rva2VuKTogTm8gbmVlZCB0byBwb3AgYnVmZmVycy4KCjIwMDEtMDgtMDIgIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJKiBjcC10cmVlLmggKEZOQUREUl9GUk9NX1ZUQUJMRV9FTlRSWSk6IFJlbW92ZSwgbm8gbG9uZ2VyIHVzZWQuCgkoZm5hZGRyX2Zyb21fdnRhYmxlX2VudHJ5KTogUmVtb3ZlIGRlY2wuCgkqIG1ldGhvZC5jICh1c2VfdGh1bmspOiBVcGRhdGUgY29tbWVudC4KCjIwMDEtMDgtMDEgIEFuZHJldyBDYWduZXkgIDxhYzEzMTMxM0ByZWRoYXQuY29tPgoKCSogcmVwby5jIChnZXRfYmFzZV9maWxlbmFtZSk6IENoYW5nZSByZXR1cm4gdmFsdWUgdG8gY29uc3QgY2hhcgoJcG9pbnRlci4KCjIwMDEtMDgtMDIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJS2lsbCAtZmhvbm9yLXN0ZC4KCSogTkVXUzogRG9jdW1lbnQuCgkqIGNwLXRyZWUuaCAoZmxhZ19ob25vcl9zdGQpOiBSZW1vdmUuCgkoQ1BUSV9GQUtFX1NURCk6IFJlbW92ZS4KCShzdGRfbm9kZSk6IFJlbW92ZSBjb21tZW50IGFib3V0IGl0IGJlaW5nIE5VTEwuCgkoZmFrZV9zdGRfbm9kZSk6IFJlbW92ZS4KCSogZGVjbC5jIChpbl9mYWtlX3N0ZCk6IFJlbW92ZS4KCSh3YWxrX25hbWVzcGFjZXNfcik6IFJlbW92ZSBmYWtlX3N0ZF9ub2RlIGNoZWNrLgoJKHB1c2hfbmFtZXNwYWNlKTogUmVtb3ZlIGluX2Zha2Vfc3RkIGNvZGUuCgkocG9wX25hbWVzcGFjZSk6IExpa2V3aXNlLgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBSZW1vdmUgZmFrZV9zdGRfbm9kZSBjaGVjay4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFsd2F5cyBjcmVhdGUgc3RkX25vZGUuIEFsd2F5cyBhZGQKCXN0ZDo6IHRoaW5ncyB0aGVyZS4KCShidWlsdGluX2Z1bmN0aW9uKTogQWx3YXlzIHB1dCBub24gJ18nIGZucyBpbiBzdGQuCgkqIGRlY2wyLmMgKGZsYWdfaG9ub3Jfc3RkKTogUmVtb3ZlLgoJKGxhbmdfZl9vcHRpb25zKTogUmVtb3ZlIGhvbm9yLXN0ZC4KCSh1bnN1cHBvcnRlZF9vcHRpb25zKTogQWRkIGhvbm9yLXN0ZC4KCShzZXRfZGVjbF9uYW1lc3BhY2UpOiBSZW1vdmUgZmFrZV9zdGRfbm9kZSBjaGVjay4KCSh2YWxpZGF0ZV9ub25tZW1iZXJfdXNpbmdfZGVjbCk6IExpa2V3aXNlLgoJKGRvX3VzaW5nX2RpcmVjdGl2ZSk6IExpa2V3aXNlLgoJKGhhbmRsZV9jbGFzc19oZWFkKTogTGlrZXdpc2UuCgkqIGR1bXAuYyAoY3BfZHVtcF90cmVlKTogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jIChpbml0X2V4Y2VwdGlvbl9wcm9jZXNzaW5nKTogQWRqdXN0LgoJKiBpbml0LmMgKGJ1aWxkX21lbWJlcl9jYWxsKTogUmVtb3ZlIGZha2Vfc3RkX25vZGUgY2hlY2suCgkoYnVpbGRfb2Zmc2V0X3JlZik6IExpa2V3aXNlLgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlIC1maG9ub3Itc3RkLCAtZm5vLWhvbm9yLXN0ZC4KCSogcnR0aS5jIChpbml0X3J0dGlfcHJvY2Vzc2luZyk6IEFkanVzdC4KCjIwMDEtMDctMzEgIEFsZXhhbmRyZSBQZXRpdC1CaWFuY28gIDxhcGJpYW5jb0ByZWRoYXQuY29tPgoKCSogdHJlZS5jIChjcF90cmVlX2VxdWFsKTogV0lUSF9DTEVBTlVQX0VYUFIgbm9kZSB0byB1c2UgaXRzIHNlY29uZAoJb3BlcmFuZCB3aGlsZSBjYWxsaW5nIGNwX3RyZWVfZXF1YWwuCgoyMDAxLTA3LTMxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVRoZSAzLjAgQUJJIG5vIGxvbmdlciBoYXMgdmJhc2UgcG9pbnRlciBmaWVsZHMuCgkqIGNwLXRyZWUuaCAoVkJBU0VfTkFNRSwgVkJBU0VfTkFNRV9GT1JNQVQsIFZCQVNFX05BTUVfUCwKCUZPUk1BVF9WQkFTRV9OQU1FKTogUmVtb3ZlLgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IEFkanVzdC4KCShkb19idWlsZF9hc3NpZ25fcmVmKTogQWRqdXN0LgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkX3IpOiBBZGp1c3QuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogQWRqdXN0LgoKCVRoZSAzLjAgQUJJIGFsd2F5cyBoYXMgYSB2dGFibGUgcG9pbnRlciBhdCB0aGUgc3RhcnQgb2YgZXZlcnkKCXBvbHltb3JwaGljIGNsYXNzLgoJKiBydHRpLmMgKGJ1aWxkX2hlYWRvZl9zdWIpOiBSZW1vdmUuCgkoYnVpbGRfaGVhZG9mKTogQWRqdXN0LgoJKGdldF90aW5mb19kZWNsX2R5bmFtaWMpOiBObyBuZWVkIHRvIGNoZWNrIGZsYWdfcnR0aQoJaGVyZS4gQWRqdXN0LgoJKGNyZWF0ZV9yZWFsX3RpbmZvX3Zhcik6IEV4cGxhaW4gd2h5IHdlIG5lZWQgYSBoaWRkZW4gbmFtZS4KCjIwMDEtMDctMzEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzM2MzEKCSogY2xhc3MuYyAodXBkYXRlX3Z0YWJsZV9lbnRyeV9mb3JfZm4pOiBUaGUgZml4ZWQgYWRqdXN0bWVudAoJb2YgYSB2aXJ0dWFsIHRodW5rIHNob3VsZCBiZSBmcm9tIGRlY2xhcmluZyBiYXNlLgoKMjAwMS0wNy0zMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGRmc19jdG9yX3Z0YWJsZV9iYXNlc19xdWV1ZV9wKTogQWx3YXlzIHdhbGsgaW50bwoJdGhlIHNoYXJlZCB2aXJ0dWFsIGJhc2UsIHNvIHByZXNlcnZpbmcgaW5oZXJpdGFuY2UgZ3JhcGggb3JkZXIuCgoyMDAxLTA3LTMwICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBkZWNsMi5jOiBSZW1vdmUgdW51c2VkIHZhciBnbG9iYWxfdGVtcF9uYW1lX2NvdW50ZXIuCgoyMDAxLTA3LTI4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogbWV0aG9kLmMgKHBlbmRpbmdfaW5saW5lcyk6IFJlbW92ZS4KCjIwMDEtMDctMjcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChtYXJrX3ByaW1hcnlfdmlydHVhbF9iYXNlKTogRG9uJ3QgYWRqdXN0IGJhc2UKCW9mZnNldHMgaGVyZS4KCShkZnNfdW5zaGFyZWRfdmlydHVhbF9iYXNlcyk6IEFkanVzdCB0aGVtIGhlcmUuCgkobWFya19wcmltYXJ5X2Jhc2VzKTogRXhwbGFpbiB3aHkgd2UgYWRqdXN0IGF0IHRoZSBlbmQuCgoyMDAxLTA3LTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF8xKTogV2hlbiBjb3B5aW5nIHRoZSBwcmltYXJ5IGJhc2UncwoJVkZJRUxELCBtYWtlIHN1cmUgd2UgZmluZCBpdCBpcyBhdCBvZmZzZXQgemVyby4KCjIwMDEtMDctMjYgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogcHQuYyAodHN1YnN0X3RlbXBsYXRlX3Bhcm1zKTogQ2FsbCBtYXliZV9mb2xkX25vbnR5cGVfYXJnIGFuZAoJdHN1YnN0X2V4cHIgZm9yIGRlZmF1bHQgdGVtcGxhdGUgYXJndW1lbnRzLgoKMjAwMS0wNy0yNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzYyMQoJKiBzcGV3LmMgKHl5bGV4KTogT25seSBjb3B5IHRoZSB0b2tlbidzIGxpbmVubywgaWYgaXQgaXMKCW5vbi16ZXJvLgoKMjAwMS0wNy0yNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzYyNAoJKiBjYWxsLmMgKHJlc29sdmVfYXJncyk6IFNpbXBsaWZ5LCBjYWxsCgljb252ZXJ0X2Zyb21fcmVmZXJlbmNlLgoJKGJ1aWxkX25ld19vcCk6IFJlc29sdmUgYW5kIGNvbnZlcnQgZnJvbSByZWZlcmVuY2UgQVJHMQoJZWFybGllci4gQWRqdXN0IEFSRzIgJiBBUkczIHJlc29sdmUgYW5kIGNvbnZlcnNpb24uCgoyMDAxLTA3LTI2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChsYXN0X2Z1bmN0aW9uX3Bhcm1fdGFncyk6IFJlbW92ZS4KCShjdXJyZW50X2Z1bmN0aW9uX3Bhcm1fdGFncyk6IFJlbW92ZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkanVzdC4KCShzdGFydF9mdW5jdGlvbik6IEFkanVzdC4KCShzdG9yZV9wYXJtX2RlY2xzKTogQWRqdXN0LgoKCVBSIGMrKy8zMTUyCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEZXRlY3Qgd2hlbiBhIGZ1bmN0aW9uIHR5cGVkZWYgaXMKCWRlY2xhcmluZyBhIGZ1bmN0aW9uLCBhbmQgY3JlYXRlIGxhc3RfZnVuY3Rpb25fcGFybXMgY29ycmVjdGx5LgoKMjAwMS0wNy0yNSAgSmFzb24gTWVycmlsbCAgPGphc29uX21lcnJpbGxAcmVkaGF0LmNvbT4KCgkqIGNhbGwuYyAoam91c3QpOiBPbmx5IHByZWZlciBhIG5vbi1idWlsdGluIGNhbmRpZGF0ZSB0byBhIGJ1aWx0aW4KCW9uZSBpZiB0aGV5IGhhdmUgdGhlIHNhbWUgc2lnbmF0dXJlLgoKCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IFRha2UgREVDTCBwYXJtLiAgQ2hlY2sgVFJFRV9TVEFUSUMgb24KCWl0IHJhdGhlciB0aGFuIHRvcGxldmVsX2JpbmRpbmdzX3AuICBHaXZlIGl0IGEgbWFuZ2xlZCBuYW1lIGlmIHN0YXRpYy4KCShjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IEFkanVzdC4KCSogZGVjbDIuYyAoZ2V0X3RlbXBfbmFtZSk6IExvc2UuCgkqIG1hbmdsZS5jIChtYW5nbGVfcmVmX2luaXRfdmFyaWFibGUpOiBOZXcgZm4uCgkobWFuZ2xlX2d1YXJkX3ZhcmlhYmxlKTogU3RyaXAgdGhlIHJlZi1pbml0IGhlYWRlci4KCSogY3AtdHJlZS5oOiBBZGp1c3QuCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBBZGQgdGhlIERFQ0xfU1RNVCBhZnRlciBwcm9jZXNzaW5nIHRoZQoJaW5pdGlhbGl6ZXIuCgkoZ3Jva19yZWZlcmVuY2VfaW5pdCk6IEFsd2F5cyB1c2UgREVDTF9JTklUSUFMLgoKMjAwMS0wNy0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMzQxNgoJKiBjYWxsLmMgKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBSZWNoZWNrIGFyZ3MgYWZ0ZXIKCWNvbnZlcnNpb25zLgoJKiBjcC10cmVlLmggKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBNb3ZlIHRvIGNvcnJlY3QgZmlsZS4KCSogdHlwZWNrLmMgKGRlY2F5X2NvbnZlcnNpb24pOiBEaWFnbm9zZSBhbnkgdW5rbm93biB0eXBlcwoJcmVhY2hpbmcgaGVyZS4KCShidWlsZF9iaW5hcnlfb3ApOiBEb24ndCBkbyBpbml0aWFsIGRlY2F5IG9yIGRlZmF1bHQKCWNvbnZlcnNpb25zIG9uIG92ZXJsb2FkZWQgZnVuY3Rpb25zLgoJKGJ1aWxkX3N0YXRpY19jYXN0KTogRG9uJ3QgZG8gYSBkZWNheSBjb252ZXJzaW9uIGhlcmUuCgoyMDAxLTA3LTI1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy8zNTQzCgkqIHR5cGVjay5jIChjb25kaXRpb25fY29udmVyc2lvbik6IFJlc29sdmUgYW4gT0ZGU0VUX1JFRi4KCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IEFuIE9GRlNFVF9SRUYgc2hvdWxkIG5ldmVyIGdldCBoZXJlLgoKMjAwMS0wNy0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0Ymxfb3JfdmJhc2VfZmllbGQpOiBSZW1vdmUsIG1vdmUgaW50byAuLi4KCShjcmVhdGVfdnRibF9wdHIpOiAuLi4gaGVyZS4KCjIwMDEtMDctMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9vZmZzZXRfdmJ0bF9lbnRyaWVzKTogTG9vayBmb3IKCW5vbi1wcmltYXJ5IGJhc2Ugb2Ygd2hpY2ggd2UgYXJlIGEgc3ViIHZ0YWJsZS4KCjIwMDEtMDctMjQgIFBoaWwgRWR3YXJkcyAgPHBtZUBzb3VyY2VzLnJlZGhhdC5jb20+CgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3RoaXNfZXhwcik6ICBSZW1vdmUgdW51c2VkIGNvZGUuCgoyMDAxLTA3LTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVNpbXBsaWZ5IHJ0dGksIG5vdyB3ZSd2ZSBvbmx5IG9uZSBBQkkuCgkqIGNwLXRyZWUuaCAoY3BfdHJlZV9pbmRleCk6IFJlbW92ZSBDUFRJX1RJTkZPX0RFQ0xfSUQsCglDUFRJX1RJTkZPX1ZBUl9JRC4KCSh0aW5mb19kZWNsX2lkLCB0aW5mb192YXJfaWQpOiBSZW1vdmUuCgkoZ2V0X3R5cGVpZF8xKTogUmVtb3ZlLgoJKiBydHRpLmMKCShpbml0X3J0dGlfcHJvY2Vzc2luZyk6IFJlbW92ZSB0aW5mb19kZWNsX2lkICYgdGluZm9fdmFyX2lkLgoJKHR5cGVpZF9va19wKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX3R5cGVfaWQpOiBDYWxsIHR5cGVpZF9va19wLiBEb24ndCBjYWxsIHRpbmZvX2Zyb21fZGVjbC4KCShnZXRfdGluZm9fZGVjbCk6IFJlbW92ZSBvbGQgYWJpIGRvY3VtZW50YXRpb24uCgkodGluZm9fZnJvbV9kZWNsKTogUmVtb3ZlLgoJKGdldF90eXBlX2lkKTogQ2FsbCB0eXBlaWRfb2tfcC4gQWJzb3JiIGdldF90eXBlaWRfMS4KCShnZXRfdHlwZWlkXzEpOiBSZW1vdmUuCgkoZ2V0X2Jhc2Vfb2Zmc2V0KTogUmVtb3ZlLgoJKHN5bnRoZXNpemVfdGluZm9fdmFyKTogQWJzb3JiIGdldF9iYXNlX29mZnNldC4KCShjcmVhdGVfcmVhbF90aW5mb192YXIpOiBEb24ndCB1c2UgdGluZm9fZGVjbF9pZC4KCjIwMDEtMDctMjMgIEdyYWhhbSBTdG90dCAgPGdyYWhhbXNAcmVkaGF0LmNvbT4KCgkqIGNwL2NsYXNzLmMgKHR5cGVfcmVxdWlyZXNfYXJyYXlfY29va2llKTogRml4IHVzZSBvZiB1bmluaXRpYWxpc2VkCgl2YXJpYWJsZSBoYXNfdHdvX2FyZ3VtZW50X2RlbGV0ZV9wLgoKMjAwMS0wNy0yMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglSZW1vdmUgZmxhZ192dGFibGVfdGh1bmsuIEl0IGlzIGFsd2F5cyBvbiBmb3IgdGhlIDMuMCBBQkkuCgkqIGNwLXRyZWUuaCAoQ1BUSV9ERUxUQTJfSURFTlRJRklFUik6IFJlbW92ZS4KCShDUFRJX0lOREVYX0lERU5USUZJRVIpOiBSZW1vdmUuCgkoQ1BUX1BGTl9PUl9ERUxUQTJfSURFTlRJRklFUik6IFJlbW92ZS4KCShkZWx0YTJfaWRlbnRpZmllcik6IFJlbW92ZS4KCShpbmRleF9pZGVudGlmaWVyKTogUmVtb3ZlLgoJKHBmbl9vcl9kZWx0YTJfaWRlbnRpZmllcik6IFJlbW92ZS4KCShmbGFnX3Z0YWJsZV90aHVua3MpOiBSZW1vdmUuCgkoVlRBQkxFX0RFTFRBMl9OQU1FKTogUmVtb3ZlLgoJKFZUQUJMRV9JTkRFWF9OQU1FKTogUmVtb3ZlLgoJKEZOQUREUl9GUk9NX1ZUQUJMRV9FTlRSWSk6IEFkanVzdC4KCSh2ZnVuY19wdHJfdHlwZV9ub2RlKTogQWRqdXN0LgoJKFZUQUJMRV9OQU1FX1BSRUZJWCk6IEFkanVzdC4KCShidWlsZF92Zm5fcmVmKTogTG9zZSBmaXJzdCBwYXJhbWV0ZXIuCgkoZml4dXBfYWxsX3ZpcnR1YWxfdXBjYXN0X29mZnNldHMpOiBSZW1vdmUuCgkqIGRlY2wuYyAoaW5pdGlhbGl6ZV9wcmVkZWZpbmVkX2lkZW50aWZpZXJzKTogUmVtb3ZlCglkZWx0YTJfaWRlbnRpZmllciwgaW5kZXhfaWRlbnRpZmllciwgcGZuX29yX2RlbHRhMl9pZGVudGlmaWVyLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVtb3ZlIG5vLXZ0YWJsZS10aHVuayBjb2RlLgoJKiBkZWNsMi5jIChmbGFnX3Z0YWJsZV90aHVua3MpOiBSZW1vdmUuCgkobWFya192dGFibGVfZW50cmllcyk6IFJlbW92ZSBuby12dGFibGUtdGh1bmsgY29kZS4KCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogUmVtb3ZlIG5vLXZ0YWJsZS10aHVuayBjb2RlLgoJKGR1bXBfZXhwcik6IEFkanVzdCBwdHIgdG8gbWVtYmVyIGZ1bmN0aW9uIGNvZGUuCgkqIGluaXQuYyAoaW5pdGlhbGl6ZV92dGFibGVfcHRycyk6IFJlbW92ZSBuby12dGFibGUtdGh1bmsKCWNvZGUuCgkqIHJ0dGkuYyAoYnVpbGRfaGVhZG9mKTogUmVtb3ZlIG5vLXZ0YWJsZS10aHVuayBjb2RlLgoJKGdldF90aW5mb19kZWNsX2R5bmFtaWMpOiBBZGp1c3QgYnVpbGRfdmZuX3JlZiBjYWxsLgoJKiBzZWFyY2guYyAoZ2V0X2Jhc2VfZGlzdGFuY2UpOiBSZW1vdmUgZXhwYW5kX3VwY2FzdF9maXh1cHMgY2FzZS4KCSh2aXJ0dWFsX2NvbnRleHQpIFJlbW92ZS4KCShleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IFJlbW92ZS4KCShmaXh1cF92aXJ0dWFsX3VwY2FzdF9vZmZzZXRzKTogUmVtb3ZlLgoJKGZpeHVwX2FsbF92aXJ0dWFsX3VwY2FzdF9vZmZzZXRzKTogUmVtb3ZlLgoJKiB0eXBlY2suYyAoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiBSZW1vdmUKCW5vLXZ0YWJsZS10aHVuayBjb2RlLgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IEFkanVzdCBjYWxsIHRvIGJ1aWxkX3Zmbl9yZWYuCgkqIGNsYXNzLmMgKGJ1aWxkX3Zmbl9yZWYpOiBMb3NlIGZpcnN0IHBhcmFtZXRlci4gUmVtb3ZlCgluby12dGFibGUtdGh1bmsgY29kZS4KCShidWlsZF9ydHRpX3Z0YmxfZW50cmllcyk6IFJlbW92ZSBuby12dGFibGUtdGh1bmsgY29kZS4KCShidWlsZF92dGFibGVfZW50cnkpOiBSZW1vdmUgbm8tdnRhYmxlLXRodW5rIGNvZGUuCgoyMDAxLTA3LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVJlbW92ZSBvbGQtYWJpIHJlbW5hbnRzLiBSZW1vdmUgY29tbWVudHMgYWJvdXQgb2xkIGFiaQoJYmVoYXZpb3VyLiBSZW1vdmUgcmVmZXJlbmNlcyB0byAnbmV3LWFiaScgaW4gY29tbWVudHMuCgkqIGNwLXRyZWUuaDogQWRqdXN0IGNvbW1lbnRzLgoJKHZiYXNlX29mZnNldHNfaW5fdnRhYmxlX3ApOiBEZWxldGUuCgkodmNhbGxfb2Zmc2V0c19pbl92dGFibGVfcCk6IERlbGV0ZS4KCSh2cHRyc19wcmVzZW50X2V2ZXJ5d2hlcmVfcCk6IERlbGV0ZS4KCShhbGxfb3ZlcnJpZGRlbl92ZnVuc19pbl92dGFibGVzX3ApOiBEZWxldGUuCgkobWVyZ2VfcHJpbWFyeV9hbmRfc2Vjb25kYXJ5X3Z0YWJsZXNfcCk6IERlbGV0ZS4KCShUWVBFX0NPTlRBSU5TX1ZQVFJfUCk6IEFkanVzdC4KCShWVFRfTkFNRV9QUkVGSVgpOiBSZW1vdmUuCgkoQ1RPUl9WVEJMX05BTUVfUFJFRklYKTogUmVtb3ZlLgoJKGluaXRfdmJhc2VfcG9pbnRlcnMpOiBSZW1vdmUuCgkqIGNsYXNzLmM6IEFkanVzdCBjb21lbnRzLgoJKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogRGVsZXRlLgoJKGJ1aWxkX3ZiYXNlX3BvaW50ZXIpOiBSZW1vdmUgb2xkLWFiaSBjb2RlLgoJKGJ1aWxkX3NlY29uZGFyeV92dGFibGUpOiBMaWtld2lzZS4KCShtb2RpZnlfYWxsX3Z0YWJsZXMpOiBMaWtld2lzZS4KCShjcmVhdGVfdnRhYmxlX3B0cik6IExpa2V3aXNlLgoJKGxheW91dF9jbGFzc190eXBlKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkoZmluaXNoX3Z0YmxzKTogTGlrZXdpc2UuCgkoZGZzX2ZpbmlzaF92dGJscyk6IERlbGV0ZS4KCShidWlsZF92YmFzZV9vZmZzZXRfdnRibF9lbnRyaWVzKTogUmVtb3ZlIG9sZC1hYmkgY29kZS4KCSogY3Z0LmM6IEFkanVzdCBjb21tZW50cy4KCSogZGVjbC5jOiBBZGp1c3QgY29tbWVudHMuCgkqIGRlY2wyLmM6IEFkanVzdCBjb21tZW50cy4KCSogaW5pdC5jOiBBZGp1c3QgY29tbWVudHMuCgkoY29uc3RydWN0X3ZpcnR1YWxfYmFzZXMpOiBSZW1vdmUgb2xkLWFiaSBjb2RlLgoJKiBsYW5nLXNwZWNzLmg6IFJlbW92ZSAtZm5vLW5ldy1hYmkuCgkqIG1hbmdsZS5jOiBBZGp1c3QgY29tbWVudHMuCgkqIHJ0dGkuYzogQWRqdXN0IGNvbW1lbnRzLgoJKGdldF9iYXNlX29mZnNldCk6IFJlbW92ZSBvbGQtYWJpLWNvZGUuCgkqIHNlYXJjaC5jOiBBZGp1c3QgY29tbWVudHMuCgkoZGZzX2luaXRfdmJhc2VfcG9pbnRlcnMpOiBSZW1vdmUuCgkoZGZzX3Z0YWJsZV9wYXRoX3VubWFyayk6IFJlbW92ZS4KCShpbml0X3ZiYXNlX3BvaW50ZXJzKTogUmVtb3ZlLgoJKiBzZW1hbnRpY3MuYzogQWRqdXN0IGNvbW1lbnRzLgoJKGVtaXRfYXNzb2NpYXRlZF90aHVua3MpOiBSZW1vdmUgb2xkLWFiaSBjb2RlLgoJKiB0eXBlY2suYzogQWRqdXN0IGNvbW1lbnRzLgoKMjAwMS0wNy0yMCAgRGFuaWVsIEJlcmxpbiAgPGRhbkBjZ3NvZnR3YXJlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY3Avb3B0aW1pemUubyk6IERlcGVuZCBvbiAkKFBBUkFNU19IKSwgbm90CglwYXJhbXMuaC4KCjIwMDEtMDctMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0X2Fub24pOiBGb3JiaWQgbmVzdGVkIGNsYXNzZXMuCgoyMDAxLTA3LTE5ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBkZWNsMi5jOiBEb24ndCBpbmNsdWRlIGR3YXJmb3V0LmggYW5kIGR3YXJmMm91dC5oLgoJKiBvcHRpbWl6ZS5jOiBJbmNsdWRlIGRlYnVnLmguCgkobWF5YmVfY2xvbmVfYm9keSk6IFVzZSBkZWJ1ZyBob29rLgoJKiBzZW1hbnRpY3MuYzogSW5jbHVkZSBkZWJ1Zy5oLgoJKGV4cGFuZF9ib2R5KTogVXNlIGRlYnVnIGhvb2suCgoyMDAxLTA3LTE5ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBzcGV3LmMgKHJlYWRfdG9rZW4sIHl5ZXJyb3IpOiBSZW1vdmUgQ1BQX0lOVCwgQ1BQX0ZMT0FUIGNhc2VzLgoKMjAwMS0wNy0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKHR5cGVfcmVxdWlyZXNfYXJyYXlfY29va2llKTogTmV3IGZ1bmN0aW9uLgoJKGNoZWNrX21ldGhvZHMpOiBEb24ndCB0cnkgdG8gZmlndXJlIG91dCB3aGV0aGVyIHRoZSB0eXBlIG5lZWRzIGEKCWNvb2tpZSBoZXJlLgoJKGNoZWNrX2Jhc2VzX2FuZF9tZW1iZXJzKTogU2V0IFRZUEVfVkVDX05FV19VU0VTX0NPT0tJRSBoZXJlLgoJKiBjcC10cmVlLmggKFRZUEVfVkVDX0RFTEVURV9UQUtFU19TSVpFKTogUmVtb3ZlLgoJKFRZUEVfVkVDX05FV19VU0VTX0NPT0tJRSk6IFJlaW1wbGVtZW50LgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IERvbid0IHNldAoJVFlQRV9WRUNfREVMRVRFX1RBS0VTX1NJWkUuCgkqIE5FV1M6IERvY3VtZW50IEFCSSBjaGFuZ2VzIGZyb20gR0NDIDMuMC4KCjIwMDEtMDctMTggIFhhdmllciBEZWxhY291ciA8eGF2aWVyQGZtYXVkaW8ubmV0PiwKCSAgICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgoJKiBORVdTIChDaGFuZ2VzIGluIEdDQyAzLjApOiBGaXggdHlwby4KCjIwMDEtMDctMTMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGRlY2wyLmMgKGNwbHVzX2RlY2xfYXR0cmlidXRlcyk6IFRha2UgYSBwb2ludGVyIHRvIHRoZSBub2RlIHRvCgl3aGljaCBhdHRyaWJ1dGVzIGFyZSB0byBiZSBhdHRhY2hlZCwgYW5kIGEgZmxhZ3MgYXJndW1lbnQuICBVcGRhdGUKCWNhbGwgdG8gZGVjbF9hdHRyaWJ1dGVzLgoJKGdyb2tmaWVsZCk6IFVwZGF0ZSBjYWxsIHRvIGRlY2xfYXR0cmlidXRlcy4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IFVwZGF0ZSBjYWxsIHRvIGNwbHVzX2RlY2xfYXR0cmlidXRlcy4KCSogY3AtdHJlZS5oIChjcGx1c19kZWNsX2F0dHJpYnV0ZXMpOiBVcGRhdGUgcHJvdG90eXBlLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wsIGdyb2tkZWNsYXJhdG9yLCBzdGFydF9mdW5jdGlvbik6IFVwZGF0ZQoJY2FsbHMgdG8gZGVjbF9hdHRyaWJ1dGVzIGFuZCBjcGx1c19kZWNsX2F0dHJpYnV0ZXMuCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBVcGRhdGUgY2FsbCB0byBjcGx1c19kZWNsX2F0dHJpYnV0ZXMuCgkqIHBhcnNlLnkgKHBhcnNlX2JpdGZpZWxkKTogVXBkYXRlIGNhbGwgdG8gY3BsdXNfZGVjbF9hdHRyaWJ1dGVzLgoKMjAwMS0wNy0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAobWFrZV9ydGxfZm9yX25vbmxvY2FsX2RlY2wpOiBTZXQgREVDTF9DX0hBUkRfUkVHSVNURVIKCWZvciBgcmVnaXN0ZXInIHZhcmlhYmxlcyB3aXRoIGFuIGFzbS1zcGVjaWZpY2F0aW9uLgoKMjAwMS0wNy0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYXNtX3N0bXQpOiBNYXJrIHRoZSBvdXRwdXQgb3BlcmFuZHMKCXRvIGFuIGFzbSBhZGRyZXNzYWJsZSwgaWYgbmVjZXNzYXJ5LgoKMjAwMS0wNy0xMSAgQmVuIEVsbGlzdG9uICA8YmplQHJlZGhhdC5jb20+CgoJKiBSZXZlcnQgdGhpcyBjaGFuZ2UgLS0gdGhlcmUgaXMgYSBzdWJ0bGUgYnVnLgoKCVBSIGMrKy84MAoJKiBkZWNsLmMgKGZpbmlzaF9lbnVtKTogTmV3ICJhdHRyaWJ1dGVzIiBhcmd1bWVudDsgcGFzcyBpdCB0bwoJY3BsdXNfZGVjbF9hdHRyaWJ1dGVzLiAgVXNlIGEgbmFycm93ZXIgdHlwZSBpZiB0aGUgZW51bSBpcyBwYWNrZWQuCgkqIGNwLXRyZWUuaCAoZmluaXNoX2VudW0pOiBBZGp1c3QgcHJvdG90eXBlLgoJKiBwYXJzZS55IChlbnVtX2hlYWQpOiBOZXcgbm9uLXRlcm1pbmFsLgoJKHN0cnVjdHNwKTogVXNlIGl0LiBFbnVtcyBub3cgbWF5IGJlIHByZWNlZGVkIG9yIGZvbGxvd2VkIGJ5CglvcHRpb25hbCBhdHRyaWJ1dGVzIC0tIHBhc3MgdGhlaXIgY2hhaW5lZCB0cmVlIHRvIGZpbmlzaF9lbnVtKCkuCgkqIHB0LmMgKHRzdWJzdF9lbnVtKTogUGFzcyBOVUxMX1RSRUUgZm9yIHRoZSBuZXcgYXJndW1lbnQuCgoyMDAxLTA3LTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBTZXQgREVDTF9DT05URVhUIGZvciBuYW1lc3BhY2Utc2NvcGUKCXZhcmlhYmxlcy4KCjIwMDEtMDctMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbl9tZXJyaWxsQHJlZGhhdC5jb20+CgoJKiBzZW1hbnRpY3MuYyAoY3BfZXhwYW5kX3N0bXQpOiBGaXggZm9yIG51bGwKCWN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuX3ZhbHVlLgoKMjAwMS0wNy0xMCAgSmFuIHZhbiBNYWxlICA8amFuLnZhbm1hbGVAZmVuay53YXUubmw+CgoJKiBjYWxsLmMgKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogSW5pdGlhbGl6ZSBmbi4KCShjb252ZXJ0X2xpa2VfcmVhbCk6IERlbGV0ZSBjb25kaXRpb25hbC4KCShqb3VzdCk6IEluaXRpYWxpemUgKncgYW5kICpsLgoJKiBjbGFzcy5jOiBBZGQgcHJvdG90eXBlIGZvciBiaW5mb19jdG9yX3Z0YWJsZS4KCShnZXRfcHJpbWFyeV9iaW5mbyk6IEluaXRpYWxpemUgcmVzdWx0LgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogSW5pdGlhbGl6ZSBuYW1lLgoKMjAwMS0wNy0wOSAgRXJpayBSb3plbmRhYWwgIDxkbHJAYWNtLm9yZz4KCgkqIHR5cGVjay5jICh1bmFyeV9jb21wbGV4X2x2YWx1ZSk6IERvIG5vdCBkdXBsaWNhdGUgdGhlCglhcmd1bWVudCB0byBtb2RpZnksIHByZS0sIG9yIHBvc3QtaW5jcmVtZW50IHdoZW4gdXNlZCBhcyBhbgoJbHZhbHVlIGFuZCB3aGVuIHRoZSBhcmd1bWVudCBoYXMgc2lkZS1lZmZlY3RzLgoKMjAwMS0wNy0wOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZGVjbC5jIChzdGFydF9kZWNsKTogRG9uJ3QgY2FsbCBTRVRfREVGQVVMVF9ERUNMX0FUVFJJQlVURVMuCgkoc3RhcnRfZnVuY3Rpb24pOiBEb24ndCBjYWxsIFNFVF9ERUZBVUxUX0RFQ0xfQVRUUklCVVRFUy4gIENhbGwKCWNwbHVzX2RlY2xfYXR0cmlidXRlcyBldmVuIGlmIGF0dHJzIGlzIE5VTEwuCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBEb24ndCBjYWxsIFNFVF9ERUZBVUxUX0RFQ0xfQVRUUklCVVRFUy4KCjIwMDEtMDctMDggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpLCBkZWNsMi5jIChjcGx1c19kZWNsX2F0dHJpYnV0ZXMpOiBVcGRhdGUKCWNhbGxzIHRvIGRlY2xfYXR0cmlidXRlcy4KCjIwMDEtMDctMDYgIElyYSBSdWJlbiAgIDxpcmFAYXBwbGUuY29tPgoKCSogY3AtdHJlZS5kZWYgKFRFTVBMQVRFX0RFQ0wpOiBVcGRhdGUgY29tbWVudC4gREVDTF9SRVNVTFQgc2hvdWxkCgliZSBERUNMX1RFTVBMQVRFX1JFU1VMVC4KCjIwMDEtMDctMDUgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogY3AtdHJlZS5oIChjb3B5X3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm0pOiBSZW5hbWUgdG8gLi4uCgkoYmluZF90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogLi4uIGhlcmUuCgkqIHRyZWUuYyAoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogUmVuYW1lIHRvIC4uLgoJKGJpbmRfdGVtcGxhdGVfdGVtcGxhdGVfcGFybSk6IC4uLiBoZXJlLiAgUmVtb3ZlIHRoZSBjYXNlIHdoZW4KCU5FV0FSR1MgaXMgTlVMTF9UUkVFLgoJKGNvcHlfdHJlZV9yKTogRG9uJ3QgY29weSBURU1QTEFURV9URU1QTEFURV9QQVJNIGFuZAoJQk9VTkRfVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogQWRqdXN0LgoKMjAwMS0wNy0wNSAgSmFzb24gTWVycmlsbCAgPGphc29uX21lcnJpbGxAcmVkaGF0LmNvbT4KCgkqIGN2dC5jIChjb252ZXJ0X2x2YWx1ZSk6IE5ldyBmbi4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfYXNzaWduX3JlZik6IFVzZSBpdC4KCShkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogQ29udmVydCBwYXJtIHRvIGJhc2UgdHlwZXMKCWJlZm9yZSBjYWxsaW5nIGJhc2UgY29uc3RydWN0b3JzLgoKCSogdHlwZWNrLmMgKGNoZWNrX3JldHVybl9leHByKTogQ2hlY2sgREVDTF9BTElHTiBpbnN0ZWFkIG9mCglERUNMX1VTRVJfQUxJR04uICBDaGVjayBmbGFnX2VsaWRlX2NvbnN0cnVjdG9ycyBpbnN0ZWFkIG9mCglvcHRpbWl6ZS4KCSogc2VtYW50aWNzLmMgKGNwX2V4cGFuZF9zdG10KTogRG9uJ3QgZGVzdHJveSB0aGUgbmFtZWQgcmV0dXJuIHZhbHVlLgoKMjAwMS0wNy0wMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG9wdGltaXplLmMgKG9wdGltaXplX2lubGluZV9jYWxscyk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dAoJb2YgLi4uCgkob3B0aW1pemVfZnVuY3Rpb24pOiAuLi4gaGVyZS4gQ2FsbCBpdC4gRG9uJ3QgaW5saW5lIGlmIGl0IGlzCglhIHRodW5rLgoJKGR1bXBfZnVuY3Rpb24pOiBQcmludCBuYW1lIG9mIGR1bXAgZmxhZyBjYXVzaW5nIHRoaXMgZHVtcC4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9ib2R5KTogTW92ZSB0aHVuayBpbmxpbmUgY2hlY2sgdG8KCW9wdGltaXplX2Z1bmN0aW9uLgoKMjAwMS0wNi0yOSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogdHlwZWNrLmMgKENPTVBfVFlQRV9BVFRSSUJVVEVTKTogRG9uJ3QgZGVmaW5lLgoJKGNvbXB0eXBlcyk6IFVzZSB0YXJnZXQuY29tcF90eXBlX2F0dHJpYnV0ZXMuCgoyMDAxLTA2LTI5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChmbGFnX2R1bXBfY2xhc3NfbGF5b3V0KTogUmVtb3ZlIHVubmVlZGVkIGRlY2xhcmF0aW9uLgoKMjAwMS0wNi0yOCAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBtZXJsaW4uY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmMgKGxhbmdfcHJpbnRfZXJyb3JfZnVuY3Rpb24pOiBBZGQgYSBgZGlhZ25vc3RpY19jb250ZXh0IConCglwYXJhbWV0ZXIuIFR3ZWFrLgoKMjAwMS0wNi0yNyAgTmVpbCBCb290aCAgPG5laWxAY2F0LmRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfY2xhc3MpOiBVcGRhdGUuCgoyMDAxLTA2LTI2ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlcnJvci5jIChpbml0X2Vycm9yKTogQWRqdXN0IHNldHRpbmdzLgoKMjAwMS0wNi0yNiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZXJyb3IuYyAoaW5pdF9lcnJvcik6IEFkanVzdCBzZXR0aW5ncy4KCjIwMDEtMDYtMTkgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIGV4Y2VwdC5jIChpbml0aWFsaXplX2hhbmRsZXJfcGFybSk6IEV4cGVjdCBfX2N4YV9iZWdpbl9jYXRjaCB0bwoJcmV0dXJuIHBvaW50ZXJzIHRvIGRhdGEgbWVtYmVycyBieSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYnkgdmFsdWUuCgoyMDAxLTA2LTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25fbWVycmlsbEByZWRoYXQuY29tPgoKCUltcGxlbWVudCB0aGUgTmFtZWQgUmV0dXJuIFZhbHVlIG9wdGltaXphdGlvbi4KCSogY3AtdHJlZS5oIChzdHJ1Y3QgY3BfbGFuZ3VhZ2VfZnVuY3Rpb24pOiBBZGQgeF9yZXR1cm5fdmFsdWUuCgkoY3VycmVudF9mdW5jdGlvbl9yZXR1cm5fdmFsdWUpOiBOb3cgYSBtYWNyby4KCSogZGVjbC5jOiBEb24ndCBkZWZpbmUgaXQuCgkoZGVmaW5lX2xhYmVsLCBmaW5pc2hfY2FzZV9sYWJlbCk6IERvbid0IGNsZWFyIGl0LgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgcmVnaXN0ZXIgaXQgd2l0aCBHQy4KCSogc2VtYW50aWNzLmMgKGdlbnJ0bF9maW5pc2hfZnVuY3Rpb24pOiBEb24ndCBjaGVjayBpdCBmb3IKCW5vX3JldHVybl9sYWJlbC4gIENvcHkgdGhlIFJUTCBmcm9tIHRoZSByZXR1cm4gdmFsdWUgdG8KCWN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuX3ZhbHVlIGFuZCB3YWxrLCBjYWxsaW5nLi4uCgkobnVsbGlmeV9yZXR1cm5zX3IpOiAuLi50aGlzIG5ldyBmbi4KCSogdHlwZWNrLmMgKGNoZWNrX3JldHVybl9leHByKTogU2V0IGN1cnJlbnRfZnVuY3Rpb25fcmV0dXJuX3ZhbHVlLgoKMjAwMS0wNi0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uX21lcnJpbGxAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGRmc19hY2N1bXVsYXRlX3Z0YmxfaW5pdHMpOiBKdXN0IHBvaW50IHRvIHRoZSBiYXNlIHdlJ3JlCglzaGFyaW5nIGEgY3RvciB2dGFibGUgd2l0aC4gIE1lcmdlIGNvZGUgZm9yIGNhc2VzIDEgYW5kIDIuCgkoYmluZm9fY3Rvcl92dGFibGUpOiBOZXcgZm4uCgkoYnVpbGRfdnR0X2luaXRzLCBkZnNfYnVpbGRfc2Vjb25kYXJ5X3ZwdHJfdnR0X2luaXRzKTogVXNlIGl0LgoKMjAwMS0wNi0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uX21lcnJpbGxAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGRmc19maW5kX2ZpbmFsX292ZXJyaWRlcik6IEZpeCBsb2dpYy4KCgkqIGNsYXNzLmMgKHVwZGF0ZV92dGFibGVfZW50cnlfZm9yX2ZuKTogVW5jb21tZW50IG9wdGltaXphdGlvbiB0byB1c2UKCXZpcnR1YWwgdGh1bmsgaW5zdGVhZCBvZiBub24tdmlydHVhbC4KCShnZXRfbWF0Y2hpbmdfdmlydHVhbCk6IFVuY29tbWVudC4KCgkqIHB0LmMgKHVuaWZ5KTogRG9uJ3QgcmVjdXJzZSBiZXR3ZWVuIHRoZSBQT0lOVEVSX1RZUEUgYW5kIHRoZQoJT0ZGU0VUX1RZUEUuICBJZiB3ZSdyZSBhZGRpbmcgY3YtcXVhbHMsIHRoZSBleHRyYSBvbmVzIHdvdWxkIGJlIG9uCglQQVJNLCBub3QgQVJHLgoKMjAwMS0wNi0xNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGRmc19hY2N1bXVsYXRlX3Z0YmxfaW5pdHMpOiBGb3IgY2FzZSAyICYgMywgbWFrZSBzdXJlCgl3ZSd2ZSBub3QgZW1lcmdlZCBmcm9tIHRoZSBoaWVyYXJjaHkgb2YgUlRUSV9CSU5GTyBvbiByZWFjaGluZwoJYSBub24tdmlydHVhbCBiYXNlLgoKMjAwMS0wNi0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE5FV1M6IFVwZGF0ZSByZWxlYXNlIG51bWJlci4KCjIwMDEtMDYtMTIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzMxMzAsIGMrKy8zMTMxLCBjKysvMzEzMgoJKiBjcC10cmVlLmggKEJJTkZPX1VOU0hBUkVEX01BUktFRCk6IE5ldyAjZGVmaW5lLgoJKiBjbGFzcy5jIChmb3JjZV9jYW5vbmljYWxfYmluZm9fcik6IE1vdmUKCUJJTkZPX1VOU0hBUkVEX01BUktFRCwgQklORk9fTE9TVF9QUklNQVJZX1AuIERvbid0IG1vdmUKCXZpcnR1YWwgYmFzZXMgdW5sZXNzIHRoZXkncmUgcHJpbWFyeSBhbmQgd2hhdCB0aGV5J3JlIHByaW1hcnkKCXRvbyBoYXMgYmVlbiBtb3ZlZC4KCShkZnNfdW5zaGFyZWRfdmlydHVhbF9iYXNlcyk6IFVzZSBCSU5GT19VTlNIQVJFRF9NQVJLRUQuIENvcGUKCXdpdGggbW9yYWxseSB2aXJ0dWFsIGJhc2VzLiBEdXBsaWNhdGUgQklORk9fTE9TVF9QUklNQVJZX1AgYW5kCglCSU5GT19QUklNQVJZX0JBU0VfT0YuIENsZWFyIEJJTkZPX1ZUQUJMRSBmb3IgYWxsIGJ1dCB0aGUgbW9zdAoJZGVyaXZlZCBiaW5mby4KCShtYXJrX3ByaW1hcnlfYmFzZXMpOiBVc2UgQklORk9fVU5TSEFSRURfTUFSS0VELgoJKGxheW91dF9ub25lbXB0eV9iYXNlX29yX2ZpZWxkKTogQWRkIG1vc3QgZGVyaXZlZCB0eXBlCglwYXJhbWV0ZXIuIEFkanVzdC4KCShsYXlvdXRfZW1wdHlfYmFzZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2Jhc2VfZmllbGQpOiBMaWtld2lzZS4KCShidWlsZF9iYXNlX2ZpZWxkcyk6IExpa2V3aXNlLgoJKHByb3BhZ2F0ZV9iaW5mb19vZmZzZXRzKTogQWRkIG1vc3QgZGVyaXZlZCB0eXBlCglwYXJhbWV0ZXIuIFNraXAgbm9uIGNhbm9uaWNhbCB2aXJ0dWFsIGJhc2VzIHRvby4KCShkZnNfc2V0X29mZnNldF9mb3JfdW5zaGFyZWRfdmJhc2VzKTogRG9uJ3Qgc2tpcCBwcmltYXJ5CgliYXNlcy4gRG8gc2tpcCBjYW5vbmljYWwgYmFzZXMuCgkobGF5b3V0X3ZpcnR1YWxfYmFzZXMpOiBBZGp1c3QuCgkobGF5b3V0X2NsYXNzX3R5cGUpOiBBZGp1c3QuCgkoZGZzX2dldF9wcmltYXJ5X2JpbmZvKTogQnVpbGQgbGlzdCBvZiB2aXJ0dWFsIHByaW1hcnkgYmFzZQoJY2FuZGlkYXRlcy4KCShnZXRfcHJpbWFyeV9iaW5mbyk6IENoZWNrIHRoYXQgdGhlIHNoYXJlZCB2aXJ0dWFsIHByaW1hcnkKCWJhc2UgY2FuZGlkYXRlIHdhcyBmb3VuZCBmaXJzdC4KCShhY2N1bXVsYXRlX3Z0YmxfaW5pdHMpOiBEb24ndCBkbyBhbnl0aGluZyBmb3Igbm9uLXZwdHIKCWNvbnRhaW5pbmcgYmluZm9zLiBGb3IgY2FzZSAxIHByaW1hcnkgdmlydHVhbCBiYXNlcywga2VlcAoJY2hlY2tpbmcgdGhhdCB3ZSd2ZSBub3QgZW1lcmdlZCBmcm9tIHRoZSBoaWVyYXJjaHkgb2YgUlRUSV9CSU5GTy4KCjIwMDEtMDYtMTIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzMwODkKCSogY2xhc3MuYyAoZGZzX2FjY3VtdWxhdGVfdnRibF9pbml0cyk6IEFsd2F5cyB3YWxrIGRvd24gdGhlCgloaWVyYXJjaHkgbG9va2luZyBmb3IgcHJpbWFyeSBiYXNlcyBmb3IgYSBjdG9yCgl2dGFibGUuIFJlY3Vyc2l2ZWx5IGNhbGwgb25lc2VsZiwgaWYgd2UgbWVldCBvdXIgcHJpbWFyeSB2aWEKCXRoaXMgcm91dGUgYW5kIGhhdmVuJ3QgbWV0IGl0IHlldCB2aWEgaW5oZXJpdGFuY2UgZ3JhcGggb3JkZXIuCgoyMDAxLTA2LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbGFuZy1vcHRpb25zLmg6IEVtaXQgZG9jdW1lbnRhdGlvbiBmb3IgLWZuby1ob25vci1zdGQsIG5vdAoJLWZob25vci1zdGQuCgoyMDAxLTA2LTEwICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIHR5cGVjay5jIChnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYykgW3ZiaXRfaW5fZGVsdGFdOgoJRG9uJ3QgY2xvYmJlciBkZWx0YS4KCShleHBhbmRfcHRybWVtZnVuY19jc3QpIFtwdHJtZW1mdW5jX3ZiaXRfaW5fZGVsdGFdOiBBZGp1c3QgcGZuLgoKMjAwMS0wNi0xMCAgTWFyayBNaXRjaGVsbCA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoJICAgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoY3AvY2FsbC5vKTogRGVwZW5kIG9uIGRpYWdub3N0aWMuaAoJKGNwL3R5cGVjay5vKTogRGVwZW5kIG9uIGRpYWdub3N0aWMuaAoJKGNwL3R5cGVjazIubyk6IERlcGVuZCBvbiBkaWFnbm9zdGljLmgKCShjcC9yZXBvLm8pOiBEZXBlbmQgb24gZGlnbm9zdGljLmgKCSogdHlwZWNrLmM6ICNpbmNsdWRlIGRpYWdub3N0aWMuaAoJKGNvbnZlcnRfZm9yX2luaXRpYWxpemF0aW9uKTogUmVtb3ZlIGV4dGVybiBkZWNsYXJhdGlvbiBmb3IKCXdhcm5pbmdjb3VudCBhbmQgZXJyb3Jjb3VudC4KCgkqIGNhbGwuYzogI2luY2x1ZGUgZGlhZ25vc3RpYy5oCgkoY29udmVydF9saWtlX3JlYWwpOiBSZW1vdmUgZXh0ZXJuIGRlY2xhcmF0aW9uIGZvciB3YXJuaW5jb3VudCBhbmQKCWVycm9yY291bnQuCgoJKiByZXBvLmM6ICNpbmNsdWRlIGRpYWdub3N0aWMuaAoJKiB0eXBlY2syLmM6ICNpbmNsdWRlIGRpYWdub3N0aWMuaAoKMjAwMS0wNi0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRml4IERFQ0xfVEVNUExBVEVfUkVTVUxUIHRoaW5rbwoJaW4gcHJldmlvdXMgY2hhbmdlLgoKMjAwMS0wNi0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjkyOQoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogVXNlIHB1c2hfZGVjbF9uYW1lc3BhY2UgZm9yIGNsYXNzZXMgYXQKCW5hbWVzcGFjZSBzY29wZS4KCjIwMDEtMDYtMDggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgkgICAgSmFzb24gTWVycmlsbCA8amFzb25fbWVycmlsbEByZWRoYXQuY29tPgoKCVBSIGMrKy8zMDYxCgkqIGNsYXNzLmMgKGJ1aWxkX3NlY29uZGFyeV92dGFibGUpOiBVc2UgYXNzZXJ0LCByYXRoZXIgdGhhbiBhbiBlcnJvcgoJbWVzc2FnZS4KCShkZnNfZml4dXBfYmluZm9fdnRibHMpOiBCSU5GT19WVEFCTEUgbWlnaHQgYmUgTlVMTC4KCShkZnNfYWNjdW11bGF0ZV92dGJsX2luaXRzKTogQSBsb3N0IHByaW1hcnkgdmlydHVhbCBiYXNlIG1heQoJYmUgYmV0d2VlbiBPUklHX0JJTkZPIGFuZCBSVFRJX0JJTkZPLCBidXQgbmVpdGhlciBvZiB0aGVtLgoJRG9uJ3Qgc2V0IEJJTkZPX1ZUQUJMRSBmb3IgYSBwcmltYXJ5IHZpcnR1YWwgYmFzZS4KCjIwMDEtMDYtMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFVwZGF0ZSBzb3VyY2UgcG9zaXRpb24gaW5mb3JtYXRpb24KCXdoZW4gYSB0ZW1wbGF0ZSBmdW5jdGlvbiBpcyBkZWZpbmVkLgoKMjAwMS0wNi0wNyAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXMucmVkaGF0LmNvbT4KCgkqIGxhbmctc3BlY3MuaDogIE1vdmUgLURfR05VX1NPVVJDRSB0byBjb25maWcvbGludXguaC4KCjIwMDEtMDYtMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUFIgYysrLzI5MTQKCSogZGVjbC5jIChwdXNodGFnKTogRG9uJ3QgcHVzaCBpbnRvIGEgY29tcGxldGUgdHlwZSdzIHNjb3BlLgoKMjAwMS0wNi0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uX21lcnJpbGxAcmVkaGF0LmNvbT4KCgkqIGNwLXRyZWUuaCAoVEhVTktfR0VORVJBVEVfV0lUSF9WVEFCTEVfUCk6IExvc2UuCgkoc3RydWN0IGxhbmdfZGVjbF9mbGFncyk6IExvc2UgZ2VuZXJhdGVfd2l0aF92dGFibGVfcC4KCShCVl9HRU5FUkFURV9USFVOS19XSVRIX1ZUQUJMRV9QKTogTG9zZS4KCSogY2xhc3MuYyAoY29weV92aXJ0dWFscyk6IEFkanVzdC4KCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IEFkanVzdC4KCSogbWV0aG9kLmMgKG1ha2VfdGh1bmssIGJ1aWxkX3Z0YWJsZV9lbnRyeSk6IEFkanVzdC4KCSogY2xhc3MuYyAodXBkYXRlX3Z0YWJsZV9lbnRyeV9mb3JfZm4pOiBPbmx5IGxvb2sgYXMgZmFyIGFzIHRoZQoJZmlyc3QgZGVmaW5pbmcgY2xhc3MuCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IFB1dCBub3RoaW5nIGluIHRoZSBzbG90IGZvciBhIGZ1bmN0aW9uIG9ubHkKCWRlZmluZWQgaW4gYSBsb3N0IHByaW1hcnkgdmlydHVhbCBiYXNlLgoJKGFkZF92Y2FsbF9vZmZzZXRfdnRibF9lbnRyaWVzXzEpOiBVc2UgdGhlIHNhbWUgY29kZSBmb3IKCXRoZSBsb3N0IHByaW1hcnkgY2FzZSBhbmQgdGhlIG5vcm1hbCBjYXNlLgoJKGRmc191bnNoYXJlZF92aXJ0dWFsX2Jhc2VzKTogRG9uJ3QgbG9zZSBhIG5vbi12aXJ0dWFsIHByaW1hcnkgYmFzZS4KCShnZXRfdmZpZWxkX29mZnNldCwgZ2V0X2Rlcml2ZWRfb2Zmc2V0KTogTG9zZS4KCShkZnNfZmluZF9maW5hbF9vdmVycmlkZXIpOiBVc2UgbG9va19mb3Jfb3ZlcnJpZGVzX2hlcmUuCgkoZ2V0X21hdGNoaW5nX3ZpcnR1YWwpOiBOZXcgZm4uCgkqIHNlbWFudGljcy5jIChlbWl0X2Fzc29jaWF0ZWRfdGh1bmtzKTogQ2hlY2sgQlZfVVNFX1ZDQUxMX0lOREVYX1AsCglub3QgQlZfVkNBTExfSU5ERVguCgkqIHNlYXJjaC5jIChsb29rX2Zvcl9vdmVycmlkZXNfaGVyZSk6IFNwbGl0IG91dCBmcm9tLi4uCgkobG9va19mb3Jfb3ZlcnJpZGVzX3IpOiBIZXJlLgoKCSogY2xhc3MuYyAoZmluZF9maW5hbF9vdmVycmlkZXIpOiBSZXR1cm4gZXJyb3JfbWFya19ub2RlIG9uIGVycm9yLgoKCSogZGVjbDIuYyAoa2V5X21ldGhvZCk6ICNpZiAwIGFjY2lkZW50YWwgY2hhbmdlLgoKMjAwMS0wNi0wNiAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIGNhbGwuYyAoY29udmVydF9kZWZhdWx0X2FyZyk6IFVzZSBJTlRFR1JBTF9UWVBFX1AuCgkoYnVpbGRfb3Zlcl9jYWxsKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZ3Jva3Bhcm1zKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IExpa2V3aXNlLgoKMjAwMS0wNi0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jIChiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogUm9idXN0aWZ5LgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IFRlbGwgdGhlIHJlcG9zaXRvcnkgY29kZSBhYm91dCB0aGUKCWNsb25lcywgbm90IHRoZSBjbG9uZWQgZnVuY3Rpb25zLgoJKiByZXBvLmMgKHJlcG9fdGVtcGxhdGVfdXNlZCk6IEV4cGxpY2l0bHkgaW5zdGFudGlhdGUgdGhlIGNsb25lZAoJZnVuY3Rpb24sIG5vdCB0aGUgY2xvbmVzLgoKMjAwMS0wNi0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSk6IFNldCBJQ1NfVVNFUl9GTEFHIGFuZAoJSUNTX0JBRF9GTEFHIG9uIGNyZWF0ZWQgY29udmVyc2lvbi4KCShjb21wYXJlX2ljcyk6IEJyZWFrIG91dCByYW5rLgoKMjAwMS0wNi0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoeHJlZl90YWcpOiBSZW1vdmUgZXh0cmFuZW91cyAlcyBvbiBkZXBlbmRlbnQgbmFtZQoJbG9va3VwIHdhcm5pbmcuCgoyMDAxLTA2LTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAobGF5b3V0X3Z0YWJsZV9kZWNsKTogRml4IG9mZiBieSBvbmUgZXJyb3Igb24KCWJ1aWxkX2luZGV4X3R5cGUuCgkoYnVpbGRfdnR0KTogTGlrZXdpc2UuCgkoYnVpbGRfY3Rvcl92dGJsX2dyb3VwKTogTGlrZXdpc2UuCgoyMDAxLTA2LTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAobWF5YmVfaW5kZW50X2hpZXJhcmNoeSk6IE5ldyBmdW5jdGlvbi4KCShkdW1wX2NsYXNzX2hpZXJhcmNoeV9yKTogQWRkIGZsYWdzLiBEdW1wIGV4dHJhIGJpbmZvCglpbmZvcm1hdGlvbiwgaWYgZW5hYmxlZC4gVXNlIG1heWJlX2luZGVudF9oaWVyYXJjaHkuIEFkanVzdAoJb3V0cHV0IGZvcm1hdC4KCShkdW1wX2NsYXNzX2hpZXJhcmNoeSk6IEFkanVzdCBwcm90b3R5cGUuIEFkanVzdCBvdXRwdXQgZm9ybWF0LgoJKGR1bXBfYXJyYXksIGR1bXBfdnRhYmxlLCBkdW1wX3Z0dCk6IE5ldyBmdW5jdGlvbnMuCgkoZmluaXNoX3N0cnVjdF8xKTogQWRqdXN0IGhpZXJhcmNoeSBkdW1waW5nLgoJKGluaXRpYWxpemVfdnRhYmxlKTogQ2FsbCBkdW1wX3Z0YWJsZS4KCShidWlsZF92dHQpOiBDYWxsIGR1bXBfdnR0LgoJKGJ1aWxkX2N0b3JfdnRibF9ncm91cCk6IENhbGwgZHVtcF92dGFibGUuCgkqIGRlY2wyLmMgKGZsYWdfZHVtcF9jbGFzc19sYXlvdXQpOiBSZW1vdmUuCgkoY3h4X2RlY29kZV9vcHRpb24pOiBSZW1vdmUgZHVtcCB0cmFuc2xhdGlvbiB1bml0CglhbmQgZHVtcCBjbGFzcyBoaWVyYXJjaHkgY2hlY2suIENhbGwgZHVtcF9zd2l0Y2hfcC4KCShmaW5pc2hfZmlsZSk6IEFkanVzdCBkdW1waW5nLgoJKGR1bXAuYyk6IE9ubHkgZHVtcCBiYXNlIGNsYXNzZXMgaWYgbm90IFRERl9TTElNLgoJT25seSBkdW1wIG5hbWVzcGFjZSBtZW1iZXJzIGlmIG5vdCBUREZfU0xJTS4KCSogb3B0aW1pemUuYyAoZHVtcF9mdW5jdGlvbik6IE5ldyBmdW5jdGlvbi4KCShvcHRpbWl6ZV9mdW5jdGlvbik6IENhbGwgZHVtcF9mdW5jdGlvbi4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9ib2R5KTogVXNlIGR1bXBfZW5hYmxlZF9wLgoKMjAwMS0wNi0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBnKysvMjkzNgoJUGFydCBtaXNzZWQgZnJvbSBmaXJzdCBjb21taXQKCSogZGVjbDIuYyAoZmluaXNoX2Fub25fdW5pb24pOiBDb3B5IGNvbnRleHQuCgoyMDAxLTA1LTMwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCVBSIGcrKy8yOTM2CgkqIG9wdGltaXplLmMgKHJlbWFwX2RlY2wpOiBSZW1hcCBhbm9ueW1vdXMgYWdncmVnYXRlIG1lbWJlcnMgdG9vLgoKMjAwMS0wNS0yNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBnKysvMjgyMwoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX2JvZHkpOiBEb24ndCBvcHRpbWl6ZSB0aHVua3MuCgoyMDAxLTA1LTI1ICBTYW0gVEggIDxzYW1AdWNoaWNhZ28uZWR1PgoKCSogY3AtdHJlZS5oIGxleC5oOiBGaXggaGVhZGVyIGluY2x1ZGUgZ3VhcmRzLgoKMjAwMS0wNS0yNSAgTWFyayBNaXRjaGVsbCA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFR3ZWFrLgoKMjAwMS0wNS0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogVGlkeS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFsd2F5cyBzZXQgZmxhZ19ub19idWlsdGluLgoKMjAwMS0wNS0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjE4NAoJKiBkZWNsMi5jIChkb19sb2NhbF91c2luZ19kZWNsKTogUHVzaCB0aGUgZGVjbHMsIGV2ZW4gaW4gYQoJdGVtcGxhdGUuCgoyMDAxLTA1LTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0aW1pemUuYyAoaW5pdGlhbGl6ZV9pbmxpbmVkX3BhcmFtZXRlcnMpOiBEb24ndCBzZXQKCVRSRUVfUkVBRE9OTFkgZm9yIGEgVkFSX0RFQ0wgdGFraW5nIHRoZSBwbGFjZSBvZiBhbiBpbmxpbmVkCglQQVJNX0RFQ0wuCgoyMDAxLTA1LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25fbWVycmlsbEByZWRoYXQuY29tPgoKCSogY2xhc3MuYywgY3AtdHJlZS5oLCBydHRpLmM6IFJlbW92ZSBjb21faW50ZXJmYWNlIGF0dHJpYnV0ZSBzdXBwb3J0LgoJKiB0cmVlLmMgKGNwX3ZhbGlkX2xhbmdfYXR0cmlidXRlKTogV2FybiBhYm91dCB1c2Ugb2YgY29tX2ludGVyZmFjZQoJYXR0cmlidXRlLgoKMjAwMS0wNS0yMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogcGFyc2UueTogUmVmZXIgdG8gY29tcG91bmQgbGl0ZXJhbHMgYXMgc3VjaCwgbm90IGFzCgljb25zdHJ1Y3Rvci1leHByZXNzaW9ucy4KCjIwMDEtMDUtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogSWdub3JlIGV4Y2VwdGlvbi1zcGVjaWZpY2F0aW9ucwoJd2hlbiBsb29raW5nIGZvciBtYXRjaGluZyBkZWxldGUgb3BlcmF0b3JzLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogQ29tcHV0ZSB3aGV0aGVyIG9yIG5vdCB0aGUgYWxsb2NhdGlvbgoJZnVuY3Rpb24gdXNlZCBpcyBhIHBsYWNlbWVudCBhbGxvY2F0aW9uIGZ1bmN0aW9uIG9yIG5vdCwgYW5kCgljb21tdW5pY2F0ZSB0aGlzIGluZm9ybWF0aW9uIHRvIGJ1aWxkX29wX2RlbGV0ZV9jYWxsLgoKMjAwMS0wNS0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uX21lcnJpbGxAcmVkaGF0LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeV9yZWYpOiBMb3NlIHZ0YmwgcGFybS4gIEZpeCBmb3IgbmV3IGFiaS4KCShidWlsZF92dGJsX3JlZik6IEFkanVzdC4KCShkZnNfYWNjdW11bGF0ZV92dGJsX2luaXRzKTogU2V0IFRSRUVfQ09OU1RBTlQgb24gdGhlIHZ0YWJsZSBhZGRyZXNzLgoJKiBkZWNsMi5jIChsYW5nX2Zfb3B0aW9ucyk6IFJlbW92ZSBodWdlLW9iamVjdHMsIHZ0YWJsZS10aHVua3MuCglSZS1hZGQgdnRhYmxlLWdjLgoJKHVuc3VwcG9ydGVkX29wdGlvbnMpOiBDb3JyZXNwb25kaW5nbHkuCgoJKiBkZWNsMi5jIChtYXliZV9tYWtlX29uZV9vbmx5KTogQ2hlY2sgZmxhZ193ZWFrLCBub3QKCXN1cHBvcnRzX29uZV9vbmx5KCkuCgoJKiBjcC10cmVlLmRlZiAoU1RBUlRfQ0FUQ0hfU1RNVCk6IExvc2UuCgkqIGR1bXAuYyAoY3BfZHVtcF90cmVlKTogRG9uJ3QgZHVtcCBpdC4gIERvIGR1bXAgSEFORExFUl9QQVJNUy4KCSogdHJlZS5jIChjcF9zdGF0ZW1lbnRfY29kZV9wKTogRG9uJ3QgY2FzZSBpdC4KCSogc2VtYW50aWNzLmMgKGNwX2V4cGFuZF9zdG10KTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoU1RBUlRfQ0FUQ0hfVFlQRSk6IExvc2UuCgkoSEFORExFUl9UWVBFKTogTmV3LgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogRG9uJ3Qgc3RhcnQgYW55IGJsb2Nrcy4KCVJldHVybiB0aGUgdHlwZS4KCShleHBhbmRfZW5kX2NhdGNoX2Jsb2NrKTogRG9uJ3QgZW5kIGFueSBibG9ja3MuCgkqIHBhcnNlLnkgKGhhbmRsZXIpOiBEb24ndCBwYXNzIGFueXRoaW5nIGZyb20gZmluaXNoX2hhbmRsZXJfcGFybXMKCXRvIGZpbmlzaF9oYW5kbGVyLgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5faGFuZGxlcik6IENhbGwgbm90ZV9sZXZlbF9mb3JfY2F0Y2ggaGVyZS4KCShmaW5pc2hfaGFuZGxlcl9wYXJtcyk6IERvbid0IHJldHVybiBhbnl0aGluZy4KCShnZW5ydGxfY2F0Y2hfYmxvY2ssIGJlZ2luX2NhdGNoX2Jsb2NrKTogTG9zZS4KCShnZW5ydGxfaGFuZGxlcik6IENhbGwgZXhwYW5kX3N0YXJ0X2NhdGNoIGhlcmUuCgoyMDAxLTA1LTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25fbWVycmlsbEByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlKTogU2V0IERFQ0xfQVNTRU1CTEVSX05BTUUgZm9yIHZ0YWJsZXMgaGVyZS4KCShnZXRfdnRhYmxlX2RlY2wsIGJ1aWxkX3Z0dCk6IE5vdCBoZXJlLgoKMjAwMS0wNS0yMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglQUiBjKysvMjc4MQoJKiBvcHRpbWl6ZS5jICh1cGRhdGVfY2xvbmVkX3Bhcm0pOiBDb3B5IGFkZHJlc3NhYmlsaXR5IGFuZCBvdGhlcgoJZmxhZ3MuCgoyMDAxLTA1LTIwICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbik6IElnbm9yZSBhcnRpZmljaWFsIGZ1bmN0aW9ucy4KCjIwMDEtMDUtMjAgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmdfaWRlbnRpZmllciwgQ19SSURfWVlDT0RFKTogVXBkYXRlLgoJKENfUklEX0NPREUpOiBSZW1vdmUuCgkqIGxleC5jIChjeHhfaW5pdF9vcHRpb25zKTogQ2FsbCBzZXRfaWRlbnRpZmllcl9zaXplLiAgVXBkYXRlLgoJKGluaXRfcGFyc2UpOiBEb24ndCBkbyBpdCBoZXJlLgoKMjAwMS0wNS0xOCAgRGllZ28gTm92aWxsbyAgPGRub3ZpbGxvQHJlZGhhdC5jb20+CgoJKiBkZWNsMi5jIChmaW5pc2hfb2JqZWN0cyk6IFVzZSB0aGUgb3JpZ2luYWwgU1lNQk9MX1JFRiBmcm9tIHRoZQoJZnVuY3Rpb24gZGVjbGFyYXRpb24gdG8gYXZvaWQgc3RyaXBwaW5nIHRoZSBzeW1ib2wncyBhdHRyaWJ1dGVzLgoKMjAwMS0wNS0xOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBBZGp1c3QgZXJyb3Igc3RyaW5nLgoJKHhyZWZfdGFnKTogQWRqdXN0IGZyaWVuZCBjbGFzcyBpbmplY3Rpb24gd2FybmluZy4gUmVtb3ZlIHRoZQoJaW5oZXJpdGVkIG5hbWUgZnJvbSB0aGUgY2xhc3Mgc2hhZG93ZWQgc2NvcGUuCgoyMDAxLTA1LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXhjZXB0LmMgKGNwX3Byb3RlY3RfY2xlYW51cF9hY3Rpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBEb24ndCBzZXQgcHJvdGVjdF9jbGVhbnVwX2FjdGlvbnMKCWhlcmUuICBEbyBzZXQgbGFuZ19wcm90ZWN0X2NsZWFudXBfYWN0aW9ucy4KCjIwMDEtMDUtMTYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGV3LmMgKHJlYWRfdG9rZW4pOiBDYWxsIHl5ZXJyb3Igb24gYWxsIHVuZXhwZWN0ZWQgdG9rZW5zLgoKMjAwMS0wNS0xNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluaXQuYyAobWVtYmVyX2luaXRfb2tfb3JfZWxzZSk6IFRha2UgYSB0cmVlIHJhdGhlciB0aGFuCglzdHJpbmcgZm9yIG5hbWUuCgkoZXhwYW5kX21lbWJlcl9pbml0KTogQWRqdXN0LgoKMjAwMS0wNS0xNCAgTmljayBDbGlmdG9uICA8bmlja2NAY2FtYnJpZGdlLnJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFN1cHByZXNzIHdhcm5pbmcgYWJvdXQgZHVwbGljYXRlCglkZWNscyBpZiB0aGUgZmlyc3QgZGVjbCBpcyBhIGZyaWVuZC4KCjIwMDEtMDUtMTIgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBleGNlcHQuYyAoY2hvb3NlX3BlcnNvbmFsaXR5X3JvdXRpbmUpOiBFeHBvcnQuICBBZGQKCWV4cGxhbmF0b3J5IGNvbW1lbnQuICBUYWtlIGFuIGVudW0gbGFuZ3VhZ2VzLCBub3QgYSBib29sZWFuLgoJKGluaXRpYWxpemVfaGFuZGxlcl9wYXJtKTogQWRqdXN0IHRvIG1hdGNoLgoJKiBjcC10cmVlLmg6IFByb3RvdHlwZSBjaG9vc2VfcGVyc29uYWxpdHlfcm91dGluZS4KCSogbGV4LmMgKGhhbmRsZV9wcmFnbWFfamF2YV9leGNlcHRpb25zKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfY3BfcHJhZ21hKTogUmVnaXN0ZXIgI3ByYWdtYSBHQ0MgamF2YV9leGNlcHRpb25zLgoKMjAwMS0wNS0xMiAgTmVpbCBCb290aCAgPG5laWxAY2F0LmRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIG1ldGhvZC5jIChidWlsZF9tYW5nbGVkX0M5OV9uYW1lKTogUmVtb3ZlIHVudXNlZCBwcm90b3R5cGUuCgoyMDAxLTA1LTEyICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGNwLXRyZWUuaCAocHRybWVtZnVuY192Yml0X3doZXJlX3QpOiBEZWNsYXJlIHR5cGUuCgkqIHR5cGVjay5jIChnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYywKCWJ1aWxkX3B0cm1lbWZ1bmMsIGV4cGFuZF9wdHJtZW1mdW5jX2NzdCk6IFRha2UKCVRBUkdFVF9QVFJNRU1GVU5DX1ZCSVRfTE9DQVRJT04gaW50byBhY2NvdW50LgoKCVJldmVydGVkIEdlb2ZmIEtlYXRpbmcncyAyMDAxLTA1LTAzJ3MgcGF0Y2guCgoyMDAxLTA1LTExICBJcmEgUnViZW4JPGlyYUBhcHBsZS5jb20+CgoJKiBjcC9jcC10cmVlLmggKENfRVhQX09SSUdJTkFMX0NPREUpOiBEZWxldGU7IGRlY2xhcmVkIGluIGMtY29tbW9uLmguCgoyMDAxLTA1LTExICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjcC10cmVlLmggKGZpbmlzaF9sYWJlbF9leHByLCBsb29rdXBfbGFiZWwpOiBEZWxldGUuCgkqIHBhcnNlLnk6IFVwZGF0ZSBmb3IgJyYmJzsgZG9uJ3QgaXNzdWUgd2FybmluZyBoZXJlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2xhYmVsX2V4cHIpOiBEZWxldGUuCgoyMDAxLTA1LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3BsYXktdHJlZS5oIChzcGxheV90cmVlX21heCk6IE5ldyBmdW5jdGlvbi4KCShzcGxheV90cmVlX21pbik6IExpa2V3aXNlLgoKMjAwMS0wNS0wMyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCSogY3AtdHJlZS5oIChlbnVtIGNwX3RyZWVfaW5kZXgpOiBBZGQgQ1BUSV9QRk5fVkZMQUdfSURFTlRJRklFUi4KCShwZm5fdmZsYWdfaWRlbnRpZmllcik6IERlZmluZS4KCVVwZGF0ZSBjb21tZW50IGFib3V0IGxheW91dCBvZiBwb2ludGVyIGZ1bmN0aW9ucy4KCShidWlsZF9wdHJtZW1mdW5jMSk6IFVwZGF0ZSBwcm90b3R5cGUuCgkoZXhwYW5kX3B0cm1lbWZ1bmNfY3N0KTogVXBkYXRlIHByb3RvdHlwZS4KCSogZGVjbC5jIChpbml0aWFsaXplX3ByZWRlZmluZWRfaWRlbnRpZmllcnMpOiBJbml0aWFsaXplCglwZm5fdmZsYWdfaWRlbnRpZmllci4KCShidWlsZF9wdHJtZW1mdW5jX3R5cGUpOiBXaGVuIEZVTkNUSU9OX0JPVU5EQVJZIDwgMTYsIGFkZAoJYW4gZXh0cmEgZmllbGQgdG8gdGhlIHR5cGUuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2NvbnN0YW50KTogUGFzcyAnZmxhZycgYmV0d2VlbgoJZXhwYW5kX3B0cm1lbWZ1bmNfY3N0IGFuZCBidWlsZF9wdHJtZW1mdW5jMS4KCSogdHlwZWNrLmMgKGdldF9tZW1iZXJfZnVuY3Rpb25fZnJvbV9wdHJmdW5jKTogV2hlbgoJRlVOQ1RJT05fQk9VTkRBUlkgPCAxNiwgbG9vayBhdCBhZGRpdGlvbmFsIGZpZWxkIHRvIGRldGVybWluZQoJaWYgYSBwb2ludGVyLXRvLW1lbWJlciBpcyBhIHJlYWwgcG9pbnRlciBvciBhIHZ0YWJsZSBvZmZzZXQuCgkoYnVpbGRfcHRybWVtZnVuYzEpOiBBZGQgbmV3IHBhcmFtZXRlciB0byBjb250YWluIGV4dHJhIGZpZWxkLgoJKGJ1aWxkX3B0cm1lbWZ1bmMpOiBQYXNzIHRoZSBleHRyYSBmaWVsZCBhcm91bmQuCgkoZXhwYW5kX3B0cm1lbWZ1bmNfY3N0KTogQWRkIG5ldyBwYXJhbWV0ZXIgdG8gcmV0dXJuIGV4dHJhIGZpZWxkLgoJKHBmbl9mcm9tX3B0cm1lbWZ1bmMpOiBJZ25vcmUgdGhlIGV4dHJhIGZpZWxkLgoKMjAwMS0wNS0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZmxhZ19pbmxpbmVfdHJlZXMpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkanVzdCBoYW5kbGluZyBvZgoJZmxhZ19pbmxpbmVfZnVuY3Rpb25zIGFuZCBmbGFnX2lubGluZV90cmVlcyB0byBzdXBwb3J0IC1PMy4KCShncm9rZm5kZWNsKTogU2V0IERFQ0xfSU5MSU5FIG9uIGFsbCBmdW5jdGlvbnMgaWYgdGhhdCdzIHdoYXQKCXRoZSB1c2VyIHJlcXVlc3RlZC4KCShzYXZlX2Z1bmN0aW9uX2RhdGEpOiBDbGVhciBERUNMX0lOTElORSBpbgoJY3VycmVudF9mdW5jdGlvbl9jYW5ub3RfaW5saW5lIGlzIG5vbi1OVUxMLgoJKiBkZWNsMi5jIChmbGFnX2lubGluZV90cmVlcyk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoKMjAwMS0wNS0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGR1bXAuYyAoY3BfZHVtcF90cmVlLCBVU0lOR19TVE1UIGNhc2UpOiBOZXcgY2FzZS4KCSogdHJlZS5jIChjcF9zdGF0ZW1lbnRfY29kZV9wKTogQWRkIFVTSU5HX1NUTVQuCgkqIGRlY2wyLmMgKGRvX3VzaW5nX2RpcmVjdGl2ZSk6IEFkZCB0aGUgdXNpbmcgZGlyZWN0aXZlIHN0YXRlbWVudC4KCgkqIHRyZWUuYyAod2Fsa190cmVlKTogUmVmb3JtYXQgYW4gaWYgYmxvY2suCgoyMDAxLTA1LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChjb21wdXRlX2FycmF5X2luZGV4X3R5cGUpOiBEb24ndCB0cnkgdG8gZG8gYW55dGhpbmcgd2l0aAoJdGhlIGluZGljZXMgd2hlbiBwcm9jZXNzaW5nIGEgdGVtcGxhdGUuCgoyMDAxLTA1LTAyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxsLmM6IE5VTExfUFRSIC0+IE5VTEwuCgkqIGNsYXNzLmM6IExpa2V3aXNlLgoJKiBjdnQuYzogTGlrZXdpc2UuCgkqIGRlY2wuYzogTGlrZXdpc2UuCgkqIGRlY2wyLmM6IExpa2V3aXNlLgoJKiBleGNlcHQuYzogTGlrZXdpc2UuCgkqIGluaXQuYzogTGlrZXdpc2UuCgkqIHJ0dGkuYzogTGlrZXdpc2UuCgkqIHNlYXJjaC5jOiBMaWtld2lzZS4KCSogdHJlZS5jOiBMaWtld2lzZS4KCSogdHlwZWNrLmM6IExpa2V3aXNlLgoJKiB0eXBlY2syLmM6IExpa2V3aXNlLgoKMjAwMS0wNS0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGRvX3VzaW5nX2RpcmVjdGl2ZSk6IFJldmVydCBwcmV2aW91cyBwYXRjaC4KCjIwMDEtMDUtMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmRlZiAoVVNJTkdfU1RNVCk6IE5ldyBzdGF0ZW1lbnQgbm9kZS4KCSogY3AtdHJlZS5oIChVU0lOR19TVE1UX05BTUVTUEFDRSk6IE5ldyBtYWNyby4KCSogZGVjbDIuYyAoZG9fdXNpbmdfZGlyZWN0aXZlKTogQWRkIFVTSU5HX1NUTVQgdG8gc3RhdGVtZW50Cgl0cmVlLiBEb24ndCBlbWl0IGVycm9ycyB3aGVuIHByb2Nlc3NpbmcgdGVtcGxhdGUgZGVjbC4KCSogcHQuYyAodHN1YnN0X2V4cHIsIFVTSU5HX1NUTVQgY2FzZSk6IE5ldyBjYXNlLgoJKiBzZW1hbnRpY3MuYyAoY3BfZXhwYW5kX3N0bXQsIFVTSU5HX1NUTVQgY2FzZSk6IE5ldyBjYXNlLgoKMjAwMS0wNS0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X29wKTogQ29udmVydCBhcmdzIGZyb20gcmVmZXJlbmNlIGhlcmUuCgkoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IERvbid0IGNvbnZlcnQgaGVyZS4KCjIwMDEtMDUtMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzcGV3LmMgKGxhc3RfdG9rZW5faWQpOiBOZXcgc3RhdGljIHZhcmlhYmxlLgoJKHJlYWRfdG9rZW4pOiBTZXQgaXQgaGVyZS4KCSh5eWVycm9yKTogVXNlIGl0IGhlcmUuCgoyMDAxLTA0LTMwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY3Z0LmM6IERvd25jYXNlIENfUFJPTU9USU5HX0lOVEVHRVJfVFlQRV9QIGludm9jYXRpb25zLgoJKiBkZWNsLmM6IExpa2V3aXNlLgoKMjAwMS0wNC0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGd4eGludC50ZXhpOiBSZW1vdmUuCgkqIE1ha2UtbGFuZy5pbjogUmVtb3ZlIGFsbCB0cmFjZXMgb2YgZ3h4aW50LnRleGkuCgpNb24gQXByIDMwIDE2OjE0OjEwIDIwMDEgIE1hcmsgUCBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKHN0YXJ0X3N0YXRpY19pbml0aWFsaXphdGlvbl9vcl9kZXN0cnVjdGlvbik6IENvcnJlY3QKCWxvZ2ljIHRvIGhhbmRsZSB0aGUgLWZuby11c2UtY3hhLWF0ZXhpdCBjYXNlLgoKMjAwMS0wNC0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG9wdGltaXplLmMgKHVwZGF0ZV9jbG9uZWRfcGFybSk6IE5ldyBmdW5jdGlvbi4KCShtYXliZV9jbG9uZV9ib2R5KTogVXNlIGl0LiAgVXBkYXRlIHRoZSBgdGhpcycgcGFyYW1ldGVyIHRvby4KCjIwMDEtMDQtMjkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGRlY2wyLmMgKHVuc3VwcG9ydGVkX29wdGlvbnMpOiBBZGQgbmV3LWFiaS4KCSogbGFuZy1vcHRpb25zLmg6IFJlbW92ZSBubyBsb25nZXIgc3VwcG9ydGVkIG9wdGlvbnMuCgoyMDAxLTA0LTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZXhjZXB0LmMgKGNhbl9jb252ZXJ0X2VoKTogRG9uJ3QgY2hlY2sgdGVtcGxhdGUgcGFybXMsCgl0eXBlbmFtZSB0eXBlcyBldGMuCgoyMDAxLTA0LTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0aW1pemUuYyAobWF5YmVfY2xvbmVfYm9keSk6IENvcHkgcGFyYW1ldGVyIG5hbWVzIGFuZCBsb2NhdGlvbnMuCgoyMDAxLTA0LTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChhZGp1c3RfY2xvbmVfYXJncyk6IFByb3RvdHlwZSBuZXcgZnVuY3Rpb24uCgkqIGNsYXNzLmMgKGFkanVzdF9jbG9uZV9hcmdzKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogQ2FsbCBpdCBmb3IgaW4gY2hhcmdlIGN0b3JzLgoKMjAwMS0wNC0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1ldGhvZC5jICh1c2VfdGh1bmspOiBNYWtlIHN1cmUgdGhhdCB0aHVua3MgcmVhbGx5IGFyZSBlbWl0dGVkCgl3aGVuIHJlcXVlc3RlZC4KCjIwMDEtMDQtMjYgIE5hdGhhbiBTaWR3ZWxsIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1hbmdsZS5jICh3cml0ZV9jaGFycyk6IE5ldyBtYWNyby4KCShod2ludF90b19hc2NpaSk6IE5ldyBmdW5jdGlvbgoJKHdyaXRlX251bWJlcik6IFVzZSBpdC4KCSh3cml0ZV9pbnRlZ2VyX2NzdCk6IERlYWwgd2l0aCByZWFsbHkgYmlnIG51bWJlcnMuCgoyMDAxLTA0LTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0aW1pemUuYyAobWF5YmVfY2xvbmVfYm9keSk6IENvcHkgVFJFRV9QVUJMSUMgYmVmb3JlIGVtaXR0aW5nCgl0aGUgY2xvbmUuCgoyMDAxLTA0LTI1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFNldCBjb250ZXh0IG9mIG5hbWVzcGFjZSBzY29wZQoJVFlQRV9ERUNMUy4KCjIwMDEtMDQtMjQgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBjcC9vcHRpbWl6ZS5jOiBJbmNsdWRlIGhhc2h0YWIuaC4KCShzdHJ1Y3QgaW5saW5lX2RhdGEpOiBBZGQgdHJlZV9wcnVuZXIuCgkoZXhwYW5kX2NhbGxfaW5saW5lLCBleHBhbmRfY2FsbHNfaW5saW5lKTogVXNlIGl0IHdoZW4gY2FsbGluZwoJd2Fsa190cmVlLgoJKG9wdGltaXplX2Z1bmN0aW9uKTogSW5pdGlhbGl6ZSBhbmQgZnJlZSB0cmVlX3BydW5lci4KCjIwMDEtMDQtMjQgIE5hdGhhbiBTaWR3ZWxsIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglMYXp5IF9fRlVOQ1RJT05fXyBnZW5lcmF0aW9uLgoJKiBjcC10cmVlLmRlZiAoRlVOQ1RJT05fTkFNRSk6IFJlbW92ZS4KCSogY3AtdHJlZS5oIChmdW5jdGlvbl9uYW1lX2RlY2xhcmVkX3ApOiBSZW1vdmUuCgkoY3BfZm5hbWVfaW5pdCk6IFByb3RvdHlwZS4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IGdlbmVyYXRlIF9fRlVOQ1RJT05fXyBldCBhbCBpZHMsCglkb24ndCBjYWxsIGRlY2xhcmVfZnVuY3Rpb25fbmFtZS4gQ2FsbCBzdGFydF9mbmFtZV9kZWNscy4KCShjcF9tYWtlX2ZuYW1lX2RlY2wpOiBBZGp1c3QgcGFyYW1ldGVycy4gR2VuZXJhdGUgdGhlIG5hbWUuIERvbid0CgljbG9iYmVyIHRoZSBsaW5lIG51bWJlci4KCShjcF9mbmFtZV9pbml0KTogTmV3IGZ1bmN0aW9uLgoJKHN0YXJ0X2Z1bmN0aW9uKTogQ2FsbCBzdGFydF9mbmFtZV9kZWNscy4KCShmaW5pc2hfZnVuY3Rpb24pOiBDYWxsIGZpbmlzaF9mbmFtZV9kZWNscy4KCSogbGV4LmMgKHJlc3dvcmRzKTogQWRkIHNsb3RzIGZvciBfX0ZVTkNUSU9OX18gZXQgYWwuCgkocmlkX3RvX3l5KTogQWRkIG1hcHBpbmdzIGZvciBfX0ZVTkNUSU9OX18gZXQgYWwuCgkqIG9wdGltaXplLmMgKG1heWJlX2Nsb25lX2JvZHkpOiBSZW1vdmUgZnVuY3Rpb25fbmFtZV9kZWNsYXJlZF9wLgoJKiBwYXJzZS55IChWQVJfRlVOQ19OQU1FKTogTmV3IHRva2VuLgoJKHByaW1hcnkpOiBBZGQgVkFSX0ZVTkNfTkFNRS4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBBZGp1c3QgYSBERUNMX1BSRVRUWV9GVU5DVElPTl9QJ3MKCWdlbmVyYXRpb24uCgkodHN1YnN0LCBGVU5DVElPTl9OQU1FIGNhc2UpOiBSZW1vdmUuCgkodHN1YnN0X2NvcHksIEZVTkNUSU9OX05BTUUgY2FzZSk6IFJlbW92ZS4KCSh0c3Vic3RfZXhwciwgREVDTF9TVE1UIGNhc2UpOiBCZSBjYXJlZnVsIHdpdGggYQoJREVDTF9QUkVUVFlfRlVOQ1RJT05fUC4KCShpbnN0YW50aWF0ZV9kZWNsKTogUmVtb3ZlIGZ1bmN0aW9uX25hbWVfZGVjbGFyZWRfcC4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NvbXBvdW5kX3N0YXRlbWVudCk6IERvbid0IGNhbGwKCWRlY2xhcmVfZnVuY3Rpb25fbmFtZSBoZXJlLgoJKHNldHVwX3Z0YmxfcHRyKS4gRG9uJ3Qgc2F2ZSAmIHJlc3RvcmUgZnVuY3Rpb25fbmFtZV9kZWNsYXJlZF9wLgoJKGZpbmlzaF90cmFuc2xhdGlvbl91bml0KTogQ2FsbCBmaW5pc2hfZm5hbWVfZGVjbHMuCgkoZXhwYW5kX2JvZHkpOiBSZW1vdmUgZnVuY3Rpb25fbmFtZV9kZWNsYXJlZF9wLgoJKiB0eXBlY2syLmMgKGRpZ2VzdF9pbml0KTogQWxsb3cgYW55IEVSUk9SX01BUksuCgoyMDAxLTA0LTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBVc2UgVk9JRF9UWVBFX1AuCgkqIHNlbWFudGljcy5jOiBGaXggc29tZSB0eXBvcy4KCjIwMDEtMDQtMjMgIFBoaWwgRWR3YXJkcyAgPHBtZUBzb3VyY2VzLnJlZGhhdC5jb20+CgoJKiBjcC9kZWNsMi5jIChmbGFnX2hvbm9yX3N0ZCk6ICBBbHdheXMgaW5pdGlhbGl6ZSB0byAxLgoKMjAwMS0wNC0yMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogeHJlZi5jIChHTlVfeHJlZl9maWxlKTogVXNlIGNvbmNhdCBpbiBsaWV1IG9mIHhtYWxsb2Mvc3ByaW50Zi4KCjIwMDEtMDQtMjMgIEphc29uIE1lcnJpbGwgIDxqYXNvbl9tZXJyaWxsQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYyAoYnVpbGRfdGhyb3cpOiBXcmFwIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgZXhjZXB0aW9uCglvYmplY3QgaW4gYSBNVVNUX05PVF9USFJPV19FWFBSLgoJKGRvX2ZyZWVfZXhjZXB0aW9uKTogI2lmIDAuCgoyMDAxLTA0LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChmaW5pc2hfZW51bSk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGRlY2wuYyAoZmluaXNoX2VudW0pOiBSZW9yZ2FuaXplLgoJKiBwYXJzZS55IChzdHJ1Y3RzcCk6IEFkanVzdCBjYWxscyB0byBmaW5pc2hfZW51bS4KCjIwMDEtMDQtMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKGNwX3RyZWVfZXF1YWwpOiBBZGp1c3QgZmluYWwgc3dpdGNoIGZvcm1hdHRpbmcuIEFkZAoJJ3QnIGNhc2UuCgoyMDAxLTA0LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoZGZzX3Vuc2hhcmVkX3ZpcnR1YWxfYmFzZXMpOiBBZGQgQVRUUklCVVRFX1VOVVNFRC4KCShsYXlvdXRfZW1wdHlfYmFzZSk6IFJldHVybiBhdCBlbmQgZmxhZy4KCShidWlsZF9iYXNlX2ZpZWxkKTogTGlrZXdpc2UuCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBMaWtld2lzZS4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IERvbid0IGFkZCAxIHRvIGVvYyB2YWx1ZS4KCShlbmRfb2ZfY2xhc3MpOiBVc2UgZnVsbCBzaXplIGZvciBlbXB0eSBiYXNlcy4KCShsYXlvdXRfY2xhc3NfdHlwZSk6IENsZWFyIENMQVNTTkVBUkxZX0VNUFRZX1AgaWYgd2UgYXBwZW5kZWQKCWVtcHR5IGJhc2VzLiBEb24ndCBhZGQgMSB0byBlb2MgdmFsdWUuIE9ubHkgYWRkIHRyYWlsaW5nIHBhZGRpbmcKCWlmIHdlJ3JlIGFuIGVtcHR5IGNsYXNzIHdpdGggbm8gZW1wdHkgYmFzZXMuCgkoZHVtcF9jbGFzc19oaWVyYXJjaHkpOiBEdW1wIHNpemUgYW5kIGFsaWdubWVudC4KCjIwMDEtMDQtMjAgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY2FsbC5jIChtYXliZV9oYW5kbGVfcmVmX2JpbmQpOiBDb3B5IElDU19VU0VSX0ZMQUcgYW5kCglJQ1NfQkFEX0ZMQUcuCgoyMDAxLTA0LTIwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfcik6IElmIGxvb2tpbmcgZm9yIHR5cGUgYW5kIG5vbi1UWVBFX0RFQ0wKCWlzIGZvdW5kLCBsb29rIGZpcnN0IGlmIG5hbWUgZG9lcyBub3QgbWF0Y2ggdGhlIHN0cnVjdHVyZSBuYW1lLgoKMjAwMS0wNC0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoREVDTF9MQU5HVUFHRSk6IERvbid0IGFzc3VtZSBERUNMX0xBTkdfU1BFQ0lGSUMgaXMKCXNldC4KCShTRVRfREVDTF9MQU5HVUFHRSk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBVc2UgU0VUX0RFQ0xfTEFOR1VBR0UuCgkocHVzaGRlY2wpOiBMaWtld2lzZS4KCShidWlsZF9saWJyYXJ5X2ZuXzEpOiBMaWtld2lzZS4KCShidWlsZF9jcF9saWJyYXJ5X2ZuKTogTGlrZXdpc2UuCgkoZ3Jva2ZuZGVjbCk6IExpa2V3aXNlLgoJKGdyb2t2YXJkZWNsKTogTWFyayBgZXh0ZXJuICJDIicgdmFyaWFibGVzIGFzIGhhdmluZyBDIGxpbmthZ2UuCgkqIGRlY2wyLmMgKGdyb2tjbGFzc2ZuKTogVXNlIFNFVF9ERUNMX0xBTkdVQUdFLgoJKiBsZXguYyAocmV0cm9maXRfbGFuZ19kZWNsKTogTGlrZXdpc2UuCgkqIG1hbmdsZS5jIChtYW5nbGVfZGVjbF9zdHJpbmcpOiBEb24ndCBtYW5nbGUgdGhlIG5hbWVzIG9mCgl2YXJpYWJsZXMgZGVjbGFyZWQgd2l0aCBDIGxhbmd1YWdlIGxpbmthZ2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uKTogVXNlIFNFVF9ERUNMX0xBTkdVQUdFLgoKMjAwMS0wNC0xOCAgSm9obiBEYXZpZCBBbmdsaW4gIDxkYXZlQGhpYXVseTEuaGlhLm5yYy5jYT4KCgkqIHNlbWFudGljcy5jIChzaW1wbGlmeV9hZ2dyX2luaXRfZXhwcnNfcik6IERvbid0IHJlc3RvcmUKCWZsYWdfYWNjZXNzX2NvbnRyb2wgZnJvbSB1bmluaXRpYWxpemVkIHN0b3JhZ2UuCgoyMDAxLTA0LTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChUWVBFX1BUUk1FTV9DTEFTU19UWVBFKTogSW1wcm92ZSBkb2N1bWVudGF0aW9uLgoJKiBtYW5nbGUuYyAod3JpdGVfcG9pbnRlcl90b19tZW1iZXJfdHlwZSk6IEZpeCBtYW5nbGluZyBvZgoJcG9pbnRlcnMgdG8gY3YtcXVhbGlmaWVkIG1lbWJlciBmdW5jdGlvbiB0eXBlcy4KCgkqIGluaXQuYyAoYnVpbGRfZGVsZXRlKTogQ3JlYXRlIGEgU0FWRV9FWFBSIGZvciB0aGUgYWRkcmVzcyBpZgoJd2UncmUgZ29pbmcgdG8gdXNlIGl0IG1vcmUgdGhhbiBvbmNlLgoKMjAwMS0wNC0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoREVMVEEyX0ZST01fUFRSTUVNRlVOQyk6IFJlbW92ZS4KCShleHBhbmRfcHRyZW1mdW5jX2NzdCk6IENoYW5nZSBwcm90b3R5cGUuCgkoZGVsdGEyX2Zyb21fcHRybWVtZnVuYyk6IFJlbW92ZS4KCSogZXhwci5jIChjcGx1c19leHBhbmRfY29uc3RhbnQpOiBBZGp1c3QgY2FsbCB0bwoJZXhwYW5kX3B0cm1lbWZ1bmNfY3N0LgoJKiB0eXBlY2suYyAoYnVpbGRfcHRybWVtZnVuYzEpOiBTaW1wbGlmeS4KCShidWlsZF9wdHJtZW1mdW5jKTogTWFrZSBzdXJlIHRoYXQgY2FzdGluZyBhIFBUUk1FTV9DU1Qgc3RpbGwKCXJlc3VsdHMgaW4gYSBjb25zdGFudC4KCShleHBhbmRfcHRybWVtZnVuY19jc3QpOiBSZW1vdmUgaWR4IGFuZCBkZWx0YTIgcGFyYW1ldGVycy4KCShkZWx0YTJfZnJvbV9wdHJtZW1mdW5jKTogUmVtb3ZlLgoJKHBmbl9mcm9tX3B0cm1lbWZ1bmMpOiBBZGp1c3QgY2FsbCB0byBleHBhbmRfcHRybWVtZnVuY19jc3QuCgoyMDAxLTA0LTEyICBKYXNvbiBNZXJyaWxsICA8amFzb25fbWVycmlsbEByZWRoYXQuY29tPgoKCSogY3AtdHJlZS5oIChkZWNsX25hbWVzcGFjZV9saXN0KTogTmV3IG1hY3JvLgoJKHN0cnVjdCBzYXZlZF9zY29wZSk6IEFkZCBkZWNsX25zX2xpc3QuCgkqIGRlY2wuYyAobWFya19zYXZlZF9zY29wZSk6IE1hcmsgaXQuCgkqIGRlY2wyLmM6IExvc2Ugc3RhdGljIGRlY2xfbmFtZXNwYWNlX2xpc3QuCgkoaW5pdF9kZWNsMik6IERvbid0IHNhdmUgaXQuCgoyMDAxLTA0LTEyICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjcC10cmVlLmggKHdhcm5fcmV0dXJuX3R5cGUsIHl5bGV4KTogRGVsZXRlIHJlZHVuZGFudAoJZGVjbGFyYXRpb25zLgoKCSogZGVjbC5jIChjdXJyZW50X2NsYXNzX2RlcHRoLCBnbG9iYWxfbmFtZXNwYWNlKTogTGlrZXdpc2UuCgoJKiBkZWNsMi5jIChjdXJyZW50X2NsYXNzX2RlcHRoLCBmbGFnX2dudV94cmVmKTogTGlrZXdpc2UKCgkqIHJlcG8uYyAoZmxhZ191c2VfcmVwb3NpdG9yeSk6IExpa2V3aXNlLgoKMjAwMS0wNC0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3AtdHJlZS5oIChwZWRhbnRpYywgY29udmVydCwgZ2xvYmFsX2JpbmRpbmdzX3AsIGluc2VydF9ibG9jaywKCXNldF9ibG9jaywgcHVzaGRlY2wsIGdldGRlY2xzLCBnZXR0YWdzLCBpbml0X2RlY2xfcHJvY2Vzc2luZywKCW1heWJlX2J1aWxkX2NsZWFudXAsIGNvcHlfbGFuZ19kZWNsLCBwcmVwX3N0bXQsIGx2YWx1ZV9wLAoJbHZhbHVlX29yX2Vsc2UsIHByaW50X2xhbmdfc3RhdGlzdGljcywgY29tcF90YXJnZXRfdHlwZXMsCgl1bnNpZ25lZF90eXBlLCBzaWduZWRfdHlwZSwgc2lnbmVkX29yX3Vuc2lnbmVkX3R5cGUsCglidWlsZF9mdW5jdGlvbl9jYWxsLCBtYXJrX2FkZHJlc3NhYmxlLCBpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOgoJRGVsZXRlIHJlZHVuZGFudCBkZWNsYXJhdGlvbnMuCgoyMDAxLTA0LTExICBKYXNvbiBNZXJyaWxsICA8amFzb25fbWVycmlsbEByZWRoYXQuY29tPgoKCSogY3AtdHJlZS5oIChUWVBFX0xJTktBR0VfSURFTlRJRklFUik6IE5ldyBtYWNyby4KCShUWVBFX0FOT05ZTU9VU19QKTogTmV3IG1hY3JvLgoJKFRBR0dFRF9UWVBFX1ApOiBOZXcgbWFjcm8uCgkqIGRlY2wuYyAoY2hlY2tfdGFnX2RlY2wpOiBVc2UgVFlQRV9BTk9OWU1PVVNfUC4KCShncm9rZm5kZWNsLCBncm9rdmFyZGVjbCwgZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCSogdHJlZS5jIChub19saW5rYWdlX2hlbHBlcik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKiBwdC5jIChjb252ZXJ0X3RlbXBsYXRlX2FyZ3VtZW50KTogTGlrZXdpc2UuCgkqIGxleC5jIChjaGVja19mb3JfbWlzc2luZ19zZW1pY29sb24pOiBMaWtld2lzZS4KCjIwMDEtMDQtMTIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChkZnNfdW5zaGFyZWRfdmlydHVhbF9iYXNlcyk6IE5ldyBmdW5jdGlvbi4KCShtYXJrX3ByaW1hcnlfYmFzZXMpOiBDYWxsIGl0LgoJKGNoZWNrX2Jhc2VzKTogSWdub3JlIHZpcnR1YWwgYmFzZXMgd2hlbiBkZXRlcm1pbmluZwoJbmVhcmx5LWVtcHRpbmVzcy4KCjIwMDEtMDQtMTIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IENsZWFyIERFQ0xfQ0xPTkVEX0ZVTkNUSU9OLgoKMjAwMS0wNC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG9wdGltaXplLmMgKG1heWJlX2Nsb25lX2JvZHkpOiBDb3B5IERFQ0xfTlVNX1NUTVRTIGZyb20gdGhlCgljbG9uZWQgZnVuY3Rpb24gdG8gdGhlIGNsb25lLgoKMjAwMS0wNC0xMSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChjcC9zZW1hbnRpY3Mubyk6IERlcGVuZCBvbiAkKEVYUFJfSCkuCgoJKiBzZW1hbnRpY3MuYzogSW5jbHVkZSBleHByLmguCgoyMDAxLTA0LTExICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogbWV0aG9kLmMgKGltcGxpY2l0bHlfZGVjbGFyZV9mbik6IENvbW1vbml6ZSBjb2RlIGZvciBjb3B5IGN0b3IKCWFuZCBhc3NpZ25tZW50IG9wLiBTZXQgVFJFRV9VU0VEIGZvciBwYXJhbWV0ZXIuCgoyMDAxLTA0LTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoZmluZF9maW5hbF9vdmVycmlkZXJfZGF0YSk6IEFkZCBgY2FuZGlkYXRlcycuCgkoZGZzX2ZpbmRfZmluYWxfb3ZlcnJpZGVyKTogRG9uJ3QgaXNzdWUgZXJyb3IgbWVzc2FnZXMKCXByZW1hdHVyZWx5LgoJKGZpbmRfZmluYWxfb3ZlcnJpZGVyKTogSXNzdWUgZXJyb3IgbWVzc2FnZXMgaGVyZS4KCShidWlsZF9iYXNlX2ZpZWxkKTogRG9uJ3Qgd2FybiBhYm91dCBhbWdpYnVvdXMgZGlyZWN0IGJhc2VzIGhlcmUuCgkod2Fybl9hYm91dF9hbWJpZ3VvdXNfZGlyZWN0X2Jhc2VzKTogTmV3IGZ1bmN0aW9uLgoJKGxheW91dF9jbGFzc190eXBlKTogVXNlIGl0LgoKMjAwMS0wNC0xMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9hcnJheV9yZWYpOiBQdXNoIHRoZSBhcnJheSByZWZlcmVuY2UgaW5zaWRlCglDT01QT1VORF9FWFBSIGFuZCBDT05EX0VYUFIuCgoyMDAxLTA0LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX1RISVNfSU5MSU5FKTogUmVuYW1lIHRvIERFQ0xfREVDTEFSRURfSU5MSU5FX1AuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKG1heWJlX2NvbW1vbml6ZV92YXIpOiBMaWtld2lzZS4KCShncm9rZm5kZWNsKTogTGlrZXdpc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShzdGFydF9tZXRob2QpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoa2V5X21ldGhvZCk6IExpa2V3aXNlLgoJKGltcG9ydF9leHBvcnRfZGVjbCk6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogTGlrZXdpc2UuCgkqIG9wdGltaXplLmMgKG1heWJlX2Nsb25lX2JvZHkpOiBMaWtld2lzZS4KCjIwMDEtMDQtMDUgIEJlbmphbWluIEtvc25payAgPGJrb3pAcmVkaGF0LmNvbT4KCgkqIGxhbmctc3BlY3MuaDogQWRkIF9fREVQUkVDQVRFRC4KClRodSBBcHIgIDUgMTY6NTQ6MjkgMjAwMSAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIHNlYXJjaC5jIChnZXRfZHluYW1pY19jYXN0X2Jhc2VfdHlwZSk6IFdoZW4gYnVpbGRpbmcgYSBuZXcKCWNvbnN0YW50LCBzZXQgaXRzIHR5cGUgdG8gc3NpemV0eXBlLgoKMjAwMS0wNC0wNCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBvcHRpbWl6ZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBPbmx5IGFkZCBuZXdseSBpbmxpbmVkIHN0YXRlbWVudHMKCWludG8gaW5saW5lZF9zdG10cy4KCjIwMDEtMDQtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKE9QRVJBVE9SX0FTU0lHTl9GT1JNQVQpOiBSZW1vdmUuCgkoT1BFUkFUT1JfRk9STUFUKTogTGlrZXdpc2UuCgkoT1BFUkFUT1JfVFlQRU5BTUVfRk9STUFUKTogTGlrZXdpc2UuCgkqIG9wZXJhdG9ycy5kZWY6IFJlbW92ZSBvbGQgbmFtZS1tYW5nbGluZyBpbmZvcm1hdGlvbi4KCSogZGVjbC5jIChncm9rX29wX3Byb3BlcnRpZXMpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkqIGxleC5jIChpbml0X29wZXJhdG9ycyk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGdldF90aW5mb19kZWNsKTogSXNzdWUgZXJyb3IgbWVzc2FnZXMgYWJvdXQgdHlwZXMgdGhhdAoJaGF2ZSB2YXJpYWJsZSBzaXplLgoKMjAwMS0wNC0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGltcG9ydF9leHBvcnRfZGVjbCk6IERvbid0IGNhbGwgaW1wb3J0X2V4cG9ydF9jbGFzcwoJd2hlbiBwcm9jZXNzaW5nIGFuIGlubGluZSBtZW1iZXIgZnVuY3Rpb24uCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IENhbGwgaW1wb3J0X2V4cG9ydF9kZWNsIGJlZm9yZQoJZW1pdHRpbmcgaW5saW5lIGZ1bmN0aW9ucy4KCjIwMDEtMDMtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJSUEtNjQgQUJJIEV4Y2VwdGlvbiBIYW5kbGluZzoKCSogY3AtdHJlZS5kZWYgKEVIX1NQRUNfQkxPQ0spOiBOZXcuCgkoTVVTVF9OT1RfVEhST1dfRVhQUik6IE5ldy4KCSogY3AtdHJlZS5oOiBVcGRhdGUgY2hhbmdlZCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCgkoQ1BUSV9QVVNIX0VYQ0VQVElPTl9JREVOVElGSUVSKTogUmVtb3ZlLgoJKENQVElfQ0FMTF9VTkVYUEVDVEVEKTogTmV3LgoJKHN0cnVjdCBjcF9sYW5ndWFnZV9mdW5jdGlvbik6IFJlbmFtZSB4X2VoX3NwZWNfdHJ5X2Jsb2NrCgl0byB4X2VoX3NwZWNfYmxvY2suCgkoRUhfU1BFQ19TVE1UUywgRUhfU1BFQ19SQUlTRVMpOiBOZXcuCgkqIGRlY2wuYyAoY3VycmVudF9iaW5kaW5nX2xldmVsKTogSWYgbm8gY3VycmVudCBmdW5jdGlvbgoJYmluZGluZ3MsIHJldmVydCB0byBzY29wZV9jaGFpbi4KCShpbml0aWFsaXplX3ByZWRlZmluZWRfaWRlbnRpZmllcnMpOiBSZW1vdmUgX19jcF9wdXNoX2V4Y2VwdGlvbi4KCShzdG9yZV9wYXJtX2RlY2xzKTogVXNlIGJlZ2luX2VoX3NwZWNfYmxvY2suCgkoZmluaXNoX2Z1bmN0aW9uKTogVXNlIGZpbmlzaF9laF9zcGVjX2Jsb2NrLgoJKG1hcmtfbGFuZ19mdW5jdGlvbik6IFVwZGF0ZSBmb3IgbmFtZSBjaGFuZ2VzLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IE5vIG1hcmtfYWxsX3J1bnRpbWVfbWF0Y2hlcy4KCSogZHVtcC5jIChjcF9kdW1wX3RyZWUpOiBIYW5kbGUgbmV3IHRyZWUgY29kZXMuCgkqIGVycm9yLmMgKGR1bXBfZXhwcikgW0JJTkRfRVhQUl06IEZpeCB0eXBvLgoJKiBleGNlcHQuYyAoY2F0Y2hfbGFuZ3VhZ2VfaW5pdCwgY2F0Y2hfbGFuZ3VhZ2UpOiBSZW1vdmUuCgkoaW5pdF9leGNlcHRpb25fcHJvY2Vzc2luZyk6IERvbid0IHNldCBsYW5ndWFnZSBjb2RlLgoJSW5pdGlhbGl6ZSBjYWxsX3VuZXhwZWN0ZWRfbm9kZSwgcHJvdGVjdF9jbGVhbnVwX2FjdGlvbnMsCgllaF9wZXJzb25hbGl0eV9saWJmdW5jLCBsYW5nX2VoX3J1bnRpbWVfdHlwZS4KCShjYWxsX2VoX2luZm8sIHB1c2hfZWhfaW5mbywgZ2V0X2VoX2luZm8sIGdldF9laF92YWx1ZSk6IFJlbW92ZS4KCShnZXRfZWhfdHlwZSwgZ2V0X2VoX2NhdWdodCwgZ2V0X2VoX2hhbmRsZXJzKTogUmVtb3ZlLgoJKHByZXBhcmVfZWhfdHlwZSk6IFNwbGl0IG91dCB0eXBlIGNhbm9uaWNhbGl6YXRpb25zIC4uLgoJKGJ1aWxkX2VoX3R5cGVfdHlwZSk6IC4uLiBmcm9tIGhlcmUuCgkoYnVpbGRfZWhfdHlwZV90eXBlX3JlZik6IFJlbW92ZS4KCShtYXJrX2FsbF9ydW50aW1lX21hdGNoZXMpOiBSZW1vdmUuCgkoYnVpbGRfZXhjX3B0cik6IE5ldy4KCShkb19iZWdpbl9jYXRjaCwgZG9fZW5kX2NhdGNoKTogTmV3LgoJKGRvX3BvcF9leGNlcHRpb24pOiBSZW1vdmUuCgkoYnVpbGRfdGVybWluYXRlX2hhbmRsZXIpOiBSZW1vdmUuCgkoY2hvb3NlX3BlcnNvbmFsaXR5X3JvdXRpbmUpOiBTcGxpdCBvdXQgbGFuZ3VhZ2UgY2hvaWNlIGZyb20gLi4uCgkoaW5pdGlhbGl6ZV9oYW5kbGVyX3Bhcm0pOiAuLi4gaGVyZS4KCVVzZSBNVVNUX05PVF9USFJPV19FWFBSLgoJKGV4cGFuZF9zdGFydF9jYXRjaF9ibG9jayk6IFVzZSBkb19iZWdpbl9jYXRjaC4gIFNpbXBsaWZ5IEphdmEKCWV4Y2VwdGlvbiBvYmplY3QgaGFuZGxpbmcuCgkoZXhwYW5kX3N0YXJ0X2VoX3NwZWMsIGV4cGFuZF9lbmRfZWhfc3BlYyk6IFJlbW92ZS4KCShleHBhbmRfZXhjZXB0aW9uX2Jsb2NrcywgYWxsb2NfZWhfb2JqZWN0KTogUmVtb3ZlLgoJKGJlZ2luX2VoX3NwZWNfYmxvY2ssIGZpbmlzaF9laF9zcGVjX2Jsb2NrKTogTmV3LgoJKGRvX2FsbG9jYXRlX2V4Y2VwdGlvbiwgZG9fZnJlZV9leGNlcHRpb24pOiBOZXcuCgkoZXhwYW5kX3Rocm93KTogTWVyZ2UgaW50byAuLi4KCShidWlsZF90aHJvdyk6IC4uLiBoZXJlLiAgVXBkYXRlIGZvciBhYmkuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBObyBleHBhbmRfaW50ZXJuYWxfdGhyb3cuCglIYW5kbGUgTVVTVF9OT1RfVEhST1dfRVhQUi4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBIYW5kbGUgRUhfU1BFQ19CTE9DSy4KCSogc2VtYW50aWNzLmMgKCopIFVwZGF0ZSBmb3IgZXhjZXB0LmggbmFtZSBjaGFuZ2VzLgoJKGdlbnJ0bF90cnlfYmxvY2spOiBObyBwcm90ZWN0X3dpdGhfdGVybWluYXRlLgoJKGdlbnJ0bF9laF9zcGVjX2Jsb2NrKTogTmV3LgoJKGdlbnJ0bF9oYW5kbGVyKTogRG9uJ3QgZW1pdCB0aGUgZ290byBoZXJlLgoJKGNwX2V4cGFuZF9zdG10KTogSGFuZGxlIEVIX1NQRUNfQkxPQ0suCgkoZ2VucnRsX2ZpbmlzaF9mdW5jdGlvbik6IERvbid0IGV4cGFuZF9leGNlcHRpb25fYmxvY2tzLgoJKiB0cmVlLmMgKGNwX3N0YXRlbWVudF9jb2RlX3ApOiBIYW5kbGUgRUhfU1BFQ19CTE9DSy4KCjIwMDEtMDMtMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKHN0cnVjdCBuYW1lZF9sYWJlbF9saXN0KTogUmVuYW1lIGVoX3JlZ2lvbiB0bwoJaW5fdHJ5X3Njb3BlLCBhZGQgaW5fY2F0Y2hfc2NvcGUuCgkoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBSZW5hbWUgZWhfcmVnaW9uIHRvIGlzX3RyeV9zY29wZSwKCWFkZCBpc19jYXRjaF9zY29wZS4KCShub3RlX2xldmVsX2Zvcl90cnkpOiBSZW5hbWUgZnJvbSBub3RlX2xldmVsX2Zvcl9laC4KCShub3RlX2xldmVsX2Zvcl9jYXRjaCk6IE5ldy4KCShwb3BsZXZlbCk6IENvcHkgYm90aCBpc190cnlfc2NvcGUgYW5kIGlzX2NhdGNoX3Njb3BlIHRvCgl0aGUgbmFtZWRfbGFiZWxfbGlzdCBzdHJ1Y3QuCgkoY2hlY2tfcHJldmlvdXNfZ290b18xKTogRG9uJ3QgY2hlY2sgZm9yIGNhdGNoIGJsb2NrIHZpYQoJREVDTF9BUlRJRklDSUFMOyB1c2UgaW5fdHJ5X3Njb3BlIGluc3RlYWQuCgkoY2hlY2tfZ290byk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKG5vdGVfbGV2ZWxfZm9yX3RyeSwgbm90ZV9sZXZlbF9mb3JfY2F0Y2gpOiBEZWNsYXJlLgoJKiBleGNlcHQuYyAoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogQ2FsbCBub3RlX2xldmVsX2Zvcl9jYXRjaC4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NvbXBvdW5kX3N0bXQpOiBVcGRhdGUgZm9yIG5vdGVfbGV2ZWxfZm9yX3RyeS4KCjIwMDEtMDMtMjcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBleGNlcHQuYzogVXNlIFVTSU5HX1NKTEpfRVhDRVBUSU9OUyBpbnN0ZWFkIG9mCglleGNlcHRpb25zX3ZpYV9sb25nam1wLgoKMjAwMS0wMy0yNyAgUGhpbCBFZHdhcmRzICA8cG1lQHNvdXJjZXMucmVkaGF0LmNvbT4KCgkqIHB0LmMgKGNoZWNrX2RlZmF1bHRfdG1wbF9hcmdzKTogIE1ha2UgZXJyb3IgbWVzc2FnZXMgY2xlYXJlci4KCjIwMDEtMDMtMjYgIFBoaWwgRWR3YXJkcyAgPHBtZUBzb3VyY2VzLnJlZGhhdC5jb20+CgoJKiBlcnJvci5jOiAgQWxzbyB1bmRlZmluZSAnQScgbWFjcm8gdXNlZCBmb3IgY3BfcHJpbnRlcnMgZGVmaW5pdGlvbi4KCjIwMDEtMDMtMjcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIE1ha2UtbGFuZy5pbjogRGVwZW5kIG9uICQoU1lTVEVNX0gpLCBub3Qgc3lzdGVtLmguCgoyMDAxLTAzLTI2ICBNaWtlIFlhbmcgPHlhbmdAcmVzZWFyY2guYXR0LmNvbT4KCSAgICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZHVtcC5jIChkdW1wX2FjY2Vzcyk6IE5ldyBmdW5jdGlvbi4KCShjcF9kdW1wX3RyZWUpOiBVc2UgaXQuICBEdW1wIGJhc2V0eXBlIGluZm9ybWF0aW9uIGZvciBjbGFzcwoJdHlwZXMuCgoyMDAxLTAzLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKG9wdGltaXplLm8pOiBEZXBlbmQgb24gcGFyYW1zLmguCgkoZHVwbGljYXRlX2RlY2xzKTogQ29weSBERUNMX05VTV9TVE1UUywgbm90IERFQ0xfRlJBTUVfU0laRS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBmbGFnX25vX2lubGluZSB3aGVuIGRvaW5nCglpbmxpbmluZy1vbi10cmVlcy4KCSogb3B0aW1pemUuYzogSW5jbHVkZSBwYXJhbXMuaC4KCShzdHJ1Y3QgaW5saW5lX2RhdGEpOiBJbXByb3ZlIGRvY3VtZW50YXRpb24gb2YgRk5TLiAgQWRkCglGSVJTVF9JTkxJTkVEX0ZOLCBJTkxJTkVEX1NUTVRTLCBhbmQgQ0xPTklOR19QLgoJKElOU05TX1BFUl9TVE1UKTogTmV3IG1hY3JvLgoJKHJlbWFwX2Jsb2NrKTogVXNlIENMT05JTkdfUC4KCShpbmxpbmFibGVfZnVuY3Rpb25fcCk6IERvbid0IGlubGluZSBiaWcgZnVuY3Rpb25zLgoJKGV4cGFuZF9jYWxsX2lubGluZSk6IEtlZXAgdHJhY2sgb2YgaG93IG11Y2ggaW5saW5pbmcgd2UndmUgZG9uZS4KCShvcHRpbWl6ZV9mdW5jdGlvbik6IFNldCBGSVJTVF9JTkxJTkVEX0ZOLgoJKG1heWJlX2Nsb25lX2JvZHkpOiBTZXQgQ0xPTklOR19QLgoJKiBzZW1hbnRpY3MuYyAoc2ltcGxpZnlfYWdncl9pbml0X2V4cHJzX3IpOiBGaXggdHlwaW5nIHByb2JsZW1zIGluCgl0cmVlIG5vZGVzLgoJKGdlbnJ0bF9maW5pc2hfZnVuY3Rpb24pOiBDbGVhciBERUNMX0RFRkVSX09VVFBVVCBiZWZvcmUgY2FsbGluZwoJcmVzdF9vZl9jb21waWxhdGlvbi4gIENsZWFyIERFQ0xfUlRMIGZvciBsb2NhbCB2YXJpYWJsZXMKCWFmdGVyd2FyZHMuCgkoY2xlYXJfZGVjbF9ydGwpOiBOZXcgZnVuY3Rpb24uCgoyMDAxLTAzLTI2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCUltcGxlbWVudCBEUiAyMDkKCSogY3AtdHJlZS5oIChza2lwX3R5cGVfYWNjZXNzX2NvbnRyb2wsCglyZXNldF90eXBlX2FjY2Vzc19jb250cm9sKTogUHJvdG90eXBlLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQWNjZXNzIG9mIGZyaWVuZHMgaXMgbm90IGNoZWNrZWQuCgkqIHBhcnNlLnkgKGNvbXBvbmVudF9kZWNsX2xpc3QpOiBSZXNldCB0eXBlIGFjY2VzcyBjb250cm9sLgoJKiBzZW1hbnRpY3MuYyAoZGVjbF90eXBlX2FjY2Vzc19jb250cm9sKTogQ2xlYXIKCWN1cnJlbnRfdHlwZV9sb29rdXBzLgoJKHNhdmVfdHlwZV9hY2Nlc3NfY29udHJvbCk6IERvbid0IHNhdmUgaWYgbm90IGRlZmVycmluZy4KCShza2lwX3R5cGVfYWNjZXNzX2NvbnRyb2wsIHJlc2V0X3R5cGVfYWNjZXNzX2NvbnRyb2wpOiBOZXcKCWZ1bmN0aW9ucy4KCShiZWdpbl9jbGFzc19kZWZpbml0aW9uKTogRG8gdHlwZSBhY2Nlc3MgY29udHJvbCBmb3IgYmFzZXR5cGVzLgoJU3RhcnQgZGVmZXJyZWQgYWNjZXNzIGNvbnRyb2wuCgkoZmluaXNoX2NsYXNzX2RlZmluaXRpb24pOiBSZXN1bWUgaW1tZWRpYXRlIGFjY2VzcyBjb250cm9sIGlmCgl0aGlzIGlzIGEgbG9jYWwgY2xhc3MuCgoyMDAxLTAzLTI1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogVXNlIG1lbWNweS9tZW1tb3ZlLCBub3QgYmNvcHkuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IExpa2V3aXNlLgoKMjAwMS0wMy0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBtYW5nbGUuYyAod3JpdGVfZGlzY3JpbWluYXRvcik6IFVzZSBgXzAnIGZvciBkaXNjcmltaW5hdG9yIDEsCglub3QgYF8nLgoKMjAwMS0wMy0yMyAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGxvY2FsX25hbWVzKTogRGVmaW5lLgoJKHB1c2hfbG9jYWxfbmFtZSk6IE5ldy4KCShncm9rX3JlZmVyZW5jZV9pbml0KTogUmV0dXJuIGluaXQgaWYgaW5pdGlhbGl6aW5nIHN0YXRpYyByZWZlcmVuY2UKCXZhcmlhYmxlIHdpdGggbm9uLWNvbnN0YW50IGluc3RlYWQgb2YgZW1pdHRpbmcgaXQuCglNb3ZlIGV4cGFuZF9zdGF0aWNfaW5pdCBjYWxsIHRvIGNwX2ZpbmlzaF9kZWNsLgoJKGxheW91dF92YXJfZGVjbCk6IENhbGwgcHVzaF9sb2NhbF9uYW1lLgoJKG1heWJlX2NvbW1vbml6ZV92YXIpOiBBbGxvdyBpbmxpbmluZyBmdW5jdGlvbnMgZXZlbiBpZiB0aGV5IGhhdmUKCXN0YXRpYyBsb2NhbCB2YXJpYWJsZXMsIHVzZSBjb21kYXRfbGlua2FnZSBmb3IgdGhlbSBpZiBmbGFnX3dlYWsuCgkoY2hlY2tfaW5pdGlhbGl6ZXIpOiBDYWxsIG9ic2N1cmVfY29tcGxleF9pbml0IGlmCglncm9rX3JlZmVyZW5jZV9pbml0IHJldHVybmVkIG5vbi16ZXJvLgoJKHNhdmVfZnVuY3Rpb25fZGF0YSk6IENsZWFyIHhfbG9jYWxfbmFtZXMuCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBGcmVlIHhfbG9jYWxfbmFtZXMuCgkobWFya19pbmxpbmVkX2Zucyk6IFJlbW92ZS4KCShtYXJrX2xhbmdfZnVuY3Rpb24pOiBNYXJrIHhfbG9jYWxfbmFtZXMuCgkobGFuZ19tYXJrX3RyZWUpOiBEb24ndCBtYXJrIERFQ0xfQUNDRVNTIGZvciBERUNMX0RJU0NSSU1JTkFUT1JfUC4KCU1hcmsgaW5saW5lZF9mbnMgYXMgdHJlZSwgcmVtb3ZlIGNhbGwgdG8gbWFya19pbmxpbmVkX2Zucy4KCSogY2xhc3MuYyAoYWx0ZXJfYWNjZXNzKTogRW5zdXJlIERFQ0xfQUNDRVNTIGlzIG5ldmVyIHNldCBpZgoJREVDTF9ESVNDUklNSU5BVE9SX1AuCgkqIGNwLXRyZWUuaCAoY3BfbGFuZ3VhZ2VfZnVuY3Rpb24pOiBBZGQgeF9sb2NhbF9uYW1lcy4KCShsYW5nX2RlY2xfZmxhZ3MpOiBBZGQgZGlzY3JpbWluYXRvciBpbnRvIHUyLgoJKGxhbmdfZGVjbF9pbmxpbmVkX2Zucyk6IFJlbW92ZS4KCShsYW5nX2RlY2wpOiBpbmxpbmVkX2ZucyBpcyBub3cgYSBUUkVFX1ZFQy4KCShERUNMX0RJU0NSSU1JTkFUT1JfUCwgREVDTF9ESVNDUklNSU5BVE9SKTogRGVmaW5lLgoJKiBvcHRpbWl6ZS5jIChpbmxpbmFibGVfZnVuY3Rpb25fcCk6IERFQ0xfSU5MSU5FRF9GTlMgaXMgbm93IGEKCVRSRUVfVkVDLCBub3QgYSBjdXN0b20gc3RydWN0dXJlLgoJKG9wdGltaXplX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIG1hbmdsZS5jIChkaXNjcmltaW5hdG9yX2Zvcl9sb2NhbF9lbnRpdHkpOiBEaXNjcmltaW5hdGUgYW1vbmcKCVZBUl9ERUNMIGxvY2FsIGVudGl0aWVzLgoJKiBzZWFyY2guYyAoZGZzX2FjY2Vzc19pbl90eXBlKTogSWYgREVDTF9ESVNDUklNSU5BVE9SX1AsIERFQ0xfQUNDRVNTCglpcyBub3QgdmFsaWQuCgoyMDAxLTAzLTIyICBCcnljZSBNY0tpbmxheSAgPGJyeWNlQGFsYmF0cm9zcy5jby5uej4KCglBZGQgc3VwcG9ydCBmb3IgSmF2YSBpbnRlcmZhY2UgbWV0aG9kIGNhbGxzLgoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX3R5cGUpOiBBZGQgamF2YV9pbnRlcmZhY2UgZmxhZy4KCShUWVBFX0pBVkFfSU5URVJGQUNFKTogTmV3IG1hY3JvLgoJKiB0cmVlLmMgKGNwX3ZhbGlkX2xhbmdfYXR0cmlidXRlKTogSGFuZGxlICJqYXZhX2ludGVyZmFjZSIgYXR0cmlidXRlCglieSBzZXR0aW5nIFRZUEVfSkFWQV9JTlRFUkZBQ0UuCgkqIGNhbGwuYyAoamF2YV9pZmFjZV9sb29rdXBfZm4pOiBOZXcgc3RhdGljLgoJKGJ1aWxkX292ZXJfY2FsbCk6IElmIGNhbGxpbmcgYSBtZXRob2QgZGVjbGFyZWQgaW4gYQoJVFlQRV9KQVZBX0lOVEVSRkFDRSwgY2FsbCBidWlsZF9qYXZhX2ludGVyZmFjZV9mbl9yZWYgdG8gZ2VuZXJhdGUgdGhlCglleHByZXNzaW9uIHdoaWNoIHJlc29sdmVzIHRoZSBmdW5jdGlvbiBhZGRyZXNzLgoJKGJ1aWxkX2phdmFfaW50ZXJmYWNlX2ZuX3JlZik6IE5ldyBmdW5jdGlvbi4KCjIwMDEtMDMtMjIgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGNwL2V4Y2VwdC5vKTogRG9uJ3QgZGVwZW5kIG9uIGluc24tZmxhZ3MuaC4KCSogZXhjZXB0LmM6IERvbid0IGluY2x1ZGUgaXQuCgoyMDAxLTAzLTIyICBHZXJhbGQgUGZlaWZlciAgPHBmZWlmZXJAZGJhaS50dXdpZW4uYWMuYXQ+CgkgICAgYmFzZWQgb24gYW4gaWRlYSBmcm9tIEpvZSBCdWNrIDxqYnVja0BzeW5vcHN5cy5jb20+CgoJKiBwYXJzZS55IChiYWRfZGVjbCwgdGVtcGxhdGVfYXJnX2xpc3RfaWdub3JlLCBhcmdfbGlzdF9pZ25vcmUpOgoJTmV3IG5vbnRlcm1pbmFscy4KCShkYXRhX2RlZiwgY29tcG9uZW50X2RlY2wpOiBBZGQgcmVkdWN0aW9ucyB0byBiYWRfZGVjbC4KCjIwMDEtMDMtMjIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogbWV0aG9kLmMgKGRvX2J1aWxkX2Fzc2lnbl9yZWYpOiBEb24ndCB1c2UgYnVpbGRfbW9kaWZ5X2V4cHIgZm9yCglhbm9ueW1vdXMgYWdncmVnYXRlcywgc2luY2UgdGhleSBkb24ndCBoYXZlIGFzc2lnbm1lbnQgb3BlcmF0b3IKCW1ldGhvZC4KCSogZGVjbC5jIChmaXh1cF9hbm9ueW1vdXNfYWdncik6IERpc2FsbG93IGN0b3JzLCBkdG9ycyBhbmQgY29weQoJYXNzaWdubWVudCBvcGVyYXRvcnMgZm9yIGFub255bW91cyBzdHJ1Y3R1cmUgZmllbGRzLgoKMjAwMS0wMy0yMSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogQWJvcnQgaWYgd2Ugc2VlIGEgbWVtYmVyIGNvbnN0YW50CglpbnN0YW50aWF0aW9uIHRoYXQgZG9lc24ndCBhbHJlYWR5IGhhdmUgaXRzIGluaXRpYWxpemVyLgoJRG93bmdyYWRlIGV4cGxpY2l0IGluc3RhbnRpYXRpb24gd2l0aG91dCBkZWZpbml0aW9uIHRvIHBlZHdhcm4uCgoJKiBjcC10cmVlLmggKERFQ0xfVElORk9fRk5fUCwgU0VUX0RFQ0xfVElORk9fRk5fUCk6IFJlbW92ZS4KCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlX2VudHJ5KTogRG9uJ3QgY2hlY2sgREVDTF9USU5GT19GTl9QLgoJKGltcG9ydF9leHBvcnRfZGVjbCk6IENoZWNrIHRpbmZvX2RlY2xfcCwgbm90IERFQ0xfVElORk9fRk5fUC4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX1ZUQUJMRV9ORUVEU19XUklUSU5HKTogUmVtb3ZlLgoJKHBlbmRpbmdfdnRhYmxlcyk6IFJlbW92ZS4KCSogZGVjbDIuYyAocGVuZGluZ192dGFibGVzKTogUmVtb3ZlLgoJKGltcG9ydF9leHBvcnRfdnRhYmxlKTogVXNlIENMQVNTVFlQRV9JTlRFUkZBQ0VfT05MWSwgbm90CglDTEFTU1RZUEVfVlRBQkxFX05FRURTX1dSSVRJTkcuCgkoaW1wb3J0X2V4cG9ydF9jbGFzcyk6IExpa2V3aXNlLgoJKGluaXRfZGVjbDIpOiBEb24ndCBtYXJrIHBlbmRpbmdfdnRhYmxlcy4KCSogbGV4LmMgKGhhbmRsZV9wcmFnbWFfdnRhYmxlKTogSnVzdCBzb3JyeS4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBEb24ndCBtZXNzIHdpdGgKCUNMQVNTVFlQRV9WVEFCTEVfTkVFRFNfV1JJVElORy4KCShtYXJrX2NsYXNzX2luc3RhbnRpYXRlZCk6IExpa2V3aXNlLgoJKiBwdHJlZS5jIChwcmludF9sYW5nX3R5cGUpOiBEb24ndCBwcmludCBpdC4KCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBEb24ndCBzZXQgaXQuCgoJKiBwdC5jICh0ZW1wbGF0ZV90YWlsKTogUmVwbGFjZSB3aXRoIGxhc3RfcGVuZGluZ190ZW1wbGF0ZS4KCShtYXliZV90ZW1wbGF0ZXMsIG1heWJlX3RlbXBsYXRlX3RhaWwpOiBSZW1vdmUuCgkoYWRkX3BlbmRpbmdfdGVtcGxhdGUpOiBBZGp1c3QuCgkoaW5zdGFudGlhdGVfcGVuZGluZ190ZW1wbGF0ZXMpOiBBZGp1c3QuCgoJKiBjcC10cmVlLmggKHN0cnVjdCBzYXZlZF9zY29wZSk6IFJlbW92ZSBsYW5nX3N0YWNrIGZpZWxkLgoJKGN1cnJlbnRfbGFuZ19zdGFjayk6IFJlbW92ZS4KCSogZGVjbC5jIChtYXliZV9wdXNoX3RvX3RvcF9sZXZlbCk6IERvbid0IGluaXRpYWxpemUgaXQuCgkoZHVwbGljYXRlX2RlY2xzKTogVXNlIGN1cnJlbnRfbGFuZ19kZXB0aC4KCSh4cmVmX2Jhc2V0eXBlcyk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChjdXJyZW50X2xhbmdfZGVwdGgpOiBOZXcgZm4uCgkocHVzaF9sYW5nX2NvbnRleHQpOiBVc2UgbW9yZSB2YXJyYXkgZnVuY3Rpb25hbGl0eS4KCShwb3BfbGFuZ19jb250ZXh0KTogTGlrZXdpc2UuCgoJKiBlcnJvci5jIChHTE9CQUxfVEhJTkcpOiBBbHdheXMgdXNlICdfXycuCgoyMDAxLTAzLTIxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfY2xvbmUpOiBDbGVhciBERUNMX0FTU0VNQkxFUl9OQU1FLgoKCSogbWFuZ2xlLmMgKG1hbmdsZV9kZWNsX3N0cmluZyk6IE1hbmdsZSB0aGUgbmFtZXMgb2Ygb3ZlcmxvYWRlZAoJb3BlcmF0b3JzLCBldmVuIHdoZW4gdGhleSBoYXZlIGBleHRlcm4gIkMiJyBsaW5rYWdlLgoKMjAwMS0wMy0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGdldF92dGFibGVfZGVjbCk6IFVzZSBTRVRfREVDTF9BU1NFTUJMRVJfTkFNRSwKCUNPUFlfREVDTF9BU1NFTUJMRVJfTkFNRSwgZXRjLiAgRG9uJ3Qgc2V0IERFQ0xfQVNTRU1CTEVSX05BTUUKCXdoZXJlIGl0J3Mgbm90IG5lY2Vzc2FyeS4KCShhZGRfbWV0aG9kKTogUmVtb3ZlIG9wdGltaXphdGlvbiBpbnZvbHZpbmcgY29tcGFyaXNvbiBvZgoJREVDTF9BU1NFTUJMRVJfTkFNRS4KCShidWlsZF92dGJsX29yX3ZiYXNlX2ZpZWxkKTogVXNlIFNFVF9ERUNMX0FTU0VNQkxFUl9OQU1FLAoJQ09QWV9ERUNMX0FTU0VNQkxFUl9OQU1FLCBldGMuICBEb24ndCBzZXQgREVDTF9BU1NFTUJMRVJfTkFNRQoJd2hlcmUgaXQncyBub3QgbmVjZXNzYXJ5LgoJKGNoZWNrX21ldGhvZHMpOiBMaWtld2lzZS4KCShidWlsZF9jbG9uZSk6IExpa2V3aXNlLgoJKGJ1aWx0X3Z0dCk6IExpa2V3aXNlLgoJKiBjcC10cmVlLmggKERFQ0xfTkVFREVEX1ApOiBMaWtld2lzZS4KCSogZGVjbC5jIChwdXNodGFnKTogTGlrZXdpc2UuCgkoZHVwbGljYXRlX2RlY2xzKTogTGlrZXdpc2UuCgkocHVzaGRlY2wpOiBMaWtld2lzZS4KCShidWlsdGluX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoYnVpbGRfbGlicmFyeV9mbl8xKTogU2V0IERFQ0xfTEFOR1VBR0UgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgoJKGJ1aWxkX2NwX2xpYnJhcnlfZm4pOiBMaWtld2lzZS4KCShtYXliZV9jb21tb25pemVfdmFyKTogVXNlIFNFVF9ERUNMX0FTU0VNQkxFUl9OQU1FLAoJQ09QWV9ERUNMX0FTU0VNQkxFUl9OQU1FLCBldGMuICBEb24ndCBzZXQgREVDTF9BU1NFTUJMRVJfTkFNRQoJd2hlcmUgaXQncyBub3QgbmVjZXNzYXJ5LgoJKG1ha2VfcnRsX2Zvcl9ub25sb2NhbF9kZWNsKTogTGlrZXdpc2UuCgkoY3BfZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCShncm9rZm5kZWNsKTogTGlrZXdpc2UuCgkoZ3Jva3ZhcmRlY2wpOiBMaWtld2lzZS4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkoY3BfbWlzc2luZ19yZXR1cm5fb2tfcCk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChncm9rY2xhc3Nmbik6IExpa2V3aXNlLgoJKGNoZWNrX2NsYXNzZm4pOiBMaWtld2lzZS4KCShmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBMaWtld2lzZS4KCShncm9rZmllbGQpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoR0xPQkFMX0lPUkRfUCk6IFJlbW92ZS4KCShkdW1wX2dsb2JhbF9pb3JkKTogSW1wcm92ZSBvdXRwdXQuCgkoZHVtcF9kZWNsKTogQXZvaWQgdXNpbmcgREVDTF9BU1NFTUJMRVJfTkFNRS4KCSogZXhjZXB0LmMgKG5vdGhyb3dfbGliZm5fcCk6IFN1bW1hcmlseSByZWplY3QgYW55IGZ1bmN0aW9uIG5vdCBpbgoJbmFtZXNwYWNlLXNjb3BlLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogRG9uJ3QgZXhwbGljaXRseSBzZXQKCURFQ0xfQVNTRU1CTEVSX05BTUUgYWZ0ZXIgY2FsbGluZyBtYW5nbGVfZGVjbC4KCSogbWFuZ2xlLmMgKG1hbmdsZV9kZWNsX3N0cmluZyk6IEhhbmRsZSBleHRlcm4gIkMiIGZ1bmN0aW9ucy4KCShtYW5nbGVfZGVjbCk6IFNldCB0aGUgREVDTF9BU1NFTUJMRVJfTkFNRSBmb3IgdGhlIGRlY2wuCgkqIG1ldGhvZC5jIChzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsKTogRG9uJ3QgZXhwbGljaXRseSBzZXQKCURFQ0xfQVNTRU1CTEVSX05BTUUgYWZ0ZXIgY2FsbGluZyBtYW5nbGVfZGVjbC4KCShtYWtlX3RodW5rKTogRXhwbGljaXRseSBzZXQgdGhlIERFQ0xfQVNTRU1CTEVSX05BTUUgYW5kCglJREVOVElGSUVSX0dMT0JBTF9WQUxVRSBmb3IgdGhlIHRodW5rLgoJKiBwdC5jIChzZXRfbWFuZ2xlZF9uYW1lX2Zvcl90ZW1wbGF0ZV9kZWNsKTogUmVtb3ZlLgoJKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogRG9uJ3QgdXNlIGl0LgoJKGxvb3VwX3RlbXBsYXRlX2NsYXNzKTogRG9uJ3Qgc2V0IERFQ0xfQVNTRU1CTEVSX05BTUUuCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKHRzdWJzdF9kZWNsKTogTGlrZXdpc2UuCgkocmVnZW5lcmF0ZV9kZWNsX2Zyb21fdGVtcGxhdGUpOiBVc2UgQ09QWV9ERUNMX0FTU0VNQkxFUl9OQU1FLgoJKiBydHRpLmMgKGdldF90aW5mb19kZWNsKTogVXNlIFNFVF9ERUNMX0FTU0VNQkxFUl9OQU1FLAoJQ09QWV9ERUNMX0FTU0VNQkxFUl9OQU1FLCBldGMuICBEb24ndCBzZXQgREVDTF9BU1NFTUJMRVJfTkFNRQoJd2hlcmUgaXQncyBub3QgbmVjZXNzYXJ5LgoJKHRpbmZvX2Jhc2VfaW5pdCk6IExpa2V3aXNlLgoJKGNyZWF0ZV9yZWFsX3RpbmZvX3Zhcik6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9vdXBfZmllbGRfMSk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGluaXRfdHJlZSk6IFNldCBsYW5nX3NldF9kZWNsX2Fzc2VtYmxlcl9uYW1lLgoKMjAwMS0wMy0xNSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCUNvcnJlY3Qgc2VtYW50aWNzIHJlc3RyaWN0aW9ucyBjaGVja2luZyBpbiB0aHJvdy1leHByZXNzaW9uLgoJKiBleGNlcHQuYyAoaXNfYWRtaXNzaWJsZV90aHJvd19vcGVyYW5kKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX3Rocm93KTogVXNlIGl0LgoKMjAwMS0wMy0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoY3BfbWFrZV9mbm5hbWVfZGVjbCk6IFNldCBERUNMX0lHTk9SRURfUCBvbiBfX0ZVTkNUSU9OX18KCWFuZCBpdHMgaWxrLgoKMjAwMS0wMy0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGJ1aWxkX2Nsb25lKTogVXNlIENPUFlfREVDTF9SVEwsIERFQ0xfUlRMX1NFVF9QLCBldGMuCgkqIGNwLXRyZWUuaCAoREVDTF9JTl9NRU1PUllfUCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IExpa2V3aXNlLgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBMaWtld2lzZS4KCShidWlsZF9saWJyYXJ5X2ZuKTogTGlrZXdpc2UuCgkoYnVpbGRfY3BfbGlicmFyeV9mbik6IExpa2V3aXNlLgoJKGNoZWNrX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkoY3BfZmluaXNoX2RlY2wpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogTGlrZXdpc2UuCgkoZ3Jva19mdW5jdGlvbl9pbml0KTogUmVtb3ZlICNpZiAwJ2QgY29kZS4KCShmaW5pc2hfYW5vbl91bmlvbik6IFVzZSBDT1BZX0RFQ0xfUlRMLCBERUNMX1JUTF9TRVRfUCwgZXRjLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoZ2V0X3RlbXBfcmVndmFyKTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSh0c3Vic3RfZGVjbCk6IExpa2V3aXNlLgoJKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChnZW5ydGxfbmFtZWRfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuCgkoZXhwYW5kX2JvZHkpOiBMaWtld2lzZS4KCShnZW5ydGxfZmluaXNoX2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIHRyZWUuYyAoY3BfdHJlZV9lcXVhbCk6IExpa2V3aXNlLgoKMjAwMS0wMy0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBBZGQgZXh0cmEgc2VtYW50aWNzIHRvIElOTkVSCglwYXJhbWV0ZXIuIERvbid0IGNvbnZlcnQgdG8gdGVtcG9yYXJ5IGlmIGEgdXNlciBjb252ZXJzaW9uCglnaXZlcyB1cyBhbiBsdmFsdWUgdGhhdCB3ZSdyZSBhYm91dCB0byBiaW5kIHRvIGEgcmVmZXJlbmNlLgoJU2V0IElOTkVSIHRvIGluZGljYXRlIHBlbmRpbmcgcmVmZXJlbmNlIGJpbmRpbmcgb24gcmVjdXJzaXZlCgljYWxscy4KCjIwMDEtMDMtMTAgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGNwL2xleC5jOiBEZWxldGUgZHVwbGljYXRlIHBlbmRpbmdfbGFuZ19jaGFuZ2UuCgoyMDAxLTAzLTEwICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBjcC9sZXguYyAoaGFuZGxlX3ByYWdtYV9pbnRlcmZhY2UsIGhhbmRsZV9wcmFnbWFfaW1wbGVtZW50YXRpb24pOgoJU2ltaWxhcmx5LgoJKiBjcC9yZXBvLmMgKGdldF9iYXNlX2ZpbGVuYW1lLCBvcGVuX3JlcG9fZmlsZSk6IFNpbWlsYXJseS4KCSogY3AvY3AtdHJlZS5oOiBSZW1vdmUgZmlsZV9uYW1lX25vbmRpcmVjdG9yeSBwcm90b3R5cGUuCgoyMDAxLTAzLTA5ICBaYWNrIFdlaW5iZXJnICA8emFja3dAc3RhbmZvcmQuZWR1PgoKCSogTWFrZS1sYW5nLmluOiBBZGQgZGVwZW5kZW5jaWVzIG9uICQoVE1fUF9IKSBhcyBhcHByb3ByaWF0ZS4KCjIwMDEtMDMtMDggIFN0YW4gU2hlYnMgIDxzaGVic0BhcHBsZS5jb20+CgoJKiBjcC10cmVlLmggKHNldF9pZGVudGlmaWVyX2xvY2FsX3ZhbHVlKTogUmVtb3ZlIHVudXNlZCBkZWNsLgoKMjAwMS0wMy0wNiAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIHNwZXcuYzogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gQ1BQX09TVFJJTkcuCgoyMDAxLTAzLTA2ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IENoZWNrIHRoYXQgd2UgaGF2ZSBhbiBmbmRlY2wuCgoyMDAxLTAzLTA1ICBBbmRyZXcgSGFsZXkgIDxhcGhAcmVkaGF0LmNvbT4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2FyZ3VtZW50cyk6IERvbid0IGRvIGVsbGlwc2lzIGNvbnZlcnNpb24gZm9yCglfX2J1aWx0X2luX2NvbnN0YW50X3AuCgoyMDAxLTAzLTAyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3N0YXRpY19jYXN0KTogQWxsb3cgZW51bSB0byBlbnVtIGNvbnZlcnNpb25zCglhcyBwZXIgRFIgMTI4LgoKMjAwMS0wMy0wMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGNoZWNrX2ZpZWxkX2RlY2xzKTogUG9pbnRlcnMgdG8gbWVtYmVyIGRvIG5vdCBhCglub24tcG9kIHN0cnVjdCBtYWtlLCBhcyBwZXIgRFIgMTQ4LgoKMjAwMS0wMy0wMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoam91c3QpOiBjcF9wZWR3YXJuIHdoZW4gdXNpbmcgZ251IGV4dGVuc2lvbiBjb25jZXJuaW5nCgl3b3JzdCBjb252ZXJzaW9uIHNlcXVlbmNlcy4KCjIwMDEtMDMtMDEgIFphY2sgV2VpbmJlcmcgIDx6YWNrd0BzdGFuZm9yZC5lZHU+CgoJKiBkZWNsLmM6IFJlcGxhY2UgYWxsIHVzZXMgb2YgJ2Jvb2xlYW4nIHdpdGggJ2Jvb2wnLgoKMjAwMS0wMy0wMSAgWmFjayBXZWluYmVyZyAgPHphY2t3QHN0YW5mb3JkLmVkdT4KCgkqIGxhbmctc3BlY3MuaDogQWRkIHplcm8gaW5pdGlhbGl6ZXIgZm9yIGNwcF9zcGVjIGZpZWxkIHRvCglhbGwgYXJyYXkgZWxlbWVudHMgdGhhdCBuZWVkIG9uZS4gIERvbid0IHB1dCBhbiAjaWZkZWYgaW5zaWRlCgl0aGUgaW5pdGlhbGl6ZXIgbGlzdDsgc2V0IGEgZGVmYXVsdCBmb3IgQ1BMVVNQTFVTX0NQUF9TUEVDIGFuZAoJdXNlIGl0LgoKMjAwMS0wMy0wMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglJbXBsZW1lbnQgdXNpbmcgZGVjbHMgaW5zaWRlIHRlbXBsYXRlIGZ1bmN0aW9ucy4KCSogZGVjbDIuYyAodmFsaWRhdGVfbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBEb24ndCBzcGVjaWFsIGNhc2UKCWZha2Vfc3RkX25vZGUgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuIERvbid0IHJlamVjdCBlYXJseSB3aGVuCglwcm9jZXNzaW5nIGEgdGVtcGxhdGUuCgkoZG9fbG9jYWxfdXNpbmdfZGVjbCk6IEFkZCB0byBzdGF0ZW1lbnQgdHJlZS4gRG9uJ3QgZG8gZnVydGhlcgoJcHJvY2Vzc2luZyB3aGVuIGJ1aWxkaW5nIGEgdGVtcGxhdGUuCgkqIHB0LmMgKHRzdWJzdF9leHByLCBERUNMX1NUTVQgY2FzZSk6IERlYWwgd2l0aCBVU0lOR19ERUNMcy4KCjIwMDEtMDMtMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChkb19ub25tZW1iZXJfdXNpbmdfZGVjbCk6IERvbid0IGNvbXBsYWluIGlmIHdlIGZpbmQKCXNhbWUgZnVuY3Rpb24uIERvIGNvbXBsYWluIGFib3V0IGFtYmlndWF0aW5nIGV4dGVybiAiQyIKCWRlY2xhcmF0aW9ucy4KCjIwMDEtMDItMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUmVtb3ZlIGZsb2F0aW5nIHBvaW50IGFuZCBjb21wbGV4IHR5cGUgdGVtcGxhdGUgY29uc3RhbnQgcGFybXMuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IFJlbW92ZSBSRUFMX1RZUEUgYW5kCglDT01QTEVYX1RZUEUgZXh0ZW5zaW9ucy4KCShpbnZhbGlkX25vbnR5cGVfcGFybV90eXBlX3ApOiBMaWtld2lzZS4KCjIwMDEtMDItMjcgIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleGNlcHQuYyAoY2FsbF9laF9pbmZvKTogUmV2ZXJ0ICJtYXRjaF9mdW5jdGlvbiIncyB0eXBlLgoKMjAwMS0wMi0yNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglGaXggY3RvciB2dGFibGUgdmNhbGwgb2Zmc2V0cy4KCSogY2xhc3MuYyAoc3RydWN0IHZ0YmxfaW5pdF9kYXRhX3MpOiBBZGQgcnR0aV9iaW5mbyBtZW1iZXIuCgkoYnVpbGRfcnR0X3Z0YmxfZW50cmllcyk6IExvc2UgUlRUSV9CSU5GTyBwYXJhbWV0ZXIuCgkoZ2V0X21hdGNoaW5nX2Jhc2UpOiBSZW1vdmUuCgkoZ2V0X29yaWdpbmFsX2Jhc2UpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IEluaXRpYWxpemUgdmlkLnJ0dGlfYmluZm8uCglVc2UgYSB2aXJ0dWFsIHRodW5rIGZvciBhIGN0b3IgdnRhYmxlIHdpdGggYW4gaW5kZXgKCShhZGRfdmNhbGxfb2Zmc2V0X3Z0YmxfZW50cmllc18xKTogQ2hlY2sgaWYgYmluZm8gaGFzIGxvc3QgYQoJcHJpbWFyeSBiYXNlIHdpdGhpbiBhIGNvbnN0cnVjdG9yIHZ0YWJsZS4gT25seSBzZXQKCUJWX1ZDQUxMX0lOREVYIHdoZW4gbm90IGEgY29uc3RydWN0b3IgdnRhYmxlLiBBZGp1c3QgdmNhbGwgb2Zmc2V0Cgl3aGVuIHByaW1hcnkgYmFzZSBoYXMgYmVlbiBsb3N0LgoJKiBjcC10cmVlLmggKEJJTkZPX1ZJUlRVQUxTKTogUmVtb3ZlIGFtYmlndWl0eSBmcm9tIGNvbW1lbnQuCgoyMDAxLTAyLTI2ICBKZWZmcmV5IE9sZGhhbSAgPG9sZGhhbUBjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChqb3VzdCk6IEVuc3VyZSBtb3JlX3NwZWNpYWxpemVkKCkncyBhcmd1bWVudCBsZW5ndGgKCXBhcmFtZXRlciBoYXMgY29ycmVjdCB2YWx1ZSBmb3IgY29uc3RydWN0b3JzLgoKMjAwMS0wMi0yNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGV4Y2VwdC5jIChjYWxsX2VoX2luZm8pOiBDbGVhbnVwIGdlbmVyYXRpb24gb2YgY3BfZWhfaW5mbyBzdHJ1Y3QuCgoJKiBkZWNsLmMgKG1hcmtfaW5saW5lZF9mbnMpOiBQcm90b3R5cGUuCgoyMDAxLTAyLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc3Bldy5jICh5eWxleCk6IENvcnJlY3QgaGFuZGxpbmcgb2YgZnJpZW5kcy4KCjIwMDEtMDItMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtYW5nbGUuYyAod3JpdGVfZW5jb2RpbmcpOiBQYXNzIHdyaXRlX2Z1bmN0aW9uX3R5cGUgdGhlCglGVU5DVElPTl9ERUNMIGZvciB0aGUgZnVuY3Rpb24gYmVpbmcgZW5jb2RlZC4KCSh3cml0ZV9mdW5jdGlvbl90eXBlKTogUGFzcyBpdCBhbG9uZyB0byB3cml0ZV9iYXJlX2Z1bmN0aW9uX3R5cGUuCgkod3JpdGVfYmFyZV9mdW5jdGlvbl90eXBlKTogUGFzcyBpdCBhbG9uZyB0byB3cml0ZV9tZXRob2RfcGFybXMuCgkod3JpdGVfbWV0aG9kX3Bhcm1zKTogRG9uJ3QgbWFuZ2xlIHRoZSBjb21waWxlci1nZW5lcmF0ZWQKCXBhcmFtZXRlcnMgdG8gYSBjb25zdHJ1Y3RvciBvciBkZXN0cnVjdG9yLgoKMjAwMS0wMi0yMiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogb3B0aW1pemUuYzogSW5jbHVkZSB0b3BsZXYuaCBmb3IKCW5vdGVfZGVmZXJyYWxfb2ZfZGVmaW5lZF9pbmxpbmVfZnVuY3Rpb24gcHJvdG90eXBlLgoKMjAwMS0wMi0yMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2xfaW5saW5lZF9mbnMpOiBOZXcuCgkoc3RydWN0IGxhbmdfZGVjbHMpOiBBZGQgaW5saW5lZF9mbnMuCgkoREVDTF9JTkxJTkVEX0ZOUyk6IE5ldyBtYWNyby4KCSogb3B0aW1pemUuYyAoc3RydWN0IGlubGluZV9kYXRhKTogQWRkIGlubGluZWRfZm5zLgoJKGRlY2xhcmVfcmV0dXJuX3ZhcmlhYmxlKTogVXNlIFZBUlJBWV9BQ1RJVkVfU0laRSBtYWNyby4KCShpbmxpbmFibGVfZnVuY3Rpb25fcCk6IExpa2V3aXNlLCBmaXggdHlwbyBpbiBjb21tZW50LAoJZnVuY3Rpb24gaXMgbm90IGlubGluYWJsZSBpZiBpdCBhbHJlYWR5IGlubGluZWQgZnVuY3Rpb24gY3VycmVudGx5CgliZWluZyBvcHRpbWl6ZWQuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogQWRkIGZuIHRvIGlubGluZWRfZm5zIGlmIG5lY2Vzc2FyeS4KCShvcHRpbWl6ZV9mdW5jdGlvbik6IEluaXRpYWxpemUgaW5saW5lZF9mbnMuCglTYXZlIGlubGluZWRfZm5zIGludG8gREVDTF9JTkxJTkVEX0ZOUyBhZnRlciBleHBhbmRpbmcgaW5saW5lcy4KCSogZGVjbC5jIChtYXJrX2lubGluZWRfZm5zKTogTmV3IGZ1bmN0aW9uLgoJKGxhbmdfbWFya190cmVlKTogQ2FsbCBpdC4KCjIwMDEtMDItMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ19kZWNsX2ZsYWdzKTogUmVtb3ZlIHVuaW5saW5hYmxlIGZsYWcuCgkoREVDTF9VTklOTElOQUJMRSk6IE1vdmUgdG8gbWlkZGxlLWVuZC4KCgkqIGNsYXNzLmMgKGNsb25lX2Z1bmN0aW9uX2RlY2wpOiBTZXQgREVDTF9BQlNUUkFDVCBvbiBvcmlnaW5hbCBmbi4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBQcmVzZXJ2ZSBERUNMX0FCU1RSQUNULgoJKiBjbGFzcy5jIChidWlsZF9jbG9uZSk6IFNldCBERUNMX0FCU1RSQUNUX09SSUdJTiBmb3IgdGhlIGNsb25lLgoJKiBvcHRpbWl6ZS5jIChtYXliZV9jbG9uZV9ib2R5KTogU2V0IERFQ0xfQUJTVFJBQ1RfT1JJR0lOIGZvciB0aGUKCXBhcm1zIGFuZCBvdXRlciBCTE9DSy4gIG5vdGVfZGVmZXJyYWxfb2ZfZGVmaW5lZF9pbmxpbmVfZnVuY3Rpb24uCgoJKiBtZXRob2QuYyAoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogRG9uJ3Qgc2V0IERFQ0xfQVJUSUZJQ0lBTCBvbgoJc2Vjb25kIHBhcm0gb2Ygb3A9LgoKMjAwMS0wMi0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKHNldF9kZWNsX25hbWVzcGFjZSk6IEFsbG93IGV4cGxpY2l0IGluc3RhbnRpYXRpb25zIGluCglhbnkgbmFtZXNwYWNlLgoKMjAwMS0wMi0xOCAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBvcHRpbWl6ZS5jIChleHBhbmRfY2FsbF9pbmxpbmUpOiBEb24ndCB3YWxrIHN1YnRyZWVzIG9mIHR5cGUKCW5vZGVzLgoKMjAwMS0wMi0xOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGFkZF92Y2FsbF9vZmZzZXRfdnRibF9lbnRyaWVzXzEpOiBPbmx5IGFkZCBvbmUgZW50cnkKCWZvciBhIGRlc3RydWN0b3IuCgoyMDAxLTAyLTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCglEbyBwdXQgdGhlIFZUVCBwYXJhbWV0ZXIgaW4gREVDTF9BUkdVTUVOVFMuCgkqIGNwLXRyZWUuaCAoc3RydWN0IGNwX2xhbmd1YWdlX2Z1bmN0aW9uKTogQWRkIHhfdnR0X3Bhcm0uCgkoY3VycmVudF92dHRfcGFybSk6IE5ldyBtYWNyby4KCShzdHJ1Y3QgbGFuZ19kZWNsX2ZsYWdzKTogQWRkIGhhc192dHRfcGFybV9wLCByZW1vdmUgdnR0X3Bhcm0uCgkoREVDTF9IQVNfVlRUX1BBUk1fUCk6IE5ldyBtYWNyby4KCShERUNMX1ZUVF9QQVJNKTogUmVtb3ZlLgoJKEZVTkNUSU9OX0ZJUlNUX1VTRVJfUEFSTVRZUEUsIEZVTkNUSU9OX0ZJUlNUX1VTRVJfUEFSTSk6IE5ldyBtYWNyb3MuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogT25seSBjb3B5IHRoZSBvcGVyYXRvciBjb2RlIGlmCglhcHByb3ByaWF0ZS4KCShzdGFydF9mdW5jdGlvbik6IFNldCBjdXJyZW50X3Z0dF9wYXJtLgoJKGxhbmdfbWFya190cmVlKTogRG9uJ3QgbWFyayB2dHRfcGFybS4KCSogZGVjbDIuYyAobWF5YmVfcmV0cm9maXRfaW5fY2hyZyk6IERvIGFkZCB0aGUgVlRUIHBhcm0gdG8KCURFQ0xfQVJHVU1FTlRTLiAgU2V0IERFQ0xfSEFTX1ZUVF9QQVJNX1AuCgkqIGNsYXNzLmMgKGJ1aWxkX2Nsb25lKTogTWF5YmUgcmVtb3ZlIHRoZSBWVFQgcGFybS4KCSogb3B0aW1pemUuYyAobWF5YmVfY2xvbmVfYm9keSk6IFNldCB1cCB0aGUgVlRUIHBhcm0uCgkqIHB0LmMgKGNvcHlfZGVmYXVsdF9hcmdzX3RvX2V4cGxpY2l0X3NwZWMpOiBQcmVzZXJ2ZSB0aGUgVlRUIHBhcm0uCgkqIGNhbGwuYyAoYnVpbGRfb3Zlcl9jYWxsKTogSnVzdCBhbGxvdyB0aGUgVlRUIGFyZy4KCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBEb24ndCBzZXQgREVDTF9WVFRfUEFSTS4KCShkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogVXNlIEZVTkNUSU9OX0ZJUlNUX1VTRVJfUEFSTS4KCShzeW50aGVzaXplX21ldGhvZCk6IFVzZSBGVU5DVElPTl9GSVJTVF9VU0VSX1BBUk1UWVBFLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yLCBjb3B5X2FyZ3NfcCwgZ3Jva19jdG9yX3Byb3BlcnRpZXMpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF9mdW5jdGlvbl9kZWNsKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSwJY29udmVydF9saWtlX3JlYWwpOiBBYm9ydAoJaWYgd2UgdHJ5IHRvIGNhbGwgYSBjb25zdHJ1Y3RvciB3aXRoIGluLWNoYXJnZSBvciBWVFQgcGFybXMuCgkqIG1ldGhvZC5jIChza2lwX2FydGlmaWNpYWxfcGFybXNfZm9yKTogTmV3IGZuLgoJKiBjYWxsLmMgKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUsIGJ1aWxkX292ZXJfY2FsbCk6IENhbGwgaXQuCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogVXNlIGN1cnJlbnRfdnR0X3Bhcm0uCgkqIGluaXQuYyAoZXhwYW5kX3ZpcnR1YWxfaW5pdCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChzYW1lX3NpZ25hdHVyZV9wKTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoJKiBzZWFyY2guYyAobG9va19mb3Jfb3ZlcnJpZGVzX3IpOiBVc2UgaXQuCgoyMDAxLTAyLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChuZXdfYWJpX3J0dGlfcCk6IFJlbW92ZS4KCShuYW1lX21hbmdsaW5nX3ZlcnNpb24pOiBMaWtld2lzZS4KCShmbGFnX2RvX3NxdWFuZ2xpbmcpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoYnVpbGRfcnR0aV92dGJsX2VudHJpZXMpOiBSZW1vdmUgb2xkIEFCSSBzdXBwb3J0LgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAobmFtZV9tYW5nbGluZ192ZXJzaW9uKTogUmVtb3ZlLgoJKGZsYWdfZG9fc3F1YW5nbGluZyk6IExpa2V3aXNlLgoJKGxhbmdfZl9vcHRpb25zKTogUmVtb3ZlIGBzcXVhbmdsZScuCgkodW5zdXBwb3J0ZWRfb3B0aW9ucyk6IEFkZCBgc3F1YW5nbGUnLgoJKGN4eF9kZWNvZGVfb3B0aW9uKTogSXNzdWUgYSB3YXJuaW5nIGFib3V0IHVzZXMgb2YKCS1mbmFtZS1tYW5nbGluZy12ZXJzaW9uLgoJKGZpbmlzaF9maWxlKTogUmVtb3ZlIG9sZCBBQkkgc3VwcG9ydC4KCSogcHQuYyAoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCSh0c3Vic3RfZGVjbCk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGluaXRfcnR0aV9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkoYnVpbGRfaGVhZG9mKTogTGlrZXdpc2UuCgkoZ2V0X3RpbmZvX2RlY2xfZHluYW1pYyk6IExpa2V3aXNlLgoJKHRpbmZvX2Zyb21fZGVjbCk6IExpa2V3aXNlLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogTGlrZXdpc2UuCgkoc3ludGhlc2l6ZV90aW5mb192YXIpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9uZXcpOiBBbGxvdyBlbnVtZXJhdGlvbiB0eXBlcyBmb3IgdGhlIGFycmF5LWJvdW5kcwoJaW4gYSBkaXJlY3QtbmV3LWRlY2xhcmF0b3IuCgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3R5cGVvZik6IFJlc29sdmUgT0ZGU0VUX1JFRnMuCgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IENvcHkgVFJFRV9QUklWQVRFIGFuZAoJVFJFRV9QUk9URUNURUQgZnJvbSB0aGUgdGVtcGxhdGUgYmVpbmcgc3BlY2lhbGl6ZWQuCgoyMDAxLTAyLTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGRlY2wyLmMgKGJ1aWxkX2FydGlmaWNpYWxfcGFybSk6IFNldCBUUkVFX1JFQURPTkxZLgoKCSogZGVjbC5jIChiYWRfc3BlY2lmaWVycyk6IEFsbG93IHRocm93IHNwZWNzIG9uIHRoaW5ncyB3aXRoCglwb2ludGVyLXRvLWZ1bmN0aW9uIG9yIC1tZW1iZXItZnVuY3Rpb24gdHlwZS4KCSogaW5pdC5jIChidWlsZF9kZWZhdWx0X2luaXQpOiBEb24ndCB1c2UgYSBDT05TVFJVQ1RPUiB0byBpbml0aWFsaXplCglhIHBtZi4KCjIwMDEtMDItMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGNoZWNrX2R0b3JfbmFtZSk6IEhhbmRsZSB0ZW1wbGF0ZSBuYW1lcyBjb3JyZWN0bHkuCgoyMDAxLTAyLTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNwLXRyZWUuaCAoREVDTF9VU0VfVlRUX1BBUk0pOiBSZW1vdmUuCgkqIGRlY2wyLmMgKG1heWJlX3JldHJvZml0X2luX2NocmcpOiBEb24ndCBjcmVhdGUgaXQuCgkqIG9wdGltaXplLmMgKG1heWJlX2Nsb25lX2JvZHkpOiBEb24ndCBzdWJzdGl0dXRlIGl0LgoJKiBjYWxsLmMgKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IENoZWNrIGluX2NocmcgaW5zdGVhZC4KCSogaW5pdC5jIChleHBhbmRfdmlydHVhbF9pbml0KTogTGlrZXdpc2UuCgoyMDAxLTAyLTE2ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGNoZWNrX3RhZ19kZWNsKTogTWFrZSBzdXJlIGEgdHlwZWRlZiBmb3IgYW4gYW5vbnltb3VzCgljbGFzcy10eXBlIGludHJvZHVjZXMgYXQgbGVhc3QgYSB0eXBlLW5hbWUuCgoyMDAxLTAyLTE2ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBDcmVhdGUgYSB0ZW1wb3JhcnkgZm9yIG5vbi1sdmFsdWUuCgoyMDAxLTAyLTE2ICBKZWZmcmV5IE9sZGhhbSAgPG9sZGhhbUBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oOiBGaXggdHlwb3MgaW4gY29tbWVudHMuCgoyMDAxLTAyLTE2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIG9wdGltaXplLmMgKHJlbWFwX2Jsb2NrKTogSWYgd2UncmUgY29tcGlsaW5nIGEgY2xvbmUsIHBhc3MgdGhlCgluZXcgYmxvY2sgdG8gaW5zZXJ0X2Jsb2NrLgoKMjAwMS0wMi0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYXNtX3N0bXQpOiBSb2J1c3RpZnkuCgoyMDAxLTAyLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAocHVzaF90ZW1wbGF0ZV9kZWNsX3JlYWwpOiBEb24ndCByZW1hbmdsZSB0aGUgbmFtZSBvZiBhCgljbGFzcyB0ZW1wbGF0ZS4KCjIwMDEtMDItMTUgIEppbSBNZXllcmluZyAgPG1leWVyaW5nQGx1Y2VudC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGMrKy5pbnN0YWxsLWNvbW1vbik6IERlcGVuZCBvbiBpbnN0YWxsZGlycy4KCShjKysuaW5zdGFsbC1pbmZvKTogTGlrZXdpc2UuCgkoYysrLmluc3RhbGwtbWFuKTogTGlrZXdpc2UuCgoyMDAxLTAyLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrMi5jIChidWlsZF9tX2NvbXBvbmVudF9yZWYpOiBSb2J1c3RpZnkuCgoyMDAxLTAyLTE1ICBBbGV4YW5kcmUgT2xpdmEgIDxhb2xpdmFAcmVkaGF0LmNvbT4KCgkqIGZyaWVuZC5jIChkb19mcmllbmQpOiBEb24ndCB0YWtlIHRoZSBuZXN0ZWQgW3RlbXBsYXRlXSBjbGFzcwoJaW50byBhY2NvdW50IHdoZW4gZGVjaWRpbmcgd2hldGhlciB0byB3YXJuIGFib3V0IHRoZSBmcmllbmQKCWZ1bmN0aW9uIG5vdCByZWZlcnJpbmcgdG8gYSB0ZW1wbGF0ZSBmdW5jdGlvbi4KCjIwMDEtMDItMTQgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogQ2xhcmlmeSBlcnJvciBtZXNzYWdlLgoKMjAwMS0wMi0wOCAgQWxkeSBIZXJuYW5kZXogIDxhbGR5aEByZWRoYXQuY29tPgoKCSogcGFyc2UueSAoY29tcG9uZW50X2NvbnN0cnVjdG9yX2RlY2xhcmF0b3IpOiBhbGxvdyBvcHRpb25hbAoJcGFyZW50aGVzZXMgYXJvdW5kIGNvbnN0cnVjdG9yIGNsYXNzIG5hbWUuCgoyMDAxLTAyLTE0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChzZXR1cF92dGJsX3B0cik6IE1vdmUgcHJvdG90eXBlIHRvIHNlbWFudGljcy5jCglzZWN0aW9uLgoJKiBpbml0LmMgKGVtaXRfYmFzZV9pbml0KTogUmVtb3ZlIGluY29ycmVjdCBjb21tZW50IGFib3V0Cgl2aXJ0dWFsIGJhc2VzLgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IEZpeCBjb21tZW50IGFsaWdubWVudC4KCjIwMDEtMDItMTQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJS2lsbCByZW1uYW50cyBvZiB0aGlzIGlzIHZhcmlhYmxlLgoJKiBjcC10cmVlLmggKGZsYWdfdGhpc19pc192YXJpYWJsZSk6IFJlbW92ZS4KCSogZGVjbDIuYyAoZmxhZ190aGlzX2lzX3ZhcmlhYmxlKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChmaXhlZF90eXBlX29yX251bGwpOiBBZGQgY2R0b3IgcGFybS4gQWRqdXN0LgoJKGJ1aWxkX3ZiYXNlX3BhdGgpOiBUaGUgcGF0aCBpcyBub24tc3RhdGljLCBldmVuIGluIGEgY2R0b3IuCgkocmVzb2x2ZXNfdG9fZml4ZWRfdHlwZV9wKTogQWRkIGFkZGl0aW9uYWwgcmV0dXJuIHZhbHVlLgoJKiBzZWFyY2guYyAoaW5pdF92YmFzZV9wb2ludGVycyk6IEFkanVzdC4KCSogdHJlZS5jIChsdmFsdWVfcF8xKTogQWRqdXN0LgoJKiB0eXBlY2suYyAobWFya19hZGRyZXNzYWJsZSk6IEFkanVzdC4KCjIwMDEtMDItMTQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jICh1bmlmeSk6IERvbid0IGNoZWNrIGN2IHF1YWxzIG9mIGFycmF5IHR5cGVzLgoKMjAwMS0wMi0xNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGVfcmVhbCk6IFVzZSBDUF9UWVBFX1FVQUxTIHRvCgljaGVjayB3aGV0aGVyIHdlIGFscmVhZHkgaGF2ZSB0aGUgdHlwZS4KCjIwMDEtMDItMTMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9ERVNUUlVDVE9SUyk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkqIGNhbGwuYyAoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBTaW1wbGlmeSB0byByZW1vdmUgZHVwbGljYXRlCgljb2RlLgoJKiBjbGFzcy5jIChjbG9uZV9mdW5jdGlvbl9kZWNsKTogRG9uJ3QgYnVpbGQgdGhlIGRlbGV0aW5nIHZhcmlhbnQKCW9mIGEgbm9uLXZpcnR1YWwgZGVzdHJ1Y3Rvci4KCSogZGVjbC5jIChmaW5pc2hfZGVzdHJ1Y3Rvcl9ib2R5KTogRG9uJ3QgY2FsbCBkZWxldGUgaWYgdGhpcyBpcyBhCglub24tdmlydHVhbCBkZXN0cnVjdG9yLgoJKiBpbml0LmMgKGJ1aWxkX2RlbGV0ZSk6IEV4cGxpY2l0bHkgY2FsbCBgb3BlcmF0b3IgZGVsZXRlJyB3aGVuCglkZWxldGluZyBhbiBvYmplY3Qgd2l0aCBhIG5vbi12aXJ0dWFsIGRlc3RydWN0b3IuCgoyMDAxLTAyLTEzICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGxhbmctc3BlY3MuaDogQWRkIG1vcmUgX19FWENFUFRJT05TLgoKMjAwMS0wMi0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHR5cGVjazIuYyAocHJvY2Vzc19pbml0X2NvbnN0cnVjdG9yKTogQ2hlY2sKCVRSRUVfSEFTX0NPTlNUUlVDVE9SIGJlZm9yZSBpc3N1aW5nIG1pc3NpbmcgaW5pdCB3YXJuaW5nLgoKMjAwMS0wMi0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKG1heWJlX2FkanVzdF90eXBlc19mb3JfZGVkdWN0aW9uLCBERURVQ0VfT1JERVIgY2FzZSk6CglSZW1vdmUgc3B1cmlvdXMgaW5mb3JtYXRpb24gaW4gY29tbWVudC4gQWxsb3cgZnVydGhlcgoJYWRqdXN0bWVudHMgb2YgUkVGRVJFTkNFX1RZUEUgYXJncy4KCjIwMDEtMDItMTIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlcnJmbi5jIChjcF9kZXByZWNhdGVkKTogVHdlYWsgZGlhZ25vc3RpYyB0ZXh0LgoJKiBwYXJzZS55IChuZXdfaW5pdGlhbGl6ZXIpOiBEZXByZWNhdGUgaW5pdGlhbGl6ZXIgbGlzdHMKCWV4dGVuc2lvbi4KCjIwMDEtMDItMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUmVtb3ZlIG9sZCBBQkkgc3VwcG9ydC4KCjIwMDEtMDItMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChmbGFnX3Z0YWJsZV90aHVua3MpOiBBbHdheXMgc2V0IGl0IHRvIDEuCgkoZmxhZ19uZXdfYWJpKTogTGlrZXdpc2UuCgkqIGxhbmctc3BlY3MuaDogUmVtb3ZlIGNvbmRpdGlvbmFsIG9uIEVOQUJMRV9ORVdfR1hYX0FCSS4KCgkqIE1ha2VmaWxlLmluIChnKytzcGVjLm8pOiBGaXggdHlwby4KCjIwMDEtMDItMDkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogbGFuZy1zcGVjcy5oOiBSZXN0b3JlIGRlZmluaXRpb24gb2YgX19FWENFUFRJT05TLgoKMjAwMS0wMi0wOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBzZWFyY2guYyAoc2hhcmVkX21lbWJlcl9wKTogTmV3IGZ1bmN0aW9uLgoJKGxvb2t1cF9maWVsZF9yKTogVXNlIGl0LgoJKiBjcC10cmVlLmggKFNIQVJFRF9NRU1CRVJfUCk6IFJlbW92ZS4KCgkqIG1ldGhvZC5jIChwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiBIYW5kbGUgdGVtcGxhdGUtZGVwZW5kZW50IGFycmF5Cglib3VuZHMuCgkqIHB0LmMgKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IElmIHdlIGVuZCB1cCB3aXRoIHVuZGVkdWNlZCBub250eXBlCglwYXJtcywgdHJ5IGFnYWluLgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogVHdlYWsgd2FybmluZyB0byByZWZlciB0byBkZWNscywgbm90Cgl0eXBlcy4KCgkqIHR5cGVjazIuYyAoZnJpZW5kbHlfYWJvcnQpOiBEb24ndCBzYXkgYW55dGhpbmcgaWYgd2UgaGF2ZQoJZWFybGllciBlcnJvcnMgb3Igc29ycmllcy4KCgkqIGRlY2wuYyAoY2hlY2tfdGFnX2RlY2wpOiBOb3RpY2UgYXR0ZW1wdHMgdG8gcmVkZWZpbmUgYm9vbCBhbmQKCXdjaGFyX3QuICBJZ25vcmUgaWYgaW5fc3lzdGVtX2hlYWRlci4KCgkqIGRlY2wuYyAobWF5YmVfcHVzaF9jbGVhbnVwX2xldmVsKTogTmV3IGZuLi4uCgkoc3RhcnRfZGVjbF8xKTogLi4uc3BsaXQgb3V0IGZyb20gaGVyZS4KCSogY3Z0LmMgKGJ1aWxkX3VwX3JlZmVyZW5jZSk6IFVzZSBpdC4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIGl0LgoKMjAwMS0wMi0wNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxhbmctc3BlY3MuaDogVXNlIENQTFVTUExVU19DUFBfU1BFQyBmb3IgdGhlIHByZXByb2Nlc3NvcgoJc3BlYy4KCjIwMDEtMDItMDYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBNYWtlIHN1cmUgaXQncyBhIHByaW1hcnkKCXRlbXBsYXRlIG9yIHRlbXBsYXRlX3RlbXBsYXRlX3Bhcm0gd2hlbiBjYWxsZWQgZnJvbSB0aGUgcGFyc2VyLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlX2NsYXNzKTogQWRkIGFzc2VydGlvbi4KCjIwMDEtMDItMDUgIEFsZXhhbmRyZSBPbGl2YSAgPGFvbGl2YUByZWRoYXQuY29tPgoKCSogbWV0aG9kLmMgKGJ1aWxkX21hbmdsZWRfbmFtZSkgW29sZCBhYmldOiBQcm90ZWN0IGZsdXNoX3JlcGVhdHMoKQoJZnJvbSBlcnJvcl9tYXJrX25vZGUuCgoyMDAxLTAyLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCUZpeCBzcGVjaWZpY2F0aW9uIGFuZCBpbXBsZW1lbnRhdGlvbiBidWdzIGluIFYzIEFCSQoJY29uc3RydWN0aW9uIHZ0YWJsZXMuCgkqIGNwLXRyZWUuaCAoZmxhZ19kdW1wX2NsYXNzX2xheW91dCk6IE5ldyBmbGFnLgoJKEJJTkZPX09WRVJSSURFX0FMT05HX1ZJUlRVQUxfUEFUSF9QKTogUmVtb3ZlLgoJKEJJTkZPX0xPU1RfUFJJTUFSWV9QKTogTmV3IGZsYWcuCgkoU0VUX0JJTkZPX05FV19WVEFCTEVfTUFSS0VEKTogQWRqdXN0IGFzc2VydHMuCgkoQklORk9fUFJJTUFSWV9NQVJLRURfUCk6IFJlbmFtZSB0byAuLi4KCShCSU5GT19QUklNQVJZX1ApOiAuLi4gaGVyZS4KCShiaW5mb192aWFfdmlydHVhbCk6IE5ldyBwcm90b3R5cGUuCgkqIGRlY2wyLmMgKGZsYWdfZHVtcF9jbGFzc19sYXlvdXQpOiBOZXcgZmxhZy4KCShjeHhfZGVjb2RlX29wdGlvbik6IFNldCBpdC4gQWRqdXN0IC1mZHVtcC10cmFuc2xhdGlvbi11bml0IHRvCgl1c2UgYD0nIGFzIGEgZmlsZSBuYW1lIHNlcGFyYXRvci4KCSogaW5pdC5jIChkZnNfaW5pdGlhbGl6ZV92dGJsX3B0cnMpOiBXYWxrIGludG8gdmlydHVhbCBwcmltYXJ5CgliYXNlcy4KCShidWlsZF92dGJsX2FkZHJlc3MpOiBJZiB0aGlzIGlzIGEgdmlydHVhbCBwcmltYXJ5IGJhc2UsIHRoZW4KCWdldCB0aGUgdnRibCBvZiB3aGF0IGl0IGlzIHVsdGltYXRlbHkgcHJpbWFyeSBmb3IuCgkqIHNlYXJjaC5jIChkZnNfc2tpcF9ub25wcmltYXJ5X3ZiYXNlc191bm1hcmtlZHApOiBBZGp1c3QKCWZvciBCSU5GT19QUklNQVJZX1AuCgkoZGZzX3NraXBfbm9ucHJpbWFyeV92YmFzZXNfbWFya2VkcCk6IExpa2V3aXNlLgoJKGdldF9zaGFyZWRfdmJhc2VfaWZfbm90X3ByaW1hcnkpOiBMaWtld2lzZS4KCShkZnNfZ2V0X3B1cmVfdmlydHVhbHMpOiBMaWtld2lzZS4KCShleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKGZpeHVwX3ZpcnR1YWxfdXBjYXN0X29mZnNldHMpOiBMaWtld2lzZS4KCShkZnNfZmluZF92YmFzZV9pbnN0YW5jZSk6IExpa2V3aXNlLgoJKGZpbmRfdmJhc2VfaW5zdGFuY2UpOiBMaWtld2lzZS4KCShiaW5mb19mcm9tX3ZiYXNlKTogQWRqdXN0IGNvbW1lbnQgdG8gcmVmbGVjdCByZWFsaXR5LgoJKGJpbmZvX3ZpYV92aXJ0dWFsKTogTmV3IGZ1bmN0aW9uLgoJKiBjbGFzcy5jIChWVFRfVE9QX0xFVkVMX1AsIFZUVF9NQVJLRURfQklORk9fUCk6IE5ldyBtYWNyb3MKCWZvciBiaW5mbyB3YWxraW5nIGR1cmluZyBWVFQgY29uc3RydWN0aW9uLgoJKGRmc19tYXJrX3ByaW1hcnlfYmFzZXMpOiBSZW1vdmUuCgkoZm9yY2VfY2Fub25pY2FsX2JpbmZvX3IpOiBOZXcgZnVuY3Rpb24uCgkoZm9yY2VfY2Fub25pY2FsX2JpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfcHJpbWFyeV92aXJ0dWFsX2Jhc2UpOiBOZXcgZnVuY3Rpb24uCgkobWFya19wcmltYXJ5X2Jhc2VzKTogV2FsayBpbiBpbmhlcml0YW5jZSBncmFwaCBvcmRlciwgdXNlCgltYXJrX3ByaW1hcnlfdmlydHVhbF9iYXNlLgoJKGRldGVybWluZV9wcmltYXJ5X2Jhc2UpOiBVc2Ugc29tZSBtb3JlIGludGVybWVkaWF0ZSB2YXJpYWJsZXMuCgkoZGZzX2ZpbmRfZmluYWxfb3ZlcnJpZGVyKTogRG9uJ3QgY2hlY2sgZm9yIG92ZXJyaWRpbmcgYWxvbmcgYQoJdmlydHVhbCBwYXRoLgoJKGRmc19tb2RpZnlfdnRhYmxlcyk6IFdhbGsgaW50byBwcmltYXJ5IHZpcnR1YWwgYmFzZXMgdG9vLgoJKHdhbGtfc3Vib2JqZWN0X29mZnNldHMpOiBBZGp1c3QgZm9yIEJJTkZPX1BSSU1BUllfUC4KCShidWlsZF9iYXNlX2ZpZWxkcyk6IExpa2V3aXNlLgoJKGRmc19zZXRfb2Zmc2V0X2Zvcl91bnNoYXJlZF92YmFzZXMpOiBMaWtld2lzZS4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IExpa2V3aXNlLgoJKGVuZF9vZl9jbGFzcyk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IENhbGwgZHVtcF9jbGFzc19oaWVyYXJjaHksIGlmIHJlcXVlc3RlZC4KCShkZnNfZ2V0X3ByaW1hcnlfYmluZm8pOiBVc2UgQklORk9fVFlQRSBmb3IgYmluZm9zLgoJKGR1bXBfY2xhc3NfaGllcmFyY2h5X3IpOiBBZGQgc3RyZWFtIHBhcmFtZXRlci4gRW1pdCBtb3JlIGluZm9ybWF0aW9uLgoJKGR1bXBfY2xhc3NfaGllcmFyY2h5KTogQWRkIGZpbGUgcGFyYW1ldGVyLiBBcHBlbmQgdG8gZmlsZSwgaWYKCXJlcXVpcmVkLgoJKGZpbmlzaF92dGJscyk6IEFkanVzdCBhY2N1bXVsYXRlX3Z0YmxfaW5pdHMgY2FsbC4KCVVzZSBjYW5vbmljYWwgYmFzZSBmb3IgdmlydHVhbCBiYXNlcy4KCShidWlsZF92dHQpOiBBZGQgbW9yZSBjb21tZW50cy4gQWRqdXN0IGJ1aWxkX3Z0dF9pbml0cyBjYWxsLgoJKGJ1aWxkX3Z0dF9pbml0cyk6IFJlbW92ZSBWSVJUVUFMX1ZUVFNfUCBwYXJtLgoJT25seSBzZXQgQklORk9fVlBUUl9JTkRFWCBvbiB0b3AgbGV2ZWwuIFVzZSBWVFRfVE9QX0xFVkVMX1AsCglWVFRfTUFSS0VEX0JJTkZPX1AgZm9yIGJpbmZvIHdhbGtpbmcuIFVzZSBjYW5vbmljYWwgdmJhc2UgZm9yCgl2aXJ0dWFsIFZUVHMuCgkoZGZzX2J1aWxkX3NlY29uZGFyeV92cHRyX3Z0dF9pbml0cyk6IEV4dHJhY3QgVlRUX1RPUF9MRVZFTF9QCglmcm9tIERBVEEuICBXZSB3YW50IHZpcnR1YWwgcHJpbWFyeSBiYXNlcyBhbmQgYWxsIGJhc2VzIHZpYSB2aXJ0dWFsLgoJT25seSBzZXQgQklORk9fVlBUUl9JTkRFWCBmb3IgdG9wIGxldmVsLiBMb29rIHVwIGZyb20gYSBwcmltYXJ5Cgl2aXJ0dWFsIGJhc2Ugd2hlbiBub3QgYSBjb25zdHJ1Y3Rpb24gdnRhYmxlLgoJKGRmc19jdG9yX3Z0YWJsZV9iYXNlc19xdWV1ZV9wKTogTmV3IERGUyBwcmVkaWNhdGUuCgkoYnVpbGRfY3Rvcl92dGJsX2dyb3VwKTogQWRqdXN0IGFjY3VtdWxhdGVfdnRibF9pbml0cyBjYWxsLgoJVXNlIGNhbm9uaWNhbCBiYXNlcyB3aGVuIHByb2Nlc3NpbmcgdmlydHVhbCBiYXNlcy4KCShhY2N1bXVsYXRlX3Z0YmxfaW5pdHMpOiBXZSdyZSBpbnRlcmVzdGVkIGluIGFueSBiYXNlIHZpYSBhCgl2aXJ0dWFsIHBhdGguCgkoZGZzX2FjY3VtdWxhdGVfdnRibF9pbml0cyk6IElmIHRoaXMgaXMgYSBwcmltYXJ5IHZpcnR1YWwgYmFzZQoJd2l0aGluIGEgY29uc3RydWN0aW9uIHZ0YWJsZSwgZGV0ZXJtaW5lIHdoYXQgaXMgYmVpbmcgb3ZlcnJpZGRlbi4KCShidWlsZF92dGJsX2luaXRpYWxpemVyKTogQWRkIG1vcmUgY29tbWVudHMKCShhZGRfdmNhbGxfb2Zmc2V0X3Z0YmxfZW50cmllc18xKTogQWRqdXN0IGNvbW1lbnQuCgkoYnVpbGRfcnR0aV92dGJsX2VudHJpZXMpOiBDaGVjayBpZiB0aGUgYmFzZSBoYXMgbG9zdCBpdHMKCXByaW1hcnkuCgoyMDAxLTAyLTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKGcrK3NwZWMubyk6IEFkanVzdCB1c2Ugb2YgRFJJVkVSX0RFRklORVMuCgpTdW4gRmViICA0IDE1OjUyOjQ0IDIwMDEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogQ2FsbCBhYm9ydCBpbnN0ZWFkIG9mIGZhdGFsLgoJKiBleGNlcHQuYyAoZGVjbF9pc19qYXZhX3R5cGUpOiBDYWxsIGZhdGFsX2Vycm9yIGluc3RlYWQgb2YgZmF0YWwuCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBMaWtld2lzZS4KCShidWlsZF9qYXZhX2NsYXNzX3JlZik6IENhbGwgaW50ZXJuYWxfZXJyb3IgYW5kIGZhdGFsX2Vycm9yLCBub3QgZmF0YWwuCgkqIGRlY2wuYyAoYnVpbGRfdHlwZW5hbWVfdHlwZSk6IGhhc2hfdGFibGVfaW5pdCBub3cgcmV0dXJucyB2b2lkLgoJZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IE1ha2UgYW4gZXJyb3Igbm9uLWZhdGFsLgoKMjAwMS0wMi0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX0lOVEVSRkFDRV9VTktOT1dOKTogRml4IGZvcm1hdHRpbmcuCglEb2N1bWVudC4KCShDTEFTU1RZUEVfSU5URVJGQUNFX0tOT1dOKTogTGlrZXdpc2UuCgkoU0VUX0NMQVNTVFlQRV9JTlRFUkZBQ0VfVU5LTk9XTl9YKTogTGlrZXdpc2UuCgkoU0VUX0NMQVNTVFlQRV9JTlRFUkZBQ0VfVU5LTk9XTik6IExpa2V3aXNlLgoJKFNFVF9DTEFTU1RZUEVfSU5URVJGQUNFX0tOT1dOKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobWF5YmVfY29tbW9uaXplX3Zhcik6IFVzZSB0aGUgbmV3IG5hbWUtbWFuZ2xpbmcgd2hlcmUKCWFwcHJvcHJpYXRlLgoJKiBkZWNsMi5jIChjb21kYXRfbGlua2FnZSk6IEVuaGFuY2UgY29tbWVudHMuICBNYWtlIGFsbAoJY29tcGlsZXItZ2VuZXJhdGVkIHRoaW5ncyBzdGF0aWMsIGlmIENPTURBVCBpcyBub3QgYXZhaWxhYmxlLgoJKGdldF90aW5mb19kZWNsKTogRG8gbm90IG1ha2UgdHlwZWluZm8gb2JqZWN0cyB0aGF0IGJlbG9uZyBpbiB0aGUKCWxpYnJhcnkgQ09NREFULgoJKHRpbmZvX2Jhc2VfaW5pdCk6IFVzZSB0aGUgY29ycmVjdCBtYW5nbGVkIG5hbWUgZm9yIHR5cGVpbmZvCglzdHJpbmdzLCBhbmQgcHVzaCB0aGVtIGludG8gdGhlIGdsb2JhbCBzY29wZS4KCSh0eXBlaW5mb19pbl9saWJfcCk6IE5ldyBmdW5jdGlvbi4KCShzeW50aGVzaXplX3RpbmZvX3Zhcik6IFVzZSBpdC4KCShjcmVhdGVfcmVhbF90aW5mb192YXIpOiBMaWtld2lzZS4KCjIwMDEtMDItMDMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogZGVjbC5jIChwdXNoX2NsYXNzX2JpbmRpbmcpOiBVc2UgY29udGV4dF9mb3JfbmFtZV9sb29rdXAgaW5zdGVhZAoJb2YgQ1BfREVDTF9DT05URVhULgoJKiBzZWFyY2guYyAoY29udGV4dF9mb3JfbmFtZV9sb29rdXApOiBSZW1vdmUgc3RhdGljLiAgQ2hlY2sgZm9yIE5VTEwKCWNvbnRleHQgaW4gdGhlIGxvb3AuCgkqIGNwLXRyZWUuaCAoY29udGV4dF9mb3JfbmFtZV9sb29rdXApOiBBZGQgcHJvdG90eXBlLgoKMjAwMS0wMi0wMiAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBjcC10cmVlLmggKGJ1aWxkX2V4cHJfcHRyX3dyYXBwZXIsIGNhbl9mcmVlKTogUmVtb3ZlLgoJKiB0cmVlLmMgKGJ1aWxkX2V4cHJfcHRyX3dyYXBwZXIsIGNhbl9mcmVlLCBwZXJtYW5lbnRfb2JzdGFjayk6CglSZW1vdmUuCgkqIGNhbGwuYyAoY29udmVydF9jbGFzc190b19yZWZlcmVuY2UsIGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEsCglhZGRfd2FybmluZyk6IENoYW5nZSBidWlsZF9leHByX3B0cl93cmFwcGVyIHRvIGJ1aWxkX3B0cl93cmFwcGVyLgoKMjAwMS0wMi0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZysrc3BlYy5vKTogQWRkIERSSVZFUl9ERUZJTkVTIHRvIHRoZSBsaXN0CglvZiBtYWNyb3MgdXNlZCB3aGVuIGNvbXBpbGluZyBnKytzcGVjLmMuCgkqIGcrK3NwZWMuYyAobGFuZ19zcGVjaWZpY19kcml2ZXIpOiBMaW5rIHdpdGggdGhlIHNoYXJlZAoJbGliZ2NjIGJ5IGRlZmF1bHQuCgoyMDAxLTAxLTI5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSksIGxleC5jIChtYWtlX3BvaW50ZXJfZGVjbGFyYXRvciwKCW1ha2VfcmVmZXJlbmNlX2RlY2xhcmF0b3IsIG1ha2VfY2FsbF9kZWNsYXJhdG9yKSwgbWV0aG9kLmMKCShpbXBsaWNpdGx5X2RlY2xhcmVfZm4pLCBwYXJzZS55IChuYW1lc3BhY2VfdXNpbmdfZGVjbCwKCW5vdHlwZV91bnF1YWxpZmllZF9pZCwgZXhwcl9vcl9kZWNsYXJhdG9yLCBuZXdfdHlwZV9pZCwKCWFmdGVyX3R5cGVfZGVjbGFyYXRvciwgZGlyZWN0X2FmdGVyX3R5cGVfZGVjbGFyYXRvciwKCW5vdHlwZV9kZWNsYXJhdG9yLCBjb21wbGV4X25vdHlwZV9kZWNsYXJhdG9yLAoJY29tcGxleF9kaXJlY3Rfbm90eXBlX2RlY2xhcmF0b3IsIHF1YWxpZmllZF9pZCwKCW5vdHlwZV9xdWFsaWZpZWRfaWQsIG92ZXJxdWFsaWZpZWRfaWQsIGRpcmVjdF9uZXdfZGVjbGFyYXRvciwKCWFic2RjbCwgZGlyZWN0X2Fic3RyYWN0X2RlY2xhcmF0b3IsIGNvbnZlcnNpb25fZGVjbGFyYXRvciksIHB0LmMKCSh0c3Vic3QpLCBzZW1hbnRpY3MuYyAoYmVnaW5fY29uc3RydWN0b3JfZGVjbGFyYXRvcik6IFVzZSBidWlsZF9udAoJaW5zdGVhZCBvZiBidWlsZF9wYXJzZV9ub2RlLgoKMjAwMS0wMS0yOCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY3AtdHJlZS5oIChjcF90cmVlX2luZGV4KTogRGVsZXRlIENQVElfTUlOVVNfT05FLgoJKG1pbnVzX29uZV9ub2RlKTogTW92ZWQgdG8gdG9wIGxldmVsIGdjYyBkaXJlY3RvcnkuICBSZW5hbWVkCgl0byBpbnRlZ2VyX21pbnVzX29uZV9ub2RlLgoKCSogaW5pdC5jIChpbml0X2luaXRfcHJvY2Vzc2luZyk6IERvbid0IHNldCBtaW51c19vbmVfbm9kZS4KCShidWlsZF92ZWNfaW5pdCk6IFVzZSBpbnRlZ2VyX21pbnVzX29uZV9ub2RlLgoKCSogcnR0aS5jIChnZXRfdGluZm9fZGVjbF9keW5hbWljKTogTGlrZXdpc2UuCgoyMDAxLTAxLTI4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIG9wdGltaXplLmMgKGNvcHlfYm9keV9yKTogSWYgTU9ESUZZX0VYUFIgaGFzIGJvdGggYXJndW1lbnRzCglpZGVudGljYWwgYW5kIHRoZXkgd291bGQgYmUgcmVwbGFjZWQgd2l0aCBjb25zdGFudCwgcmVtb3ZlCglNT0RJRllfRVhQUiBmcm9tIHRoZSB0cmVlLgoKMjAwMS0wMS0yNyAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluOiBSZW1vdmUgYWxsIGRlcGVuZGVuY2llcyBvbiBkZWZhdWx0cy5oLgoJKiBjYWxsLmM6IERvbid0IGluY2x1ZGUgZGVmYXVsdHMuaC4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogZGVjbDIuYzogTGlrZXdpc2UuCgkqIGV4Y2VwdC5jOiBMaWtld2lzZS4KCSogcHQuYzogTGlrZXdpc2UuCgkqIHJ0dGkuYzogTGlrZXdpc2UuCgkqIHRyZWUuYzogTGlrZXdpc2UuCgkqIHR5cGVjay5jOiBMaWtld2lzZS4KCjIwMDEtMDEtMjUgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogbWFuZ2xlLmMgKHdyaXRlX21hbmdsZWRfbmFtZSwgd3JpdGVfZW5jb2RpbmcpOiBNYW5nbGUgb3ZlcmxvYWRlZAoJb3BlcmF0b3JzIGV2ZW4gaW4gIkMiIGxpbmthZ2UuCgkqIG1ldGhvZC5jIChzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IENhbGwgc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbCBldmVuIGZvcgoJb3ZlcmxvYWRlZCBvcGVyYXRvcnMgaW4gIkMiIGxpbmthZ2UuCgoyMDAxLTAxLTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2RlY2wpOiBSZW1vdmUgSU5fREVDTCBwYXJhbWV0ZXIuCgkodHN1YnN0X2FyZ190eXBlcyk6IENoZWNrIHBhcmFtZXRlciBpcyBub3Qgdm9pZC4KCSh0c3Vic3QpOiBBZGp1c3QgdHN1YnN0X2RlY2wgY2FsbC4KCjIwMDEtMDEtMjQgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IFF1b3RlIHN0ZCBwcm9wZXJseSwgZnJvbQoJcHJldmlvdXMgY2hhbmdlLgoKMjAwMS0wMS0yMyAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IENsb25lIGNvbnN0cnVjdG9ycyBhbmQKCWRlc3RydWN0b3JzLgoKMjAwMS0wMS0yMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEb24ndCBwcmVzdW1lIERFQ0xfTEFOR19TUEVDSUZJQwoJaW5kaWNhdGVzIGFueXRoaW5nIHNwZWNpYWwgYWJvdXQgdGVtcGxhdGUgZGVwdGguIE1ha2Ugc3VyZSB3ZQoJb25seSBjb3VudCB0aGUgdXNlciB2aXNpYmxlIHRlbXBsYXRlIGNsYXNzZXMuCgoyMDAxLTAxLTIzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9jb252KTogVHlwbyBpbiBjb21tZW50LgoJKGFkZF9idWlsdGluX2NhbmRpZGF0ZSk6IEFkZCBtb3JlIGV4cGxhbmF0aW9uLgoJUmVtb3ZlIGV4dHJhIHRlc3QgZm9yIEVOVU1FUkFMX1RZUEUgaW4ge1BSRSxQT1NUfUlOQ1JFTUVOVF9FWFBSLgoJQWxsb3cgRU5VTUVSQUxfVFlQRXMgZm9yIHJlbG9wcyBhbmQgZXFvcHMuIEFkZCBib3RoIGNhbmRpZGF0ZXMKCXdoZW4gd2UgaGF2ZSBlbnVtZXJhbCB0eXBlcy4KCShhZGRfYnVpbHRpbl9jYW5kaWRhdGVzKTogQWRkIG1vcmUgZXhwbGFuYXRpb24uIEFkZCBFTlVNRVJBTF9UWVBFCgljYW5kaWRhdGVzIGZvciByZWxvcHMgYW5kIGVxb3BzLgoJKGpvdXN0KTogU2ltcGxpZnkgY29udHJvbCBmbG93LiBBbGxvdyBhIG5vbi10ZW1wbGF0ZSB1c2VyCglmdW5jdGlvbiB0byBoaWRlIGEgYnVpbHRpbi4KCjIwMDEtMDEtMjIgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHVuaWZpY2F0aW9uX2tpbmRfdCk6IEFkZCBERURVQ0VfT1JERVIuCgkobW9yZV9zcGVjaWFsaXplZCk6IEFkZCBkZWR1Y3Rpb24gcGFyYW1ldGVyLgoJKiBjYWxsLmMgKGpvdXN0KTogQWRqdXN0IG1vcmVfc3BlY2lhbGl6ZWQgY2FsbC4KCSogcHQuYyAoVU5JRllfQUxMT1dfT1VURVJfTU9SRV9DVl9RVUFMLAoJVU5JRllfQUxMT1dfT1VURVJfTEVTU19DVl9RVUFMKTogTmV3IHVuaWZ5IGZsYWdzLgoJKGdldF9iaW5kaW5nc19vcmRlcik6IFJlbW92ZS4KCShnZXRfYmluZGluZ3NfcmVhbCk6IEFkZCBERURVQ0UgcGFyYW1ldGVyLgoJKG1heWJlX2FkanVzdF90eXBlc19mb3JfZGVkdWN0aW9uKTogUmV0dXJuIGV4dHJhIHVuaWZ5IGZsYWdzLiBEbwoJUkVGRVJFTkNFX1RZUEUgamlnIGZvciBERURVQ0VfT1JERVIuCgkodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogRGVhbCB3aXRoIERFRFVDRV9PUkRFUi4gVXNlIHJlc3VsdCBvZgoJbWF5YmVfYWRqdXN0X3R5cGVzX2Zvcl9kZWR1Y3Rpb24uCgkobW9yZV9zcGVjaWFsaXplZCk6IEFkZCBERURVQ0UgcGFyYW1ldGVyLiBDYWxsIGdldF9iaW5kaW5nc19yZWFsCglkaXJlY3RseS4KCSh0cnlfb25lX292ZXJsb2FkKTogVXNlIHJlc3VsdCBvZiBtYXliZV9hZGp1c3RfdHlwZXNfZm9yX2RlZHVjdGlvbi4KCShjaGVja19jdl9xdWFsc19mb3JfdW5pZnkpOiBVc2UgbmV3IHVuaWZ5IHF1YWxpZmllciBmbGFncy4KCSh1bmlmeSk6IENsZWFyIG5ldyB1bmlmeSBxdWFsaWZpZXIgZmxhZ3MuCgkoZ2V0X2JpbmRpbmdzX3JlYWwpOiBBZGQgREVEVUNFIHBhcmFtZXRlci4KCShnZXRfYmluZGluZ3MpOiBBZGp1c3QgY2FsbCB0byBnZXRfYmluZGluZ3NfcmVhbC4KCShnZXRfYmluZGluZ3Nfb3ZlcmxvYWQpOiBMaWtld2lzZS4KCShtb3N0X3NwZWNpYWxpemVkX2luc3RhbnRpYXRpb24pOiBBZGp1c3QgY2FsbCB0bwoJbW9yZV9zcGVjaWFsaXplZC4KCjIwMDEtMDEtMTkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZGVjbDIuYyAoZmxhZ192dGFibGVfdGh1bmtzKTogQWxzbyBkZXBlbmQgb24gRU5BQkxFX05FV19HWFhfQUJJLgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IEp1c3QgZm9yY2UgLWZ2dGFibGUtdGh1bmtzIG9uIGlmCgktZm5ldy1hYmkuCgoyMDAxLTAxLTE5ICBVdGUgUGVsa21hbm4gIDxzY29wZS5tdWNAdC1vbmxpbmUuZGU+CgoJKiBkZWNsMi5jIChhcmdfYXNzb2NfY2xhc3MpOiBGaXggZG91YmxlIGl0ZXJhdGlvbiBsb2dpYy4KCjIwMDEtMDEtMTkgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogaW5pdC5jIChidWlsZF9kZWxldGUpOiBBbHdheXMgY2FsbCBjb252ZXJ0X2ZvcmNlIHRvIHN0cmlwIGN2LXF1YWxzLgoKCSogZGVjbDIuYyAoZmxhZ19uZXdfYWJpKTogRGVwZW5kIG9uIEVOQUJMRV9ORVdfR1hYX0FCSS4KCSogbGFuZy1zcGVjcy5oOiBEZWZhdWx0IEFCSSBkZXBlbmRzIG9uIEVOQUJMRV9ORVdfR1hYX0FCSS4KCSogZysrc3BlYy5jOiBEb24ndCBsb29rIGF0IEVOQUJMRV9ORVdfR1hYX0FCSS4KCjIwMDEtMDEtMTkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzZWFyY2guYyAoZ2V0X3ZiYXNlXzEpOiBDb3VudCBvbmx5IHZpcnR1YWwgYmFzZXMuCgoyMDAxLTAxLTE5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoZHVwbGljYXRlX3RhZ19lcnJvcik6IFJvYnVzdGlmeSBmbGFnIGNsZWFyaW5nLgoKMjAwMS0wMS0xOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogQWRkIGNvbXBsYWluIHBhcm0uCgkqIGRlY2wuYyAobG9va3VwX25hbWVzcGFjZV9uYW1lKTogQWRqdXN0IGNhbGwgdG8KCWxvb2t1cF90ZW1wbGF0ZV9jbGFzcy4KCShtYWtlX3R5cGVuYW1lX3R5cGUpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF90ZW1wbGF0ZV90eXBlKTogTGlrZXdpc2UuCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEFkZCBjb21wbGFpbiBwYXJtLiBBZGp1c3QuCgkodHN1YnN0X2FnZ3JfdHlwZSk6IFBhc3MgQ09NUExBSU4gZG93biB0byBsb29rdXBfdGVtcGxhdGVfY2xhc3MuCgkodHN1YnN0KTogTGlrZXdpc2UuCgoyMDAxLTAxLTE5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoY29weV9kZWZhdWx0X2FyZ3NfdG9fZXhwbGljaXRfc3BlYyk6IFByZXNlcnZlCglvYmplY3QncyBDViBxdWFscy4gUmVvcmdhbml6ZS4KCjIwMDEtMDEtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBTYXkgYGluaXRpYWxpemF0aW9uJyBmb3IKCUlOSVRfRVhQUnMuCgkqIGluaXQuYyAoYnVpbGRfZGVmYXVsdF9pbml0KTogQ29udmVydCB0byBlbnVtZXJhbCB0eXBlLCBpZgoJbmVlZGVkLgoKMjAwMS0wMS0xOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChub21vZHNfaW5pdGRjbDApOiBQcm9wZXJseSBzZXQgdGhpbmdzIHVwIGZvcgoJaW5pdGRjbDBfaW5uYXJkcy4KCjIwMDEtMDEtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChVTklGWV9BTExPV19PVVRFUl9MRVZFTCk6IE5ldyB1bmlmeSBmbGFnLgoJKHR5cGVfdW5pZmljYXRpb25fcmVhbCk6IFNldCBpdC4KCSh1bmlmeSk6IFVzZSBpdC4KCjIwMDEtMDEtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGZpbmlzaF9kZXN0cnVjdG9yX2JvZHkpOiBDb252ZXJ0IHRvIHZiYXNlIHBvaW50ZXIgaGVyZS4KCjIwMDEtMDEtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IENoZWNrIHdlJ3JlIG5vdCBpbnNpZGUgYQoJdGVtcGxhdGUgcGFybSBsaXN0LgoKMjAwMS0wMS0xOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAod2Fsa190cmVlLCBUUkVFX0xJU1QpOiBEb24ndCB3YWxrIHRoZSBUUkVFX1BVUlBPU0Ugb2YKCUJBU0VMSU5LX1AuCgoyMDAxLTAxLTE2ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHR5cGVjay5jIChidWlsZF9mdW5jdGlvbl9jYWxsX3JlYWwpOiBDYWxsIGZvbGQgb24gdGhlIENBTExfRVhQUi4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBBZGQgY29tbWVudC4KCjIwMDEtMDEtMTYgRGFuaWVsIEJlcmxpbiA8ZGJlcmxpbkByZWRoYXQuY29tPgoKCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogSGFuZGxlIHZlY3RvciB0eXBlIGNvbnZlcnNpb24KCSogdHlwZWNrMi5jIChkaWdlc3RfaW5pdCk6IEhhbmRsZSB2ZWN0b3IgdHlwZSBpbml0aWFsaXphdGlvbnMKCjIwMDEtMDEtMTYgIFBoaWwgRWR3YXJkcyAgPHBtZUBzb3VyY2VzLnJlZGhhdC5jb20+CgoJKiBnKytzcGVjLmM6ICBEb24ndCBhZGQgbGlicmFyaWVzIG5lZWRsZXNzbHkgaWYgLWZzeW50YXgtb25seQoJICB3YXMgZ2l2ZW4uCgoyMDAxLTAxLTE1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoY2hlY2tfbm9udHlwZV9wYXJtKTogUmVuYW1lIHRvIC4uLgoJKGludmFsaWRfbm9udHlwZV9wYXJtX3R5cGVfcCk6IC4uLiBoZXJlLgoJKHByb2Nlc3NfdGVtcGxhdGVfcGFybSk6IEFkanVzdC4KCShjb252ZXJ0X3RlbXBsYXRlX2FyZ3VtZW50KTogQWRqdXN0LgoKMjAwMS0wMS0xNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGNoZWNrX25vbnR5cGVfcGFybSk6IE5ldyBmdW5jdGlvbi4KCShwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBVc2UgaXQuCgkoY29udmVydF90ZW1wbGF0ZV9hcmd1bWVudCk6IFVzZSBpdC4KCShjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQsIFJFQ09SRF9UWVBFKTogQXNzZXJ0IGl0J3MgYSBwdHIgdG8KCW1lbWJlci4KCjIwMDEtMDEtMTQgIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmM6IEFkZCBkZWZhdWx0cy5oCgkoY3BfdmFsaWRfbGFuZ19hdHRyaWJ1dGUpOiBJbmNvcnBvcmF0ZSBTVVBQT1JUU19JTklUX1BSSU9SSVRZLgoJKiBNYWtlLWxhbmcuaW4gKGNwL3RyZWUubyk6IEFkZCBkZWZhdWx0cy5oLgoKMjAwMS0wMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogTWFrZS1sYW5nLmluIChDWFhfQ19PQkpTKTogQWRkIGMtZm9ybWF0Lm8uCgoyMDAxLTAxLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnKysuMTogQ2hhbmdlIHRvIGJlICIuc28gbWFuMS9nY2MuMSIuCgoyMDAxLTAxLTEzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBNYWtlLWxhbmcuaW4gKGMrKy5pbmZvLCBjKysuaW5zdGFsbC1pbmZvKTogQnVpbGQgYW5kIGluc3RhbGwgZysrCglpbnRlcm5hbHMgaW5mby4KCShjKysudW5pbnN0YWxsLCBjKysubWFpbnRhaW5lci1jbGVhbik6IFJlbW92ZSBnKysgaW50ZXJuYWxzIGluZm8uCgkoJChzcmNkaXIpL2NwL2crK2ludC5pbmZvKTogTmV3IHRhcmdldC4KCSogZ3h4aW50LnRleGk6IEFkZCBpbmZvIGRpcmVjdG9yeSBlbnRyeS4gIFVzZSBAQCBpbiBlbWFpbCBhZGRyZXNzLgoJKiAuY3ZzaWdub3JlOiBVcGRhdGUuCgoyMDAxLTAxLTEyICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IERvIHRlbXBsYXRlIHByb2Nlc3NpbmcgZWFybGllci4KCUFsd2F5cyBwZWR3YXJuIG9uIGFycmF5IGNhc3RzLgoKMjAwMS0wMS0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGZyaWVuZC5jIChtYWtlX2ZyaWVuZF9jbGFzcyk6IE1ha2Ugc3VyZSBhIHRlbXBsYXRlZCBjbGFzcyBpcwoJYWN0dWFsbHkgYSB0ZW1wbGF0ZS4KCjIwMDEtMDEtMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChnZXRfZ3VhcmQpOiBTZXQgbGlua2FnZSBmcm9tIGd1YXJkZWQgZGVjbC4KCjIwMDEtMDEtMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGNvbnZlcnRfZGVmYXVsdF9hcmcpOiBDaGVjayBmb3IgdW5wcm9jZXNzZWQKCURFRkFVTFRfQVJHLgoJKiBjcC10cmVlLmggKHJlcGxhY2VfZGVmYXJnKTogTW92ZSB0byBzcGV3LmMuCgkobWF5YmVfc25hcmZfZGVmYXJnLCBhZGRfZGVmYXJnX2ZuLCBkb19wZW5kaW5nX2RlZmFyZ3MpOiBNb3ZlIHRvCglzcGV3LmMsIHdoaWNoIGlzIHdoZXJlIHRoZXkgcmVhbGx5IGFyZS4KCShkb25lX3BlbmRpbmdfZGVmYXJncyk6IERlY2xhcmUuCgkodW5wcm9jZXNzZWRfZGVmYXJnX2ZuKTogRGVjbGFyZS4KCSogZGVjbC5jIChyZXBsYWNlX2RlZmFyZyk6IE1vdmUgdG8gc3Bldy5jCgkqIHBhcnNlLnkgKHN0cnVjdHNwKTogQ2FsbCBkb25lX3BlbmRpbmdfZGVmYXJncy4KCSogc3Bldy5jIChkZWZhcmdfZm5zKTogUmVhcnJhbmdlIGxpc3Qgc3RydWN0dXJlLgoJKGRlZmFyZ19mbnNkb25lKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShkZWZhcmdfZGVwZm5zKTogTmV3IHN0YXRpYyB2YXJpYWJsZS4KCShpbml0X3NwZXcpOiBBZGp1c3QuCgkoYWRkX2RlZmFyZ19mbik6IFN0b3JlIHRoZSB0eXBlIGluIFRSRUVfVFlQRS4KCShkb19wZW5kaW5nX2RlZmFyZ3MpOiBEZXRlY3QgYW5kIGRlYWwgd2l0aCBvcmRlcmluZyBjb25zdHJhaW50cwoJYW5kIGNpcmN1bGFyaXR5LgoJKGRvbmVfcGVuZGluZ19kZWZhcmdzKTogTmV3IGZ1bmN0aW9uLgoJKHVucHJvY2Vzc2VkX2RlZmFyZ19mbik6IE5ldyBmdW5jdGlvbi4KCShyZXBsYWNlX2RlZmFyZyk6IE1vdmVkIGZyb20gZGVjbC5jLiBSb2J1c3RpZnkuIERvbid0IHNhdmUKCWlmIGNpcmN1bGFyaXR5IGRldGVjdGVkLgoKMjAwMS0wMS0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKHVuaWZ5KTogQ2hlY2sgYXJyYXkgaGFzIGEgZG9tYWluLCBiZWZvcmUgY2hlY2tpbmcKCXdoZXRoZXIgaXQgaXMgdmFyaWFibGUgc2l6ZWQuCgoyMDAxLTAxLTExICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChncm9rcGFybXMpOiBVbm9iZnVzY2F0ZSBhbmQgZ2V0IGNvcnJlY3QgZGlhZ25vc3RpYyBmb3IKCXBhcmFtZXRlcnMgd2l0aCBwb2ludGVycyB0byBhcnJheXMgb2YgdW5rbm93biBib3VuZC4KCjIwMDEtMDEtMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZS55ICh0ZW1wbGF0ZV9wYXJtX2hlYWRlciwgdGVtcGxhdGVfc3BlY19oZWFkZXIpOiBOZXcKCXJlZHVjdGlvbnMuIFNwbGl0IG91dCBmcm9tIC4uLgoJKHRlbXBsYXRlX2hlYWRlcik6IC4uLiBoZXJlLiBVc2UgdGhlbS4KCSh0ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogVXNlIHRlbXBsYXRlX3Bhcm1faGVhZGVyLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm0pOiBBZGQgYXNzZXJ0LgoKMjAwMS0wMS0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1hbmdsZS5jICh3cml0ZV9idWlsdGluX3R5cGUpOiBGaXggdGhpbmtvLgoKCSogcHQuYyAoY29weV9kZWZhdWx0X2FyZ3NfdG9fZXhwbGljaXRfc3BlY18xKTogTmV3IGZ1bmN0aW9uLgoJKGNvcHlfZGVmYXVsdF9hcmdzX3RvX2V4cGxpY2l0X3NwZWMpOiBMaWtld2lzZS4KCShjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFVzZSBpdC4KCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6ICBSZW1vdmUgbGFzdCBhcmd1bWVudCBpbiBjYWxsIHRvCgltYWtlX2RlY2xfcnRsOyB1c2UgbWFrZV9mdW5jdGlvbl9ydGwgaW5zdGVhZCBvZiBtYWtlX2RlY2xfcnRsLgoJKiBkZWNsLmMgKGJ1aWx0aW5fZnVuY3Rpb24pOiBMaWtld2lzZS4KCShidWlsZF9jcF9saWJyYXJ5X2ZuKTogTGlrZXdpc2UuCgkoY2hlY2tfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShtYWtlX3J0bF9mb3Jfbm9ubG9jYWxfZGVjbCk6IExpa2V3aXNlLgoJKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZmluaXNoX2Fub25fdW5pb24pOiBMaWtld2lzZS4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogTGlrZXdpc2UuCgkqIHB0LmMgKHRzdWJzdF9mcmllbmRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9ib2R5KTogTGlrZXdpc2UuCgoyMDAxLTAxLTEwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX0NMT05FRF9GVU5DVElPTl9QKTogQXZvaWQgd2lsZCByZWFkcyBieSBub3QKCWxvb2tpbmcgYXQgREVDTF9DTE9ORURfRlVOQ1RJT04gZm9yIG5vbi1mdW5jdGlvbnMuCgoyMDAxLTAxLTEwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZXJyb3IuYyAoZHVtcF90ZW1wbGF0ZV9wYXJhbWV0ZXIpOiBVc2UgcGFybSB0byBkZXRlcm1pbmUgaG93Cgl0byBwcmludCBkZWZhdWx0IHZhbHVlLgoKMjAwMS0wMS0xMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGR1cGxpY2F0ZV90YWdfZXJyb3IpOiBDbGVhciBtb3JlIGZsYWdzLgoKMjAwMS0wMS0xMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogVXNlIGJpbmZvX2Zvcl92YmFzZS4KCjIwMDEtMDEtMTAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGNwLXRyZWUuaCAoZmxhZ19jb25kX21pc21hdGNoKTogRG9uJ3QgZGVjbGFyZS4KCSogZGVjbDIuYyAoZmxhZ19jb25kX21pc21hdGNoKTogRG9uJ3QgZGVmaW5lLgoJKGxhbmdfZl9vcHRpb25zKTogUmVtb3ZlIGNvbmQtbWlzbWF0Y2guCgkodW5zdXBwb3J0ZWRfb3B0aW9ucyk6IEFkZCBjb25kLW1pc21hdGNoLgoKMjAwMS0wMS0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGhhbmRsZV91c2luZ19kZWNsKTogUmVqZWN0IHVzaW5nIG9mIGNvbnN0cnVjdG9yIG5hbWUKCW9mIHNvdXJjaW5nIGNsYXNzLiBBbGxvdyBpbmplY3Rpbmcgb2YgYSBtZXRob2Qgd2l0aCBzYW1lIG5hbWUgYXMKCW5lc3RlZCBjbGFzcy4gRml4dXAgZXJyb3IgbWVzc2FnZXMuCgoyMDAxLTAxLTA5ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgLVdmb3JtYXQ9Mi4KCjIwMDEtMDEtMDggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IFJlbmFtZSBkZWZpbmVkX2luX2NsYXNzIHRvCglpbml0aWFsaXplZF9pbl9jbGFzcy4KCShERUNMX0RFRklORURfSU5fQ0xBU1NfUCk6IFJlbmFtZSB0byAuLi4KCShERUNMX0lOSVRJQUxJWkVEX0lOX0NMQVNTX1ApOiAuLi4gaGVyZSwgdG8gcmVmbGVjdCB0cnVlIG1lYW5pbmcuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogUHJlc2V2ZSBERUNMX0lOSVRJQUxJWkVEX0lOX0NMQVNTX1AuCgkoY3BfZmluaXNoX2RlY2wpOiBBZGp1c3QgZm9yIERFQ0xfSU5JVElBTElaRURfSU5fQ0xBU1NfUC4KCSogcHQuYyAoY2hlY2tfZGVmYXVsdF90bXBsX2FyZ3MpOiBBZGp1c3QgZm9yCglERUNMX0lOSVRJQUxJWkVEX0lOX0NMQVNTX1AuCgkoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShpbnN0YW50aWF0ZV9kZWNsKTogQ2hlY2sgREVDTF9JTklUSUFMSVpFRF9JTl9DTEFTU19QLgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IENvbnN0aWZ5IHNhdmVkX2ZpbGVuYW1lLgoKMjAwMS0wMS0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGR1cGxpY2F0ZV90YWdfZXJyb3IpOiBBZGp1c3QgZGlhZ25vc3RpYy4KCShmaW5pc2hfc3RydWN0KTogTG9jYWxseSBzZXQgbG9jYXRpb24gdG8gc3RhcnQgb2Ygc3RydWN0LgoJKiBkZWNsLmMgKGZpeHVwX2Fub255bW91c19hZ2dyKTogVXNlIGNwX2Vycm9yX2F0LgoKMjAwMS0wMS0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBBZGp1c3QgY2xhc3Nfc2hhZG93ZWQgY29tbWVudHMKCXRvIHJlZmxlY3QgcmVhbGl0eS4KCShwdXNoX2NsYXNzX2xldmVsX2JpbmRpbmcpOiBBZGp1c3QgY29tbWVudHMgdG8gcmVmbGVjdCByZWFsaXR5LgoJU2V0IElERU5USUZJRVJfQ0xBU1NfVkFMVUUgd2hlbiByZXBsYWNpbmcgYW4gZXhpc3RpbmcgYmluZGluZy4KCURvbid0IHNldCBUUkVFX1ZBTFVFIG9uIHRoZSBjbGFzc19zaGFkb3dlZCBsaXN0LgoKMjAwMS0wMS0wNyAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChhY2NlcHRhYmxlX2phdmFfdHlwZSk6IEFsbG93IHJlZmVyZW5jZXMgdG9vLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogV2hlbiB1c2luZyB0aGUgbmV3IEFCSSwgc2VhcmNoCglgY2xhc3MkJyBhbmQgaGF2ZSBpdCBtYW5nbGVkIHdpdGggYG1hbmdsZV9kZWNsLicKCSogbWFuZ2xlLmMgKHdyaXRlX2phdmFfaW50ZWdlcl90eXBlX2NvZGVzKTogTmV3IGZ1bmN0aW9uLgoJKHdyaXRlX2J1aWx0aW5fdHlwZSk6IERldGVjdCBhbmQgbWFuZ2xlIEphdmEgaW50ZWdlciBhbmQgcmVhbAoJdHlwZXMuCgoyMDAxLTAxLTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogRG9uJ3QgYWNjZXB0IGBhc20nIHNwZWNpZmllcnMgZm9yCglub24tc3RhdGljIGRhdGEgbWVtYmVycy4KCjIwMDEtMDEtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBEb24ndCByZXNldCBgdGFyZ2V0Jy4KCjIwMDEtMDEtMDcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGNwL2RlY2wyLmMgKGN4eF9wb3N0X29wdGlvbnMpOiBDYWxsIGNwcF9wb3N0X29wdGlvbnMuCgoyMDAxLTAxLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2UueSAodGVtcGxhdGVfZGF0YWRlZik6IENoZWNrIGZvciBlcnJvcl9tYXJrX25vZGUuCgoyMDAxLTAxLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5kZWYgKERFRkFVTFRfQVJHKTogTWFrZSBgeCcgY2xhc3MuCgoyMDAxLTAxLTA0ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBkZWNsLmMgKFNJWkVfVFlQRSwgUFRSRElGRl9UWVBFLCBXQ0hBUl9UWVBFKTogRG9uJ3QgZGVmaW5lLgoJKHJlY29yZF9idWlsdGluX3R5cGUpOiBNYWtlIG5vbi1zdGF0aWMuCgkoZmxhZ19zaG9ydF9kb3VibGUpOiBEb24ndCBkZWNsYXJlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVtb3ZlIHRoZSBjcmVhdGlvbiBvZiBtYW55IHRyZWUgbm9kZXMgbm93CglpbiBjX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMuCgkoYnVpbGRfdm9pZF9saXN0X25vZGUpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wyLmMgKGZsYWdfc2hvcnRfZG91YmxlLCBmbGFnX3Nob3J0X3djaGFyKTogRG9uJ3QgZGVmaW5lLgoJKiBjcC10cmVlLmggKGZsYWdfc2hvcnRfd2NoYXIpOiBEb24ndCBkZWNsYXJlLgoKMjAwMS0wMS0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfY29udik6IERvbid0IHVzZSBidWlsZDEgZm9yIFVTRVJfQ09OVi4KCSogcHQuYyAodHN1YnN0X2NvcHkpOiBPciBmb3IgUFJFSU5DUkVNRU5UX0VYUFIgYW5kIHNpbWlsYXIgbm9kZXMuCgoyMDAxLTAxLTAzICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBsZXguYyAobGFuZ19pbml0KTogQ2FsbCBjX2NvbW1vbl9sYW5nX2luaXQuCgoyMDAxLTAxLTAzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogc2VhcmNoLmMgKGxvb2t1cF9mbmZpZWxkc19oZXJlKTogUmVtb3ZlLgoJKGxvb2tfZm9yX292ZXJyaWRlc19yKTogVXNlIGxvb2t1cF9mbmZpZWxkc18xLgoJSWdub3JlIGZ1bmN0aW9ucyBmcm9tIHVzaW5nIGRlY2xhcmF0aW9ucy4KCjIwMDEtMDEtMDMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJSW1wbGVtZW50IGV4Y2VwdGlvbnMgc3BlY2lmaWVycyBmb3IgaW1wbGljaXQgbWVtYmVyIGZ1bmN0aW9ucy4KCSogY3AtdHJlZS5oIChtZXJnZV9leGNlcHRpb25zX3NwZWNpZmllcnMpOiBEZWNsYXJlIG5ldyBmdW5jdGlvbi4KCSogbWV0aG9kLmMgKHN5bnRoZXNpemVfZXhjZXB0aW9uX3NwZWMpOiBOZXcgZnVuY3Rpb24uCgkobG9jYXRlX2R0b3IsIGxvY2F0ZV9jdG9yLCBsb2NhdGVfY29weSk6IE5ldyBmdW5jdGlvbnMuCgkoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogR2VuZXJhdGUgdGhlIGV4Y2VwdGlvbiBzcGVjIHRvby4KCSogc2VhcmNoLmMgKGNoZWNrX2ZpbmFsX292ZXJyaWRlcik6IENoZWNrIGFydGlmaWNpYWwgZnVuY3Rpb25zCgl0b28uCgkqIHR5cGVjazIuYyAobWVyZ2VfZXhjZXB0aW9uX3NwZWNpZmllcnMpOiBOZXcgZnVuY3Rpb24uCgoyMDAxLTAxLTAzICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfZGVmYXVsdF9pbml0KTogTmV3IGZuLgoJKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBTcGxpdCBvdXQgZnJvbSBoZXJlLgoJKGJ1aWxkX25ld18xKTogVXNlIGl0LiAgU2ltcGxpZnkgaW5pdGlhbGl6YXRpb24gbG9naWMuCgkoYnVpbGRfdmVjX2luaXQpOiBUYWtlIGFuIGFycmF5LCByYXRoZXIgdGhhbiBhIHBvaW50ZXIgYW5kIG1heGluZGV4LgoJU3BlZWQgdXAgc2ltcGxlIGluaXRpYWxpemF0aW9ucy4gIERvbid0IGNsZWFuIHVwIGlmIHdlJ3JlIGFzc2lnbmluZy4KCSogY3AtdHJlZS5oOiBBZGp1c3QuCgkqIGRlY2wyLmMgKGRvX3N0YXRpY19pbml0aWFsaXphdGlvbik6IFJlbW92ZSBUUkVFX1ZFQyBjYXNlLgoJKiBwYXJzZS55IChuZXdfaW5pdGlhbGl6ZXIpOiBSZXR1cm4gdm9pZF96ZXJvX25vZGUgZm9yICgpLgoJKiB0eXBlY2suYyAoYnVpbGRfbW9kaWZ5X2V4cHIpOiBIYW5kbGUgZ2V0dGluZyBhIENPTlNUUlVDVE9SLgoJKiB0eXBlY2syLmMgKGRpZ2VzdF9pbml0KTogT25seSBjb21wbGFpbiBhYm91dCB1c2VyLXdyaXR0ZW4KCUNPTlNUUlVDVE9Scy4KCjIwMDAtMTItMjIgIE1pa2UgU3R1bXAgIDxtcnNAd3JzLmNvbT4KCgkqIGRlY2wyLmM6IChtYXhfdGluc3RfZGVwdGgpOiBJbmNyZWFzZSB0byA1MC4KCjIwMDEtMDEtMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChpbnZhbGlkYXRlX2NsYXNzX2xvb2t1cF9jYWNoZSk6IFplcm8gdGhlCglwcmV2aW91c19jbGFzc192YWx1ZXMuCgkqIGNwLXRyZWUuaCAoVE1QTF9QQVJNU19ERVBUSCk6IFVzZSBUUkVFX0lOVF9DU1RfTE9XLCBub3QKCVRSRUVfSU5UX0NTVF9ISUdILgoJKENMQVNTVFlQRV9URU1QTEFURV9MRVZFTCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGZyZWVfYmluZGluZ3MpOiBOZXcgdmFyaWFibGUuCgkocHVzaF9iaW5kaW5nKTogRG9uJ3QgY3JlYXRlIGEgbmV3IGJpbmRpbmcgaWYgd2UgaGF2ZSBvbmUgb24gdGhlCglmcmVlIGxpc3QuCgkocG9wX2JpbmRpbmcpOiBQdXQgb2xkIGJpbmRpbmdzIG9uIHRoZSBmcmVlIGxpc3QuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVc2Ugc2l6ZV9pbnQsIG5vdCBidWlsZF9pbnRfMi4KCVJlZ2lzdGVyIGZyZWVfYmluZGluZ3MgYXMgYSBHQyByb290LgoJKGNwX21ha2VfZm5hbWVfZGVjbCk6IFVzZSBzaXplX2ludCwgbm90IGJ1aWxkX2ludF8yLgoJKHB1c2hfaW5saW5lX3RlbXBsYXRlX3Bhcm1zX3JlY3Vyc2l2ZSk6IExpa2V3aXNlLgoJKGVuZF90ZW1wbGF0ZV9wYXJtX2xpc3QpOiBMaWtld2lzZS4KCShmb3JfZWFjaF90ZW1wYWx0ZV9wYXJtKTogRG8gbm90IHVzZSB3YWxrX3RyZWVfd2l0aG91dF9kdXBsaWNhdGVzLgoJKHRzdWJzdF90ZW1wbGF0ZV9wYXJtcyk6IFVzZSBzaXplX2ludCwgbm90IGJ1aWxkX2ludF8yLgoJKHRzdWJzdCk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGdldF92bWlfcHNldWRvX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoKMjAwMS0wMS0wMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHBhcnNlLnkgKGFzbSk6IFNldCBBU01fSU5QVVRfUC4KCjIwMDEtMDEtMDIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHJlZS5jIChjcF92YWxpZF9sYW5nX2F0dHJpYnV0ZSk6IERvbid0IHNldCBDTEFTU1RZUEVfQ09NX0lOVEVSRkFDRQoJZm9yIHYzIEFCSS4KCgkqIHR5cGVjay5jIChjcF90cnV0aHZhbHVlX2NvbnZlcnNpb24pOiBOZXcgZm4uCgkqIGN2dC5jIChvY3BfY29udmVydCk6IFVzZSBpdC4KCgkqIGNwLXRyZWUuaDogTG9zZSBjLWNvbW1vbi5jIGRlY2xzLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogUmVzdG9yZSBvbGQgJmEuZiBkaWFnbm9zdGljIGNvZGUuCgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBVc2UgdHlwZV91bmtub3duX3AuCgoJKiB0eXBlY2suYyAoc3RyaXBfYWxsX3BvaW50ZXJfcXVhbHMpOiBBbHNvIHN0cmlwIHF1YWxzIGZyb20KCXBvaW50ZXItdG8tbWVtYmVyIHR5cGVzLgoKCSogTWFrZS1sYW5nLmluIChjcC9UQUdTKTogVXNlIC0tbm8tZ2xvYmFscy4gIElnbm9yZSBwYXJzZS5jLCBhbmQgdHJlYXQKCXBhcnNlLnkgYXMgQy4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogRG8gZXZhbHVhdGUgdGhlIG9iamVjdCBwYXJhbWV0ZXIKCXdoZW4gYWNjZXNzaW5nIGEgc3RhdGljIG1lbWJlci4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBMaWtld2lzZS4KCjIwMDEtMDEtMDIgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIGRlY2wuYyAoY3BfbWlzc2luZ19ub3JldHVybl9va19wKTogTmV3LgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogU2V0IGxhbmdfbWlzc2luZ19ub3JldHVybl9va19wLgoKMjAwMC0xMi0yOSAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRml4IHNpZ24gb2Ygd2NoYXJfdHlwZV9ub2RlLgoKMjAwMC0xMi0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKHB1c2hjbGFzcyk6IFJlbW92ZSAjaWYgMCdkIGNvZGUuCgkqIGNwLXRyZWUuaCAob3ZlcmxvYWRfdGVtcGxhdGVfbmFtZSk6IFJlbW92ZS4KCSogZGVjbC5jIChzdG9yZV9iaW5kaW5ncyk6IFNpbXBsaWZ5LgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IExpa2V3aXNlLgoJKiBwdC5jIChvdmVybG9hZF90ZW1wbGF0ZV9uYW1lKTogUmVtb3ZlLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBEb24ndCBjYWxsIHB1c2hfdG9fdG9wX2xldmVsIGlmIGl0J3Mgbm90CgluZWVkZWQuCgoyMDAwLTEyLTI4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAocmVnaXN0ZXJfbG9jYWxfc3BlY2lhbGl6YXRpb24pOiBEb24ndCByZXR1cm4gYSB2YWx1ZS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBVc2UgbW92ZS10by1mcm9udCBoZXVyaXN0aWMgd2hlbiBsb29raW5nCgl1cCB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9ucy4KCShpbnN0YW50aWF0ZV9kZWNsKTogT25seSBwdXNoX3RvX3RvcF9sZXZlbCB3aGVuIHdlJ3JlIGFjdHVhbGx5Cglnb2luZyB0byBpbnN0YW50aWF0ZSB0aGUgdGVtcGxhdGUuCgoyMDAwLTEyLTI5ICBIYW5zLVBldGVyIE5pbHNzb24gIDxocEBiaXRyYW5nZS5jb20+CgoJKiBzZWFyY2guYyAoYmluZm9fZm9yX3Z0YWJsZSk6IFJldHVybiBsZWFzdCBkZXJpdmVkIGNsYXNzLCBub3QKCW1vc3QuICBIYW5kbGUgc2Vjb25kYXJ5IHZ0YWJsZXMuCgoyMDAwLTEyLTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHB0LmMgKG1vcmVfc3BlY2lhbGl6ZWQpOiBEb24ndCBvcHRpbWl6ZSBsZW49PTAuCgkoZm5fdHlwZV91bmlmaWNhdGlvbik6IElmIHdlJ3JlIGFkZGluZyB0aGUgcmV0dXJuIHR5cGUsIGluY3JlYXNlIGxlbi4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBGaXggcG1mIGNvbXBhcmlzb24gbG9naWMuCgoJKiBjYWxsLmMgKGpvdXN0KTogVXNlIERFQ0xfTk9OU1RBVElDX01FTUJFUl9GVU5DVElPTl9QLCBub3QKCURFQ0xfU1RBVElDX0ZVTkNUSU9OX1AuCgoJKiBzZW1hbnRpY3MuYyAoZ2VucnRsX2ZpbmlzaF9mdW5jdGlvbik6IERvbid0IHRyeSB0byBqdW1wIHRvCglyZXR1cm5fbGFiZWwgdW5sZXNzIGl0IGV4aXN0cy4KCglJbiBwYXJ0aWFsIG9yZGVyaW5nIGZvciBhIGNhbGwsIGlnbm9yZSBwYXJtcyBmb3Igd2hpY2ggd2UgZG9uJ3QgaGF2ZQoJYSByZWFsIGFyZ3VtZW50LgoJKiBjYWxsLmMgKGpvdXN0KTogUGFzcyBsZW4gdG8gbW9yZV9zcGVjaWFsaXplZC4KCShhZGRfdGVtcGxhdGVfY2FuZGlkYXRlX3JlYWwpOiBTdHJpcCAndGhpcycsIHBhc3MgbGVuLgoJKiBwdC5jIChtb3JlX3NwZWNpYWxpemVkKTogUGFzcyBsZW4gZG93bi4gIExvc2UgZXhwbGljaXRfYXJncyBwYXJtLgoJKGdldF9iaW5kaW5nc19vcmRlcik6IE5ldyBmbi4gIFBhc3MgbGVuIGRvd24uCgkoZ2V0X2JpbmRpbmdzX3JlYWwpOiBTdHJpcCAndGhpcycsIHBhc3MgbGVuLgoJKGZuX3R5cGVfdW5pZmljYXRpb24pOiBMaWtld2lzZS4KCSh0eXBlX3VuaWZpY2F0aW9uX3JlYWwpOiBTdWNjZWVkIGFmdGVyIGNoZWNraW5nICdsZW4nIGFyZ3MuCgkobW9zdF9zcGVjaWFsaXplZF9pbnN0YW50aWF0aW9uKTogTG9zZSBleHBsaWNpdF9hcmdzIHBhcm0uCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogU3RyaXAgJ3RoaXMnLAoJcGFzcyBsZW4uCgoyMDAwLTEyLTIxICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogQSBGVU5DVElPTl9ERUNMIGhhcyBERUNMX1JFU1VMVCwgbm90CglERUNMX1RFTVBMQVRFX1JFU1VMVC4KCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfcik6IENhbGwgbG9va3VwX2ZuZmllbGRzXzEsIG5vdAoJbG9va3VwX2ZuZmllbGRzX2hlcmUuCgoJKiBwYXJzZS55ICh0eXBlbmFtZV9zdWIyKTogUmV0dXJuIHRoZSBUWVBFX0RFQ0wsIG5vdCB0aGUgdHlwZS4KCgkqIGNhbGwuYyAoYnVpbGRfb2JqZWN0X2NhbGwpOiBBbHNvIGFsbG93IGNvbnZlcnNpb25zIHRoYXQgcmV0dXJuCglyZWZlcmVuY2UgdG8gcG9pbnRlciB0byBmdW5jdGlvbi4KCShhZGRfY29udl9jYW5kaWRhdGUpOiBIYW5kbGUgdG90eXBlIGJlaW5nIHJlZiB0byBwdHIgdG8gZm4uCgkoYnVpbGRfZmllbGRfY2FsbCk6IEFsc28gYWxsb3cgbWVtYmVycyBvZiB0eXBlIHJlZmVyZW5jZSB0byBmdW5jdGlvbi4KCUxvc2Ugc3VwcG9ydCBmb3IgY2FsbGluZyBwb2ludGVyIHRvIE1FVEhPRF9UWVBFIGZpZWxkcy4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IEhhbmRsZSAqX0NBU1RfRVhQUi4KCgkqIHR5cGVjazIuYyAoYnVpbGRfc2NvcGVkX3JlZik6IEFsd2F5cyBjb252ZXJ0IHRvIHRoZSBuYW1pbmcgY2xhc3MuCgoJKiB0cmVlLmMgKGJyZWFrX291dF9jbGVhbnVwcyk6IExvc2UuCgkqIGNwLXRyZWUuaDogUmVtb3ZlIHByb3RvdHlwZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9yZWYpOiBEb24ndCBicmVha19vdXRfY2xlYW51cHMuCgkoYnVpbGRfY29tcG91bmRfZXhwcik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoKMjAwMC0xMi0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGNwLXRyZWUuaDogVXBkYXRlIGRlY2xhcmF0aW9ucy4KCSogZGVjbC5jIChmaW5pc2hfY2FzZV9sYWJlbCk6IFJldHVybiB0aGUgbmV3IHN0bXQgbm9kZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9nb3RvX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfZXhwcl9zdG10LCBmaW5pc2hfcmV0dXJuX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfYnJlYWtfc3RtdCwgZmluaXNoX2NvbnRpbnVlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfYXNtX3N0bXQpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoYWxyZWFkeV9zY29wZWRfc3RtdCk6IFNldCBTVE1UX0xJTkVOTy4KCShjb21wc3RtdCwgaW1wbGljaXRseV9zY29wZWRfc3RtdCwgc3RtdCk6IExpa2V3aXNlLgoJKHNpbXBsZV9pZiwgc2ltcGxlX3N0bXQpOiBSZXR1cm4gdGhlIG5ldyBzdG10IG5vZGUuCgkoc2F2ZV9saW5lbm8pOiBOZXcuCgoyMDAwLTEyLTE4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjcC10cmVlLmg6IERvbid0IGRlY2xhcmUgd2Fybl9sb25nX2xvbmcuCgoyMDAwLTEyLTE1ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHRyZWUuYyAobm9fbGlua2FnZV9oZWxwZXIpOiBVc2UgQ0xBU1NfVFlQRV9QIGluc3RlYWQgb2YKCUlTX0FHR1JfVFlQRS4KCjIwMDAtMTItMTUgIEtyaWFuZyBMZXJkc3V3YW5ha2lqICA8bGVyZHN1d2FAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogcHQuYyAodW5pZnkpOiBIYW5kbGUgd2hlbiBib3RoIEFSRyBhbmQgUEFSTSBhcmUKCUJPVU5EX1RFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgoyMDAwLTEyLTE1ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHB0LmMgKHJlZHVjZV90ZW1wbGF0ZV9wYXJtX2xldmVsKTogU2V0IERFQ0xfQVJUSUZJQ0lBTCBhbmQKCURFQ0xfVEVNUExBVEVfUEFSTV9QLgoKMjAwMC0xMi0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogUmVvcmdhbml6ZS4gIE5vdyB3aXRoIDEwMCUgZmV3ZXIgU0FWRV9FWFBScyEKCgkqIGluaXQuYyAoYnVpbGRfbmV3XzEpOiBEb24ndCBzdHJpcCBxdWFscyBmcm9tIHR5cGUuCgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogRG9uJ3QgY2hlY2sgZm9yIGxpbmthZ2Ugb24gYSBub24tZGVjbC4KCgkqIGNhbGwuYyAoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBTZWUgdGhyb3VnaCBBUlJBWV9UWVBFcy4KCgkqIGNhbGwuYyAoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBMb3NlIHNwYWNlIGJlZm9yZSBwYXJlbiBpbgoJZXJyb3IgbWVzc2FnZS4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCgkqIHR5cGVjazIuYyAoYnVpbGRfbV9jb21wb25lbnRfcmVmKTogUHJvcGFnYXRlIHF1YWxzIGZyb20gZGF0dW0uCgoyMDAwLTEyLTE0ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogUHJvcGFnYXRlIGRlZmF1bHQKCWZ1bmN0aW9uIGFyZ3VtZW50cyB0byBleHBsaWNpdCBzcGVjaWFsaXphdGlvbnMuCgoyMDAwLTEyLTEzICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBEbyBzaWduZWQvdW5zaWduZWQgd2FybmluZ3MgZm9yID4/CglhbmQgPD8gb3BlcmF0b3JzLgoKMjAwMC0xMi0wOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX25hbWUpOiBEb24ndCBsZXQgdGhlIHVzZXIgc2VlIF9fY29tcF9jdG9yLgoKCUNsZWFuIHVwIGNvcHktaW5pdGlhbGl6YXRpb24gaW4gb3ZlcmxvYWRpbmcgY29kZS4KCSogY2FsbC5jIChidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogRGllIGlmIHdlIGFyZSBhc2tlZCB0bwoJY29udmVydCB0byB0aGUgc2FtZSBvciBhIGJhc2UgdHlwZS4KCShpbXBsaWNpdF9jb252ZXJzaW9uKTogQXZvaWQgZG9pbmcgc28uICBMb3NlIHJlZmVyZW5jZSBiaW5kaW5nIGNvZGUuCgkoY29udmVydF9saWtlX3JlYWwpOiBUcmVhdCBCQVNFX0NPTlYgYW5kIFJWQUxVRV9DT05WIGFzIGltcGxpY2l0CglkaXJlY3QtaW5pdGlhbGl6YXRpb24uICBBbHNvIGRvIGRpcmVjdC1pbml0IHBhcnQgb2YgY29weS1pbml0LgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uKTogRG9uJ3QgcHJvdmlkZSBjb250ZXh0IHRvIGNvbnZlcnRfbGlrZS4KCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb24gd2lsbCBub3cgcHJvdmlkZQoJdGhlIGNvbnN0cnVjdG9yIGNhbGwgZm9yIGNvcHktaW5pdC4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogQ2FsbCBjbG9uZV9mdW5jdGlvbl9kZWNsIGhlcmUgaWYgdGhpcyBpcyBhbgoJaW5zdGFudGlhdGlvbiBvZiBhIG1lbWJlciB0ZW1wbGF0ZS4KCShkb19kZWNsX2luc3RhbnRpYXRpb24pOiBOb3QgaGVyZS4KCjIwMDAtMTItMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNscyk6IERvbid0IHNwZWNpYWwgY2FzZSBhbm9ueW1vdXMKCWZpZWxkcyBpbiBlcnJvciBtZXNzYWdlcy4KCShub3RlX25hbWVfZGVjbGFyZWRfaW5fY2xhc3MpOiBVc2UgJUQgb24gZGlhZ25vc3RpYy4KCgkqIHRyZWUuYyAocG9kX3R5cGVfcCk6IFVzZSBzdHJpcF9hcnJheV90eXBlcy4KCShjcF92YWxpZF9sYW5nX2F0dHJpYnV0ZSk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY3BfdHlwZV9xdWFscyk6IFN0cmlwIGFycmF5cyBzZXBhcmF0ZWx5LCB0byBhdm9pZAoJbXVsdGlwbGUgZXZhbHVhdGlvbnMuCgkoY3BfaGFzX211dGFibGVfcCk6IFVzZSBzdHJpcF9hcnJheV90eXBlcy4KCjIwMDAtMTItMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHN1ZmZpY2llbnRfcGFybXNfcCk6IERlY2xhcmUgbmV3IGZ1bmN0aW9uLgoJKiBjYWxsLmMgKHN1ZmZpY2llbnRfcGFybXNfcCk6IE5ldyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZiAuLi4KCShhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogLi4uIGhlcmUuIFVzZSBpdC4KCShhZGRfY29udl9jYW5kaWRhdGUpOiBVc2UgaXQuCgkqIGRlY2wuYyAoZ3Jva19jdG9yX3Byb3BlcnRpZXMpOiBVc2UgaXQuCgoyMDAwLTEyLTA3ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIG9wdGltaXplLmMgKGNvcHlfYm9keV9yKTogU2V0IFNUTVRfSVNfRlVMTF9FWFBSX1Agb24gRVhQUl9TVE1ULgoKMjAwMC0xMi0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogSGFuZGxlIC1XZm9ybWF0LXNlY3VyaXR5LgoKMjAwMC0xMi0wNiAgS3JpYW5nIExlcmRzdXdhbmFraWogIDxsZXJkc3V3YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgoJKiBwdC5jICh2ZXJpZnlfY2xhc3NfdW5pZmljYXRpb24pOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X2NsYXNzX2JpbmRpbmdzKTogVXNlIGl0LgoJKHRyeV9jbGFzc191bmlmaWNhdGlvbik6IFRpZHkuCgkodW5pZnkpOiBIYW5kbGUgd2hlbiBhcmd1bWVudCBvZiBhIHRlbXBsYXRlLWlkIGlzIG5vdAoJdGVtcGxhdGUgcGFyYW1ldGVyIGRlcGVuZGVudC4KCSh0ZW1wbGF0ZV9hcmdzX2VxdWFsKTogSGFuZGxlIHdoZW4gVFJFRV9DT0RFJ3MgZG8gbm90IG1hdGNoLgoKMjAwMC0xMi0wNiAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQHJlZGhhdC5jb20+CgoJKiBsYW5nLXNwZWNzLmggKGMrKyk6IFdoZW4gaW52b2tpbmcgdGhlIHN0YW5kLWFsb25lIHByZXByb2Nlc3NvcgoJZm9yIC1zYXZlLXRlbXBzLCBwYXNzIGFsbCByZWxldmFudCAtRGVmaW5lcyB0byBpdCwgYW5kIHRoZW4gZG9uJ3QKCXBhc3MgdGhlbSB0byBjYzFwbHVzLgoKMjAwMC0xMi0wNSAgV2lsbCBDb2hlbiAgPHdjb2hlbkByZWRoYXQuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfY2FzZV9sYWJlbCk6IENsZWFyZWQKCW1vcmVfY2xlYW51cHNfb2sgaW4gc3Vycm91bmRpbmcgZnVuY3Rpb24gc2NvcGVzLgoJKGRlZmluZV9sYWJlbCk6IExpa2V3aXNlLgoKMjAwMC0xMi0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoSURFTlRJRklFUl9WSVJUVUFMX1ApOiBEb2N1bWVudC4KCShnZXRfbWF0Y2hpbmdfdmlydHVhbCk6IFJlbW92ZS4KCShsb29rX2Zvcl9vdmVycmlkZXMpOiBEZWNsYXJlIG5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChncm9rZm5kZWNsKTogRG9uJ3Qgc2V0IElERU5USUZJRVJfVklSVFVBTF9QIG9yCglERUNMX1ZJTkRFWCBoZXJlLgoJKiBjbGFzcy5jIChjaGVja19mb3Jfb3ZlcnJpZGUpOiBNb3ZlIGJhc2UgY2xhc3MgaXRlcmF0aW9uIGNvZGUKCXRvIGxvb2tfZm9yX292ZXJyaWRlcy4KCSogc2VhcmNoLmMgKG5leHRfYmFzZWxpbmspOiBSZW1vdmUuCgkoZ2V0X3ZpcnR1YWxzX25hbWVkX3RoaXMpOiBSZW1vdmUuCgkoZ2V0X3ZpcnR1YWxfZGVzdHJ1Y3Rvcik6IFJlbW92ZS4KCSh0cmVlX2hhc19hbnlfZGVzdHJ1Y3RvcnNfcCk6IFJlbW92ZS4KCShzdHJ1Y3QgZ3ZudF9pbmZvKTogUmVtb3ZlLgoJKGNoZWNrX2ZpbmFsX292ZXJyaWRlcik6IFJlbW92ZSBgdmlydHVhbCcgZnJvbSBlcnJvciBtZXNzYWdlcy4KCShnZXRfbWF0Y2hpbmdfdmlydHVhbHMpOiBSZW1vdmUuIE1vdmUgZnVuY3Rpb25hbGl0eSB0byAuLi4KCShsb29rX2Zvcl9vdmVycmlkZXMpOiAuLi4gaGVyZSwgYW5kIC4uLgoJKGxvb2tfZm9yX292ZXJyaWRlc19yKTogLi4uIGhlcmUuIFNldCBERUNMX1ZJUlRVQUxfUCwgaWYgZm91bmQKCXRvIGJlIG92ZXJyaWRpbmcuCgoyMDAwLTEyLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrLmMgKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogSWYgdmlhIGEgdmlydHVhbCBiYXNlLAoJcmV0dXJuIHplcm8uCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBJZiB2aWEgYSB2aXJ0dWFsIGJhc2UsIGRvIG5vCglhZGp1c3RtZW50LgoKMjAwMC0xMi0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfdHJlZSk6IFVzZSBvdXRwdXRfYWRkX3N0cmluZyBub3QgT0JfUFVUUy4KCjIwMDAtMTItMDQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogbWFuZ2xlLmMgKHdyaXRlX3R5cGUpOiBNYW5nbGUgVkVDVE9SX1RZUEUgd2l0aCAiVThfX3ZlY3RvciIuCgkod3JpdGVfYnVpbHRpbl90eXBlKTogUGFzcyBpbnRTSV90eXBlX25vZGUgYW5kIHRoZSBsaWtlIHRocm91Z2gKCXR5cGVfZm9yX21vZGUuCgkqIG1ldGhvZC5jIChwcm9jZXNzX292ZXJsb2FkX2l0ZW0pOiBNYW5nbGUgVkVDVE9SX1RZUEVzIHdpdGggJ28nLgoJUGFzcyBpbnRTSV90eXBlX25vZGUgYW5kIHRoZSBsaWtlIHRocm91Z2ggdHlwZV9mb3JfbW9kZS4KCSogZGVjbDIuYyAoYXJnX2Fzc29jX3R5cGUpOiBIYW5kbGUgVkVDVE9SX1RZUEUgbGlrZSBDT01QTEVYX1RZUEUuCgkqIHB0LmMgKHRzdWJzdCwgdW5pZnkpOiBMaWtld2lzZS4KCSogdHJlZS5jICh3YWxrX3RyZWUpOiBMaWtld2lzZS4KCSogZXJyb3IuYyAoZHVtcF90eXBlKTogTGlrZXdpc2UuCgkoZHVtcF90eXBlX3ByZWZpeCwgZHVtcF90eXBlX3N1ZmZpeCk6IERvbid0IGJvdGhlciB3aXRoIFZFQ1RPUl9UWVBFLgoKCSogTWFrZS1sYW5nLmluOiBUd2VhayB0b3AgY29tbWVudCBmb3IgZW1hY3MuCgkoY3AvVEFHUyk6IFJlc3RvcmUuCgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogVXNlIHB1c2hfdGhyb3dfbGlicmFyeV9mbiBmb3IgX0p2X1Rocm93LgoKCSogY2xhc3MuYyAoY2xvbmVfZnVuY3Rpb25fZGVjbCk6IFJvYnVzdGlmeS4KCjIwMDAtMTItMDQgIE1pY2hhZWwgTWF0eiAgPG1hdHptaWNoQGNzLnR1LWJlcmxpbi5kZT4KCgkqIGRlY2wuYyAoc3RvcmVfYmluZGluZ3MpOiBPbmx5IHNlYXJjaCBpbiB0aGUgbm9uIG1vZGlmaWVkCglvbGRfYmluZGluZ3MgZm9yIGR1cGxpY2F0ZXMuCgoyMDAwLTEyLTA0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZXJyb3IuYyAoZHVtcF9mdW5jdGlvbl9kZWNsKTogVXNlIERFQ0xfVklSVFVBTF9QLCBub3QKCVRZUEVfUE9MWU1PUlBISUNfUC4KCgkqIHR5cGVjay5jIChidWlsZF9zdGF0aWNfY2FzdCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgoyMDAwLTEyLTAxICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIHB0LmM6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDAwLTEyLTAxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBkZWNsMi5jICh3YXJuX2Zvcm1hdCk6IFJlbW92ZSBkZWZpbml0aW9uLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtV2Zvcm1hdC1ub25saXRlcmFsLAoJLVduby1mb3JtYXQtZXh0cmEtYXJncyBhbmQgLVduby1mb3JtYXQteTJrLiAgVXNlIHNldF9XZm9ybWF0LgoKMjAwMC0xMi0wMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZGVjbC5jIChXSU5UX1RZUEUsIElOVE1BWF9UWVBFLCBVSU5UTUFYX1RZUEUpOiBEb24ndCBkZWZpbmUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBjcmVhdGUgc3RyaW5nX3R5cGVfbm9kZSwKCWNvbnN0X3N0cmluZ190eXBlX25vZGUsIHdpbnRfdHlwZV9ub2RlLCBpbnRtYXhfdHlwZV9ub2RlLAoJdWludG1heF90eXBlX25vZGUsIGRlZmF1bHRfZnVuY3Rpb25fdHlwZSwgcHRyZGlmZl90eXBlX25vZGUgYW5kCgl1bnNpZ25lZF9wdHJkaWZmX3R5cGVfbm9kZS4gIEFkanVzdCBwb3NpdGlvbiBvZiBjYWxsIHRvCgljX2NvbW1vbl9ub2Rlc19hbmRfYnVpbHRpbnMuCgkoaWRlbnRpZmllcl9nbG9iYWxfdmFsdWUpOiBOZXcgZnVuY3Rpb24uCgoyMDAwLTEyLTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogUmVqZWN0IHBvaW50ZXIgdG8gbWVtYmVyCgljb252ZXJzaW9ucyBmcm9tIGFtYmlndW91cywgaW5hY2Nlc3NpYmxlIG9yIHZpcnR1YWwgYmFzZXMuCgkqIHR5cGVjay5jIChidWlsZF9zdGF0aWNfY2FzdCk6IERvbid0IGNoZWNrIHBvaW50ZXJzIHRvIG1lbWJlcnMKCXNwZWNpYWxseS4KCjIwMDAtMTEtMzAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfY29weV9jb25zdHJ1Y3Rvcik6IFByZXNlcnZlIGN2CglxdWFsaWZpY2F0aW9ucyB3aGVuIGFjY2Vzc2luZyBzb3VyY2Ugb2JqZWN0IG1lbWJlcnMuCgkoZG9fYnVpbGRfYXNzaWduX3JlZik6IExpa2V3aXNlLiBSZW1vdmUgc2VwYXJhdGUgZGlhZ25vc3RpY3MgZm9yCgl1bm5hbWVkIGZpZWxkcy4KCjIwMDAtMTEtMzAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtZXRob2QuYyAoZG9fYnVpbGRfYXNzaWduX3JlZik6IENvbnN0cnVjdCBhcHByb3ByaWF0ZWx5CglDVi1xdWFsaWZpZWQgYmFzZSByZWZlcmVuY2UuIERvbid0IGFsbG93IGNvbnN0IGNhc3RzIGluIGJhc2UKCWNvbnZlcnNpb24uCgoyMDAwLTExLTMwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBVc2UgVk9JRF9UWVBFX1AuIERvbid0IGRpZSBvbgoJaW5jb21wbGV0ZSByZXR1cm4gdHlwZS4KCjIwMDAtMTEtMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZS55IChiYXNlX2NsYXNzLjEpOiBQcm9kdWNlIGEgX1RZUEUgbm90IGEgX0RFQ0wuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfYmFzZV9zcGVjaWZpZXIpOiBBY2NlcHQgYSBfVFlQRSBub3QgYQoJX0RFQ0wuCgoyMDAwLTExLTI4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogc3Bldy5jICh5eWVycm9yKTogQ29wZSBpZiB5eWx2YWwudHR5cGUgaXMgTlVMTC4KCjIwMDAtMTEtMjggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRGlhZ25vc2UgdW5kZWZpbmVkIHRlbXBsYXRlIGNvbnRleHRzLgoKMjAwMC0xMS0yOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBEbyB0eXBlIGFjY2VzcyBjb250cm9sIG9uIGZyaWVuZAoJY2xhc3MuCgoyMDAwLTExLTI3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogVW5kbyBDT01QT05FTlRfUkVGIGRhbWFnZSBjYXVzZWQgYnkKCWJpc29uIHBhcnNlciBpY2tpbmVzcy4KCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IEVudGVyIG5hbWVzcGFjZSBzY29wZSB3aGVuCgl0c3Vic3RpbmcgdGhlIGZ1bmN0aW9uIG5hbWUuCgkqIGNwLXRyZWUuaCAoREVDTF9USV9URU1QTEFURSk6IFVwZGF0ZSBjb21tZW50IHRvIHJlZmxlY3QgcmVhbGl0eS4KCjIwMDAtMTEtMjcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGJpbmZvX2Zyb21fdmJhc2UpOiBSZXR1cm4gdGhlIHZpcnR1YWwgYmFzZSdzIGJpbmZvLgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogQWRkIGZvcmNlIHBhcmFtZXRlci4KCUFsbG93IGNvbnZlcnNpb25zIHZpYSB2aXJ0dWFsIGJhc2UgaWYgZm9yY2VkLgoJKGNvbnZlcnRfdG9fcG9pbnRlcl9mb3JjZSk6IEFkanVzdCBjYWxsIHRvIGNwX2NvbnZlcnRfdG9fcG9pbnRlci4KCShvY3BfY29udmVydCk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoYmluZm9fZnJvbV92YmFzZSk6IFJldHVybiB0aGUgdmlydHVhbCBiYXNlJ3MgYmluZm8uCgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IEFkanVzdCBoYW5kbGluZyBvZiB2aXJ0dWFsCgliYXNlcy4KCjIwMDAtMTEtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmVlLmMgKHN0cnVjdCBsaXN0X2hhc2gpOiBSZW1vdmUuCgkobGlzdF9oYXNoX3RhYmxlKTogTWFrZSBpdCBiZSBhbiBodGFiLgoJKHN0cnVjdCBsaXN0X3Byb3h5KTogTmV3IHR5cGUuCgkobGlzdF9oYXNoX2VxKTogTmV3IGZ1bmN0aW9uLgoJKGxpc3RfaGFzaF9waWVjZXMpOiBSZW5hbWVkIGZyb20gLi4uCgkobGlzdF9oYXNoKTogLi4uIHRoaXMuCgkobGlzdF9oYXNoX2xvb2t1cCk6IFJlbW92ZS4KCShsaXN0X2hhc2hfYWRkKTogUmVtb3ZlLgoJKGhhc2hfdHJlZV9jb25zKTogVXNlIHRoZSBnZW5lcmljIGhhc2h0YWJsZS4KCShtYXJrX2xpc3RfaGFzaCk6IFJlbW92ZS4KCShpbml0X3RyZWUpOiBDcmVhdGUgdGhlIGhhc2h0YWJsZS4KCjIwMDAtMTEtMjUgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIG1ldGhvZC5jIChidWlsZF9tYW5nbGVkX0M5eF9uYW1lKTogUmVuYW1lIHRvCglidWlsZF9tYW5nbGVkX0M5OV9uYW1lLiAgQ2hhbmdlIEM5WCByZWZlcmVuY2VzIGluIGNvbW1lbnRzIHRvCglyZWZlciB0byBDOTkuCgoyMDAwLTExLTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2UueSAodW5hcnlfZXhwcik6IE1vdmUgVkFfQVJHIGZyb20gaGVyZSAuLi4KCShwcmltYXJ5KTogLi4uIHRvIGhlcmUuCgoyMDAwLTExLTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogc2VtYW50aWNzLmMgKGZpbmlzaF9pZF9leHByKTogSWYgdHlwZSBpcyBlcnJvcl9tYXJrLCByZXR1cm4KCWVycm9yX21hcmsuCgoyMDAwLTExLTIzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogU2ltcGxpZnkgbG9vcCBleGl0IGNvbnN0cnVjdHMuCglDb3BlIHdoZW4gdGhlcmUgaXMgbm8gcGFydGlhbCBpbnN0YW50aWF0aW9uIG9mIGEgdGVtcGxhdGUKCXRlbXBsYXRlIG1lbWJlci4KClRodSBOb3YgMjMgMDI6MTY6NDcgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZysrc3BlYy5vLCBjeHhtYWluLm8pOiBEZXBlbmQgb24gJChDT05GSUdfSCkuCgoyMDAwLTExLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWFuZ2xlLmMgKG1hbmdsZV9jb252X29wX25hbWVfZm9yX3R5cGUpOiBEb24ndCB1c2UgYF9fb3AnCglwcmVmaXguCgoJKiBwdC5jIChkb19kZWNsX2luc3RhbnRpYXRlKTogRXhwbGljaXRseSBjbG9uZSBjb25zdHJ1Y3RvcnMgYW5kCglkZXN0cnVjdG9ycyB0aGF0IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIGNsb25lZC4KCjIwMDAtMTEtMjAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55ICh5eXBhcnNlXzEpOiBSZW5hbWUgdGhlIHBhcnNlciBlbnRyeSBwb2ludC4KCjIwMDAtMTEtMjAgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtYW5nbGUuYyAod3JpdGVfbmFtZSk6IFVzZSA8dW5zY29wZWQtbmFtZT4gZm9yIG5hbWVzIGRpcmVjdGx5IGluCglmdW5jdGlvbiBzY29wZS4KCSh3cml0ZV91bnNjb3BlZF9uYW1lKTogQWNjZXB0IG5hbWVzIGRpcmVjdGx5IGluIGZ1bmN0aW9uIHNjb3BlLgoKMjAwMC0xMS0yMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxleC5jIChyaWRfdG9feXksIFJJRF9FWFBPUlQpOiBNYWtlIHVuaXF1ZSBrZXl3b3JkLgoJKiBwYXJzZS55IChleHRkZWYpOiBBZGQgRVhQT1JUIHJlZHVjdGlvbi4KCSogc3Bldy5jICh5eWxleCk6IERvbid0IHNraXAgZXhwb3J0IGhlcmUuCgoyMDAwLTExLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENvcnJlY3QgbmFtZSBvZiBwdXJlIHZpcnR1YWwKCWZ1bmN0aW9uIHVuZGVyIHRoZSBuZXcgQUJJLgoJKiBydHRpLmMgKHRocm93X2JhZF9jYXN0KTogTGlrZXdpc2UsIGZvciBiYWQgY2FzdCBmdW5jdGlvbi4KCSh0aHJvd19iYWRfdHlwZWlkKTogTGlrZXdpc2UgZm9yIGJhZCB0eXBlaWQgZnVuY3Rpb24uCgoyMDAwLTExLTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChncm9rcGFybXMpOiBEb24ndCBldmVuIGZ1bmN0aW9uIHR5cGVzIG9mIGB2b2lkJyB0eXBlLAoJZWl0aGVyLgoJKiBtYW5nbGUuYyAod3JpdGVfdHlwZSk6IERvbid0IGNyYXNoIHdoZW4gY29uZnJvbnRlZCB3aXRoIHRoZQoJZXJyb3JfbWFya19ub2RlLgoKCSogZGVjbC5jIChncm9rcGFybXMpOiBEb24ndCBjcmVhdGUgcGFyYW1ldGVycyBvZiBgdm9pZCcgdHlwZS4KCjIwMDAtMTEtMTcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5zdGFuZm9yZC5lZHU+CgoJKiBsZXguYyAobWFya19pbXBsX2ZpbGVfY2hhaW4pOiBEZWxldGUuCgkoaW5pdF9wYXJzZSk6IFJlbW92ZSBjYWxsIHRvIGdnY19hZGRfc3RyaW5nX3Jvb3QuICBObyBuZWVkIHRvCglnZ2Nfc3RyZHVwIGEgc3RyaW5nIGNvbnN0YW50LiAgRG8gbm90IGFkZCBpbXBsX2ZpbGVfY2hhaW4gdG8gR0MKCXJvb3RzLgoJKGhhbmRsZV9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBObyBuZWVkIHRvIGdnY19zdHJkdXAgbWFpbl9maWxlbmFtZS4KCjIwMDAtMTEtMTcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jICh0c3Vic3RfZXhwciwgREVDTF9TVE1UKTogSW5zdGFudGlhdGUgZGVjbCdzIHR5cGUuCgoyMDAwLTExLTE3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChQQVJNTElTVF9FTExJUFNJU19QKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgcmVqZWN0IHZvaWQgcGFybXMgaGVyZS4KCShyZXF1aXJlX2NvbXBsZXRlX3R5cGVzX2Zvcl9wYXJtcyk6IFNpbXBsaWZ5LCB1c2UKCWNvbXBsZXRlX3R5cGVfb3JfZWxzZS4KCShncm9rcGFybXMpOiBSZW1vdmUgYml0cm90LiBSZW1vdmUgZnVuY2RlZiBwYXJtLgoJRGVhbCB3aXRoIGVsbGlwc2lzIHBhcm0gbGlzdHMgaGVyZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9wYXJtbGlzdCk6IERvbid0IGFwcGVuZCB2b2lkX2xpc3Rfbm9kZQoJaGVyZS4gU2V0IFBBUk1MSVNUX0VMTElQU0lTX1AuCgoyMDAwLTExLTE3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrMi5jIChpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBSZW9yZ2FuaXNlIHRvIGF2b2lkCglleGNlc3NpdmUgZGlhZ25vc3RpY3MuCgoyMDAwLTExLTE2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogbGV4LmMgKHN0cnVjdCBpbXBsX2ZpbGVzLCBpbnRlcm5hbF9maWxlbmFtZSk6IENvbnN0aWZ5IGEgY2hhciAqLgoKMjAwMC0xMS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1hbmdsZS5jICh3cml0ZV9zcGVjaWFsX25hbWVfY29uc3RydWN0b3IpOiBEb24ndCBnZW5lcmF0ZQoJYXNzZW1ibGVyIGp1bmsgd2hlbiBjb25mcm9udGVkIHdpdGggYW4gb2xkLXN0eWxlIGNvbnN0cnVjdG9yLgoJKHdyaXRlX3NwZWNpYWxfbmFtZV9kZXN0cnVjdG9yKTogTGlrZXdpc2UuCgkobWFuZ2xlX2RlY2xfc3RyaW5nKTogRG8gaXQgaGVyZSBpbnN0ZWFkLgoKMjAwMC0xMS0xNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAob3BfZXJyb3IpOiBNYWtlIGVycm9yIG1lc3NhZ2VzIGNsZWFyZXIuCgoyMDAwLTExLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jICh3cmFwdXBfZ2xvYmFsc19mb3JfbmFtZXNwYWNlKTogRG9uJ3QgbWFyayB0aGluZ3MKCVRSRUVfQVNNX1dSSVRURU4gd2hlbiB0aGV5J3JlIG5vdC4KCjIwMDAtMTEtMTUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHlwZWNrMi5jIChmcmllbmRseV9hYm9ydCk6IFVuY291bnQgdGhlIGVycm9yIGJlZm9yZSBoYW5kaW5nCglvZmYgdG8gZmFuY3lfYWJvcnQuCgoyMDAwLTExLTE1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrLmMgKGxvb2t1cF9hbm9uX2ZpZWxkKTogQ29wZSB3aXRoIHF2IHF1YWxpZmllcnMuCgoyMDAwLTExLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkqIHR5cGVjay5jIChleHByX3NpemVvZik6IERvbid0IGNyYXNoIG9uIGVycm9ycy4KCjIwMDAtMTEtMTQgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIGxhbmctc3BlY3MuaDogQWRkICUyIGFmdGVyICUoY2MxX29wdGlvbnMpLgoKMjAwMC0xMS0xNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHR5cGVjay5jIChjX3NpemVvZik6IEJlIHN0cmljdCBhYm91dCBjYXN0aW5nIHJlc3VsdCB2YWx1ZQoJYmFjayB0byBjX3NpemVfdHlwZV9ub2RlLgoJKGV4cHJfc2l6ZW9mLCBjX3NpemVvZl9ub3dhcm4sIGNfYWxpZ25vZik6IExpa2V3aXNlLgoKMjAwMC0xMS0xMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3VuYXJ5X29wKTogVXNlIGJvb2xlYW5faW5jcmVtZW50IGZyb20KCWMtY29tbW9uLmMsIG1vdmluZyB0aGUgcmVsZXZhbnQgY29kZSB0aGVyZS4KCjIwMDAtMTEtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBEb24ndCBjYWxsIHB1dF92YXJfaW50b19zdGFjay4KCgkqIGRlY2wuYyAobWF5YmVfY29tbW9uaXplX3Zhcik6IFNldCBERUNMX1VOSU5MSU5BQkxFIGZvciBzdGF0aWNzCglpbiBpbmxpbmVzLgoKMjAwMC0xMS0xMCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvciwgc2F2ZV9mdW5jdGlvbl9kYXRhKTogVXNlIG1lbWNweSwgbm90IGJjb3B5LgoJKiBsZXguYyAoY29weV9sYW5nX2RlY2wpOiBMaWtld2lzZS4KCjIwMDAtMTEtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkdW1wLmMgKGNwX2R1bXBfdHJlZSk6IERvbid0IGR1bXAgZnVuY3Rpb24gYm9kaWVzIGhlcmUuCgoJKiBNYWtlLWxhbmcuaW4gKENYWF9DX09CSlMpOiBBZGQgYy1kdW1wLm8uCgkoZHVtcC5vKTogVXBkYXRlIGRlcGVuZGVuY3kgbGlzdC4KCSogY3AtdHJlZS5oIChERUNMX01BWUJFX1RFTVBMQVRFKTogUmVtb3ZlLgoJKGZsYWdfZHVtcF90cmFuc2xhdGlvbl91bml0KTogTGlrZXdpc2UuCgkoQ1BfVFlQRV9RVUFMUyk6IEFkanVzdCBkZWZpbml0aW9uLgoJKERFQ0xfQ19CSVRfRklFTEQpOiBSZW1vdmUuCgkoU0VUX0RFQ0xfQ19CSVRfRklFTEQpOiBMaWtld2lzZS4KCShDTEVBUl9ERUNMX0NfQklUX0ZJRUxEKTogTGlrZXdpc2UuCgkoYWRkX21heWJlX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkoc3RyaXBfYXJyYXlfdHlwZXMpOiBMaWtld2lzZS4KCShkdW1wX25vZGVfdG9fZmlsZSk6IExpa2V3aXNlLgoJKGNwX2R1bXBfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBsYW5nX2R1bXBfdHJlZS4KCSogZGVjbDIuYyAoZmxhZ19kdW1wX3RyYW5zbGF0aW9uX3VuaXQpOiBSZW1vdmUuCgkqIGR1bXAuYzogTW92ZSBtb3N0IG9mIGl0IHRvIC4uL2MtZHVtcC5jLgoJKGNwX2R1bXBfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCSogcHQuYyAoYWRkX21heWJlX3RlbXBsYXRlKTogUmVtb3ZlLgoJKiB0eXBlY2suYyAoc3RyaXBfYXJyYXlfdHlwZXMpOiBMaWtld2lzZS4KCjIwMDAtMTEtMDcgIEVyaWMgQ2hyaXN0b3BoZXIgIDxlY2hyaXN0b0ByZWRoYXQuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENoYW5nZSBkZWZpbml0aW9uIG9mCglfX3djaGFyX3QgdG8gd2NoYXJfdC4gIFJlbW92ZSBhcnRpZmljaWFsIGRlY2xhcmF0aW9uIG9mCgl3Y2hhcl90LgoJKiBsZXguYzogQ2hhbmdlIGluc3RhbmNlcyBvZiBfX3djaGFyX3QgdG8gd2NoYXJfdC4KCjIwMDAtMTEtMDkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IERvbid0IGxvb2t1cF9uYW1lIGZvciBvcGVyYXRvcnMuCgkqIHBhcnNlLnkgKG9wZXJhdG9yKTogU2F2ZSBsb29raW5nX2Zvcl90eXBlbmFtZS4KCSh1bm9wZXJhdG9yKTogUmVzdG9yZSBpdC4KCSogc3Bldy5jIChmcm9iX29wbmFtZSk6IFVzZSBudGhfdG9rZW4gZm9yIGxvb2thaGVhZC4KCjIwMDAtMTEtMDggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGdyb2tfb3BfcHJvcGVydGllcyk6IEFsd2F5cyB1c2UgY29lcmNlX25ld190eXBlIGFuZAoJY29lcmNlX2RlbGV0ZV90eXBlLgoJKiBkZWNsMi5jIChjb2VyY2VfbmV3X3R5cGUpOiBVc2UgY19zaXplX3R5cGVfbm9kZS4gUHJlc2VydmUKCWV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uLiBUaWR5IHVwLgoJKGNvZXJjZV9kZWxldGVfdHlwZSk6IFByZXNlcnZlIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uLiBUaWR5IHVwLgoKMjAwMC0xMS0wNyAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogY2xhc3MuYyAoZHVwbGljYXRlX3RhZ19lcnJvciwgYnVpbGRfdnRibF9pbml0aWFsaXplciksIGRlY2wuYwoJKHB1c2hfYmluZGluZ19sZXZlbCksIGVycm9yLmMgKGNwX3RyZWVfcHJpbnRlciksIHB0LmMKCShwcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24sIHRzdWJzdF90ZW1wbGF0ZV9hcmdfdmVjdG9yKSwKCXNlYXJjaC5jIChsb29rdXBfbWVtYmVyKTogVXNlIG1lbXNldCAoKSBpbnN0ZWFkIG9mIGJ6ZXJvICgpLgoKMjAwMC0xMS0wNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoYnVpbGRfcHRybWVtZnVuY190eXBlKTogQWxsb3cgZXJyb3JfbWFya19ub2RlLgoKMjAwMC0xMS0wNSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogTWFrZS1sYW5nLmluIChjKysuZGlzdGRpcik6IFJlbW92ZS4KCjIwMDAtMTEtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChkb19ub25tZW1iZXJfdXNpbmdfZGVjbCk6IEFsbG93IGBleHRlcm4gIkMiJwoJZGVjbGFyYXRpb25zIGZyb20gZGlmZmVyZW50IG5hbWVzcGFjZXMgdG8gYmUgY29tYmluZWQuCgoyMDAwLTExLTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuc3RhbmZvcmQuZWR1PgoKCSogZGVjbC5jOiBJbmNsdWRlIHRtX3AuaC4KCjIwMDAtMTEtMDMgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIHRyZWUuYyAoY3BfdHJlZV9lcXVhbCk6IFVzZSBtZW1jbXAgKCkgaW5zdGVhZCBvZiBiY21wICgpLgoKMjAwMC0xMS0wMiAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKSwgbGV4LmMgKGludGVyZmFjZV9zdHJjbXApLCBtZXRob2QuYwoJKGJ1aWxkX292ZXJsb2FkX3ZhbHVlKSwgcmVwby5jIChvcGVuX3JlcG9fZmlsZSksIHhyZWYuYwoJKG9wZW5feHJlZl9maWxlKTogVXNlIHN0cmNociAoKSBhbmQgc3RycmNociAoKSBpbnN0ZWFkIG9mIGluZGV4ICgpCglhbmQgcmluZGV4ICgpLgoKMjAwMC0xMS0wMSAgQmVybmQgU2NobWlkdCAgPGJlcm5kc0ByZWRoYXQuY28udWs+CgoJKiBjYWxsLmMgKGJ1aWxkX292ZXJfY2FsbCk6IENhbGwgZm9sZCBvbiB0aGUgQ0FMTF9FWFBSLgoKMjAwMC0xMS0wMSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZXJyb3IuYyAoZHVtcF90ZW1wbGF0ZV9kZWNsKTogU2VwYXJhdGUgdGVtcGxhdGUgaGVhcmRlcnMgd2l0aAoJc3BhY2Ugbm90IGNvbW1hLgoKMjAwMC0xMC0zMSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZXJyb3IuYzogTW92ZSBURkZfIG1hY3JvcyBpbnRvIGNwLXRyZWUuaC4gIFRocm91Z2hvdXQsIHJlcGxhY2UKCVRTXyogZmxhZ3Mgd2l0aCBjb3JyZXNwb25kaW5nIFRGRl8qLiAgQWRqdXN0IHByb3RvdHlwZXMgb2YKCWZ1bmN0aW9ucyAod2hpY2ggdXNlZCB0byB0YWtlIGEgdHJlZV9zdHJpbmdfZmxhZ3MpIHRvIHRha2UgYW4gaW50LgoKCSogY3AtdHJlZS5oIChlbnVtIHRyZWVfc3RyaW5nX2ZsYWdzKTogUmVtb3ZlCgkoVEZGX1BMQUlOX0lERU5USUZJRVIsIFRGRl9OQU1FU1BBQ0VfU0NPUEUsIFRGRl9DTEFTU19TQ09QRSwKCVRGRl9DSEFTRV9OQU1FU1BBQ0VfQUxJQVMsIFRGRl9DSEFTRV9UWVBFREVGLCBURkZfREVDTF9TUEVDSUZJRVJTLAoJVEZGX0NMQVNTX0tFWV9PUl9FTlVNLCBURkZfUkVUVVJOX1RZUEUsCglURkZfRlVOQ1RJT05fREVGQVVMVF9BUkdVTUVOVFMsIFRGRl9FWENFUFRJT05fU1BFQ0lGSUNBVElPTiwKCVRGRl9URU1QTEFURV9IRUFERVIsIFRGRl9URU1QTEFURV9ERUZBVUxUX0FSR1VNRU5UUywKCVRGRl9URU1QTEFURV9OQU1FLCBURkZfRVhQUl9JTl9QQVJFTlMsIFRGRl9TQ09QRSk6IE5ldyBtYWNyb3MuCgkodHlwZV9hc19zdHJpbmcsIGRlY2xfYXNfc3RyaW5nLCBleHByX2FzX3N0cmluZywKCWNvbnRleHRfYXNfc3RyaW5nKTogQWRqdXN0IHByb3RvdHlwZS4KCgkqIGNsYXNzLmMgKGR1bXBfY2xhc3NfaGllcmFyY2h5X3IpOiBVc2UgVEZGX1BMQUlOX0lERU5USUZJRVIKCWluc3RlYWQgb2YgVFNfUExBSU4uCgoJKiBwdC5jIChtYW5nbGVfY2xhc3NfbmFtZV9mb3JfdGVtcGxhdGUpOiBVc2UgVEZGX0NIQVNFX1RZUEVERUYKCWluc3RlYWQgb2YgVEZfQ0hBU0VfVFlQRURFRlMuIFVzZSBURkZfUExBSU5fSURFTlRJRklFUiBpbnN0ZWFkIG9mCglwbGFpbiBgMCcuCgoyMDAwLTEwLTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX0VYVEVSTkFMX0xJTktBR0VfUCk6IE5ldyBtYWNyby4KCShsaW5rYWdlX2tpbmQpOiBOZXcgZW51bWVyYXRpb24uCgkoZGVjbF9saW5rYWdlKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsMi5jIChjb21kYXRfbGlua2FnZSk6IEV4dGVuZCBjb21tZW50LgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX2RlY2wpOiBQcmludCB0aGUgYXJndW1lbnRzIHVzZWQgdG8KCWluc3RhbnRpYXRlIGEgdGVtcGxhdGUsIGV2ZW4gd2hlbiBub3QgcHJpbnRpbmcgdGhlIHR5cGUgb2YgdGhlCglmdW5jdGlvbi4KCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogVXNlIERFQ0xfRVhURVJOQUxfTElOS0FHRV9QLAoJbm90IFRSRUVfUFVCTElDLCB0byB0ZXN0IGZvciBleHRlcm5hbCBsaW5rYWdlLgoJKiB0cmVlLmMgKGRlY2xfbGlua2FnZSk6IE5ldyBmdW5jdGlvbi4KCjIwMDAtMTAtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9kZWNsKTogQWx3YXlzIGluc3RhbnRpYXRlIHN0YXRpYyBkYXRhIG1lbWJlcnMKCWluaXRpYWxpemVkIGluLWNsYXNzLgoKMjAwMC0xMC0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LnN0YW5mb3JkLmVkdT4KCgkqIE1ha2UtbGFuZy5pbjogTW92ZSBhbGwgYnVpbGQgcnVsZXMgaGVyZSBmcm9tIE1ha2VmaWxlLmluLAoJYWRhcHQgdG8gbmV3IGNvbnRleHQuICBXcmFwIGFsbCBydWxlcyB0aGF0IGNoYW5nZSB0aGUgY3VycmVudAoJZGlyZWN0b3J5IGluIHBhcmVudGhlc2VzLiAgRXhwdW5nZSBhbGwgcmVmZXJlbmNlcyB0byAkKFApLgoJV2hlbiBvbmUgY29tbWFuZCBkZXBlbmRzIG9uIGFub3RoZXIgYW5kIHRoZXkncmUgcnVuIGFsbCBhdAoJb25jZSwgdXNlICYmIHRvIHNlcGFyYXRlIHRoZW0sIG5vdCA7LiAgQWRkIE9VVFBVVF9PUFRJT04gdG8KCWFsbCBvYmplY3QtZmlsZSBnZW5lcmF0aW9uIHJ1bGVzLiAgRGVsZXRlIG9ic29sZXRlIHZhcmlhYmxlcy4KCgkqIE1ha2VmaWxlLmluOiBEZWxldGUuCgkqIGNvbmZpZy1sYW5nLmluOiBEZWxldGUgb3V0cHV0cz0gbGluZS4KCjIwMDAtMTAtMjYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfZnVuY3Rpb25fZGVjbCk6IFByaW50IG5vIHNwYWNlIGJldHdlZW4KCWBwdHItb3BlcmF0b3InIHRoZSBgdHlwZS1zcGVjaWZpZXInIG9mIHRoZSByZXR1cm4gdHlwZS4KCShkdW1wX3R5cGVfcHJlZml4KTogTWFrZSBzdXJlIHdlIHB1dCBzcGFjZSBhdCB0aGUgYXBwcm9wcmlhdGUKCXBsYWNlLgoKMjAwMC0xMC0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBjYWxsLmMgKGVxdWFsX2Z1bmN0aW9ucyk6IEFsc28gY2FsbCBkZWNsc19tYXRjaCBmb3IgZXh0ZXJuICJDIiBmbnMuCgoyMDAwLTEwLTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfY29uZGl0aW9uYWxfZXhwcik6IFVzZSBvY3BfY29udmVydCB0byBmb3JjZQoJcnZhbHVlIGNvbnZlcnNpb24uCgoyMDAwLTEwLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogVXNlIFJWQUxVRV9DT05WcyBmb3IgYWxsCglleHByZXNzaW9ucyB0aGF0IHNhdGlzZnkgbHZhbHVlX3AsIG5vdCBqdXN0IHRob3NlIHRoYXQgc2F0aXNmeQoJcmVhbF9sdmFsdWVfcC4KCgkqIG9wdGltaXplLmMgKGNvcHlfYm9keV9yKTogRG9uJ3QgdHJlYXQgQ0FMTF9FWFBScyBzcGVjaWFsbHkuCgoJKiB0eXBlY2suYyAoY19zaXplb2YpOiBSZXR1cm4gYW4gZXhwcmVzc2lvbiBvZiBgc2l6ZV90JyB0eXBlLAoJbm90IG9uZSB3aXRoIFRZUEVfSVNfU0laRVRZUEUgc2V0LgoJKGR1YmlvdXNfY29udmVyc2lvbl93YXJuaW5ncyk6IFJlbW92ZSBzcGVjaWFsLWNhc2UgY29kZS4KCjIwMDAtMTAtMjEgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGFyZ19hc3NvY190eXBlKTogSGFuZGxlIFZFQ1RPUl9UWVBFLgoJKiBlcnJvci5jIChkdW1wX3R5cGUpOiBIYW5kbGUgVkVDVE9SX1RZUEUgbGlrZSBQT0lOVEVSX1RZUEUuCgkoZHVtcF90eXBlX3ByZWZpeCk6IFByaW50IHZlY3Rvci1vZi1pbnQgYXMgJ2ludCB2ZWN0b3InLgoJKGR1bXBfdHlwZV9zdWZmaXgpOiBIYW5kbGUgVkVDVE9SX1RZUEUgbGlrZSBQT0lOVEVSX1RZUEUuCgkqIHRyZWUuYyAod2Fsa190cmVlKTogSGFuZGxlIFZFQ1RPUl9UWVBFLgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENhbGwgTURfSU5JVF9CVUlMVElOUy4KCjIwMDAtMTAtMjEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogcGFyc2UueSAob3BlcmF0b3IpOiBTZXQgZ290X29iamVjdCBmcm9tIGdvdF9zY29wZS4KCVNldCBsb29raW5nX2Zvcl90eXBlbmFtZS4KCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogQ2xlYXIgdmFsIGFmdGVyIHNldHRpbmcgZnJvbV9vYmouCglSZW9yZ2FuaXplIGRpYWdub3N0aWMuCgoyMDAwLTEwLTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAod2Fsa190cmVlKTogRG9uJ3Qgd2FsayBpbnRvIGRlZmF1bHQgYXJncy4KCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IFVzZSBob3N0X2ludGVnZXJwLgoKMjAwMC0xMC0yMCAgRGF2aWQgRWRlbHNvaG4gIDxlZGVsc29obkBnbnUub3JnPgoKCSogdHlwZWNrMi5jIChhYnN0cmFjdF92aXJ0dWFsc19lcnJvcik6IFVzZSAiYmVjYXVzZSIgaW5zdGVhZCBvZgoJInNpbmNlIiBpbiBlcnJvciBtZXNzYWdlLgoKRnJpIE9jdCAyMCAxMzo1NDo1OSAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHlwZWNrLmMgKGR1YmlvdXNfY29udmVyc2lvbl93YXJuaW5nKTogU3VwcHJlc3MgaWYgVFlQRV9JU19TSVpFVFlQRS4KCjIwMDAtMTAtMjAgIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHJldmVydF9zdGF0aWNfbWVtYmVyX2ZuKTogRml4ZWQgdHlwby4KCjIwMDAtMTAtMTkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChzdWJvYmplY3Rfb2Zmc2V0X2ZuKTogTmV3IHR5cGUuCgkoZGZzX3JlY29yZF9iYXNlX29mZnNldHMpOiBSZW1vdmUuCgkocmVjb3JkX2Jhc2Vfb2Zmc2V0cyk6IExpa2V3aXNlLgoJKGRmc19zZWFyY2hfYmFzZV9vZmZzZXRzKTogTGlrZXdpc2UuCgkocmVjb3JkX3N1Ym9iamVjdF9vZmZzZXQpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfc3Vib2JqZWN0X29mZnNldCk6IExpa2V3aXNlLgoJKHdhbGtfc3Vib2JqZWN0X29mZnNldHMpOiBMaWtld2lzZS4KCShyZWNvcmRfc3Vib2JqZWN0X29mZnNldHMpOiBMaWtld2lzZS4KCShsYXlvdXRfY29uZmxpY3RfcCk6IFJlaW1wbGVtZW50LgoJKGxheW91dF9ub25lbXB0eV9iYXNlX29yX2ZpZWxkKTogQ29ycmVjdCBoYW5kbGluZyBvZiB0eXBlCgljb25mbGljdHMgZHVyaW5nIGxheW91dC4KCShsYXlvdXRfZW1wdHlfYmFzZSk6IExpa2V3aXNlLgoJKGJ1aWxkX2Jhc2VfZmllbGQpOiBBZGp1c3QgdG8gaGFuZGxlIG5ldyByZXByZXNlbnRhdGlvbiBvZiBlbXB0eQoJYmFzZSBvZmZzZXQgdGFibGUuCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBMaWtld2lzZS4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IExpa2V3aXNlLgoJKHNwbGF5X3RyZWVfY29tcGFyZV9pbnRlZ2VyX2NzdHMpOiBOZXcgZnVuY3Rpb24uCgkobGF5b3V0X2NsYXNzX3R5cGUpOiBVc2UgYSBzcGxheV90cmVlLCByYXRoZXIgdGhhbiBhIHZhcnJheSwgdG8KCXJlcHJlc2VudCB0aGUgb2Zmc2V0cyBvZiBlbXB0eSBiYXNlcy4KCgkqIGNwLXRyZWUuaCAoREVDTF9BTlRJQ0lQQVRFRCk6IERvbid0IHJlcXVpcmUgYSBGVU5DVElPTl9ERUNMLgoJKiBkZWNsLmMgKHNlbGVjdF9kZWNsKTogRG9uJ3QgcmV0dXJuIGRlY2xhcmF0aW9ucyB0aGF0IGFyZQoJREVDTF9BTlRJQ0lQQVRFRC4KCjIwMDAtMTAtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGNwX3RyZWVfaW5kZXgpOiBBZGQgQ1BUSV9GQUtFX1NURC4KCShmYWtlX3N0ZF9ub2RlKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKGluX3N0ZCk6IFJlbmFtZSB0byAuLi4KCShpbl9mYWtlX3N0ZCk6IC4uLiB0aGlzLgoJKGZsYWdfbm9fYnVpbHRpbik6IFJlbW92ZS4KCShmbGFnX25vX25vbmFuc2lfYnVpbHRpbik6IExpa2V3aXNlLgoJKHdhbGtfbmFtZXNwYWNlc19yKTogVXNlIGZha2Vfc3RkX25vZGUuCgkocHVzaF9uYW1lc3BhY2UpOiBVc2Ugc3RkX2lkZW50aWZpZXIuCgkocG9wX25hbWVzcGFjZSk6IFVzZSBpbl9mYWtlX3N0ZC4KCShsb29rdXBfbmFtZV9yZWFsKTogVXNlIGZha2Vfc3RkX25vZGUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBXaGVuIC1maG9ub3Itc3RkLCBjcmVhdGUgdGhlIGBzdGQnCgluYW1lc3BhY2UuICBEb24ndCBjcmVhdGUgYSBkdW1teSBmYWtlX3N0ZF9ub2RlIGluIHRoYXQgY2FzZS4KCUFkanVzdCBjYWxsIHRvIGNfY29tbW9uX25vZGVzX2FuZF9idWlsdGlucy4gIFVzZSBzdGRfaWRlbnRpZmllci4KCShidWlsdGluX2Z1bmN0aW9uKTogUHV0IGJ1aWx0aW5zIHdob3NlIG5hbWVzIGRvbid0IGJlZ2luCgl3aXRoIGBfJyBpbiB0aGUgc3RkIG5hbWVzcGFjZS4KCSogZGVjbDIuYyAoZmxhZ19ub19idWlsdGluKTogUmVtb3ZlLgoJKGZsYWdfbm9fbm9uYW5zaV9idWlsdGluKTogTGlrZXdpc2UuCgkoc2V0X2RlY2xfbmFtZXNwYWNlKTogVXNlIGZha2Vfc3RkX25vZGUuCgkodmFsaWRhdGVfbm9ubWVtYmVyX3VzaW5nX2RlY2wpOiBMaWtld2lzZS4KCShkb191c2luZ19kaXJlY3RpdmUpOiBMaWtld2lzZS4KCShoYW5kbGVfY2xhc3NfaGVhZCk6IExpa2V3aXNlLgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcpOiBVc2Ugc3RkX2lkZW50aWZpZXIuCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBVc2UgZmFrZV9zdGRfbm9kZS4KCSogcnR0aS5jIChpbml0X3J0dGlfcHJvY2Vzc2luZyk6IFVzZSBzdGRfaWRlbnRpZmllci4KCjIwMDAtMTAtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGJhY2tfZW5kX2hvb2spOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkqIGRlY2wyLmMgKGJhY2tfZW5kX2hvb2spOiBSZW1vdmUgZGVmaW5pdGlvbi4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgVFJFRV9VU0VELgoKVHVlIE9jdCAxNyAyMDoxOTowNiAyMDAwICBCcmFkIEx1Y2llciA8bHVjaWVyQG1hdGgucHVyZHVlLmVkdT4KCgkqIHNwZXcuYyAoc25hcmZfZGVmYXJnKTogQ2FzdCAybmQgYXJnIHRvIG9ic3RhY2tfYmxhbmsgdG8gKGludCkuCgoyMDAwLTEwLTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBkZWNsLmMgKFdJTlRfVFlQRSk6IERlZmluZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IENyZWF0ZSB0eXBlcyB1bnNpZ25lZF9wdHJkaWZmX3R5cGVfbm9kZSwKCWNfc2l6ZV90eXBlX25vZGUsIHNpZ25lZF9zaXplX3R5cGVfbm9kZSBhbmQgd2ludF90eXBlX25vZGUuCgoyMDAwLTEwLTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBkZWNsMi5jICh3YXJuX21pc3NpbmdfZm9ybWF0X2F0dHJpYnV0ZSk6IE5ldyB2YXJpYWJsZS4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBEZWNvZGUgLVdtaXNzaW5nLWZvcm1hdC1hdHRyaWJ1dGUuCgoyMDAwLTEwLTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrLmMgKHF1YWxpZnlfdHlwZSk6IFJlbW92ZS4KCShjb21wb3NpdGVfcG9pbnRlcl90eXBlKTogRml4IGhhbmRsaW5nIG9mIGNvbnZlcnNpb25zIHRvIGBjdiB2b2lkKicuCgoyMDAwLTEwLTE0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAocGFyc2UuYywgcGFyc2UuaCk6IEZpeCB0aGluay1vIGluIGxhc3QgcGF0Y2guCgoyMDAwLTEwLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAocGFyc2UuYywgcGFyc2UuaCk6IENyZWF0ZSBhdG9taWNhbGx5LgoKMjAwMC0xMC0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGN1cnJlbnRfb2JzdGFjayk6IFJlbW92ZS4KCSogZGVjbC5jIChnZ2NfcCk6IFJlbW92ZS4KCShzdGFydF9kZWNsKTogRG9uJ3QgdXNlIGRlY2xfdHJlZV9jb25zLgoJKGdyb2tkZWNsYXJhdG9yKTogRG9uJ3QgdXNlIGJ1aWxkX2RlY2xfbGlzdC4KCShzdGFydF9mdW5jdGlvbik6IERvbid0IHVzZSBkZWNsX3RyZWVfY29ucy4KCShmaW5pc2hfZnVuY3Rpb24pOiBEb24ndCBtZXNzIHdpdGggb2JzdGFja3MuCgkqIGRlY2wyLmMgKGdyb2tfeF9jb21wb25lbnRzKTogRG9uJ3QgdXNlIGJ1aWxkX2RlY2xfbGlzdC4KCSogbGV4LmMgKG1ha2VfY2FsbF9kZWNsYXJhdG9yKTogRG9uJ3QgY2FsbCBkZWNsX3RyZWVfY29ucy4KCShpbXBsaWNpdGx5X2RlY2xhcmVfZm4pOiBEb24ndCBjYWxsIGJ1aWxkX2RlY2xfbGlzdC4KCSogcGFyc2UueSAoZnJvYl9zcGVjcyk6IERvbid0IGNhbGwgYnVpbGRfZGVjbF9saXN0IG9yCglkZWNsX3RyZWVfY29ucy4KCShleHByX29yX2RlY2xhcmF0b3JfaW50ZXJuKTogRG9uJ3QgY2FsbCBkZWNsX3RyZWVfY29ucy4KCShwcmltYXJ5KTogRG9uJ3QgY2FsbCBidWlsZF9kZWNsX2xpc3QuCgkoZmNhc3Rfb3JfYWJzZGNsKTogTGlrZXdpc2UuCgkodHlwZWRfZGVjbHNwZWNzKTogRG9uJ3QgY2FsbCBkZWNsX3RyZWVfY29ucy4KCShyZXNlcnZlZF9kZWNsc3BlY3MpOiBEb24ndCBjYWxsIGJ1aWxkX2RlY2xfbGlzdC4KCShkZWNsbW9kcyk6IExpa2V3aXNlLgoJKHJlc2VydmVkX3R5cGVzcGVjcXVhbHMpOiBMaWtld2lzZS4KCShhZ2dyKTogTGlrZXdpc2UuCgkobmV3X3R5cGVfaWQpOiBMaWtld2lzZS4KCShjdl9xdWFsaWZpZXJzKTogTGlrZXdpc2UuCgkoYWZ0ZXJfdHlwZV9kZWNsYXJhdG9yX2ludGVybik6IExpa2V3aXNlLgoJKG5vdHlwZV9kZWNsYXJhdG9yX2ludGVybik6IExpa2V3aXNlLgoJKGFic2RjbF9pbnRlcm4pOiBMaWtld2lzZS4KCShuYW1lZF9wYXJtKTogTGlrZXdpc2UuCgkqIHB0LmMgKG1vc3Rfc3BlY2lhbGl6ZWRfY2xhc3MpOiBMaWtld2lzZS4KCSogcmVwby5jICh0ZW1wb3Jhcnlfb2JzdGFjayk6IE1ha2UgaXQgYSBzdHJ1Y3R1cmUsIG5vdCBhIHBvaW50ZXIuCgkoaW5pdF9yZXBvKTogSW5pdGlhbGl6ZSBpdC4KCSogc2VhcmNoLmMgKGN1cnJlbnRfb2JzdGFjayk6IFJlbW92ZS4KCSogdHlwZWNrMi5jIChhZGRfZXhjZXB0aW9uX3NwZWNpZmllcik6IERvbid0IGNhbGwgYnVpbGRfZGVjbF9saXN0LgoKMjAwMC0xMC0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX0VYVFJBX0hFQURFUlMpOiBSZW1vdmUuCgkoYysrIGxhbmd1YWdlIHN1cHBvcnQgYml0cyBmb3IgbGliZ2NjKTogUmVtb3ZlLgoJKGMrKy5jbGVhbik6IFJlbW92ZSBjcGxpYjIudHh0IGNsZWFudXAuCgkqIGNvbmZpZy1sYW5nLmluIChoZWFkZXJzLCBsaWIyZnVuY3MpOiBSZW1vdmUuCgoJKiBleGNlcHRpb24uY2MsIG5ldy5jYywgbmV3MS5jYywgbmV3Mi5jYzogUmVtb3ZlIGZpbGVzLgoJKiB0aW5mby5jYywgdGluZm8uaCwgdGluZm8yLmNjLCB2ZWMuY2M6IFJlbW92ZSBmaWxlcy4KCSogaW5jL2N4eGFiaS5oLCBpbmMvZXhjZXB0aW9uLCBpbmMvbmV3OiBSZW1vdmUgZmlsZXMuCgkqIGluYy9uZXcuaCwgaW5jL3R5cGVpbmZvOiBSZW1vdmUgZmlsZXMuCgoyMDAwLTEwLTA4ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBkZWNsLmMgKElOVE1BWF9UWVBFLCBVSU5UTUFYX1RZUEUpOiBEZWZpbmUgaWYgbm90IGFscmVhZHkKCWRlZmluZWQuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGludG1heF90eXBlX25vZGUgYW5kCgl1aW50bWF4X3R5cGVfbm9kZS4KCjIwMDAtMTAtMDYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKHN0cnVjdCBjcF9sYW5ndWFnZV9mdW5jdGlvbik6IFJlbW92ZSB4X3Jlc3VsdF9ydHguCgkob3JpZ2luYWxfcmVzdWx0X3J0eCk6IFJlbW92ZS4KCSogZGVjbC5jIChzYXZlX2Z1bmN0aW9uX2RhdGEpOiBEb24ndCBjbGVhciB4X3Jlc3VsdF9ydHguCgkobWFya19sYW5nX2Z1bmN0aW9uKTogRG9uJ3QgbWFyayBpdCBlaXRoZXIuCgkqIGV4cHIuYyAoZml4dXBfcmVzdWx0X2RlY2wpOiBSZW1vdmUuCgkqIHNlbWFudGljcy5jIChnZW5ydGxfbmFtZWRfcmV0dXJuX3ZhbHVlKTogRnJvYiB0aGUgcmV0dXJuIGRlY2wKCWJlZm9yZSBjYWxsaW5nIGVtaXRfbG9jYWxfdmFyLgoJKGdlbnJ0bF9maW5pc2hfZnVuY3Rpb24pOiBEb24ndCBjYWxsIGZpeHVwX3Jlc3VsdF9kZWNsLgoJQWx3YXlzIGVtaXQgdGhlIGp1bXAgdG8gcmV0dXJuX2xhYmVsLgoKMjAwMC0xMC0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IFNldCBjdXJyZW50IGFjY2VzcyBmb3IgZW51bS4KCSh0c3Vic3RfZW51bSk6IFNldCBmaWxlICYgbGluZSBmb3IgZW51bSBkZWNsLgoKCSogc3Bldy5jICh5eWxleCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCgoyMDAwLTEwLTA1ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGdlbnJ0bF9maW5pc2hfZnVuY3Rpb24pOiBEb24ndCBpbml0IG9yIGNoZWNrCgljYW5fcmVhY2hfZW5kOyByZW1vdmUgbm9yZXR1cm4gYW5kIHJldHVybiB2YWx1ZSBjaGVja3MuCgoyMDAwLTEwLTA1ICBUb20gVHJvbWV5ICA8dHJvbWV5QGN5Z251cy5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogVXNlIGBidWlsZF9zdGF0aWNfbmFtZScgd2l0aCBhCglzdWZmaXgsIG5vdCBhIHByZWZpeCwgdG8gYnVpbGQgdGhlIGNsYXNzIG9iamVjdCdzIG5hbWUuCgoyMDAwLTEwLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChhY2Nlc3Nfa2luZCk6IEZpeCBjb21tZW50IHR5cG8uCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCk6IEZpeCBkaWFnbm9zdGljIHR5cG8uCgkqIHNlbWFudGljcy5jIChmaW5pc2hfdGVtcGxhdGVfdHlwZSk6IEZpeCBjb21tZW50IHR5cG8uCgkoZmluaXNoX3F1YWxpZmllZF9vYmplY3RfY2FsbF9leHByKTogTGlrZXdpc2UuCgoyMDAwLTEwLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2V4cHIsIERFQ0xfU1RNVCBjYXNlKTogRG9uJ3QgcHJvY2VzcyBpZgoJdHN1YnN0aW5nIGZhaWxzLgoKMjAwMC0xMC0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHNwZXcuYyAoZnJvYl9pZCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZnJvYl9vcG5hbWUpOiBVc2UgaXQuCgkoeXlsZXgpOiBVc2UgaXQuCgoyMDAwLTEwLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChsYW5nX21hcmtfZmFsc2VfbGFiZWxfc3RhY2spOiBSZW1vdmUuCgkqIGxleC5jIChjcF9tYW5nX2xhbmdfdHlwZSk6IFVzZSBnZ2NfYWxsb2NfY2xlYXJlZC4KCjIwMDAtMDktMzAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGd4eGludC50ZXhpOiBVc2UgQGVtYWlsIGZvciBmb3JtYXR0aW5nIGVtYWlsIGFkZHJlc3Nlcy4KCjIwMDAtMDktMjkgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmM6IFJlbW92ZSBkaXJlY3Qgb2JzdGFjayBtYW5pcHVsYXRpb24uICBSZXBsYWNlIHdpdGgKCW91dHB1dF9idWZmZXItYmFzZWQgZm9ybWF0dGluZy4gIEFkanVzdCBjYWxscyB0byByZW1vdmVkIG1hY3Jvcy4KCShvYnN0YWNrX2NodW5rX2FsbG9jLCBvYnN0YWNrX2NodW5rX2ZyZWUpOiBSZW1vdmUuCgkoT0JfSU5JVCwgT0JfUFVUQywgT0JfUFVUQzIsIE9CX1BVVFMsIE9CX1BVVElELCBPQl9QVVRDUCwKCU9CX0ZJTklTSCwgT0JfUFVUSSwgT0JfRU5EX1RFTVBMQVRFKTogTGlrZXdpc2UuCgoyMDAwLTA5LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogaXIudGV4aTogTW92ZSB0byAuLi9jLXRyZWUudGV4aS4KCjIwMDAtMDktMjAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZGVjbDIuYyAoZ2V0X2d1YXJkKTogQ2hlY2sgREVDTF9GVU5DVElPTl9TQ09QRV9QLgoKMjAwMC0wOS0yMSAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZXJyZm4uYzogTW92ZSBkZWNsYXJhdGlvbiBvZiBjcF9wcmludGVyIGFuZCBjcF9wcmludGVycyB0byAuLi4KCSogY3AtdHJlZS5oOiAuLi4gaGVyZS4KCgkqIGVycm9yLmM6IFJlbW92ZSBkZWNsYXJhdGlvbiBvZiBjcF9wcmludGVyLgoKMjAwMC0wOS0yMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyZWUuYyAobWFya19sb2NhbF9mb3JfcmVtYXBfcik6IEhhbmRsZSBDQVNFX0xBQkVMcy4KCjIwMDAtMDktMjAgIEhhbnMtUGV0ZXIgTmlsc3NvbiAgPGhwQGF4aXMuY29tPgoKCSogZXhjZXB0LmM6IERlbGV0ZSAjaWYgMDpkIEVYQ0VQVElPTl9TRUNUSU9OX0FTTV9PUC1kZWZhdWx0IGFuZAoJdXNlcnMuCgoyMDAwLTA5LTE4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IFJvYnVzdGlmeS4KCjIwMDAtMDktMTggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLXRyZWUuaCAoY2hlY2tfZnVuY3Rpb25fZm9ybWF0KTogQWNjZXB0IGEgYHN0YXR1cycgcGFyYW1ldGVyLgoKCSogY2FsbC5jLCB0eXBlY2suYzogVXBkYXRlcyBjYWxscyB0byBgY2hlY2tfZnVuY3Rpb25fZm9ybWF0Jy4KCjIwMDAtMDktMTcgIEdlb2ZmcmV5IEtlYXRpbmcgIDxnZW9mZmtAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmMgKGhhbmRsZV9jbGFzc19oZWFkKTogQWx3YXlzIHB1c2ggc29tZSBzY29wZSBldmVuCglpbiB0aGUgZXJyb3IgY2FzZS4KCjIwMDAtMDktMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHN0cnVjdCBjcF9sYW5ndWFnZV9mdW5jdGlvbik6IFJlbW92ZQoJeF9zY29wZV9zdG10X3N0YWNrIGFuZCBuYW1lX2RlY2xhcmVkLgoJKGN1cnJlbnRfc2NvcGVfc3RtdF9zdGFjayk6IFJlbW92ZS4KCShmdW5jdGlvbl9uYW1lX2RlY2xhcmVkX3ApOiBOZXcgbWFjcm8uCgkoc3RydWN0IGxhbmdfZGVjbF9mbGFncyk6IFVzZSBjX2xhbmdfZGVjbCBhcyBhIGJhc2UgY2xhc3MuCgkoY29udGV4dCk6IFJlbW92ZS4KCShzdHJ1Y3QgbGFuZ19kZWNsKTogUmVwbGFjZSBzYXZlZF90cmVlIHdpdGggY29udGV4dC4KCShERUNMX0ZSSUVORF9DT05URVhUKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKFNFVF9ERUNMX0ZSSUVORF9DT05URVhUKTogTGlrZXdpc2UuCgkoREVDTF9WSVJUVUFMX0NPTlRFWFQpOiBMaWtld2lzZS4KCShERUNMX1NBVkVEX1RSRUUpOiBSZW1vdmUuCgkoQ19ERUNMQVJFRF9MQUJFTF9GTEFHKTogTGlrZXdpc2UuCgkoY3BsdXNfZXhwYW5kX2V4cHJfc3RtdCk6IERvbid0IGRlY2xhcmUuCgkoYWRkX2RlY2xfc3RtdCk6IExpa2V3aXNlLgoJKGFkZF9zY29wZV9zdG10KTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobWFya19zdG10X3RyZWUpOiBSZW1vdmUuCgkoY2FzZV9jb21wYXJlKTogTGlrZXdpc2UuCgkoZmluaXNoX2Nhc2VfbGFiZWwpOiBVc2UgY19hZGRfY2FzZV9sYWJlbC4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBtb3JlIGxhbmd1YWdlLXNwZWNpZmljIGhvb2tzLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBGaXggdHlwbyBpbiBjb21tZW50LgoJKGNwbHVzX2V4cGFuZF9leHByX3N0bXQpOiBSZW1vdmUuCgkobWFya19sYW5nX2Z1bmN0aW9uKTogVXNlIG1hcmtfY19sYW5ndWFnZV9mdW5jdGlvbi4KCShsYW5nX21hcmtfdHJlZSk6IFVzZSBjX21hcmtfbGFuZ19kZWNsLgoJKiBkZWNsMi5jOiBDaGFuZ2Ugb3JkZXIgb2YgaW5jbHVzaW9uLgoJKiBleGNlcHQuYzogTGlrZXdpc2UuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2V4cHIpOiBSZW1vdmUgaGFuZGxpbmcgb2YgU1RNVF9FWFBSLiAgRmFsbAoJYmFjayBvbiBjX2V4cGFuZF9leHByLgoJKiBmcmllbmQuYzogSW5jbHVkZSBleHByLmguCgkqIGluaXQuYzogQ2hhbmdlIG9yZGVyIG9mIGluY2x1c2lvbi4KCSogTWFrZWZpbGUuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgkqIGxleC5oIChmcmVlX2xhbmdfZGVjbF9jaGFpbik6IFJlbW92ZS4KCSogb3B0aW1pemUuYyAobWF5YmVfY2xvbmVfYm9keSk6IFVzZSBmdW5jdGlvbl9uYW1lX2RlY2xhcmVkX3AuCgkqIHB0LmMgKGJ1aWxkX3RlbXBsYXRlX2RlY2wpOiBEb24ndCBjb3B5IERFQ0xfVklSVFVBTF9DT05URVhUIGlmCglpdCBkb2Vzbid0IGV4aXN0LgoJKGluc3RhbnRpYXRlX2RlY2wpOiBVc2UgZnVuY3Rpb25fbmFtZV9kZWNsYXJlZF9wLgoJKiBzZW1hbnRpY3MuYyAobGFuZ19leHBhbmRfZXhwcl9zdG10KTogUmVtb3ZlLgoJKHNldF9jdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBMaWtld2lzZS4KCShjdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBMaWtld2lzZS4KCShiZWdpbl9jb21wb3VuZF9zdG10KTogVXNlIGZ1bmN0aW9uX25hbWVfZGVjbGFyZWRfcC4KCShhZGRfZGVjbF9zdG10KTogUmVtb3ZlLgoJKHNldHVwX3Z0YmxfcHRyKTogVXNlIGZ1bmN0aW9uX25hbWVfZGVjbGFyZWRfcC4KCShhZGRfc2NvcGVfc3RtdCk6IFJlbW92ZS4KCShjdXJyZW50X3Njb3BlX3N0bXRfc3RhY2spOiBOZXcgZnVuY3Rpb24uCgkoY3BfZXhwYW5kX3N0bXQpOiBEb24ndCBoYW5kbGUgU0NPUEVfU1RNVHMuCgkoZXhwYW5kX2JvZHkpOiBVc2UgZnVuY3Rpb25fbmFtZV9kZWNsYXJlZF9wLgoJKiB0cmVlLmMgKGNwX3N0YXRlbWVudF9jb2RlX3ApOiBEb24ndCBpbmNsdWRlIFNDT1BFX1NUTVQuCgkqIHR5cGVjay5jOiBDaGFuZ2Ugb3JkZXIgb2YgaW5jbHVkZXMuCgkoY29udmVydF9zZXF1ZW5jZSk6IFJlbW92ZS4KCjIwMDAtMDktMTQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGxleC5jIChyZXN3b3Jkcyk6IEFkZCBfQ29tcGxleC4KClRodSBTZXAgMTQgMTI6MTA6NDUgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIE1ha2UtbGFuZy5pbiAoY3BsaWIyLnR4dCk6IERlcGVuZCBvbiBjcC9NYWtlZmlsZS4KCjIwMDAtMDktMTMgIEouIERhdmlkIEFuZ2xpbiAgPGRhdmVAaGlhdWx5MS5oaWEubnJjLmNhPgoKCSogaW5pdC5jIChiZWdpbl9pbml0X3N0bXRzKTogRG9uJ3QgdXNlIC8vIGNvbW1lbnRzLgoKMjAwMC0wOS0xMiAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKG1heWJlX2RlZHVjZV9zaXplX2Zyb21fYXJyYXlfaW5pdCk6IFNldCBkb19kZWZhdWx0IGZvcgoJYWxsIG5vbi1leHRlcm4gYXJyYXlzLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENvbXBsYWluIGFib3V0ICdmcmllbmQgVCcgZm9yIGltcGxpY2l0Cgl0eXBlbmFtZXMsIHRvby4gIERvd25ncmFkZSBjb21wbGFpbnQgdG8gcGVkd2Fybi4KCSh4cmVmX3RhZyk6IFdhcm4gYWJvdXQgc3VycHJpc2luZyBiZWhhdmlvciBvZiAnZnJpZW5kIHN0cnVjdCBUJy4KCSogZGVjbDIuYyAoaGFuZGxlX2NsYXNzX2hlYWQpOiBHZW5lcmF0ZSBhIFRZUEVOQU1FX1RZUEUgZm9yCgknY2xhc3MgVGhpczo6SW5oZXJpdGVkJy4KCjIwMDAtMDktMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGZpbmlzaF9jYXNlX2xhYmVsKTogR2l2ZW4gdGhlIExBQkVMX0RFQ0wgYQoJREVDTF9DT05URVhULgoKMjAwMC0wOS0xMiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZXJyb3IuYyAoVEZGX1BMQUlOX0lERU5USUZJRVIsIFRGRl9OQU1FU1BBQ0VfU0NPUEUsCglURkZfQ0xBU1NfU0NPUEUsIFRGRl9DSEFTRV9OQU1FU1BBQ0VfQUxJQVMsIFRGRl9DSEFTRV9UWVBERUYsCglURkZfREVDTF9TUEVDSUZJRVJTLCBURkZfQ0xBU1NfS0VZX09SX0VOVU0sIFRGRl9SRVRVUk5fVFlQRSwKCVRGRl9GVU5DVElPTl9ERUZBVUxUX0FSR1VNRU5UUywgVEZGX0VYQ0VQVElPTl9TUEVDSUZJQ0FUSU9OLAoJVEZGX1RFTVBMQVRFX0hFQURFUiwgVEZGX1RFTVBMQVRFX0RFRkFVTFRfQVJHVU1FTlRTLCBURkZfU0NPUEUpOgoJTmV3IG1hY3Jvcy4KCShzb3JyeV9mb3JfdW5zdXBwb3J0ZWRfdHJlZSwgcHJpbnRfc2NvcGVfb3BlcmF0b3IsCglwcmludF9sZWZ0X3BhcmVuLCBwcmludF9yaWdodF9wYXJlbiwgcHJpbnRfbGVmdF9icmFja2V0LAoJcHJpbnRfcmlnaHRfYnJhY2tldCwgcHJpbnRfd2hpdGVzcGFjZSk6IExpa2V3aXNlLgoJKGFnZ3JfdmFyaWV0eSk6IFJlbmFtZSB0byBjbGFzc19rZXlfb3JfZW51bS4KCShwcmludF90eXBlKTogUmVuYW1lIHRvIHByaW50X3R5cGVfaWQuCgkocHJpbnRfdHlwZV9zcGVjaWZpZXJfc2VxLCBwcmludF9zaW1wbGVfdHlwZV9zcGVjaWZpZXIsCglwcmludF9lbGFib3JhdGVkX3R5cGVfc3BlY2lmaWVyLAoJcHJpbnRfcmVzdF9vZl9hYnN0cmFjdF9kZWNsYXJhdG9yLAoJcHJpbnRfcGFyYW1ldGVyX2RlY2xhcmF0aW9uX2NsYXVzZSwgcHJpbnRfZXhjZXB0aW9uX3NwZWNpZmljYXRpb24sCglwcmludF9uZXN0ZWRfbmFtZV9zcGVjaWZpZXIsIHByaW50X3RlbXBsYXRlX2lkLAoJdHlwZWRlZl9vcmlnaW5hbF9uYW1lLCAgcHJpbnRfdGVtcGxhdGVfYXJndW1lbnRfbGlzdF9zdGFydCwKCXByaW50X3RlbXBsYXRlX2FyZ3VtZW50X2xpc3RfZW5kKTogTmV3IGZ1bmN0aW9ucy4KCjIwMDAtMDktMTEgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlyLnRleGk6IEFkZCBtb3JlIGRvY3VtZW50YXRpb24uCgoyMDAwLTA5LTExICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChzdHJ1Y3Qgc2F2ZWRfc2NvcGUpOiBSZW1vdmUgeF9mdW5jdGlvbl9wYXJtcy4KCShjdXJyZW50X2Z1bmN0aW9uX3Bhcm1zKTogRG9uJ3QgZGVmaW5lLgoJKHN0cnVjdCBjcF9sYW5ndWFnZV9mdW5jdGlvbik6IFJlbW92ZSBwYXJtc19zdG9yZWQuCgkoY3VycmVudF9mdW5jdGlvbl9qdXN0X2Fzc2lnbmVkX3RoaXMpOiBEb24ndCBkZWZpbmUuCgkoY3VycmVudF9mdW5jdGlvbl9wYXJtc19zdG9yZWQpOiBMaWtld2lzZS4KCShzdGF0aWNfY3RvcnMpOiBEZWNsYXJlLgoJKHN0YXRpY19kdG9ycyk6IExpa2V3aXNlLgoJKFNGX0VYUEFORCk6IERvbid0IGRlZmluZS4KCShleHBhbmRfc3RhcnRfZWFybHlfdHJ5X3N0bXRzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiBMaWtld2lzZS4KCSogZGVjbC5jIChzdGF0aWNfY3RvcnMpOiBEb24ndCBkZWNsYXJlLgoJKHN0YXRpY19kdG9ycyk6IExpa2V3aXNlLgoJKHN0cnVjdCBiaW5kaW5nX2xldmVsKTogUmVtb3ZlIHRoaXNfYmxvY2suCgkocG9wbGV2ZWwpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKHNldF9ibG9jayk6IExpa2V3aXNlLgoJKG1hcmtfYmluZGluZ19sZXZlbCk6IERvbid0IG1hcmsgdGhpc19ibG9jay4KCShtYXJrX3NhdmVkX3Njb3BlKTogRG9uJ3QgbWFyayB4X2Z1bmN0aW9uX3Bhcm1zLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgYWRkIGN1cnJlbnRfZnVuY3Rpb25fcGFybXMgYXMgYSBHQwoJcm9vdC4KCShjaGVja19mdW5jdGlvbl90eXBlKTogQ2hhbmdlIHByb3RvdHlwZS4KCShzdGFydF9mdW5jdGlvbik6IFJlbW92ZSBSVEwtZ2VuZXJhdGlvbiBjb2RlLgoJKGV4cGFuZF9zdGFydF9lYXJseV90cnlfc3RtdHMpOiBSZW1vdmUuCgkoc3RvcmVfcGFybV9kZWNscyk6IEdpdmUgaXQgaW50ZXJuYWwgbGlua2FnZS4gIFJlbW92ZQoJUlRMLWdlbmVyYXRpb24gY29kZS4KCShmaW5pc2hfZnVuY3Rpb24pOiBSZW1vdmUgUlRMLWdlbmVyYXRpb24gY29kZS4KCSogZGVjbDIuYyAoc3RhdGljX2N0b3JzKTogRml4IGZvcm1hdHRpbmcuCgkoc3RhdGljX2R0b3JzKTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jICh1c2VfdGh1bmspOiBEb24ndCBjYWxsIHN0b3JlX3Bhcm1fZGVjbHMuCgkoc3ludGhlc2l6ZV9tZXRob2QpOiBMaWtld2lzZS4KCSogb3B0aW1pemUuYyAobWF5YmVfY2xvbmVfYm9keSk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChmbi5kZWYyKTogTGlrZXdpc2UuCgkoLnNldF9iYXNlX2luaXQpOiBMaWtld2lzZS4KCShub2RlY2xzKTogTGlrZXdpc2UuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBMaWtld2lzZS4KCSogcnR0aS5jIChzeW50aGVzaXplX3RpbmZvX2ZuKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChnZW5ydGxfdHJ5X2Jsb2NrKTogU2ltcGxpZnkuCgkoZXhwYW5kX2JvZHkpOiBVc2UgZ2VucnRsX3N0YXJ0X2Z1bmN0aW9uIGFuZAoJZ2VucnRsX2ZpbmlzaF9mdW5jdGlvbi4KCShnZW5ydGxfc3RhcnRfZnVuY3Rpb24pOiBOZXcgZnVuY3Rpb24uCgkoZ2VucnRsX2ZpbmlzaF9mdW5jdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wOS0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmMgKGNwX3RyZWVfcHJpbnRlciwgY2FzZSAnUCcpOiBBcHBlbmQgYnJlYWsuCgoyMDAwLTA5LTExICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChmcm9iX29wbmFtZSk6IERlY2xhcmUuCgkqIHBhcnNlLnkgKHNhdmVkX3Njb3Blcyk6IE5ldyBzdGF0aWMgdmFyaWFibGUuCgkoY3BfcGFyc2VfaW5pdCk6IEFkanVzdC4KCShkb19pZCk6IElmIGxhc3RpZGRlY2wgaXMgTlVMTCwgZG8gZG9faWRlbnRpZmllci4KCShvcGVyYXRvcik6IFNhdmUgc2NvcGUgaW5mb3JtYXRpb24uCgkodW5vcGVyYXRvcik6IE5ldyByZWR1Y3Rpb24uIFJlc3RvcmUgc2NvcGUgaW5mb3JtYXRpb24uCgkob3BlcmF0b3JfbmFtZSk6IEFwcGVuZCB1bm9wZXJhdG9yLiBDYWxsIGZyb2Jfb3BuYW1lLgoJKiBzcGV3LmMgKGZyb2Jfb3BuYW1lKTogRGVmaW5lLgoKMjAwMC0wOS0xMCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZGVjbC5jLCBydHRpLmM6IEluY2x1ZGUgZGVmYXVsdHMuaCBpZiBub3QgYWxyZWFkeSBpbmNsdWRlZC4KCURvbid0IGRlZmluZSB0aGUgKl9UWVBFX1NJWkUgbWFjcm9zLgoKMjAwMC0wOS0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAocHVzaF9zd2l0Y2gpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGNoZWNrX2NwX2Nhc2VfdmFsdWUpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkoZGVjbF9jb25zdGFudF92YWx1ZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHN0cnVjdCBjcF9zd2l0Y2gpOiBBZGQgc3dpdGNoX3N0bXQgYW5kIGNhc2VzLgoJKGNhc2VfY29tcGFyZSk6IE5ldyBmdW5jdGlvbi4KCShwdXNoX3N3aXRjaCk6IFNldCBzd2l0Y2hfc3RtdC4gIEluaXRpYWxpemUgY2FzZXMuCgkocG9wX3N3aXRjaCk6IENsZWFuIHVwIGNhc2VzLgoJKGRlZmluZV9jYXNlX2xhYmVsKTogUmVuYW1lIHRvIC4uLgoJKGZpbmlzaF9jYXNlX2xhYmVsKTogLi4uIHRoaXMuICBEbyBzZW1hbnRpYyBhbmFseXNpcyBmb3IgY2FzZQoJbGFiZWxzIGhlcmUuCgkoc3RhcnRfZnVuY3Rpb24pOiBDb3JyZWN0IGNvbW1lbnQuCgkqIGRlY2wyLmMgKGNoZWNrX2NwX2Nhc2VfdmFsdWUpOiBSZW1vdmUuCgkqIGV4cHIuYyAoZG9fY2FzZSk6IFJlbW92ZS4KCSogcHQuYyAodHN1YnN0X2V4cHIpOiBBZGp1c3QgY2FsbCB0byBmaW5pc2hfY2FzZV9sYWJlbC4KCSogc2VtYW50aWNzLmMgKGdlbnJ0bF9kb19wb3BsZXZlbCk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShSRUNIQUlOX1NUTVRTKTogUmVtb3ZlLgoJKGZpbmlzaF9icmVha19zdG10KTogVXNlIGJ1aWxkX2JyZWFrX3N0bXQuCgkoZmluaXNoX2NvbnRpbnVlX3N0bXQpOiBVc2UgYnVpbGRfY29udGludWVfc3RtdC4KCShmaW5pc2hfc3dpdGNoX2NvbmQpOiBBZGp1c3QgY29uZGl0aW9uIGhlcmUsIHJhdGVyIHRoYW4gaW4KCWNfZXhwYW5kX3N0YXJ0X2Nhc2UuCgkoZmluaXNoX2Nhc2VfbGFiZWwpOiBSZW1vdmUuCgkqIHR5cGVjay5jIChjX2V4cGFuZF9yZXR1cm4pOiBSZW1vdmUuCgkoY19leHBhbmRfc3RhcnRfY2FzZSk6IExpa2V3aXNlLgoKMjAwMC0wOS0wNyAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogaXIudGV4aTogRG9jdW1lbnQgdHlwZSBub2Rlcy4KCjIwMDAtMDktMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGluaXRfY3Bfc2VtYW50aWNzKTogRGVjbGFyZS4KCShnZW5ydGxfdHJ5X2Jsb2NrKTogRG9uJ3QgZGVjbGFyZS4KCShnZW5ydGxfaGFuZGxlcik6IExpa2V3aXNlLgoJKGdlbnJ0bF9jYXRjaF9ibG9jayk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jdG9yX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfc3Vib2JqZWN0KTogTGlrZXdpc2UuCgkoZ2VucnRsX2RvX3BvcGxldmVsKTogTGlrZXdpc2UuCgkoZ2VucnRsX25hbWVkX3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgoJKiBsZXguYyAoaW5pdF9wYXJzZSk6IENhbGwgaW5pdF9jcF9zZW1hbnRpY3MuCgkqIHNlbWFudGljcy5jIChnZW5ydGxfdHJ5X2Jsb2NrKTogR2l2ZSBpdCBpbnRlcm5hbCBsaW5rYWdlLgoJKGdlbnJ0bF9oYW5kbGVyKTogTGlrZXdpc2UuCgkoZ2VucnRsX2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuCgkoZ2VucnRsX2N0b3Jfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9zdWJvYmplY3QpOiBMaWtld2lzZS4KCShnZW5ydGxfZG9fcG9wbGV2ZWwpOiBMaWtld2lzZS4KCShnZW5ydGxfbmFtZWRfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuCgkobGFuZ19leHBhbmRfc3RtdCk6IFJlbmFtZSB0byAuLi4KCShjcF9leHBhbmRfc3RtdCk6IC4uLiB0aGlzLiAgT25seSBoYW5kbGUgQysrLXNwZWNpZmljIG5vZGVzLgoJKGluaXRfY3Bfc2VtYW50aWNzKTogRGVmaW5lLgoKCSogZGVjbC5jIChpbml0aWFsaXplX2xvY2FsX3Zhcik6IFJlbW92ZSBSVEwtZ2VuZXJhdGluZyBjb2RlLgoJKiBzZW1hbnRpY3MuYyAoZ2VucnRsX3RyeV9ibG9jayk6IEZpeCBmb3JtYXR0aW5nLgoKCU1vdmUgc3RhdGVtZW50LXRyZWUgZmFjaWxpdGllcyBmcm9tIEMrKyB0byBDIGZyb250LWVuZC4KCSogY3AtdHJlZS5oIChjcF90cmVlX2luZGV4KTogUmVtb3ZlIENQVElfVk9JRF9aRVJPLgoJKHZvaWRfemVyb19ub2RlKTogUmVtb3ZlLgoJKHN0bXRfdHJlZSk6IExpa2V3aXNlLgoJKHNjb3BlX2NoYWluKTogQWRqdXN0LgoJKGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVuYW1lIHRvIGNwX2xhbmd1YWdlX2Z1bmN0aW9uLgoJKGNwX2Z1bmN0aW9uX2NoYWluKTogQWRqdXN0LgoJKGN1cnJlbnRfc3RtdF90cmVlKTogUmVtb3ZlLgoJKGxhc3RfdHJlZSk6IExpa2V3aXNlLgoJKGxhc3RfZXhwcl90eXBlKTogTGlrZXdpc2UuCgkoc3RydWN0IGxhbmdfZGVjbCk6IEFkanVzdC4KCShTVE1UX0lTX0ZVTExfRVhQUl9QKTogUmVtb3ZlLgoJKGFkZF90cmVlKTogUmVtb3ZlLgoJKGJlZ2luX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdG10X3RyZWUpOiBMaWtld2lzZS4KCSh3YWxrX3RyZWVfZm4pOiBMaWtld2lzZS4KCSh3YWxrX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0KTogUmVwbGFjZSB1c2Ugb2YgYWRkX3RyZWUgd2l0aCBhZGRfc3RtdC4KCSogZGVjbC5jIChtYXJrX3N0bXRfdHJlZSk6IEFkanVzdCB0eXBlLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgYnVpbGQgdm9pZF96ZXJvX25vZGUuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBBZGp1c3QgdXNhZ2Ugb2YgY3VycmVudF9zdG10X3RyZWUuCgkoZmluaXNoX2VudW0pOiBVc2UgYWRkX3N0bXQsIG5vdCBhZGRfdHJlZS4KCShzYXZlX2Z1bmN0aW9uX2RhdGEpOiBBZGp1c3QgdXNlIG9mIGxhbmd1YWdlX2Z1bmN0aW9uLgoJKGZpbmlzaF9jb25zdHJ1Y3Rvcl9ib2R5KTogVXNlIGFkZF9zdG10LCBub3QgYWRkX3RyZWUuCgkoZmluaXNoX2Rlc3RydWN0b3JfYm9keSk6IExpa2V3aXNlLgoJKHB1c2hfY3BfZnVuY3Rpb25fY29udGV4dCk6IEFkanVzdCB1c2Ugb2YgbGFuZ3VhZ2VfZnVuY3Rpb24uCgkocG9wX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCShtYXJrX2xhbmdfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShtYXJrX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCSogaW5pdC5jIChidWlsZF9hZ2dyX2luaXQpOiBBZGp1c3QgdXNlIG9mIGN1cnJlbnRfc3RtdF90cmVlLgoJKGJ1aWxkX3ZlY19pbml0KTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChTRVRfTEFTVF9TVE1UKTogUmVtb3ZlLgoJKFJFQ0hBSU5fU1RNVFMpOiBEb24ndCB1c2UgaXQuCgkoc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCk6IEFkanVzdCB1c2Ugb2YgY3VycmVudF9zdG10X3RyZWUuCgkoY3VycmVudF9zdG10X3RyZWUpOiBEZWZpbmUuCgkoYWRkX3RyZWUpOiBSZW1vdmUuCgkoZmluaXNoX2dvdG9fc3RtdCk6IFVzZSBhZGRfc3RtdCwgbm90IGFkZF90cmVlLgoJKGZpbmlzaF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShiZWdpbl9pZl9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX3RoZW5fY2xhdXNlKTogTGlrZXdpc2UuCgkoYmVnaW5fd2hpbGVfc3RtdCk6IExpa2V3aXNlLgoJKGJlZ2luX2RvX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfcmV0dXJuX3N0bXQpOiBMaWtld2lzZS4KCShiZWdpbl9mb3Jfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9icmVha19zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2NvbnRpbnVlX3N0bXQpOiBMaWtld2lzZS4KCShiZWdpbl9zd2l0Y2hfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jYXNlX2xhYmVsKTogTGlrZXdpc2UuCgkoYmVnaW5fdHJ5X2Jsb2NrKTogTGlrZXdpc2UuCgkoYmVnaW5fZnVuY3Rpb25fdHJ5X2Jsb2NrKTogTGlrZXdpc2UuCgkoYmVnaW5faGFuZGxlcik6IExpa2V3aXNlLgoJKGJlZ2luX2NhdGNoX2Jsb2NrKTogTGlrZXdpc2UuCgkoYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGJlZ2luX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2xhYmVsX3N0bXQpOiBMaWtld2lzZS4KCShhZGRfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX3N1Ym9iamVjdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9kZWNsX2NsZWFudXApOiBMaWtld2lzZS4KCShmaW5pc2hfbmFtZWRfcmV0dXJuX3ZhbHVlKTogTGlrZXdpc2UuCgkoc2V0dXBfdnRibF9wdHIpOiBMaWtld2lzZS4KCShhZGRfc2NvcGVfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdG10X2V4cHIpOiBMaWtld2lzZS4KCShwcnVuZV91bnVzZWRfZGVjbHMpOiBSZW1vdmUuCgkoYmVnaW5fc3RtdF90cmVlKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKHByZXBfc3RtdCk6IEFkanVzdCB1c2Ugb2YgY3VycmVudF9zdG10X3RyZWUuCgkobGFuZ19leHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHN0YXRlbWVudF9jb2RlX3ApOiBSZW1vdmUuCgkoY3Bfc3RhdGVtZW50X2NvZGVfcCk6IE5ldyBmdW5jdGlvbi4KCSh3YWxrX3N0bXRfdHJlZSk6IFJlbW92ZS4KCShpbml0X3RyZWUpOiBTZXQgbGFuZ19zdGF0ZW1lbnRfY29kZV9wLgoKMjAwMC0wOS0wNiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCUludGVncmF0ZWQgcHJlcHJvY2Vzc29yLgoKCSogTWFrZS1sYW5nLmluLCBNYWtlZmlsZS5pbjogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIGlucHV0LmMsCglneHguZ3BlcmYsIGFuZCBoYXNoLmguICBBZGQgLi4vYy1sZXgubyB0byBDX09CSlMuCgkqIGd4eC5ncGVyZiwgaGFzaC5oLCBpbnB1dC5jOiBEZWxldGUuCgkqIGxhbmctc3BlY3MuaDogUGFzcyAtbGFuZy1jKysgdG8gY2MxcGx1cyBzbyBjcHBsaWIgaXMKCWluaXRpYWxpemVkIHByb3Blcmx5LgoKCSogY2xhc3MuYyAoZml4dXBfcGVuZGluZ19pbmxpbmUpOiBUYWtlIGEgdHJlZSwgbm90IGEKCXN0cnVjdCBwZW5kaW5nX2lubGluZSAqLiAgQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShpbml0X2NsYXNzX3Byb2Nlc3NpbmcpOiBTZXQgUklEX1BVQkxJQywgUklEX1BSSVZBVEUsCglSSURfUFJPVEVDVEVEIGVudHJpZXMgaW4gcmlkcG9pbnRlcnNbXSBhcnJheSBoZXJlLgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IERvIG5vdCByZWZlciB0byBzdHJ1Y3QKCXBlbmRpbmdfaW5saW5lLgoJKHJlY29yZF9idWlsdGluX3R5cGUsIGluaXRfZGVjbF9wcm9jZXNzaW5nKTogVXNlIFJJRF9NQVggbm90CglDUF9SSURfTUFYLgoJKGdyb2tkZWNsYXJhdG9yKTogVXNlIENfSVNfUkVTRVJWRURfV09SRC4KCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogSWdub3JlIC1sYW5nLWMrKyBmb3Igc2FrZSBvZgoJY3BwbGliLgoJKGdyb2tfeF9jb21wb25lbnRzKTogRG8gbm90IGluc3BlY3QgcGVuZGluZ19pbmxpbmVzIGNoYWluLgoKCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ19pZGVudGlmaWVyKTogQWRkIHJpZF9jb2RlIGVudHJ5LgoJKENfSVNfUkVTRVJWRURfV09SRCwgQ19SSURfQ09ERSwgQ19SSURfWVlDT0RFKTogTmV3LgoJKGZsYWdfbm9fZ251X2tleXdvcmRzLCBmbGFnX29wZXJhdG9yX25hbWVzLCByaWRfdG9feXkpOiBEZWNsYXJlLgoJKERFRkFSR19MRU5HVEgsIHN0cnVjdCBwZW5kaW5nX2lubGluZSwgVElNRV9JREVOVElGSUVSX1RJTUUsCglUSU1FX0lERU5USUZJRVJfRklMRUlORk8pOiBLaWxsLgoJVXBkYXRlIHByb3RvdHlwZXMuCgkqIGxleC5oOiBFeHB1bmdlIGNwX3JpZC4gIFJld3JpdGUgUklEQklUIG1hY3JvcyB0byB1c2UganVzdCBhCglzaW5nbGUgMzItYml0IHdvcmQuCgkqIHBhcnNlLnk6IENhbGwgZG9fcGVuZGluZ19pbmxpbmVzIHVuY29uZGl0aW9uYWxseS4KCXJlaW5pdF9wYXJzZV9mb3JfbWV0aG9kIGlzIG5vdyBzbmFyZl9tZXRob2QuICBmbi5kZWZwZW4gaXMgbm8KCWxvbmdlciBuZWNlc3NhcnkuICBSZW1vdmUgdW5uZWNlc3NhcnkgPGl0eXBlPiBhbm5vdGF0aW9uIG9uCglTQ09QRS4gIERvIG5vdCByZWZlciB0byBlbmRfb2ZfZmlsZSBvciBzdHJ1Y3QgcGVuZGluZ19pbmxpbmUuCgkqIHNlbWFudGljcy5jIChiZWdpbl9pbmxpbmVfZGVmaW5pdGlvbnMpOiBDYWxsCglkb19wZW5kaW5nX2lubGluZXMgdW5jb25kaXRpb25hbGx5LgoKCSogbGV4LmM6IFJlbW92ZSBhbGwgY29kZSBub3cgc2hhcmVkIHdpdGggQyBmcm9udCBlbmQuCglJbml0aWFsaXplIGNwcGxpYiBwcm9wZXJseSBpZiBVU0VfQ1BQTElCLiAgUHV0IHJlc2VydmVkIHdvcmRzCglpbnRvIHRoZSBnZXRfaWRlbnRpZmllciB0YWJsZS4gIFJld3JpdGUgcHJhZ21hIGhhbmRsaW5nIHRvCgl3b3JrIHdpdGggdGhlIHJlZ2lzdHJ5LiAgTW92ZSBjb2RlIHRvIHNhdmUgdG9rZW5zIGZvciBsYXRlcgoJcHJvY2Vzc2luZyB0byBzcGV3LmMuCgoJKiBzcGV3LmM6IFJld3JpdGUgZXZlcnl0aGluZyBpbiB0ZXJtcyBvZiB0b2tlbiBzdHJlYW1zIGluc3RlYWQKCW9mIHRleHQuICBNb3ZlIHJvdXRpbmVzIGhlcmUgZnJvbSBsZXguYyAvIGlucHV0LmMgYXMKCWFwcHJvcHJpYXRlLiAgR0MtbWFyayB0cmVlcyBoYW5naW5nIG9mZiB0aGUgcGVuZGluZyBpbmxpbmVzCgljaGFpbi4KCjIwMDAtMDktMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBORVdTOiBNZW50aW9uIHRoYXQgdGhlIG5hbWVkIHJldHVybiB2YWx1ZSBleHRlbnNpb24gaGFzIGJlZW4KCWRlcHJlY2F0ZWQuCgkqIGNwLXRyZWUuaCAob3JpZ2luYWxfcmVzdWx0X3J0eCk6IERlZmluZS4KCShUUkVFX1JFRkVSRU5DRV9FWFBSKTogUmVtb3ZlLgoJKERFQ0xfVlBBUkVOVCk6IExpa2V3aXNlLgoJKHB1c2hkZWNsX25vbmNsYXNzX2xldmVsKTogTGlrZXdpc2UuCgkoc3RvcmVfcmV0dXJuX2luaXQpOiBMaWtld2lzZS4KCShyZWluaXRfbGFuZ19zcGVjaWZpYyk6IExpa2V3aXNlLgoJKGdlbnJ0bF9uYW1lZF9yZXR1cm5fdmFsdWUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBkZWNsLmMgKG9yaWdpbmFsX3Jlc3VsdF9ydHgpOiBSZW1vdmUuCgkoY3BfZmluaXNoX2RlY2wpOiBEb24ndCBidWlsZCBERUNMX1NUTVRzIGZvciBSRVNVTFRfREVDTHMuCglEbyBub3QgZ2VuZXJhdGUgUlRMIGZvciBsb2NhbCB2YXJpYWJsZXMgaGVyZS4KCShzdG9yZV9yZXR1cm5faW5pdCk6IFJlbW92ZS4KCSogc2VtYW50aWNzLmMgKGdlbnJ0bF9uYW1lZF9yZXR1cm5fdmFsdWUpOiBTaW1wbGlmeS4gIEZvbGQgaW4KCXN0b3JlX3JldHVybl9pbml0LgoJKGZpbmlzaF9uYW1lZF9yZXR1cm5fdmFsdWUpOiBBZGp1c3QgYWNjb3JkaW5nbHkuICBXYXJuIHRoYXQgdGhpcwoJZXh0ZW5zaW9uIGlzIGRlcHJlY2F0ZWQuCgkobGFuZ19leHBhbmRfc3RtdCk6IEFkanVzdCBjYWxsIHRvIGdlbnJ0bF9uYW1lZF9yZXR1cm5fdmFsdWUuCgoyMDAwLTA5LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHlwZV91bmlmaWNhdGlvbl9yZWFsKTogUmVwbGFjZSBzd2l0Y2ggd2l0aCBpZi4KCSh1bmlmeSk6IFRzdWJzdCBub24tdHlwZSBwYXJtcyBiZWZvcmUgY29tcGFyaW5nLgoKMjAwMC0wOS0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmMgKGR1bXBfdHlwZW5hbWUpOiBOZXcgZnVuY3Rpb24sIGJyb2tlbiBvdXQgb2YgLi4uCgkoZHVtcF90eXBlKTogLi4uIGhlcmUuIFVzZSBpdC4KCSogdHlwZWNrLmMgKHNhbWVfdHlwZV9wKTogVXNlIGNwX3RyZWVfZXF1YWwgZm9yIFRZUEVOQU1FX1RZUEUuCgoyMDAwLTA5LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogaW5pdC5jIChidWlsZF9vZmZzZXRfcmVmKTogRGVhbCB3aXRoIG5hbWVzcGFjZSBzY29wZWQKCVRFTVBMQVRFX0lEX0VYUFJzLgoKMjAwMC0wOS0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKHJlc29sdmVfYWRkcmVzc19vZl9vdmVybG9hZGVkX2Z1bmN0aW9uKTogQWRkCglleHBsYW5hdGlvbiBtZXNzYWdlLgoJKiBkZWNsLmMgKGRlZmluZV9jYXNlX2xhYmVsKTogUmVmb3JtYXQgZXhwbGFuYXRpb24uCgkqIGRlY2wyLmMgKGZpbmlzaF9zdGF0aWNfZGF0YV9tZW1iZXJfZGVjbCk6IExpa2V3aXNlLgoJKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogTGlrZXdpc2UuCgoyMDAwLTA5LTA1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB0cmVlLmMgKHdhbGtfdHJlZSk6IEV4cG9zZSB0YWlsIHJlY3Vyc2lvbi4KCSh3YWxrX3N0bXRfdHJlZSk6IE5ldyBmdW5jdGlvbi4KCSogY3AtdHJlZS5oOiBQcm90b3R5cGUgd2Fsa19zdG10X3RyZWUuCgkqIHNlbWFudGljcy5jIChwcnVuZV91bnVzZWRfZGVjbHMpOiBPcGVyYXRlIG9uIFNDT1BFX1NUTVRzIG5vdAoJdGhlIEJMT0NLcyBkaXJlY3RseS4gIElmIGEgQkxPQ0sgaGFzIG5vIHZhcmlhYmxlcyBhZnRlcgoJcHJ1bmluZywgZGlzY2FyZCBpdC4KCShmaW5pc2hfc3RtdF90cmVlKTogVXNlIHdhbGtfc3RtdF90cmVlLiAgTm8gbmVlZCB0byBzYXZlIGFuZAoJcmVzdG9yZSB0aGUgbGluZSBudW1iZXIuCgoyMDAwLTA5LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKENYWF9UUkVFX0gpOiBBZGQgZGVwZW5kZW5jeSBvbiBIVEFCX0guCgkocHQubyk6IFJlbW92ZSBkZXBlbmRlbmN5IG9uIEhUQUJfSC4KCSogY3AtdHJlZS5oOiBJbmNsdWRlIGhhc2h0YWIuaC4KCSh3YWxrX3RyZWUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKHdhbGtfdHJlZV93aXRob3V0X2R1cGxpY2F0ZXMpOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoY2hlY2tfZGVmYXVsdF9hcmd1bWVudCk6IFVzZSBpdC4KCSogb3B0aW1pemUuYyAocmVtYXBfZGVjbCk6IEFkanVzdCBjYWxscyB0byB3YWxrX3RyZWUuCgkoY29weV9ib2R5KTogTGlrZXdpc2UuCgkoZXhwYW5kX2NhbGxzX2lubGluZSk6IExpa2V3aXNlLgoJKGNhbGxzX3NldGptcF9wKTogVXNlIHdhbGtfdHJlZV93aXRob3V0X2R1cGxpY2F0ZXMuCgkqIHB0LmM6IERvbid0IGluY2x1ZGUgaGFzaHRhYi5oLgoJKGZvcl9lYWNoX3RlbXBsYXRlX3Bhcm0pOiBVc2Ugd2Fsa190cmVlX3dpdGhvdXRfZHVwbGljYXRlcy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaC1zdG10X3RyZWUpOiBMaWtld2lzZS4KCShleHBhbmRfYm9keSk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKHdhbGtfdHJlZSk6IEFkZCBhZGRpdGlvbmFsIHBhcmFtZXRlci4KCSh3YWxrX3RyZWVfd2l0aG91dF9kdXBsaWNhdGVzKTogTmV3IGZ1bmN0aW9uLgoJKGNvdW50X3RyZWVzKTogVXNlIGl0LgoJKHZlcmlmeV9zdG10X3RyZWUpOiBBZGp1c3QgY2FsbCB0byB3YWxrX3RyZWUuCgkoZmluZF90cmVlKTogVXNlIHdhbGtfdHJlZV93aXRob3V0X2R1cGxpY2F0ZXMuCgkobm9fbGlua2FnZV9jaGVjayk6IExpa2V3aXNlLgoJKGJyZWFrX291dF90YXJnZXRfZXhwcnMpOiBBZGp1c3QgY2FsbCB0byB3YWxrX3RyZWUuCgkoY3BfdW5zYXZlKTogTGlrZXdpc2UuCgoyMDAwLTA5LTA0ICBLcmlhbmcgTGVyZHN1d2FuYWtpaiAgPGxlcmRzdXdhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGNwLXRyZWUuZGVmIChCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNKTogTmV3IHRyZWUgY29kZS4KCShURU1QTEFURV9URU1QTEFURV9QQVJNKTogQWRqdXN0IGNvbW1lbnQuCgkqIGNwLXRyZWUuaCAoVFlQRV9CSU5GTyk6IEFkanVzdCBjb21tZW50LgoJKFRFTVBMQVRFX1RFTVBMQVRFX1BBUk1fVEVNUExBVEVfSU5GTyk6IExpa2V3aXNlLgoJKFRFTVBMQVRFX1RZUEVfUEFSTV9JTkRFWCk6IExpa2V3aXNlLgoJKElTX0FHR1JfVFlQRSk6IFVzZSBCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNIGluc3RlYWQuCgkoVFlQRV9URU1QTEFURV9JTkZPKTogTGlrZXdpc2UuCgkoVEVNUExBVEVfVEVNUExBVEVfUEFSTV9URU1QTEFURV9ERUNMKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKHB1c2hfbmVzdGVkX2NsYXNzKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobG9va3VwX25hbWVfcmVhbCk6IExpa2V3aXNlLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCgkoZ3Jva19vcF9wcm9wZXJ0aWVzKTogTGlrZXdpc2UuCgkoeHJlZl90YWcpOiBMaWtld2lzZS4KCSh4cmVmX2Jhc2V0eXBlcyk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChjb25zdHJ1Y3Rvcl9uYW1lX2Z1bGwpOiBMaWtld2lzZS4KCShhcmdfYXNzb2NfdGVtcGxhdGVfYXJnKTogQWRkIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0gY2FzZS4KCShhcmdfYXNzb2NfdHlwZSk6IFVzZSBCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNIGluc3RlYWQuCgkqIGVycm9yLmMgKGR1bXBfdHlwZSk6IFNwbGl0IFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0gY2FzZS4KCShkdW1wX3R5cGVfcHJlZml4KTogQWRkIEJPVU5EX1RFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkoZHVtcF90eXBlX3N1ZmZpeCk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGlzX2FnZ3JfdHlwZSk6IFVzZSBCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNCglpbnN0ZWFkLgoJKGdldF9hZ2dyX2Zyb21fdHlwZWRlZik6IExpa2V3aXNlLgoJKiBtYW5nbGUuYyAod3JpdGVfdHlwZSk6IFNwbGl0IFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0gY2FzZS4KCSh3cml0ZV9leHByZXNzaW9uKTogQWRkIEJPVU5EX1RFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkod3JpdGVfdGVtcGxhdGVfcGFybSk6IExpa2V3aXNlLgoJKHdyaXRlX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm0pOiBDaGVjayB0cmVlIGNvZGUgaW5zdGVhZCBvZgoJdXNpbmcgVEVNUExBVEVfVEVNUExBVEVfUEFSTV9URU1QTEFURV9JTkZPLgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfbmVzdGVkX25hbWUpOiBBZGQKCUJPVU5EX1RFTVBMQVRFX1RFTVBMQVRFX1BBUk0uCgkocHJvY2Vzc19vdmVybG9hZF9pdGVtKTogU3BsaXQgVEVNUExBVEVfVEVNUExBVEVfUEFSTSBjYXNlLgoJKiBwYXJzZS55IChiYWRfcGFybSk6IEFkZCBCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNLgoJKiBwdC5jIChjb252ZXJ0X3RlbXBsYXRlX2FyZ3VtZW50KTogQ2hlY2sgdHJlZSBjb2RlIGluc3RlYWQgb2YKCXVzaW5nIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk1fVEVNUExBVEVfSU5GTy4KCShmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtX3IpOiBTcGxpdCBURU1QTEFURV9URU1QTEFURV9QQVJNIGNhc2UuCgkoZm9yX2VhY2hfdGVtcGxhdGVfcGFybSk6IEFkanVzdCBjb21tZW50LgoJKHRzdWJzdCk6IEFkZCBCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNLiAgUmVvcmdhbml6ZS4KCSh0c3Vic3RfY29weSk6IEFkZCBCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNLgoJKHVuaWZ5KTogQWRkIEJPVU5EX1RFTVBMQVRFX1RFTVBMQVRFX1BBUk0uICBSZW9yZ2FuaXplLiAgVXNlCgl0ZW1wbGF0ZV9hcmdzX2VxdWFsIHRvIGNvbXBhcmUgdGVtcGxhdGUgdGVtcGxhdGUgcGFyYW1ldGVyIGNhc2VzLgoJKiBwdHJlZS5jIChwcmludF9sYW5nX3R5cGUpOiBBZGQgQk9VTkRfVEVNUExBVEVfVEVNUExBVEVfUEFSTS4KCSogc2VhcmNoLmMgKGxvb2t1cF9maWVsZF8xKTogVXNlIEJPVU5EX1RFTVBMQVRFX1RFTVBMQVRFX1BBUk0KCWluc3RlYWQuCgkqIHRyZWUuYyAoY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogRGVjaWRlIHdoZXRoZXIgdG8gY3JlYXRlCglhIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0gb3IgQk9VTkRfVEVNUExBVEVfVEVNUExBVEVfUEFSTSBub2RlLgoJKHdhbGtfdHJlZSk6IEFkZCBCT1VORF9URU1QTEFURV9URU1QTEFURV9QQVJNLgoJKGNvcHlfdHJlZV9yKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb21wdHlwZXMpOiBMaWtld2lzZS4gIENoZWNrIHRyZWUgY29kZSBpbnN0ZWFkIG9mCgl1c2luZyBURU1QTEFURV9URU1QTEFURV9QQVJNX1RFTVBMQVRFX0lORk8uCgoyMDAwLTA5LTA0ICBNYXJrIEVsYnJlY2h0ICA8c25vd2JhbGwzQGJpZ2Zvb3QuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBNb3ZlIHRoZSBjb2RlIGZvciBoYW5kbGluZyBmdW5jdGlvbnMKCW1hcmtlZCB3aXRoIHRoZSBjb25zdHJ1Y3RvciBhbmQgZGVzdHJ1Y3RvciBhdHRyaWJ1dGVzIGluc2lkZSB0aGUKCWV4cGFuZF9wIGJsb2NrLgoKMjAwMC0wOS0wNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogRGVhbCB3aXRoIFRFTVBMQVRFX0lEX0VYUFIuCgoyMDAwLTA5LTA0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogUmVtb3ZlIGFib3J0LgoJKiB0cmVlLmMgKGdldF90eXBlX2RlY2wpOiBBbGxvdyBlcnJvcl9tYXJrX25vZGUuCgoyMDAwLTA5LTA0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoYXJnX2Fzc29jKTogRGVhbCB3aXRoIENPTVBPTkVOVF9SRUZzIGluc2lkZQoJVEVNUExBVEVfSURfRVhQUnMuCgoyMDAwLTA5LTAzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3BlcmF0b3JzLmRlZiAoQUxJR05PRl9FWFBSLCBNQVhfRVhQUiwgTUlOX0VYUFIpOiBDaGFuZ2UKCW5ldyBBQkkgbWFuZ2xpbmcuCgoyMDAwLTA5LTAxICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2UueSAobmFtZWRfY2xhc3NfaGVhZCk6IENoZWNrIGZvciBUWVBFTkFNRV9UWVBFLiBTaW1wbGlmeQoJdW5pb24gdGFnIG1pc21hdGNoIGVycm9yIHJlcG9ydGluZy4KCjIwMDAtMDktMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKGJ1aWxkX3Njb3BlZF9tZXRob2RfY2FsbCk6IENoZWNrIGl0IGlzIG5vdCBhIG5hbWVzcGFjZS4KCjIwMDAtMDgtMzAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogY3AtdHJlZS5oIChMT0NBTF9DTEFTU19QKTogVXNlIGRlY2xfZnVuY3Rpb25fY29udGV4dC4KCgkqIHRyZWUuYyAoYm90X21hbmlwKTogQ2hlY2sgVFJFRV9DT05TVEFOVCByYXRoZXIgdGhhbgoJIVRSRUVfU0lERV9FRkZFQ1RTLiAgQ2FsbCBicmVha19vdXRfdGFyZ2V0X2V4cHJzIGFuZAoJYnVpbGRfdGFyZ2V0X2V4cHJfd2l0aF90eXBlIGZvciB0aGUgbm9uLUFHR1JfSU5JVF9FWFBSIGNhc2UuCgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogQWx3YXlzIGNhbGwgbWFrZV9mdW5jdGlvbl9ydGwuCgoyMDAwLTA4LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBzZW1hbnRpY3MuYyAocHJ1bmVfdW51c2VkX2RlY2xzKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF9zdG10X3RyZWUpOiBDYWxsIGl0IHZpYSB3YWxrX3RyZWUuCgoyMDAwLTA4LTI5ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBjbGFzcy5jIChidWlsZF9zZWNvbmRhcnlfdnRhYmxlKTogQ29uc3RpZnkgYSBjaGFyICouCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGZ1bmN0aW9uX2lkX25vZGUsCglwcmV0dHlfZnVuY3Rpb25faWRfbm9kZSwgYW5kIGZ1bmNfaWRfbm9kZS4KCSogaW5wdXQuYyAoc3RydWN0IGlucHV0X3NvdXJjZSk6IENvbnN0aWZ5ICdzdHInLgoJKGZlZWRfaW5wdXQpOiBDb25zdGlmeSBmaXJzdCBhcmd1bWVudC4KCSogbWFuZ2xlLmMgKHdyaXRlX2lkZW50aWZpZXIpOiBDb25zdGlmeSBhcmd1bWVudC4KCSogcHQuYyAobWFuZ2xlX2NsYXNzX25hbWVfZm9yX3RlbXBsYXRlKTogQ29uc3RpZnkgYXJndW1lbnQuCgoyMDAwLTA4LTI5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrLmMgKG1hcmtfYWRkcmVzc2FibGUpOiBSZW1vdmUgY29kZSB0aGF0IHBva2VzIGFyb3VuZCBpbgoJUlRMLgoKMjAwMC0wOC0yOCAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBsZXguYyAoZmlsZV9uYW1lX25vbmRpcmVjdG9yeSk6IE1vdmUgdG8gdG9wbGV2LmMuCgoJKiBjcC10cmVlLmggKExPQ0FMX0NMQVNTX1ApOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBpdC4KCjIwMDAtMDgtMjcgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtYW5nbGUuYyAoQ0xBU1NUWVBFX1RFTVBMQVRFX0lEX1ApOiBSZW1vdmUgdW5leHBsYWluZWQgdm9vZG9vLgoJKHdyaXRlX2VuY29kaW5nKTogUGFzcyBhbm90aGVyIGFyZ3VtZW50IHRvIHdyaXRlX25hbWUuCgkod3JpdGVfbmFtZSk6IEFkZCBpZ25vcmVfbG9jYWxfc2NvcGUgcGFyYW1ldGVyLiAgRml4IGhhbmRsaW5nIG9mCglsb2NhbCBuYW1lcy4KCSh3cml0ZV9uZXN0ZWRfbmFtZSk6IFVzZSB3cml0ZV91bnF1YWxpZmllZF9uYW1lLgoJKHdyaXRlX3ByZWZpeCk6IExpa2V3aXNlLiAgU2tpcCBvdXQgb24gRlVOQ1RJT05fREVDTHMuCgkod3JpdGVfdGVtcGxhdGVfcHJlZml4KTogVXNlIHdyaXRlX3VucXVhbGlmaWVkX25hbWUuCgkod3JpdGVfY29tcG9uZW50KTogUmVtb3ZlLgoJKHdyaXRlX2xvY2FsX25hbWUpOiBBZGQgcGFyYW1ldGVyLiAgVXNlIGRpcmVjdCBsb2NhbCBlbnRpdHkgdG8KCWRpc2NyaW1pbmF0b3IgY2FsY3VsYXRpb24uCgkod3JpdGVfY2xhc3NfZW51bV90eXBlKTogUGFzcyBhbm90aGVyIGFyZ3VtZW50IHRvIHdyaXRlX25hbWUuCgkod3JpdGVfdGVtcGxhdGVfdGVtcGxhdGVfYXJnKTogTGlrZXdpc2UuCgkobWFrZV9ndWFyZF92YXJpYWJsZSk6IExpa2V3aXNlLgoKMjAwMC0wOC0yNyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogTWF0Y2hpbmcgZGVjbHMgZm9yIGxvY2FsIGV4dGVybnMgYXJlIGZvdW5kIGluCgl0aGUgY3VycmVudCBsZXZlbC4gIFByb3BhZ2F0ZSBsaW5rYWdlIGluZm9ybWF0aW9uIGZyb20gcHJldmlvdXMKCWRlY2xhcmF0aW9ucy4KCjIwMDAtMDgtMjYgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGlyLnRleGkgKEV4cHJlc3Npb25zKTogRml4IHR5cG8uCgoyMDAwLTA4LTI1ICBHcmVnIE1jR2FyeSAgPGdyZWdAbWNnYXJ5Lm9yZz4KCgkqIHRyZWUuYyAoaW5pdF90cmVlKTogVXNlIEFSUkFZX1NJWkUuCgoyMDAwLTA4LTI1ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlcnJvci5jIChjcF90cmVlX3ByaW50ZXIpOiBSZXdvcmsuCgoyMDAwLTA4LTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChDWFhfTElCMkZVTkNTKTogUmVtb3ZlIGNwLWRlbWFuZ2xlLm8gYW5kCglkeW4tc3RyaW5nLm8uCgkoQ1hYX0xJQjJTUkNTKTogUmVtb3ZlIGNwLWRlbWFuZ2xlLmMgYW5kIGR5bi1zdHJpbmcuYy4KCShjcC1kZW1hbmdsZS5vKTogUmVtb3ZlIHRhcmdldC4KCShkeW4tc3RyaW5nLm8pOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoZ3Jva2ZuZGVjbCk6IFJlcXVpcmUgdGhhdCBgbWFpbicgcmV0dXJuIGFuIGBpbnQnLgoJKiBtYW5nbGUuYyAod3JpdGVfZW5jb2RpbmcpOiBEb24ndCBtYW5nbGUgcmV0dXJuIHR5cGVzIGZvcgoJY29udmVyc2lvbiBmdW5jdGlvbnMuCgoyMDAwLTA4LTI1ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBlcnJvci5jICh0cmVlX2Zvcm1hdHRpbmdfaW5mbyk6IE5ldyBkYXRhIHR5cGUuCgkodHJlZV9iZWluZ19mb3JtYXR0ZWQpOiBOZXcgbWFjcm8uCgkodHJlZV9mb3JtYXR0aW5nX2ZsYWdzKTogTGlrZXdpc2UuCgkocHV0X3doaXRlc3BhY2UpOiBMaWtld2lzZS4KCShwcmludF90cmVlX2lkZW50aWZpZXIpOiBMaWtld2lzZS4KCShwcmludF9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoY3BfdHJlZV9wcmludGVyLCBwcmludF9mdW5jdGlvbl9hcmd1bWVudF9saXN0LCBwcmludF9kZWNsYXJhdGlvbiwKCXByaW50X2V4cHJlc3Npb24sIHByaW50X2Z1bmN0aW9uX2RlY2xhcmF0aW9uLAoJcHJpbnRfZnVuY3Rpb25fcGFyYW1ldGVyLCBwcmludF90eXBlLCBwcmludF9jdl9xdWFsaWZpZXIpOiBOZXcKCWZ1bmN0aW9ucy4KCShpbml0X2Vycm9yKTogSW5pdGlhbGl6ZSBsYW5nX3ByaW50ZXIuCgoyMDAwLTA4LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jKTogSnVzdCByZWludGVycHJldCBpZiB0aGVyZSdzIG5vCglhZGp1c3RtZW50IG5lY2Vzc2FyeS4KCjIwMDAtMDgtMjQgIEdyZWcgTWNHYXJ5ICA8Z3JlZ0BtY2dhcnkub3JnPgoKCSogY3AtdHJlZS5oIChNQUlOX05BTUVfUCk6IFJlbW92ZSBtYWNyby4KCjIwMDAtMDgtMjQgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmMgKHByaW50X2luc3RhbnRpYXRpb25fY29udGV4dCk6IERvbid0IGZvcmdldCB0byBmbHVzaCB0aGUKCWJ1ZmZlci4KCjIwMDAtMDgtMjMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogdHlwZWNrLmMgKGJ1aWxkX3B0cm1lbWZ1bmMpOiBTYXZlIHRoZSBpbnB1dCBwbWYuCgoJKiBtZXRob2QuYyAocHJvY2Vzc19tb2RpZmllcnMpOiBVc2Ugc2FtZV90eXBlX3AuCgoyMDAwLTA4LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX0NMT05FRF9GVU5DVElPTl9QKTogQ2hlY2sgREVDTF9MQU5HX1NQRUNJRklDLgoJKiBtYW5nbGUuYyAod3JpdGVfZnVuY3Rpb25fdHlwZSk6IENoYW5nZSBwcm90b3R5cGUuCgkod3JpdGVfZW5jb2RpbmcpOiBEb24ndCBtYW5nbGUgcmV0dXJuIHR5cGVzIGZvcgoJY29uc3RydWN0b3JzIG9yIGRlc3RydWN0b3JzLgoJKHdyaXRlX3R5cGUpOiBBZGp1c3QgY2FsbCB0byB3cml0ZV9mdW5jdGlvbl90eXBlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IEluc3RhbnRpYXRlIGFsdGVybmF0ZSBlbnRyeSBwb2ludHMKCXdoZW4gaW5zdGFudGlhdGluZyB0aGUgbWFpbiBmdW5jdGlvbi4KCjIwMDAtMDgtMjMgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGVycm9yLmMgKGNwX3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogRG9uJ3QgdXNlIGVtYmVkZGVkICdcbicgaW4KCW91dHB1dF9wcmludGYuCgoyMDAwLTA4LTIzICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVtb3ZlIGJvZ3VzIGluaXRpYWxpemF0aW9uLgoJKiBlcnJvci5jIChsYW5nX3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogUmVzdG9yZSBoZXJlLgoJKGluaXRfZXJyb3IpOiBJbml0aWFsaXplIHByaW50X2Vycm9yX2Z1bmN0aW9uLgoKMjAwMC0wOC0yMiAgVGhlb2RvcmUgUGFwYWRvcG91bG8gIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBkZWNsMi5jIChhcmdfYXNzb2MpOiBSZXZlcnQgbXkgMjAwMC0wOC0xMSBjaGFuZ2UuCgoyMDAwLTA4LTIyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbiAoZXJyb3Iubyk6IERlcGVuZHMgb24gZGlhZ25vc3RpYy5oCgoJKiBjcC10cmVlLmggKHByb2JsZW1hdGljX2luc3RhbnRpYXRpb25fY2hhbmdlZCwKCXJlY29yZF9sYXN0X3Byb2JsZW1hdGljX2luc3RhbnRpYXRpb24sIGN1cnJlbnRfaW5zdGFudGlhdGlvbiwKCXByaW50X2luc3RhbnRpYXRpb25fY29udGV4dCk6IERlY2xhcmUuCgkobWF5YmVfcHJpbnRfdGVtcGxhdGVfY29udGV4dCk6IFJlbW92ZS4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgcHJpbnRfZXJyb3JfZnVuY3Rpb24gdG8gTlVMTC4KCShsYW5nX3ByaW50X2Vycm9yX2Z1bmN0aW9uKTogUmVtb3ZlLCBzaW5jZSB3ZSdyZSB1c2luZyBhIG5ldwoJbWFjaGluZXJ5LgoKCSogZXJyb3IuYzogI2luY2x1ZGUgZGlhZ25vc3RpYy5oCgkoZnVuY3Rpb25fY2F0ZWdvcnkpOiBOZXcgZnVuY3Rpb24uCgkoY3BfZGlhZ25vc3RpY19zdGFydGVyKTogTGlrZXdpc2UuCgkoY3BfZGlhZ25vc3RpY19maW5hbGl6ZXIpOiBMaWtld2lzZS4KCShjcF9wcmludF9lcnJvcl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKG1heWJlX3ByaW50X2luc3RhbnRpYXRpb25fY29udGV4dCk6IExpa2V3aXNlLgoJKHByaW50X2luc3RhbnRpYXRpb25fZnVsbF9jb250ZXh0KTogTGlrZXdpc2UuCgkocHJpbnRfaW5zdGFudGlhdGlvbl9wYXJ0aWFsX2NvbnRleHQpOiBMaWtld2lzZS4KCShwcmludF9pbnN0YW50aWF0aW9uX2NvbnRleHQpOiBEZWZpbmUuCgkoaW5pdF9lcnJvcik6IEluaXRpYWxpemUgZGlhZ25vc3RpYyBwYWdlciBhbmQgZmluYWxpemVyLgoKCSogcHQuYyAocHJvYmxlbWF0aWNfaW5zdGFudGlhdGlvbl9jaGFuZ2VkKTogRGVmaW5lLgoJKHJlY29yZF9sYXN0X3Byb2JsZW1hdGljX2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShjdXJyZW50X2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCShtYXliZV9wcmludF90ZW1wbGF0ZV9jb250ZXh0KTogUmVtb3ZlLgoJKHByaW50X3RlbXBsYXRlX2NvbnRleHQpOiBMaWtld2lzZS4KCShjdXJyZW50X3RpbnN0X2xldmVsKTogTWFrZSBzdGF0aWMgdG8gcmVmbGVjdCBCcmVuZGFuIEtlaG9lJ3MKCWNoYW5nZSBvZiAxOTk1LTA0LTEzLgoJKHB1c2hfdGluc3RfbGV2ZWwpOiBDYWxsIHByaW50X2luc3RhbnRpYXRpb25fY29udGV4dC4KCjIwMDAtMDgtMjEgIE5peCAgPG5peEBlc3BlcmkuZGVtb24uY28udWs+CgoJKiBsYW5nLXNwZWNzLmg6IERvIG5vdCBwcm9jZXNzIC1vIG9yIHJ1biB0aGUgYXNzZW1ibGVyIGlmCgktZnN5bnRheC1vbmx5LgoKMjAwMC0wOC0yMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZGVjbC5jIChmbGFnX2hvc3RlZCwgZmxhZ19ub25pc29fZGVmYXVsdF9mb3JtYXRfYXR0cmlidXRlcyk6IE5ldwoJdmFyaWFibGVzLgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBEaXNhYmxlIGdldHRleHQgYXR0cmlidXRlcyBmb3IKCS1hbnNpLgoKMjAwMC0wOC0yMSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogbGV4LmMgKGxhbmdfaW5pdF9vcHRpb25zKTogRGVmYXVsdCBkaWFnbm9zdGljIG1lc3NhZ2UgbWF4aW11bQoJbGVuZ3RoIHRvIDgwLCB3aGVuIGxpbmUtd3JhcHBpbmcuCgoyMDAwLTA4LTIwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IENsZWFyIHRoZSBlbnRpcmUKCXZ0YmxfaW5pdF9kYXRhLiAgU3RhcnQga2VlcGluZyB0cmFjayBvZiB0aGUgZnVuY3Rpb25zIGZvciB3aGljaCB3ZQoJaGF2ZSBjcmVhdGVkIHZjYWxsIG9mZnNldHMgaGVyZS4KCShkZnNfYnVpbGRfdmNhbGxfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IFJlbW92ZS4KCShidWlsZF92Y2FsbF9vZmZzZXRfdnRibF9lbnRyaWVzKTogUmVpbXBsZW1lbnQuCgkoYWRkX3ZjYWxsX29mZnNldF92dGJsX2VudHJpZXNfcik6IE5ldyBmdW5jdGlvbi4KCShhZGRfdmNhbGxfb2Zmc2V0X3Z0YmxfZW50cmllc18xKTogTGlrZXdpc2UuICBUd2VhayBsb2dpYyBmb3IKCWNvbXB1dGluZyB3aGVuIHZjYWxsIG9mZnNldHMgYXJlIG5lY2Vzc2FyeS4KCjIwMDAtMDgtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKG1lbWJlcl9mdW5jdGlvbl9vcl9lbHNlKTogVXNlIGNwX2Vycm9yIC4uLiAlVC4KCShncm9rZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKHN0YXJ0X21ldGhvZCk6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAobWFrZV9mcmllbmRfY2xhc3MpOiBVc2UgY3BfcGVkd2FybiAuLi4gJVQuCgoyMDAwLTA4LTE4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogU2V0IENMQVNTVFlQRV9HT1RfU0VNSUNPTE9OIG9uIGNsYXNzCglUWVBFX0RFQ0xzLgoKMjAwMC0wOC0xOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoUFRSTUVNX09LX1ApOiBOZXcgbWFjcm8uCgkoaXRmX3B0cm1lbV9vayk6IE5ldyBlbnVtZXJhdGlvbiB2YWx1ZS4KCSogY2xhc3MuYyAocmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24pOiBBZGQgUFRSTUVNCglhcmd1bWVudC4gRGlhZ25vc2UgaW1wbGljaXQgcG9pbnRlciB0byBtZW1iZXIuCgkoaW5zdGFudGlhdGVfdHlwZSk6IERvbid0IGRpYWdub3NlIGltcGxpY2l0IHBvaW50ZXIgdG8gbWVtYmVyCgloZXJlLiBQYXNzIGl0Zl9wdHJtZW1fb2sgaWYgb2suIEFkanVzdCBjYWxscyB0bwoJcmVzb2x2ZV9hZGRyZXNzX29mX292ZXJsb2FkZWRfZnVuY3Rpb24uCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IFNldCBQVFJNRU1fT0tfUC4KCShyZXNvbHZlX29mZnNldF9yZWYpOiBEb24ndCBkaWFnbm9zZSBpbXBsaWNpdCBwb2ludGVyIHRvIG1lbWJlciBoZXJlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3BhcmVudGhlc2l6ZWRfZXhwcik6IENsZWFyIE9GRlNFVF9SRUZzIGhlcmUuCgkqIHR5cGVjay5jIChidWlsZF94X3VuYXJ5X29wKTogQ2FsY3VsYXRlIFBUUk1FTV9PS19QLgoJKGJ1aWxkX3VuYXJ5X29wKTogRGVhbCB3aXRoIHNpbmdsZSBub24tc3RhdGljIG1lbWJlciBpbgoJbWljcm9zb2Z0LWxhbmQuCgoyMDAwLTA4LTE4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoYXJnX2Fzc29jX3R5cGUpOiBDb3BlIHdpdGggVFlQRU5BTUVfVFlQRS4KCjIwMDAtMDgtMTggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGVudW1fbmFtZV9zdHJpbmcpOiBSZW1vdmUgcHJvdG90eXBlLgoJKHJlcG9ydF9jYXNlX2Vycm9yKTogUmVtb3ZlIHByb3RvdHlwZS4KCSogY3AvdHlwZWNrMi5jIChlbnVtX25hbWVfc3RyaW5nKTogUmVtb3ZlLgoJKHJlcG9ydF9jYXNlX2Vycm9yKTogUmVtb3ZlLgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBEZWFsIHdpdGggZW51bSB2YWx1ZXMgZGlyZWN0bHkuCglDb3JyZWN0bHkgbmVnYXRlIGludGVnZXIgY29uc3RhbnQuCgoyMDAwLTA4LTE3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogaW5jL2N4eGFiaS5oIChfX2N4YV92ZWNfbmV3MiwgX19jeGFfdmVjX25ldzMpOiBEZWNsYXJlLgoJKF9fY3hhX3ZlY19kZWxldGUyLCBfX2N4YV92ZWNfZGVsZXRlMyk6IERlY2xhcmUuCgkqIHZlYy5jYyAoX19jeGFfdmVjX25ldzIsIF9fY3hhX3ZlY19uZXczKTogSW1wbGVtZW50LgoJKF9fY3hhX3ZlY19kZWxldGUyLCBfX2N4YV92ZWNfZGVsZXRlMyk6IEltcGxlbWVudC4KCShfX2N4YV92ZWNfbmV3KTogVXNlIF9fY3hhX3ZlY19uZXcyLgoJKF9fY3hhX3ZlY19kZWxldGUpOiBVc2UgX19jeGFfdmVjX2RlbGV0ZTIuCgoyMDAwLTA4LTE3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmVjLmNjIChfX2N4YV92ZWNfbmV3KTogU2V0ICJDIiBsaW5rYWdlLgoJKF9fY3hhX3ZlY19jdG9yKTogTGlrZXdpc2UuCgkoX19jeGFfdmVjX2NjdG9yKTogTGlrZXdpc2UuCgkoX19jeGFfdmVjX2R0b3IpOiBMaWtld2lzZS4KCShfX2N4YV92ZWNfZGVsZXRlKTogTGlrZXdpc2UuCgkqIGluYy9jeHhhYmkuaCAoX19jeGFfdmVjX25ldyk6IFNldCAiQyIgbGlua2FnZS4KCShfX2N4YV92ZWNfY3Rvcik6IExpa2V3aXNlLgoJKF9fY3hhX3ZlY19jY3Rvcik6IExpa2V3aXNlLgoJKF9fY3hhX3ZlY19kdG9yKTogTGlrZXdpc2UuCgkoX19jeGFfdmVjX2RlbGV0ZSk6IExpa2V3aXNlLgoKMjAwMC0wOC0xNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGluc3RhbnRpYXRlX3R5cGUpOiBSZWluc3RhdGUgbG9jYWwgdmFyaWFibGUKCWRlbGV0ZWQgaW4gcHJldmlvdXMgY2hhbmdlLgoKCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IFBhc3MgaXRmX2NvbXBsYWluLCBub3QKCWl0Zl9ub19hdHRyaWJ1dGVzLgoKMjAwMC0wOC0xNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoaW5zdGFudGlhdGVfdHlwZV9mbGFncyk6IE5ldyBlbnVtZXJhdGlvbi4KCShpbnN0YW50aWF0ZV90eXBlKTogQ2hhbmdlIHBhcmFtZXRlci4KCSogY2xhc3MuYyAoaW5zdGFudGlhdGVfdHlwZSk6IEFkanVzdCBwcm90b3R5cGUuIEFkanVzdC4KCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogQWRqdXN0IGluc3RhbnRpYXRlX3R5cGUgY2FsbC4KCShyZWZlcmVuY2VfYmluZGluZyk6IExpa2V3aXNlLgoJKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogTGlrZXdpc2UuCgkoY29udmVydF9saWtlX3JlYWwpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlcik6IExpa2V3aXNlLgoJKGNvbnZlcnRfdG9fcmVmZXJlbmNlKTogTGlrZXdpc2UuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfcHRybWVtZnVuYyk6IExpa2V3aXNlLgoJKGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQpOiBMaWtld2lzZS4KCjIwMDAtMDgtMTcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENQVFJfQUdHUl9UQUcpOiBOZXcgZ2xvYmFsIHRyZWUgbm9kZS4KCShjdXJyZW50X2FnZ3IpOiBEZWZpbmUuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBNYWtlIHN1cmUgYSBmcmllbmQgY2xhc3MgaXMgYW4KCWVsYWJvcmF0ZWQgdHlwZSBzcGVjaWZpZXIuCgkqIHBhcnNlLnkgKGN1cnJlbnRfYWdncik6IFJlbW92ZSBzdGF0aWMgZGVmaW5pdGlvbi4KCShjcF9wYXJzZV9pbml0KTogQWRqdXN0LgoJKHN0cnVjdHNwKTogQ2xlYXIgYW5kIHJlc3RvcmUgY3VycmVudF9hZ2dyLgoJKGNvbXBvbmVudF9kZWNsX2xpc3QpOiBDbGVhciBjdXJyZW50X2FnZ3IuCgoJKiBlcnJvci5jIChkdW1wX3R5cGUsIGNhc2UgVFlQRU5BTUVfVFlQRSk6IERvbid0IGVtaXQgdGhlCglhZ2dyZWdhdGUgdGFnIG9uIHRoZSB0eXBlbmFtZSdzIGNvbnRleHQuCgoJKiBwdC5jICh0c3Vic3RfZnJpZW5kX2NsYXNzKTogUmV0dXJuIGVycm9yX21hcmtfbm9kZSwgaWYKCXBhcm1zIGJlY29tZXMgTlVMTC4KCShpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IElnbm9yZSBlcnJvcl9tYXJrX25vZGUgZnJpZW5kIHR5cGVzLgoKMjAwMC0wOC0xNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGN2dC5jICh3YXJuX3JlZl9iaW5kaW5nKTogTmV3IHN0YXRpYyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZiAuLi4KCShjb252ZXJ0X3RvX3JlZmVyZW5jZSk6IC4uLiBoZXJlLiBVc2UgaXQuCgoyMDAwLTA4LTExICBLcmlhbmcgTGVyZHN1d2FuYWtpaiA8bGVyZHN1d2FAc2NmLWZzLnVzYy5lZHU+CgoJKiBwYXJzZS55ICh0ZW1wbGF0ZV9hcmcpOiBBZGQgcnVsZSBmb3IgdGVtcGxhdGUgcXVhbGlmaWVkIHdpdGgKCWdsb2JhbCBzY29wZS4KCjIwMDAtMDgtMTEgIFRoZW9kb3JlIFBhcGFkb3BvdWxvIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBkZWNsMi5jIChhZGRfZnVuY3Rpb24pOiBSZW9yZ2FuaXplLgoJKGFyZ19hc3NvYyk6IERvIG5vdCBjb25zaWRlciBmdW5jdGlvbiB0ZW1wbGF0ZSBkZWNscy4KCjIwMDAtMDgtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZGVjbC5jIChsb29rdXBfbmFtZV9yZWFsKTogRG9uJ3QgZm9yZ2V0IHRoZSBUWVBFTkFNRV9UWVBFIHdlJ3JlCglsb29raW5nIGluc2lkZS4KCjIwMDAtMDgtMTEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHJlc29sdmVfc2NvcGVfdG9fbmFtZSk6IFJlbW92ZSB1bnVzZWQgcHJvdG90eXBlLgoJKGxvb2t1cF9uZXN0ZWRfdGFnKTogTGlrZXdpc2UuCgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBGaXggY29tbWVudCB0byByZWZsZWN0IG1hbnkgdHlwZXMgb2YgX0RFQ0xzCgljYW4gYmUgcHJvZHVjZWQuCgoyMDAwLTA4LTExICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2UueSAobmFtZWRfY29tcGxleF9jbGFzc19oZWFkX3NhbnNfYmFzZXR5cGUpOiBSZW1vdmUKCWFsd2F5cyB0cnVlIGlmLgoKMjAwMC0wOC0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGJ1aWxkX2V4cHJfZnJvbV90cmVlLCBjYXNlIE1FVEhPRF9DQUxMX0VYUFIpOiBCdWlsZAoJZXhwbGljaXQgVEVNUExBVEVfSURfRVhQUiBhcmdzLgoJKGJ1aWxkX2V4cHJfZnJvbV90cmVlLCBjYXNlIENBTExfRVhQUik6IExpa2V3aXNlLgoKMjAwMC0wOC0xMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoY2hlY2tfdGFnX2RlY2wpOiBEaWFnbm9zZSB0eXBlbmFtZSdzIHdoaWNoIGRvbid0CglkZWNsYXJlIGFueXRoaW5nLgoKMjAwMC0wOC0xMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluaXQuYyAoYnVpbGRfYWdncl9pbml0KTogUmVqZWN0IGJvZ3VzIGFycmF5IGluaXRpYWxpemVycwoJZWFybHkuCgoyMDAwLTA4LTA5ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3RfMSk6IFNldCAiQyIgbGlua2FnZSBmb3IgbmV3IGFiaQoJcnVudGltZS4KCSogY3AvdGluZm8uY2MgKF9fZHluYW1pY19jYXN0KTogTGlrZXdpc2UuCgkqIGNwL2luYy9jeHhhYmkuaCAoX19keW5hbWljX2Nhc3QpOiBMaWtld2lzZS4KCjIwMDAtMDgtMDkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjdnQuYyAoY29udmVydF90b19wb2ludGVyX2ZvcmNlKTogRml4IGVycm9yIG1lc3NhZ2Ugd2hlbgoJYXR0ZW1wdGluZyB0byBjYXN0IGZyb20gYW1iaWd1b3VzIGJhc2UuCgoyMDAwLTA4LTA4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9hZ2dyX3R5cGUpOiBCYWlsIGlmIGNyZWF0aW5nIHRoZSBhcmd2ZWMgZmFpbHMuCgkodHN1YnN0X3RlbXBsYXRlX2FyZ192ZWN0b3IpOiBMaWtld2lzZS4KCgkqIGRlY2wyLmMgKGJ1aWxkX2Fub25fdW5pb25fdmFycyk6IENob29zZSB0aGUgbGFyZ2VzdCBmaWVsZDsgZG9uJ3QKCWFzc3VtZSB0aGF0IG9uZSB3aWxsIGJlIGFzIGxhcmdlIGFzIHRoZSB1bmlvbi4KCjIwMDAtMDgtMDcgIEthenUgSGlyYXRhICA8a2F6dUBoeGkuY29tPgoKCSogY3AtdHJlZS5oIChDTEFTU1RZUEVfSEFTX1BSSU1BUllfQkFTRV9QKTogRml4IGEgY29tbWVudCB0eXBvLgoJKiBkZWNsLmMgKHBvcF9sYWJlbHMpOiBMaWtld2lzZS4KCjIwMDAtMDgtMDQgIEplZmZyZXkgT2xkaGFtICA8b2xkaGFtQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpbmMvY3h4YWJpLmggKF9fcGJhc2VfdHlwZV9pbmZvKTogQ2hhbmdlZCBtZW1iZXIgbmFtZXMgdG8gbWF0Y2gKCXNwZWNpZmljYXRpb25zLgoJKF9fcG9pbnRlcl90b19tZW1iZXJfdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoX19iYXNlX2NsYXNzX2luZm8pOiBMaWtld2lzZS4KCShfX2NsYXNzX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKF9fc2lfY2xhc3NfdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkqIHRpbmZvLmNjIChfX3NpX2NsYXNzX3R5cGVfaW5mbzo6X19kb19maW5kX3B1YmxpY19zcmMpOgoJQ2hhbmdlZCBtZW1iZXIgbmFtZXMgdG8gbWF0Y2ggc3BlY2lmaWNhdGlvbnMuCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvOjpfX2RvX2ZpbmRfcHVibGljX3NyYyk6IExpa2V3aXNlLgoJKF9fc2lfY2xhc3NfdHlwZV9pbmZvOjpfX2RvX2R5bmNhc3QpOiBMaWtld2lzZS4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86Ol9fZG9fZHluY2FzdCk6IExpa2V3aXNlLgoJKF9fc2lfY2xhc3NfdHlwZV9pbmZvOjpfX2RvX3VwY2FzdCk6IExpa2V3aXNlLgoJKF9fdm1pX2NsYXNzX3R5cGVfaW5mbzo6X19kb191cGNhc3QpOiBMaWtld2lzZS4KCSogdGluZm8yLmNjIChfX3BiYXNlX3R5cGVfaW5mbzo6X19kb19jYXRjaCk6IExpa2V3aXNlLgoJKF9fcGJhc2VfdHlwZV9pbmZvOjpfX3BvaW50ZXJfY2F0Y2gpOiBMaWtld2lzZS4KCShfX3BvaW50ZXJfdHlwZV9pbmZvOjpfX3BvaW50ZXJfY2F0Y2gpOiBMaWtld2lzZS4KCShfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mbzo6X19wb2ludGVyX2NhdGNoKTogTGlrZXdpc2UuCgoyMDAwLTA4LTA0ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBNYWtlLWxhbmcuaW4gKGNjMXBsdXMpOiBEZXBlbmQgb24gJChCQUNLRU5EKSwgbm90IHN0YW1wLW9iamxpc3QuCgkqIE1ha2VmaWxlLmluOiBBZGQgQ19PQkpTLCBCQUNLRU5EOyBkZWxldGUgT0JKUywgT0JKREVQUy4KCShjYzFwbHVzKTogTGluayB3aXRoICQoQkFDS0VORCkgYW5kICQoQ19PQkpTKS4KCjIwMDAtMDgtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGFkZF9tZXRob2QpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogUmVtb3ZlIEZJRUxEUyBwYXJhbWV0ZXIuICBBZGQgRVJST1JfUC4KCURvbid0IGRvdWJsZSB0aGUgc2l6ZSBvZiB0aGUgbWV0aG9kIHZlY3RvciBpbiB0aGUgZXJyb3IgY2FzZS4KCShoYW5kbGVfdXNpbmdfZGVjbCk6IEFkanVzdCBjYWxsIHRvIGFkZF9tZXRob2QuCgkoYWRkX2ltcGxpY2l0bHlfZGVjbGFyZWRfbWVtYmVycyk6IExpa2V3aXNlLgoJKGNsb25lX2Z1bmN0aW9uX2RlY2wpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3Nmbik6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX21lbWJlcl9kZWNsYXJhdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wOC0wNCAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZGVjbC5jIChmbGFnX2lzb2M5NCk6IE5ldyB2YXJpYWJsZS4KCjIwMDAtMDgtMDIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogcHQuYyAoZG9fdHlwZV9pbnN0YW50aWF0aW9uKTogQWRkIGNvbXBsYWluIHBhcm07IGRvbid0IGNvbXBsYWluCglpZiBjYWxsZWQgcmVjdXJzaXZlbHkuCgkqIGNwLXRyZWUuaCwgcGFyc2UueTogQWRqdXN0LgoKMjAwMC0wOC0wMiAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZGVjbDIuYzogU2lsZW50bHkgaWdub3JlIC1Xc3RyaWN0LXByb3RvdHlwZXM7IHdhcm4gYWJvdXQKCS1Xbm8tc3RyaWN0LXByb3RvdHlwZXMuCgoJKiBnKytzcGVjLmM6IEFkanVzdCB0eXBlIG9mIHNlY29uZCBhcmd1bWVudCB0bwoJbGFuZ19zcGVjaWZpY19kcml2ZXIsIGFuZCB1cGRhdGUgY29kZSBhcyBuZWNlc3NhcnkuCgoJKiBjcC10cmVlLmg6IERvbid0IHByb3RvdHlwZSBtaW5fcHJlY2lzaW9uIGhlcmUuCgkobXlfZnJpZW5kbHlfYXNzZXJ0KTogQ2FzdCBleHByZXNzaW9uIHRvIHZvaWQuCgkqIHNlbWFudGljcy5jIChkb19wb3BsZXZlbCk6IEluaXRpYWxpemUgc2NvcGVfc3RtdHMuCgoyMDAwLTA4LTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChERUNMX05FRURFRF9QKTogVHdlYWsuCgoyMDAwLTA3LTI4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGxhbmctc3BlY3MuaDogVXNlICVpIGluIHJ1bGUgZm9yIC5paSBmaWxlcy4KCjIwMDAtMDctMzEgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGxhbmctc3BlY3MuaDogUmVuYW1lIGNwcCB0byBjcHAwIGFuZC9vciB0cmFkY3BwIHRvIHRyYWRjcHAwLgoKMjAwMC0wNy0zMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglBbGxvdyBpbmRpcmVjdCBwcmltYXJ5IGJhc2VzLgoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX3R5cGUpOiBSZW1vdmUgdmZpZWxkX3BhcmVudC4gIEFkZAoJcHJpbWFyeV9iYXNlLgoJKENMQVNTVFlQRV9WRklFTERfUEFSRU5UKTogUmVtb3ZlLgoJKENMQVNTVFlQRV9QUklNQVJZX0JJTkZPKTogUmVpbXBsZW1lbnQuCgkoQklORk9fUFJJTUFSWV9CSU5GTyk6IFJlbW92ZS4KCShDTEFTU1RZUEVfSEFTX1BSSU1BUllfQkFTRV9QKTogUmVpbXBsZW1lbnQuCgkoQklORk9fVkJBU0VfUFJJTUFSWV9QKTogTGlrZXdpc2UuCgkoQklORk9fUFJJTUFSWV9CQVNFX09GKTogTmV3IG1hY3JvLgoJKEJJTkZPX0lORElSRUNUX1BSSU1BUllfUCk6IExpa2V3aXNlLgoJKGdldF9wcmltYXJ5X2JpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKGxhbmdfbWFya190cmVlKTogTWFrZSBsYW5nX3R5cGU6OnByaW1hcnlfYmFzZS4KCSogY2xhc3MuYyAodmNhbGxfb2Zmc2V0X2RhdGFfcyk6IFJlbmFtZSB0byAuLi4KCSh2dGJsX2luaXRfZGF0YV9zKTogLi4uIHRoaXMuICBSZW5hbWUgcHJpbWFyeV9wIHRvIHByaW1hcnlfdnRibF9wLAoJYW5kIGFkZCBjdG9yX3Z0YmxfcC4KCShnZXRfZGVyaXZlZF9vZmZzZXQpOiBVc2UgZ2V0X3ByaW1hcnlfYmluZm8uCgkoZGZzX21hcmtfcHJpbWFyeV9iYXNlcyk6IEFkanVzdCBoYW5kbGluZyBvZiB2aXJ0dWFsIHByaW1hcnkKCWJhc2VzLgoJKG1hcmtfcHJpbWFyeV9iYXNlcyk6IExpa2V3aXNlLgoJKHNldF9wcmltYXJ5X2Jhc2UpOiBUYWtlIGEgYmluZm8sIG5vdCBhbiBpbnRlZ2VyLCBhcyBhCglyZXByZXNlbnRhdGlvbiBvZiB0aGUgcHJpbWFyeSBiYXNlLgoJKGluZGlyZWN0X3ByaW1hcnlfYmFzZV9wKTogUmVtb3ZlLgoJKGRldGVybWluZV9wcmltYXJ5X2Jhc2UpOiBBZGp1c3QgZm9yIGluZGlyZWN0IHByaW1hcnkgYmFzZXMuCgkoZGZzX2ZpbmRfZmluYWxfb3ZlcnJpZGVyKTogRml4IHR5cG8gaW4gY29tZW50LgoJKHVwZGF0ZV92dGFibGVfZW50cnlfZm9yX2ZuKTogVXNlIGdldF9wcmltYXJ5X2JpbmZvLgoJKGxheW91dF9ub25lbXB0eV9iYXNlX29yX2ZpZWxkKTogVHdlYWsuCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBBZGp1c3QgZm9yIG5ldyBwcmltYXJ5IGJhc2Ugc2VtYW50aWNzLgoJKGRmc19wcm9wYWdhdGVfYmluZm9fb2Zmc2V0cyk6IFJlbW92ZS4KCShwcm9wYWdhdGVfYmluZm9fb2Zmc2V0cyk6IFJld3JpdGUuCgkoZGZzX3NldF9vZmZzZXRfZm9yX3NoYXJlZF92YmFzZXMpOiBSZW1vdmUuCgkobGF5b3V0X3ZpcnR1YWxfYmFzZXMpOiBEb24ndCB1c2UgaXQuCgkobGF5b3V0X2NsYXNzX3R5cGUpOiBTZXQgQ0xBU1NUWVBFX1NJWkUgY29ycmVjdGx5IHVuZGVyIHRoZSBuZXcKCUFCSS4KCShmaW5pc2hfc3RydWN0XzEpOiBTZXQgQ0xBU1NUWVBFX1BSSU1BUllfQklORk8sIG5vdAoJQ0xBU1NUWVBFX1ZGSUVMRF9QQVJFTlQuCgkoZGZzX2dldF9wcmltYXJ5X2JpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGdldF9wcmltYXJ5X2JpbmZvKTogTGlrZXdpc2UuCgkoZHVtcF9jbGFzc19oaWVyYXJjaHlfcik6IFR3ZWFrIHByaW50aW5nIG9mIHByaW1hcnkgYmFzZXMuCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IEZpeCB0eXBvIGluIGNvbW1lbnRzLiAgVXNlCgl2dGJsX2luaXRfZGF0YS4KCShidWlsZF92Y2FsbF9hbmRfdmJhc2VfdnRibF9lbnRyaWVzKTogTGlrZXdpc2UuCgkoYnVpbGRfdmJhZXNfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IExpa2V3aXNlLgoJKGRmc19idWlsZF92Y2FsbF9vZmZzZXRfdnRibF9lbnRyaWVzKTogQWRqdXN0IHNldHRpbmcgb2YKCUJWX1ZDQUxMX0lOREVYIHRvIGhhbmRsZSBpbmRpcmVjdCBwcmltYXJ5IGJhc2VzLgoJKGJ1aWxkX3ZjYWxsX29mZnNldF92dGJsX2VudHJpZXMpOiBVc2UgdnRibF9pbml0X2RhdGEuCgkoYnVpbGRfcnR0aV92dGJsX2VudHJpZXMpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGdldF9zaGFyZWRfdmJhc2VfaWZfbm90X3ByaW1hcnkpOiBUd2Vhay4KCShmaW5kX3ZiYXNlX2luc3RhbmNlKTogTGlrZXdpc2UuCgkoYmluZm9fZm9yX3Z0YWJsZSk6IFNpbXBsaWZ5LgoJKiB0cmVlLmMgKHVuc2hhcmVfYmFzZV9iaW5mb3MpOiBDbGVhciBCSU5GT19QUklNQVJZX0JBU0VfT0YuCgkobWFrZV9iaW5mbyk6IE1ha2UgaXQgaGF2ZSAxMSBlbnRyaWVzLgoKMjAwMC0wNy0zMCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1hbmdsZS5jIChERUNMX1RFTVBMQVRFX0lEX1ApOiBSZW1vdmUuCgkoQ0xBU1NUWUVQX1RFTVBMQVRFX0lEX1ApOiBDaGVjayB0ZW1wbGF0ZSBpbmZvLCBhbmQgY29udGV4dCB3aGVuCglhc2NlcnRhaW5pbmcgcHJpbWFyeW5lc3MuCgkoRyk6IFJlbW92ZSB0ZW1wbGF0ZV9hcmdzLgoJKGRlY2xfaXNfdGVtcGxhdGVfaWQpOiBOZXcgZnVuY3Rpb24uCgkod3JpdGVfZW5jb2RpbmcpOiBVc2UgZGVjbF9pc190ZW1wbGF0ZV9pZC4KCSh3cml0ZV9uYW1lKTogTGlrZXdpc2UuICBIYW5kbGUgdHlwZV9kZWNscy4gIEdldCBtYWluIHZhcmlhbnQgb2YKCXR5cGUgZGVjbHMuCgkod3JpdGVfbmVzdGVkX25hbWUpOiBMaWtld2lzZS4KCSh3cml0ZV9wcmVmaXgpOiBMaWtld2lzZS4KCSh3cml0ZV90ZW1wbGF0ZV9wcmVmaXgpOiBMaWtld2lzZS4KCSh3cml0ZV9zcGVjaWFsX25hbWVfY29uc3RydWN0b3IpOiBSZW1vdmUgZGVmdW5jdCBwcm9kdWN0aW9uIGZyb20KCWNvbW1lbnQuCgkod3JpdGVfYmFyZV9mdW5jdGlvbl90eXBlKTogUmVtb3ZlIGNvbW1lbnQgYWJvdXQgYWJzZW50IHBhcmFtZXRlci4KCSh3cml0ZV90ZW1wbGF0ZV90ZW1wbGF0ZV9hcmcpOiBBZGQgbWlzc2luZyBncmFtbWFyIHByb2R1Y3Rpb24gdG8KCWNvbW1lbnQuCgoyMDAwLTA3LTI3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogSWYgY29tbW9uX3R5cGUgcHJvZHVjZXMgYSBub24tdHlwZWRlZgoJdHlwZSBmb3IgYSB0eXBlZGVmLCBqdXN0IHVzZSB0aGUgb2xkIHR5cGUuCgoyMDAwLTA3LTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChmdW5jdGlvbl9kZXB0aCk6IERlY2xhcmUuCgkodmVyaWZ5X3N0bXRfdHJlZSk6IExpa2V3aXNlLgoJKGZpbmRfdHJlZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGZ1bmN0aW9uX2RlcHRoKTogR2l2ZSBpdCBleHRlcm5hbCBsaW5rYWdlLgoJKiBvcHRpbWl6ZS5jIChvcHRpbWl6ZV9mdW5jdGlvbik6IEluY3JlbWVudCBhbmQgZGVjcmVtZW50IGl0LgoJKiB0cmVlLmMgKHZlcmlmeV9zdG10X3RyZWVfcik6IE5ldyBmdW5jdGlvbi4KCSh2ZXJpZnlfc3RtdF90cmVlKTogTGlrZXdpc2UuCgkoZmluZF90cmVlX3IpOiBMaWtld2lzZS4KCShmaW5kX3RyZWUpOiBMaWtld2lzZS4KCjIwMDAtMDctMjcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogcHQuYyAoZm9yX2VhY2hfdGVtcGxhdGVfcGFybV9yLCBjYXNlIFJFQ09SRF9UWVBFKTogVXNlCglUWVBFX1BUUk1FTUZVTkNfUC4KCSogY3AtdHJlZS5oIChUWVBFX1RFTVBMQVRFX0lORk8pOiBDaGVjayBmb3IgVFlQRV9MQU5HX1NQRUNJRklDLgoKMjAwMC0wNy0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfY2xlYW51cF9mbik6IE1hcmsgdGhlIGZ1bmN0aW9uIGFzIGBpbmxpbmUnLgoJKiBkZWNsMi5jIChnZXRfZ3VhcmQpOiBDYWxsIGNwX2ZpbmlzaF9kZWNsLCBub3QKCXJlc3Rfb2ZfZGVjbF9jb21waWxhdGlvbiwgZm9yIGxvY2FsIGd1YXJkcy4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoKV2VkIEp1bCAyNiAxNTowNTo1MSBDRVNUIDIwMDAJTWFyYyBFc3BpZSA8ZXNwaWVAY3ZzLm9wZW5ic2Qub3JnPgoKCSogcGFyc2UueTogIEFkZCBtaXNzaW5nICc7Jy4KCjIwMDAtMDctMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZS55IChlbXB0eV9wYXJtcyk6IFVzZSBgKCknLCBub3QgYCguLi4pJywgd2hlbiBpbiB0aGUgc2NvcGUKCW9mIGBleHRlcm4gIkMrKyInLgoKMjAwMC0wNy0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglLaWxsIHN0cmljdF9wcm90b3R5cGUuIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHkgZm9yCglub24gTk9fSU1QTElDSVRfRVhURVJOX0Mgc3lzdGVtcy4KCSogY3AtdHJlZS5oIChmbGFnX3N0cmljdF9wcm90b3R5cGUpOiBSZW1vdmUuCgkoc3RyaWN0X3Byb3RvdHlwZSk6IFJlbW92ZS4KCShzdHJpY3RfcHJvdG90eXBlc19sYW5nX2MsIHN0cmljdF9wcm90b3R5cGVzX2xhbmdfY3BsdXNwbHVzKTogUmVtb3ZlLgoJKiBkZWNsLmMgKG1heWJlX3B1c2hfdG9fdG9wX2xldmVsKTogQWRqdXN0LgoJKHBvcF9mcm9tX3RvcF9sZXZlbCk6IEFkanVzdC4KCShkZWNsc19tYXRjaCk6IE9ubHkgYWxsb3cgc2xvcHB5IHBhcm0gbWF0Y2hpbmcgZm9yIGFuY2llbnQKCXN5c3RlbSBoZWFkZXJzLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogQWRqdXN0LgoJKGdyb2tkZWNsYXJhdG9yKTogQWRqdXN0LgoJKiBkZWNsMi5jIChmbGFnX3N0cmljdF9wcm90b3R5cGUpOiBSZW1vdmUuCgkoc3RyaWN0X3Byb3RvdHlwZSk6IFJlbW92ZS4KCShzdHJpY3RfcHJvdG90eXBlc19sYW5nX2MsIHN0cmljdF9wcm90b3R5cGVzX2xhbmdfY3BsdXNwbHVzKTogUmVtb3ZlLgoJKGxhbmdfZl9vcHRpb25zKTogUmVtb3ZlICJzdHJpY3QtcHJvdG90eXBlIi4KCSh1bnN1cHBvcnRlZC1vcHRpb25zKTogQWRkICJzdHJpY3QtcHJvdG90eXBlIi4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBBZGp1c3QuCgkoZG9fc2NvcGVkX2lkKTogQWRqdXN0LgoJKiBwYXJzZS55IChlbXB0eV9wYXJtcyk6IEFkanVzdC4KCSogY2xhc3MuYyAocHVzaF9sYW5nX2NvbnRleHQpOiBBZGp1c3QuCgkocG9wX2xhbmdfY29udGV4dCk6IEFkanVzdC4KCSogdHlwZWNrLmMgKGNvbXBfdGFyZ2V0X3Bhcm1zKTogQWRqdXN0LgoKMjAwMC0wNy0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAocG9wbGV2ZWwpOiBEZWFsIHdpdGggYW5vbnltb3VzIHZhcmlhYmxlcyBhdCBmb3Igc2NvcGUuCgkobWF5YmVfaW5qZWN0X2Zvcl9zY29wZV92YXIpOiBMaWtld2lzZS4KCjIwMDAtMDctMjUgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGRlY2wuYzogUmVtb3ZlIGFsbCBzaWduYWwgaGFuZGxpbmcgY29kZSwgbm93IGRvbmUgaW4gdG9wbGV2LmMuCgoyMDAwLTA3LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChtYWtlX3J0bF9mb3Jfbm9ubG9jYWxfZGVjbCk6IFJld29yay4KCgkqIHB0LmMgKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IEVuc3VyZSB0aGF0IFRZUEVfQ09OVEVYVCBpcyBzZXQKCWNvcnJlY3RseS4KCjIwMDAtMDctMjAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwLXRyZWUuaDogVXNlIF9fRlVOQ1RJT05fXyBub3QgX19QUkVUVFlfRlVOQ1RJT05fXy4KCURlZmluZSBteV9mcmllbmRseV9hc3NlcnQgYW5kIG15X2ZyaWVuZGx5X2Fib3J0IGFzIG1hY3JvcwoJd2hpY2ggbWF5IGNhbGwgZnJpZW5kbHlfYWJvcnQuICBQcm90b3R5cGUgZnJpZW5kbHkgYWJvcnQsIG5vdAoJbXlfZnJpZW5kbHlfYWJvcnQgb3IgbXlfZnJpZW5kbHlfYXNzZXJ0LgoJKiBkZWNsLmMgKHNpZ25hbF9jYXRjaCk6IFJlcG9ydCB0aGUgc2lnbmFsIGNhdWdodCBpbiB0aGUgZXJyb3IKCW1lc3NhZ2UuICBDYWxsIGZhdGFsIGRpcmVjdGx5LgoJKiB0eXBlY2syLmMgKGFjaywgbXlfZnJpZW5kbHlfYXNzZXJ0KTogRGVsZXRlLgoJKG15X2ZyaWVuZGx5X2Fib3J0KTogUmVuYW1lIHRvIGZyaWVuZGx5X2Fib3J0LiAgRXhwZWN0IGZpbGUsCglsaW5lLCBhbmQgZnVuY3Rpb24gcGFyYW1ldGVycy4gIFJlcG9ydCB0aGUgYWJvcnQgY29kZSwgdGhlbgoJY2FsbCBmYW5jeV9hYm9ydC4gIERvIG5vdCBtYXNrIGFuIGFib3J0IGlmIGVycm9ycyBoYXZlCglhbHJlYWR5IG9jY3VycmVkLgoKMjAwMC0wNy0xOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHR5cGVjay5jIChjb21wX3RhcmdldF9wYXJtcyk6IFJlbW92ZSBvYnNvbGV0ZSBwYXJhbWV0ZXIuCgkoY29tcF90YXJnZXRfdHlwZXMpOiBBZGp1c3QuCgoyMDAwLTA3LTE3ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogTmV2ZXIgc2V0IFRSRUVfVVNFRC4KCSogY2FsbC5jIChidWlsZF9jYWxsKTogRG9uJ3QgYWJvcnQgb24gY2FsbHMgdG8gbGlicmFyeSBmdW5jdGlvbnMKCXRoYXQgaGF2ZSBiZWVuIGRlY2xhcmVkIG5vcm1hbGx5LgoKCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IEZpeCBncmFtbWFyIGluIHdhcm5pbmcuCgoJKiBleGNlcHRpb24uY2MgKF9fZWhfZnJlZSk6IEZpeCBwcm90b3R5cGUuCgoJKiBkZWNsMi5jIChmaW5pc2hfZGVjbF9wYXJzaW5nKTogSGFuZGxlIFRFTVBMQVRFX0lEX0VYUFIuCgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogSGFuZGxlIHNlZWluZyBhbiBPVkVSTE9BRCBpbgoJSURFTlRJRklFUl9OQU1FU1BBQ0VfVkFMVUUuCgoyMDAwLTA3LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChUSFVOS19WQ0FMTF9PRkZTRVQpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCSogbWV0aG9kLmMgKHVzZV90aHVuayk6IENvcnJlY3QgaGFuZGxpbmcgb2YgdmNhbGwgb2Zmc2V0cy4KCjIwMDAtMDctMTQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIC5jdnNpZ25vcmU6IHBhcnNlLmggYW5kIHBhcnNlLmMgaGF2ZSBubyBjcC0gcHJlZml4LgoKMjAwMC0wNy0xMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIC5jdnNpZ25vcmU6IE5ldyBmaWxlLgoKMjAwMC0wNy0xMyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogbGFuZy1zcGVjcy5oOiBVc2UgdGhlIG5ldyBuYW1lZCBzcGVjcy4gIFJlbW92ZSB1bm5lY2Vzc2FyeSBicmFjZXMuCgoyMDAwLTA3LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZWZpbGUuaW4gKCQoUEFSU0VfSCkpOiBEZXBlbmQgZGlyZWN0bHkgb24gcGFyc2UueS4KCSogcGFyc2UuYzogUmVtb3ZlLgoJKiBwYXJzZS5oOiBMaWtld2lzZS4KCjIwMDAtMDctMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfY2xhc3NfdHlwZSk6IEFkZCBwb2ludGVycyB0byB2aXJ0dWFsIGJhc2VzIGFmdGVyCgliYXNlIGNsYXNzZXMgdW5kZXIgdGhlIG9sZCBBQkkuCgoyMDAwLTA3LTEwICBCZW5qYW1pbiBDaGVsZiAgPGNoZWxmQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX2Zvcl9zdG10KTogUmVtb3ZlIGNhbGwgdG8gZW1pdF9saW5lX25vdGUuCgkoZmluaXNoX2NvbnRpbnVlX3N0bXQpOiBMaWtld2lzZS4KCShiZWdpbl9mb3Jfc3RtdCk6IFJlbW92ZSBjYWxsIHRvIG5vdGVfbGV2ZWxfZm9yX2Zvci4KCShmaW5pc2hfZ290b19zdG10KTogQ2hhbmdlIGNhbGwgZnJvbSBidWlsZF9taW5fbnQKCXRvIGJ1aWxkX3N0bXQuCgkoZmluaXNoX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKGJlZ2luX2lmX3N0bXQpOiBMaWtld2lzZS4KCShiZWdpbl93aGlsZV9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfcmV0dXJuX3N0bXQpOiBMaWtld2lzZS4KCShiZWdpbl9mb3Jfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3Jfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9icmVha19zdG10KTogTGlrZXdpc2UuCgkoYmVnaW5fc3dpdGNoX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfY2FzZV9sYWJlbCk6IExpa2V3aXNlLgoJKGdlbnJ0bF90cnlfYmxvY2spOiBMaWtld2lzZS4KCShiZWdpbl90cnlfYmxvY2spOiBMaWtld2lzZS4KCShiZWdpbl9oYW5kbGVyKTogTGlrZXdpc2UuCgkoYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9hc21fc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9sYWJlbF9zdG10KTogTGlrZXdpc2UuCgkoYWRkX2RlY2xfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdWJvYmplY3QpOiBMaWtld2lzZS4KCShmaW5pc2hfZGVjbF9jbGVhbnVwKTogTGlrZXdpc2UuCgkoZmluaXNoX25hbWVkX3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgoJKHNldHVwX3Z0YmxfcHRyKTogTGlrZXdpc2UuCgkoYWRkX3Njb3BlX3N0bXQpOiBMaWtld2lzZS4KCSogZGVjbC5jIChmaW5pc2hfY29uc3RydWN0b3JfYm9keSk6IExpa2V3aXNlLgoJKGZpbmlzaF9kZXN0cnVjdG9yX2JvZHkpOiBMaWtld2lzZS4KCSogb3B0aW1pemUuYyAoY29weV9ib2R5X3IpOiBMaWtld2lzZS4KCShpbml0aWFsaXplX2lubGluZWRfcGFyYW1ldGVycyk6IExpa2V3aXNlLgoJKGRlY2xhcmVfcmV0dXJuX3ZhcmlhYmxlKTogTGlrZXdpc2UuCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogTGlrZXdpc2UuCgoyMDAwLTA3LTEwICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IFN5bmMgaW50ZXJmYWNlIGluZm9ybWF0aW9uCglhdCB0aGUgZW5kIG9mIGZ1bmN0aW9uIGJvZHkgZXhwYW5zaW9uLgoKMjAwMC0wNy0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogQmFpbCBlYXJseSBpZiB0aGUgY2FsbCB0byBuZXcgZmFpbHMuCgoJKiBkZWNsLmMgKGNvbXB1dGVfYXJyYXlfaW5kZXhfdHlwZSk6IENoZWNrIHNwZWNpZmljYWxseSBmb3IKCWFuIElOVEVHRVJfQ1NULCBub3QganVzdCBUUkVFX0NPTlNUQU5ULgoKCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBEb24ndCBjYWxsIGR1cGxpY2F0ZV9kZWNscyBvbgoJdGhlIERFQ0xfVEVNUExBVEVfUkVTVUxULgoJKGRlY2xzX21hdGNoKTogUmV0dXJuIDAgaWYgdGhlIERFQ0xfVEVNUExBVEVfUkVTVUxUcyBoYXZlIGRpZmZlcmVudAoJY29kZXMuCgoJKiBlcnJvci5jIChkdW1wX3RlbXBsYXRlX2JpbmRpbmdzKTogRG9uJ3QgY3Jhc2ggaWYgd2UgaGFkIGFuCglpbnZhbGlkIGFyZ3VtZW50IGxpc3QuCgoJKiB0eXBlY2suYyAoY19leHBhbmRfc3RhcnRfY2FzZSk6IERvIG5hcnJvd2luZyBoZXJlLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX3N3aXRjaF9jb25kKTogTm90IGhlcmUuCgoyMDAwLTA3LTA5ICBIaWR2ZWdpIFpvbGkgIDxoem9saUBhdXN0aW4uaWJtLmNvbT4KCgkqIHBhcnNlLnkgKGFzbV9jbG9iYmVycyk6IERvIHN0cmluZyBjb25jYXRlbmF0aW9uLgoKMjAwMC0wNy0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAocHVzaHRhZyk6IERvbid0IHB1dCBsb2NhbCBjbGFzc2VzIGluIHRlbXBsYXRlIGZ1bmN0aW9ucwoJb24gdGhlIGxvY2FsX2NsYXNzZXMgbGlzdC4KCjIwMDAtMDctMDQgIFNjb3R0IFNueWRlciAgPHNueWRlckBmbmFsLmdvdj4KCgkqIGRlY2wyLmMgKGdldF9ndWFyZCk6IEFkZCBtaXNzaW5nIHJldHVybiBmb3Igb2xkIEFCSSBsb2NhbAoJdmFyaWFibGUgY2FzZS4KCjIwMDAtMDctMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGNoYXJfdHlwZV9wKTogTmV3IGZ1bmN0aW9uLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogRG9uJ3QgaW5pdGlhbGl6ZQoJc2lnbmVkX3djaGFyX3R5cGVfbm9kZSBvciB1bnNpZ25lZF93Y2hhcl90eXBlX25vZGUuCgkoY29tcGxldGVfYXJyYXlfdHlwZSk6IEhhbmRsZSBicmFjZS1lbmNsb3NlZCBzdHJpbmctY29uc3RhbnRzLgoJKiBydHRpLmMgKGVtaXRfc3VwcG9ydF90aW5mb3MpOiBSZW1vdmUgI2lmIDAnZCBjb2RlLgoJKiB0cmVlLmMgKGNoYXJfdHlwZV9wKTogTmV3IGZ1bmN0aW9uLgoJKiB0eXBlY2syLmMgKGRpZ2VzdF9pbml0KTogVXNlIGNoYXJfdHlwZV9wLgoKMjAwMC0wNy0wNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKHRzdWJzdCk6IERvbid0IGxheW91dCB0eXBlLCBpZiBpdCdzIGVycm9yX21hcmsuCgoyMDAwLTA3LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfcGVuZGluZ190ZW1wbGF0ZXMpOiBSZXNldCB0ZW1wbGF0ZSBsZXZlbC4KCjIwMDAtMDctMDUgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogY2FsbC5jIChqb3VzdCk6IERvbid0IGNvbXBsYWluIGFib3V0IGBvcGVyYXRvciBjaGFyICooKScgYmVhdGluZwoJYG9wZXJhdG9yIGNvbnN0IGNoYXIgKigpIGNvbnN0Jy4KCjIwMDAtMDctMDQgIHNjb3R0IHNueWRlciAgPHNueWRlckBmbmFsLmdvdj4KCSAgICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHJlcG8uYyAocmVwb19nZXRfaWQpOiBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYSBjbGFzcyB3aXRoIHZpcnR1YWwKCWJhc2VzIGhhcyBhIG51bGwgVFlQRV9CSU5GT19WVEFCTEUuCgoyMDAwLTA3LTA0ICBLZXZpbiBCdWhyICA8YnVockBzdGF0Lndpc2MuZWR1PgoJICAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogcGFyc2UueSAobWVtYmVyX2luaXQpOiBKdXN0IHBhc3MgaW4gdGhlIHR5cGUuCgkqIGluaXQuYyAoZXhwYW5kX21lbWJlcl9pbml0KTogSGFuZGxlIGdldHRpbmcgYSB0eXBlLgoKMjAwMC0wNy0wNCAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoJICAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBXYXJuIGlmIGEgZnVuY3Rpb24gaGFzIG5vIHJldHVybgoJc3RhdGVtZW50LgoJU3VnZ2VzdGVkIGJ5IEFuZHJldyBLb2VuaWcuCgkqIHR5cGVjay5jIChjaGVja19yZXR1cm5fZXhwcik6IERvIHNldCBjdXJyZW50X2Z1bmN0aW9uX3JldHVybnNfdmFsdWUKCWlmIHdlIGdvdCBhbiBlcnJvcl9tYXJrX25vZGUuCgoyMDAwLTA3LTAzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAocHVzaF9kZWNsX25hbWVzcGFjZSk6IFB1c2ggdGhlIG9yaWdpbmFsIG5hbWVzcGFjZS4KCjIwMDAtMDctMDMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFNldCBDTEFTU1RZUEVfVkJBU0VDTEFTU0VTLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IENsZWFyIGl0LgoKMjAwMC0wNy0wMiAgQmVuamFtaW4gQ2hlbGYgIDxjaGVsZkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChnZW5ydGxfZ290b19zdG10KTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGdlbnJ0bF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2lmX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfd2hpbGVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Zvcl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9zY29wZV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3N3aXRjaF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCShnZW5ydGxfYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9maW5pc2hfY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2FzbV9zdG10KTogTGlrZXdpc2UuCgoJKiBpbml0LmMgKGJlZ2luX2luaXRfc3RtdHMpOiBSZW1vdmUgY2FsbCB0bwoJZ2VucnRsX2JlZ2luX2NvbXBvdW5kX3N0bXQuCgkoZmluaXNoX2luaXRfc3RtdHMpOiBSZW1vdmUgY2FsbCB0byBnZW5ydGxfZmluaXNoX2NvbXBvdW5kX3N0bXQuCgoJKiBzZW1hbnRpY3MuYyAobGFuZ19leHBhbmRfc3RtdCk6IENoYW5nZWQgY2FsbCB0bwoJZ2VucnRsX2NvbXBvdW5kX3N0bXQgdG8gaWdub3JlIHJldHVybiB2YWx1ZS4KCjIwMDAtMDctMDIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtYW5nbGUuYyAoY2Fub25pY2FsaXplX2Zvcl9zdWJzdGl0dXRpb24pOiBSZXR1cm4gdGhlIGNhbm9uaWNhbAoJdmFyaWFudCBvZiBhIHR5cGUuCgoJKiBkZWNsLmMgKGR1cGxpY2F0ZV9kZWNscyk6IFByZXNlcnZlIERFQ0xfT1JJR0lOQUxfVFlQRSBmb3IgYQoJVFlQRV9ERUNMLgoJKiB0eXBlY2suYyAoY29tbW9ucGFybXMpOiBSZW1vdmUgb2JzdGFjayBtYW5pcHVsYXRpb25zLgoKMjAwMC0wNy0wMSAgQmVuamFtaW4gQ2hlbGYgIDxjaGVsZkBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChjYzFwbHVzJChleGVleHQpKTogQWRkZWQgYy1zZW1hbnRpY3Muby4KCgkqIE1ha2VmaWxlLmluIChPQkpTKTogQWRkZWQgLi4vYy1zZW1hbnRpY3Muby4KCShPQkpERVBTKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKFRSRUVfTEFOR19GTEFHXz8pOiBNb3ZlZCBjb21tb24gZG9jdW1lbnRhdGlvbiB0bwoJLi4vYy1jb21tb24uaC4KCShzdHJ1Y3Qgc3RtdF90cmVlKTogQWRkZWQgY29tbWVudC4KCShjdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBSZW1vdmVkLgoJKHN0bXRzX2FyZV9mdWxsX2V4cHJzX3ApOiBMaWtld2lzZS4KCShnZW5ydGxfZG9fcHVzaGxldmVsKTogTGlrZXdpc2UuCgkoZ2VucnRsX2NsZWFyX291dF9ibG9jayk6IExpa2V3aXNlLgoJKENPTVBPVU5EX1NUTVRfTk9fU0NPUEUpOiBNb3ZlZCB0byAuLi9jLWNvbW1vbi5oLgoJKERFQ0xfQU5PTl9VTklPTl9FTEVNUyk6IExpa2V3aXNlLgoJKGVtaXRfbG9jYWxfdmFyKTogTGlrZXdpc2UuCgkobWFrZV9ydGxfZm9yX2xvY2FsX3N0YXRpYyk6IExpa2V3aXNlLgoJKGRvX2Nhc2UpOiBMaWtld2lzZS4KCShleHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kZWNsX2NsZWFudXApOiBMaWtld2lzZS4KCShjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBMaWtld2lzZS4KCShjX2V4cGFuZF9yZXR1cm4pOiBMaWtld2lzZS4KCShjX2V4cGFuZF9zdGFydF9jYXNlKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKG1ha2VfcnRsX2Zvcl9sb2NhbF9zdGF0aWMpOiBNb3ZlZCB0byBjLXNlbWFudGljcy5jLgoJKGVtaXRfbG9jYWxfdmFyKTogTGlrZXdpc2UuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBDaGFuZ2UgcmVmZXJlbmNlIHRvCglzdG10c19hcmVfZnVsbF9leHByc19wIHRvIGNhbGwgdG8gc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCgpLgoJQ2hhbmdlIHJlZmVyZW5jZSB0byBzdG10c19hcmVfZnVsbF9leHByc19wIHRvCgljdXJyZW50X3N0bXRfdHJlZS0+c3RtdHNfYXJlX2Z1bGxfZXhwcnNfcC4KCShwdXNoX2NwX2Z1bmN0aW9uX2NvbnRleHQpOiBMaWtld2lzZS4KCgkqIGV4cGVjdC5jIChleHBhbmRfdGhyb3cpOiBDaGFuZ2UgcmVmZXJlbmNlIHRvCglzdG10c19hcmVfZnVsbF9leHByc19wLgoKCSogaW5pdC5jIChidWlsZF9hZ2dyX2luaXQpOiBDaGFuZ2UgcmVmZXJlbmNlIHRvCglzdG10c19hcmVfZnVsbF9leHByc19wLgoJKGJ1aWxkX3ZlY19pbml0KTogTGlrZXdpc2UuCgoJKiBvcHRpbWl6ZS5jIChtYXliZV9jbG9uZV9ib2R5KTogQ2hhbmdlIHJlZmVyZW5jZSB0bwoJY3VycmVudF9mdW5jdGlvbl9uYW1lX2RlY2xhcmVkIHRvCgljcF9mdW5jdGlvbl9jaGFpbi0+bmFtZV9kZWNsYXJlZC4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBDaGFuZ2UgcmVmZXJlbmNlIHRvCgljdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQgdG8KCWNwX2Z1bmN0aW9uX2NoYWluLT5uYW1lX2RlY2xhcmVkLgoKCSogc2VtYW50aWNzLmMgKGV4cGFuZF9jb25kKTogTW92ZWQgZGVjbGFyYXRpb24gdG8gYy1jb21tb24uaC4KCShnZW5ydGxfZG9fcHVzaGxldmVsKTogTW92ZWQgdG8gYy1zZW1hbnRpY3MuYy4KCShnZW5ydGxfY2xlYXJfb3V0X2Jsb2NrKTogTGlrZXdpc2UuCgkoZ2VucnRsX2dvdG9fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoZ2VybnRsX2lmX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfd2hpbGVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Zvcl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9zY29wZV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3N3aXRjaF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCShnZW5ydGxfYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9maW5pc2hfY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2RlY2xfY2xlYW51cCk6IExpa2V3aXNlLgoJKGV4cGFuZF9jb25kKTogTGlrZXdpc2UuCgkoZXhwYW5kX3N0bXQpOiBSZW5hbWVkIHRvIC4uLgoJKGxhbmdfZXhwYW5kX3N0bXQpOiAuLi4gdGhpcy4KCShsYW5nX2V4cGFuZF9leHByX3N0bXQpOiBJbml0aWFsaXplLgoJKHNldF9jdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQpOiBMaWtld2lzZS4KCShzdG10c19hcmVfZnVsbF9leHByc19wKTogTGlrZXdpc2UuCgkoY3VycmVudF9mdW5jdGlvbl9uYW1lX2RlY2xhcmVkKTogTGlrZXdpc2UuCgkoYW5vbl9hZ2dyX3R5cGVfcCk6IExpa2V3aXNlLgoJKGRvX3BvcGxldmVsKTogQ2hhbmdlIHJlZmVyZW5jZSB0bwoJc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCB0byBjYWxsIHRvIHN0bXRzX2FyZV9mdWxsX2V4cHJzX3AoKS4KCUNoYW5nZSByZWZlcmVuY2UgdG8gc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcCB0bwoJY3VycmVudF9zdG10X3RyZWUtPnN0bXRzX2FyZV9mdWxsX2V4cHJzX3AuCgkoYWRkX3RyZWUpOiBMaWtld2lzZS4KCShmaW5pc2hfZXhwcl9zdG10KTogTGlrZXdpc2UuCgkocHJlcF9zdG10KTogTGlrZXdpc2UuCgkobGFuZ19leHBhbmRfc3RtdCk6IExpa2V3aXNlLgoJKGJlZ2luX2NvbXBvdW5kX3N0bXQpOiBDaGFuZ2UgcmVmZXJlbmNlIHRvCgljdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQgdG8KCWNwX2Z1bmN0aW9uX2NoYWluLT5uYW1lX2RlY2xhcmVkIGFuZCBjYWxsIHRvCgljdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQoKS4KCShzZXR1cF92dGJsX3B0cik6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19wb3BsZXZlbCk6IFJlbW92ZWQuCgoyMDAwLTA2LTMwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGluaXQuYyAoaW5pdF9pbml0X3Byb2Nlc3NpbmcpOiBHbyBiYWNrIHRvIGFsaWduaW5nIGxpa2UKCWRvdWJsZV90eXBlX25vZGUgZm9yIG9sZCBBQkkuCgkoZ2V0X2Nvb2tpZV9zaXplKTogTWFrZSBjb29raWUgbGFyZ2VyIGlmIHdlIGdldCBhIHR5cGUgdGhhdCBuZWVkcwoJbW9yZSBhbGlnbm1lbnQuCgkoYnVpbGRfdmVjX2RlbGV0ZSk6IENhbGwgaXQuCgoJKiB0eXBlY2suYyAocXVhbGlmeV90eXBlX3JlY3Vyc2l2ZSk6IE5ldyBmbi4KCShjb21wb3NpdGVfcG9pbnRlcl90eXBlKTogVXNlIGl0LgoJKGJ1aWxkX2JpbmFyeV9vcCk6IFVzZSBjb21wb3NpdGVfcG9pbnRlcl90eXBlLgoKMjAwMC0wNi0yNCAgQ2FybG9zIE8nUnlhbiAgPGNvcnlhbkBjcy53dXN0bC5lZHU+CgkgICAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiB0eXBlY2suYyAoY2hlY2tfcmV0dXJuX2V4cHIpOiBEb24ndCBjb21wbGFpbiBhYm91dCByZXR1cm5pbmcKCU5VTEwgZnJvbSBvcGVyYXRvciBuZXcgaWYgLWZjaGVjay1uZXcuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBmbGFnX2NoZWNrX25ldyBoZXJlLgoJKiBpbml0LmM6IE5vdCBoZXJlLgoKMjAwMC0wNi0yOCAgQWxleCBTYW11ZWwgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1hbmdsZS5jIChmaW5kX3N1YnN0aXR1dGlvbik6IFVzZSBzYW1lX3R5cGVfcC4KCSh3cml0ZV9lbmNvZGluZyk6IERvbid0IGNoZWNrIGZvciBzdWJzdGl0dXRpb25zLgoKMjAwMC0wNi0zMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHBhcnNlLnkgKGV4cHJfbm9fY29tbWFfcmFuZ2xlKTogTmV3IG5vbi10ZXJtaW5hbC4KCSh0ZW1wbGF0ZV9wYXJtKTogVXNlIGl0IGZvciBkZWZhdWx0IHBhcmFtZXRlciBjYXNlLgoJKHRlbXBsYXRlX2FyZyk6IFVzZSBpdC4KCShleHByX25vX2NvbW1hcyk6IFJlbW92ZSBjb21tZW50ZWQgb3V0IHVuZGVmaW5lZCBleHRlbnNpb25zLgoJKiBNYWtlZmlsZS5pbiAoQ09ORkxJQ1RTKTogQWRqdXN0IHRvIDMzIHMvciAmIDQ4IHIvci4KCSogcGFyc2UuaCwgcGFyc2UuYzogUmVidWlsdC4KCjIwMDAtMDYtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBzZW1hbnRpY3MuYyAoZ2VucnRsX2FzbV9zdG10KTogRG9uJ3QgZGVjYXkgaW5wdXQgb3BlcmFuZHMgaGVyZS4KCShmaW5pc2hfYXNtX3N0bXQpOiBEbyBpdCBoZXJlLCBpbnN0ZWFkLgoKCSogY3AtdHJlZS5oIChyaWRwb2ludGVycyk6IERvbid0IGRlY2xhcmUuCgkqIGRlY2wuYyAocmVjb3JkX2J1aWx0aW5fdHlwZSk6IFVzZSBDUF9SSURfTUFYIGluc3RlYWQgb2YgUklEX01BWC4KCShyZWNvcmRfYnVpbHRpbl9qYXZhX3R5cGUpOiBMaWtld2lzZS4KCShpbml0X2RlY2xfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKiBsZXguYzogTW92ZSBpbmNsdXNpb24gb2YgbGV4LmguCgkocmlkcG9pbnRlcnMpOiBEb24ndCBkZWZpbmUuCgkoaW5pdF9wYXJzZSk6IEluaXRpYWxpemUgcmlwZG9pbnRlcnMuICBVc2UgQ1BfUklEX01BWCBpbnN0ZWFkIG9mCglSSURfTUFYLgoJKiBsZXguaCAoZW51bSByaWQpOiBSZW5hbWUgdG8gLi4uCgkoZW51bSBjcF9yaWQpOiAuLi4gdGhpcy4KCShyaWRwb2ludGVycyk6IERvbid0IGRlY2xhcmUuCgkqIHBhcnNlLnk6IE1vdmUgaW5jbHVzaW9uIG9mIGxleC5oLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogc3Bldy5jOiBNb3ZlIGluY2x1c2lvbiBvZiBsZXguaC4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHRlbXBfbmFtZV9jb3VudGVyLgoJKHRlbXBfbmFtZV9jb3VudGVyKTogUmVtb3ZlLgoJKGdldF90ZW1wX25hbWUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGdldF9ndWFyZCk6IE5ldyBmdW5jdGlvbi4KCShnZXRfZ3VhcmRfY29uZCk6IExpa2V3aXNlLgoJKHNldF9ndWFyZCk6IExpa2V3aXNlLgoJKiBjdnQuYyAoYnVpbGRfdXBfcmVmZXJlbmNlKTogQWRqdXN0IGNhbGwgdG8gZ2V0X3RlbXBfbmFtZS4KCSogZGVjbC5jIChleHBhbmRfc3RhdGljX2luaXQpOiBVc2UgZ2V0X2d1YXJkIGFuZCBmcmllbmRzIHRvCglpbXBsZW1lbnQgZ3VhcmQgdmFyaWFibGVzLgoJKiBkZWNsMi5jIChnZXRfdGVtcF9uYW1lKTogQXNzdW1lIHRoYXQgdGhlIHZhcmlhYmxlcyBjcmVhdGVkIGFyZQoJYWx3YXlzIHN0YXRpYy4KCShnZXRfc2VudHJ5KTogUmVuYW1lIHRvIC4uLgoJKGdldF9ndWFyZCk6IC4uLiB0aGlzLiAgSW1wbGVtZW50IG5ldyBBQkkgZ3VhcmQJdmFyaWFibGVzLgoJKGdldF9ndWFyZF9iaXRzKTogTmV3IGZ1bmN0aW9uLgoJKGdldF9ndWFyZF9jb25kKTogTGlrZXdpc2UuCgkoc2V0X2d1YXJkKTogTGlrZXdpc2UuCgkoc3RhcnRfc3RhdGljX2luaXRpYWxpemF0aW9uX29yX2Rlc3RydWN0aW9uKTogVXNlIHRoZW0uCgkoZG9fc3RhdGljX2luaXRpYWxpemF0aW9uKTogUmVwbGFjZSBzZW50cnkgd2l0aCBndWFyZCB0aHJvdWdob3V0LgoJKGRvX3N0YXRpY19kZXN0cnVjdGlvbik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGNyZWF0ZV90ZW1wb3JhcnlfdmFyKTogQWRkIGNvbW1lbnQuCgoyMDAwLTA2LTI4ICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogbWFuZ2xlLmMgKGZpbmRfc3Vic3RpdHV0aW9uKTogVXNlIHNhbWVfdHlwZV9wLgoJKHdyaXRlX2VuY29kaW5nKTogRG9uJ3QgY2hlY2sgZm9yIHN1YnN0aXR1dGlvbnMuCgoyMDAwLTA2LTMwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcGFyc2UueSAoZXhwcl9ub19jb21tYV9yYW5nbGUpOiBOZXcgbm9uLXRlcm1pbmFsLgoJKHRlbXBsYXRlX3Bhcm0pOiBVc2UgaXQgZm9yIGRlZmF1bHQgcGFyYW1ldGVyIGNhc2UuCgkodGVtcGxhdGVfYXJnKTogVXNlIGl0LgoJKGV4cHJfbm9fY29tbWFzKTogUmVtb3ZlIGNvbW1lbnRlZCBvdXQgdW5kZWZpbmVkIGV4dGVuc2lvbnMuCgkqIE1ha2VmaWxlLmluIChDT05GTElDVFMpOiBBZGp1c3QgdG8gMzMgcy9yICYgNDggci9yLgoJKiBwYXJzZS5oLCBwYXJzZS5jOiBSZWJ1aWx0LgoKMjAwMC0wNi0yOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZmxhZ19jb25zdF9zdHJpbmdzKTogUmVtb3ZlLgoJKHdhcm5fcGFyZW50aGVzZXMpOiBMaWtld2lzZS4KCSh3YXJuX2Zvcm1hdCk6IExpa2V3aXNlLgoJKGNvbW1vbl90eXBlKTogTGlrZXdpc2UuCgkoZGVmYXVsdF9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkoY3BfYnVpbGRfYmluYXJ5X29wKTogTmV3IG1hY3JvLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19vcCk6IFVzZSBjcF9idWlsZF9iaW5hcnlfb3AgaW5zdGVhZCBvZgoJYnVpbGRfYmluYXJ5X29wLgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnlfcmVmKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoZXhwYW5kX3N0YXRpY19pbml0KTogTGlrZXdpc2UuCgkoY29tcHV0ZV9hcnJheV9pbmRleF90eXBlKTogTGlrZXdpc2UuCgkoYnVpbGRfZW51bWVyYXRvcik6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChkZWxldGVfc2FuaXR5KTogTGlrZXdpc2UuCgkoc3RhcnRfc3RhdGljX2luaXRpYWxpemF0aW9uX29yX2Rlc3RydWN0aW9uKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfdHlwZV9zdWZmaXgpOiBMaWtld2lzZS4KCSogaW5pdC5jIChyZXNvbHZlX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9uZXcpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfMSk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZlY19kZWxldGVfMSk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZlY19pbml0KTogTGlrZXdpc2UuCgkoYnVpbGRfZGVsZXRlKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoc3ludGhlc2l6ZV90aW5mb19mbik6IExpa2V3aXNlLgoJKHN5bnRoZXNpemVfdGluZm9fdmFyKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKGZpeHVwX2FsbF92aXJ0dWFsX3VwY2FzdF9vZmZzZXRzKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF9hcnJheV9yZWYpOiBMaWtld2lzZS4KCShnZXRfbWVtYmVyX2Z1bmN0aW9uX2Zyb21fcHRyZnVuYyk6IExpa2V3aXNlLgoJKGJ1aWxkX2JpbmFyeV9vcCk6IEFkZCBwYXJhbWV0ZXIuCgkocG9pbnRlcl9pbnRfc3VtKTogVXNlIGNwX2J1aWxkX2JpbmFyeV9vcC4KCShwb2ludGVyX2RpZmYpOiBMaWtld2lzZS4KCShidWlsZF9tb2RpZnlfZXhwcik6IExpa2V3aXNlLgoJKGdldF9kZWx0YV9kaWZmZXJlbmNlKTogTGlrZXdpc2UuCgkoYnVpbGRfcHRybWVtZnVuYyk6IExpa2V3aXNlLgoKMjAwMC0wNi0yOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoU0VUX0RFQ0xfQVJUSUZJQ0lBTCk6IFJlbW92ZS4KCSogZGVjbC5jIChjcmVhdGVfaW1wbGljaXRfdHlwZWRlZik6IEFkanVzdC4KCSogZGVjbDIuYyAoYnVpbGRfYXJ0aWZpY2lhbF9wYXJtKTogQWRqdXN0LgoJKiBtZXRob2QuYyAoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogQWRqdXN0LgoJKiBwdC5jIChwdXNoX2lubGluZV90ZW1wbGF0ZV9wYXJtc19yZWN1cnNpdmUpOiBBZGp1c3QuCgkocHJvY2Vzc190ZW1wbGF0ZV9wYXJtKTogQWRqdXN0LgoJKG92ZXJsb2FkZWRfdGVtcGxhdGVfbmFtZSk6IEFkanVzdC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtKTogQWRqdXN0LgoKMjAwMC0wNi0yOCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xFQVJfQklORk9fTkVXX1ZUQUJMRV9NQVJLRUQpOiBSZW1vdmUuCgkqIGNsYXNzLmMgKHVwZGF0ZV92dGFibGVfZW50cnlfZm9yX2ZuKTogQ29ycmVjdCBsb2dpYyBmb3IgZGVjaWRpbmcKCXdoZXJlIHRvIGVtaXQgdGh1bmtzLgoJKGJ1aWxkX3Z0dCk6IEFkanVzdCBjYWxsIHRvIGJ1aWxkX3Z0dF9pbml0cy4KCShidWlsZF92dHRfaW5pdHMpOiBBZGQgcGFyYW1ldGVyIHRvIGluZGljYXRlIHdoZXRoZXIgb3Igbm90CglzdWItVlRUcyBmb3IgdmlydHVhbCBiYXNlcyBzaG91bGQgYmUgaW5jbHVkZWQuICBBZGp1c3QgaGFuZGxpbmcgb2YKCWNvbnN0cnVjdGlvbiB2dGFibGVzLgoJKGdldF9tYXRjaGluZ19iYXNlKTogTmV3IGZ1bmN0aW9uLgoJKGRmc19idWlsZF92dHRfaW5pdHMpOiBSZW5hbWUgdG8gLi4uCgkoZGZzX2J1aWxkX3NlY29uZGFyeV92cHRyX3Z0dF9pbml0cyk6IEFkanVzdCBoYW5kbGluZyBvZgoJY29uc3RydWN0aW9uIHZ0YWJsZXMuCgkoZGZzX2ZpeHVwX2JpbmZvX3Z0YmxzKTogTGlrZXdpc2UuCgkoYnVpbGRfY3Rvcl92dGJsX2dyb3Vwcyk6IEJ1aWxkIGNvbnN0cnVjdGlvbiB2dGFibGVzIGZvciB2aXJ0dWFsCgliYXNlcywgdG9vLgoJKGFjY3VtdWxhdGVfdnRibF9pbml0cyk6IFR3ZWFrIGxvZ2ljIGZvciBkZWNpZGluZyB3aGV0aGVyIG9yIG5vdAoJdG8gYnVpbGQgY29uc3RydWN0aW9uIHZ0YmxzLgoJKGRmc19hY2N1bXVsYXRlX3Z0YmxfaW5pdHMpOiBBZGp1c3QgaGFuZGxpbmcgb2YKCWNvbnN0cnVjdGlvbiB2dGFibGVzLgoKCSogcHQuYyAodHN1YnN0LCBjYXNlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk0pOiBIYW5kbGUgY3YtcXVhbGlmaWVkCgl0eXBlcyBjb3JyZWN0bHkuCgoyMDAwLTA2LTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChncm9rZm5kZWNsKTogU2V0IERFQ0xfQ09OVEVYVCBmb3Igc3RhdGljIGZ1bmN0aW9ucyB0b28uCgoyMDAwLTA2LTI2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogc2VhcmNoLmMgKGhpZGVzKTogUmVtb3ZlLgoJKGlzX3N1Ym9iamVjdF9vZl9wKTogQWRkIG1vc3RfZGVyaXZlZCBwYXJhbWV0ZXIuIFVzZQoJQ0FOT05JQ0FMX0JJTkZPLgoJKGxvb2t1cF9maWVsZF9xdWV1ZV9wKTogQWRqdXN0LgoJKGxvb2t1cF9maWVsZF9yKTogQWRqdXN0LgoKMjAwMC0wNi0yNiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGhhbmRsZV9jbGFzc19oZWFkKTogQmFzaCB0eXBlZGVmcyB0byB0aGUgdHlwZSdzIG1haW4KCWRlY2wuCgoyMDAwLTA2LTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChnZW5ydGxfYmVnaW5fc3RtdF9leHByKTogUmVuYW1lIHRvIC4uLgoJKGJlZ2luX2dsb2JhbF9zdG10X2V4cHIpOiAuLi4gdGhpcy4KCShnZW5ydGxfZmluaXNoX3N0bXRfZXhwcik6IFJlbmFtZSB0byAuLi4KCShmaW5pc2hfZ2xvYmFsX3N0bXRfZXhwcik6IC4uLiB0aGlzLgoJKiBpbml0LmMgKGJlZ2luX2luaXRfc3RtdHMpOiBBZGp1c3QgY2FsbHMuCgkoZmluaXNoX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGdlbnJ0bF9iZWdpbl9zdG10X2V4cHIpOiBSZW5hbWUgdG8gLi4uCgkoYmVnaW5fZ2xvYmFsX3N0bXRfZXhwcik6IC4uLiB0aGlzLgoJKGdlbnJ0bF9maW5pc2hfc3RtdF9leHByKTogUmVuYW1lIHRvIC4uLgoJKGZpbmlzaF9nbG9iYWxfc3RtdF9leHByKTogLi4uIHRoaXMuCgoyMDAwLTA2LTI1IFRoZW9kb3JlIFBhcGFkb3BvdWxvIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBzZWFyY2guYyAobG9va3VwX21lbWJlcik6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDAwLTA2LTI0ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBEb24ndCBzZXQgREVDTF9DT05URVhUIGZyb20gY3VycmVudF9uYW1lc3BhY2UuCgkocHVzaF9uYW1lc3BhY2UpOiBTZXQgREVDTF9DT05URVhUIGZvciBhIG5ldyBOQU1FU1BBQ0VfREVDTC4KCjIwMDAtMDYtMjQgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHBhcnNlLnkgKGNvbXBsZXhfZGlyZWN0X25vdHlwZV9kZWNsYXJhdG9yKTogU3VwcG9ydCBnbG9iYWxfc2NvcGUuCgkqIE1ha2VmaWxlLmluOiBBZGp1c3QgY29uZmxpY3QgY291bnQuCgoyMDAwLTA2LTIzICBLcmlhbmcgTGVyZHN1d2FuYWtpaiA8bGVyZHN1d2FAc2NmLnVzYy5lZHU+CgoJKiBwYXJzZS55ICh0ZW1wbGF0ZV9hcmcpOiBDb252ZXJ0IFRFTVBMQVRFX0RFQ0wKCXRoYXQgaXMgYSB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgdG8KCVRFTVBMQVRFX1RFTVBMQVRFX1BBUk0gaGVyZS4KCgkqIGNwLXRyZWUuZGVmIChURU1QTEFURV9URU1QTEFURV9QQVJNKTogQWRqdXN0IGNvbW1lbnQuCgkqIGNwLXRyZWUuaCAoVEVNUExBVEVfVEVNUExBVEVfUEFSTV9URU1QTEFURV9ERUNMKTogTmV3IG1hY3JvLgoJKGNvcHlfdGVtcGxhdGVfdGVtcGxhdGVfcGFybSk6IEFkanVzdCBwcm90b3R5cGUuCgkqIGRlY2wuYyAoZ3Jva2RlY2xhcmF0b3IpOiBSZW1vdmUgZGVhZCBjb2RlLgoJKiBwdC5jIChwcm9jZXNzX3RlbXBsYXRlX3Bhcm0pOiBUaWR5LgoJKGxvb2t1cF90ZW1wbGF0ZV9jbGFzcyk6IENvbnN0cnVjdCBub2RlcyBpbgoJY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtLgoJKHRzdWJzdCk6IFBhc3MgVEVNUExBVEVfREVDTCByYXRoZXIgdGhhbiBJREVOVElGSUVSX05PREUgdG8KCWxvb2t1cF90ZW1wbGF0ZV9jbGFzcy4gIFVzZSBUWVBFX1RJX1RFTVBMQVRFLgoJKiB0cmVlLmMgKGNvcHlfdGVtcGxhdGVfdGVtcGxhdGVfcGFybSk6IEFkZCBORVdBUkdTCglwYXJhbWV0ZXIuCgkobWFwY2FyKTogQWRqdXN0IGNhbGwgdG8gY29weV90ZW1wbGF0ZV90ZW1wbGF0ZV9wYXJtLgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogVXNlIFRFTVBMQVRFX1RFTVBMQVRFX1BBUk1fVEVNUExBVEVfREVDTC4KCSogbWV0aG9kLmMgKGJ1aWxkX3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiBDaGFuZ2UgZXJyb3IKCWNvZGUgdG8gYXZvaWQgY29tcGlsYXRpb24gd2FybmluZy4KCgkqIGd4eGludC50ZXhpOiBEb2N1bWVudCB0ZW1wbGF0ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXIKCW5hbWUgbWFuZ2xpbmcuCgoyMDAwLTA2LTIxICBBbGV4IFNhbXVlbCAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChDWFhfTElCMkZVTkNTKTogQWRkIGNwLWRlbWFuZ2xlLm8gYW5kIGR5bi1zdHJpbmcuby4KCShDWFhfTElCMlNSQ1MpOiBBZGQgY3AtZGVtYW5nbGUuYyBhbmQgZHluLXN0cmluZy5jLgoJKGNwLWRlbWFuZ2xlLm8pOiBOZXcgcnVsZS4KCShkeW4tc3RyaW5nLm8pOiBMaWtld2lzZS4KCSogaW5jL2N4eGFiaS5oIChfX2N4YV9kZW1hbmdsZSk6IE5ldyBkZWNsYXJhdGlvbi4KCjIwMDAtMDYtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKEJWX1VTRV9WQ0FMTF9JTkRFWF9QKTogTmV3IG1hY3JvLgoJKEJWX0dFTkVSQVRFX1RIVU5LX1dJVEhfVlRBQkxFX1ApOiBMaWtld2lzZS4KCShsYW5nX2RlY2xfZmxhZ3MpOiBBZGQgZ2VuZXJhdGVfd2l0aF92dGFibGVfcC4gIE1ha2UgdmNhbGxfb2Zmc2V0CglhIHRyZWUsIG5vdCBhbiBpbnQuCgkoVEhVTktfR0VORVJBVEVfV0lUSF9WVEFCTEVfUCk6IE5ldyBtYWNyby4KCShtYWtlX3RodW5rKTogQ2hhbmdlIHByb3RvdHlwZS4KCShlbWl0X3RodW5rKTogUmVuYW1lIHRvIHVzZV90aHVuay4KCShtYW5nbGVfdGh1bmspOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBjbGFzcy5jIChnZXRfZGVyaXZlZF9vZmZzZXQpOiBTaW1wbGlmeS4KCShjb3B5X3ZpcnR1YWxzKTogQ2xlYXIgQlZfVVNFX1ZDQUxMX0lOREVYX1AgYW5kCglCVl9HRU5FUkFURV9USFVOS19XSVRIX1ZUQUJMRV9QLgoJKGJ1aWxkX3ByaW1hcnlfdnRhYmxlKTogU2ltcGxpZnkuCgkoYWRkX3ZpcnR1YWxfZnVuY3Rpb24pOiBVc2UgQlZfRk4sIHJhdGhlciB0aGFuIFRSRUVfVkFMVUUuCgkoZGZzX2ZpbmRfYmFzZSk6IFJlbW92ZS4KCSh1cGRhdGVfdnRhYmxlX2VudHJ5X2Zvcl9mbik6IENvcnJlY3QgYnVnIGluIGZpbmRpbmcgdGhlIGJhc2UKCXdoZXJlIGEgdmlydHVhbCBmdW5jdGlvbiB3YXMgZmlyc3QgZGVjbGFyZWQuICBGaWd1cmUgb3V0IHdoZXRoZXIKCW9yIG5vdCB0byBlbWl0IGEgdmNhbGwtdGh1bmsgd2l0aCB0aGUgdnRhYmxlcyBpbiB3aGljaCBpdCBhcHBlYXJzLgoJQ29ycmVjdCBsb2dpYyBmb3IgZGVjaWRpbmcgd2hldGhlciB0byB1c2UgYW4gb3JkaW5hcnkgdGh1bmssIG9yIGEKCXZjYWxsIHRodW5rLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IFJlbW92ZSB1bm5lY3NzYXJ5IGNvZGUuCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IFVzZSBzc2l6ZV9pbnQgZm9yIHRoZSBydW5uaW5nIGNvdW50ZXIgb2YKCW5lZ2F0aXZlIGluZGljZXMuCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IE9ubHkgdXNlIHZjYWxsIHRodW5rcyB3aGVyZSBuZWNlc3NhcnkuCglNYXJrIHRodW5rcyBhcyBuZWVkaW5nIHRvIGJlIGVtaXR0ZWQgd2l0aCB0aGVpciB2dGFibGVzLCBvciBub3QuCgkoYnVpbGRfdmJhc2Vfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IEFkanVzdCBmb3IgdXNlIG9mIHNzaXplX2ludCBpbgoJaW5kaWNlcy4gIFVzZSBzaXplX2Jpbm9wLgoJKGRmc19idWlsZF92Y2FsbF9vZmZzZXRfdnRibF9lbnRyaWVzKTogRG9uJ3QgcmVseSBvbgoJQklORk9fUFJJTUFSWV9NQVJLRURfUCBoZXJlLiAgVXNlIEJWX0ZOIGNvbnNpc3RlbnRseS4gIFVzZQoJc2l6ZV9iaW5vcC4KCShidWlsZF9ydHRpX3Z0YmxfZW50cmllcyk6IEFkanVzdCBjYWxsIHRvIGJ1aWxkX3Z0YWJsZV9lbnRyeS4KCShidWlsZF92dGFibGVfZW50cnkpOiBNYXJrIHRodW5rcyBhcyBuZWVkaW5nIHRvIGJlIGVtaXR0ZWQgd2l0aAoJdGhlaXIgdnRhYmxlcywgb3Igbm90LgoJKiBkZWNsLmMgKGxhbmdfbWFya190cmVlKTogTWFyayB0aGUgdmNhbGxfb2Zmc2V0IGluIGEgdGh1bmsuCgkqIGRlY2wyLmMgKG1hcmtfdnRhYmxlX2VudHJpZXMpOiBVc2UgdXNlX3RodW5rIGluc3RlYWQgb2YKCWVtaXRfdGh1bmsuCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IFJlbW92ZSBkZWFkIGNvZGUuICBEdW1wIG5ldyB0aHVuawoJaW5mb3JtYXRpb24uCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IFVzZSBCVl9GTi4KCSogbWFuZ2xlLmMgKG1hbmdsZV90aHVuayk6IEFkanVzdCBub3cgdGhhdCB2Y2FsbF9vZmZzZXQgaXMgYSB0cmVlLAoJbm90IGFuIGludC4KCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBMaWtld2lzZS4KCShlbWl0X3RodW5rKTogUmVuYW1lIHRvIHVzZV90aHVuay4gIEFsbG93IGNhbGxlcnMgdG8gZGVjaWRlCgl3aGV0aGVyIG9yIG5vdCB0byBhY3R1YWxseSBlbWl0IHRoZSB0aHVuay4gIEFkanVzdCBmb3IgY2hhbmdlcyBpbgoJcmVwcmVzZW50YXRpb24gb2YgdmNhbGwgb2Zmc2V0cy4KCSogc2VhcmNoLmMgKGRmc19nZXRfcHVyZV92aXJ0dWFscyk6IFVzZSBCVl9GTi4KCSogc2VtYW50aWNzLmMgKGVtaXRfYXNzb2NpYXRlZF90aHVua3MpOiBOZXcgZnVuY3Rpb24uCgkoZXhwYW5kX2JvZHkpOiBVc2UgaXQuCgkqIGlyLnRleGk6IEFkanVzdCBkZWNyaXB0aW9ucyBvZiB0aHVua3MuCgoyMDAwLTA2LTIyICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsLCBjYXNlIEZVTkNUSU9OX0RFQ0wpOiBDbGVhciBERUNMX1NBVkVEX1RSRUUuCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IENvcHkgaXQgaGVyZS4KCgkqIGRlY2wuYyAoZ3Jva19vcF9wcm9wZXJ0aWVzKTogRml4IHR5cG8uCgoJKiBkZWNsMi5jIChkZWxldGVfc2FuaXR5KTogQ2xhcmlmeSB3YXJuaW5nLCBhdm9pZCBmYWlsdXJlIG9uCglkZWxldGluZyB2b2lkKi4KCgkqIHB0LmMgKGNoZWNrX2V4cGxpY2l0X3NwZWNpYWxpemF0aW9uKTogQ2xhcmlmeSBlcnJvci4KCgkqIGRlY2wuYyAocHVzaGRlY2wpOiBBbHNvIHB1bGwgb3V0IG9uZSBvZiB0aGUgRlVOQ1RJT05fREVDTHMgZnJvbQoJYW4gb2xkIE9WRVJMT0FEIHdoZW4gd2UncmUgZGVjbGFyaW5nIGEgbm9uLWZ1bmN0aW9uLgoJKHB1c2hkZWNsLCBkZXN0cm95X2xvY2FsX3Zhcik6IENoZWNrIGZvciBlcnJvcl9tYXJrX25vZGUuCgkod2Fybl9leHRlcm5fcmVkZWNsYXJlZF9zdGF0aWMpOiBBbHNvIGJhaWwgZWFybHkgaWYKCXdlJ3JlIGEgQ09OU1RfREVDTC4KCShwdXNoX292ZXJsb2FkZWRfZGVjbCk6IElnbm9yZSBhbiBvbGQgZXJyb3JfbWFya19ub2RlLgoKMjAwMC0wNi0yMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfeF92YV9hcmcpOiBDaGVjayBpZiBpbiBhIHRlbXBsYXRlIGRlY2wuCgkqIHB0LmMgKHRzdWJzdF9jb3B5LCBjYXNlIFZBX0FSR19FWFBSKTogVXNlIGJ1aWxkX3hfdmFfYXJnLgoKMjAwMC0wNi0yMCAgQWxleGFuZHJlIFBldGl0LUJpYW5jbyAgPGFwYmlhbmNvQGN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChwdXNoX2xhbmdfY29udGV4dCk6IFRZUEVfTkFNRSBnZXRzIHlvdSB0byB0aGUgSmF2YQoJdHlwZXMgREVDTHMuCgkqIGRlY2wuYyAoY2hlY2tfZ290byk6IENvbXB1dGVkIGdvdG9zIGFzc3VtZWQgT0suCgoyMDAwLTA2LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsLCBjYXNlIFRZUEVfREVDTCk6IEZpeCB0ZXN0IGZvciBUWVBFX0RFQ0xzCglmb3Igd2hpY2ggd2UgZG9uJ3QgbmVlZCB0byBsb29rIGZvciBpbnN0YW50aWF0aW9ucy4KCjIwMDAtMDYtMjEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBwYXJzZS55IChwcm9ncmFtKTogQWx3YXlzIGNhbGwgZmluaXNoX3RyYW5zbGF0aW9uX3VuaXQuCgkqIHBhcnNlLmMsIHBhcnNlLmg6IFJlYnVpbHQuCgoyMDAwLTA2LTIwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBtZXRob2QuYzogRG9uJ3QgaW5jbHVkZSBoYXJkLXJlZy1zZXQuaC4KCjIwMDAtMDYtMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBydHRpLmMgKGdldF9iYXNlX29mZnNldCk6IENvcGUgd2hlbiB2YmFzZSBmaWVsZCBpcyBpbiBhIGJhc2UuCgoyMDAwLTA2LTIwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9jb25kaXRpb25hbF9leHByKTogVXNlIFZPSURfVFlQRV9QLgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogTGlrZXdpc2UuCgkoY29udmVydF90b192b2lkKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IExpa2V3aXNlLgoJKiBleGNlcHQuYyAoY29tcGxldGVfcHRyX3JlZl9vcl92b2lkX3B0cl9wKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfZGVsZXRlKTogTGlrZXdpc2UuCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogTGlrZXdpc2UuCgkqIG9wdG1pemUuYyAoZGVjbGFyZV9yZXR1cm5fdmFyaWFibGUpOiBMaWtld2lzZS4KCSogcnR0aS5jIChnZXRfdGluZm9fZGVjbF9keW5hbWljKTogTGlrZXdpc2UuCgkoZ2V0X3R5cGVpZCk6IExpa2V3aXNlLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb21wb3NpdGVfcG9pbnRlcl90eXBlKTogTGlrZXdpc2UuCgkoY29tbW9uX3R5cGUpOiBMaWtld2lzZS4KCShidWlsZF9pbmRpcmVjdF9yZWYpOiBMaWtld2lzZS4KCShidWlsZF9iaW5hcnlfb3ApOiBMaWtld2lzZS4KCShidWlsZF94X2NvbXBvdW5kX2V4cHIpOiBMaWtld2lzZS4KCShjaGVja19yZXR1cm5fZXhwcik6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKGFkZF9leGNlcHRpb25fc3BlY2lmaWVyKTogTGlrZXdpc2UuCgoJKiBtYW5nbGUuYyAod3JpdGVfbWV0aG9kX3Bhcm1zKTogVXNlIGRpcmVjdCBjb21wYXJpc29uIGZvciBlbmQKCW9mIHBhcm1saXN0LgoKMjAwMC0wNi0xOSAgQmVuamFtaW4gQ2hlbGYgIDxjaGVsZkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChnZW5ydGxfdHJ5X2Jsb2NrKTogRGVjbGFyZSBmdW5jdGlvbi4KCShnZW5ydGxfaGFuZGxlcik6IExpa2V3aXNlLgoJKGdlbnJ0bF9jYXRjaF9ibG9jayk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jdG9yX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfc3Vib2JqZWN0KTogTGlrZXdpc2UuCgkoZ2VucnRsX2RlY2xfY2xlYW51cCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19wb3BsZXZlbCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19wdXNobGV2ZWwpOiBMaWtld2lzZS4KCShnZW5ydGxfY2xlYXJfb3V0X2Jsb2NrKTogTGlrZXdpc2UuCgkoZ2VucnRsX2dvdG9fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2lmX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfd2hpbGVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Zvcl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9zY29wZV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3N3aXRjaF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCShnZW5ydGxfYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9maW5pc2hfY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX25hbWVkX3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgoJKGdlbnJ0bF9iZWdpbl9zdG10X2V4cHIpOiBMaWtld2lzZS4KCShnZW5ydGxfZmluaXNoX3N0bXRfZXhwcik6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3Jfc3RtdCk6IFJlbW92ZWQgZmlyc3QgYXJndW1lbnQuCgkoZmluaXNoX3N3aXRjaF9zdG10KTogTGlrZXdpc2UuCgoJKiBzZW1hbnRpY3MuYyAoZ2VucnRsX3RyeV9ibG9jayk6IERlZmluZSBmdW5jdGlvbi4KCShnZW5ydGxfaGFuZGxlcik6IExpa2V3aXNlLgoJKGdlbnJ0bF9jYXRjaF9ibG9jayk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jdG9yX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfc3Vib2JqZWN0KTogTGlrZXdpc2UuCgkoZ2VucnRsX2RlY2xfY2xlYW51cCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19wb3BsZXZlbCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19wdXNobGV2ZWwpOiBMaWtld2lzZS4KCShnZW5ydGxfY2xlYXJfb3V0X2Jsb2NrKTogTGlrZXdpc2UuCgkoZ2VucnRsX2dvdG9fc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9leHByX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfZGVjbF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2lmX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfd2hpbGVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9kb19zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3JldHVybl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Zvcl9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2JyZWFrX3N0bXQpOiBMaWtld2lzZS4KCShnZW5ydGxfY29udGludWVfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9zY29wZV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX3N3aXRjaF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2Nhc2VfbGFiZWwpOiBMaWtld2lzZS4KCShnZW5ydGxfYmVnaW5fY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9maW5pc2hfY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGdlbnJ0bF9jb21wb3VuZF9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX2FzbV9zdG10KTogTGlrZXdpc2UuCgkoZ2VucnRsX25hbWVkX3JldHVybl92YWx1ZSk6IExpa2V3aXNlLgoJKGdlbnJ0bF9iZWdpbl9zdG10X2V4cHIpOiBMaWtld2lzZS4KCShnZW5ydGxfZmluaXNoX3N0bXRfZXhwcik6IExpa2V3aXNlLgoJKGZpbmlzaF9mb3Jfc3RtdCk6IFJlbW92ZWQgZmlyc3QgYXJndW1lbnQgYW5kIGdlbmVyYXRlIHJ0bAoJc3BlY2lmaWMgY29kZS4KCShmaW5pc2hfc3dpdGNoX3N0bXQpOiBMaWtld2lzZS4KCShkb19wb3BsZXZlbCk6IFJlbW92ZWQgZ2VuZXJhdGUgcnRsIHNwZWNpZmljIGNvZGUuCgkoZG9fcHVzaGxldmVsKTogTGlrZXdpc2UuCgkoYWRkX3RyZWUpOiBMaWtld2lzZS4KCShmaW5pc2hfZ290b19zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2V4cHJfc3RtdCk6IExpa2V3aXNlLgoJKGJlZ2luX2lmX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfaWZfc3RtdF9jb25kKTogTGlrZXdpc2UuCgkoZmluaXNoX3RoZW5fY2xhdXNlKTogTGlrZXdpc2UuCgkoYmVnaW5fZWxzZV9jbGF1c2UpOiBMaWtld2lzZS4KCShmaW5pc2hfZWxzZV9jbGF1c2UpOiBMaWtld2lzZS4KCShmaW5pc2hfaWZfc3RtdCk6IExpa2V3aXNlLgoJKGNsZWFyX291dF9ibG9jayk6IExpa2V3aXNlLgoJKGJlZ2luX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfd2hpbGVfc3RtdF9jb25kKTogTGlrZXdpc2UuCgkoZmluaXNoX3doaWxlX3N0bXQpOiBMaWtld2lzZS4KCShiZWdpbl9kb19zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2RvX2JvZHkpOiBMaWtld2lzZS4KCShmaW5pc2hfZG9fc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9yZXR1cm5fc3RtdCk6IExpa2V3aXNlLgoJKGJlZ2luX2Zvcl9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2Zvcl9pbml0X3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfZm9yX2NvbmQpOiBMaWtld2lzZS4KCShmaW5pc2hfZm9yX2V4cHIpOiBMaWtld2lzZS4KCShmaW5pc2hfYnJlYWtfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9jb250aW51ZV9zdG10KTogTGlrZXdpc2UuCgkoYmVnaW5fc3dpdGNoX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfc3dpdGNoX2NvbmQpOiBMaWtld2lzZS4KCShmaW5pc2hfY2FzZV9sYWJlbCk6IExpa2V3aXNlLgoJKGJlZ2luX3RyeV9ibG9jayk6IExpa2V3aXNlLgoJKGJlZ2luX2Z1bmN0aW9uX3RyeV9ibG9jayk6IExpa2V3aXNlLgoJKGZpbmlzaF90cnlfYmxvY2spOiBMaWtld2lzZS4KCShmaW5pc2hfY2xlYW51cF90cnlfYmxvY2spOiBMaWtld2lzZS4KCShmaW5pc2hfY2xlYW51cCk6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbl90cnlfYmxvY2spOiBMaWtld2lzZS4KCShmaW5pc2hfaGFuZGxlcl9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9mdW5jdGlvbl9oYW5kbGVyX3NlcXVlbmNlKTogTGlrZXdpc2UuCgkoYmVnaW5faGFuZGxlcik6IExpa2V3aXNlLgoJKGZpbmlzaF9oYW5kbGVyX3Bhcm1zKTogTGlrZXdpc2UuCgkoYmVnaW5fY2F0Y2hfYmxvY2spOiBMaWtld2lzZS4KCShmaW5pc2hfaGFuZGxlcik6IExpa2V3aXNlLgoJKGJlZ2luX2NvbXBvdW5kX3N0bXQpOiBMaWtld2lzZS4KCShmaW5pc2hfY29tcG91bmRfc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9hc21fc3RtdCk6IExpa2V3aXNlLgoJKGZpbmlzaF9sYWJlbF9zdG10KTogTGlrZXdpc2UuCgkoZmluaXNoX2xhYmVsX2RlY2wpOiBMaWtld2lzZS4KCShmaW5pc2hfc3Vib2JqZWN0KTogTGlrZXdpc2UuCgkoZmluaXNoX2RlY2xfY2xlYW51cCk6IExpa2V3aXNlLgoJKGZpbmlzaF9uYW1lZF9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KCShiZWdpbl9zdG10X2V4cHIpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RtdF9leHByKTogTGlrZXdpc2UuCgoJKiBkZWNsLmMgKGluaXRpYWxpemVfbG9jYWxfdmFyKTogQ2hhbmdlZCBjYWxsIHRvIGZpbmlzaF9leHByX3N0bXQKCXRvIGNhbGwgZ2VucnRsX2V4cHJfc3RtdCB3aGVuIGFwcHJvcHJpYXRlLgoKCSogaW5pdC5jIChiZWdpbl9pbml0X3N0bXRzKTogQ2hhbmdlZCBjYWxscyB0byBiZWdpbl9zdG10X2V4cHIgYW5kCgliZWdpbl9jb21wb3VuZF9leHByIHRvIGNhbGwgZ2VucnRsX2JlZ2luX3N0bXRfZXhwciBhbmQKCWdlbnJ0bF9iZWdpbl9jb21wb3VuZF9leHByIHdoZW4gYXBwcm9wcmlhdGUuCgkoZmluaXNoX2luaXRfc3RtdHMpOiBDaGFuZ2VkIGNhbGxzIHRvIGZpbmlzaF9jb21wb3VuZF9leHByIGFuZAoJZmluaXNoX3N0bXRfZXhwciB0byBjYWxsIGdlbnJ0bF9maW5pc2hfY29tcG91bmRfZXhwciBhbmQKCWdlbnJ0bF9maW5pc2hfc3RtdF9leHByIHdoZW4gYXBwcm9wcmlhdGUuCgkoZXhwYW5kX2RlZmF1bHRfaW5pdCk6IENoYW5nZWQgY2FsbCB0byBmaW5pc2hfZXhwcl9zdG10IHRvIGNhbGwKCWdlbnJ0bF9leHByX3N0bXQgd2hlbiBhcHByb3ByaWF0ZS4KCShidWlsZF92ZWNfaW5pdCk6IExpa2V3aXNlLgoKCSogcGFyc2UueSAoc2ltcGxlX3N0bXQpOiBSZW1vdmVkIGZpcnN0IGFyZ3VtZW50IGZyb20gY2FsbCB0bwoJZmluaXNoX2Zvcl9zdG10LiBSZW1vdmVkIGZpcnN0IGFyZ3VtZW50IGZyb20gY2FsbCB0bwoJZmluaXNoX3N3aXRjaF9zdG10LgoKCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgoJKiBwdC5jICh0c3Vic3RfZXhwcik6IFJlbW92ZWQgZmlyc3QgYXJndW1lbnQgZnJvbSBjYWxsIHRvCglmaW5pc2hfZm9yX3N0bXQuIFJlbW92ZWQgZmlyc3QgYXJndW1lbnQgZnJvbSBjYWxsIHRvCglmaW5pc2hfc3dpdGNoX3N0bXQuCgoyMDAwLTA2LTE2ICBCZW5qYW1pbiBDaGVsZiAgPGNoZWxmQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGVudW0gY3BsdXNfdHJlZV9jb2RlKTogQ2hhbmdlZCBfX0RVTU1ZIHRvCglDUF9EVU1NWV9UUkVFX0NPREUuIFJlbW92ZSAjaW5jbHVkZSAiYy1jb21tb24uZGVmIi4KCgkqIGxleC5jIChjcGx1c190cmVlX2NvZGVfdHlwZVtdKTogUmVtb3ZlZCAjaW5jbHVkZSAiYy1jb21tb24uZGVmIi4KCShjcGx1c190cmVlX2NvZGVfbGVuZ3RoW10pOiBMaWtld2lzZS4KCShjcGx1c190cmVlX2NvZGVfbmFtZVtdKTogTGlrZXdpc2UuCgkoaW5pdF9wYXJzZSk6IEFkZGVkIGNhbGwgdG8gYWRkX2NfdHJlZV9jb2Rlcy4gQ2hhbmdlZAoJTEFTVF9BTkRfVU5VU0VEX1RSRUVfQ09ERSB0byBMQVNUX0NfVFJFRV9DT0RFLgoKMjAwMC0wNi0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZmluaXNoX21lbV9pbml0aWFsaXplcnMpOiBEZWNsYXJlLgoJKGNvdW50X3RyZWVzKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKGJhc2VfaW5pdCk6IFVzZSBmaW5pc2hfbWVtX2luaXRpYWxpemVycy4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9tZW1faW5pdGlhbGl6ZXJzKTogTmV3IGZ1bmN0aW9uLgoKCSogdHJlZS5jIChjb3VudF90cmVlc19yKTogUHJvdG90eXBlLiAgVXNlIERBVEEgcGFyYW1ldGVyIHRvIHN0b3JlCgl0aGUgbnVtYmVyIG9mIHRyZWVzLgoJKG5fdHJlZXMpOiBSZW1vdmUuCgkoY291bnRfdHJlZXMpOiBEb24ndCB1c2UgaXQuCgoyMDAwLTA2LTE1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AcmVkaGF0LmNvbT4KCgkqIHRyZWUuYyAoY291bnRfdHJlZXMpOiBOZXcgZGVidWdnaW5nIGZ1bmN0aW9uLgoKCSogdHlwZWNrLmMgKGJ1aWxkX3hfZnVuY3Rpb25fY2FsbCk6IFVzZSBERUNMX0ZVTkNUSU9OX1RFTVBMQVRFX1AuCgkqIGluaXQuYyAoYnVpbGRfbWVtYmVyX2NhbGwpOiBQdWxsIG91dCB0aGUgbmFtZSBvZiBhIERFQ0wuCgoJKiBNYWtlZmlsZS5pbiAoc2VtYW50aWNzLm8sIHB0Lm8pOiBEZXBlbmQgb24gVElNRVZBUl9ILgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX2JvZHkpOiBQdXNoIHRvIFRWX0lOVEVHUkFUSU9OIGhlcmUuCgkqIG9wdGltaXplLmMgKG9wdGltaXplX2Z1bmN0aW9uKTogTm90IGhlcmUuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBQdXNoIHRvIFRWX1BBUlNFLgoKMjAwMC0wNi0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoc3RydWN0IGxhbmd1YWdlX2Z1bmN0aW9uKTogUmVtb3ZlIHhfYmFzZV9pbml0X2xpc3QKCWFuZCB4X21lbWJlcl9pbml0X2xpc3QuCgkoY3VycmVudF9iYXNlX2luaXRfbGlzdCk6IFJlbW92ZS4KCShjdXJyZW50X21lbWJlcl9pbml0X2xpc3QpOiBMaWtld2lzZS4KCShzZXR1cF92dGJsX3B0cik6IENoYW5nZSBwcm90b3R5cGUuCgkoZW1pdF9iYXNlX2luaXQpOiBMaWtld2lzZS4KCShleHBhbmRfbWVtYmVyX2luaXQpOiBMaWtld2lzZS4KCShyZWluaXRfcGFyc2VfZm9yX2Z1bmN0aW9uKTogUmVtb3ZlLgoJKiBkZWNsLmMgKHNhdmVfZnVuY3Rpb25fZGF0YSk6IERvbid0IGNsZWFyIHhfYmFzZV9pbml0X2xpc3QgYW5kCgl4X21lbWJlcl9pbml0X2xpc3QuCgkobWFya19sYW5ndWFnZV9mdW5jdGlvbik6IERvbid0IG1hcmsgdGhlbS4KCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogVHdlYWsgY29tbWVudC4KCShzb3J0X21lbWJlcl9pbml0KTogVGFrZSB0aGUgbGlzdCBvZiBpbml0aWFsaXplcnMgYXMgYW4gYXJndW1lbnQuCgkoc29ydF9iYXNlX2luaXQpOiBMaWtld2lzZS4KCShlbWl0X2Jhc2VfaW5pdCk6IExpa2V3aXNlLgoJKGV4cGFuZF9tZW1iZXJfaW5pdCk6IFJldHVybiB0aGUgaW5pdGlhbGl6ZXIuICBEb24ndCB1c2UgZ2xvYmFsCgl2YXJpYWJsZXMuCgkqIGxleC5jIChyZWluaXRfcGFyc2VfZm9yX2Z1bmN0aW9uKTogUmVtb3ZlLgoJKiBtZXRob2QuYyAoYnVpbGRfdGVtcGxhdGVfcGFybV9uYW1lcyk6IENvcnJlY3Qgc3Vic3RpdHV0aW9uLgoJKGRvX2J1aWxkX2NvcHlfY29uc3RydWN0b3IpOiBEb24ndCB1c2UgY3VycmVudF9tZW1iZXJfaW5pdF9saXN0CglhbmQgY3VycmVudF9iYXNlX2luaXRfbGlzdC4KCShzeW50aGVzaXplX21ldGhvZCk6IExpa2V3aXNlLgoJKiBwYXJzZS55IChiYXNlX2luaXQpOiBTcGxpdCBtZW0taW5pdGlhbGl6ZXJzIGludG8KCWJhc2UtaW5pdGlhbGl6ZXJzIGFuZCBmaWVsZC1pbml0aWFsaXplcnMuCgkobWVtYmVyX2luaXRfbGlzdCk6IEJ1aWxkIHVwIHRoZSBsaXN0IGhlcmUuCgkobWVtYmVyX2luaXQpOiBSZXR1cm4gdGhlIGluaXRpYWxpemVyLgoJKGZuLmRlcGZuKTogRG9uJ3QgdXNlIHJlaW5pdF9wYXJzZV9mb3JfZnVuY3Rpb24uCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBwdC5jIChjb252ZXJ0X25vbnR5cGVfYXJndW1lbnQpOiBEb24ndCBtYWtlIGFuIEFERFJfRVhQUiBvZiB0aGUKCUVSUk9SX01BUksuCgkodHN1YnN0X2V4cHIpOiBEb24ndCB1c2UgY3VycmVudF9tZW1iZXJfaW5pdF9saXN0CglhbmQgY3VycmVudF9iYXNlX2luaXRfbGlzdC4KCSh0c3Vic3RfZXhwcl92YWx1ZXMpOiBSZW5hbWUgdG8gLi4uCgkodHN1YnN0X2luaXRpYWxpemVyX2xpc3QpOiAuLi4gdGhpcy4gIFVzZSBjb252ZXJ0X2Zyb21fcmVmZXJlbmNlLgoJKiBzZW1hbnRpY3MuYyAoc2V0dXBfdnRibF9wdHIpOiBEb24ndCB1c2UgY3VycmVudF9tZW1iZXJfaW5pdF9saXN0CglhbmQgY3VycmVudF9iYXNlX2luaXRfbGlzdC4KCShiZWdpbl9mdW5jdGlvbl9kZWZpbml0aW9uKTogRG9uJ3QgY2FsbCByZWluaXRfcGFyc2VfZm9yX2Z1bmN0aW9uLgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogVXNlIFRSRUVfVkVDX0xFTkdUSCB3aXRoIHZlY3RvcnMuCgoJKiBlcnJvci5jIChkdW1wX2V4cHIpOiBIYW5kbGUgQUREUl9FWFBScyB3aXRoIFJFRkVSRU5DRV9UWVBFCgljb3JyZWN0bHkuCgoJKiBjcC10cmVlLmggKERFQ0xfUEVORElOR19JTkxJTkVfUCk6IFJlbGF4IGNoZWNraW5nLgoKMjAwMC0wNi0xNCAgQmVuamFtaW4gQ2hlbGYgIDxjaGVsZkBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChJRl9DT05EKTogTW92ZSB0byBjLWNvbW1vbi5oLgoJKFRIRU5fQ0xBVVNFKTogTGlrZXdpc2UuCgkoRUxTRV9DTEFVU0UpOiBMaWtld2lzZS4KCShXSElMRV9DT05EKTogTGlrZXdpc2UuCgkoV0hJTEVfQk9EWSk6IExpa2V3aXNlLgoJKERPX0NPTkQpOiBMaWtld2lzZS4KCShET19CT0RZKTogTGlrZXdpc2UuCgkoUkVUVVJOX0VYUFIpOiBMaWtld2lzZS4KCShFWFBSX1NUTVRfRVhQUik6IExpa2V3aXNlLgoJKEZPUl9JTklUX1NUTVQpOiBMaWtld2lzZS4KCShGT1JfQ09ORCk6IExpa2V3aXNlLgoJKEZPUl9FWFBSKTogTGlrZXdpc2UuCgkoRk9SX0JPRFkpOiBMaWtld2lzZS4KCShTV0lUQ0hfQ09ORCk6IExpa2V3aXNlLgoJKFNXSVRDSF9CT0RZKTogTGlrZXdpc2UuCgkoQ0FTRV9MT1cpOiBMaWtld2lzZS4KCShDQVNFX0hJR0gpOiBMaWtld2lzZS4KCShHT1RPX0RFU1RJTkFUSU9OKTogTGlrZXdpc2UuCgkoQ09NUE9VTkRfQk9EWSk6IExpa2V3aXNlLgoJKEFTTV9DVl9RVUFMKTogTGlrZXdpc2UuCgkoQVNNX1NUUklORyk6IExpa2V3aXNlLgoJKEFTTV9PVVRQVVRTKTogTGlrZXdpc2UuCgkoQVNNX0lOUFVUUyk6IExpa2V3aXNlLgoJKEFTTV9DTE9CQkVSUyk6IExpa2V3aXNlLgoJKERFQ0xfU1RNVF9ERUNMKTogTGlrZXdpc2UuCgkoU1RNVF9FWFBSX1NUTVQpOiBMaWtld2lzZS4KCShMQUJFTF9TVE1UX0xBQkVMKTogTGlrZXdpc2UuCgkoU0NPUEVfQkVHSU5fUCk6IExpa2V3aXNlLgoJKFNDT1BFX0VORF9QKTogTGlrZXdpc2UuCgkoU0NPUEVfU1RNVF9CTE9DSyk6IExpa2V3aXNlLgoJKFNDT1BFX05VTExJRklFRF9QKTogTGlrZXdpc2UuCgkoU0NPUEVfTk9fQ0xFQU5VUFNfUCk6IExpa2V3aXNlLgoJKFNDT1BFX1BBUlRJQUxfUCk6IExpa2V3aXNlLgoJKEFTTV9WT0xBVElMRV9QKTogTGlrZXdpc2UuCgkoU1RNVF9MSU5FTk8pOiBMaWtld2lzZS4KCShTVE1UX0xJTkVOT19GT1JfRk5fUCk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5kZWY6IFJlbW92ZWQgU1JDTE9DLCBTSVpFT0ZfRVhQUiwgQVJST1dfRVhQUiwKCUFMSUdOT0ZfRVhQUiwgRVhQUl9TVE1ULCBDT01QT1VORF9TVE1ULCBERUNMX1NUTVQsIElGX1NUTVQsCglGT1JfU1RNVCwgV0hJTEVfU1RNVCwgRE9fU1RNVCwgUkVUVVJOX1NUTVQsIEJSRUFLX1NUTVQsCglDT05USU5VRV9TVE1ULCBTV0lUQ0hfU1RNVCwgR09UT19TVE1ULCBMQUJFTF9TVE1ULCBBU01fU1RNVCwKCVNDT1BFX1NUTVQsIENBU0VfTEFCRUwsIFNUTVRfRVhQUi4KCgkqIE1ha2VmaWxlLmluIChDWFhfVFJFRV9IKTogQWRkZWQgJChzcmNkaXIpLy4uL2MtY29tbW9uLmRlZi4KCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX1NSQ1MpOiBBZGRlZCAkKHNyY2RpcikvYy1jb21tb24uZGVmLgoJKGNjMXBsdXMkKGV4ZWV4dCkpOiBBZGRlZCAkKHNyY2RpcikvYy1jb21tb24uZGVmLgoKCSogbGV4LmMgKGNwbHVzX3RyZWVfY29kZV90eXBlW10pOiBBZGRlZCAnI2luY2x1ZGUgImMtY29tbW9uLmRlZiInLgoJKGNwbHVzX3RyZWVfY29kZV9sZW5ndGhbXSk6IEFkZGVkICcjaW5jbHVkZSAiYy1jb21tb24uZGVmIicuCgkoY3BsdXNfdHJlZV9jb2RlX25hbWVbXSk6IEFkZGVkICcjaW5jbHVkZSAiYy1jb21tb24uZGVmIicuCgoyMDAwLTA2LTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChCSU5GT19PVkVSUklERV9BTE9OR19WSVJUVUFMX1BBVEgpOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKGRmc19maW5kX2ZpbmFsX292ZXJyaWRlcik6IFNldCBpdCBhcHByb3ByaWF0ZWx5LgoJKGRmc19idWlsdF92dHRfaW5pdHMpOiBDaGVjayBCSU5GT19PVkVSUklERV9BTE9OR19WSVJUVUFMX1BBVEggdG8KCWF2b2lkIHVubmVlZGVkIHNlY29uZGFyeSB2cHRycy4KCjIwMDAtMDYtMTMgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfc2Vjb25kYXJ5X3Z0YWJsZSk6IFNldCBERUNMX1VTRVJfQUxJR04uCgkoY2hlY2tfYml0ZmllbGRfZGVjbCwgY2hlY2tfZmllbGRfZGVjbCk6IExpa2V3aXNlLgoJKGJ1aWxkX3Z0Ymxfb3JfdmJhc2VfZmllbGQsIGJ1aWxkX2Jhc2VfZmllbGQpOiBMaWtld2lzZS4KCShsYXlvdXRfY2xhc3NfdHlwZSk6IFNldCBERUNMX1VTRVJfQUxJR04gcmVzcC4gQ0xBU1NUWVBFX1VTRVJfQUxJR04uCgkqIGRlY2wuYyAocmVjb3JkX3Vua25vd25fdHlwZSk6IFNldCBUWVBFX1VTRVJfQUxJR04uCgkoeGZlcl90YWcsIGZpbmlzaF9lbnVtKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGZpbmlzaF9idWlsdGluX3R5cGUpOiBMaWtld2lzZS4KCSogaW5pdC5jIChpbml0X2luaXRfcHJvY2Vzc2luZyk6IExpa2V3aXNlLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGdldF90aW5mb19kZWNsLCBzeW50aGVzaXplX3RpbmZvX2ZuKTogU2V0IERFQ0xfVVNFUl9BTElHTi4KCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ190eXBlKTogQWRkIHVzZXJfYWxpZ24gbWVtYmVyLgoJKENMQVNTVFlQRV9VU0VSX0FMSUdOKTogRGVmaW5lLgoKVHVlIEp1biAxMyAxNTo0ODowMyAyMDAwICBNYWNpZWogVy4gUm96eWNraSAgPG1hY3JvQGRzMi5wZy5nZGEucGw+CgoJKiBNYWtlLWxhbmcuaW4gKGMrKy5pbnN0YWxsLWNvbW1vbik6IEluc3RhbGwgZysrLWNyb3NzIGluCgkkKGdjY190b29sZGlyKS9iaW4gYXMgZysrIGFuZCBjKys7IGcrKyBpbiAkKGJpbmRpcikgYXMKCSQodGFyZ2V0X2FsaWFzKS1nKysgYW5kICQodGFyZ2V0X2FsaWFzKS1jKysuCgoyMDAwLTA2LTEyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAodmNhbGxfb2Zmc2V0X2RhdGFfcyk6IEFkZCBsYXN0X2luaXQgYW5kIGZucy4KCShvdmVycmlkZXMpOiBSZW5hbWUgdG8gc2FtZV9zaWduYXR1cmVfcC4KCShkZnNfZmluZF9maW5hbF9vdmVycmlkZXIpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkobWFya19vdmVycmlkZXJzKTogTGlrZXdpc2UuCgkod2Fybl9oaWRkZW4pOiBMaWtld2lzZS4KCShidWlsZF92dGJsX2luaXRpYWxpemVyKTogUmVvcmdhbml6ZSBtYWNoaW5lcnkgZm9yIGJ1aWxkaW5nIHRoaW5ncwoJYXQgbmVnYXRpdmUgb2Zmc2V0cy4KCShidWlsZF92Y2FsbF9hbmRfdmJhc2VfdnRibF9lbnRyaWVzKTogTGlrZXdpc2UuCgkoYnVpbGRfdmJhc2Vfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IExpa2V3aXNlLgoJKGRmc19idWlsZF92Y2FsbF9vZmZzZXRfdnRibF9lbnRyaWVzKTogQ29ycmVjdCBvcmRlciBvZiB2Y2FsbAoJb2Zmc2V0IGVudHJpZXMuICBEbyBub3QgY3JlYXRlIHR3byBlbnRyaWVzIGZvciBmdW5jdGlvbnMgd2l0aCB0aGUKCXNhbWUgc2lnbmF0dXJlLgoJKGJ1aWxkX3ZjYWxsX29mZnNldF92dGJsX2VudHJpZXMpOiBJbml0aWFsaXplIHZvZC0+Zm5zLgoJKGJ1aWxkX3J0dGlfdnRibF9lbnRyaWVzKTogUmVvcmdhbml6ZSBtYWNoaW5lcnkgZm9yIGJ1aWxkaW5nIHRoaW5ncwoJYXQgbmVnYXRpdmUgb2Zmc2V0cy4KCgkqIG9wdGltaXplLmMgKGV4cGFuZF9jYWxsX2lubGluZSk6IERvbid0IHJlY3Vyc2UgaW50byB0aGUgY29kZQoJdXNlZCB0byBpbml0aWFsaXplIHRoZSBwYXJhbWV0ZXJzIG1vcmUgdGhhbiBvbmNlLgoKMjAwMC0wNi0xMSAgTWFyayBNaXRjaGVsbCA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWFuZ2xlLmMgKE5FU1RFRF9URU1QTEFURV9NQVRDSCk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkoaXNfc3RkX3N1YnN0aXR1dGlvbik6IERvbid0IGNoZWNrIENMQVNTVFlQRV9VU0VfVEVNUExBVEUgaGVyZS4KCShmaW5kX3N1YnN0aXR1dGlvbik6IE9ubHkgdXNlIHRoZSBgU2EnIHN1YnN0aXR1dGlvbiBmb3IKCXN0ZDo6YWxsb2NhdG9yLCBub3QgaW5zdGFudGlhdGlvbnMgb2YgaXQuCgkod3JpdGVfdGVtcGxhdGVfcHJlZml4KTogTW92ZSBjb21tZW50LiAgT25seSB1c2UgYSBUUkVFX0xJU1QgdG8KCXJlcHJlc2VudCBzdWJzdGl0dXRpb25zIGZvciBhIG1lbWJlciB0ZW1wbGF0ZS4KCSh3cml0ZV9hcnJheV90eXBlKTogTWFuZ2xlIGFycmF5IGRpbWVuc2lvbnMgY29ycmVjdGx5LgoJKiBvcHRpbWl6ZS5jIChtYXliZV9jbG9uZV9ib2R5KTogQ29weSBtb3JlIGluZm9ybWF0aW9uIGZyb20gdGhlCgljbG9uZWQgZnVuY3Rpb24uCgkqIHB0LmMgKHJlZ2VuZXJhdGVfZGVjbF9mcm9tX3RlbXBsYXRlKTogUHJlc2VydmUgREVDTF9VU0VfVEVNUExBVEUKCW9uIHRoZSByZWdlbmVyYXRlZCBkZWNsYXJhdGlvbi4KCjIwMDAtMDYtMTEgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAdmFsaW51eC5jb20+CgkgICAgTWFyayBNaXRjaGVsbCA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlKTogQ2xhcmlmeSBjb21tZW50LgoJKGJ1aWxkX2N0b3JfdnRibF9ncm91cCk6IFBhc3MgdGhlIG1vc3QgZGVyaXZlZCB0eXBlIHRvCglidWlsZF92dGFibGUuCgoyMDAwLTA2LTExICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBkZWNsMi5jIChjb21wYXJlX29wdGlvbnMpOiBEb24ndCBuZWVkbGVzc2x5IGNhc3QgYXdheSBjb25zdC1uZXNzLgoKMjAwMC0wNi0xMCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoYWRkX2JpbmRpbmcpOiBIYW5kbGUgZHVwbGljYXRlIGRlY2xhcmF0aW9ucyBvZiBleHRlcm5hbAoJdmFyaWFibGVzLgoKMjAwMC0wNi0wOSAgQ2hpcCBTYWx6ZW5iZXJnICA8Y2hpcEB2YWxpbnV4LmNvbT4KCSAgICBNYXJrIE1pdGNoZWxsIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtYW5nbGUuYyAod3JpdGVfbnVtYmVyKTogVGFrZSBhbiB1bnNpZ25lZCBIT1NUX1dJREVfSU5UIGFzIGFuCglhcmd1bWVudC4KCSh3cml0ZV9zaWduZWRfbnVtYmVyKTogTmV3IG1hY3JvLgoJKHdyaXRlX3Vuc2lnbmVkX251bWJlcik6IExpa2V3aXNlLgoJKHdyaXRlX3NvdXJjZV9uYW1lKTogVXNlIHRoZW0uCgkod3JpdGVfbnVtYmVyKTogSGFuZGxlIHNpZ25lZCBhbmQgdW5zaWduZWQgdmFsdWVzLgoJKHdyaXRlX2ludGVnZXJfY3N0KTogVXNlIHRyZWVfaW50X2NzdF9zZ24sIGFuZCB1c2UKCXdyaXRlX3Vuc2lnbmVkX251bWJlciBvciB3cml0ZV9zaWduZWRfbnVtYmVyIGFzIGFwcHJvcHJpYXRlLgoJKHdyaXRlX2Rpc2NyaW1pbmF0b3IpOiBVc2Ugd3JpdGVfdW5zaWduZWRfbnVtYmVyIG9yCgl3cml0ZV9zaWduZWRfbnVtYmVyIGFzIGFwcHJvcHJpYXRlLgoJKHdyaXRlX3RlbXBsYXRlX2FyZ19saXRlcmFsKTogTGlrZXdpc2UuCgkod3JpdGVfYXJyYXlfdHlwZSk6IFVzZSB0cmVlX2xvd19jc3QuCgkod3JpdGVfdGVtcGxhdGVfcGFybSk6ICBVc2Ugd3JpdGVfdW5zaWduZWRfbnVtYmVyIG9yCgl3cml0ZV9zaWduZWRfbnVtYmVyIGFzIGFwcHJvcHJpYXRlLgoJKHdyaXRlX3N1YnN0aXR1dGlvbik6IEFkanVzdCBjYWxsIHRvIHdyaXRlX251bWJlci4KCSh3cml0ZV90eXBlKTogR2V0IHRoZSBUWVBFX01BSU5fVkFSSUFOVCBiZWZvcmUgbWFuZ2xpbmcgaXQuCgkod3JpdGVfZXhwcmVzc2lvbik6IEhhbmRsZSBub24tdHlwZSB0ZW1wbGF0ZSBhcmd1bWVudHMgb2YKCXJlZmVyZW5jZSB0eXBlIGNvcnJlY3RseS4KCShtYW5nbGVfdGh1bmspOiBVc2Ugd3JpdGVfc2lnbmVkX251bWJlci4KCjIwMDAtMDYtMDkgIENoaXAgU2FsemVuYmVyZyAgPGNoaXBAdmFsaW51eC5jb20+CgoJKiBtYW5nbGUuYyAoZmluZF9zdWJzdGl0aW9uKTogRG9uJ3QgbWFuZ2xlIG9iamVjdHMgd2l0aCB0eXBlbmFtZQoJc3Vic3RpdHV0aW9ucyAoZS5nLiAiY2luIiBhcyAiU2kiKS4KCjIwMDAtMDYtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNhbGwuYyAoYWRkX2NhbmRpZGF0ZSk6IFVzZSBnZ2NfYWxsb2NfY2xlYXJlZC4KCSogZGVjbC5jIChsb29rdXBfbGFiZWwpOiBMaWtld2lzZS4KCSogbGV4LmMgKHJldHJvZml0X2xhbmdfZGVjbCk6IExpa2V3aXNlLgoKMjAwMC0wNi0wOSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LnNvbWEucmVkaGF0LmNvbT4KCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IFB1c2ggdG8gVFZfRVhQQU5ELgoJKiBvcHRpbWl6ZS5jIChvcHRpbWl6ZV9mdW5jdGlvbik6IFB1c2ggdG8gVFZfSU5URUdSQVRJT04uCgkqIGRlY2wuYyAoc3RhcnRfZnVuY3Rpb24pOiBBbHdheXMgY2FsbCBhbm5vdW5jZV9mdW5jdGlvbi4KCgkqIHRpbmZvMi5jYzogSnVzdCBkZWNsYXJlIGFib3J0LgoKMjAwMC0wNi0wOSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogbGV4LmMgKERFRl9PUEVSQVRPUik6IFNheSBgb3BlcmF0b3JAJyAtbm90LSBgb3BlcmF0b3IgQCcKCXdoZW5ldmVyIEAgaXMgYSBzeW1ib2xpYyBuYW1lLgoKMjAwMC0wNi0wOCAgSmFrdWIgSmVsaW5layAgPGpha3ViQHJlZGhhdC5jb20+CgoJKiBtZXRob2QuYyAobWFrZV90aHVuayk6IENsZWFyIERFQ0xfVlRUX1BBUk0gaW4gdGh1bmsuCgoyMDAwLTA2LTA3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChwdXNoZGVjbCk6IExvb2sgdXAgZnVuY3Rpb25zIGJ5IERFQ0xfTkFNRSwgbm90CglERUNMX0FTU0VNQkxFUl9OQU1FLgoKMjAwMC0wNi0wNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wyLmMgKGNfbGFuZ3VhZ2UpOiBEZWZpbmUuCgoyMDAwLTA2LTA2ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsZXguYyAobGFuZ19pbml0X29wdGlvbnMpOiBUd2Vhay4KCgkqIGRlY2wyLmM6IFJlbW92ZSAjaW5jbHVzaW9uIG9mIGRpYWdub3N0aWMuaAoJKGxhbmdfZGVjb2RlX29wdGlvbik6IE1vdmUgZGlhZ25vc3RpYyBmb3JtYXR0aW5nIG9wdGlvbnMgdG8KCXRvcGxldmVsLgoKCSogbGFuZy1vcHRpb25zLmg6IFJlbW92ZSBkb2N1bWVudGF0aW9uIGZvciBkaWFnbm9zdGljIG9wdGlvbnMuCgoJKiBNYWtlZmlsZS5pbiAobGV4Lm8pOiBEZXBlbmRzIHVwb24gZGlhZ25vc3RpYy5oCgoyMDAwLTA2LTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChyZWRlY2xhcmF0aW9uX2Vycm9yX21lc3NhZ2UpOiBJZiB0d28gVEVNUExBVEVfREVDTHMgaGF2ZQoJdGhlIHNhbWUgREVDTF9SRVNVTFQsIGl0J3Mgbm90IGEgcmVkZWZpbml0aW9uLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IFJlbW92ZSBjb2RlIHRvIGhhbmRsZSBpbGxlZ2FsCglzcGVjaWFsaXphdGlvbnMuCgoyMDAwLTA2LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZXhjZXB0aW9uLmNjOiAoX19laF9hbGxvYywgX19laF9mcmVlKTogTW92ZWQgdG8gbGliZ2NjMi5jCgoyMDAwLTA2LTA1ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuc29tYS5yZWRoYXQuY29tPgoKCSogc2VhcmNoLmMgKG1heWJlX3N1cHByZXNzX2RlYnVnX2luZm8pOiBEb24ndCBjaGVjawoJQ0xBU1NUWVBFX0lOVEVSRkFDRV9PTkxZIGlmIENMQVNTVFlQRV9JTlRFUkZBQ0VfS05PV04gaXNuJ3Qgc2V0LgoKCSogcHQuYyAobWFya19kZWNsX2luc3RhbnRpYXRlZCk6IERvIFNFVF9ERUNMX0VYUExJQ0lUX0lOU1RBTlRJQVRJT04KCWhlcmUgaWYgZXh0ZXJuX3AuCgoJUmVtZW1iZXIgaW5zdGFudGlhdGlvbiBjb250ZXh0IGluIGRlZmVycmVkIGluc3RhbnRpYXRpb25zLgoJKiBjcC10cmVlLmggKHN0cnVjdCB0aW5zdF9sZXZlbCk6IFJlbW92ZS4KCShUSU5TVF9ERUNMLCBUSU5TVF9MSU5FLCBUSU5TVF9GSUxFKTogTmV3IG1hY3Jvcy4KCSogcHQuYyAoY3VycmVudF90aW5zdF9sZXZlbCk6IE5vdyBhIHRyZWUuCgkocHJpbnRfdGVtcGxhdGVfY29udGV4dCwgcHVzaF90aW5zdF9sZXZlbCwgcG9wX3RpbnN0X2xldmVsLAoJdGluc3RfZm9yX2RlY2wpOiBBZGp1c3QuCgkocmVvcGVuX3RpbnN0X2xldmVsKTogTmV3IGZuLgoJKGluaXRfcHQpOiBSZWdpc3RlciBjdXJyZW50X3RpbnN0X2xldmVsIGFzIGEgcm9vdC4KCShhZGRfcGVuZGluZ190ZW1wbGF0ZSk6IFB1dCBjdXJyZW50X3RpbnN0X2xldmVsIGluIFRSRUVfUFVSUE9TRQoJb2YgdGhlIHBlbmRpbmcgdGVtcGxhdGVzIGxpc3QuCgkoaW5zdGFudGlhdGVfcGVuZGluZ190ZW1wbGF0ZXMpOiBBZGp1c3QuICBDYWxsIHJlb3Blbl90aW5zdF9sZXZlbC4KCSogbGV4LmMgKGV4dHJhY3RfaW50ZXJmYWNlX2luZm8pOiBBZGp1c3QuCgkqIGRlY2wyLmMgKHdhcm5faWZfdW5rbm93bl9pbnRlcmZhY2UpOiBBZGp1c3QuCgoyMDAwLTA2LTA1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoaW5kaXJlY3RfcHJpbWFyeV9iYXNlX3ApOiBOZXcgZnVuY3Rpb24uCgkoZGV0ZXJtaW5lX3ByaW1hcnlfYmFzZSk6IFVzZSBpdC4KCjIwMDAtMDYtMDUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJVXBkYXRlIG5ldy1hYmkgZHluYW1pYyBjYXN0IGFsZ29yaXRobS4KCSogdGluZm8uY2MgKF9fY2xhc3NfdHlwZV9pbmZvOjpfX2R5bmNhc3RfcmVzdWx0KTogQWRkCgl3aG9sZV9kZXRhaWxzLiBBZGp1c3QgY29uc3RydWN0b3IuCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvOjpfX2RvX2R5bmNhc3QpOiBBZGp1c3QgZm9yIHZtaV9mbGFncy4KCUF2b2lkIHVubmVjZXNzYXJ5IHNlYXJjaGluZy4KCShfX2R5bmFtaWNfY2FzdCk6IEFkanVzdCBmb3IgX19keW5jYXN0X3Jlc3VsdDo6d2hvbGVfZGV0YWlscy4KCk1vbiBKdW4gIDUgMDY6NDg6NTUgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBEb24ndCBjYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcy4KCSogdHJlZS5jIChidWlsZF9jcGx1c19hcnJheV90eXBlXzEpOiBMaWtld2lzZS4KCjIwMDAtMDYtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpci50ZXhpOiBDb3JyZWN0IHR5cG8uCgkqIG1hbmdsZS5jICh3cml0ZV9leHByZXNzaW9uKTogSGFuZGxlIG5vbi10eXBlIHRlbXBsYXRlIGFyZ3VtZW50cwoJd2l0aCByZWZlcmVuY2UgdHlwZS4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX3ZhbHVlKTogTGlrZXdpc2UuCgkqIHB0LmMgKGNvbnZlcnRfbm9udHlwZV9hcmd1bWVudCk6IEV4cGxpY2l0bHkgcmVwcmVzZW50IGNvbnZlcnNpb24KCXRvIGEgcmVmZXJlbmNlIHdpdGggYW4gQUREUl9FWFBSLgoJKHVuaWZ5KTogQWx3YXlzIHVuaWZ5IGFyZ3VtZW50cyBpbiBsZWZ0LXRvLXJpZ2h0IG9yZGVyLgoKMjAwMC0wNi0wMyAgQWxleCBTYW11ZWwgICAgPHNhbXVlbEBjb2Rlc291cmNlcnkuY29tPgoJICAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKENYWF9TUkNTKTogQWRkIG1hbmdsZS5jLgoJKiBNYWtlZmlsZS5pbiAoQ1hYX09CSlMpOiBBZGQgbWFuZ2xlLm8uCgkobWFuZ2xlLm8pOiBOZXcgcnVsZS4KCgkqIGNsYXNzLmMgKGxvY2FsX2NsYXNzZXMpOiBOZXcgdmFyaWFibGUuCgkqIGNsYXNzLmMgKGdldF92dGFibGVfbmFtZSk6IFVzZSBtYW5nbGVfdnRhYmxlX2Zvcl90eXBlIGZvciBuZXcgQUJJLgoJKGdldF92dHRfbmFtZSk6IFVzZSBtYW5nbGVfdnR0X25hbWUgZm9yIG5ldyBBQkkuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBsb2NhbF9jbGFzc2VzLgoJKGJ1aWxkX2N0b3JfdnRibF9ncm91cCk6IFVzZSBtYW5nbGVfY3Rvcl92dGJsX2Zvcl90eXBlIGZvciBuZXcgQUJJLgoJKiBjcC10cmVlLmggKGNwX3RyZWVfaW5kZXgpOiBBZGQgQ1BUSV9TVERfSURFTlRJRklFUi4KCShzdGRfaWRlbnRpZmllcik6IE5ldyBtYWNyby4KCShERUNMX1ZPTEFUSUxFX01FTUZVTkNfUCk6IE5ldyBtYWNyby4KCShERUNMX05BTUVTUEFDRV9TVERfUCk6IExpa2V3aXNlLgoJKGxvY2FsX2NsYXNzZXMpOiBEZWNsYXJlLgoJKGdldF9tb3N0bHlfaW5zdGFudGlhdGVkX2Z1bmN0aW9uX3R5cGUpOiBEZWNsYXJlLgoJKGluaXRfbWFuZ2xlKTogRGVjbGFyZS4KCShtYW5nbGVfZGVjbCk6IExpa2V3aXNlLgoJKG1hbmdsZV90eXBlX3N0cmluZyk6IExpa2V3aXNlLgoJKG1hbmdsZV90eXBlKTogTGlrZXdpc2UuCgkobWFuZ2xlX3R5cGVpbmZvX2Zvcl90eXBlKTogTGlrZXdpc2UuCgkobWFuZ2xlX3R5cGVpbmZvX3N0cmluZ19mb3JfdHlwZSk6IExpa2V3aXNlLgoJKG1hbmdsZV92dGJsX2Zvcl90eXBlKTogTGlrZXdpc2UuCgkobWFuZ2xlX3Z0dF9mb3JfdHlwZSk6IExpa2V3aXNlLgoJKG1hbmdsZV9jdG9yX3Z0YmxfZm9yX3R5cGUpOiBMaWtld2lzZS4KCShtYW5nbGVfdGh1bmspOiBMaWtld2lzZS4KCShtYW5nbGVfY29udl9vcF9uYW1lX2Zvcl90eXBlKTogTGlrZXdpc2UuCgkobWFuZ2xlX2d1YXJkX3ZhcmlhYmxlKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAocHVzaHRhZyk6IEtlZXAgdHJhY2sgb2YgbG9jYWwgY2xhc3Nlcy4KCShpbml0aWFsaXplX3ByZWRlZmluZWRfaWRlbnRpZmllcnMpOiBJbml0aWFsaXplIHN0ZF9pZGVudGlmaWVyLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogVXNlIHN0ZF9pZGVudGlmaWVyLgoJKHN0YXJ0X2RlY2wpOiBEb24ndCB0cmVhdCBpbnN0YW50aWF0aW9ucyBhcyBzcGVjaWFsaXphdGlvbnMuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCShncm9rdmFyZGVjbCk6IENhbGwgbWFuZ2xlX2RlY2wgZm9yIG5ldyBBQkkuICBPbmx5IHNldCBtYW5nbGVkCgluYW1lIGZvciBmdWxseS1pbnN0YW50aWF0ZWQgdGVtcGxhdGVzLgoJKiBkZWNsMi5jIChncm9rY2xhc3Nmbik6IFVzZSBzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsIGZvcgoJZGVzdHJ1Y3RvcnMgd2l0aCB0aGUgbmV3IEFCSS4KCShmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBVc2UgbWFuZ2xlX2RlY2wgdW5kZXIgdGhlIG5ldyBBQkkuCgkoZ3Jva2ZpZWxkKTogVXNlIG1hbmdsZV90eXBlIGZvciBuZXcgQUJJLgoJKGdyb2tvcHR5cGVuYW1lKTogVXNlIG1hbmdsZV9jb252X29wX2Zvcl90eXBlIGZvciBuZXcgQUJJLgoJKGdldF9zZW50cnkpOiBVc2UgbWFuZ2xlX2d1YXJkX3ZhcmlhYmxlIGZvciBuZXcgQUJJLgoJKHN0YXJ0X3N0YXRpY19pbml0aWFsaXphdGlvbl9vcl9kZXN0cnVjdGlvbik6IExpa2V3aXNlLgoJKiBleHByLmMgKGV4dHJhY3RfYWdncl9pbml0KTogUmVtb3ZlLgoJKGV4dHJhY3Rfc2NhbGFyX2luaXQpOiBMaWtld2lzZS4KCShleHRyYWN0X2luaXQpOiBSZW1vdmUgI2lmIDAnZCBjb2RlLgoJKiBtYW5nbGUuYzogTmV3IGZ1bmN0aW9uLgoJKiBtZXRob2QuYyAoYnVpbGRfbWFuZ2xlZF9uYW1lKTogQXNzZXJ0IG5vdCBmbGFnX25ld19hYmkuCgkoYnVpbGRfc3RhdGljX25hbWUpOiBMaWtld2lzZS4KCShidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBMaWtld2lzZS4KCShidWlsZF90eXBlbmFtZV9vdmVybG9hZCk6IExpa2V3aXNlLgoJKGJ1aWxkX292ZXJsb2FkX3dpdGhfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX292ZXJsb2FkX25hbWUpOiBMaWtld2lzZS4KCShnZXRfY3Rvcl92dGJsX25hbWUpOiBMaWtld2lzZS4KCShzdGFydF9zcXVhbmdsaW5nKTogTGlrZXdpc2UuCgkoZ2V0X2lkXzIpOiBMaWtld2lzZS4KCShzZXRfbWFuZ2xlZF9uYW1lX2Zvcl9kZWNsKTogQ2FsbCBtYW5nbGVfZGVjbCBmb3IgbmV3IEFCSS4KCShpbml0X21ldGhvZCk6IENhbGwgaW5pdF9tYW5nbGUgZm9yIG5ldyBBQkkuCgkobWFrZV90aHVuayk6IENhbGwgbWFuZ2xlX3RodW5rIGZvciBuZXcgQUJJLgoJKiBvcGVyYXRvcnMuZGVmOiBDb3JyZWN0IG5ldyBBQkkgbWFuZ2xpbmdzIGZvciB0aGUgYCUnIG9wZXJhdG9yLgoJQWRkIGA6Oicgb3BlcmF0b3IuCgkqIHB0LmMgKGJ1aWxkX3RlbXBsYXRlX2RlY2wpOiBDb3B5IERFQ0xfT1ZFUkxPQURFRF9PUEVSQVRPUl9QIGFuZAoJREVDTF9BU1NJR05NRU5UX09QRVJBVE9SX1AgdG8gdGhlIFRFTVBMQVRFX0RFQ0wuCgkobG9va3VwX3RlbXBsYXRlX2NsYXNzKTogQ2FsbCBtYW5nbGVfZGVjbCBmb3IgbmV3IEFCSS4KCShnZXRfbW9zdGx5X2luc3RhbnRpYXRlZF9mdW5jdGlvbl90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOiBVc2UgaXQuCgkodHN1YnN0X2RlY2wpOiBVc2Ugc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbCBmb3IgZGVzdHJ1Y3RvcnMgd2l0aAoJdGhlIG5ldyBBQkkuICBVc2UgbWFuZ2xlX2NvbnZfb3BfbmFtZV9mb3JfdHlwZSBmb3IgaW5zdGFudGlhdGVkCgljb252ZXJzaW9uIG9wIG5hbWVzLgoJKiBydHRpLmMgKHRpbmZvX25hbWUpOiBDYWxsIG1hbmdsZV90eXBlX3N0cmluZyBmb3IgbmV3IEFCSS4KCShnZXRfdGluZm9fZGVjbCk6IENhbGwgbWFuZ2xlX3R5cGVpbmZvX2Zvcl90eXBlIGZvciBuZXcJQUJJLgoJKHRpbmZvX2Jhc2VfaW5pdCk6ICBMaWtld2lzZS4gIE1hbmdsZSB0eXBlaW5mbyBzdHJpbmcgbmFtZSB3aXRoCgltYW5nbGVfdHlwZWluZm9fc3RyaW5nX2Zvcl90eXBlLgoKMjAwMC0wNi0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoVE1QTF9BUkdTX0xFVkVMKTogQ2xhcmlmeSBjb21tZW50LgoJKElOTkVSTU9TVF9URU1QTEFURV9BUkdTKTogTmV3IG1hY3JvLgoJKGlubmVybW9zdF9hcmdzKTogUmVtb3ZlLgoJKGdldF9pbm5lcm1vc3RfdGVtcGxhdGVfYXJncyk6IE5ldyBmdW5jdGlvbi4KCSogZGVjbDIuYyAoYXJnX2Fzc29jX2NsYXNzKTogVXNlIElOTkVSTU9TVF9URU1QTEFURV9BUkdTLgoJKiBlcnJvci5jIChkdW1wX2Z1bmN0aW9uX2RlY2wpOiBCZSBjYXV0aW9uIHdoZW4gdXNpbmcKCW1vc3RfZ2VuZXJhbF90ZW1wbGF0ZS4KCSogbWV0aG9kLmMgKGJ1aWxkX3RlbXBsYXRlX3Bhcm1fbmFtZXMpOiAgVXNlCglJTk5FUk1PU1RfVEVNUExBVEVfQVJHUy4KCSogcHQuYyAoYWRkX3RvX3RlbXBsYXRlX2FyZ3MpOiBUaWR5IGNvbW1lbnQKCShnZXRfaW5uZXJtb3N0X3RlbXBsYXRlX2FyZ3MpOiBOZXcgZnVuY3Rpb24uCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBDbGVhciBERUNMX0lOSVRJQUwgZm9yIGEgbmV3CglzcGVjaWFsaXphdGlvbi4KCShwcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBVc2UgSU5ORVJNT1NUX1RFTVBMQVRFX0FSR1MuCglUaWR5LgoJKHB1c2hfdGVtcGxhdGVfZGVjbCk6IEFsd2F5cyByZWdpc3RlciBzcGVjaWFsaXphdGlvbnMgb2YgdGhlIG1vc3QKCWdlbmVyYWwgdGVtcGxhdGUuCgkoY29udmVydF90ZW1wbGF0ZV9hcmd1bWVudCk6IFVzZSBJTk5FUk1PU1RfVEVNUExBVEVfQVJHUy4KCShjb2VyY2VfdGVtcGxhdGVfcGFybXMpOiBMaWtld2lzZS4KCShsb29rdXBfdGVtcGxhdGVfY2xhc3MpOiBMaWtld2lzZS4KCShpbm5lcm1vc3RfYXJncyk6IFJlbW92ZS4KCSh0c3Vic3RfZGVjbCk6IFVzZSBJTk5FUk1PU1RfVEVNUExBVEVfQVJHUy4KCSh0c3Vic3RfZGVjbCk6IEhhbmRsZSB0cmlja3kgc3BlY2lhbGl6YXRpb25zLiAgVXNlCglnZXRfaW5uZXJtb3N0X3RlbXBsYXRlX2FyZ3MuCgkoaW5zdGFudGlhdGVfdGVtcGxhdGUpOiBTaW1wbGlmeSBoYW5kbGluZyBvZiBwYXJ0aWFsCglpbnN0YW50aWF0aW9ucy4KCShnZXRfY2xhc3NfYmluZGluZ3MpOiBVc2UgSU5ORVJNT1NUX1RFTVBMQVRFX0FSR1MuCgkobW9zdF9nZW5lcmFsX3RlbXBsYXRlKTogUmVpbXBsZW1lbnQsIGluIGEgbW9yZSBzdHJhaWdodGZvcndhcmQKCW1hbm5lci4KCShyZWdlbmVyYXRlX2RlY2xfZnJvbV90ZW1wbGF0ZSk6IFR3ZWFrIGZvcm1hdHRpbmcuICBVc2UKCVRNUExfQVJHU19ERVBUSCBmb3IgY2xhcml0eS4KCShzZXRfbWFuZ2xlZF9uYW1lX2Zvcl90ZW1wbGF0ZV9kZWNsKTogVXNlIElOTkVSTU9TVF9BUkdTLgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRHVtcCBpbmZvcm1hdGlvbiBhYm91dCB0aHVua3MuCgoyMDAwLTA2LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZGVjbC5jIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFNldCBsYW5nX2dldF9hbGlhc19zZXQgZmlyc3QgdGhpbmcuCgoyMDAwLTA2LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogZGVjbDIuYyAodW5zdXBwb3J0ZWRfb3B0aW9ucyk6IEZpeCB0eXBvLCBtYWtlIGNvbnN0LgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IEZpeCBic2VhcmNoIGFyZ3VtZW50IG9yZGVyLgoKMjAwMC0wNi0wMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogUmVtb3ZlIGNoZWNrIGZvciBUUkVFX0FERFJFU1NBQkxFCglvbiBGSUVMRF9ERUNMcy4KCldlZCBNYXkgMzEgMTQ6MDk6MDAgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNwLXRyZWUuaCAoY19nZXRfYWxpYXNfc2V0KTogRGVsZXRlZC4KCSogTWFrZWZpbGUuaW4gKGRlY2wubyk6IEluY2x1ZGUgLi4vZXhwci5oLgoJKiBkZWNsLmMgKGV4cHIuaCk6IEluY2x1ZGUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcyBmb3IgYXJyYXlzLgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuCglTZXQgVFJFRV9BRERSRVNTQUJMRSBmb3IgZmllbGRzIHRoYXQgYXJlbid0IGJpdGZpZWxkcy4KCSogdHJlZS5jIChidWlsZF9jcGx1c19hcnJheV90eXBlXzEpOiBDYWxsIHJlY29yZF9jb21wb25lbnRfYWxpYXNlcy4KCjIwMDAtMDUtMzEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUmVtb3ZlIGd1aWRpbmcgZGVjbGFyYXRpb24gc3VwcG9ydC4KCSogY3AvY3AtdHJlZS5oIChmbGFnX2R1bXBfdHJhbnNsYXRpb25fdW5pdCk6IE1ha2UgaXQgY29uc3QuCgkoZmxhZ19ndWlkaW5nX2RlY2xzKTogUmVtb3ZlLgoJKiBjYWxsLmMgKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBSZW1vdmUgc3VwcG9ydCBmb3IKCWd1aWRpbmcgZGVjbHMuCgkoYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9uZXdfb3ApOiBMaWtld2lzZS4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCSogZGVjbC5jIChzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBmcmllbmQuYyAoaXNfZnJpZW5kKTogTGlrZXdpc2UuCgkoZG9fZnJpZW5kKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKChmbGFnX2R1bXBfdHJhbnNsYXRpb25fdW5pdCk6IE1ha2UgaXQgY29uc3QuCgkoZmxhZ19ndWlkaW5nX2RlY2xzKTogUmVtb3ZlLgoJKHVuc3VwcG9ydGVkX29wdGlvbnMpOiBOZXcgdmFyaWFibGUKCShjb21wYXJlX29wdGlvbnMpOiBOZXcgZnVuY3Rpb24uCgkobGFuZ19kZWNvZGVfb3B0aW9uKTogVXNlIHRoZW0uCgoJKiBkZWNsLmMgKGJ1aWxkX2NwX2xpYnJhcnlfZm4pOiBTZXQgREVDTF9DT05URVhULgoKCSogbWV0aG9kLmMgKG1hbmdsZV9leHByZXNzaW9uKTogQWRqdXN0IHRlc3QgZm9yIGxlZ2FsIGV4cHJlc3Npb24KCW9wZXJhdG9ycy4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBTYXZlIGFuZCByZXN0b3JlIHRoZSBsb2NhbAoJc3BlY2lhbGl6YXRpb25zIGxpc3QuCgoyMDAwLTA1LTMwICBKYXNvbiBNZXJyaWxsICA8amFzb25AZGVjZXB0aWNvbi5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rX3JlZmVyZW5jZV9pbml0KTogUGFzcyBMT09LVVBfT05MWUNPTlZFUlRJTkcuCgoyMDAwLTA1LTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChhZGRfdGVtcGxhdGVfY2FuZGlkYXRlX3JlYWwpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlCgljb25zdHJ1Y3RvcnMgZm9yIGNsYXNzZXMgd2l0aCB2aXJ0dWFsIGJhc2VzLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBVc2UgaW5fY2hhcmdlX2FyZ19mb3JfbmFtZS4KCShidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBVc2UgREVDTF9OT05TVEFUSUNfTUVNQkVSX0ZVTkNUSU9OX1AuCgoJKiBpci50ZXhpOiBVcGRhdGUgdGh1bmsgZG9jdW1lbnRhdGlvbi4KCgkqIGNhbGwuYyAoam91c3QpOiBGaXggaGFuZGxpbmcgb2Ygb3ZlcmxvYWRlZCBidWlsdGluIG9wZXJhdG9ycy4KCjIwMDAtMDUtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwLXRyZWUuaCAoREVDTF9BTlRJQ0lQQVRFRCk6IE5ldyBtYWNyby4KCURvY3VtZW50IG5ldyB1c2Ugb2YgREVDTF9MQU5HX0ZMQUdfNy4KCSogZGVjbC5jIChidWlsdGluX2Z1bmN0aW9uKTogU2V0IERFQ0xfQU5USUNJUEFURUQgb24gYnVpbHRpbnMKCWluIHRoZSB1c2VyIG5hbWVzcGFjZS4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBJZiB0aGUgaWRlbnRpZmllcidzIGRlY2xhcmF0aW9uIGhhcwoJREVDTF9BTlRJQ0lQQVRFRCBvbiwgaXQgaGFzIG5vdCB5ZXQgYmVlbiBkZWNsYXJlZC4gIEJ1dCBkbyBub3QKCXJlcGxhY2UgaXQgd2l0aCBhbiBvcmRpbmFyeSBpbXBsaWNpdCBkZWNsYXJhdGlvbi4KCgkqIHRpbmZvMi5jYzogSW5jbHVkZSBzdGRsaWIuaC4KCjIwMDAtMDUtMjkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9BTElHTl9VTklUKTogTmV3IG1hY3JvLgoJKiBjbGFzcy5jIChsYXlvdXRfZW1wdHlfYmFzZSk6IFVzZSBDTEFTU1RZUEVfQUxJR05fVU5JVCwgbm90CglDTEFTU1RZUEVfQUxJR04uCgoyMDAwLTA1LTI4ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBVc2Ugc2tpcF9sZWFkaW5nX3N1YnN0cmluZyBpbnN0ZWFkCglvZiBwbGFpbiBzdHJuY21wLgoKMjAwMC0wNS0yOCAgQWxleGFuZHJlIE9saXZhICA8YW9saXZhQGN5Z251cy5jb20+CgoJKiBvcGVyYXRvcnMuZGVmICg8Pyk6IER1cGxpY2F0ZWQsIHNob3VsZCBoYXZlIGJlZW4uLi4KCSg+Pyk6IHRoaXMuICBGaXhlZC4KCjIwMDAtMDUtMjcgIEFsZXggU2FtdWVsICAgIDxzYW11ZWxAY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChhbnNpX29wbmFtZSk6IE1ha2UgaXQgYSBtYWNyby4KCShhbnNpX2Fzc29wbmFtZSk6IExpa2V3aXNlLgoJKHN0cnVjdCBsYW5nX2RlY2xfZmxhZ3MpOiBBZGQgYXNzaWdubWVudF9vcGVyYXRvcl9wLgoJKHN0cnVjdCBsYW5nX2RlY2wpOiBBZGQgb3BlcmF0b3JfY29kZS4KCShERUNMX1ZUVF9QQVJNKTogQWRqdXN0LgoJKERFQ0xfT1ZFUkxPQURFRF9PUEVSQVRPUl9QKTogUmV0dXJuIHRoZSBvcGVyYXRvcl9jb2RlIGZvciBhbgoJb3ZlcmxvYWRlZCBvcGVyYXRvci4KCShTRVRfT1ZFUkxPQURFRF9PUEVSQVRPUl9DT0RFKTogTmV3IG1hY3JvLgoJKERFQ0xfQVNTSUdOTUVOVF9PUEVSQVRPUl9QKTogTmV3IG1hY3JvLgoJKERFQ0xfQVJSQVlfREVMRVRFX09QRVJBVE9SX1ApOiBBZGp1c3QuCgkob3BuYW1lX3RhYik6IFJlbW92ZS4KCShhc3NpZ25vcF90YWIpOiBMaWtld2lzZS4KCShvcGVyYXRvcl9uYW1lX2luZm9fdCk6IE5ldyB0eXBlLgoJKG9wZXJhdG9yX25hbWVfaW5mbyk6IE5ldyB2YXJpYWJsZS4KCShhc3NpZ25tZW50X29wZXJhdG9yX25hbWVfaW5mbyk6IExpa2V3aXNlLgoJKGJ1aWxkX2NwX2xpYnJhcnlfZm4pOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkocHVzaF9jcF9saWJyYXJ5X2ZuKTogTGlrZXdpc2UuCgkob3BlcmF0b3JfbmFtZV9zdHJpbmcpOiBMaWtld2lzZS4KCShidWlsZF9kZWNsX292ZXJsb2FkKTogTGlrZXdpc2UuCgkqIGNhbGwuYyAocHJpbnRfel9jYW5kaWRhdGVzKTogU2ltcGxpZnkuCgkoYnVpbGRfb2JqZWN0X2NhbGwpOiBBZGp1c3QgdXNhZ2Ugb2YgYW5zaV9vcG5hbWUuICBVc2UKCURFQ0xfT1ZFUkxPQURFRF9PUEVSQVRPUl9QLgoJKG9wX2Vycm9yKTogQWRqdXN0IG9wZXJhdG9yIG5hbWUgbG9va3VwLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBBZGp1c3QgdXNhZ2Ugb2YgYW5zaV9vcG5hbWUuCgkoYnVpbGRfbmV3X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfb3BfZGVsZXRlX2NhbGwpOiBMaWtld2lzZS4KCShidWlsZF9vdmVyX2NhbGwpOiBMaWtld2lzZS4KCShqb3VzdCk6IFVzZSBERUNMX09WRVJMT0FERURfT1BFUkFUT1JfUC4KCSogZGVjbC5jIChkdXBsaWNhdGVfZGVjbHMpOiBDb3B5IG9wZXJhdG9yX2NvZGUuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBBZGp1c3QgcGFyYW1ldGVycyB0byBwdXNoX2NwX2xpYnJhcnlfZm4uCgkoYnVpbHRpbl9mdW5jdGlvbik6IEFkanVzdCBwYXJhbWV0ZXJzIHRvIGJ1aWxkX2xpYnJhcnlfZm5fMS4KCShidWlsZF9saWJyYXJ5X2ZuXzEpOiBBY2NlcHQgYW4gb3ZlcmxvYWRlZCBvcGVyYXRvciBjb2RlLgoJKGJ1aWxkX2xpYnJhcnlfZm4pOiBQYXNzIEVSUk9SX01BUksuCgkoYnVpbGRfY3BfbGlicmFyeV9mbik6IEFjY2VwdCBhbiBvdmVybG9hZGVkIG9wZXJhdG9yIGNvZGUuCgkocHVzaF9jcF9saWJyYXJ5X2ZuKTogTGlrZXdpc2UuCgkoZ3Jva2ZuZGVjbCk6IFR3ZWFrLgoJKGdyb2tkZWNsYXJhdG9yKTogU2ltcGxpZnkgY29kZSB0byBjb21wdXRlIG5hbWVzIG9mIG92ZXJsb2FkZWQKCW9wZXJhdG9ycy4gIEFkanVzdCB1c2Ugb2YgYW5zaV9vcG5hbWUuCgkoYW1iaV9vcF9wKTogV29yayBvbiB0cmVlX2NvZGVzLCBub3QgaWRlbnRpZmllcnMuCgkodW5hcnlfb3BfcCk6IExpa2V3aXNlLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IExpa2V3aXNlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIERFQ0xfT1ZFUkxPQURFRF9PUEVSQVRPUl9QLgoJKGxhbmdfbWFya190cmVlKTogRG9uJ3QgdHJ5IHRvIG1hcmsgdGhlIG9wZXJhdG9yX2NvZGUuCgkqIGRlY2wyLmMgKGdyb2tfZnVuY3Rpb25faW5pdCk6IFVzZSBERUNMX09WRVJMT0FERURfT1BFUkFUT1JfUC4KCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgZm9yIG9wZXJhdG9yCgluYW1lcy4KCShkdW1wX2Z1bmN0aW9uX25hbWUpOiBMaWtld2lzZS4KCShkdW1wX2V4cHIpOiBBZGp1c3QgbmFtZSBsb29rdXAgb2Ygb3BlcmF0b3JzLgoJKG9wX3RvX3N0cmluZyk6IFNpbXBsaWZ5LgoJKGFzc29wX3RvX3N0cmluZyk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogQWRqdXN0IHVzZSBvZiBhbnNpX29wbmFtZS4KCSogbGV4LmMgKG9wbmFtZV90YWIpOiBSZW1vdmUuCgkoYXNzaWdub3BfdGFiKTogTGlrZXdpc2UuCgkoYW5zaV9vcG5hbWUpOiBMaWtld2lzZS4KCShhbnNpX2Fzc29wbmFtZSk6IExpa2V3aXNlLgoJKG9wZXJhdG9yX25hbWVfc3RyaW5nKTogTGlrZXdpc2UuCgkocmVpbml0X2xhbmdfc3BlY2lmaWMpOiBMaWtld2lzZS4KCShvcGVyYXRvcl9uYW1lX2luZm8pOiBOZXcgdmFyaWFibGUuCgkoYXNzaWdubWVudF9vcGVyYXRvcl9uYW1lX2luZm8pOiBMaWtld2lzZS4KCShpbml0X29wZXJhdG9ycyk6IE5ldyBmdW5jdGlvbi4KCShpbml0X3BhcnNlKTogVXNlIGl0LgoJKGRvX2lkZW50aWZpZXIpOiBBZGp1c3QgdXNlIG9mIGFuc2lfb3BuYW1lLgoJKiBtZXRob2QuYyAobWFuZ2xlX2V4cHJlc3Npb24pOiBEb24ndCB1c2UgYW5zaV9vcG5hbWUgZm9yCgltYW5nbGluZy4KCShidWlsZF9kZWNsX292ZXJsb2FkX3JlYWwpOiBVc2UgREVDTF9PVkVSTE9BREVEX09QRVJBVE9SX1AuCgkoYnVpbGRfZGVjbF9vdmVybG9hZCk6IFJlbW92ZS4KCShidWlsZF90eXBlbmFtZV9vdmVybG9hZCk6IFVzZSBPUEVSQVRPUl9UWVBFTkFNRV9GT1JNQVQgZGlyZWN0bHkuCgkoZG9fYnVpbGRfYXNzaWduX3JlZik6IEFkanVzdCB1c2Ugb2YgYW5zaV9vcG5hbWUuCgkoc3ludGhlc2l6ZV9tZXRob2QpOiBMaWtld2lzZS4KCShpbXBsaWNpdGx5X2RlY2xhcmVfZm4pOiBMaWtld2lzZS4KCSogb3BlcmF0b3JzLmRlZjogTmV3IGZpbGUuCgkqIHBhcnNlLnkgKG9wZXJhdG9yKTogQWRqdXN0IHVzZSBvZiBhbnNpX29wbmFtZS4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBVc2UgSURFTlRJRklFUl9PUE5BTUVfUC4KCShzZXRfbWFuZ2xlZF9uYW1lX2Zvcl90ZW1wbGF0ZV9kZWNsKTogRG9uJ3QgcGxheSBnYW1lcyB3aXRoCgljdXJyZW50X25hbWVzcGFjZS4KCShzcGVjaWFsX2Z1bmN0aW9uX3ApOiBBZGp1c3QgdXNlIG9mIGFuc2lfb3BuYW1lLgoJKiB0eXBlY2suYyAoY2hlY2tfcmV0dXJuX2V4cHIpOiBMaWtld2lzZS4KCSogTWFrZS1sYW5nLmluIChjYzFwbHVzKTogRGVwZW5kIG9uIG9wZXJhdG9ycy5kZWYuCgkqIE1ha2VmaWxlLmluIChsZXgubyk6IExpa2V3aXNlLgoJKGRlY2wubyk6IExpa2V3aXNlLgoKMjAwMC0wNS0yNyAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogTWFrZS1sYW5nLmluIChjcGxpYjIucmVhZHkpOiBFcmFkaWNhdGUuCgpTYXQgTWF5IDI3IDExOjI1OjQ2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBtZXRob2QuYyAobWFuZ2xlX2V4cHJlc3Npb24pOiBVc2UgVFJFRV9DT0RFX0xFTkdUSC4KCSogdHJlZS5jIChicmVha19vdXRfY2FsbHMsIGJ1aWxkX21pbl9udCk6IFVzZSBUUkVFX0NPREVfTEVOR1RILgoJKGJ1aWx0X21pbiwgY3BfdHJlZV9lcXVhbCk6IExpa2V3aXNlLgoKMjAwMC0wNS0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGxheW91dF9ub25lbXB0eV9iYXNlX29yX2ZpZWxkKTogUmVwbGFjZQoJYHJlY29yZF9sYXlvdXRfaW5mbycgd2l0aCBgcmVjb3JkX2xheW91dF9pbmZvX3MnLgoKMjAwMC0wNS0yNiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LnNvbWEucmVkaGF0LmNvbT4KCglGaXggZ290byBjaGVja2luZy4KCSogY3AtdHJlZS5oIChzdHJ1Y3QgbGFuZ3VhZ2VfZnVuY3Rpb24pOiB4X25hbWVkX2xhYmVscyBpcyBub3cKCWEgc3RydWN0IG5hbWVkX2xhYmVsX2xpc3QqLgoJKiBkZWNsLmMgKHN0cnVjdCBuYW1lZF9sYWJlbF91c2VfbGlzdCk6IFJlbmFtZWQgZnJvbS4uLgoJKHN0cnVjdCBuYW1lZF9sYWJlbF9saXN0KTogLi4udGhpcy4gIE5ldyBzdHJ1Y3QuCgkocHVzaF9iaW5kaW5nX2xldmVsKTogRG9uJ3Qgc2V0IGVoX3JlZ2lvbi4KCShub3RlX2xldmVsX2Zvcl9laCk6IE5ldyBmbi4KCShwb3BfbGFiZWwpOiBUYWtlIGxhYmVsIGFuZCBvbGQgdmFsdWUgZGlyZWN0bHkuCgkocG9wX2xhYmVscyk6IEFkanVzdCBmb3IgbmV3IG5hbWVkX2xhYmVscyBmb3JtYXQuCgkobG9va3VwX2xhYmVsKTogTGlrZXdpc2UuCgkocG9wbGV2ZWwpOiBOb3RlIGNoYXJhY3RlcmlzdGljcyBvZiBhIGJpbmRpbmcgbGV2ZWwgY29udGFpbmluZyBhCgluYW1lZCBsYWJlbC4gIE1lc3Mgd2l0aCBuYW1lZCBsYWJlbCBsaXN0cyBlYXJsaWVyLgoJKG1hcmtfbmFtZWRfbGFiZWxfbGlzdHMpOiBOZXcgZm4uCgkobWFya19sYW5nX2Z1bmN0aW9uKTogQ2FsbCBpdC4KCSh1c2VfbGFiZWwpOiBOZXcgZm4sIHNwbGl0IG91dCBmcm9tLi4uCgkobWFrZV9sYWJlbF9kZWNsKTogLi4uaGVyZS4gIERvbid0IGNhbGwgaXQuCgkoZGVjbF9qdW1wX3Vuc2FmZSwgY2hlY2tfcHJldmlvdXNfZ290bywgY2hlY2tfcHJldmlvdXNfZ290b18xLAoJY2hlY2tfcHJldmlvdXNfZ290b3MpOiBOZXcgZm5zLAlzcGxpdCBvdXQgZnJvbS4uLgoJKGRlZmluZV9sYWJlbCk6IC4uLmhlcmUuCgkoY2hlY2tfc3dpdGNoX2dvdG8pOiBOZXcgZm4uCgkoZGVmaW5lX2Nhc2VfbGFiZWwpOiBDYWxsIGl0LgoJKGNoZWNrX2dvdG8pOiBOZXcgZm4uCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZ290b19zdG10KTogQ2FsbCBpdCBhbmQgdXNlX2xhYmVsLgoJKGJlZ2luX2NvbXBvdW5kX3N0bXQpOiBJZiB3ZSdyZSBhIHRyeSBibG9jaywgY2FsbCBub3RlX2xldmVsX2Zvcl9laC4KCShleHBhbmRfc3RtdCk6IE5ldmVyIHBhc3MgMSBhcyBET05UX0pVTVBfSU4gdG8gZXhwYW5kX2VuZF9iaW5kaW5ncy4KCjIwMDAtMDUtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChidWlsZF92dGFibGVfZW50cnlfcmVmKTogQ29ycmVjdCB1c2FnZSBvZgoJZ2V0X3Z0YmxfZGVjbF9mb3JfYmluZm8uCgoJKiBkZWNsMi5jIChncm9rY2xhc3Nmbik6IFNldCBERUNMX0xBTkdVQUdFIGhlcmUuCgkqIG1ldGhvZC5jIChpbXBsaWNpdGx5X2RlY2xhcmVfZm4pOiBOb3QgaGVyZS4KCjIwMDAtMDUtMjYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENQVElfUFRNRF9ERVNDX1RZUEUpOiBSZW5hbWUgdG8gLi4uCgkoQ1BUSV9QVE1EX0RFU0NfVFlQRSk6IC4uLiBoZXJlLgoJKHB0bWRfZGVzY190eXBlX25vZGUpOiBSZW5hbWUgdG8gLi4uCgkocHRtX2Rlc2NfdHlwZV9ub2RlKTogLi4uIGhlcmUuCgkqIGRlY2wuYzogTGlrZXdpc2UuCgkqIHJ0dGkuYyAocHRtZF9pbml0aWFsaXplcik6IFJlbmFtZSB0byAuLi4KCShwdG1faW5pdGlhbGl6ZXIpOiAuLi4gaGVyZS4KCShzeXRoZXNpemVfdGluZm9fdmFyKTogQWRqdXN0LiBEZWFsIHdpdGggcG9pbnRlciB0byBtZW1iZXIKCWZ1bmN0aW9uLgoJKGNyZWF0ZV90aW5mb190eXBlcyk6IEFkanVzdC4KCjIwMDAtMDUtMjUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJRmluaXNoIGltcGxlbWVudGF0aW9uIG9mIFZUVHMuCgkqIGNwLXRyZWUuaCAoY3BfdHJlZV9pbmRleCk6IEFkZCBDUFRJX1ZUVF9QQVJNX1RZUEUgYW5kCglDUFRJX1ZUVF9QQVJNX0lERU5USUZJRVIuCgkodnR0X3Bhcm1faWRlbnRpZmllcik6IE5ldyBtYWNyby4KCSh2dHRfcGFybV90eXBlKTogTGlrZXdpc2UuCgkoQklORk9fU1VCVlRUX0lOREVYKTogTGlrZXdpc2UuCgkoQklORk9fVlBUUl9JTkRFWCk6IExpa2V3aXNlLgoJKHN0cnVjdCBsYW5nX2RlY2wpOiBBZGQgdnR0X3Bhcm0uCgkoREVDTF9WVFRfUEFSTSk6IE5ldyBtYWNyby4KCShERUNMX1VTRV9WVFRfUEFSTSk6IExpa2V3aXNlLgoJKERFQ0xfTkVFRFNfVlRUX1BBUk1fUCk6IExpa2V3aXNlLgoJKGdldF92dHRfbmFtZSk6IERlY2xhcmUuCgkoYnVpbGRfYXJ0aWZpY2lhbF9wYXJtKTogTGlrZXdpc2UuCgkoZml4dXBfYWxsX3ZpcnR1YWxfdXBjYXN0X29mZnNldHMpOiBMaWtld2lzZS4KCShleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IFJlbW92ZS4KCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBQYXNzIHRoZSB2dHQgdG8gc3Vib2JqZWN0Cgljb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzLgoJKiBjbGFzcy5jIChnZXRfdnR0X25hbWUpOiBHaXZlIGl0IGV4dGVybmFsIGxpbmthZ2UuCgkoYnVpbGRfY2xvbmUpOiBIYW5kbGUgdGhlIG1hZ2ljIFZUVCBwYXJhbWV0ZXJzIGZvciBjbG9uZXMuCgkoY2xvbmVfZnVuY3Rpb25fZGVjbCk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkoYnVpbGRfdnR0KTogS2VlcCB0cmFjayBvZiB0aGUgaW5kaWNlcyBpbiB0aGUgVlRUcyB3aGVyZSB2YXJpb3VzCgllbnRpdGllcyBhcmUgc3RvcmVkLgoJKGJ1aWxkX3Z0dF9pbml0cyk6IExpa2V3aXNlLgoJKGRmc19idWlsZF92dHRfaW5pdHMpOiBMaWtld2lzZS4KCShidWlsZF9jdG9yX3Z0YmxfZ3JvdXApOiBUd2VhayB0eXBlIG9mIGNvbnN0cnVjdGlvbiB2dGFibGVzLgoJKGRmc19hY2N1bXVsYXRlX3Z0YmxfaW5pdHMpOiBCdWlsZCB2dGFibGVzIGZvciBhbGwgYmFzZXMsIGV2ZW4KCXByaW1hcnkgYmFzZXMsIHdoZW4gYnVpbGRpbmcgY29uc3RydWN0aW9uIHZ0YWJsZXMuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogSGFuZGxlIERFQ0xfVlRUX1BBUk0uCgkoaW5pdGlhbGl6ZV9wcmVkZWZpbmVkX2lkZW50aWZpZXJzKTogQWRkIHZ0dF9wYXJtX2lkZW50aWZpZXIuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIHZ0dF9wYXJtX3R5cGUuCgkoZ3Jva2ZuZGVjbCk6IFVzZSBERUNMX09WRVJMT0FERURfT1BFUkFUT1JfUC4KCShsYW5nX21hcmtfdHJlZSk6IE1ha2UgdnR0X3Bhcm0uCgkqIGRlY2wyLmMgKGJ1aWxkX2FydGlmaWNpYWxfcGFybSk6IE5ldyBmdW5jdGlvbi4KCShtYXliZV9yZXRyb2ZpdF9pbl9jaHJnKTogVXNlIGl0LiAgQWRkIFZUVCBwYXJhbWV0ZXJzLgoJKGdyb2tjbGFzc2ZuKTogVXNlIGJ1aWxkX2FydGlmaWNpYWxfcGFybS4KCSogaW5pdC5jIChpbml0aWFsaXplX3Z0YmxfcHRycyk6IENhbGwKCWZpeHVwX2FsbF92aXJ0dWFsX3VwY2FzdF9vZmZzZXRzIGRpcmVjdGx5LgoJKHBlcmZvcm1fbWVtYmVyX2luaXQpOiBVc2UgdGhlIGNvbXBsZXRlIHN1Ym9iamVjdCBkZXN0cnVjdG9yIGZvcgoJbWVtYmVyIGNsZWFudXBzLgoJKGJ1aWxkX3Z0YmxfYWRkcmVzcyk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfdmlydHVhbF9pbml0KTogSGFuZGxlIFZUVHMuCgkqIG9wdGltaXplIChtYXliZV9jbG9uZV9ib2R5KTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChmaXh1cF9hbGxfdmlydHVhbF91cGNhc3Rfb2Zmc2V0cyk6IEdpdmUgaXQgZXh0ZXJuYWwKCWxpbmthZ2UuCgkoZXhwYW5kX2luZGlyZWN0X3Z0YmxzX2luaXQpOiBSZW1vdmUuCgkqIHNlbWFudGljcy5jIChzZXR1cF92dGJsX3B0cik6IEZpeCB0eXBvcyBpbiBjb21tZW50LgoJKiB0cmVlLmMgKG1ha2VfYmluZm8pOiBNYWtlIHRoZW0gYmlnZ2VyLgoKMjAwMC0wNS0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluYy9jeHhhYmkuaCAoX19wYmFzZV90eXBlX2luZm8pOiBEZWZpbmUsIGJhc2VkIG9uCglfX3BvaW50ZXJfdHlwZV9pbmZvLgoJKF9fcG9pbnRlcl90eXBlX2luZm8pOiBEZXJpdmUgZnJvbSBfX3BiYXNlX3R5cGVfaW5mby4gQWRqdXN0LgoJKF9fcG9pbnRlcl90b19tZW1iZXJfdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkqIHRpbmZvMi5jYyAoX19wYmFzZV90eXBlX2luZm86On5fX3BiYXNlX3R5cGVfaW5mbyk6IEltcGxlbWVudC4KCShfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mbzo6X19pc19wb2ludGVyX3ApOiBSZW1vdmUuCgkoX19wb2ludGVyX3R5cGVfaW5mbzo6X19kb19jYXRjaCk6IFJlbmFtZSB0byAuLi4KCShfX3BiYXNlX3R5cGVfaW5mbzo6X19kb19jYXRjaCk6IC4uLiBoZXJlLiBBZGp1c3QuCgkoX19wYmFzZV90eXBlX2luZm86Ol9fcG9pbnRlcl9jYXRjaCk6IEltcGxlbWVudC4KCShfX3BvaW50ZXJfdHlwZV9pbmZvOjpfX3BvaW50ZXJfY2F0Y2gpOiBBZGp1c3QuCgkoX19wb2ludGVyX3RvX21lbWJlcl90eXBlX2luZm86Ol9fcG9pbnRlcl9jYXRjaCk6IEFkanVzdC4KCjIwMDAtMDUtMjUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0aW5mby5oIChfX3VzZXJfdHlwZV9pbmZvOjpjb250YWluZWRfdmlydHVhbF9wKTogTmV3CglwcmVkaWNhdGUuCgkqIHRpbmZvLmNjIChfX3VzZXJfdHlwZV9pbmZvOjpkb191cGNhc3QpOiBGaXggYnVnIHdpdGggZGlhbW9uZAoJc2hhcGVkIGhpZXJhcmNoeS4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86Ol9fZG9fdXBjYXN0KTogRml4IGJ1ZyB3aXRoIE5VTEwgcG9pbnRlciB0bwoJZGlhbW9uZCBzaGFwZWQgaGllcmFyY2h5LiBBZGQgZWFybHkgb3V0IGZvciBtaXhlZCBkaWFtb25kIGFuZAoJZHVwbGljYXRlIHNoYXBlZCBoaWVyYXJjaHkuCgoyMDAwLTA1LTI0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChidWlsZF9kZWxldGUpOiBDaGFuZ2UgcHJvdG90eXBlLgoJKGJ1aWxkX3ZlY19kZWxldGUpOiBMaWtld2lzZS4KCSogY2FsbC5jIChidWlsZF9zY29wZWRfbWV0aG9kX2NhbGwpOiBVc2Ugc3BlY2lhbF9mdW5jdGlvbl9raW5kCgl2YWx1ZXMgdG8gaW5kaWNhdGUgdGhlIGtpbmQgb2YgZGVzdHJ1Y3Rpb24gdG8gYmUgZG9uZS4KCShidWlsZF9tZXRob2RfY2FsbCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGZpbmlzaF9kZXN0cnVjdG9yX2JvZHkpOiBMaWtld2lzZS4KCShtYXliZV9idWlsZF9jbGVhbnVwXzEpOiBMaWtld2lzZS4gIFJlbmFtZSB0byAuLi4KCShtYXliZV9idWlsZF9jbGVhbnVwKTogLi4uIHRoaXMuCgkqIGRlY2wyLmMgKGRlbGV0ZV9zYW5pdHkpOiBVc2Ugc3BlY2lhbF9mdW5jdGlvbl9raW5kCgl2YWx1ZXMgdG8gaW5kaWNhdGUgdGhlIGtpbmQgb2YgZGVzdHJ1Y3Rpb24gdG8gYmUgZG9uZS4KCShidWlsZF9jbGVhbnVwKTogTGlrZXdpc2UuCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZlY19kZWxldGVfMSk6IExpa2V3aXNlLgoJKGJ1aWxkX2R0b3JfY2FsbCk6IFNpbXBsaWZ5LgoJKGJ1aWxkX2RlbGV0ZSk6IFVzZSBzcGVjaWFsX2Z1bmN0aW9uX2tpbmQKCXZhbHVlcyB0byBpbmRpY2F0ZSB0aGUga2luZCBvZiBkZXN0cnVjdGlvbiB0byBiZSBkb25lLgoJKGJ1aWxkX3ZiYXNlX2RlbGV0ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZlY19kZWxldGUpOiBMaWtld2lzZS4KCgkqIGluaXQuYyAoc29ydF9tZW1iZXJfaW5pdCk6IEZpeCB0eXBvIGluIGVycm9yIG1lc3NhZ2UgZ2VuZXJhdGlvbgoJY29kZS4KCk1vbiBNYXkgMTUgMTE6NDY6MjkgMjAwMCAgRG9uYWxkIExpbmRzYXkgIDxkbGluZHNheUBjeWdudXMuY29tPgoKCSogc2VtYW50aWNzLmMgKGJlZ2luX2NsYXNzX2RlZmluaXRpb24pOiBtYWtlIHRoZSBwYWNrZWQKCWF0dHJpYnV0ZSBiZSBzZW5zaXRpdmUgdG8gdGhlICItZnBhY2stc3RydWN0IiBjb21tYW5kIGxpbmUgZmxhZwoKMjAwMC0wNS0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglVcGRhdGUgbmV3LWFiaSB1cGNhc3QgYWxnb3JpdGhtLgoJKiBpbmMvY3h4YWJpLmggKF9fY2xhc3NfdHlwZV9pbmZvOjpfX2RvX3VwY2FzdCk6IENoYW5nZQoJcHJvdG90eXBlIGFuZCBtZWFuaW5nIG9mIHJldHVybiB2YWx1ZS4KCShfX3NpX2NsYXNzX3R5cGVfaW5mbzo6X19kb191cGNhc3QpOiBMaWtld2lzZS4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86Ol9fZG9fdXBjYXN0KTogTGlrZXdpc2UuCgkqIHRpbmZvLmNjIChfX2NsYXNzX3R5cGVfaW5mbzo6X191cGNhc3RfcmVzdWx0KTogUmVwbGFjZQoJd2hvbGUyZHN0IHdpdGggcGFydDJkc3QuIEFkanVzdCBjdG9yLgoJKF9fY2xhc3NfdHlwZV9pbmZvOjpfX2RvX3VwY2FzdCk6IEFkanVzdCBjYWxsIG9mIHdvcmtlciBmdW5jdGlvbi4KCShfX2NsYXNzX3R5cGVfaW5mbzo6X19kb191cGNhc3QpOiBBZGp1c3QuCgkoX19zaV9jbGFzc190eXBlX2luZm86Ol9fZG9fdXBjYXN0KTogQWRqdXN0LiBVc2UgcGFyZW50J3MKCV9fZG9fdXBjYXN0LgoJKF9fdm1pX2NsYXNzX3R5cGVfaW5mbzo6X19kb191cGNhc3QpOiBMaWtld2lzZS4gRml4IHByaXZhdGUKCXZpcnR1YWwgYmFzZSBpbiBkaWFtb25kIGhpZXJhcmNoeSBidWcuCgoyMDAwLTA1LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX2RlY2xfZmxhZ3MpOiBSZW5hbWUgbXV0YWJsZV9mbGFnIHRvIHVuaW5saW5hYmxlCglhbmQgYml0ZmllbGQgdG8gdGluZm9fZm5fcC4KCShERUNMX1RJTkZPX0ZOX1ApOiBBZGp1c3QuCgkoU0VUX0RFQ0xfVElORk9fRk5fUCk6IExpa2V3aXNlLgoJKERFQ0xfTVVUQUJMRV9QKTogTGlrZXdpc2UuCgkoREVDTF9DX0JJVF9GSUVMRCk6IExpa2V3aXNlLgoJKFNFVF9ERUNMX0NfQklUX0ZJRUxEKTogTGlrZXdpc2UuCgkoQ0xFQVJfREVDTF9DX0JJVF9GSUVMRCk6IExpa2V3aXNlLgoJKERFQ0xfVU5JTkxJTkFCTEUpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoYWx0ZXJfYWNjZXNzKTogQ2FsbCByZXRyb2ZpdF9sYW5nX2RlY2wgaWYgbmNlc3NhcnkuCgkoaGFuZGxlX3VzaW5nX2RlY2wpOiBSZW1vdmUgYXNzZXJ0aW9uLgoJKGJ1aWxkX3Z0Ymxfb3JfdmJhc2VfZmllbGQpOiBVc2UgYnVpbGRfZGVjbCwgbm90IGJ1aWxkX2xhbmdfZGVjbCwKCXRvIGJ1aWxkIEZJRUxEX0RFQ0xzLgoJKGJ1aWxkX2Jhc2VfZmllbGQpOiBMaWtld2lzZS4KCShsYXlvdXRfY2xhc3NfdHlwZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkoYnVpbGRfcHRybWVtZnVuY190eXBlKTogTGlrZXdpc2UuCgkoZ3Jva2RlY2xhcmF0b3IpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZ3Jva194X2NvbXBvbmVudHMpOiBMaWtld2lzZS4KCSogZXhjZXB0LmMgKGNhbGxfZWhfaW5mbyk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGluaXRfaW5pdF9wcm9jZXNzaW5nKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoZXhwYW5kX2NsYXNzX2Rlc2MpOiBMaWtld2lzZS4KCShjcmVhdGVfcHNldWRvX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKGdldF92bWlfcHNldWRvX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKGNyZWF0ZV90aW5mb190eXBlcyk6IExpa2V3aXNlLgoJKiBwdHJlZS5jIChwcmludF9sYW5nX2RlY2wpOiBBZGp1c3QuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogRG9uJ3QgY2hlY2sgREVDTF9MQU5HX1NQRUNJRklDCgliZWZvcmUgY2hlY2tpbmcgREVDTF9NVVRBQkxFX1AuCgoJKiBkZWNsMi5jIChtYXliZV9yZXRyb2ZpdF9pbl9jaHJnKTogRG9uJ3QgY3JlYXRlIGluLWNoYXJnZQoJcGFyYW1ldGVycyBmb3IgdGVtcGxhdGUgZnVuY3Rpb25zLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IE1ha2Ugc3VyZSB3ZSBjYWxsIG1heWJlX3JldHJvZml0X2luX2NocmcgZm9yCglkZXN0cnVjdG9ycyBhcyB3ZWxsIGFzIGNvbnN0cnVjdG9ycy4KCjIwMDAtMDUtMjIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChidWlsZF9jdG9yX3Z0YmxfZ3JvdXApOiBTZXQgaW5pdHMuCgkqIG9wdGltaXplLmMgKG1heWJlX2Nsb25lX2JvZHkpOiBTZXQgREVDTF9JTkxJTkUgYW5kCglERUNMX1RISVNfSU5MSU5FIGFwcHJvcHJpYXRlbHkgZm9yIGNsb25lcy4KCgkqIGNwLXRyZWUuaCAoSURFTlRJRklFUl9UWVBFTkFNRV9QKTogVXNlIGEgZmxhZywgbm90IHN0cm5jbXAuCgkoREVDTF9DT05WX0ZOX1ApOiBTaW1wbGlmeS4KCShERUNMX09QRVJBVE9SKTogUmVtb3ZlLgoJKGxhbmd1YWdlX3RvX3N0cmluZyk6IERlY2xhcmUuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRml4IHR5cG8gaW4gY29tbWVudC4KCShncm9rZGVjbGFyYXRvcik6IEFkanVzdCB1c2Ugb2YgSURFTlRJRklFUl9UWVBFTkFNRV9QLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IFVzZSBERUNMX0NPTlZfRk5fUCBpbnN0ZWFkIG9mCglJREVOVElGSUVSX1RZUEVOQU1FX1AuCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgdGhlIGxhbmd1YWdlIGxpbmthZ2Ugb2YKCWRlY2xhcmF0aW9ucy4KCSogZXJyb3IuYyAobGFuZ3VhZ2VfdG9fc3RyaW5nKTogR2l2ZSBpdCBleHRlcm5hbCBsaW5rYWdlLgoJKiBtZXRob2QuYyAoYnVpbGRfdHlwZW5hbWVfb3ZlcmxvYWQpOiBTZXQgSURFTlRJRklFUl9UWVBFTkFNRV9QLgoJKGltcGxpY2l0bHlfZGVjbGFyZV9mbik6IFNldCBERUNMX0xBTkdVQUdFLgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IFVzZSBERUNMX0NPTlZfRk5fUCwgbm90CglJREVOVElGSUVSX1RZUEVOQU1FX1AuCgkodHN1YnN0X2RlY2wpOiBMaWtld2lzZS4KCSh0c3Vic3RfY29weSk6IEFkanVzdCB1c2Ugb2YgSURFTlRJRklFUl9UWVBFTkFNRV9QLgoJKiBzZW1hbnRpY3MuYyAoZmluaXNoX21lbWJlcl9kZWNsYXJhdGlvbik6IERvbid0IG1hcmsgbWVtYmVycyBvZgoJY2xhc3NlcyBkZWNsYXJlZCBpbiBhbiBleHRlcm4gIkMiIHJlZ2lvbiBhcyBleHRlcm4gIkMiLgoKMjAwMC0wNS0yMiAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbDIuYyAocXVhbGlmaWVkX2xvb2t1cF91c2luZ19uYW1lc3BhY2UpOiBMb29rIHRocm91Z2gKCW5hbWVzcGFjZSBhbGlhc2VzLgoKCSogZGVjbC5jIChwdXNoX3VzaW5nX2RlY2wpOiBSZXR1cm4gdGhlIG9sZCBkZWNsIG9uIG5hbWVzcGFjZSBsZXZlbC4KCjIwMDAtMDUtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKFNFVF9CSU5GT19ORVdfVlRBQkxFX01BUktFRCk6IEFkZCBzYW5pdHkgY2hlY2tzLgoJKFZUVF9OQU1FX1BSRUZJWCk6IE5ldyBtYWNyby4KCShDVE9SX1ZUQkxfTkFNRV9QUkVGSVgpOiBMaWtld2lzZS4KCShnZXRfY3Rvcl92dGJsX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkqIGNsYXNzLmMgKGdldF92dGFibGVfbmFtZSk6IFNpbXBsaWZ5LgoJKGdldF92dHRfbmFtZSk6IE5ldyBmdW5jdGlvbi4KCShnZXRfdnRhYmxlX2RlY2wpOiBEb24ndCBzZXQgSURFTlRJRklFUl9HTE9CQUxfVkFMVUUuCgkoZGZzX21hcmtfcHJpbWFyeV9iYXNlcyk6IFVwZGF0ZSB0aGUgQ0xBU1NUWVBFX1ZCQVNFQ0xBU1NFUyBsaXN0Cgl3aGVuIGEgdmlydHVhbCBiYXNlIGJlY29tZXMgcHJpbWFyeS4KCShmaW5pc2hfc3RydWN0XzEpOiBTZXQgQ0xBU1NUWVBFX1ZGSUVMRFMgYSBsaXR0bGUgZWFybGllci4gIEJ1aWxkCglWVFRzLgoJKGZpbmlzaF92dGJscyk6IEFkanVzdCBjYWxscyB0byBhY2N1bXVsYXRlX3Z0YmxfaW5pdHMgdG8gcGFzcyBpbgoJYWRkaXRpb25hbCBwYXJhbWV0ZXJzLgoJKGRmc19maW5pc2hfdnRibHMpOiBEb24ndCBjbGVhciBCSU5GT19ORVdfVlRBQkxFX01BUktFRC4KCShpbml0aWFsaXplX2FycmF5KTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX3Z0dCk6IExpa2V3aXNlLgoJKGJ1aWxkX3Z0dF9pbml0cyk6IExpa2V3aXNlLgoJKGRmc19idWlsZF92dHRfaW5pdHMpOiBMaWtld2lzZS4KCShkZnNfZml4dXBfYmluZm9fdnRibHMpOiBMaWtld2lzZS4KCShidWlsZF9jdG9yX3Z0YmxfZ3JvdXApOiBMaWtld2lzZS4KCShpbml0aWFsaXplX3Z0YWJsZSk6IFVzZSBpbml0aWFsaXplX2FycmF5LgoJKGFjY3VtdWxhdGVfdnRibF9pbml0cyk6IFJlaW1wbGVtZW50IHRvIGhhbmRsZSBjb25zdHJ1Y3Rpb24KCXZ0YWJsZXMuCgkoZGZzX2FjY3VtdWxhdGVfdnRibF9pbml0cyk6IExpa2V3aXNlLgoJKGJ1bGlkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBBZGp1c3QgcGFyYW1ldGVyIG5hbWUuCgkqIG1ldGhvZC5jIChidWlsZF90eXBlbmFtZV9vdmVybG9hZCk6IFJlbW92ZSAjaWYgMCdkIGNvZGUuCgkoZ2V0X2N0b3JfdnRibF9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKiBzZWFyY2guYyAoZGZzX3dhbGtfcmVhbCk6IFVzZSBCSU5GT19OX0JBU0VUWVBFUy4KCShpbml0X3ZiYXNlX3BvaW50ZXJzKTogRG9uJ3QgbWVzcyB3aXRoIHRoZSBUUkVFX0NIQUlOIG9mIGEgYmluZm8uCgoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX3R5cGUpOiBSZW1vdmUgc2VhcmNoX3Nsb3QuCgkoQ0xBU1NUWVBFX1NFQVJDSF9TTE9UKTogUmVtb3ZlLgoJKGVtaXRfYmFzZV9pbml0KTogQ2hhbmdlIHByb3RvdHlwZS4KCShpbml0aWFsaXplX3Z0YmxfcHRycyk6IExpa2V3aXNlLgoJKGV4cGFuZF9pbmRpcmVjdF92dGJsc19pbml0KTogTGlrZXdpc2UuCgkoY2xlYXJfc2VhcmNoX3Nsb3RzKTogUmVtb3ZlLgoJKiBkZWNsLmMgKGxhbmdfbWFya190cmVlKTogRG9uJ3QgbWFyayBzZWFyY2hfc2xvdC4KCSogaW5pdC5jIChpbml0aWFsaXplX3Z0YmxfcHRycyk6IFNpbXBsaWZ5LgoJKGVtaXRfYmFzZV9pbml0KTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChzdHJ1Y3QgdmJhc2VfaW5mbyk6IERvY3VtZW50IGRlY2xfcHRyLgoJKGNvbnZlcnRfcG9pbnRlcl90b19zaW5nbGVfbGV2ZWwpOiBSZW1vdmUuCgkoZGZzX2ZpbmRfdmJhc2VzKTogUmVtb3ZlLgoJKGRmc19pbml0X2Jhc2VfcG9pbnRlcnMpOiBTaW1wbGlmeS4KCShkZnNfY2xlYXJfdmJhc2Vfc2xvdHMpOiBSZW1vdmUuCgkoZGZzX3Z0YWJsZV9wYXRoX3VubWFyayk6IE5ldyBmdW5jdGlvbi4KCShpbml0X3ZiYXNlX3BvaW50ZXJzKTogU2ltcGxpZnkuCgkoZXhwYW5kX3VwY2FzdF9maXh1cHMpOiBEb24ndCByZWx5IG9uIENMQVNTVFlQRV9TRUFSQ0hfU0xPVC4KCShleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IFNpbXBsaWZ5LiAgRG9uJ3QgY2FsbAoJbWFya19hbGxfdGVtcHNfdXNlZC4KCSogc2VtYW50aWNzLmMgKHNldHVwX3Z0YmxfcHRyKTogQWRqdXN0IGNhbGxzIHRvIGVtaXRfYmFzZV9pbml0IGFuZAoJaW5pdGlhbGl6ZV92dGJsX3B0cnMuCgoyMDAwLTA1LTIwICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBleGNlcHQuYzogQWRkIHN0YXRpYyBwcm90b3R5cGVzLgoKMjAwMC0wNS0yMCAgSC5KLiBMdSAgPGhqbEBnbnUub3JnPgoKCSogTWFrZS1sYW5nLmluIChjcGxpYjIucmVhZHkpOiBBbHNvIGRlcGVuZCBvbiBjYzFwbHVzJChleGVleHQpLgoKMjAwMC0wNS0xOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglEb24ndCBjcmVhdGUgYSBzZXBhcmF0ZSBjb3B5IG9mIHZpcnR1YWwgYmFzZXMgZm9yIHRoZQoJQ0xBU1NUWVBFX1ZCQVNFQ0xBU1NFUyBsaXN0LgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9WQkFTRUNMQVNTRVMpOiBDaGFuZ2UgZG9jdW1lbnRhdGlvbi4KCShCSU5GT19GT1JfVkJBU0UpOiBSZW1vdmUuCgkoQ0FOT05JQ0FMX0JJTkZPKTogQWRqdXN0LgoJKGJpbmZvX2Zvcl92YmFzZSk6IE5ldyBmdW5jdGlvbi4KCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBVc2UgYmluZm9fZm9yX3ZiYXNlCglpbnN0ZWFkIG9mIEJJTkZPX0ZPUl9WQkFTRS4KCShidWlsZF92YmFzZV9wb2ludGVyKTogTGlrZXdpc2UuCgkoYnVpbGRfc2Vjb25kYXJ5X3Z0YWJsZSk6IExpa2V3aXNlLgoJKGRmc19tYXJrX3ByaW1hcnlfYmFzZXMpOiBMaWtld2lzZS4KCShtYXJrX3ByaW1hcnlfYmFzZXMpOiBMaWtld2lzZS4KCShsYXlvdXRfbm9uZW1wdHlfYmFzZV9vcl9maWVsZCk6IExpa2V3aXNlLgoJKGRmc19zZXRfb2Zmc2V0X2Zvcl9zaGFyZWRfdmJhc2VzKTogTGlrZXdpc2UuCgkoZGZzX3NldF9vZmZzZXRfZm9yX3Vuc2hhcmVkX3ZiYXNlcyk6IExpa2V3aXNlLgoJKGxheW91dF92aXJ0dWFsX2Jhc2VzKTogTGlrZXdpc2UuICBBZGp1c3QgZm9yIGNoYW5nZXMgdG8gdGhlCglDTEFTU1RZUEVfVkJBU0VDTEFTU0VTIGxpc3QuCgkoZHVtcF9jbGFzc19oaWVyYXJjaHlfcik6IFVzZSBiaW5mb19mb3JfdmJhc2UKCWluc3RlYWQgb2YgQklORk9fRk9SX1ZCQVNFLgoJKGR1bXBfY2xhc3NfaGllcmFyY2h5KTogTGlrZXdpc2UuCgkoZmluaXNoX3Z0YmxzKTogTGlrZXdpc2UuCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IEFkanVzdCBmb3IgY2hhbmdlcyB0byB0aGUKCUNMQVNTVFlQRV9WQkFTRUNMQVNTRVMgbGlzdC4KCShidWlsZF92YmFzZV9vZmZzZXRfdnRibF9lbnRyaWVzKTogVXNlIGJpbmZvX2Zvcl92YmFzZS4KCSogZGVjbC5jIChmaW5pc2hfZGVzdHJ1Y3Rvcl9ib2R5KTogQWRqdXN0IGZvciBjaGFuZ2VzIHRvIHRoZQoJQ0xBU1NUWVBFX1ZCQVNFQ0xBU1NFUyBsaXN0LgoJKiBpbml0LmMgKHNvcnRfYmFzZV9pbml0KTogVXNlIGJpbmZvX2Zvcl92YmFzZS4KCShjb25zdHJ1Y3RfdmlydHVhbF9iYXNlcyk6IEFkanVzdCBmb3IgY2hhbmdlcyB0byB0aGUKCUNMQVNTVFlQRV9WQkFTRUNMQVNTRVMgbGlzdC4KCShleHBhbmRfbWVtYmVyX2luaXQpOiBVc2UgYmluZm9fZm9yX3ZiYXNlLgoJKGJ1aWxkX3ZiYXNlX2RlbGV0ZSk6ICBBZGp1c3QgZm9yIGNoYW5nZXMgdG8gdGhlCglDTEFTU1RZUEVfVkJBU0VDTEFTU0VTIGxpc3QuCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgkqIHJ0dGkuYyAoZ2V0X2Jhc2Vfb2Zmc2V0KTogVXNlIGJpbmZvX2Zvcl92YmFzZS4KCShleHBhbmRfY2xhc3NfZGVzYyk6IFJlbW92ZSAjaWYgMCdkIGNvZGUuCgkqIHNlYXJjaC5jIChzdHJ1Y3QgdmJhc2VfaW5mbyk6IFJlbW92ZSB2YmFzZV90eXBlcy4KCShnZXRfYmFzZV9kaXN0YW5jZSk6ICBVc2UgYmluZm9fZm9yX3ZiYXNlLgoJKGxvb2t1cF9maWVsZF9xdWV1ZV9wKTogVXNlIENBTk9OSUNBTF9CSU5GTy4KCShnZXRfc2hhcmVkX3ZiYXNlX2lmX25vdF9wcmltYXJ5KTogVXNlIGJpbmZvX2Zvcl92YmFzZS4KCShnZXRfcHVyZV92aXJ0dWFscyk6IEFkanVzdCBmb3IgY2hhbmdlcyB0byB0aGUKCUNMQVNTVFlQRV9WQkFTRUNMQVNTRVMgbGlzdC4KCShkZnNfZmluZF92YmFzZXMpOiBVc2UgYmluZm9fZm9yX3ZiYXNlLgoJKGRmc19pbml0X3ZiYXNlX3BvaW50ZXJzKTogTGlrZXdpc2UuCgkoaW5pdF92YmFzZV9wb2ludGVycyk6IERvbid0IGluaXRpYWxpemUgdmkudmJhc2VfdHlwZXMuCgkodmlydHVhbF9jb250ZXh0KTogVXNlIGJpbmZvX2Zvcl92YmFzZS4KCShmaXh1cF9hbGxfdmlydHVhbF91cGNhc3Rfb2Zmc2V0cyk6IEFkanVzdCBmb3IgY2hhbmdlcyB0byB0aGUKCUNMQVNTVFlQRV9WQkFTRUNMQVNTRVMgbGlzdC4KCShleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IFNpbXBsaWZ5LgoJKGRmc19nZXRfdmJhc2VfdHlwZXMpOiBEb24ndCByZXBsaWNhdGUgdmlydHVhbCBiYXNlcy4KCShmaW5kX3ZiYXNlX2luc3RhbmNlKTogVXNlIGJpbmZvX2Zvcl92YmFzZS4KCShiaW5mb19mb3JfdmJhc2UpOiBOZXcgZnVuY3Rpb24uCgkqIHR5cGVjay5jIChnZXRfZGVsdGFfZGlmZmVyZW5jZSk6IFVzZSBiaW5mb19mb3JfdmJhc2UuCgoyMDAwLTA1LTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoZmluaXNoX2Fub25fdW5pb24pOiBHZW5lcmFsaXplIGVycm9yIG1lc3NhZ2VzIHRvIGhhbmRsZQoJYW5vbnltb3VzIHN0cnVjdHVyZXMuCgkqIGluaXQuYyAocGVyZm9ybV9tZW1iZXJfaW5pdCk6IFJlbW92ZSBgbmFtZScgcGFyYW1ldGVyLgoJKGJ1aWxkX2ZpZWxkX2xpc3QpOiBOZXcgZnVuY3Rpb24uCgkoc29ydF9tZW1iZXJfaW5pdCk6IEhhbmRsZSBhbm9ueW1vdXMgdW5pb24gaW5pdGlhbGl6YXRpb24gb3JkZXIKCWNvcnJlY3RseS4gIENoZWNrIGZvciBtdWx0aXBsZSBpbml0aWFsaXphdGlvbnMgb2YgdGhlIHNhbWUgdW5pb24uCgkoZW1pdF9iYXNlX2luaXQpOiBEb24ndCBsb29rIHVwIGZpZWxkcyBieSBuYW1lIGhlcmUuCgkoZXhwYW5kX21lbWJlcl9pbml0KTogUmVjb3JkIHRoZSByZXN1bHQgb2YgbmFtZSBsb29rdXAgZm9yIGZ1dHVyZQoJcmVmZXJlbmNlLgoJKiB0eXBlY2suYyAoYnVpbGRfY29tcG9uZW50X3JlZik6IEZpeCBmb3JtYXR0aW5nLgoKV2VkIE1heSAxNyAxNzoyNzo0NCAyMDAwICBBbmRyZXcgQ2FnbmV5ICA8Y2FnbmV5QGIxLmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHBvcF9sYWJlbCk6IFJlcGxhY2Ugd2Fybl91bnVzZWQgd2l0aCB3YXJuX3VudXNlZF9sYWJlbC4KCSogdHlwZWNrLmMgKGJ1aWxkX3hfY29tcG91bmRfZXhwcik6IFJlcGxhY2Ugd2Fybl91bnVzZWQgd2l0aAoJd2Fybl91bnVzZWRfdmFsdWUuCgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBVcGRhdGUgLVdhbGwgdW51c2VkIGZsYWdzIGJ5CgljYWxsaW5nIHNldF9XdW51c2VkLgoKMjAwMC0wNS0xNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWVoIChCSU5GT19ORVdfVlRBQkxFX01BUktFRCk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoJKiBpbml0LmMgKGRmc192dGFibGVfcGF0aF91bm1hcmspOiBSZW1vdmUuCgkqIHNlYXJjaC5jIChtYXJrZWRfbmV3X3Z0YWJsZV9wKTogTGlrZXdpc2UuCgkodW5tYXJrZWRfbmV3X3Z0YWJsZV9wKTogTGlrZXdpc2UuCgkoZGZzX3NlYXJjaF9zbG90X25vbmVtcHR5X3ApOiBMaWtld2lzZS4KCShkZnNfbWFyayk6IExpa2V3aXNlLgoJKGRmc192dGFibGVfcGF0aF91bm1hcmspOiBMaWtld2lzZS4KCShkZnNfZmluZF92YmFzZXMpOiBEb24ndCBzZXQgQklORk9fTkVXX1ZUQUJMRV9NQVJLRUQuCgkoZGZzX2ludF92YmFzZV9wb2ludGVycyk6IERvbid0IGNsZWFyIEJJTkZPX1ZUQUJMRV9QQVRIX01BUktFRC4KCShkZnNfaW5pdF92YmFzZV9wb2ludGVycyk6IFJlbW92ZSBzcGVjaWFsLWNhc2UgbmV3IEFCSSBjb2RlLgoJKGRmc19jbGVhcl92YmFzZV9zbG90cyk6IERvbid0IGNsZWFyIEJJTkZPX05FV19WVEFCTEVfTUFSS0VELgoJKGluaXRfdmJhc2VfcG9pbnRlcnMpOiBTaW1wbGlmeS4KCShleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IExpa2V3aXNlLgoKCSogY2xhc3MuYyAoY29weV92aXJ0dWFscyk6IE5ldyBmdW5jdGlvbi4KCShidWlsZF9wcmltYXJ5X3RhYmxlKTogVXNlIGl0LgoJKGJ1aWxkX3NlY29uZGFyeV92dGFibGUpOiBMaWtld2lzZS4KCShtb2RpZnlfdnRhYmxlX2VudHJ5KTogVXNlIE5VTExfVFJFRSwgbm90IGludGVnZXJfemVyb19ub2RlLCB0bwoJaW5kaWNhdGUgdGhhdCBubyB2Y2FsbCBvZmZzZXQgaXMgcmVxdWlyZWQuCgkoYWRkX3ZpcnR1YWxfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShtb2RpZnlfYWxsX3Z0YWJsZXMpOiBMaWtld2lzZS4KCShkZnNfZmluaXNoX3Z0YmxzKTogQWRqdXN0IGNhbGwgdG8gYnVpbGRfdnRibF9pbml0aWFsaXplci4KCShkZnNfYWNjdW11bGF0ZV92dGJsX2luaXRzKTogTGlrZXdpc2UuCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IE1ha2UgY2hhbmdlcyB0byBoYW5kbGUgY29uc3RydWN0aW9uCgl2dGFibGVzLgoJKGRmc19idWlsZF92Y2FsbF9vZmZzZXRfdnRibF9lbnRyaWVzKTogTGlrZXdpc2UuCgkoYnVpbGRfcnR0aV92dGJsX2VudHJpZXMpOiBMaWtld2lzZS4KCShidWlsZF92dGFibGVfZW50cmllcyk6IEhhbmRsZSBhIE5VTEwgdmNhbGxfaW5kZXguCgoyMDAwLTA1LTE1ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBGaXggdGhpbmtvLgoKMjAwMC0wNS0xNCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBleGNlcHQuYyAoY2hlY2tfaGFuZGxlcnMpOiBOZXcgZm4uCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBpdC4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9oYW5kbGVyX3NlcXVlbmNlKTogQ2FsbCBpdC4KCShmaW5pc2hfZnVuY3Rpb25faGFuZGxlcl9zZXF1ZW5jZSk6IExpa2V3aXNlLgoJKGZpbmlzaF9oYW5kbGVyX3Bhcm1zKTogU2V0IFRSRUVfVFlQRSBvbiB0aGUgaGFuZGxlci4KCSogY3AtdHJlZS5oIChQVUJMSUNMWV9VTklRVUVMWV9ERVJJVkVEX1ApOiBOZXcgbWFjcm8uCgkqIHNlYXJjaC5jIChnZXRfYmFzZV9kaXN0YW5jZV9yZWN1cnNpdmUpOiBJZiBwcm90ZWN0PjEsIGlnbm9yZQoJc3BlY2lhbCBhY2Nlc3MuCgkoZ2V0X2Jhc2VfZGlzdGFuY2UpOiBEb24ndCByZWR1Y2Ugd2F0Y2hfYWNjZXNzLgoKMjAwMC0wNS0xMyAgR2FicmllbCBEb3MgUmVpcyA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsZXguYzogI2luY2x1ZGUgZGlhZ25vc3RpYy5oLgoJKGxhbmdfaW5pdF9vcHRpb25zKTogU2V0IGRlZmF1bHQgcHJlZml4aW5nIHJ1bGVzLgoKCSogbGFuZy1vcHRpb25zLmg6IEFkZCAtZmRpYWdub3N0aWNzLXNob3ctbG9jYXRpb249LgoKCSogZGVjbDIuYzogI2luY2x1ZGUgZGlhZ25vc3RpYy5oLgoJKGxhbmdfZGVjb2RlX29wdGlvbik6IEhhbmRsZSAtZmRpYWdub3N0aWNzLXNob3ctbG9jYXRpb249LgoKMjAwMC0wNS0xMiAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRpbmZvLmNjOiBSZXZlcnQgbXkgMjAwMC0wNS0wOCBhbmQgMjAwMC0wNS0wNyBjaGFuZ2VzLgoJKiB2ZWMuY2M6IFJldmVydCBteSAyMDAwLTA1LTA3IGNoYW5nZS4KCjIwMDAtMDUtMTEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoY2hlY2tfZmllbGRfZGVjbHMpOiBDb21wbGFpbiBhYm91dCBub24tc3RhdGljIGRhdGEKCW1lbWJlcnMgd2l0aCBzYW1lIG5hbWUgYXMgY2xhc3MgaW4gY2xhc3Mgd2l0aCBjb25zdHJ1Y3Rvci4KCjIwMDAtMDUtMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IEFsbG93IG5vbi1zdGF0aWMgZGF0YSBtZW1iZXJzIHdpdGgKCXNhbWUgbmFtZSBhcyBjbGFzcy4KCjIwMDAtMDUtMDkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQHdvbGVyeS5jdW1iLm9yZz4KCgkqIGNwLXRyZWUuaDogQ29uc3RpZnkgdHJlZV9zcmNsb2MuZmlsZW5hbWUsIHRpbnN0X2xldmVsLmZpbGUsCglhbmQgcGVuZGluZ19pbmxpbmUuZmlsZW5hbWUuICBVcGRhdGUgcHJvdG90eXBlcy4KCSogZGVjbC5jIChkZWZpbmVfbGFiZWwpOiBDb25zdGlmeSBmaWxlbmFtZSBwYXJhbWV0ZXIuCgkqIGRlY2wyLmMgKHdhcm5faWZfdW5rbm93bl9pbnRlcmZhY2UpOiBDb25zdGlmeSBsb2NhbCBjaGFyICouCgkqIGlucHV0LmMgQ29uc3RpZnkgaW5wdXRfc291cmNlLmZpbGVuYW1lLiBEb24ndCBkZWNsYXJlCglpbnB1dF9maWxlbmFtZSBvciBsaW5lbm8uICBDb25zdGlmeSBmaWxlbmFtZSBwYXJhbWV0ZXIgdG8gZmVlZF9pbnB1dC4KCSogbGV4LmMgKGluaXRfcGFyc2UpOiBDb25zdGlmeSBwYXJhbWV0ZXIgYW5kIHJldHVybiB2YWx1ZS4KCShjcF9wcmFnbWFfaW50ZXJmYWNlLCBjcF9wcmFnbWFfaW1wbGVtZW50YXRpb24pOiBDb25zdGlmeQoJZmlsZW5hbWUgYXJndW1lbnQuCgkocmVpbml0X3BhcnNlX2Zvcl9tZXRob2QsIHJlaW5pdF9wYXJzZV9mb3JfYmxvY2ssCglyZWluaXRfcGFyc2VfZm9yX2V4cHIsIGZlZWRfZGVmYXJnLCBoYW5kbGVfY3BfcHJhZ21hKToKCUNvbnN0aWZ5IGxvY2FsIGNoYXIgKi4KCSogcHQuYzogRG9uJ3QgZGVjbGFyZSBsaW5lbm8gb3IgaW5wdXRfZmlsZW5hbWUuCgkocHJpbnRfdGVtcGxhdGVfY29udGV4dCwgdHN1YnN0X2ZyaWVuZF9mdW5jdGlvbiwgdHN1YnN0X2RlY2wsCgl0c3Vic3QsIGluc3RhbnRpYXRlX2RlY2wpOiBDb25zdGlmeSBsb2NhbCBjaGFyICouCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IENvbnN0aWZ5IGxvY2FsIGNoYXIgKi4KCSogdHJlZS5jIChidWlsZF9zcmNsb2MpOiBDb25zdGlmeSBmaWxlbmFtZSBwYXJhbWV0ZXIuCgkqIHR5cGVjay5jIChjX2V4cGFuZF9hc21fb3BlcmFuZHMpOiBDb25zdGlmeSBmaWxlbmFtZQoJcGFyYW1ldGVyLgoKMjAwMC0wNS0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRpbmZvLmNjIChfX2R5bmFtaWNfY2FzdCk6IFVzZSBhIHJlaW50ZXJwcmV0X2Nhc3QuIEZpeAoJb2Zmc2V0b2YgZXhwYW5zaW9uLgoKMjAwMC0wNS0wOCAgQnJhbmtvIENpYmVqICA8YnJhbmtvLmNpYmVqQGhlcm1lcy5zaT4KCgkqIGluYy9jeHhhYmkuaDogIEZpeCB0eXBvcyBpbiBjb21tZW50LgoJKF9fYmFzZV9jbGFzc19pbmZvOjpfX29mZnNldCk6IFVzZSBhIHN0YXRpY19jYXN0LgoKMjAwMC0wNS0wNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluYy9jeHhhYmkuaDogVXNlIF9fU0laRV9UWVBFXyBhbmQgX19QVFJESUZGX1RZUEVfXyBpbiBwbGFjZQoJb2Ygc3RkOjpzaXplX3QgYW5kIHN0ZDo6cHRyZGlmZl90IHJlc3BlY3RpdmVseS4KCSogdGluZm8uY2M6IExpa2V3aXNlLgoJKiB2ZWMuY2M6IExpa2V3aXNlLgoKMjAwMC0wNS0wNiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF9jX2Nhc3QpOiBEb24ndCB3YXJuIGludGVnZXItPnBvaW50ZXIgc2l6ZQoJbWlzbWF0Y2ggZm9yIGNvbnN0YW50cy4KCjIwMDAtMDUtMDYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBydHRpLmMgKHB0bWRfaW5pdGlhbGl6ZXIpOiBTZXQgbm9uLXB1YmxpYywgaWYgY2xhc3MgaXMKCWluY29tcGxldGUuCgoJKiBpbmMvY3h4YWJpLmggKF9fZHluYW1pY19jYXN0KTogRXhwbGljaXRseSBzYXkgZXh0ZXJuICJDKysiLgoJKF9fY3hhX3ZlY19uZXcsIF9fY3hhX3ZlY19jdG9yLCBfX2N4YV92ZWNfZHRvciwKCV9fY3hhX3ZlY19kZWxldGUpOiBMaWtld2lzZS4KCSogdGluZm8uY2MgKF9fZHluYW1pY19jYXN0KTogTGlrZXdpc2UuCgkqIHZlYy5jYyAoX19jeGFfdmVjX25ldywgX19jeGFfdmVjX2N0b3IsIF9fY3hhX3ZlY19kdG9yLAoJX19jeGFfdmVjX2RlbGV0ZSk6IExpa2V3aXNlLgoKMjAwMC0wNS0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoREVMVEFfRlJPTV9WVEFCTEVfRU5UUlkpOiBSZW1vdmUuCgkoU0VUX0ZOQUREUl9GUk9NX1ZUQUJMRV9FTlRSWSk6IExpa2V3aXNlLgoJKGxhbmdfZGVjbF9mbGFncyk6IEFkZCB2Y2FsbF9vZmZzZXQuCgkoVEhVTktfVkNBTExfT0ZGU0VUKTogVXNlIGl0LgoJKiBkZWNsLmMgKGxhbmdfbWFya190cmVlKTogRG9uJ3QgbWFyayBERUNMX0FDQ0VTUyBmb3IgYSB0aHVuay4KCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBDcmVhdGUgdGhlIGxhbmdfZGVjbCBoZXJlLCBub3QgaW4KCWVtaXRfdGh1bmsuCgkoZW1pdF90aHVuayk6IE1ha2UgZ2VuZXJpYyB0aHVua3MgaW50byBvcmRpbmFyeSBmdW5jdGlvbnMgb25jZQoJdGhleSBoYXZlIGJlZW4gZmVkIHRvIGV4cGFuZF9ib2R5LgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX2JvZHkpOiBTZXQgY3VycmVudF9mdW5jdGlvbl9pc190aHVuayBoZXJlLgoKMjAwMC0wNS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2xhc3MuYyAodXBkYXRlX3Z0YWJsZV9lbnRyeV9mb3JfZm4pOiBQcm90b3R5cGUuCgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IEluaXRpYWxpemUgdmFyaWFibGVzIGBhcmd2ZWMnLCBgZ2VuX3RtcGwnCglhbmQgYHRtcGwnLgoKCSogc2VhcmNoLmMgKGRmc19idWlsZF9pbmhlcml0YW5jZV9ncmFwaF9vcmRlcik6IFByb3RvdHlwZS4KCjIwMDAtMDUtMDQgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHNwZWNpYWxfZnVuY3Rpb25fa2luZCk6IEFkZCB2YXJpb3VzIGtpbmRzIG9mCglkZXN0cnVjdG9ycy4KCShzcGVjaWFsX2Z1bmN0aW9uX3ApOiBOZXcgZnVuY3Rpb24uCgkqIGNsYXNzLmMgKG92ZXJyaWRlcyk6IERvbid0IGxldCBvbmUga2luZCBvZiBkZXN0cnVjdG9yIG92ZXJyaWRlCglhbm90aGVyLgoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBVc2UgREVDTF9OT05fVEhVTktfRlVOQ1RJT05fUCB3aGVuIGRlY2lkaW5nCgl3aGV0aGVyIG9yIG5vdCB0byBpbnN0YW50aWF0ZSBhIHRlbXBsYXRlLgoJKiB0cmVlLmMgKHNwZWNpYWxfZnVuY3Rpb25fcCk6IERlZmluZS4KCjIwMDAtMDUtMDMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmRlZiAoVEhVTktfREVDTCk6IFJlbW92ZS4KCSogY3AtdHJlZS5oIChERUNMX1RIVU5LX1ApOiBOZXcgbWFjcm8uCgkoREVDTF9OT05fVEhVTktfRlVOQ1RJT05fUCk6IExpa2V3aXNlLgoJKERFQ0xfRVhURVJOX0NfRlVOQ1RJT05fUCk6IExpa2V3aXNlLgoJKFNFVF9ERUNMX1RIVU5LX1ApOiBMaWtld2lzZS4KCShERUxUQV9GUk9NX1ZUQUJMRV9FTlRSWSk6IFVzZSBERUNMX1RIVU5LX1AuCgkoRk5BRERSX0ZST01fVlRBQkxFX0VOVFJZKTogTGlrZXdpc2UuCgkoREVDTF9NQUlOX1ApOiBVc2UgREVDTF9FWFRFUk5fQ19GVU5DVElPTl9QLgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogVXNlIERFQ0xfRVhURVJOX0NfUC4KCShkdXBsaWNhdGVfZGVjbHMpOiBMaWtld2lzZS4KCShwdXNoZGVjbCk6IExpa2V3aXNlLiAgQWRqdXN0IHRodW5rIGhhbmRsaW5nLgoJKGdyb2tmbmRlY2wpOiBVc2UgREVDTF9FWFRFUk5fQ19QLgoJKiBkZWNsMi5jIChtYXJrX3Z0YWJsZV9lbnRyaWVzKTogVXNlIERFQ0xfVEhVTktfUC4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogUmVtb3ZlIFRIVU5LX0RFQ0wgaGFuZGxpbmcuCgkqIGV4Y2VwdC5jIChub3Rocm93X2xpYmZuX3ApOiBVc2UgREVDTF9FWFRFUk5fQ19QLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogUmVtb3ZlIFRIVU5LX0RFQ0wgaGFuZGxpbmcuCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogVXNlIFNFVF9ERUNMX1RIVU5LX1AuICBTZXQKCURFQ0xfTk9fU1RBVElDX0NIQUlOLgoJKGVtaXRfdGh1bmspOiBEb24ndCBwbGF5IGdhbWVzIHdpdGggVFJFRV9DT0RFIG9uIHRodW5rcy4gIERvbid0CglzZXQgREVDTF9ERVNUUlVDVE9SX1Agb3IgREVDTF9DT05TVFJVQ1RPUl9QIG9uIGEgdGh1bmsuCgkqIHNlYXJjaC5jIChjb3ZhcmlhbnRfcmV0dXJuX3ApOiBSZW1vdmUgVEhVTktfREVDTCBoYW5kbGluZy4KCSogaXIudGV4aTogVXBkYXRlLgoKMjAwMC0wNS0wMSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiB0cmVlLmMgKHdhbGtfdHJlZSk6IFNldCBsaW5lbm8uCgoyMDAwLTA1LTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXhjZXB0aW9uLmNjOiBVcGRhdGUgbGljZW5zZSBub3RpY2UuCgkqIG5ldy5jYzogTGlrZXdpc2UuCgkqIG5ldzEuY2M6IExpa2V3aXNlLgoJKiBuZXcyLmNjOiBMaWtld2lzZS4KCSogdGluZm8uY2M6IExpa2V3aXNlLgoJKiB0aW5mbzIuY2M6IExpa2V3aXNlLgoJKiB2ZWMuY2M6IExpa2V3aXNlLgoJKiBpbmMvY3h4YWJpLmg6IExpa2V3aXNlLgoJKiBpbmMvZXhjZXB0aW9uOiBMaWtld2lzZS4KCSogaW5jL25ldzogTGlrZXdpc2UuCgkqIGluYy9uZXcuaDogTGlrZXdpc2UuCgkqIGluYy90eXBlaW5mbzogTGlrZXdpc2UuCgoyMDAwLTA1LTAxICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHRyZWUuYyAoYnVpbGRfdGFyZ2V0X2V4cHJfd2l0aF90eXBlKTogSWYgd2UgYWxyZWFkeSBoYXZlIGEKCVRBUkdFVF9FWFBSLCBqdXN0IHJldHVybiBpdC4KCgkqIG9wdGltaXplLmMgKGluaXRpYWxpemVfaW5saW5lZF9wYXJhbWV0ZXJzKTogRG9uJ3QgZ2VuZXJhdGUgYW4KCUVYUFJfU1RNVCBpZiB3ZSBjYW4ganVzdCB1c2UgREVDTF9JTklUSUFMLgoJKiBkZWNsLmMgKGVtaXRfbG9jYWxfdmFyKTogT25seSBtYWtlIHRoZSBpbml0aWFsaXphdGlvbiBhCglmdWxsLWV4cHJlc3Npb24gaWYgc3RtdHNfYXJlX2Z1bGxfZXhwcnNfcC4KCjIwMDAtMDUtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHNhbWVfdHlwZV9pZ25vcmluZ190b3BfbGV2ZWxfcXVhbGlmaWVyc19wKTogTmV3CgltYWNyby4KCSogY2FsbC5jIChzdGFuZGFyZF9jb252ZXJzaW9uKTogVXNlIGl0LgoJKGRpcmVjdF9yZWZlcmVuY2VfYmluZGluZyk6IExpa2V3aXNlLgoJKGJ1aWxkX292ZXJfY2FsbCk6IExpa2V3aXNlLgoJKGlzX3Byb3Blcmx5X2Rlcml2ZWRfZnJvbSk6IExpa2V3aXNlLgoJKGNvbXBhcmVfaWNzKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKHJlc29sdmVzX3RvX2ZpeGVkX3R5cGVfcCk6IExpa2V3aXNlLgoJKiBvcHRpbWl6ZS5jIChkZWNsYXJlX3JldHVybl92YXJpYWJsZSk6IExpa2V3aXNlLgoJKiBwdC5jIChpc19zcGVjaWFsaXphdGlvbl9vZik6IExpa2V3aXNlLgoJKHVuaWZ5KTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChjb21wX3RhcmdldF9wYXJtcyk6IExpa2Vpd3NlLgoJKGJ1aWxkX3N0YXRpY19jYXN0KTogTGlrZXdpc2UuCgkoYnVpbGRfcmVpbnRlcnByZXRfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX2NvbnN0X2Nhc3QpOiBMaWtld2lzZS4KCShjb21wX3B0cl90dHlwZXNfcmVhbCk6IExpa2V3aXNlLgoJKGNvbXBfcHRyX3R0eXBlc19jb25zdCk6IExpa2V3aXNlLgoJKiB0eXBlY2syLmMgKHByb2Nlc3NfaW5pdF9jb25zdHJ1Y3Rvcik6IExpa2V3aXNlLgoKMjAwMC0wNC0zMCAgU2NvdHQgU255ZGVyIDxzbnlkZXJAZm5hbC5nb3Y+CgoJKiBkZWNsLmMgKGZpbmlzaF9kZXN0cnVjdG9yX2JvZHkpOiBVc2UgdGhlIGJhc2UgZGVzdHJ1Y3RvciB3aGVuCglkZXN0cm95aW5nIHZpcnR1YWwgYmFzZXMuCgoyMDAwLTA0LTMwICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZXhwci5jIChjcGx1c19leHBhbmRfZXhwcik6IFByZXNlcnZlIHRlbXBvcmFyaWVzIHdoZW4gZXhwYW5kaW5nCglTVE1UX0VYUFJzLgoJKiBvcHRpbWl6ZS5jIChzdHJ1Y3QgaW5saW5lX2RhdGEpOiBBZGQgdGFyZ2V0X2V4cHJzIGZpZWxkLgoJKGRlY2xhcmVfcmV0dXJuX3ZhcmlhYmxlKTogV2hlbiBhIGZ1bmN0aW9uIHJldHVybnMgYW4gYWdncmVnYXRlLAoJdXNlIHRoZSB2YXJpYWJsZSBkZWNsYXJlZCBpbiB0aGUgVEFSR0VUX0VYUFIgYXMgdGhlIHJlbWFwcGVkCglERUNMX1JFU1VMVC4KCShleHBhbmRfY2FsbF9pbmxpbmUpOiBVcGRhdGUgdGhlIHBlbmRpbmcgdGFyZ2V0X2V4cHJzIHN0YWNrLgoJKG9wdGltaXplX2Z1bmN0aW9uKTogSW5pdGlhbGl6ZSB0aGUgc3RhY2suCgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IERvbid0IHRyeSB0byByZXR1cm4gYSBgdm9pZCcgdmFsdWUuCgoJKiBvcHRpbWl6ZS5jIChpbml0aWFsaXplX2lubGluZWRfcGFyYW1ldGVycyk6IElmIHRoZSBwYXJhbWV0ZXIgaXMKCWFkZHJlc3NhYmxlLCB3ZSBuZWVkIHRvIG1ha2UgYSBuZXcgVkFSX0RFQ0wsIGV2ZW4gaWYgdGhlCglpbml0aWFsaXplciBpcyBjb25zdGFudC4KCjIwMDAtMDQtMjggIENvc21pbiBUcnV0YSAgPGNvc21pbnRAY3MudWJiY2x1ai5ybz4KCgkqIGRlY2wuYyAoZ3Jva19vcF9wcm9wZXJ0aWVzKTogQWRkIGFuIGV4dHJhIGNoZWNrIG9mIGFyZ3R5cGVzLgoKMjAwMC0wNC0yNyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG9wdGltaXplLmMgKGNvcHlfYm9keV9yKTogVXNlIFNUUklQX1RZUEVfTk9QUyB3aGVuIGNvcHlpbmcKCXZhcmlhYmxlcy4KCShpbml0aWFsaXplX2lubGluZWRfcGFyYW1ldGVycyk6IFRyeSB0byBhdm9pZCBjcmVhdGluZyBuZXcKCVZBUl9ERUNMcy4KCjIwMDAtMDQtMjcgIEFsZXggU2FtdWVsICA8c2FtdWVsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBsZXguYyAobXlfZ2V0X3J1bl90aW1lKTogUmVtb3ZlLgoJKGluaXRfZmlsZW5hbWVfdGltZXMpOiBVc2UgZ2V0X3J1bl90aW1lIGluc3RlYWQgb2YgbXlfZ2V0X3J1bl90aW1lLgoJKGNoZWNrX25ld2xpbmUpOiBMaWtld2lzZS4KCShkdW1wX3RpbWVfc3RhdGlzdGljcyk6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChmaW5pc2hfZmlsZSk6IFB1c2ggYW5kIHBvcCB0aW1ldmFyIFRWX1ZBUkNPTlNUIGluc3RlYWQKCW9mIGNvbXB1dGluZyBlbGFwc2VkIHRpbWUgZXhwbGljaXRseS4KCjIwMDAtMDQtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKFRSRUVfUkVBRE9OTFlfREVDTF9QKTogVXNlIERFQ0xfUC4KCSogaW5pdC5jIChkZWNsX2NvbnN0YW50X3ZhbHVlKTogQ2hlY2sgVFJFRV9SRUFET05MWV9ERUNMX1AuCgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBEb24ndCB0ZXN0IFRSRUVfUkVBRE9OTFlfREVDTF9QCgliZWZvcmUgY2FsbGluZyBkZWNsX2NvbnN0YW50X3ZhbHVlLgoJKiBjbGFzcy5jIChjaGVja19iaXRmaWVsZF9kZWNsKTogTGlrZXdpc2UuCgkqIGN2dC5jIChvY3BfY29udmVydCk6IExpa2V3aXNlLgoJKGNvbnZlcnQpOiBMaWtld2lzZS4KCSogZGVjbC5jIChjb21wdXRlX2FycmF5X2luZGV4X3R5cGUpOiBMaWtld2lzZS4KCShidWlsZF9lbnVtZXJhdG9yKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGNoZWNrX2NwX2Nhc2VfdmFsdWUpOiBMaWtld2lzZS4KCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogTGlrZXdpc2UuCgkodHN1YnN0KTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgkoYnVpbGRfY29tcG91bmRfZXhwcik6IExpa2V3aXNlLgoJKGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QpOiBMaWtld2lzZS4KCShidWlsZF9jX2Nhc3QpOiBMaWtld2lzZS4KCShjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogTGlrZXdpc2UuCgoyMDAwLTA0LTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAoZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3QgcGxheSBnYW1lcyB3aXRoIERFQ0xfSU5MSU5FLgoKMjAwMC0wNC0yNSAgR2FicmllbCBEb3MgUmVpcyAgPGRvc3JlaXNAY21sYS5lbnMtY2FjaGFuLmZyPgoKCSogaXIudGV4aTogQ29ycmVjdCB0eXBvLgoKMjAwMC0wNC0yNSAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFJlamVjdCBWTEFzIGFzIG1lbWJlcnMuCgoyMDAwLTA0LTI0ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjYWxsLmMgKHN0YW5kYXJkX2NvbnZlcnNpb24pOiBBY2NlcHQgY29udmVyc2lvbiBiZXR3ZWVuCglDT01QTEVYX1RZUEVzLgoKCSogY3Z0LmMgKG9jcF9jb252ZXJ0KTogSGFuZGxlIGNvbnZlcnNpb24gdG8gQ09NUExFWF9UWVBFLgoKMjAwMC0wNC0yNCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBSZW1vdmUgZG91YmxlIHNldHVwIGZvciBhY2NvdW50aW5nCgljb21waWxlIHRpbWUuCgoyMDAwLTA0LTI0ICBSb2JlcnQgTGlwZSA8cm9iZXJ0bGlwZUB1c2EubmV0PgoKCSogY3AtdHJlZS5oIChsYW5nX3R5cGUpOiBNZW1iZXIgYGxhbmd1YWdlJyBub3cgRU5VTV9CSVRGSUVMRC4KCjIwMDAtMDQtMjMgIEJlbmphbWluIEtvc25payAgPGJrb3pAY3lnbnVzLmNvbT4KCgkqIG5ldy5jYyAoc2V0X25ld19oYW5kbGVyKTogTmVlZHMgdG8gYmUgaW4gc3RkOjouCgoyMDAwLTA0LTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChsYW5nX2RlY2wpOiBSZW1vdmUgcHJldHR5X2Z1bmN0aW9uX3AuCgkoREVDTF9QUkVUVFlfRlVOQ1RJT05fUCk6IFVzZSBUUkVFX0xBTkdfRkxBR18wLCBub3QgYSBiaXQgaW4gdGhlCglsYW5ndWFnZS1zcGVjaWZpYyBub2RlLgoJKiBkZWNsLmMgKGNwX21ha2VfZm5hbWVfZGVjbCk6IFVzZSBidWlsZF9kZWNsLCBub3QKCWJ1aWxkX2xhbmdfZGVjbCwgdG8gYnVpbGQgdGhlIHZhcmlhYmxlcy4KCShncm9rdmFyZGVjbCk6IERvbid0IGNhbGwgYnVpbGRfbGFuZ19kZWNsIGZvciBsb2NhbCB2YXJpYWJsZXMgaW4KCXRlbXBsYXRlcy4KCShncm9rZGVjbGFyYXRvcik6IERvbid0IGNhbGwgYnVpbGRfbGFuZ19kZWNsIGZvciBsb2NhbCB0eXBlCglkZWNsYXJhdGlvbnMgaW4gdGVtcGxhdGVzLgoJKiBsZXguYyAocmV0cm9maXRfbGFuZ19kZWNsKTogVXNlIGdnY19hbGxvY19vYmogdG8gYWxsb2NhdGVkCgl6ZXJvJ2QgbWVtb3J5LCByYXRoZXIgdGhhbiBjYWxsaW5nIG1lbXNldC4KCSogcHQuYzogSW5jbHVkZSBoYXNodGFiLmguCgkobG9jYWxfc3BlY2lhbGl6YXRpb25zKTogTmV3IHZhcmlhYmxlLgoJKHJldHJpZXZlX2xvY2FsX3NwZWNpYWxpemF0aW9uKTogVXNlIGl0LgoJKHJlZ2lzdGVyX2xvY2FsX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkodHN1YnN0X2RlY2wpOiBEb24ndCBhc3N1bWUgbG9jYWwgdmFyaWFibGVzIGhhdmUKCURFQ0xfTEFOR19TUEVDSUZJQy4KCShpbnN0YW50aWF0ZV9kZWNsKTogU2V0IHVwIGxvY2FsX3NwZWNpYWxpemF0aW9ucy4KCSogTWFrZWZpbGUuaW4gKEhUQUJfSCk6IE5ldyB2YXJpYWJsZS4KCjIwMDAtMDQtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoY19leHBhbmRfYXNtX29wZXJhbmRzKTogUmVzdG9yZSB0aGUgb3JpZ2luYWwKCWNvbnRlbnRzIG9mIHRoZSBvdXRwdXQgbGlzdC4KCjIwMDAtMDQtMjIgIEdhYnJpZWwgRG9zIFJlaXMgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogaXIudGV4aTogIERvY3VtZW50IGNvbXBsZXggbnVtYmVyIHJlcHJlc2VudGF0aW9uLgoKMjAwMC0wNC0yMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0dGkuYyAoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBTZXQgdGluZm9fdmFyX2lkIGluIG5ldy1hYmkuCgkodGFyZ2V0X2luY29tcGxldGVfcCk6IE5ldyBmdW5jdGlvbi4KCSh0aW5mb19iYXNlX2luaXQpOiBDcmVhdGUgY29tZGF0IE5UQlMgbmFtZSB2YXJpYWJsZS4KCShwdHJfaW5pdGlhbGl6ZXIpOiBBZGQgbm9uX3B1YmxpYyBwYXJhbWV0ZXIuIENhbGN1bGF0ZSBpdC4KCShwdG1kX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkoc3ludGhlc2l6ZV90aW5mb192YXIpOiBBZGp1c3QuIEVtaXQgaW5jb21wbGV0ZSBjbGFzcyB0aW5mby4KCShjcmVhdGVfcmVhbF90aW5mb192YXIpOiBBZGQgbm9uX3B1YmxpYyBwYXJhbWV0ZXIuIFVzZSBpdC4KCVB1c2ggcHJveHkgaW50byBnbG9iYWwgbmFtZXNwYWNlLgoJKiBpbmMvY3h4YWJpLmggKF9fcG9pbnRlcl90eXBlX2luZm86OmluY29tcGxldGVfY2xhc3NfbWFzayk6CglOZXcgZW51bWVyYXRpb24uCgkqIGluYy90eXBlaW5mbyAodHlwZV9pbmZvOjpiZWZvcmUsIHR5cGVfaW5mbzo6b3BlcmF0b3I9PSk6CglDb21wYXJlIF9fbmFtZSBhZGRyZXNzZXMuCgoJKiB0aW5mbzIuY2M6IFJlbW92ZSBuZXctYWJpIGJ1aWx0aW5zIGNvbW1lbnQuCgoyMDAwLTA0LTIwICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBSZXNvbHZlIGFuIE9GRlNFVF9SRUYuCgoJKiBjYWxsLmMgKGpvdXN0KTogRXhpdCBlYXJseSBpZiB3ZSBnZXQgdGhlIHNhbWUgZnVuY3Rpb24sIHRvby4KCgkqIGRlY2wyLmMgKGtleV9tZXRob2QpOiBSZXR1cm4gTlVMTF9UUkVFIGZvciB0ZW1wbGF0ZSBjbGFzc2VzLgoJKGltcG9ydF9leHBvcnRfY2xhc3MpOiBEb24ndCBuZWVkIHRvIGNoZWNrIGZvciB0ZW1wbGF0ZSBjbGFzc2VzLgoKMjAwMC0wNC0xOCAgWmFjayBXZWluYmVyZyAgPHphY2tAd29sZXJ5LmN1bWIub3JnPgoKCSogbGV4LmM6IFJlbW92ZSByZWZlcmVuY2VzIHRvIGNjY3AuYy4KCjIwMDAtMDQtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IFJlbW92ZSBjb25zdF9tZW1mdW5jIGFuZAoJdm9sYXRpbGVfbWVtZnVuYy4gIEFkZCBkZXN0cnVjdG9yX2F0dHIuICBBZGp1c3QgZHVtbXkuCgkoREVDTF9ERVNUUlVDVE9SX1ApOiBVc2UgZGVzdHJ1Y3Rvcl9hdHRyLgoJKERFQ0xfQ09OU1RfTUVNRlVOQ19QKTogUmVpbXBsZW1lbnQuCgkoREVDTF9WT0xBVElMRV9NRU1GVU5DX1ApOiBSZW1vdmUuCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfbWV0aG9kcyk6IFVzZSBDTEFTU1RZUEVfREVTVFJVQ1RPUlMuCgkob3ZlcnJpZGVzKTogVXNlIERFQ0xfREVTVFJVQ1RPUl9QLgoJKGNoZWNrX2Zvcl9vdmVycmlkZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tmY2xhc3Nmbik6IExpa2V3aXNlLgoJKGNoZWNrX2NsYXNzZm4pOiBMaWtld2lzZS4KCShncm9rX2Z1bmN0aW9uX2luaXQpOiBMaWtld2lzZS4KCjIwMDAtMDQtMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsMi5jIChncm9rZmllbGQpOiBJc3N1ZSBlcnJvciBvbiBpbGxlZ2FsIGRhdGEgbWVtYmVyCglkZWNsYXJhdGlvbi4KCk1vbiBBcHIgMTcgMTc6MTE6MTYgMjAwMCAgTWFyayBQIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBTZXQgREVDTF9DT05URVhUIGZvciBhIFRIVU5LX0RFQ0wuCgoyMDAwLTA0LTE2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlX2VudHJ5KTogRG9uJ3QgYnVpbGQgdGh1bmtzIGZvciB0eXBlLWluZm8KCWZ1bmN0aW9ucy4KCjIwMDAtMDQtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZGVjbC5jIChkZWNsc19tYXRjaCk6IEFsbG93IGEgcmVkZWNsYXJhdGlvbiBvZiBhIGJ1aWx0aW4gdG8KCXNwZWNpZnkgYXJncyB3aGlsZSB0aGUgYnVpbHRpbiBkaWQgbm90LgoKMjAwMC0wNC0xNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuZGVmIChUSFVOS19ERUNMKTogQWRkIHRvIGRvY3VtZW50YXRpb24uCgkqIGNwLXRyZWUuaCAoZmxhZ19odWdlX29iamVjdHMpOiBEZWNsYXJlLgoJKiBjbGFzcy5jIChtb2RpZnlfdnRhYmxlX2VudHJ5KTogVGlkeS4KCSh1cGRhdGVfdnRhYmxlX2VudHJ5X2Zvcl9mbik6IFNwbGl0IG91dCBmcm9tIGRmc19tb2RpZnlfdnRhYmxlcy4KCUNhbGN1bGF0ZSBkZWx0YSBhcHByb3ByaWF0ZWx5IGZvciB0aGUgbmV3IEFCSS4KCShkZnNfbW9kaWZ5X3Z0YWJsZXMpOiBVc2UgaXQuCgkobW9kaWZ5X2FsbF92dGFibGVzKTogRml4IHRoaW5rbyBpbiBjb2RlIHRvIGFkZCBvdmVycmlkaW5nIGNvcGllcwoJb2YgZnVuY3Rpb25zIHRvIHByaW1hcnkgdnRhYmxlcy4KCShidWlsZF9jbG9uZSk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkoY2xvbmVfZnVuY3Rpb25fZGVjbCk6IENvcnJlY3Qgb3JkZXIgb2YgZGVzdHJ1Y3RvcnMgaW4gdnRhYmxlLgoJKGJ1aWxkX3ZiYXNlX29mZnNldF92dGJsX2VudHJpZXMpOiBBZGp1c3QgY29tbWVudC4KCShkZnNfdmNhbGxfb2Zmc2V0X3F1ZXVlX3ApOiBSZW1vdmUuCgkoZGZzX2J1aWxkX3ZjYWxsX29mZnNldF92dGJsX2VudHJpZXMpOiBVcGRhdGUgQlZfVkNBTExfSU5ERVguCgkoYnVpbGRfdmNhbGxfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IEp1c2UgdXNlIGRmc19za2lwX3ZiYXNlcy4KCShidWlsZF92dGFibGVfZW50cnkpOiBDb3JyZWN0IGNoZWNrIGZvciBwdXJlIHZpcnR1YWwgZnVuY3Rpb25zLgoJRG9uJ3QgZGVjbGFyZSBmbGFnX2h1Z2Vfb2JqZWN0cy4KCSogZGVjbC5jIChmbGFnX2h1Z2Vfb2JqZWN0cyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCSogbWV0aG9kLmMgKG1ha2VfdGh1bmspOiBUd2VhayBtYW5nbGluZyBmb3IgdmNhbGwgb2Zmc2V0IHRodW5rcy4KCVVzZSBpbnRfc2l6ZV9pbl9ieXRlcy4KCShlbWl0X3RodW5rKTogSGFuZGxlIHZjYWxsIG9mZnNldCB0aHVua3MuCgpTYXQgQXByIDE1IDE2OjAwOjAxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsMi5jIChwYXJzZV90aW1lLCB2YXJjb25zdF90aW1lKTogRGVsZXRlIGRlY2xhcmF0aW9ucy4KCShmaW5pc2hfZmlsZSk6IERlbGV0ZSBMSU5FTk8gZGVjbGFyYXRpb24uCglTVEFSVF9USU1FIGFuZCBUSElTX1RJTUUgbm93IGxvbmcuCgoyMDAwLTA0LTEzICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfYmFzZV9maWVsZCk6IFJlZm9ybWF0IGNvbW1lbnQuCgoJKiBpbmMvY3h4YWJpLmggKHN0ZGRlZi5oKTogQ29tbWVudCBpbmNsdXNpb24uCgkoX19iYXNlX2NsYXNzX2luZm86Ol9fb2Zmc2V0KTogQ29tbWVudCBzaGlmdC4KCjIwMDAtMDQtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKElERU5USUZJRVJfQ1RPUl9PUl9EVE9SX1ApOiBOZXcgbWFjcm8uCgkoY3BfdHJlZV9pbmRleCk6IEFkZCBDUFRJX1BVU0hfRVhDRVBUSU9OX0lERU5USUZJRVIuCgkoY3BfcHVzaF9leGNlcHRpb25faWRlbnRpZmllcik6IE5ldyBtYWNyby4KCShERUNMX0NPTVBMRVRFX0RFU1RSVUNUT1JfUCk6IE5ldyBtYWNyby4KCShERUNMX0JBU0VfREVTVFJVQ1RPUl9QKTogTGlrZXdpc2UuCgkoREVDTF9ERUxFVElOR19ERVNUUlVDVE9SX1ApOiBMaWtld2lzZS4KCShnZXRfdnRibF9kZWNsX2Zvcl9iaW5mbyk6IEZpeCBmb3JtYXR0aW5nLgoJKGluX2NoYXJnZV9hcmdfZm9yX25hbWUpOiBOZXcgbWFjcm8uCgkobWF5YmVfYnVpbGRfY2xlYW51cF9hbmRfZGVsZXRlKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBjYWxsLmMgKGJ1aWxkX2ZpZWxkX2NhbGwpOiBVc2UgSURFTlRJRklFUl9DVE9SX09SX0RUT1JfUC4KCShpbl9jaGFyZ2VfYXJnX2Zvcl9uYW1lKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IFVzZSBpdC4gIEhhbmRsZSBjbG9uZWQgZGVzdHJ1Y3RvcnMuCgkoYnVpbGRfY2xvbmUpOiBEb24ndCBtYWtlIHRoZSBiYXNlIGNvbnN0cnVjdG9yIHZpcnR1YWwuCglBdXRvbWF0aWNhbGx5IGRlZmVyIGdlbmVyYXRlZCBmdW5jdGlvbnMuCgkoY2xvbmVfZnVuY3Rpb25fZGVjbCk6IEhhbmRsZSBkZXN0cnVjdG9ycywgdG9vLgoJKGNsb25lX2NvbnN0cnVjdG9yc19hbmRfZGVzdHJ1Y3RvcnMpOiBMaWtld2lzZS4KCShjcmVhdGVfdnRhYmxlX3B0cik6IERvbid0IGNyZWF0ZSBhIHZ0YWJsZSBlbnRyeSBmb3IgYSBjbG9uZWQKCWZ1bmN0aW9uLgoJKiBkZWNsLmMgKHByZWRlZmluZWRfaWRlbnRpZmllcik6IEFkZCBjdG9yX29yX2R0b3JfcC4KCShpbml0aWFsaXplX3ByZWRlZmluZWRfaWRlbnRpZmllcnMpOiBVcGRhdGUgYXBwcm9wcmlhdGVseS4KCShmaW5pc2hfZGVzdHJ1Y3Rvcl9ib2R5KTogU2ltcGxpZnkuCgkobWF5YmVfYnVpbGRfY2xlYW51cF9hbmRfZGVsZXRlKTogUmVtb3ZlLgoJKiBleGNlcHQuYyAoZXhwYW5kX3Rocm93KTogSGFuZGxlIG5ldy1BQkkgZGVzdHJ1Y3RvcnMuCgkqIGluaXQuYyAoZXhwYW5kX2NsZWFudXBfZm9yX2Jhc2UpOiBVc2UgYmFzZV9kdG9yX2lkZW50aWZpZXIuCgkoYnVpbGRfZHRvcl9jYWxsKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2RlbGV0ZSk6IFVzZSBpdC4gIFNpbXBsaWZ5LgoJKiBvcHRpbWl6ZS5jIChtYXliZV9jbG9uZV9ib2R5KTogSGFuZGxlIGRlc3RydWN0b3JzLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkX3F1ZXVlX3ApOiBVc2UgSURFTlRJRklFUl9DVE9SX09SX0RUT1JfUC4KCgkqIGV4Y2VwdGlvbi5jYyAoY2xlYW51cF9mbik6IE5ldyB0eXBlZGVmLgoJKENBTExfQ0xFQU5VUCk6IE5ldyBtYWNyby4KCShjcF9laF9pbmZvKTogVXNlIHRoZW0uCgkoX19jcF9wdXNoX2V4Y2VwdGlvbik6IExpa2V3aXNlLgoJKF9fY3BfcG9wX2V4Y2VwdGlvbik6IExpa2V3aXNlLgoKMjAwMC0wNC0xMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoY3BfdHJlZV9pbmRleCk6IEFkZCBDUFRJX0RUT1JfSURFTlRJRklFUi4KCShjb21wbGV0ZV9kdG9yX2lkZW50aWZpZXIpOiBOZXcgbWFjcm8uCgkoQ0xBU1NUWVBFX0ZJUlNUX0NPTlZFUlNJT04pOiBSZW1vdmUuCgkoQ0xBU1NUWVBFX0NPTlNUUlVDVE9SX1NMT1QpOiBOZXcgbWFjcm8uCgkoQ0xBU1NUWVBFX0RFU1RSVUNUT1JfU0xPVCk6IExpa2V3aXNlLgoJKENMQVNTVFlQRV9GSVJTVF9DT05WRVJTSU9OX1NMT1QpOiBMaWtld2lzZS4KCShDTEFTU1RZUEVfQ09OU1RSVUNUT1JTKTogTGlrZXdpc2UuCgkoQ0xBU1NUWVBFX0RFU1RSVUNUT1JTKTogTGlrZXdpc2UuCgkobGFuZ19kZWNsKTogQWRkIGNsb25lZF9mdW5jdGlvbi4KCShERUNMX0NPTVBMRVRFX0NPTlNUUlVDVE9SX1ApOiBOZXcgbWFjcm8uCgkoREVDTF9CQVNFX0NPTlNUUlVDVE9SX1ApOiBMaWtld2lzZS4KCShERUNMX01BWUJFX0lOX0NIQVJHRV9DT05TVFJVQ1RPUl9QKTogTGlrZXdpc2UuCgkoREVDTF9NQVlCRV9JTl9DSEFSR0VfREVTVFJVQ1RPUl9QKTogTGlrZXdpc2UuCgkoREVDTF9DTE9ORURfRlVOQ1RJT05fUCk6IExpa2V3aXNlLgoJKERFQ0xfQ0xPTkVEX0ZVTkNUSU9OKTogTGlrZXdpc2UuCgkoY2xvbmVfZnVuY3Rpb25fZGVjbCk6IERlY2xhcmUuCgkobWF5YmVfY2xvbmVfYm9keSk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uXzEpOiBDYWxsIGNvbXBsZXRlIG9iamVjdAoJY29uc3RydWN0b3JzIGluIHRoZSBuZXcgQUJJLgoJKGJ1aWxkX25ld19tZXRob2RfY2FsbCk6IERvbid0IGFkZCBpbi1jaGFyZ2UgcGFyYW1ldGVycyB1bmRlciB0aGUKCW5ldyBBQkkuCgkqIGNsYXNzLmMgKGFkZF9tZXRob2QpOiBVc2UgREVDTF9NQVlCRV9JTl9DSEFSR0VfQ09OU1RSVUNUT1JfUCwKCURFQ0xfTUFZQkVfSU5fQ0hBUkdFX0RFU1RSVUNUT1JfUCwgQ0xBU1NUWVBFX0NPTlNUUlVDVE9SX1NMT1QsIGFuZAoJQ0xBU1NUWVBFX0RFU1RSVUNUT1JfU0xPVC4KCShidWlsZF9jbG9uZSk6IE5ldyBmdW5jdGlvbi4KCShjbG9uZV9mdW5jdGlvbl9kZWNsKTogTGlrZXdpc2UuCgkoY2xvbmVfY29uc3RydWN0b3JzX2FuZF9kZXN0cnVjdG9ycyk6IExpa2V3aXNlLgoJKGNoZWNrX2Jhc2VzX2FuZF9tZW1iZXJzKTogVXNlIGl0LgoJKiBkZWNsLmMgKGluaWl0aWFsaXplX3ByZWRlZmluZWRfaWRlbnRpZmllcnMpOiBJbml0aWFsaXplCgljb21wbGV0ZV9kdG9yX2lkZW50aWZpZXIuCgkoZmluaXNoX2Z1bmN0aW9uKTogRG9uJ3QgYWRkIGV4dHJhIGNvZGUgdG8gYSBjbG9uZS4KCShsYW5nX21hcmtfdHJlZSk6IE1hcmsgY2xvbmVkX2Z1bmN0aW9uLgoJKiBkZWNsMi5jIChtYXJrX3VzZWQpOiBEb24ndCBib3RoZXIgdHJ5aW5nIHRvIGluc3RhbnRpYXRlIHRoaW5ncwoJd2Ugc3ludGhlc2l6ZWQuCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IERvbid0IGR1bXAgQ1BfREVDTF9DT05URVhUIHR3aWNlLgoJKiBtZXRob2QuYyAoc2V0X21hbmdsZWRfbmFtZV9mb3JfZGVjbCk6IERvbid0IHRyZWF0IGNsb25lcyBhcwoJY29uc3RydWN0b3JzLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogU3l0aGVzaXplIGNsb25lZCBmdW5jdGlvbnMsIG5vdCB0aGUgY2xvbmVzLgoJKiBvcHRpbWl6ZS5jIChpbmxpbmVfZGF0YSk6IFVwZGF0ZSBjb21tZW50IG9uIHJldF9sYWJlbC4KCShyZW1hcF9ibG9jayk6IERvbid0IGFzc3VtZSBERUNMX0lOSVRJQUwgZXhpc3RzLgoJKGNvcHlfYm9keV9yKTogQWxsb3cgcmV0X2xhYmVsIHRvIGJlIE5VTEwuCgkobWF5YmVfY2xvbmVfYm9keSk6IERlZmluZS4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBIYW5kbGUgY2xvbmVzLgoJKGluc3RhbnRpYXRlX2Nsb25lKTogTmV3IGZ1bmN0aW9uLgoJKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogVXNlIGl0LgoJKHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOiBEb24ndCB0cmVhdCBjbG9uZXMgYXMKCWNvbnN0cnVjdG9ycy4KCSogc2VhcmNoLmMgKGxvb2t1cF9mbmZpZWxkc18xKTogVXNlIENMQVNTVFlQRV9DT05TVFJVQ1RPUl9TTE9ULAoJQ0xBU1NUWVBFX0RFU1RSVUNUT1JfU0xPVCwgYW5kIENMQVNTVFlQRV9GSVJTVF9DT05WRVJTSU9OX1NMT1QuCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IENsb25lIGZ1bmN0aW9uIGJvZGllcyBhcyBuZWNlc3NhcnkuCgoJKiBvcHRpbWl6ZS5jIChyZW1hcF9kZWNsKTogQXZvaWQgc2hhcmluZyBzdHJ1Y3R1cmUgZm9yIGFycmF5cwoJd2hvc2Ugc2l6ZSBpcyBvbmx5IGtub3duIGF0IHJ1bi10aW1lLgoJKiB0cmVlLmMgKGNvcHlfdHJlZV9yKTogRG9uJ3QgY29weSBQQVJNX0RFQ0xzLgoKCSogY3AtdHJlZS5oIChsYW5nX2RlY2xfZmxhZ3MpOiBSZW5hbWUgY29uc3RydWN0b3JfZm9yX3ZiYXNlX2F0dHIKCXRvIGhhc19pbl9jaGFyZ2VfcGFybV9wLgoJKERFQ0xfQ09OU1RSVUNUT1JfRk9SX1ZCQVNFX1ApOiBSZW5hbWUgdG8gLi4uCgkoREVDTF9IQVNfSU5fQ0hBUkdFX1BBUk1fUCk6IC4uLiB0aGlzLgoJKERFQ0xfQ09QWV9DT05TVFJVQ1RPUl9QKTogTmV3IG1hY3JvLgoJKiBjYWxsLmMgKGFkZF9mdW5jdGlvbl9jYW5kaWRhdGUpOiBVc2UgREVDTF9IQVNfSU5fQ0hBUkdFX1BBUk1fUC4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogTGlrZXdpc2UuCgkoY29udmVydF9saWtlX3JlYWwpOiBMaWtld2lzZS4KCShidWlsZF9vdmVyX2NhbGwpOiBMaWtlaXdzZS4gIFVzZSBERUNMX0NPUFlfQ09OU1RSVUNUT1JfUC4KCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IFVzZSBERUNMX0hBU19JTl9DSEFSR0VfUEFSTV9QLgoJKGNvcHlfYXJnc19wKTogTGlrZXdpc2UuCgkoZ3Jva19jdG9yX3Byb3BlcnRpZXMpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBkZWNsMi5jIChtYXliZV9yZXRyb2ZpdF9pbl9jaGFyZ2UpOiBMaWtld2lzZS4gIFNldCBpdC4KCSogZXJyb3IuYyAoZHVtcF9mdW5jdGlvbl9kZWNsKTogVXNlIERFQ0xfSEFTX0lOX0NIQVJHRV9QQVJNX1AuCgkqIGluaXQuYyAoZW1pdF9iYXNlX2luaXQpOiBVc2UgREVDTF9DT1BZX0NPTlNUUlVDVE9SX1AuCgkqIG1ldGhvZC5jIChkb19idWlsZF9jb3B5X2NvbnN0cnVjdG9yKTogVXNlCglERUNMX0hBU19JTl9DSEFSR0VfUEFSTV9QLgoJKHN5bnRoZXNpemVfbWV0aG9kKTogTGlrZXdpc2UuCgkqIHB0LmMgKGluc3RhbnRpYXRlX3RlbXBsYXRlKTogUmVtb3ZlIGdvdG8uCgkqIHRyZWUuYyAoYnVpbGRfY3BsdXNfbWV0aG9kX3R5cGUpOiBSZW1vdmUgbWVudGlvbiBvZiBvYnN0YWNrcyBpbgoJY29tbWVudC4KCgkqIGNwLXRyZS5oIChmaW5pc2hfZnVuY3Rpb24pOiBDaGFuZ2UgcHJvdG90eXBlLgoJKiBkZWNsLmMgKGVuZF9jbGVhbnVwX2ZuKTogQWRqdXN0IGNhbGxlci4KCShmaW5pc2hfZnVuY3Rpb24pOiBUYWtlIG9ubHkgb25lIHBhcmFtZXRlci4KCSogZGVjbDIuYyAoZmluaXNoX29iamVjdHMpOiBBZGp1c3QgY2FsbGVyLgoJKGZpbmlzaF9zdGF0aWNfc3RvcmFnZV9kdXJhdGlvbl9mdW5jdGlvbik6IExpa2V3aXNlLgoJKiBtZXRob2QuYyAoZW1pdF90aHVuayk6IExpa2V3aXNlLgoJKiBwYXJzZS55OiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBMaWtld2lzZS4KCSogcnR0aS5jIChzeW50aGVzaXplX3RpbmZvX2ZuKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChleHBhbmRfYm9keSk6IExpa2V3aXNlLgoKCSogY3AtdHJlZS5oIChjb3B5X2RlY2wpOiBOZXcgZnVuY3Rpb24uCgkqIGNsYXNzLmMgKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBpdC4KCSogbGV4LmMgKGNvcHlfZGVjbCk6IERlZmluZSBpdC4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBMaWtld2lzZS4KCSogdHJlZS5jIChjb3B5X3RlbXBsYXRlX3RlbXBsYXRlX3Bhcm0pOiBMaWtld2lzZS4KCgkqIGNwLXRyZWUuaCAobGFuZ190eXBlKTogUmVtb3ZlIGhhc19ub25wdWJsaWNfY3RvciBhbmQKCWhhc19ub25wdWJsaWNfYXNzaWduX3JlZi4KCShUWVBFX0hBU19OT05QVUJMSUNfQ1RPUik6IERvbid0IGRlY2xhcmUuCgkoVFlQRV9IQVNfTk9OUFVCTElDX0FTU0lHTl9SRUYpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdF9tZXRob2RzKTogRG9uJ3Qgc2V0CglUWVBFX0hBU19OT05QVUJMSUNfQ1RPUiBvciBUWVBFX0hBU19OT05QVUJMSUNfQVNTSUdOX1JFRi4KCShpbnRlcmZhY2Vfb25seSk6IERvbid0IGRlY2xhcmUuCgkoaW50ZXJmYWNlX3Vua25vd24pOiBMaWtld2lzZS4KCjIwMDAtMDQtMTEgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIHRyZWUuaCAoSEFWRV9URU1QTEFURVMpOiBSZW1vdmUgZGVmaW5pdGlvbi4KCSogbGFuZy1vcHRpb25zLmggKC1mdGhpcy1pcy12YXJpYWJsZSk6IFJlbW92ZSBkb2N1bWVudGF0aW9uLgoKMjAwMC0wNC0xMCAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjbGFzcy5jIChpbnN0YW50aWF0ZV90eXBlKTogSGFuZGxlIG9iamVjdC1yZWxhdGl2ZSB0ZW1wbGF0ZS1pZC4KCgkqIHNlbWFudGljcy5jIChmaW5pc2hfZXhwcl9zdG10KTogQ2FsbCBjb252ZXJ0X3RvX3ZvaWQgaGVyZS4KCSogZGVjbC5jIChjcGx1c19leHBhbmRfZXhwcl9zdG10KTogTm90IGhlcmUuCgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogQ2FsbCBub25fbHZhbHVlLgoJSW5pdGlhbGl6ZSBleHBydHlwZSBlYXJsaWVyLgoKCSogcGFyc2UueSAoZm4uZGVmMSk6IENoZWNrIGZvciBkZWZpbmluZyB0eXBlcyBpbiByZXR1cm4gdHlwZXMuCgoJKiBkZWNsLmMgKGNoZWNrX3RhZ19kZWNsKTogTm90aWNlIGV4dHJhIGZ1bmRhbWVudGFsIHR5cGVzLgoJRGlhZ25vc2UgZW1wdHkgZGVjbHMgaW4gY2xhc3NlcywgdG9vLgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IERvbid0IG92ZXJyaWRlIGFuIGFub255bW91cyBuYW1lIGlmIG5vCglkZWNsYXJhdG9yIHdhcyBnaXZlbi4KCgkqIGN2dC5jIChjb252ZXJ0X3RvX3ZvaWQpOiBDYWxsIHJlc29sdmVfb2Zmc2V0X3JlZi4KCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBBYm9ydCBpZiB3ZSBnZXQgYW4gT0ZGU0VUX1JFRi4KCgkqIGRlY2wyLmMgKGRlY2xfbmFtZXNwYWNlKTogSGFuZGxlIGdldHRpbmcgYSB0eXBlLgoKCSogdHlwZWNrLmMgKGJ1aWxkX2NfY2FzdCk6IFJlLWVuYWJsZSB3YXJuaW5nIGZvciBjYXN0IGJldHdlZW4KCXBvaW50ZXIgYW5kIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUuCgoyMDAwLTA0LTEwICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogaW5jL2N4eGFiaS5oIChfX3BvaW50ZXJfdHlwZV9pbmZvKTogQWRkIHJlc3RyaWN0IGFuZAoJaW5jb21wbGV0ZSBmbGFncy4KCShfX3BvaW50ZXJfdHlwZV9pbmZvOjpfX3BvaW50ZXJfY2F0Y2gpOiBOZXcgdmlydHVhbCBmdW5jdGlvbi4KCShfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mbyk6IERlcml2ZSBmcm9tCglfX3BvaW50ZXJfdHlwZV9pbmZvLiBBZGp1c3QuCgkoX19wb2ludGVyX3RvX21lbWJlcl90eXBlX2luZm86Ol9fZG9fY2F0Y2gpOiBSZW1vdmUuCgkoX19wb2ludGVyX3RvX21lbWJlcl90eXBlX2luZm86Ol9faXNfcG9pbnRlcl9wKTogRGVjbGFyZS4KCShfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mbzo6X19wb2ludGVyX2NhdGNoKTogRGVjbGFyZS4KCSogcnR0aS5jIChxdWFsaWZpZXJfZmxhZ3MpOiBBZGQgcmVzdHJpY3QgZmxhZy4KCShwdG1kX2luaXRpYWxpemVyKTogUmVvcmRlciBtZW1iZXJzLgoJKGNyZWF0ZV90aW5mb190eXBlcyk6IEV4cGFuZCBjb21tZW50cy4gUmVvcmRlcgoJcHRtZF9kZXNjX3R5cGVfbm9kZSBtZW1iZXJzLgoJKiB0aW5mbzIuY2MgKF9fcG9pbnRlcl90b19tZW1iZXJfdHlwZV9pbmZvOjpfX2lzX3BvaW50ZXJfcCk6CglJbXBsZW1lbnQuCgkoX19wb2ludGVyX3R5cGVfaW5mbzo6X19kb19jYXRjaCk6IE1vdmUgc3BlY2lmaWMgY29kZSBpbnRvCglfX3BvaW50ZXJfY2F0Y2guIENhbGwgaXQuCgkoX19wb2ludGVyX3R5cGVfaW5mbzo6X19wb2ludGVyX2NhdGNoKTogTm9uLXBvaW50ZXItdG8tbWVtYmVyCglzcGVjaWZpYyBjYXRjaCBjaGVja2luZy4gRml4IHZvaWQgY29udmVyc2lvbiBjaGVjay4KCShfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mbzo6X19kb19jYXRjaCk6IFJlbW92ZS4KCShfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mbzo6X19wb2ludGVyX2NhdGNoKTogSW1wbGVtZW50LgoKMjAwMC0wNC0xMCAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogbGV4LmMgKGluaXRfcGFyc2UpOiBSZW1vdmUgdHJhY2VzIG9mIGNsYXNzb2YgYW5kIGhlYWRvZi4KCSogZGVjbDIuYyAoZmxhZ19vcGVyYXRvcl9uYW1lcyk6IERlZmF1bHQgdG8gMS4KCShsYW5nX2RlY29kZV9vcHRpb24pOiBEbyBub3Qgc2V0IGl0IGZvciAtYW5zaS4KCjIwMDAtMDQtMDkgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2wpOiBSZW1vdmUgbWFpbl9kZWNsX3ZhcmlhbnQuCgkoREVDTF9NQUlOX1ZBUklBTlQpOiBSZW1vdmUuCgkqIGRlY2wuYyAoZHVwbGljYXRlX2RlY2xzKTogRG9uJ3Qgc2V0IGl0LgoJKHN0YXJ0X2Z1bmN0aW9uKTogTGlrZXdpc2UuCgkobGFuZ19tYXJrX3RyZWUpOiBEb24ndCBtYXJrIGl0LgoJKiBkZWNsMi5jIChkZWZlcl9mbik6IERvbid0IHVzZSBpdC4KCSogbGV4LmMgKHJldHJvZml0X2xhbmdfZGVjbCk6IERvbid0IHNldCBpdC4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBMaWtld2lzZS4KCSogcHRyZWUuYyAocHJpbnRfbGFuZ19kZWNsKTogRG9uJ3QgcHJpbnQgaXQuCgkqIHR5cGVjay5jIChtYXJrX2FkZHJlc3NhYmxlKTogRG9uJ3QgdXNlIGl0LgoKMjAwMC0wNC0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHZlYy5jYzogSW5jbHVkZSA8bmV3PiBhbmQgPGV4Y2VwdGlvbj4uCgkoX19jeGFfdmVjX2N0b3IpOiBVc2UgX19jeGFfdmVjX2R0b3IgZm9yIGNsZWFudXAuCgkoX19jeGFfdmVjX2R0b3IpOiBDYXRjaCBkdG9yIGV4Y2VwdGlvbnMsIGFuZCByZXRocm93IG9yCgl0ZXJtaW5hdGUuCgkoX19jeGFfdmVjX2RlbGV0ZSk6IENhdGNoIGR0b3IgZXhjZXB0aW9ucy4KCjIwMDAtMDQtMDkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJUHJlcGVuZCBfXyB0byBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIG5hbWVzLgoJKiBpbmMvdHlwZWluZm8gKHR5cGVfaW5mbyk6IFJlbmFtZSBfbmFtZSB0byBfX25hbWUuCgkodHlwZV9pbmZvOjp0eXBlX2luZm8pOiBSZW5hbWUgcGFyYW1ldGVyLgoJKHR5cGVfaW5mbzo6b3BlcmF0b3I9PSwgdHlwZV9pbmZvOjpvcGVyYXRvciE9LAoJdHlwZV9pbmZvOjpiZWZvcmUpOiBMaWtld2lzZS4KCSh0eXBlX2luZm86OmlzX3BvaW50ZXJfcCwgdHlwZV9pbmZvOjppc19mdW5jdGlvbl9wLAoJdHlwZV9pbmZvOjpkb19jYXRjaCwgdHlwZV9pbmZvOjpkb191cGNhc3QpOiBQcmVwZW5kIF9fLiBSZW5hbWUKCXBhcmFtZXRlcnMuCgkqIGluYy9jeHhhYmkuaAoJKF9fZnVuZGFtZW50YWxfdHlwZV9pbmZvOjpfX2Z1bmRhbWVudGFsX3R5cGVfaW5mbykgUmVuYW1lIHBhcmFtZXRlcnMuCgkoX19wb2ludGVyX3R5cGVfaW5mbzo6X19wb2ludGVyX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKF9fcG9pbnRlcl90eXBlX2luZm86OmlzX3BvaW50ZXJfcCwKCV9fcG9pbnRlcl90eXBlX2luZm86OmRvX2NhdGNoKTogUHJlcGVuZCBfXy4gUmVuYW1lIHBhcmFtZXRlcnMuCgkoX19hcnJheV90eXBlX2luZm86Ol9fYXJyYXlfdHlwZV9pbmZvKTogUmVuYW1lIHBhcmFtZXRlcnMuCgkoX19mdW5jdGlvbl90eXBlX2luZm86Ol9fZnVuY3Rpb25fdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoX19mdW5jdGlvbl90eXBlX2luZm86OmlzX2Z1bmN0aW9uX3ApOiBQcmVwZW5kIF9fLgoJKF9fZW51bV90eXBlX2luZm86Ol9fZW51bV90eXBlX2luZm8pOiBSZW5hbWUgcGFyYW1ldGVycy4KCShfX3BvaW50ZXJfdG9fbWVtYmVyX3R5cGVfaW5mbzo6X19wb2ludGVyX3RvX21lbWJlcl90eXBlX2luZm8pOgoJTGlrZXdpc2UuCgkoX19wb2ludGVyX3RvX21lbWJlcl90eXBlX2luZm86OmRvX2NhdGNoKTogUHJlcGVuZCBfXy4gUmVuYW1lCglwYXJhbWV0ZXJzLgoJKF9fYmFzZV9jbGFzc19pbmZvOjppc192aXJ0dWFsX3AsIGlzX3B1YmxpY19wLCBvZmZzZXQpOiBQcmVwZW5kCV9fLgoJKF9fY2xhc3NfdHlwZV9pbmZvOjpfX2NsYXNzX3R5cGVfaW5mbyk6IFJlbmFtZSBwYXJhbWV0ZXJzLgoJKF9fY2xhc3NfdHlwZV9pbmZvOjpzdWJfa2luZCk6IFByZXBlbmQgX18uIEFkanVzdCBtZW1iZXIgbmFtZXMuCgkoX19jbGFzc190eXBlX2luZm86OnVwY2FzdF9yZXN1bHQsCglfX2NsYXNzX3R5cGVfaW5mbzo6ZHluY2FzdF9yZXN1bHQpOiBQcmVwZW5kIF9fLiBNb3ZlIGRlZmluaXRpb24KCWludG8gdGluZm8uY2MuCgkoX19jbGFzc190eXBlX2luZm86OmRvX3VwY2FzdCwgX19jbGFzc190eXBlX2luZm86OmRvX2NhdGNoLAoJX19jbGFzc190eXBlX2luZm86OmZpbmRfcHVibGljX3NyYywKCV9fY2xhc3NfdHlwZV9pbmZvOjpkb19keW5jYXN0LAoJX19jbGFzc190eXBlX2luZm86OmRvX2ZpbmRfcHVibGljX3NyYyk6IFByZXBlbmQgX18uIFJlbmFtZQoJcGFyYW1ldGVycy4KCShfX3NpX2NsYXNzX3R5cGVfaW5mbzo6X19zaV9jbGFzc190eXBlX2luZm8pOiBSZW5hbWUgcGFyYW1ldGVycy4KCShfX3NpX2NsYXNzX3R5cGVfaW5mbzo6ZG9fdXBjYXN0LCBfX3NpX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZHluY2FzdCwKCV9fc2lfY2xhc3NfdHlwZV9pbmZvOjpkb19maW5kX3B1YmxpY19zcmMpOiBQcmVwZW50IF9fLiBSZW5hbWUKCXBhcmFtZXRlcnMuCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvOjpfX3ZtaV9jbGFzc190eXBlX2luZm8pOiBSZW5hbWUgcGFyYW1ldGVycy4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86OmRvX3VwY2FzdCwgX192bWlfY2xhc3NfdHlwZV9pbmZvOjpkb19keW5jYXN0LAoJX192bWlfY2xhc3NfdHlwZV9pbmZvOjpkb19maW5kX3B1YmxpY19zcmMpOiBQcmVwZW50IF9fLiBSZW5hbWUKCXBhcmFtZXRlcnMuCgkoX19keW5hbWljX2Nhc3QpOiBSZW5hbWUgcGFyYW1ldGVycy4KCSogdGluZm8uY2MgKHR5cGVfaW5mbzo6aXNfcG9pbnRlcl9wLCB0eXBlX2luZm86OmlzX2Z1bmN0aW9uX3AsCgl0eXBlX2luZm86OmRvX2NhdGNoLCB0eXBlX2luZm86OmRvX3VwY2FzdCk6IFByZXBlbmQgX18uCgkoY29udGFpbmVkX3AsIHB1YmxpY19wLCB2aXJ0dWFsX3AsIGNvbnRhaW5lZF9wdWJsaWNfcCwKCWNvbnRhaW5lZF9ub25wdWJsaWNfcCwgY29udGFpbmVkX25vbnZpcnR1YWxfcCk6IEFkanVzdC4KCShfX2NsYXNzX3R5cGVfaW5mbzo6ZG9fY2F0Y2gsCglfX2NsYXNzX3R5cGVfaW5mbzo6ZG9fdXBjYXN0KTogUHJlcGVuZCBfXy4gQWRqdXN0LgoJKF9fY2xhc3NfdHlwZV9pbmZvOjpfX3VwY2FzdF9yZXN1bHQsCglfX2NsYXNzX3R5cGVfaW5mbzo6X19keW5jYXN0X3Jlc3VsdCk6IE1vdmUgZnJvbSBpbmMvY3h4YWJpLmguCglBZGp1c3QuCgkoX19jbGFzc190eXBlX2luZm86OmZpbmRfcHVibGljX3NyYyk6IFByZXBlbmQgX18uIEFkanVzdC4KCShfX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZmluZF9wdWJsaWNfc3JjLAoJX19zaV9jbGFzc190eXBlX2luZm86OmRvX2ZpbmRfcHVibGljX3NyYywKCV9fdm1pX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZmluZF9wdWJsaWNfc3JjKTogTGlrZXdpc2UuCgkoX19jbGFzc190eXBlX2luZm86OmRvX2R5bmNhc3QsCglfX3NpX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZHluY2FzdCwKCV9fdm1pX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZHluY2FzdCk6IExpa2V3aXNlLgoJKF9fY2xhc3NfdHlwZV9pbmZvOjpkb191cGNhc3QsCglfX3NpX2NsYXNzX3R5cGVfaW5mbzo6ZG9fdXBjYXN0LAoJX192bWlfY2xhc3NfdHlwZV9pbmZvOjpkb191cGNhc3QpOiBMaWtld2lzZS4KCShfX2R5bmFtaWNfY2FzdCk6IEFkanVzdC4KCSogdGluZm8yLmNjIChfX3BvaW50ZXJfdHlwZV9pbmZvOjppc19wb2ludGVyX3ApOiBQcmVwZW5kIF9fLgoJKF9fZnVuY3Rpb25fdHlwZV9pbmZvOjppc19mdW5jdGlvbl9wKTogTGlrZXdpc2UuCgkoX19wb2ludGVyX3R5cGVfaW5mbzo6ZG9fY2F0Y2gpOiBMaWtld2lzZS4gQWRqdXN0LgoJKF9fcG9pbnRlcl90b19tZW1iZXJfdHlwZV9pbmZvOjpkb19jYXRjaCk6IExpa2V3aXNlLiBBZGp1c3QuCgkoX190aHJvd190eXBlX21hdGNoX3J0dGlfMik6IEFkanVzdC4KCShfX2lzX3BvaW50ZXIpOiBBZGp1c3QuCgoyMDAwLTA0LTA4ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChjcF90cmVlX2luZGV4KTogQWRkIENQVElfQ09NUExFVEVfQ1RPUl9JREVOVElGSUVSLgoJKGNvbXBsZXRlX2N0b3JfaWRlbnRpZmllcik6IE5ldyBtYWNyby4KCShzcGVjaWFsX2Z1bmN0aW9uX2tpbmQpOiBBZGQgc2ZrX2NvcHlfY29uc3RydWN0b3IgYW5kCglzZmtfYXNzaWdubWVudF9vcGVyYXRvci4KCShMT09LVVBfSEFTX0lOX0NIQVJHRSk6IFJlbW92ZS4KCShjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBSZW5hbWUgdG8gLi4uCgkoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogLi4uIHRoaXMuCgkqIGNhbGwuYyAoYnVpbGRfbmV3X21ldGhvZF9jYWxsKTogQWRkIGluLWNoYXJnZSBwYXJhbWV0ZXJzIGZvcgoJY29uc3RydWN0b3JzIGhlcmUuCgkqIGNsYXNzLmMgKGFkZF9pbXBsaWNpdGx5X2RlY2xhcmVkX21lbWJlcnMpOiBDaGFuZ2UgcGFyYW1ldGVyIG5hbWUKCWZyb20gY2FudF9oYXZlX2Fzc2lnbm1lbnQgdG8gY2FudF9oYXZlX2NvbnN0X2Fzc2lnbm1lbnQuCglSZXBsYWNlIGNhbGxzIHRvIGNvbnNfdXBfZGVmYXVsdF9mdW5jdGlvbiB0byBpbXBsaWNpdGx5X2RlY2xhcmVfZm4uCgkqIGN2dC5jIChvY3BfY29udmVydCk6IFVzZSBjb21wbGV0ZV9jdG9yX2lkZW50aWZpZXIuCgkqIGRlY2wuYyAoaW5pdGlhbGl6ZV9wcmVkZWZpbmVkX2lkZW50aWZpZXJzKTogSW5pdGlhbGl6ZSBpdC4KCShzdGFydF9mdW5jdGlvbik6IFVzZSBERUNMX0NPTlNUUlVDVE9SX0ZPUl9WQkFTRV9QIGluc3RlYWQgb2YKCWNvbXBsZXggZXhwcmVzc2lvbi4KCSogaW5pdC5jIChleHBhbmRfZGVmYXVsdF9pbml0KTogRG9uJ3QgY2FsY3VsYXRlIHRoZSBpbi1jaGFyZ2UKCXBhcmFtZXRlciBoZXJlLgoJKGJ1aWxkX25ld18xKTogTGlrZXdpc2UuCgkqIGxleC5jIChjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBNb3ZlIHRvIG1ldGhvZC5jLgoJKiBtZXRob2QuYyAoc3ludGhlc2l6ZV9tZXRob2QpOiBVc2UgREVDTF9ERVNUUlVDVE9SX1AuCgkoaW1wbGljaXRseV9kZWNsYXJlX2ZuKTogTmV3IGZ1bmN0aW9uLgoJKiB0eXBlY2suYyAoYnVpbGRfc3RhdGljX2Nhc3QpOiBVc2UgY29tcGxldGVfY3Rvcl9pZGVudGlmaWVyLgoJKGJ1aWxkX21vZGlmeV9leHByKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoYnVpbGRfZnVuY3Rpb25hbF9jYXN0KTogTGlrZXdpc2UuCgoJVW5kZXIgdGhlIG5ldyBBQkksIGNvbnN0cnVjdG9ycyBkb24ndCByZXR1cm4gYHRoaXMnLgoJKiBjcC10cmVlLmggKHdhcm5fcmVvcmRlcik6IERlY2xhcmUuCgkoc3BlY2lhbF9mdW5jdGlvbl9raW5kKTogTmV3IGVudW0uCgkoZ2xvYmFsX2Jhc2VfaW5pdF9saXN0KTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKGVtaXRfYmFzZV9pbml0KTogRG9uJ3QgcmV0dXJuIGEgdmFsdWUuCgkoY2hlY2tfYmFzZV9pbml0KTogRG9uJ3QgZGVjbGFyZS4KCShpc19hZ2dyX3R5cGVkZWYpOiBMaWtld2lzZS4KCSogZGVjbC5jIChjaGVja19zcGVjaWFsX2Z1bmN0aW9uX3JldHVybl90eXBlKTogTmV3IGZ1bmN0aW9uLgoJKHJldHVybl90eXBlcyk6IFJlbW92ZS4KCShncm9rZGVjbGFyYXRvcik6IFVzZSBjaGVja19zcGVjaWFsX2Z1bmN0aW9uX3JldHVybl90eXBlLgoJKHN0YXJ0X2Z1bmN0aW9uKTogRG9uJ3QgaW5pdGlhbGl6ZSBjdG9yX2xhYmVsIHVuZGVyIHRoZSBuZXcgQUJJLgoJKGZpbmlzaF9jb25zdHJ1dG9yX2JvZHkpOiBEb24ndCBjcmVhdGUgYSBjb3JyZXNwb25kaW5nIExBQkVMX1NUTVQuCgkqIGluaXQuYyAoYmVnaW5faW5pdF9zdG10cyk6IE1vdmUgdG8gdG9wIG9mIGZpbGUuCgkoZmluaXNoX2luaXRfc3RtdHMpOiBMaWtld2lzZS4KCSh3YXJuX3Jlb3JkZXIpOiBEb24ndCBkZWNsYXJlLgoJKGVtaXRfYmFzZV9pbml0KTogRG9uJ3QgY3JlYXRlIGEgU1RNVF9FWFBSIGhlcmUuICBEb24ndCByZXR1cm4gYQoJdmFsdWUuCgkoY2hlY2tfYmFzZV9pbml0KTogUmVtb3ZlLgoJKGlzX2FnZ3JfdHlwZWRlZik6IExpa2V3aXNlLgoJKGJ1aWxkX25ld18xKTogRG9uJ3QgdXNlIHRoZSByZXR1cm4gdmFsdWUgb2YgYSBjb25zdHJ1Y3Rvci4KCSogc2VtYW50aWNzLmMgKHNldHVwX3Z0YmxfcHRyKTogRG9uJ3QgdXNlIHRoZSByZXR1cm4gdmFsdWUKCW9mIGVtaXRfYmFzZV9pbml0LgoJKiB0eXBlY2suYyAoY2hlY2tfcmV0dXJuX2V4cHIpOiBEb24ndCBtYWdpY2FsbHkgY29udmVydCByZXR1cm4KCXN0YXRlbWVudHMgaW50byBgcmV0dXJuIHRoaXMnIGluIGNvbnN0cnVjdG9ycyB1bmRlciB0aGUgbmV3IEFCSS4KCgkqIGNwLXRyZWUuaCAoY3BfdHJlZV9pbmRleCk6IEFkZCBDUFRJX0JBU0VfQ1RPUl9JREVOVElGSUVSLAoJQ1BUSV9CQVNFX0RUT1JfSURFTlRJRklFUiwgYW5kIENQVElfREVMRVRJTkdfRFRPUl9JREVOVElGSUVSLgoJKGJhc2VfY3Rvcl9pZGVudGlmaWVyKTogTmV3IG1hY3JvLgoJKGJhc2VfZHRvcl9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoZGVsZXRpbmdfZHRvcl9pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkqIGRlY2wuYzogRG9uJ3QgaW5jbHVkZSBvYnN0YWNrLmguCgkob2JzdGFja19jaHVua19hbGxvYyk6IERvbid0IGRlZmluZS4KCShvYnN0YWNrX2NodW5rX2ZyZWUpOiBMaWtld2lzZS4KCShzdHJ1Y3QgcHJlZGVmaW5lZF9pZGVudGlmaWVyKTogTmV3IHR5cGUuCgkoaW5pdGlhbGl6ZV9wcmVkZWZpbmVkX2lkZW50aWZpZXJzKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogVXNlIGl0LgoJKGRlYnVnX3RlbXBfaW5pdHMpOiBSZW1vdmUuCgkoc3RhcnRfbWV0aG9kKTogRG9uJ3QgY2FsbCBwcmVzZXJ2ZV9kYXRhLgoJKGhhY2tfaW5jb21wbGV0ZV9zdHJ1Y3R1cmVzKTogVXBkYXRlIGNvbW1lbnQuCgkqIGluaXQuYyAoaW5pdF9pbml0X3Byb2Nlc3NpbmcpOiBEb24ndCBpbml0aWFsaXplCgluZWx0c19pZGVudGlmaWVyLgoJKGJ1aWxkX29mZnNldF9yZik6IFJlbW92ZSBkZWFkIGNvZGUuCgkoYnVpbGRfZGVsZXRlKTogVXNlIENMQVNTVFlQRV9OX0JBU0VDTEFTU0VTLgoJKiBzZWFyY2guYyAoaW5pdF9zZWFyY2hfcHJvY2Vzc2luZyk6IERvbid0IGluaXRpYWxpemUKCXZwdHJfaWRlbnRpZmllci4KCjIwMDAtMDQtMDggIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3ApOiBDYWxsIGB0cmVlX2V4cHJfbm9ubmVnYXRpdmVfcCcgdG8gZWxpZGUKCXNvbWUgc2lnbl9jb21wYXJlIHdhcm5pbmdzLgoKMjAwMC0wNC0wNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCglSZW5hbWUgYWJpOjpfX3ZtaV9jbGFzc190eXBlX2luZm8gbWVtYmVycy4KCSogaW5jL2N4eGFiaS5oIChfX3ZtaV9jbGFzc190eXBlX2luZm8pOiBSZW5hbWUgZGV0YWlscywgbl9iYXNlcywKCWJhc2VfbGlzdCwgZGV0YWlsX21hc2tzIG1lbWJlcnMgdG8gdm1pX2ZsYWdzLCB2bWlfYmFzZV9jb3VudCwKCXZtaV9iYXNlcyBhbmQgdm1pX2ZsYWdzX21hc2tzIHJlc3BlY3RpdmVseS4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86OnZtaV9mbGFnc19tYXNrcyk6IFJlbmFtZQoJZGV0YWlsc191bmtub3duX21hc2sgdG8gZmxhZ3NfdW5rbm93bl9tYXNrLgoJKiB0aW5mby5jYyAoX19jbGFzc190eXBlX2luZm86OmRvX3VwY2FzdCk6IEFkanVzdC4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86OmRvX2ZpbmRfcHVibGljX3NyYyk6IEFkanVzdC4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86OmRvX2R5bmNhc3QpOiBBZGp1c3QuCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvOjpkb191cGNhc3QpOiBBZGp1c3QuCgoyMDAwLTA0LTA3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdGluZm8uY2MgKGNvbnZlcnRfdG9fYmFzZSk6IE5ldyBmdW5jdGlvbi4KCShnZXRfdmJhc2Vfb2Zmc2V0KTogUmVtb3ZlLiBNb3ZlIGludG8gY29udmVydF90b19iYXNlLgoJKF9fdm1pX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZmluZF9wdWJsaWNfc3JjKTogQWRqdXN0LgoJKF9fdm1pX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZHluY2FzdCk6IEFkanVzdC4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86OmRvX3VwY2FzdCk6IEFkanVzdC4KCjIwMDAtMDQtMDYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRpbmZvLmNjIChvcGVyYXRvcj0pOiBVc2UgX19idWlsdGluX3N0cmNtcC4KCSogdGluZm8yLmNjIChiZWZvcmUpOiBMaWtld2lzZS4KCjIwMDAtMDQtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKGxhbmdfZGVjbF9mbGFncyk6IFJlbmFtZSBzYXZlZF9pbmxpbmUgdG8gZGVmZXJyZWQuCgkoREVDTF9TQVZFRF9JTkxJTkUpOiBSZW5hbWUgdG8gLi4uCgkoREVDTF9ERUZFUlJFRF9GTik6IC4uLiB0aGlzLgoJKGluX2Z1bmN0aW9uX3ApOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkobWFya19pbmxpbmVfZm9yX291dHB1dCk6IFJlbmFtZSB0byAuLi4KCShkZWZlcl9mbik6IC4uLiB0aGlzLgoJKiBkZWNsLmMgKGZpbmlzaF9mdW5jdGlvbik6IEFkanVzdCBjYWxsIHRvIG1hcmtfaW5saW5lX2Zvcl9vdXRwdXQuCgkoaW5fZnVuY3Rpb25fcCk6IFJlbW92ZSBkZWZpbml0aW9uLgoJKiBkZWNsMi5jIChzYXZlZF9pbmxpbmVzKTogUmVuYW1lIHRvIC4uLgoJKGRlZmVycmVkX2Zucyk6IC4uLiB0aGlzLgoJKHNhdmVkX2lubGluZXNfdXNlZCk6IFJlbmFtZSB0byAuLi4KCShkZWZlcnJlZF9mbnNfdXNlZCk6IC4uLiB0aGlzLgoJKG1hcmtfaW5saW5lX2Zvcl9vdXRwdXQpOiBSZW5hbWUgdG8gLi4uCgkoZGVmZXJfZm4pOiAuLi4gdGhpcy4KCShmaW5pc2hfZmlsZSk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShpbml0X2RlY2wyKTogTGlrZXdpc2UuCgkqIGxleC5jIChjb25zX3VwX2RlZmF1bHRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCSogcHQuYyAobWFya19kZWNsX2luc3RhbnRpYXRlZCk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2RlY2wpOiBEb24ndCBzZXQgREVDTF9ERUZFUl9PVVRQVVQgdW5kZXIgYW55CgljaXJjdW1zdGFuY2VzLgoJKiBydHRpLmMgKGdldF90aW5mb19kZWNsKTogQWRqdXN0IGNhbGwgdG8gbWFya19pbmxpbmVfZm9yX291dHB1dC4KCSogc2VtYW50aWNzLmMgKGV4cGFuZF9ib2R5KTogRGVmZXIgbW9yZSBmdW5jdGlvbnMuCgoyMDAwLTA0LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdmVjLmNjOiBOZXcgZmlsZS4KCSogTWFrZS1sYW5nLmluIChDWFhfTElCMkZVTkNTKTogQWRkIGl0LgoJKHZlYy5vKTogQnVpbGQgaXQuCgkqIGluYy9jeHhhYmkuaCAoX19jeGFfdmVjX25ldywgX19jeGFfdmVjX2N0b3IsIF9fY3hhX3ZlY19kdG9yLAoJX19jeGFfdmVjX2RlbGV0ZSk6IERlY2xhcmUuCgoyMDAwLTA0LTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogcnR0aS5jIChkZnNfY2xhc3NfaGludF9tYXJrKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCShkZnNfY2xhc3NfaGludF91bm1hcmspOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGNsYXNzX2hpbnRfZmxhZ3MpOiBVc2UgdGhlbS4KCjIwMDAtMDQtMDUgIEJlbmphbWluIEtvc25payAgPGJrb3pAY3lnbnVzLmNvbT4KCgkqIGRlY2wyLmM6IE1ha2UgZmxhZ19ob25vcl9zdGQgZGVwZW5kZW50IG9uIEVOQUJMRV9TVERfTkFNRVNQQUNFLgoKMjAwMC0wNC0wNSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoaW5zdGFudGlhdGVfZGVjbCk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGRlY2wyLmMgKG1hcmtfdXNlZCk6IEFkanVzdCBjYWxsLgoJKiBvcHRpbWl6ZS5jIChpbmxpbmFibGVfZnVuY3Rpb25fcCk6IEFkanVzdCBoYW5kbGluZyBvZiB0ZW1wbGF0ZXMuCgkqIHB0LmMgKGRvX2RlY2xfaW5zdGFudGlhdGlvbik6IEFkanVzdCBjYWxsIHRvIGluc3RhbnRpYXRlX2RlY2wuCgkoZG9fdHlwZV9pbnN0YW50aWF0aW9uKTogTGlrZXdpc2UuCgkoaW5zdGFudGlhdGVfZGVjbCk6IERlZmVyIG1vcmUgdGVtcGxhdGVzLgoJKGluc3RhbnRpYXRlX3BlbmRpbmdfdGVtcGxhdGVzKTogQWRqdXN0IGxvZ2ljIHRvIGhhbmRsZSBpbmxpbmUKCWZyaWVuZCBmdW5jdGlvbnMuCgoJKiBNYWtlZmlsZS5pbiAoR0dDX0gpOiBOZXcgdmFyaWFibGUuICBVc2UgaXQgdGhyb3VnaG91dCBpbiBwbGFjZQoJb2YgZ2djLmguCgoJKiBjYWxsLmM6IERvbid0IGluY2x1ZGUgb2JzdGFjay5oLiAgSW5jbHVkZSBnZ2MuaC4KCShvYnN0YWNrX2NodW5rX2FsbG9jKTogRG9uJ3QgZGVmaW5lLgoJKG9ic3RhY2tfY2h1bmtfZnJlZSk6IExpa2V3aXNlLgoJKGFkZF9jYW5kaWRhdGUpOiBBbGxvY2F0ZSB0aGUgel9jYW5kaWRhdGUgd2l0aCBnZ2NfYWxsb2Nfb2JqLgoJKiBkZWNsLmMgKHB1c2hfc3dpdGNoKTogVXNlIHhtYWxsb2MgdG8gYWxsb2NhdGUgdGhlIGNwX3N3aXRjaC4KCShwb3Bfc3dpdGNoKTogRnJlZSBpdC4KCgkqIGRlY2wyLmMgKGdyb2tjbGFzc2ZuKTogU2V0IFRSRUVfUkVBRE9OTFkgZm9yIFBBUk1fREVDTHMuCgoJKiBkdW1wLmMgKGRlcXVldWVfYW5kX2R1bXApOiBEb24ndCB0cnkgdG8gcHJpbnQgdGhlIGJpdF9wb3NpdGlvbgoJaWYgd2UgZG9uJ3QgaGF2ZSBhIERFQ0xfRklFTERfT0ZGU0VULgoKV2VkIEFwciAgNSAxNToxMjoxOCBNRVQgRFNUIDIwMDAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIG9wdGltaXplLmMgKGNhbGxzX3NldGptcF9yKTogVXNlIHNldGptcF9jYWxsX3AgaW5zdGVhZCBvZgoJc3BlY2lhbF9mdW5jdGlvbl9wLgoKMjAwMC0wNC0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2Zucy5ncGVyZiAoaGFzaCwgbGliY19uYW1lX3ApOiBQcm90b3R5cGUuCgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogQ29uc3RpZmljYXRpb24uCgoJKiBzZWFyY2guYyAoZGZzX2RlYnVnX3VubWFya2VkcCwgZGZzX2RlYnVnX21hcmspOiBVbmhpZGUgcHJvdG90eXBlcy4KCgkqIHNlbWFudGljcy5jIChkZWZlcnJlZF90eXBlX2FjY2Vzc19jb250cm9sKTogUHJvdG90eXBlLgoKMjAwMC0wNC0wNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCglDb3JyZWN0IG1hbnkgbmV3IEFCSSBpc3N1ZXMgcmVnYXJkaW5nIHZiYXNlIGFuZCB2Y2FsbCBvZmZzZXQKCWxheW91dC4KCSogY3AtdHJlZS5oIChCSU5GT19WVEFCTEUpOiBEb2N1bWVudC4KCShzdHJ1Y3QgbGFuZ190eXBlKTogVHdlYWsgZm9ybWF0dGluZy4KCShCSU5GT19QUklNQVJZX0JJTkZPKTogQWRkIHRvIGRvY3VtZW50YXRpb24uCgkoQ0xBU1NUWVBFX1ZTSVpFKTogRml4IHR5cG8gaW4gY29tbWVudC4KCShDTEFTU1RZUEVfVkJBU0VDTEFTU0VTKTogVXBkYXRlIGRvY3VtZW50YXRpb24uCgkoQklORk9fVkJBU0VfTUFSS0VEKTogUmVtb3ZlLgoJKFNFVF9CSU5GT19WQkFTRV9NQVJLRUQpOiBMaWtld2lzZS4KCShDTEVBUl9CSU5GT19WQkFTRV9NQVJLRUQpOiBMaWtld2lzZS4KCShCSU5GT19GSUVMRFNfTUFSS0VEKTogUmVtb3ZlLgoJKFNFVF9CSU5GT19GSUVMRFNfTUFSS0VEKTogTGlrZXdpc2UuCgkoQ0xFQVJfQklORk9fRklFTERTX01BUktFRCk6IExpa2V3aXNlLgoJKGVudW0gYWNjZXNzX2tpbmQpOiBOZXcgZW51bWVyYXRpb24uCgkobnVtX2V4dHJhX3Z0YmxfZW50cmllcyk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShzaXplX2V4dHJhX3Z0YmxfZW50cmllcyk6IExpa2V3aXNlLgoJKGdldF92dGJsX2RlY2xfZm9yX2JpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGRmc192YmFzZV91bm1hcmspOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkobWFya19wcmltYXJ5X2Jhc2VzKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKFNBTUVfRk4pOiBSZW1vdmUuCgkoc3RydWN0IHZjYWxsX29mZnNldF9kYXRhX3MpOiBNb3ZlIGRlZmluaXRpb24uCgkoYnVpbGRfdmJhc2VfcG9pbnRlcik6IFVzZSBgYnVpbGQnLCBub3QgYGJ1aWxkX2JpbmFyeV9vcCcsIHRvCglhY2Nlc3MgdGhlIHZiYXNlIHBvaW50ZXIgdW5kZXIgdGhlIG5ldyBBQkkuCgkoYnVpbGRfdnRhYmxlX2VudHJ5X3JlZik6IFVzZSBnZXRfdnRibF9kZWNsX2Zvcl9iaW5mby4KCShidWlsZF9wcmltYXJ5X3Z0YWJsZSk6IExpa2V3aXNlLgoJKGRmc19tYXJrX3ByaW1hcnlfYmFzZXMpOiBNb3ZlIGhlcmUgZnJvbSBzZWFyY2guYy4KCShtYXJrX3ByaW1hcnlfYmFzZXMpOiBMaWtld2lzZS4KCShkZXRlcm1pbmVfcHJpbWFyeV9iYXNlcyk6IFVuZGVyIHRoZSBuZXcgQUJJLCBkb24ndCBtYWtlIGEgYmFzZQoJY2xhc3MgYSBwcmltYXJ5IGJhc2UganVzdCBiZWNhdXNlIHdlIGRvbid0IHlldCBoYXZlIGFueSB2aXJ0dWFsCglmdW5jdGlvbnMuCgkobGF5b3V0X3Z0YWJsZV9kZWNsKTogVXNlIGdldF92dGJsX2RlY2xfZm9yX2JpbmZvLgoJKG51bV92ZnVuX2VudHJpZXMpOiBSZW1vdmUuCgkoZGZzX2NvdW50X3ZpcnR1YWxzKTogTGlrZXdpc2UuCgkobnVtX2V4dHJhX3Z0YmxfZW50cmllcyk6IExpa2V3aXNlLgoJKHNpemVfZXh0cmFfdnRibF9lbnRyaWVzKTogTGlrZXdpc2UuCgkobGF5b3V0X3ZpcnR1YWxfYmFzZXMpOiBJdGVyYXRlIGluIGluaGVyaXRhbmNlIGdyYXBoIG9yZGVyIHVuZGVyCgl0aGUgbmV3IEFCSS4KCShmaW5pc2hfc3RydWN0XzEpOiBVc2UgVFlQRV9WRklFTEQsIG5vdCBDTEFTU1RZUEVfVlNJWkUsIHRvCglpbmRpY2F0ZSB0aGF0IGEgdmZpZWxkIGlzIHByZXNlbnQuCgkoaW5pdF9jbGFzc19wcm9jZXNzaW5nKTogSW5pdGlhbGl6ZSBhY2Nlc3NfcHVibGljX25vZGUsIGV0Yy4sIGZyb20KCWFrX3B1YmxpYywgZXRjLgoJKGdldF92dGJsX2RlY2xfZm9yX2JpbmZvKTogTmV3IGZ1bmN0aW9uLgoJKGR1bXBfY2xhc3NfaGllcmFyY2h5X3IpOiBMaWtld2lzZS4KCShkdW1wX2NsYXNzX2hpZXJhcmNoeSk6IFVzZSBpdC4KCShmaW5pc2hfdnRibHMpOiBCdWlsZCB0aGUgdnRibHMgaW4gaW5oZXJpdGFuY2UgZ3JhcGggb3JkZXIuCgkoZGZzX2ZpbmlzaF92dGJscyk6IEFkanVzdCBjYWxsIHRvIGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIuCgkoaW5pdGlhbGl6ZV92dGFibGUpOiBVc2UgZ2V0X3Z0YmxfZGVjbF9mb3JfYmluZm8uCgkoYWNjdW11bGF0ZV92dGJsX2luaXRzKTogQWRkIGNvbW1lbnRzIGV4cGxhaW5pbmcgd2h5IGEgcHJlLW9yZGVyCgl3YWxrIGlzIHJlcXVpcmVkLgoJKGRmc19hY2N1bXVsYXRlX3Z0YmxfaW5pdHMpOiBTZXQgQklORk9fVlRBQkxFIHRvIHRoZSBsb2NhdGlvbgoJd2hlcmUgdGhlIHZwdHIgcG9pbnRzLCBldmVuIGZvciBwcmltYXJ5IHZ0YWJsZXMuCgkoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IEFkanVzdCBoYW5kbGluZyBvZiB2YmFzZSBhbmQgdmNhbGwKCW9mZnNldHMuCgkoYnVpbGRfdmNhbGxfYW5kX3ZiYXNlX3Z0YWJsZV9lbnRyaWVzKTogTmV3IGZ1bmN0aW9uLgoJKGRmc19idWlsZF92YmFzZV9vZmZzZXRfdnRibF9lbnRyaWVzKTogUmVtb3ZlLgoJKGJ1aWxkX3ZiYXNlX29mZnNldF92dGJsX2VudHJpZXMpOiBSZWltcGxlbWVudC4KCShkZnNfYnVpbGRfdmNhbGxfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IERvbid0IGluY2x1ZGUgdmlydHVhbHMgdGhhdAoJd2VyZSBhbHJlYWR5IGhhbmRsZWQgaW4gYSBwcmltYXJ5IGJhc2UgY2xhc3MgdnRhYmxlLgoJKGJ1aWxkX3ZjYWxsX29mZnNldF92dGJsX2VudHJpZXMpOiBBZGp1c3QuCgkoYnVpbGRfcnR0aV92dGJsX2VudHJpZXMpOiBBZGp1c3QuCgkqIGRlY2wyLmMgKG91dHB1dF92dGFibGVfaW5oZXJpdCk6IFVzZSBnZXRfdnRibF9kZWNsX2Zvcl9iaW5mby4KCSogaW5pdC5jIChleHBhbmRfdmlydHVhbF9pbml0KTogU2ltcGxpZnkuCgkqIHJlcG8uYyAocmVwb19nZXRfaWQpOiBVc2UgZ2V0X3Z0YmxfZGVjbF9mb3JfYmluZm8uCgkqIHJ0dGkuYyAoY3JlYXRlX3BzZXVkb190eXBlX2luZm8pOiBBZGp1c3QgY2FsY3VsYXRpb24gb2YgdnB0ci4KCSogc2VhcmNoLmMgKEJJTkZPX0FDQ0VTUyk6IE5ldyBtYWNyby4KCShTRVRfQklORk9fQUNDRVNTKTogTGlrZXdpc2UuCgkoZGZzX2FjY2Vzc19pbl90eXBlKTogTWFuaXB1bGF0ZSBhY2Nlc3Nfa2luZHMsIG5vdCBhY2Nlc3Mgbm9kZXMuCgkoYWNjZXNzX2luX3R5cGUpOiBMaWtld2lzZS4KCShkZnNfYWNjZXNzaWJsZV9wKTogTGlrZXdpc2UuCgkocHJvdGVjdGVkX2FjY2Vzc2libGVfcCk6IExpa2V3aXNlLgoJKGxvb2t1cF9mbmZpZWxkc18xKTogQWRqdXN0IGRvY3VtZW50YXRpb24uCgkoZGZzX21hcmtfcHJpbWFyeV9iYXNlcyk6IE1vdmUgdG8gY2xhc3MuYwoJKG1hcmtfcHJpbWFyeV9iYXNlcyk6IExpa2V3aXNlLgoJKGRmc192YmFzZV91bm1hcmspOiBSZW1vdmUuCgkodmlydHVhbF9jb250ZXh0KTogVXNlIEJJTkZPX0ZPUl9WQkFTRS4KCShkZnNfZ2V0X3ZiYXNlX3R5cGVzKTogU2ltcGxpZnkuCgkoZGZzX2J1aWxkX2luaGVyaXRhbmNlX2dyYXBoX29yZGVyKTogTmV3IGZ1bmN0aW9uLgoJKGdldF92YmFzZV90eXBlcyk6IFVzZSBpdC4KCSogdHJlZS5jIChkZWJ1Z19iaW5mbyk6IFVzZSBnZXRfdnRibF9kZWNsX2Zvcl9iaW5mby4KCgkqIHRpbmZvLmNjIChnZXRfdmJhc2Vfb2Zmc2V0KTogTmV3IGZ1bmN0aW9uLgoJKF9fdm1pX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZmluZF9wdWJsaWNfc3JjKTogVXNlIGl0LgoJKF9fdm1pX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZHluY2FzdCk6IExpa2V3aXNlLgoJKF9fdm1pX2NsYXNzX3R5cGVfaW5mbzo6ZG9fdXBjYXN0KTogTGlrZXdpc2UuCgoyMDAwLTA0LTAzICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBsYW5nLXNwZWNzLmg6IFBhc3MgLWZuby1zaG93LWNvbHVtbiB0byB0aGUgcHJlcHJvY2Vzc29yLgoKMjAwMC0wMy0zMCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0dGkuYyAoY2xhc3NfaGludF9mbGFncyk6IFJlbmFtZSBmbGFncy4KCShjbGFzc19pbml0aWFsaXplcik6IFJlbW92ZSBmbGFncy4KCShzeW50aGVzaXplX3RpbmZvX3Zhcik6IENvbWJpbmUgb2Zmc2V0IGFuZCBmbGFncy4gQWRkIGZsYWdzCglmb3IgX192bWlfY2xhc3NfdHlwZV9pbmZvLgoJKGNyZWF0ZV90aW5mb190eXBlcyk6IFJlbW92ZSBmbGFncyBmcm9tIF9fY2xhc3NfdHlwZV9pbmZvIGFuZAoJX19zaV9jbGFzc190eXBlX2luZm8uIE1lcmdlIGZsYWdzIGFuZCBvZmZzZXQgZnJvbQoJYmFzZV9jbGFzc190eXBlX2luZm8uCgkqIGluYy9jeHhhYmkuaCAoX19iYXNlX2NsYXNzX2luZm8pOiBNZXJnZSBvZmZzZXQgYW5kIHZtaV9mbGFncy4KCShfX2Jhc2VfY2xhc3NfaW5mbzo6aXNfdmlydHVhbF9wKTogQWRqdXN0LgoJKF9fYmFzZV9jbGFzc19pbmZvOjppc19wdWJsaWNfcCk6IEFkanVzdC4KCShfX2Jhc2VfY2xhc3NfaW5mbzo6b2Zmc2V0KTogTmV3IGFjY2Vzc29yLgoJKF9fY2xhc3NfdHlwZV9pbmZvOjpkZXRhaWxzKTogUmVtb3ZlIG1lbWJlci4KCShfX2NsYXNzX3R5cGVfaW5mbzo6X19jbGFzc190eXBlX2luZm8pOiBMb3NlIGRldGFpbHMuCgkoX19jbGFzc190eXBlX2luZm86OmRldGFpbF9tYXNrcyk6IFJlbW92ZS4KCShfX3NpX2NsYXNzX3R5cGVfaW5mbzo6X19zaV9jbGFzc190eXBlX2luZm8pOiBMb3NlIGRldGFpbHMuCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvOjpkZXRhaWxzKTogTmV3IG1lbWJlci4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86Ol9fdm1pX2NsYXNzX3R5cGVfaW5mbyk6IEFkanVzdC4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86OmRldGFpbF9tYXNrcyk6IE5ldyBtZW1iZXIuCgkqIHRpbmZvLmNjIChfX2NsYXNzX3R5cGVfaW5mbzo6ZG9fdXBjYXN0KTogSW5pdGlhbGl6ZSByZXN1bHQKCXdpdGggdW5rbm93bl9kZXRhaWxzX21hc2suCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvOjpkb19maW5kX3B1YmxpY19zcmMpOiBBZGp1c3QKCShfX3ZtaV9jbGFzc190eXBlX2luZm86OmRvX2R5bmNhc3QpOiBBZGp1c3QuCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvOjpkb191cGNhc3QpOiBTZXQgcmVzdWx0IGRldGFpbHMsIGlmCgluZWVkZWQuIEFkanVzdC4KCShfX2R5bmFtaWNfY2FzdCk6IFRlbXBvcmFyaWx5ICNpZiBvdXQgb3B0aW1pemF0aW9uLgoKMjAwMC0wMy0yOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2RlY2wpOiBNYXJrIHVzZWQuCgkoZW1pdF90aW5mb19kZWNsKTogRG9uJ3Qgb3B0aW1pemUgcG9seW1vcnBoaWMgdHlwZV9pbmZvLiBPbmx5CgltYXJrIGFzIGRlYWx0IHdpdGgsIGlmIHdlIG91dHB1dCBpdC4KCjIwMDAtMDMtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jOiBSZW9yZ2FuaXplIHRvIHB1dCB2aXJ0dWFsIGZ1bmN0aW9uIHRhYmxlIGluaXRpYWxpemF0aW9uCgltYWNoaW5lcnkgYXQgdGhlIGVuZCBvZiB0aGUgZmlsZS4KCjIwMDAtMDMtMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogY2xhc3MuYyAoZmluaXNoX3N0cnVjdCk6IFVzZSBiaXRzaXplX3plcm9fbm9kZS4KCSogcHQuYyAoaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUpOiBMaWtld2lzZS4KCjIwMDAtMDMtMjggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJUHV0IFJUVEkgZW50cmllcyBhdCBuZWdhdGl2ZSBvZmZzZXRzIGluIG5ldyBBQkkuCgkqIGNsYXNzLmMgKGRmc19idWlsZF92YmFzZV9vZmZzZXRfdnRibF9lbnRyaWVzKTogUHV0IHRoZSBmaXJzdAoJdmJhc2Ugb2Zmc2V0IGF0IGluZGV4IC0zLCBub3QgLTEuCgkoYnVpbGRfdnRhYmVfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IFVzZSB1bm1hcmtlZF92dGFibGVfcGF0aHAsIG5vdAoJZGZzX3Z0YWJsZV9wYXRoX3VubWFya2VkX3JlYWxfYmFzZXNfcXVldWVfcCB0byB3YWxrIGJhc2VzLgoJKGRmc19idWlsZF92Y2FsbF9vZmZzZXRfdnRibF9lbnRyaWVzKTogRG9uJ3QgdXNlIHNraXBfcnR0aV9zdHVmZi4KCShidWlsZF9ydHRpX3Z0YmxfZW50cmllcyk6IE5ldyBmdW5jdGlvbi4KCShzZXRfcnR0aV9lbnRyeSk6IFJlbW92ZS4KCShidWlsZF9wcmltYXJ5X3Z0YWJsZSk6IERvbid0IHVzZSBpdC4KCShidWlsZF9zZWNvbmRhcnlfdnRhYmxlKTogTGlrZXdpc2UuCgkoc3RhcnRfdnRhYmxlKTogUmVtb3ZlLgoJKGZpcnN0X3ZmdW5faW5kZXgpOiBOZXcgZnVuY3Rpb24uCgkoc2V0X3ZpbmRleCk6IExpa2V3aXNlLgoJKGFkZF92aXJ0dWFsX2Z1bmN0aW9uKTogRG9uJ3QgY2FsbCBzdGFydF92dGFibGUuICBEbyBjYWxsCglzZXRfdmluZGV4LgoJKHNldF9wcmltYXJ5X2Jhc2UpOiBSZW5hbWUgcGFyYW1ldGVyLgoJKGRldGVybWluZV9wcmltYXJ5X2Jhc2UpOiBMaWtld2lzZS4KCShudW1fdmZ1bl9lbnRyaWVzKTogRG9uJ3QgdXNlIHNraXBfcnR0aV9zdHVmZi4KCShudW1fZXh0cmFfdnRibF9lbnRyaWVzKTogSW5jbHVkZSBSVFRJIGluZm9ybWF0aW9uLgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBVc2UgYnVpbGRfcnR0aV92dGJsX2VudHJpZXMuCgkoc2tpcF9ydHRpX3N0dWZmKTogUmVtb3ZlLgoJKGRmc19tb2RpZnlfdnRhYmxlcyk6IERvbid0IHVzZSBpdC4KCShtb2RpZnlfYWxsX3Z0YWJsZXMpOiBEb24ndCB1c2Ugc3RhcnRfdnRhYmxlLiAgRG8gdXNlIHNldF92aW5kZXguCgkobGF5b3V0X25vbmVtcHR5X2Jhc2Vfb3JfZmllbGQpOiBVcGRhdGUgc2l6ZSBoYW5kbGluZy4KCShjcmVhdGVfdnRhYmxlX3B0cik6IFR3ZWFrLgoJKGxheW91dF9jbGFzc190eXBlKTogQWRqdXN0IHBhcmFtZXRlciBuYW1lcy4KCShmaW5pc2hfc3RydWN0XzEpOiBTaW1wbGlmeS4KCSogY3AtdHJlZS5oIChDTEFTU1RZUEVfVlNJWkUpOiBUd2VhayBkb2N1bWVudGF0aW9uLgoJKHNraXBfcnR0aV9zdHVmZik6IFJlbW92ZS4KCShmaXJzdF92ZnVuX2luZGV4KTogTmV3IGZ1bmN0aW9uLgoJKGRmc192dGFibGVfcGF0aF91bm1hcmtlZF9yZWFsX2Jhc2VzX3F1ZXVlX3ApOiBSZW1vdmUuCgkoZGZzX3Z0YWJsZV9wYXRoX21hcmtlZF9yZWFsX2Jhc2VzX3F1ZXVlX3ApOiBSZW1vdmUuCgkobWFya2VkX3Z0YWJsZV9wYXRocCk6IERlY2xhcmUuCgkodW5tYXJrZWRfdnRhYmxlX3BhdGhwKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IFVzZSBmaXJzdF92ZnVuX2luZGV4IHRvIGNhbGN1bGF0ZSB2dGFibGUKCW9mZnNldHMuCgkqIHJ0dGkuYyAoYnVpbGRfaGVhZG9mKTogTG9vayBmb3IgUlRUSSBhdCBuZWdhdGl2ZSBvZmZzZXRzLgoJKGdldF90aW5mb19kZWNsX2R5bmFtaWMpOiBMaWtld2lzZS4KCSh0aW5mb19iYXNlX2luaXQpOiBEb24ndCB0YWtlIHRoZSBhZGRyZXNzIG9mIHRoZSBUSU5GT19WVEFCTEVfREVDTAoJaGVyZS4KCShjcmVhdGVfcHNldWRvX3R5cGVfaW5mbyk6IERvIGl0IGhlcmUgaW5zdGVhZC4gIEFkanVzdCBzbyB0aGF0Cgl2cHRyIHBvaW50cyBhdCBmaXJzdCB2aXJ0dWFsIGZ1bmN0aW9uLgoJKiBzZWFyY2guYyAobWFya2VkX3Z0YWJsZV9wYXRocCk6IE1ha2UgaXQgZ2xvYmFsLgoJKHVubWFya2VkX3Z0YWJsZV9wYXRocCk6IExpa2V3aXNlLgoJKGRmc192dGFibGVfcGF0aF91bm1hcmtlZF9yZWFsX2Jhc2VzX3F1ZXVlX3ApOiBSZW1vdmUuCgkoZGZzX3Z0YWJsZV9wYXRoX21hcmtlZF9yZWFsX2Jhc2VzX3F1ZXVlX3ApOiBMaWtld2lzZS4KCShkZnNfZ2V0X3B1cmVfdmlydHVhbHMpOiBEb24ndCB1c2Ugc2tpcF9ydHRpX3N0dWZmLgoJKGdldF9wdXJlX3ZpcnR1YWxzKTogTGlrZXdpc2UuCgkoZXhwYW5kX3VwY2FzdF9maXh1cHMpOiBMaWtld2lzZS4KCSogdHJlZS5jIChkZWJ1Z19iaW5mbyk6IExpa2V3aXNlLgoJKiB0aW5mby5jYyAoX19keW5hbWljX2Nhc3QpOiBMb29rIGZvciB2dGFibGVfcHJlZml4IGF0IGFwcHJvcHJpYXRlCgluZWdhdGl2ZSBvZmZzZXQuCgpTdW4gTWFyIDI2IDIwOjE1OjI2IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjbGFzcy5jIChjaGVja19maWVsZF9kZWNsKTogRml4IHR5cG8uCgkoYnVpbGRfdnRibF9vcl92YmFzZV9maWVsZCk6IERvbid0IGNsZWFyIERFQ0xfU0FWRURfSU5TTlMuCgkoY2hlY2tfbWV0aG9kcyk6IExpa2V3aXNlLgoJKGNoZWNrX2ZpZWxkX2RlY2xzKTogTGlrZXdpc2UuCglVc2UgREVDTF9DT05URVhULCBub3QgREVDTF9GSUVMRF9DT05URVhULgoJKiBjcC10cmVlLmggKERFQ0xfU0hBRE9XRURfRk9SX1ZBUiwgREVDTF9URU1QTEFURV9SRVNVTFQpOgoJVXNlIERFQ0xfUkVTVUxUX0ZMRCwgbm90IERFQ0xfUkVTVUxULgoJKiBkZWNsLmMgKHhyZWZfdGFnKTogVXNlIERFQ0xfVEVNUExBVEVfUkVTVUxULgoJKiBsZXguYyAoaWRlbnRpZmllcl90eXBlKTogTGlrZXdpc2UuCgkqIHB0LmMgKGRldGVybWluZV9zcGVjaWFsaXphdGlvbiwgbG9va3VwX3RlbXBsYXRlX2NsYXNzKTogTGlrZXdpc2UuCgkodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbiwgdHN1YnN0X2RlY2wsIGluc3RhbnRpYXRlX3RlbXBsYXRlKTogTGlrZXdpc2UuCgkocmVzb2x2ZV9vdmVybG9hZGVkX3VuaWZpY2F0aW9uLCBtb3JlX3NwZWNpYWxpemVkKTogTGlrZXdpc2UuCgkqIHNlbWFudGljcy5jIChmaW5pc2hfbWVtYmVyX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF94X2Z1bmN0aW9uX2NhbGwpOiBMaWtld2lzZS4KCjIwMDAtMDMtMjYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfZW1wdHlfYmFzZSk6IEhhbmRsZSBlbXB0eSBiYXNlcyB3aXRoIG5vbi1ieXRlCglhbGlnbm1lbnQuCgkoYnVpbGRfYmFzZV9maWVsZCk6IExpa2V3aXNlLgoJKGxheW91dF92aXJ0dWFsX2Jhc2VzKTogTGlrZXdpc2UuCgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBGaXggdHlwbyBpbiB0aGlzIGNoYW5nZToKCglTYXQgTWFyIDI1IDA5OjEyOjEwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoyMDAwLTAzLTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENvdW50IHBhcnRpYWwgc3BlY2lhbGl6YXRpb25zIHdoZW4KCWtlZXBpbmcgdHJhY2sgb2YgaG93IG1hbnkgdGVtcGxhdGUgY2xhc3NlcyBoYXZlIGJlZW4gc2Vlbi4KCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IER1bXAgREVDTF9URU1QTEFURV9SRVNVTFQuCgpTYXQgTWFyIDI1IDA5OjEyOjEwIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wb2ludGVyX2ZpZWxkcyk6IGxheW91dF9maWVsZCBub3cgcGxhY2VfZmllbGQuCgkoZ2V0X3ZmaWVsZF9vZmZzZXQpOiBVc2UgYnl0ZV9wb3NpdGlvbi4KCShzZXRfcnR0aV9lbnRyeSk6IFNldCBPRkZTRVQgdG8gc3NpemV0eXBlIHplcm8uCgkoZ2V0X2JpbmZvX29mZnNldF9hc19pbnQpOiBEZWxldGVkLgoJKGRmc19yZWNvcmRfYmFzZV9vZmZzZXRzKTogVXNlIHRyZWVfbG93X2NzdC4KCShkZnNfc2VhcmNoX2Jhc2Vfb2Zmc2V0cyk6IExpa2V3aXNlLgoJKGxheW91dF9ub25lbXB0eV9iYXNlX29yX2ZpZWxkKTogUmVmbGVjdCBjaGFuZ2VzIGluIFJMSSBmb3JtYXQKCWFuZCBjYWxsIGJ5dGVfcG9zaXRpb24uCgkobGF5b3V0X2VtcHR5X2Jhc2UpOiBDb252ZXJ0IG9mZnNldCB0byBzc2l6ZXR5cGUuCgkoYnVpbGRfYmFzZV9maWVsZCk6IHVzZSBybGlfc2l6ZV91bml0X3NvX2Zhci4KCShkZnNfcHJvcGFnYXRlX2JpbmZvX29mZnNldHMpOiBEbyBjb21wdXRhdGlvbiBpbiBwcm9wZXIgdHlwZS4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IFBhc3Mgc3NpemV0eXBlIHRvIHByb3BhZ2F0ZV9iaW5mb19vZmZzZXRzLgoJKGxheW91dF9jbGFzc190eXBlKTogUmVmbGVjdCBjaGFuZ2VzIGluIFJMSSBuYW1lcyBhbmQgZmllbGRzLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IFNldCBERUNMX0ZJRUxEX09GRlNFVC4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogQ2FsbCBiaXRfcG9zaXRpb24uCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2NvbnN0YW50KTogVXNlIGJ5dGVfcG9zaXRpb24uCgkqIHJ0dGkuYyAoZXhwYW5kX2NsYXNzX2Rlc2MpOiBVc2UgYml0c2l6ZV9vbmVfbm9kZS4KCSogdHlwZWNrLmMgKGJ1aWxkX2NvbXBvbmVudF9hZGRyKTogVXNlIGJ5dGVfcG9zaXRpb24gYW5kIGRvbid0CglzcGVjaWFsIGNhc2UgZm9yIHplcm8gb2Zmc2V0LgoKMjAwMC0wMy0yNCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAodnR5cGVfZGVjbF9wKTogVXNlIFRZUEVfUE9MWU1PUlBISUNfUC4KCgkqIHJ0dGkuYyAoZ2V0X3RpbmZvX2RlY2wpOiBTZXQgY29tZGF0IGxpbmthZ2Ugb24gbmV3LWFiaQoJdGluZm8gb2JqZWN0LgoJKGVtaXRfdGluZm9fZGVjbCk6IE9ubHkgZW1pdCBwb2x5bW9ycGhpYyB0aW5mbydzIHdoZW4gZW1pdHRpbmcKCXZ0YWJsZS4KCjIwMDAtMDMtMjAgVGhlb2RvcmUgUGFwYWRvcG91bG8gPFRoZW9kb3JlLlBhcGFkb3BvdWxvQHNvcGhpYS5pbnJpYS5mcj4KCgkqIGNhbGwuYyAoY2hlY2tfZHRvcl9uYW1lLCBidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBVc2UgVFlQRV9QIGFuZAoJREVDTF9QIG1hY3Jvcy4KCSogZGVjbC5jIChwdXNoX2NsYXNzX2JpbmRpbmcsIHBvcGxldmVsLCBwdXNodGFnLCBsb29rdXBfbmFtZXNwYWNlX25hbWUsCgltYWtlX3R5cGVuYW1lX3R5cGUsIGNoZWNrX2luaXRpYWxpemVyLCBjcF9maW5pc2hfZGVjbCwKCXhyZWZfdGFnKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGdyb2tmaWVsZCwgYnVpbGRfZXhwcl9mcm9tX3RyZWUsIGJ1aWxkX2V4cHJfZnJvbV90cmVlLAoJZGVjbF9uYW1lc3BhY2UsIGFyZ19hc3NvY190ZW1wbGF0ZV9hcmcsIGFyZ19hc3NvYywKCXZhbGlkYXRlX25vbm1lbWJlcl91c2luZ19kZWNsLCBkb19jbGFzc191c2luZ19kZWNsKTogTGlrZXdpc2UuCgkqIGVycm9yLmMgKGR1bXBfdGVtcGxhdGVfYXJndW1lbnQsIGR1bXBfZXhwciwgY3BfZmlsZV9vZiwgY3BfbGluZV9vZiwKCWFyZ3NfdG9fc3RyaW5nKTogTGlrZXdpc2UuCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBMaWtld2lzZS4KCSogbGV4LmMgKG5vdGVfZ290X3NlbWljb2xvbiwgbm90ZV9saXN0X2dvdF9zZW1pY29sb24sCglpc19nbG9iYWwpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX25lc3RlZF9uYW1lLCBidWlsZF9vdmVybG9hZF92YWx1ZSwKCWJ1aWxkX3F1YWxpZmllZF9uYW1lLCBidWlsZF9xdWFsaWZpZWRfbmFtZSwgaGFja19pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHR5cGVuYW1lX3N1YiwgdHlwZW5hbWVfc3ViMSk6IExpa2V3aXNlLgoJKiBwdC5jIChwdXNoX2lubGluZV90ZW1wbGF0ZV9wYXJtc19yZWN1cnNpdmUsIGNoZWNrX3RlbXBsYXRlX3NoYWRvdywKCXByb2Nlc3NfcGFydGlhbF9zcGVjaWFsaXphdGlvbiwgY29udmVydF90ZW1wbGF0ZV9hcmd1bWVudCwKCXRlbXBsYXRlX2FyZ3NfZXF1YWwsIGFkZF9wZW5kaW5nX3RlbXBsYXRlLCBsb29rdXBfdGVtcGxhdGVfY2xhc3MsCglmb3JfZWFjaF90ZW1wbGF0ZV9wYXJtX3IsIG1heWJlX2ZvbGRfbm9udHlwZV9hcmcsCgl0c3Vic3QsIGluc3RhbnRpYXRlX3RlbXBsYXRlLCB0eXBlX3VuaWZpY2F0aW9uX3JlYWwsIHVuaWZ5LAoJaW5zdGFudGlhdGVfcGVuZGluZ190ZW1wbGF0ZXMsIHNldF9tYW5nbGVkX25hbWVfZm9yX3RlbXBsYXRlX2RlY2wpOgoJTGlrZXdpc2UuCgkqIHJlcG8uYyAocmVwb19nZXRfaWQsIHJlcG9fdGVtcGxhdGVfdXNlZCk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX2ZpZWxkXzEpOiBMaWtld2lzZS4KCSogdHJlZS5jICh3YWxrX3RyZWUsIGdldF90eXBlX2RlY2wsIGNwX3RyZWVfZXF1YWwsIG1lbWJlcl9wKTogTGlrZXdpc2UuCgkqIHhyZWYuYyAoY2xhc3NuYW1lKTogTGlrZXdpc2UuCgoyMDAwLTAzLTIyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChCSU5GT19GT1JfVkJBU0UpOiBBZGp1c3QgZG9jdW1lbnRhdGlvbi4KCShDQU5PTklDQUxfQklORk8pOiBOZXcgbWFjcm8uCgkoQklORk9fTkVXX1ZUQUJMRV9NQVJLRUQpOiBVc2UgaXQuCgkoU0VUX0JJTkZPX05FV19WVEFCTEVfTUFSS0VEKTogTGlrZXdpc2UuCgkoQ0xFQVJfQklORk9fTkVXX1ZUQUJMRV9NQVJLRUQpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoZGZzX2J1aWxkX3ZiYXNlX29mZnNldF92dGJsX2VudHJpZXMpOiBVc2UgQklORk9fVFlQRSwKCW5vdCBUUkVFX1RZUEUuCgkoYnVpbGRfcHJpbWFyeV92dGFibGUpOiBBZGp1c3QgdXNhZ2Ugb2YgQklORk9fTkVXX1ZUQUJMRV9NQVJLRUQuCgkoYnVpbGRfc2Vjb25kYXJ5X3Z0YWJsZSk6IExpa2V3aXNlLgoJKGRmc19maW5pc2hfdnRibHMpOiBMaWtld2lzZS4KCShkZnNfYWNjdW11bGF0ZV92dGJsX2luaXRzKTogTGlrZXdpc2UuCgkoYWNjdW11bGF0ZV92dGJsX2luaXRzKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF92dGJscyk6IE1ha2Ugc3VyZSB0aGF0IHZpcnR1YWwgYmFzZXMgY29tZSBhZnRlcgoJbm9uLXZpcnR1YWwgYmFzZXMgaW4gdGhlIHZ0YWJsZSBncm91cC4KCShyZWNvcmRfYmFzZV9vZmZzZXRzKTogRG9uJ3Qgc2F2ZSBhbmQgcmVzdG9yZSBUUkVFX1ZJQV9WSVJUVUFMLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IEFkanVzdCB1c2FnZSBvZiBCSU5GT19ORVdfVlRBQkxFX01BUktFRC4KCSogc2VhcmNoLmMgKHN0cnVjdCB2YmFzZV9pbmZvKTogTW92ZSBkZWZpbml0aW9uLgoJKG1hcmtlZF9uZXdfdnRhYmxlX3ApOiBBZGp1c3QgdXNhZ2Ugb2YgQklORk9fTkVXX1ZUQUJMRV9NQVJLRUQuCgkodW5tYXJrZWRfbmV3X3Z0YWJsZV9wKTogTGlrZXdpc2UuCgkoZGZzX21hcmtfdnRhYmxlX3BhdGgpOiBSZW1vdmUuCgkoZGZzX21hcmtfbmV3X3Z0YWJsZSk6IFJlbW92ZS4KCShkZnNfdW5tYXJrX25ld192dGFibGUpOiBMaWtld2lzZS4KCShkZnNfY2xlYXJfc2VhcmNoX3Nsb3QpOiBMaWtld2lzZS4KCShkZnNfZmluZF92YmFzZXMpOiAgQWRqdXN0IHVzYWdlIG9mIEJJTkZPX05FV19WVEFCTEVfTUFSS0VELgoJKGRmc19jbGVhcl92YmFzZV9zbG90cyk6IExpa2V3aXNlLgoJKGluaXRfdmJhc2VfcG9pbnRlcnMpOiBMSWtld2lzZS4KCjIwMDAtMDMtMjIgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogdHlwZWNrLmMgKHR5cGVfYWZ0ZXJfdXN1YWxfYXJpdGhtZXRpY19jb252ZXJzaW9ucyk6IFByZWZlciBhCglTSVpFVFlQRSB0byBhIG5vbi1TSVpFVFlQRS4KCjIwMDAtMDMtMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChsYXlvdXRfdmlydHVhbF9iYXNlcyk6IEFkanVzdCBuYW1lcyBpbiBjb25kaXRpb25hbGx5Cgljb21waWxlZCBjb2RlLgoKCSogY2xhc3MuYyAocmVjb3JkX2Jhc2Vfb2Zmc2V0cyk6IE5ldyBmdW5jdGlvbi4KCShsYXlvdXRfY29uZmxpY3RfcCk6IExpa2V3aXNlLgoJKGxheW91dF9ub25lbXB0eV9iYXNlX29yX2ZpZWxkKTogVXNlIGl0LgoJKGxheW91dF9lbXB0eV9iYXNlKTogTmV3IGZ1bmN0aW9uLgoJKGJ1aWxkX2Jhc2VfZmllbGQpOiBVc2UgaXQuCgkoYnVpbGRfYmFzZV9maWVsZHMpOiBVcGRhdGUgY29tbWVudC4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IEZvbGQgaW4gYSBsaXR0bGUgY29kZSBmb3JtCglsYXlvdXRfYmFzZXR5cGVzLiAgVXNlIGxheW91dF9lbXB0eV9iYXNlLgoJKGxheW91dF9iYXNldHlwZXMpOiBSZW1vdmUuCgkoZW5kX29mX2NsYXNzKTogTmV3IGZ1bmN0aW9uLgoJKGxheW91dF9jbGFzc190eXBlKTogVXNlIGl0LiAgQWRqdXN0LgoKCSogY3AtdHJlZS5oIChDTEFTU1RZUEVfVkJBU0VDTEFTU0VTKTogRml4IHR5cG8gaW4gY29tbWVudC4KCShmbnR5cGVfcCk6IFJlbW92ZS4KCSogc2VhcmNoLmMgKGRmc19za2lwX25vbnByaW1hcnlfdmJhc2VzX3VubWFya2VkcCk6IEZpeCB0eXBvIGluCgljb21tZW50LgoJKGRmc19za2lwX25vbnByaW1hcnlfdmJhc2VzX21hcmtlZHApOiBMaWtld2lzZS4KCSogdHlwZWNrLmMgKGZudHlwZV9wKTogUmVtb3ZlLgoKCSogY3AtdHJlZS5oIChUSV9TUEVDX0lORk8pOiBSZW1vdmUuCgkoQ0xBU1NUWVBFX1RJX1NQRUNfSU5GTyk6IExpa2V3aXNlLgoJKiBwdC5jIChwcm9jZXNzX3BhcnRpYWxfc3BlY2lhbGl6YXRpb24pOiBMaWtld2lzZS4KCgkqIGNsYXNzLmMgKGJ1aWxkX2Jhc2VfZmllbGQpOiBGaXggdGhpbmtvIGluIGNvbXB1dGF0aW9uIG9mIGJpbmZvCglvZmZzZXRzLgoKCSogdHJlZS5jIChtYXJrX2xvY2FsX2Zvcl9yZW1hcF9wKTogTWFyayB2YXJpYWJsZXMgZGVjbGFyZWQgaW4KCVRBUkdFVF9FWFBScyBhcyB3ZWxsLgoKMjAwMC0wMy0yMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHR5cGVjay5jIChyZXF1aXJlX2NvbXBsZXRlX3R5cGUsIGNvbXBsZXRlX3R5cGUsCgljb21wbGV0ZV90eXBlX29yX2Vsc2UsIGNfc2l6ZW9mLCBjX3NpemVvZl9ub3dhcm4sCglidWlsZF9hcnJheV9yZWYsIGNvbnZlcnRfYXJndW1lbnRzLCBwb2ludGVyX2RpZmYsCglidWlsZF94X3VuYXJ5X29wLCBidWlsZF91bmFyeV9vcCwgYnVpbGRfY19jYXN0LAoJYnVpbGRfbW9kaWZ5X2V4cHIpOiBVc2UgQ09NUExFVEVfVFlQRV9QIGV0Yy4KCSogY2FsbC5jIChpc19jb21wbGV0ZSwgY29udmVydF9saWtlX3JlYWwsCglidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBMaWtld2lzZS4KCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMsIGNoZWNrX2Jhc2VzLAoJYnVpbGRfYmFzZV9maWVsZCwgZmluaXNoX3N0cnVjdF8xLCBwdXNoY2xhc3MpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNwX2NvbnZlcnRfdG9fcG9pbnRlciwgY29udmVydF90b192b2lkKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAobWF5YmVfcHJvY2Vzc190ZW1wbGF0ZV90eXBlX2RlY2xhcmF0aW9uLCBwdXNodGFnLAoJcHVzaGRlY2wsIHJlZGVjbGFyYXRpb25fZXJyb3JfbWVzc2FnZSwgc3RhcnRfZGVjbCwgc3RhcnRfZGVjbF8xLAoJbGF5b3V0X3Zhcl9kZWNsLCBjaGVja19pbml0aWFsaXplciwgY3BfZmluaXNoX2RlY2wsCglncm9rZGVjbGFyYXRvciwgcmVxdWlyZV9jb21wbGV0ZV90eXBlc19mb3JfcGFybXMsCglncm9rX29wX3Byb3BlcnRpZXMsIHhyZWZfdGFnLCB4cmVmX2Jhc2V0eXBlcywKCWNoZWNrX2Z1bmN0aW9uX3R5cGUpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoY2hlY2tfY2xhc3NmbiwgcmVwYXJzZV9hYnNkY2xfYXNfY2FzdHMpOiBMaWtld2lzZS4KCSogZnJpZW5kLmMgKGRvX2ZyaWVuZCk6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoc3RydWN0c3ApOiBMaWtld2lzZS4KCSogcHQuYyAobWF5YmVfcHJvY2Vzc19wYXJ0aWFsX3NwZWNpYWxpemF0aW9uLAoJdHN1YnN0X2ZyaWVuZF9mdW5jdGlvbiwgaW5zdGFudGlhdGVfY2xhc3NfdGVtcGxhdGUsIHRzdWJzdCwKCWRvX3R5cGVfaW5zdGFudGlhdGlvbiwgaW5zdGFudGlhdGVfcGVuZGluZ190ZW1wbGF0ZXMpOiBMaWtld2lzZS4KCSogcmVwby5jIChyZXBvX2dldF9pZCk6IExpa2V3aXNlLgoJKiBydHRpLmMgKGJ1aWxkX3R5cGVpZCwgZ2V0X3R5cGVpZCwgYnVpbGRfZHluYW1pY19jYXN0XzEsCglzeW50aGVzaXplX3RpbmZvX3ZhciwgZW1pdF9zdXBwb3J0X3RpbmZvcyk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAobG9va3VwX2ZuZmllbGRzXzEsIGxvb2t1cF9jb252ZXJzaW9ucyk6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fY2xhc3NfZGVmaW5pdGlvbik6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGJ1aWxkX2NwbHVzX21ldGhvZF90eXBlKTogTGlrZXdpc2UuCgkqIHR5cGVjazIuYyAoZGlnZXN0X2luaXQsIGJ1aWxkX2Z1bmN0aW9uYWxfY2FzdCwKCWFkZF9leGNlcHRpb25fc3BlY2lmaWVyKTogTGlrZXdpc2UuCgkqIHBhcnNlLmgsIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoKMjAwMC0wMy0yMSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGluYy9jeHhhYmkuaDogTmV3IGhlYWRlciBmaWxlLiBEZWZpbmUgbmV3LWFiaSBlbnRyeSBwb2ludHMuCgkoX19wb2ludGVyX3R5cGVfaW5mbzo6dGFyZ2V0KTogUmVuYW1lIG1lbWJlciB0byAuLi4KCShfX3BvaW50ZXJfdHlwZV9pbmZvOjp0eXBlKTogLi4uIGhlcmUuCgkoX19iYXNlX2NsYXNzX2luZm86OnR5cGUpOiBSZW5hbWUgbWVtYmVyIHRvIC4uLgoJKF9fYmFzZV9jbGFzc19pbmZvOjpiYXNlKTogLi4uIGhlcmUuCgkqIE1ha2UtbGFuZy5pbiAoQ1hYX0VYVFJBX0hFQURFUlMpOiBBZGQgY3h4YWJpLmgKCSogY3AtdHJlZS5oIChDUFRJX0FCSSk6IE5ldyBnbG9iYWwgdHJlZSBlbnVtZXJhdGlvbi4KCShhYmlfbm9kZSk6IE5ldyBnbG9iYWwgdHJlZSBub2RlLgoJKiBkZWNsLmMgKGFiaV9ub2RlKTogRG9jdW1lbnQuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBJbml0aWFsaXplIGFiaV9ub2RlLgoJKiBydHRpLmMgKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogVXNlIGFiaV9ub2RlIGZvciBuZXctYWJpLgoJKGdldF92bWlfcHNldWRvX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKGNyZWF0ZV90aW5mb190eXBlcyk6IExpa2V3aXNlLgoJKGVtaXRfc3VwcG9ydF90aW5mb3MpOiBMaWtld2lzZS4KCSogdGluZm8uaCAoY3h4YWJpLmgpOiBJbmNsdWRlIGZvciBuZXctYWJpLgoJTW92ZSBydHRpIGNsYXNzIGRlZmluaXRpb25zIHRvIG5ldyBoZWFkZXIgZmlsZS4KCSogdGluZm8uY2MgKGFiaSk6IFVzZSB0aGUgbmFtZXNwYWNlLgoJKHN0ZCk6IE1vdmUgbmV3IGFiaSBydHRpIGNsYXNzZXMgZnJvbSBoZXJlIC4uLgoJKF9fY3h4YWJpdjEpOiAuLi4gdG8gaGVyZS4KCSogdGluZm8yLmNjIChjeHhhYmkuaCk6IEluY2x1ZGUgZm9yIG5ldy1hYmkuCglNb3ZlIHJ0dGkgY2xhc3MgZGVmaW5pdGlvbnMgdG8gbmV3IGhlYWRlciBmaWxlLgoJKHN0ZCk6IE1vdmUgbmV3IGFiaSBydHRpIGNsYXNzZXMgZnJvbSBoZXJlIC4uLgoJKF9fY3h4YWJpdjEpOiAuLi4gdG8gaGVyZS4KCSogaW5jL3R5cGVpbmZvIChfX2NsYXNzX3R5cGVfaW5mbyk6IE1vdmUgaW50byBfX2N4eGFiaXYxCgluYW1lc3BhY2UuCgoyMDAwLTAzLTIwICBKZWQgV2luZyA8amVkd2luQHpsb3R5LnVnY3MuY2FsdGVjaC5lZHU+CgkgICAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBtZXRob2QuYyAoYnVpbGRfb3ZlcmxvYWRfaW50KTogVXNlIGhvc3RfaW50ZWdlcnAuCgoyMDAwLTAzLTIwIFRoZW9kb3JlIFBhcGFkb3BvdWxvIDxUaGVvZG9yZS5QYXBhZG9wb3Vsb0Bzb3BoaWEuaW5yaWEuZnI+CgoJKiBpbml0LmMgKGJ1aWxkX29mZnNldF9yZWYpOiBIYW5kbGUgdGhlIGNhc2Ugb2YgYSB0ZW1wbGF0ZWQgbWVtYmVyCglmdW5jdGlvbi4KCjIwMDAtMDMtMTkgIE1hcnRpbiB2LiBM9ndpcyAgPGxvZXdpc0BpbmZvcm1hdGlrLmh1LWJlcmxpbi5kZT4KCgkqIGV4Y2VwdC5jIChleHBhbmRfZXhjZXB0aW9uX2Jsb2Nrcyk6IENsZWFyIGNhdGNoX2NsYXVzZXNfbGFzdC4KCjIwMDAtMDMtMTggIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENMRUFSX0RFQ0xfQ19CSVRfRklFTEQpOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKGNoZWNrX2JpdGZpZWxkX2RlY2wpOiBUdXJuIGlsbGVnYWwgYml0ZmllbGRzIGludG8KCW5vbi1iaXRmaWVsZHMuCgkoZGZzX3Byb3BhZ2F0ZV9iaW5mb19vZmZzZXRzKTogQWRqdXN0IGZvciBuZXcgc2l6ZV9iaW5vcAoJc2VtYW50aWNzLgoJKGRmc19vZmZzZXRfZm9yX3Vuc2hhcmVkX3ZiYXNlcyk6IExpa2V3aXNlLgoJKiBjdnQuYyAoY3BfY29udmVydF90b19wb2ludGVyKTogQ29udmVydCBOVUxMIHRvIGEKCXBvaW50ZXItdG8tbWVtYmVyIGNvcnJlY3RseSB1bmRlciB0aGUgbmV3IEFCSS4KCSogZXhwci5jIChjcGx1c19leHBhbmRfY29uc3RhbnQpOiBEb24ndCB1c2UgY3BfY29udmVydCB3aGVuCgl0dXJuaW5nIGFuIG9mZnNldCBpbnRvIGEgcG9pbnRlci10by1tZW1iZXIuCgkqIGluaXQuYyAocmVzb2x2ZV9vZmZzZXRfcmVmKTogRG9uJ3QgYWRqdXN0IHBvaW50ZXJzLXRvLW1lbWJlcnMKCXdoZW4gZGVyZWZlcmVuY2luZyB0aGVtIHVuZGVyIHRoZSBuZXcgQUJJLgoJKiB0eXBlY2suYyAoZ2V0X21lbWJlcl9mdW5jdGlvbl9mcm9tX3B0cmZ1bmMpOiBUd2VhayBjYWxjdWxhdGlvbgoJb2YgcG9pbnRlcnMtdG8tbWVtYmVycyB1bmRlciB0aGUgbmV3IEFCSS4KCgkqIGNsYXNzLmMgKGNoZWNrX2JpdGZpZWxkX2RlY2wpOiBSZW1vdmUgcmVzdHJpY3Rpb24gb24gcmVhbGx5IGxvbmcKCWJpdGZpZWxkcy4KCShsYXlvdXRfY2xhc3NfdHlwZSk6IEltcGxlbWVudCBuZXcgQUJJIGhhbmRsaW5nIG9mIGJpdGZpZWxkcwoJbG9uZ2VyIHRoYW4gdGhlaXIgdHlwZXMuCgoyMDAwLTAzLTE4ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBwYXJzZS55IChleHRkZWZzKTogQ2FsbCBnZ2NfY29sbGVjdC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgoyMDAwLTAzLTE4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfYmFzZV9maWVsZCk6IFVzZSBUWVBFX0FMSUdOIHRvIGV4YW1pbmUgYSB0eXBlLgoJKG5vdGVfbmFtZV9kZWNsYXJlZF9pbl9jbGFzcyk6IFVzZSBPVkxfQ1VSUkVOVCB0byBnZXQgYXQgYQoJcG90ZW50aWFsIG92ZXJsb2FkLgoKRnJpIE1hciAxNyAwODowOToxNCAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcGF0aCk6IFVzZSBpbnRlZ2VyX3plcm9wLgoJKGJ1aWxkX3Z0YWJsZV9lbnRyeSk6IFVzZSB0cmVlX2xvd19jc3QuCgkoZ2V0X3ZmaWVsZF9vZmZzZXQpOiBVc2UgYml0X3Bvc2l0aW9uLgoJKGRmc19tb2RpZnlfdnRhYmxlcyk6IE5ldyB2YXJpYWJsZSB2aW5kZXhfdmFsOyBgaScgaXMgSE9TVF9XSURFX0lOVC4KCVVzZSB0cmVlX2xvd19jc3QuCgkoY2hlY2tfYml0ZmllbGRfZGVjbCk6IFNldCBERUNMX1NJWkUgdXNpbmcgY29udmVydC4KCShidWlsZF9iYXNlX2ZpZWxkKTogU2V0IERFQ0xfU0laRSBhbmQgREVDTF9TSVpFX1VOSVQgdXNpbmcgc2l6ZV9iaW5vcC4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IERTSVpFIGlzIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQuCglVc2UgdHJlZV9sb3dfY3N0LgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBiaXRfcG9zaXRpb24uCgkoZHVtcF9jbGFzc19oaWVyYXJjaHkpOiBVc2UgdHJlZV9sb3dfY3N0LgoJKiBjcC10cmVlLmggKG1pbl9wcmVjaXNpb24pOiBBZGQgZGVjbGFyYXRpb24uCgkqIGRlY2wuYyAoeHJlZl90YWcsIHhyZWZfYmFzZXR5cGVzKTogVXNlIHRyZWVfbG93X2NzdC4KCSogZXJyb3IuYyAoZHVtcF90eXBlX3N1ZmZpeCk6IFVzZSBob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QuCgkoZHVtcF9leHByKTogVXNlIGludGVnZXJfemVyb3AsIGhvc3RfaW50ZWdlcnAsIGFuZCB0cmVlX2xvd19jc3QuCgkqIGV4cHIuYyAoY3BsdXNfZXhwYW5kX2NvbnN0YW50KTogVXNlIGJpdF9wb3NpdGlvbi4KCSogaW5pdC5jIChidWlsZF92ZWNfaW5pdCk6IFVzZSBob3N0X2ludGVnZXJwIGFuZCB0cmVlX2xvd19jc3QuCgkqIHJ0dGkuYyAoZ2V0X2Jhc2Vfb2Zmc2V0KTogVXNlIGJpdF9wb3NpdGlvbi4KCSogdHlwZWNrLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IFVzZSBpbnRlZ2VyX3plcm9wLCBjb21wYXJlX3RyZWVfaW50LAoJaG9zdF9pbnRlZ2VycCwgYW5kIHRyZWVfbG93X2NzdC4KCShwb2ludGVyX2ludF9zdW0pOiBVc2UgaW50ZWdlcl96ZXJvcC4KCShidWlsZF9jb21wb25lbnRfYWRkcik6IFVzZSBiaXRfcG9zaXRpb24uCgoyMDAwLTAzLTE3ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrLmMgKHJlcXVpcmVfY29tcGxldGVfdHlwZSk6IERvbid0IGFzc3VtZSBzaXplX3plcm9fbm9kZS4KCShjb21wbGV0ZV90eXBlX29yX2Vsc2UpOiBMaWtld2lzZS4KCjIwMDAtMDMtMTYgIFN0ZXZlbiBHcmFkeSA8Z3JhZHlAZGlnaXRhbGRlY2suY29tPgoJICAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogcnR0aS5jIChidWlsZF9keW5hbWljX2Nhc3RfMSk6IEltcHJvdmUgZGlhZ25vc3RpY3MuCgoyMDAwLTAzLTE2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAoZ3Jva2ZpZWxkKTogQmFpbCBvdXQgaWYgdHlwZSBpcyBlcnJvcl9tYXJrX25vZGUuCgoyMDAwLTAzLTE1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdGluZm8yLmNjIChfX3B0cl90b19tZW1iZXJfZGF0YSk6IFJlbmFtZSB0byAuLi4KCShfX3BvaW50ZXJfdG9fbWVtYmVyX2RhdGEpOiAuLi4gaGVyZS4gQWRqdXN0LgoJKiBydHRpLmMgKGNyZWF0ZV90aW5mb190eXBlcyk6IEFkanVzdC4KCjIwMDAtMDMtMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENQVElfUkVGX0RFU0NfVFlQRSwgcmVmX2Rlc2NfdHlwZV9ub2RlKTogUmVtb3ZlLgoJKiBkZWNsLmMgKHJlZl9kZXNjX3R5cGVfbm9kZSk6IFVuZG9jdW1lbnQuCgkqIHJ0dGkuYyAocHRyX3JlZl9pbml0aWFsaXplcik6IFJlbmFtZSB0byAuLi4KCShwdHJfaW5pdGlhbGl6ZXIpOiAuLi4gaGVyZS4gQWRqdXN0IGNvbW1lbnRzLgoJKHB0bWRfaW5pdGlhbGl6ZXIpOiBGaXggY29tbWVudCB0aGlua28uCgkoc3ludGhlc2l6ZV90aW5mb192YXIpOiBSZW1vdmUgUkVGRVJFTkNFX1RZUEUgY2FzZS4KCShjcmVhdGVfdGluZm9fdHlwZXMpOiBSZW1vdmUgcmVmX2Rlc2NfdHlwZV9ub2RlIGluaXQuCgkqIHRpbmZvMi5jYyAoX19yZWZlcmVuY2VfdHlwZV9pbmZvKTogUmVtb3ZlLgoKMjAwMC0wMy0xNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoY3BfZmluaXNoX2RlY2wpOiBSZW1vdmUgb2Jzb2xldGUgY29tbWVudC4KCgkqIHR5cGVjay5jIChidWlsZF9wdHJtZW1mdW5jMSk6IEtpbGwgdW5pbml0aWFsaXplZCB3YXJuaW5nLgoKMjAwMC0wMy0xNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaDogVHdlYWsgZG9jdW1lbnRhdGlvbi4KCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBMYXlvdXQgdGhlIGZpZWxkcywgdG9vLgoJKGF2b2lkX292ZXJsYXApOiBSZW1vdmUuCgkoZ2V0X2JpbmZvX29mZnNldF9hc19pbnQpOiBOZXcgZnVuY3Rpb24uCgkoZGZzX3NlcmFjaF9iYXNlX29mZnNldHMpOiBMaWtld2lzZS4KCShsYXlvdXRfbm9uZW1wdHlfYmFzZV9vcl9maWVsZCk6IExpa2V3aXNlLgoJKGJ1aWxkX2Jhc2VfZmllbGQpOiBMYXlvdXQgZmllbGRzIGhlcmUuICBBdm9pZCBwbGFjaW5nIHR3byBvYmplY3RzCglvZiB0aGUgc2FtZSB0eXBlIGF0IHRoZSBzYW1lIGFkZHJlc3MsIHVuZGVyIHRoZSBuZXcgQUJJLgoJKGJ1aWxkX2Jhc2VfZmllbGRzKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKGNyZWF0ZV92dGFibGVfcHRyKTogUmV0dXJuIHRoZSBuZXcgZmllbGQsIGJ1dCBkb24ndCBhdHRhY2ggaXQgdG8KCVRZUEVfRklFTERTLgoJKHJlbW92ZV9iYXNlX2ZpZWxkKTogUmVtb3ZlLgoJKHJlbW92ZV9iYXNlX2ZpZWxkcyk6IFJlbW92ZS4KCShsYXlvdXRfYmFzZXR5cGVzKTogQWRqdXN0IGFjY29yZGluZ2x5LgoJKGxheW91dF9jbGFzc190eXBlKTogQ2FsbCBsYXlvdXRfZmllbGQgZm9yIGVhY2ggZmllbGQsIHJhdGhlciB0aGFuCglqdXN0IG1ha2luZyBhIHdob2xlc2FsZSBjYWxsIHRvIGxheW91dF90eXBlLgoKMjAwMC0wMy0xNCAgSmVmZiBTdHVybSAgPGpzdHVybUBzaWdtYTYuY29tPgoKCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IEZpeCB0eXBvIGluIF9Kdl9TamxqX1Rocm93LgoKMjAwMC0wMy0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tmbmRlY2wpOiBTZXQgVFJFRV9OT1RIUk9XIGlmIFRZUEVfTk9USFJPV19QLgoKCSogZXhjZXB0LmMgKGR0b3Jfbm90aHJvdyk6IE5ldyBmbi4KCShkb19wb3BfZXhjZXB0aW9uKTogVXNlIGl0LiAgVGFrZSB0eXBlIHBhcm0uCgkocHVzaF9laF9jbGVhbnVwKTogVGFrZSB0eXBlIHBhcm0uCgkoZXhwYW5kX3N0YXJ0X2NhdGNoX2Jsb2NrKTogUGFzcyBpdC4KCShidWlsZF9laF90eXBlX3R5cGVfcmVmKTogQWNjZXB0IG51bGwgdHlwZS4KCjIwMDAtMDMtMTIgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHJldmVydF9zdGF0aWNfbWVtYmVyX2ZuKTogQ2hhbmdlIHByb3RvdHlwZS4KCSogZGVjbC5jIChncm9rZm5kZWNsKTogQWRqdXN0IGNhbGwgdG8gcmV2ZXJ0X3N0YXRpY19tZW1iZXJfZm4uCgkoZ3Jva19vcF9wcm9wZXJ0aWVzKTogTGlrZXdpc2UuCgkoc3RhcnRfZnVuY3Rpb24pOiBMaWtld2lzZS4KCShyZXZlcnRfc3RhdGljX21lbWJlcl9mbik6IFNpbXBsaWZ5LgoJKiBwdC5jIChjaGVja19leHBsaWNpdF9zcGVjaWFsaXphdGlvbik6IEFkanVzdCBjYWxsIHRvCglyZXZlcnRfc3RhdGljX21lbWJlcl9mbi4KCjIwMDAtMDMtMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHNjb3BlX2tpbmQpOiBOZXcgdHlwZS4KCSh0bXBsX3NwZWNfa2luZCk6IExpa2V3aXNlLgoJKGRlY2xhcmVfcHNldWRvX2dsb2JhbF9sZXZlbCk6IFJlbW92ZS4KCShwc2V1ZG9fZ2xvYmFsX2xldmVsX3ApOiBSZW5hbWUgdG8gdGVtcGxhdGVfcGFybV9zY29wZV9wLgoJKHB1c2hsZXZlbCk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShiZWdpbl9zY29wZSk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfc2NvcGUpOiBMaWtld2lzZS4KCShjdXJyZW50X3RtcGxfc3BlY19raW5kKTogTGlrZXdpc2UuCgkqIGRlY2wuYyAoc3RydWN0IGJpbmRpbmdfbGV2ZWwpOiBTaG9ydGVuIHBhcm1fZmxhZyB0byAyIGJpdHMuCglTaG9ydGVuIGtlZXAgdG8gMiBiaXRzLiAgUmVuYW1lIHBzZXVkb19nbG9iYWwgdG8gdGVtcGxhdGVfcGFybXNfcC4KCUFkZCB0ZW1wbGF0ZV9zcGVjX3AuCgkodG9wbGV2ZWxfYmluZGluZ3NfcCk6IEFkanVzdC4KCShkZWNsYXJlX3BzZXVkb19nbG9iYWxfbGV2ZWwpOiBSZW1vdmUuCgkocHNldWRvX2dsb2JhbF9sZXZlbF9wKTogUmVuYW1lIHRvIHRlbXBsYXRlX3Bhcm1fc2NvcGVfcC4KCShjdXJyZW50X3RtcGxfc3BlY19raW5kKTogTmV3IGZ1bmN0aW9uLgoJKGJlZ2luX3Njb3BlKTogTGlrZXdpc2UuCgkoZmluaXNoX3Njb3BlKTogTGlrZXdpc2UuCgkobWF5YmVfcHVzaF90b190b3BfbGV2ZWwpOiBBZGp1c3QuCgkobWF5YmVfcHJvY2Vzc190ZW1wbGF0ZV90eXBlX2RlY2xhcmF0aW9uKTogTGlrZXdpc2UuCgkocHVzaHRhZyk6IExpa2V3aXNlLgoJKHB1c2hkZWNsX25vbmNsYXNzX2xldmVsKTogTGlrZXdpc2UuCgkobG9va3VwX3RhZyk6IExpa2V3aXNlLgoJKGdyb2tmbmRlY2wpOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucy4gIFNoYXJlCgljb25zdHJ1Y3RvciBhbmQgbm9uLWNvbnN0cnVjdG9yIGNvZGUuCgkqIGRlY2wyLmMgKGNoZWNrX2NsYXNzZm4pOiBIYW5kbGUgbWVtYmVyIHRlbXBsYXRlIHNwZWNpYWxpemF0aW9ucy4KCSogcHQuYyAoYmVnaW5fdGVtcGxhdGVfcGFybV9saXN0KTogVXNlIGJlZ2luX3Njb3BlLgoJKGJlZ2luX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoZW5kX3NwZWNpYWxpemF0aW9uKTogTGlrZXdpc2UuCgkoY2hlY2tfZXhwbGljaXRfc3BlY2lhbGl6YXRpb24pOiBVc2UgY3VycmVudF90bXBsX3NwZWNfa2luZC4KCUhhbmRsZSBtZW1iZXIgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zLgoJKGVuZF90ZW1wbGF0ZV9kZWNsKTogVXNlIGZpbmlzaF9zY29wZS4gIFJlbW92ZSBjYWxsIHRvCglnZXRfcGVuZGluZ19zaXplcy4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IFJlbW92ZSBib2d1cyBlcnJvciBtZXNzYWdlLgoJKHRzdWJzdF9kZWNsKTogRml4IHR5cG8gaW4gY29kZSBjb250YWluZWQgaW4gY29tbWVudC4KCShpbnN0YW50aWF0ZV90ZW1wbGF0ZSk6IEhhbmRsZSBtZW1iZXIgdGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zLgoJKG1vc3RfZ2VuZXJhbF90ZW1wbGF0ZSk6IExpa2V3aXNlLgoKMjAwMC0wMy0xMSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogbGV4LmMgKHdoaXRlc3BhY2VfY3IpOiBDb21wcmVzcyBjb25zZWN1dGl2ZSBjYWxscyB0byB3YXJuaW5nKCkuCgkoZG9faWRlbnRpZmllcik6IERpdHRvIGZvciBlcnJvcigpLgoKCSogcHQuYyAoY29udmVydF9ub250eXBlX2FyZ3VtZW50KTogRGl0dG8gZm9yIGNwX2Vycm9yKCkuCgkoY29udmVydF90ZW1wbGF0ZV9hcmd1bWVudCk6IERpdHRvIGZvciBjcF9wZWR3YXJuKCkuCgoyMDAwLTAzLTExICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGV4Y2VwdGlvbi5jYyAoX19jaGVja19udWxsX2VoX3NwZWMpOiBOZXcgZm4uCgkqIGV4Y2VwdC5jIChleHBhbmRfZW5kX2VoX3NwZWMpOiBDYWxsIGl0IGlmIHRoZSBzcGVjIGlzIHRocm93KCkuCgoyMDAwLTAzLTEwICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGRlY2wuYyAocHVzaF90aHJvd19saWJyYXJ5X2ZuKTogVGFrZSB0aGUgRlVOQ1RJT05fVFlQRS4KCSogZXhjZXB0LmMgKGV4cGFuZF9lbmRfZWhfc3BlYyk6IEFkZCB0aGUgcmV0dXJuIHR5cGUuCgkqIHJ0dGkuYyAodGhyb3dfYmFkX2Nhc3QpOiBBZGQgdGhlIHBhcm10eXBlcy4KCSh0aHJvd19iYWRfdHlwZWlkKTogTGlrZXdpc2UuCgoJKiBzZW1hbnRpY3MuYyAoZXhwYW5kX3N0bXQpOiBPbmx5IGxlYXZlIG91dCBydGwgZm9yIHVudXNlZAoJYXJ0aWZpY2lhbHMsIGFuZCBzZXQgREVDTF9JR05PUkVEX1Agb24gdGhlbSBhcyB3ZWxsLgoJKiBkZWNsLmMgKHdyYXB1cF9nbG9iYWxzX2Zvcl9uYW1lc3BhY2UpOiBMaWtld2lzZS4KCjIwMDAtMDMtMDkgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKG1heWJlX2NvbW1vbml6ZV92YXIpOiBTa2lwIGFsbCBhcnRpZmljaWFsIGRlY2xzLgoJKiBwdC5jICh0c3Vic3RfZGVjbCk6IERvbid0IGNvcHkgVFJFRV9BU01fV1JJVFRFTi4KCjIwMDAtMDMtMTAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogbGFuZy1vcHRpb25zLmgsIGRlY2wyLmM6IEFkZCAtZm5vLWVuZm9yY2UtZWgtc3BlY3MuCgkqIGNwLXRyZWUuaDogRGVjbGFyZSBmbGFnX2VuZm9yY2VfZWhfc3BlY3MuCgkqIGRlY2wuYyAoc3RvcmVfcGFybV9kZWNscywgZmluaXNoX2Z1bmN0aW9uKTogQ2hlY2sgaXQuCgoJQyBsaWJyYXJ5IGZ1bmN0aW9ucyBkb24ndCB0aHJvdy4KCSogTWFrZWZpbGUuaW4gKGNmbnMuaCk6IE5ldyB0YXJnZXQuCgkoZXhjZXB0Lm8pOiBEZXBlbmQgb24gaXQuCgkqIE1ha2UtbGFuZy5pbiAoY2MxcGx1cyk6IERlcGVuZCBvbiBjZm5zLmdwZXJmLgoJKiBjZm5zLmdwZXJmOiBOZXcgZmlsZS4KCSogY2Zucy5oOiBHZW5lcmF0ZWQuCgkqIGV4Y2VwdC5jOiBJbmNsdWRlIGl0LgoJKG5vdGhyb3dfbGliZm5fcCk6IE5ldyBmbi4KCSogZGVjbC5jIChncm9rZm5kZWNsKTogVXNlIGl0LgoJKiBjcC10cmVlLmg6IERlY2xhcmUgaXQuCgoJKiBkZWNsLmMgKHB1c2hfb3ZlcmxvYWRlZF9kZWNsXzEsIGF1dG9fZnVuY3Rpb24sCglkZWZpbmVfZnVuY3Rpb24pOiBMb3NlLgoJKGJ1aWxkX2xpYnJhcnlfZm5fMSk6IE5ldyBzdGF0aWMgZm4uCgkoYnVpbHRpbl9mdW5jdGlvbik6IFVzZSBpdC4KCShnZXRfYXRleGl0X25vZGUpOiBVc2UgYnVpbGRfbGlicmFyeV9mbl9wdHIuCgkoYnVpbGRfbGlicmFyeV9mbiwgYnVpbGRfY3BfbGlicmFyeV9mbiwgYnVpbGRfbGlicmFyeV9mbl9wdHIsCglidWlsZF9jcF9saWJyYXJ5X2ZuX3B0ciwgcHVzaF9saWJyYXJ5X2ZuLCBwdXNoX2NwX2xpYnJhcnlfZm4sCglwdXNoX3ZvaWRfbGlicmFyeV9mbiwgcHVzaF90aHJvd19saWJyYXJ5X2ZuKTogTmV3IGZucy4KCSogY3AtdHJlZS5oOiBEZWNsYXJlIHRoZW0uCgkoY3BfdHJlZV9pbmRleCk6IFJlbW92ZSBDUFRJX0JBRF9DQVNULCBDUFRJX0JBRF9UWVBFSUQuCgkodGhyb3dfYmFkX2Nhc3Rfbm9kZSwgdGhyb3dfYmFkX3R5cGVpZF9ub2RlKTogTG9zZS4KCSogZXhjZXB0LmMgKGluaXRfZXhjZXB0aW9uX3Byb2Nlc3NpbmcsIGNhbGxfZWhfaW5mbywgZG9fcG9wX2V4Y2VwdGlvbiwKCShleHBhbmRfZW5kX2VoX3NwZWMsIGFsbG9jX2VoX29iamVjdCwgZXhwYW5kX3Rocm93KTogVXNlIGFib3ZlIGZucy4KCSogcnR0aS5jIChidWlsZF9ydW50aW1lX2RlY2wpOiBMb3NlLgoJKHRocm93X2JhZF9jYXN0LCB0aHJvd19iYWRfdHlwZWlkLCBnZXRfdGluZm9fZGVjbCwKCWJ1aWxkX2R5bmFtaWNfY2FzdF8xLCBleHBhbmRfc2lfZGVzYywgZXhwYW5kX2NsYXNzX2Rlc2MsCglleHBhbmRfcHRyX2Rlc2MsIGV4cGFuZF9hdHRyX2Rlc2MsIGV4cGFuZF9nZW5lcmljX2Rlc2MpOiBVc2UgYWJvdmUgZm5zLgoKCSogY2FsbC5jIChidWlsZF9jYWxsKTogUmVtb3ZlIHJlc3VsdF90eXBlIHBhcm0uCglDYWxsIG1hcmtfdXNlZCBvbiB1bnVzZWQgYXJ0aWZpY2lhbCBmbnMuCgkqIGluaXQuYywgbWV0aG9kLmMsIHR5cGVjay5jLCBleGNlcHQuYywgcnR0aS5jOiBBZGp1c3QuCgoyMDAwLTAzLTA5ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIGNhbGwuYyAoYnVpbGRfY2FsbCk6IFNldCBUUkVFX05PVEhST1cgb24gdGhlIENBTExfRVhQUiBhcwoJYXBwcm9wcmlhdGUuCgkqIGRlY2wuYyAoZGVmaW5lX2Z1bmN0aW9uKTogU2V0IFRSRUVfTk9USFJPVyBvbiB0aGUgRlVOQ1RJT05fREVDTC4KCSogZXhjZXB0LmMgKGNhbGxfZWhfaW5mbywgYWxsb2NfZWhfb2JqZWN0LCBleHBhbmRfdGhyb3cpOiBTZXQKCVRSRUVfTk9USFJPVyBvciBUUkVFX1RISVNfVk9MQVRJTEUgb24gdGhlIGZ1bmN0aW9uIGFzIGFwcHJvcHJpYXRlLgoJKiBydHRpLmMgKGJ1aWxkX3J1bnRpbWVfZGVjbCwgZ2V0X3RpbmZvX2RlY2wsIGJ1aWxkX2R5bmFtaWNfY2FzdF8xLAoJZXhwYW5kX3NpX2Rlc2MsIGV4cGFuZF9jbGFzc19kZXNjLCBleHBhbmRfcHRyX2Rlc2MsIGV4cGFuZF9hdHRyX2Rlc2MsCglleHBhbmRfZ2VuZXJpY19kZXNjKTogTGlrZXdpc2UuCgoyMDAwLTAzLTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZXhjZXB0aW9uLmNjIChfX2NwX3BvcF9leGNlcHRpb24pOiBDbGVhbnVwIHRoZSBvcmlnaW5hbCBvYmplY3QuCgoyMDAwLTAzLTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChncm9rX29wX3Byb3BlcnRpZXMpOiBNZXJnZSBjb252ZXJzaW9uIHRvIHZvaWQgd2FybmluZwoJd2l0aCBvdGhlciBzaWxseSBvcCB3YXJuaW5ncy4KCjIwMDAtMDMtMDggIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBTZXQgVFJFRV9QVVJQT1NFIG9mCglhcnJheSBDT05TVFJVQ1RPUiBlbGVtZW50cy4gIERvbid0IHVzZSBleHByX3RyZWVfY29ucy4KCjIwMDAtMDMtMDggIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGNwX21ha2VfZm5hbWVfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCSh3cmFwdXBfZ2xvYmFsc19mb3JfbmFtZXNwYWNlKTogRG9uJ3QgZW1pdCB1bnVzZWQgc3RhdGljIHZhcnMuCgkoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZW1vdmUgY29tbWVudCBhYm91dCB1c2Ugb2YKCWFycmF5X2RvbWFpbl90eXBlLiBTZXQgbWFrZV9mbmFtZV9kZWNsLgoJKGNwX2ZpbmlzaF9kZWNsKTogUmVtb3ZlIF9fRlVOQ1RJT05fXyBuYWRnZXJpbmcuCgkqIHNlbWFudGljcy5jIChiZWdpbl9jb21wb3VuZF9zdG10KTogUmVtb3ZlCgljdXJyZW50X2Z1bmN0aW9uX25hbWVfZGVjbGFyZWQgZmxhZ2dpbmcuCgkoZXhwYW5kX3N0bXQpOiBEb24ndCBlbWl0IHVudXNlZCBsb2NhbCBzdGF0aWNzLgoJKiB0eXBlY2suYyAoZGVjYXlfY29udmVyc2lvbik6IERvbid0IHRyZWF0IF9fRlVOQ1RJT05fXyBkZWNscwoJc3BlY2lhbGx5LgoKMjAwMC0wMy0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHR5cGVjay5jIChjb252ZXJ0X2Zvcl9hc3NpZ25tZW50KTogRG9uJ3QgbG9vayBhdCBhcnJheQoJaW5pdGlhbGl6ZXIuCgkqIGNhbGwuYyAoY29udmVydF9saWtlX3JlYWwpOiBMaWtld2lzZS4KCjIwMDAtMDMtMDcgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCUFkZCBpbml0aWFsIHN1cHBvcnQgZm9yICdcdU5OTk4nIHNwZWNpZmllci4KCSogbGV4LmMgKHJlYWRfdWNzKTogTmV3IGZuLgoJKHJlYWRlc2NhcGUsIHNraXBfd2hpdGVfc3BhY2UpOiBDYWxsIGl0LgoJKGlzX2V4dGVuZGVkX2NoYXIsIGlzX2V4dGVuZGVkX2NoYXJfMSk6IE5ldyBmbnMuCgkodXRmOF9leHRlbmRfdG9rZW4pOiBOZXcgZm4sICNpZiAwJ2Qgb3V0LgoJKHJlYWxfeXlsZXgpOiBUcmVhdCBleHRlbmRlZCBjaGFycyBsaWtlIGxldHRlcnMuCgoJKiBzZWFyY2guYyAobm90ZV9kZWJ1Z19pbmZvX25lZWRlZCk6IFdhbGsgdGhlIGJhc2VzIGV2ZW4gaWYgd2UKCXdlcmVuJ3QgZGVmZXJyaW5nIHRoZSB0eXBlIGl0c2VsZi4KCjIwMDAtMDMtMDcgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGRlY2wyLmMgKGZpbmlzaF9vYmplY3RzKTogQ29uc3RpZnkgYSBjaGFyKi4KCgkqIG1ldGhvZC5jIChlbWl0X3RodW5rKTogTGlrZXdpc2UuCgoyMDAwLTAzLTA2ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdHlwZWNrLmMgKGR1YmlvdXNfY29udmVyc2lvbl93YXJuaW5ncyk6IExvb2sgdGhyb3VnaAoJUkVGRVJFTkNFX1RZUEUuCgpNb24gTWFyICA2IDA4OjQ2OjQ3IDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjbGFzcy5jIChkZnNfbW9kaWZ5X3Z0YWJsZXMpOiBJIGlzIG5vdyB1bnNpZ25lZC4KCShjaGVja19iaXRmaWVsZF9kZWNsKTogVXNlIHRyZWVfaW50X2NzdF9zZ24gYW5kIGNvbXBhcmVfdHJlZV9pbnQuCgkoYnVpbGRfYmFzZV9maWVsZCk6IEFkZCBjYXN0cyBvZiBUUkVFX0lOVF9DU1RfTE9XIHRvIEhPU1RfV0lERV9JTlQuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IENhc3QgVFJFRV9JTlRfQ1NUX0hJR0ggdG8gdW5zaWduZWQuCgkqIGluaXQuYyAoYnVpbGRfdmVjX2luaXQpOiBDYXN0IFRSRUVfSU5UX0NTVF9MT1cgdG8gSE9TVF9XSURFX0lOVC4KCSogbWV0aG9kLmMgKGJ1aWxkX292ZXJsb2FkX2ludCk6IENhc3QgVFJFRV9JTlRfQ1NUX0hJR0ggdG8gdW5zaWduZWQuCgkqIHR5cGVjay5jIChidWlsZF9iaW5hcnlfb3AsIGNhc2UgVFJVTkNfRElWX0VYUFIpOgoJQ2FsbCBpbnRlZ2VyX2FsbF9vbmVzcC4KCSogdHlwZWNrMi5jIChwcm9jZXNzX2luaXRfY29uc3RydWN0b3IpOiBVc2UgY29tcGFyZV90cmVlX2ludC4KCgkqIGxhbmctc3BlY3MuaCAoYXMpOiBEb24ndCBjYWxsIGlmIC1zeW50YXgtb25seS4KCjIwMDAtMDMtMDYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByLCBjYXNlIFNUTVRfRVhQUik6IERvbid0IHNldAoJUlRMX0VYUFJfSEFTX05PX1NDT1BFIGFmdGVyIGFsbC4KCjIwMDAtMDMtMDUgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByLCBjYXNlIFNUTVRfRVhQUik6IFVzZQoJZXhwYW5kX3N0YXJ0X3N0bXRfZXhwciBhbmQgZXhwYW5kX2VuZF9zdG10X2V4cHIgZGlyZWN0bHkuICBTZXQKCVJUTF9FWFBSX0hBU19OT19TQ09QRS4KCgkqIHB0LmMgKGluc3RhbnRpYXRlX2RlY2wpOiBDbGVhciBUSV9QRU5ESU5HX1RFTVBMQVRFX0ZMQUcgYSBsaXR0bGUKCWxhdGVyLgoKCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogRHVtcCBTQ09QRV9OT19DTEVBTlVQU19QLgoKMjAwMC0wMy0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNhbGwuYyAoY29udmVydF9saWtlKTogTWFjcm9meS4KCShjb252ZXJ0X2xpa2Vfd2l0aF9jb250ZXh0KTogTmV3IG1hY3JvLgoJKGNvbnZlcnRfbGlrZV9yZWFsKTogUmVuYW1lZCBmcm9tIGNvbnZlcnRfbGlrZS4gIEFkZCBjYWxsaW5nCgljb250ZXh0IHBhcmFtZXRlcnMsIGZvciBkaWFnbm9zdGljcy4gQWRkIHJlY3Vyc2l2ZSBmbGFnLiAgQ2FsbAoJZHViaW91c19jb252ZXJzaW9uX3dhcm5pbmdzIGZvciBvdXRlciBjb252ZXJzaW9uLgoJKGJ1aWxkX3VzZXJfdHlwZV9jb252ZXJzaW9uKTogVXNlIGNvbnZlcnRfbGlrZV93aXRoX2NvbnRleHQuCgkoYnVpbGRfb3Zlcl9jYWxsKTogTGlrZXdpc2UuIERvbid0IHdhcm4gYWJvdXQgZHViaW91cwoJY29udmVyc2lvbnMgaGVyZS4gQWRqdXN0IGNvbnZlcnRfZGVmYXVsdF9hcmcgY2FsbHMuCgkoY29udmVydF9kZWZhdWx0X2FyZyk6IEFkZCBjb250ZXh0IHBhcmFtZXRlcnMgZm9yIGRpYWdub3N0aWNzLgoJUGFzcyB0aHJvdWdoIHRvIGNvbnZlcnRfbGlrZV93aXRoX2NvbnRleHQuCgkqIGNwLXRyZWUuaCAoY29udmVydF9kZWZhdWx0X2FyZyk6IEFkZCBjb250ZXh0IHBhcmFtZXRlcnMuCgkoZHViaW91c19jb252ZXJzaW9uX3dhcm5pbmdzKTogUHJvdG90eXBlIG5ldyBmdW5jdGlvbi4KCSogdHlwZWNrLmMgKGNvbnZlcnRfYXJndW1lbnRzKTogQWRqdXN0IGNvbnZlcnRfZGVmYXVsdF9hcmcgY2FsbC4KCShkdWJpb3VzX2NvbnZlcnNpb25fd2FybmluZ3MpOiBOZXcgZnVuY3Rpb24sIGJyb2tlbgoJb3V0IG9mIGNvbnZlcnRfZm9yX2Fzc2lnbm1lbnQuCgkoY29udmVydF9mb3JfYXNzaWdubWVudCk6IEFkanVzdC4KCjIwMDAtMDMtMDMgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogZGVjbDIuYyAoa2V5X21ldGhvZCk6IEJyZWFrIG91dCBmcm9tLi4uCgkoaW1wb3J0X2V4cG9ydF92dGFibGUsIGltcG9ydF9leHBvcnRfY2xhc3MpOiAuLi5oZXJlLgoKCSogZGVjbC5jIChmaW5pc2hfZnVuY3Rpb24pOiBEb24ndCBtZXNzIHdpdGggZmxhZ19rZWVwX2lubGluZV9mdW5jdGlvbnMuCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IERvbid0IGNoZWNrIGRlY2xfZnVuY3Rpb25fY29udGV4dC4KCgkqIHNlYXJjaC5jIChub3RlX2RlYnVnX2luZm9fbmVlZGVkLCBkZnNfZGVidWdfbWFyaywKCWRmc19kZWJ1Z191bm1hcmtlZHApOiBVbmNvbW1lbnQuICBBZGp1c3QgZm9yIG5ldyBzY2hlbWUuCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IENhbGwgbm90ZV9kZWJ1Z19pbmZvX25lZWRlZC4KCjIwMDAtMDMtMDMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGNwX2ZpbmlzaF9kZWNsKTogUmVtb3ZlIG9ic29sZXRlIG9ic3RhY2sgY29tbWVudHMsIGZpeAoJdHlwb3MuCgoyMDAwLTAzLTAyICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChUWVBFX05FRURTX0RFU1RSVUNUT1IpOiBSZW5hbWUgdG8gLi4uCgkoVFlQRV9IQVNfTk9OVFJJVklBTF9ERVNUUlVDVE9SKTogLi4uIHRoaXMuCgkoVFlQRV9IQVNfVFJJVklBTF9ERVNUUlVDVE9SKTogTmV3IG1hY3JvLgoJKGxhbmdfdHlwZSk6IFNwbGl0IGdldHNfbmV3IGludG8gaGFzX25ldyBhbmQgaGFzX2FycmF5X25ldy4KCShUWVBFX1ZFQ19ORVdfVVNFU19DT09LSUUpOiBVc2UgVFlQRV9IQVNfTk9OVFJJVklBTF9ERVNUUlVDVE9SLgoJKFRZUEVfR0VUU19ORVcpOiBTcGxpdCBpbnRvIC4uLgoJKFRZUEVfSEFTX05FV19PUEVSQVRPUik6IC4uLiB0aGlzLCBhbmQgLi4uCgkoVFlQRV9IQVNfQVJSQVlfTkVXX09QRVJBVE9SKTogLi4uIHRoaXMuCgkoREVDTF9BUlJBWV9ERUxFVEVfT1BFUkFUT1JfUCk6IE5ldyBtYWNybwoJKGJ1aWxkX29wX25ld19jYWxsKTogRG9uJ3QgZGVjbGFyZS4KCShidWlsZF9uZXdfMSk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX29wX25ld19jYWxsKTogUmVtb3ZlLgoJKiBjbGFzcy5jIChjaGVja19iYXNlcyk6IFVzZSBUWVBFX0hBU19OT05UUklWSUFMX0RFU1RSVUNUT1IKCWluc3RlYWQgb2YgVFlQRV9ORUVEU19ERVNUUlVDVE9SLgoJKGZpbmlzaF9zdHJ1Y3RfYml0cyk6IExpa2V3aXNlLgoJKGFkZF9pbXBsaWNpdGx5X2RlY2xhcmVkX21lbWJlcnMpOiBMaWtld2lzZS4KCShjaGVja19maWVsZF9kZWNsKTogTGlrZXdpc2UuCgkoY2hlY2tfbWV0aG9kcyk6IFNldCBUWVBFX1ZFQ19ERUxFVEVfVEFLRVNfU0laRSBoZXJlLCBhbmQgc2V0IGl0Cgljb3JyZWN0bHkgdW5kZXIgdGhlIG5ldyBBQkkuCgkqIGRlY2wuYyAoc3RhcnRfZGVjbF8xKTogVXNlIFRZUEVfSEFTX05PTlRSSVZJQUxfREVTVFJVQ1RPUgoJaW5zdGVhZCBvZiBUWVBFX05FRURTX0RFU1RSVUNUT1IuCgkoaW5pdGlhbGl6ZV9sb2NhbF92YXIpOiBMaWtld2lzZS4KCShkZXN0cm95X2xvY2FsX3Zhcik6IExpa2V3aXNlLgoJKGNwX2ZpbmlzaF9kZWNsKTogTGlrZXdpc2UuCgkocmVnaXN0ZXJfZHRvcl9mbik6IExpa2V3aXNlLgoJKGdyb2tfb3BfcHJvcGVydGllcyk6IFNldCBUWVBFX0hBU19ORVdfT1BFUkFUT1IgYW5kCglUWVBFX0hBU19BUlJBWV9ORVdfT1BFUkFUT1IsIG5vdCBUWVBFX0hBU19ORVcuICBEb24ndCBzZXQKCVRZUEVfVkVDX0RFTEVURV9UQUtFU19TSVpFIGhlcmUuCgkoeHJlZl9iYXNldHlwZXMpOiBTZXQgVFlQRV9IQVNfTkVXX09QRVJBVE9SIGFuZAoJVFlQRV9IQVNfQVJSQVlfTkVXX09QRVJBVE9SLCBub3QgVFlQRV9IQVNfTkVXLgoJKHN0b3JlX3Bhcm1fZGVjbHMpOiAgVXNlIFRZUEVfSEFTX05PTlRSSVZJQUxfREVTVFJVQ1RPUi4KCShmaW5pc2hfZGVzdHJ1Y3Rvcl9ib2R5KTogTGlrZXdpc2UuCgkobWF5YmVfYnVpbGRfY2xlYW51cF8xKTogTGlrZXdpc2UuCgkqIGRlY2wyLmMgKGRvX3N0YXRpY19kZXN0cnVjdGlvbik6IExpa2V3aXNlLgoJKiBpbml0LmMgKGJ1aWxkX25ld18xKTogTWFrZSBpdCBzdGF0aWMuCgkocGVyZm9ybV9tZW1iZXJfaW5pdCk6IFVzZSBUWVBFX0hBU19OT05UUklWSUFMX0RFU1RSVUNUT1IuCgkoZXhwYW5kX2NsZWFudXBfZm9yX2Jhc2UpOiBMaWtld2lzZS4KCShnZXRfY29va2llX3NpemUpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfbmV3XzEpOiBIYW5kbGUgYXJyYXktbmV3IGNvb2tpZXMgY29ycmVjdGx5IHVuZGVyIHRoZSBuZXcKCUFCSS4KCShidWlsZF92ZWNfZGVsZXRlXzEpOiBMaWtld2lzZS4KCShidWlsZF92ZWNfaW5pdCk6ICBVc2UgVFlQRV9IQVNfTk9OVFJJVklBTF9ERVNUUlVDVE9SLgoJKGJ1aWxkX2RlbGV0ZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZlY19kZWxldGUpOiBIYW5kbGUgYXJyYXktbmV3IGNvb2tpZXMgY29ycmVjdGx5IHVuZGVyIHRoZSBuZXcKCUFCSS4KCSogbGV4LmMgKGRvX2lkZW50aWZpZXIpOiBVc2UgVFlQRV9IQVNfTk9OVFJJVklBTF9ERVNUUlVDVE9SLgoJKiBwdC5jIChpbnN0YW50aWF0ZV9jbGFzc190ZW1wbGF0ZSk6IFNldCBUWVBFX0hBU19ORVdfT1BFUkFUT1IgYW5kCglUWVBFX0hBU19BUlJBWV9ORVdfT1BFUkFUT1IuCgkqIHB0cmVlLmMgKHByaW50X2xhbmdfdHlwZSk6IENoZWNrIHRoZW0uCgkqIHNlYXJjaC5jIChjb250ZXh0X2Zvcl9uYW1lX2xvb2t1cCk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgkodHJlZV9oYXNfYW55X2Rlc3RydWN0b3JfcCk6IFVzZSBUWVBFX0hBU19OT05UUklWSUFMX0RFU1RSVUNUT1IuCgkqIHRyZWUuYyAoYnJlYWtfb3V0X2NsZWFudXBzKTogTGlrZXdpc2UuCgkoYnVpbGRfY3BsdXNfYXJyYXlfdGVzdF8xKTogTGlrZXdpc2UuCgkoY3BfYnVpbGRfcXVhbGlmaWVkX3R5cGVfcmVhbCk6IExpa2V3aXNlLgoJKiB0eXBlY2suYyAoY29tcGxldGVfdHlwZSk6IExpa2V3aXNlLgoKCSogZysrc3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IEFkZCAtZm5ldy1hYmkgYXQgdGhlIHN0YXJ0IG9mCgl0aGUgY29tbWFuZC1saW5lLCBub3QgdGhlIGVuZC4KCjIwMDAtMDMtMDEgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IENsZWFyIFRJX1BFTkRJTkdfVEVNUExBVEVfRkxBRy4KCjIwMDAtMDMtMDIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAY3lnbnVzLmNvbT4KCgkqIGNwLXRyZWUuaCAoYnVpbGRfamF2YV9jbGFzc19yZWYpOiBEZWNsYXJlLgoJKiBpbml0LmMgKGJ1aWxkX2phdmFfY2xhc3NfcmVmKTogTm8gbG9uZ2VyIHN0YXRpYy4KCSogZXhjZXB0LmMgKGV4cGFuZF90aHJvdyk6IEdlbmVyYXRlIGEgSmF2YS1zdHlsZSBgdGhyb3cnIGlmIHRoZQoJdGhyb3duIG9iamVjdCBpcyBhICJKYXZhIiBvYmplY3QuCgkoaW5pdGlhbGl6ZV9oYW5kbGVyX3Bhcm0pOiBHZW5lcmF0ZSBhIEphdmEtc3R5bGUgbG9va3VwIG9mCglleGNlcHRpb24gaW5mbyBpZiB0aGUgY2F1Z2h0IG9iamVjdCBpcyBhICJKYXZhIiBvYmplY3QuCgkoY2F0Y2hfbGFuZ3VhZ2UsIGNhdGNoX2xhbmd1YWdlX2luaXQpOiBOZXcgZ2xvYmFscy4KCShkZWNsX2lzX2phdmFfdHlwZSk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfc3RhcnRfY2F0Y2hfYmxvY2spOiBEb24ndCBjYWxsIHB1c2hfZWhfaW5mbygpIG9yCglwdXNoX2VoX2NsZWFudXAoKSB3aGVuIGhhbmRsaW5nIGEgSmF2YS1zdHlsZSAiY2F0Y2giLiAgUGFzcyBKYXZhCgljbGFzcyByZWZlcmVuY2UgdG8gYnVpbGRfY2F0Y2hfYmxvY2suCgpUaHUgTWFyICAyIDEzOjMyOjAxIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogVHJlYXQgc2l6ZXR5cGUgbGlrZSBpdHMgbGFuZ3VhZ2UgZXF1aXZhbGVudC4KCjIwMDAtMDMtMDEgIEJlcm5kIFNjaG1pZHQgIDxiZXJuZHNAY3lnbnVzLmNvLnVrPgoKCSogdHlwZWNrLmMgKG1heWJlX3dhcm5fYWJvdXRfcmV0dXJuaW5nX2FkZHJlc3Nfb2ZfbG9jYWwpOiBSZW9yZ2FuaXplCgl0byBtZXJnZSByZWZlcmVuY2UvcG9pbnRlciBjb2RlIGFuZCBmaXggaW5jb3JyZWN0IHdhcm5pbmdzLgoKMjAwMC0wMi0yOSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBzZWFyY2guYyAocHJvdGVjdGVkX2FjY2Vzc2libGVfcCk6IFVzZSBjb250ZXh0X2Zvcl9uYW1lX2xvb2t1cC4KCgkqIGluaXQuYyAoY29uc3RydWN0X3ZpcnR1YWxfYmFzZXMpOiBGaXggdGhpbmtvLgoJKiB0eXBlY2suYyAoZXhwYW5kX3B0cm1lbWZ1bmNfY3N0KTogRml4IHRoaW5rby4KCjIwMDAtMDMtMDEgIE1hcnRpbiB2b24gTG9ld2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChjdXJyZW50X2Z1bmN0aW9uX2RlY2wpOiBNb3ZlIHRvIHRvcGxldi5jLgoKMjAwMC0wMi0yOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHB0LmMgKGZuX3R5cGVfdW5pZmljYXRpb24pOiBVbmlmeSByZXR1cm4gdHlwZSwgd2hlbmV2ZXIKCXByb3ZpZGVkLgoJKGdldF9iaW5kaW5nc19yZWFsKTogT25seSBwYXNzIHJldHVybiB0eXBlIHdoZW4gbmVjZXNzYXJ5LgoJUmVtb3ZlIGV4cGxpY2l0IHJldHVybiB0eXBlIGNoZWNrLgoJKiBjbGFzcy5jIChyZXNvbHZlX2FkZHJlc3Nfb2Zfb3ZlcmxvYWRlZF9mdW5jdGlvbik6IFBhc3MgZGVzaXJlZAoJcmV0dXJuIHR5cGUgdG8gZm5fdHlwZV91bmlmaWNhdGlvbi4KCk1vbiBGZWIgMjggMDg6MTU6MjMgMjAwMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0Ymxfb3JfdmJhc2VfZmllbGQsIGNoZWNrX21ldGhvZHMpOiBEb24ndCBjbGVhcgoJREVDTF9GSUVMRF9TSVpFLgoJKGNoZWNrX2JpdGZpZWxkX2RlY2wsIGNoZWNrX2ZpZWxkX2RlY2xzKTogU2V0IERFQ0xfU0laRSwgbm90CglERUNMX0ZJRUxEX1NJWkUuCgkqIHJ0dGkuYyAoZXhwYW5kX2NsYXNzX2Rlc2MpOiBMaWtld2lzZS4KCSogY3AtdHJlZS5oIChERUNMX0lOSVRfUFJJT1JJVFkpOiBVc2UgdW5kZXJseWluZyB1bmlvbiBuYW1lLgoJKFRIVU5LX1ZDQUxMX09GRlNFVCk6IExpa2V3aXNlLgoJKFRIVU5LX0RFTFRBKTogUmVmbGVjdCBjaGFuZ2VzIGluIC4uL3RyZWUuaC4KCjIwMDAtMDItMjggIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogc2VhcmNoLmMgKHByb3RlY3RlZF9hY2Nlc3NpYmxlX3ApOiBBbHNvIGFsbG93IHRoZSBhY2Nlc3MgaWYKCXRoZSBtZW1iZXIgaXMgcHVibGljIGluIERFUklWRUQuICBMb3NlIFRZUEUgcGFybS4KCShmcmllbmRfYWNjZXNzaWJsZV9wKTogTG9zZSBUWVBFIHBhcm0uCgkoYWNjZXNzaWJsZV9wKTogQWRqdXN0LgoKU3VuIEZlYiAyNyAxNjo0MDozMyAyMDAwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogY2xhc3MuYyAoZGZzX2J1aWxkX3Z0YWJsZV9vZmZzZXRfdnRibF9lbnRyaWVzKTogRG9uJ3QgdXNlIHNpemVfYmlub3AKCW9uIHRoaW5ncyB0aGF0IGFyZSBub3Qgc2l6ZXM7IHNzaXplX2Jpbm9wIGRlbGV0ZWQuCglDYWxsIHNpemVfZGlmZm9wIHdoZW4gYXBwcm9wcmlhdGUuCgkoZGZzX2J1aWxkX3ZjYWxsX29mZnNldF92dGJsX2VudHJpZXMpOiBMaWtld2lzZS4KCShidWlsZF9wcmltYXJ5X3Z0YWJsZSwgYnVpbGRfc2Vjb25kYXJ5X3Z0YWJsZSk6IExpa2V3aXNlLgoJKGRmc19zZXRfb2Zmc2V0X2Zvcl91bnNoYXJlZF92YmFzZXMsIGRmc19tb2RpZnlfdnRhYmxlcyk6IExpa2V3aXNlLgoJVmFyaWFibGUgSSBpcyBIT1NUX1dJREVfSU5ULgoJKGdldF92ZmllbGRfb2Zmc2V0KTogUGFzcyBwcm9wZXIgdHlwZXMgdG8gc2l6ZV9iaW5vcC4KCShzaXplX2V4dHJhX3Z0YmxfZW50cmllcywgbGF5b3V0X3ZpcnR1YWxfYmFzZXMpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShza2lwX3J0dGlfc3R1ZmYpOiBBcmcgTiBpcyBub3cgcG9pbnRlciB0byBzaWduZWQuCgkobGF5b3V0X2NsYXNzX3R5cGUpOiBVc2Ugc2l6ZV96ZXJvX25vZGUuCgkqIGNwLXRyZWUuaCAoc2tpcF9ydHRpX3N0dWZmKTogQXJnIE4gaXMgcG9pbnRlciB0byBzaWduZWQuCgkqIGN2dC5jIChjcF9jb252ZXJ0X3RvX3BvaW50ZXIpOiBQYXNzIHByb3BlciB0eXBlcyB0byBzaXplX2Jpbm9wLgoJKiBkZWNsLmMgKGNvbXBsZXRlX2FycnlfdHlwZSk6IFBhc3MgcHJvcGVyIHR5cGVzIHRvIHNpemVfYmlub3AuCgkoeHJlZl9iYXNldHlwZXMpOiBCSU5GT19PRkZTRVQgaXMgc2l6ZXR5cGUuCgkqIGVycm9yLmMgKGR1bXBfZXhwcik6IERvbid0IHVzZSBzaXplX2Jpbm9wIG5vbi1zaXplcy4KCSogZXhwci5jIChjcGx1c19leHBhbmRfY29uc3RhbnQpOiBQYXNzIHByb3BlciB0eXBlcyB0byBzaXplX2Jpbm9wLgoJKiBpbml0LmMgKGNvbnN0cnVjdF92aXJ0dWFsX2Jhc2VzKTogRml4IHR5cGUgZXJyb3IuCgkoYnVpbGRfdmVjX2RlbGV0ZV8xKTogUGFzcyBwcm9wZXIgdHlwZSB0byBzaXplX2Jpbm9wIGFuZCBkb24ndAoJZm9sZCByZXN1bHQuCgkqIGxleC5jIChjcF9tYWtlX2xhbmdfdHlwZSk6IEJJTkZPX09GRlNFVCBpcyBzaXpldHlwZS4KCSogcnR0aS5jIChnZXRfYmFzZV9vZmZzZXQpOiBQYXNzIHByb3BlciB0eXBlIHRvIHNpemVfYmlub3AuCgkqIHNlYXJjaC5jIChkZnNfZmluZF92YmFzZXMpOiBGaXggdHlwZSBlcnJvci4KCShleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IEFyZyB0byBza2lwX3J0dGlfc3R1ZmYgaXMgcG9pbnRlciB0byBzaWduZWQuCgkoZGZzX2dldF92YmFzZV90eXBlcyk6IEJJTkZPX09GRlNFVCBpcyBzaXpldHlwZS4KCSogdHJlZS5jIChkZWJ1Z19iaW5mbyk6IFZhcmlhYmxlIE4gaXMgc2lnbmVkLgoJVXNlIEhPU1RfV0lERV9JTlRfUFJJTlRfREVDLgoJKiB0eXBlY2suYyAoY29tcHR5cGVzKTogc2l6ZXR5cGUgaXMgc2FtZSBhcyBlcXVpdmFsZW50IGludGVnZXIgdHlwZS4KCShjX3NpemVvZiwgY19zaXplb2Zfbm93YXJuLCBleHByX3NpemVvZik6IFVzZSBUWVBFX1NJWkVfVU5JVCwKCXNpemVfb25lX25vZGUgYW5kIHNpemVfemVyb19ub2RlLgoJKGNfYWxpZ25vZik6IFVzZSBzaXplX29uZV9ub2RlLgoJKGJ1aWxkX2NvbXBvbmVudF9hZGRyKTogUGFzcyBwcm9wZXIgdHlwZXMgdG8gc2l6ZV9iaW5vcC4KCShleHBhbmRfcHRybWVtZnVuY19jc3QpOiBEb24ndCB1c2Ugc2l6ZV9iaW5vcCBvbiBub24tc2l6ZXMuCgoyMDAwLTAyLTI2ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCglJbXBsZW1lbnQgY2xhc3Mgc2NvcGUgdXNpbmctZGVjbGFyYXRpb25zIGZvciBmdW5jdGlvbnMuCgkqIGNsYXNzLmMgKGhhbmRsZV91c2luZ19kZWNsKTogQ2FsbCBhZGRfbWV0aG9kIGZvciB1c2VkIGZ1bmN0aW9ucy4KCVVzZSBJREVOVElGSUVSX0NMQVNTX1ZBTFVFIHRvIGNoZWNrIGZvciBjb25mbGljdHMuCgkoYWRkX21ldGhvZCk6IFVzZWQgZnVuY3Rpb25zIGFyZSBoaWRkZW4gYnkgbG9jYWwgZnVuY3Rpb25zLgoJKGNoZWNrX2Jhc2VzX2FuZF9tZW1iZXJzKTogSGFuZGxlIHVzaW5nLWRlY2xzIGJlZm9yZSBmaW5hbGl6aW5nCglDTEFTU1RZUEVfTUVUSE9EX1ZFQy4KCSogY2FsbC5jIChhZGRfZnVuY3Rpb25fY2FuZGlkYXRlKTogQWRkIGN0eXBlIHBhcm07IGlmIG5vbi16ZXJvLAoJb3ZlcnJpZGUgdGhlIHR5cGUgb2YgJ3RoaXMnIGFjY29yZGluZ2x5LgoJKGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGUsIGFkZF90ZW1wbGF0ZV9jYW5kaWRhdGVfcmVhbCk6IEFkZCBjdHlwZSBwYXJtLgoJKGNvbnZlcnRfY2xhc3NfdG9fcmVmZXJlbmNlLCBidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xLAoJYnVpbGRfbmV3X2Z1bmN0aW9uX2NhbGwsIGJ1aWxkX29iamVjdF9jYWxsLCBidWlsZF9uZXdfb3AsCglidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBQYXNzIGN0eXBlIHBhcm0uCgoJKiBzZWFyY2guYyAobG9va3VwX21lbWJlcik6IFB1dCBydmFsX2JpbmZvLCBub3QgYmFzZXR5cGVfcGF0aCwgaW4KCXRoZSBiYXNlbGluay4KCSogY2FsbC5jIChjb252ZXJ0X2NsYXNzX3RvX3JlZmVyZW5jZSwgYnVpbGRfdXNlcl90eXBlX2NvbnZlcnNpb25fMSwKCWJ1aWxkX25ld19mdW5jdGlvbl9jYWxsLCBidWlsZF9vYmplY3RfY2FsbCwgYnVpbGRfbmV3X29wLAoJYnVpbGRfbmV3X21ldGhvZF9jYWxsLCBidWlsZF9vcF9kZWxldGVfY2FsbCk6IERvbid0IGdldCBiYXNldHlwZV9wYXRoCglmcm9tIGEgYmFzZWxpbmsuCgkqIHR5cGVjay5jIChidWlsZF9jb21wb25lbnRfcmVmKTogTGlrZXdpc2UuCgkqIGluaXQuYyAoYnVpbGRfb2Zmc2V0X3JlZik6IExpa2V3aXNlLgoJKHJlc29sdmVfb2Zmc2V0X3JlZik6IERvbid0IGNhbGwgZW5mb3JjZV9hY2Nlc3MuCglDYWxsIGJ1aWxkX3Njb3BlZF9yZWYuCgkqIHR5cGVjazIuYyAoYnVpbGRfc2NvcGVkX3JlZik6IFNpbXBsaWZ5LiAgRG8gbm90aGluZyBpZiBpdAoJd291bGQgY2F1c2UgYW4gZXJyb3Igb3IgaWYgLXBlZGFudGljLgoJKiBjbGFzcy5jIChhbHRlcl9hY2Nlc3MpOiBMb3NlIGJpbmZvIHBhcm0uCgoyMDAwLTAyLTI2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogc2VtYW50aWNzLmMgKHNpbXBsaWZ5X2FnZ3JfaW5pdF9leHByc19wKTogRG9uJ3Qgd2FsayBpbnRvCgl0eXBlcy4KCjIwMDAtMDItMjUgIEFsZnJlZCBNaW5hcmlrIDxhODYwMTI0OEB1bmV0LnVuaXZpZS5hYy5hdD4KCgkqIHJ0dGkuYyAoZ2V0X3ZtaV9wc2V1ZG9fdHlwZV9pbmZvKTogTW92ZSBfX3ZtaV9jbGFzc190eXBlX2luZm8KCXBzZXVkb190eXBlX2luZm8gY3JlYXRpb24gaW50byB0aGUgc3RkIG5hbWVzcGFjZQoKMjAwMC0wMi0yNiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoREVDTF9ORUVERURfUCk6IFR3ZWFrIHRvIGNvcnJlY3QgdXNhZ2UgYmVmb3JlIEVPRi4KCShpbXBvcnRfZXhwb3J0X2NsYXNzKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiBkZWNsMi5jIChpbXBvcnRfZXhwb3J0X2NsYXNzKTogTWFrZSBpdCBzdGF0aWMuCgkqIGR1bXAuYyAoZGVxdWV1ZV9hbmRfZHVtcCk6IEhhbmRsZSBQUkVERUNSRU1FTlRfRVhQUiwKCVBSRUlOQ1JFTUVOVF9FWFBSLCBQT1NUREVDUkVNRU5UX0VYUFIsIFBPU1RJTkNSRU1FTlRfRVhQUiwKCUVYUFJfV0lUSF9GSUxFX0xPQ0FUSU9OLgoJKiBsZXguYyAoY2hlY2tfbmV3bGluZSk6IFR3ZWFrIGZpbGVuYW1lL2xpbmVubyBzZXR0aW5nLgoJKiBzZW1hbnRpY3MuYyAoYmVnaW5fd2hpbGVfc3RtdCk6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgpTYXQgRmViIDI2IDE5OjUwOjIzIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBsYW5nLW9wdGlvbnMuaCAoLWZtZXNzYWdlLWxlbmd0aD0pOiBBZGQgbWlzc2luZyBvcHRpb24uCgoJKiBNYWtlLWxhbmcuaW4gKENYWF9TUkNTKTogQWRkIC5oIGZpbGVzIGFuZCBzb3J0IGxpc3QuCgoyMDAwLTAyLTI2ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiBNYWtlLWxhbmcuaW46IERlbGV0ZSByZWZzIHRvIExJQkdDQzJfREVQUy4KCkZyaSBGZWIgMjUgMTQ6NTI6MzMgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogb3B0aW1pemUuYyAoZXhwYW5kX2NhbGxfaW5saW5lKTogRW1pdCB0aGUgcmV0dXJuIGxhYmVsIGJlZm9yZQoJZXZhbHVhdGluZyB0aGUgcmV0dXJuIHZhbHVlLgoKMjAwMC0wMi0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxleC5jIChjaGVja19uZXdsaW5lKTogVXNlIHB1c2hfc3JjbG9jIGFuZCBwb3Bfc3JjbG9jLCByYXRoZXIKCXRoYW4gZHVwbGljYXRpbmcgZnVuY3Rpb25hbGl0eSBoZXJlLgoJKiBvcHRpbWl6ZS5jOiBJbmNsdWRlIGlucHV0LmguCgkoZXhwYW5kX2NhbGxfaW5saW5lKTogVXNlIHB1c2hfc3JjbG9jIGFuZCBwb3Bfc3JjbG9jLgoJKiBwYXJzZS55IChtYXliZV9jdl9xdWFsaWZpZXIpOiBSZW1vdmUgY2FsbHMgdG8gZW1pdF9saW5lX25vdGUuCgkqIHBhcnNlLmM6IFJlZ2VuZXJhdGVkLgoJKiBNYWtlZmlsZS5pbiAobGV4Lm8pOiBEZXBlbmQgb24gaW5wdXQuaC4KCShvcHRpbWl6ZS5vKTogTGlrZXdpc2UuCgoyMDAwLTAyLTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IERpYWdub3NlIHF1YWxpZmllcnMgb24gbm9uLW1lbWJlcgoJZnVuY3Rpb24gdHlwZSwgcmF0aGVyIHRoYW4gSUNFLgoKMjAwMC0wMi0yMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGdyb2tkZWNsYXJhdG9yKTogQ2FsbCBkZWNsX3R5cGVfYWNjZXNzX2NvbnRyb2wuCgkqIHBhcnNlLnkgKHBhcnNlX2VuZF9kZWNsKTogRG9uJ3QgY2FsbCBkZWNsX3R5cGVfYWNjZXNzX2NvbnRyb2wgaWYKCWRlY2wgaXMgbnVsbC4KCjIwMDAtMDItMjMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKGRlY2xzX21hdGNoKTogUmVtb3ZlIG9ic29sZXRlIHN0YXRpYyBtZW1iZXIgbmFkZ2VyaW5nLgoKMjAwMC0wMi0yMSAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogZGVjbC5jIChncm9rZGVjbGFyYXRvcik6IENoYW5nZSBBTlNJIHRvIElTTy4KCSogbGV4LmMgKGNvbnN1bWVfc3RyaW5nLCByZWFkZXNjYXBlLCBkb19pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkocGFyc2VfZmxvYXQsIHJlYWxfeXlsZXgpOiBMaWtld2lzZS4KCSogcGFyc2UueSAocGFyZW5fZXhwcl9vcl9udWxsLCBwYXJlbl9jb25kX29yX251bGwpOiBMaWtld2lzZS4KCSh1bmFyeV9leHByLCBuZXdfaW5pdGlhbGl6ZXIsIGNhc3RfZXhwciwgcHJpbWFyeSwgcHJpbWFyeV9ub19pZCwKCW5ld190eXBlX2lkLCBtYXliZV9sYWJlbF9kZWNscywgc2ltcGxlX3N0bXQsCglmb3IuaW5pdC5zdGF0ZW1lbnQpOiBMaWtld2lzZS4KCSogcHQuYyAoZG9fZGVjbF9pbnN0YW50aWF0aW9uLCBkb190eXBlX2luc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9uYW1lZF9yZXR1cm5fdmFsdWUpOiBMaWtld2lzZS4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZS4KCjIwMDAtMDItMjEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENQVElfVlRBQkxFX0lOREVYX1RZUEUpOiBOZXcgbWFjcm8uCgkoQ1BUSV9DTEFTU19TVEFSX1RZUEUpOiBSZW1vdmUuCgkodnRhYmxlX2luZGV4X3R5cGUpOiBMaWtld2lzZS4KCShjbGFzc19zdGFyX3R5cGVfbm9kZSk6IFJlbW92ZS4KCShUWVBFX1BUUk1FTUZVTkNfRk5fVFlQRSk6IEFkanVzdCBmb3IgdGhlIG5ldyBBQkkuCgkoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IFJlbW92ZS4KCSogY2FsbC5jIChidWlsZF9uZXdfb3ApOiBVc2UgYnVpbGRfYmluYXJ5X29wIGluc3RlYWQgb2YKCWJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQuCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBSZW1vdmUgY2xhc3Nfc3Rhcl90eXBlX25vZGUKCWluaXRpYWxpemF0aW9uLiAgTWFrZSBkZWx0YV90eXBlX25vZGUgcHRyZGlmZl90eXBlX25vZGUgdW5kZXIgdGhlCgluZXcgQUJJLiAgSW5pdGlhbGl6ZSB2dGFibGVfaW5kZXhfdHlwZS4KCShidWlsZF9wdHJtZW1mdW5jX3R5cGUpOiBCdWlsZCBkaWZmZXJlbnQgc3RydWN0dXJlcyBmb3IgdGhlIG5ldwoJQUJJLgoJKGJ1aWxkX2VudW1lcmF0b3IpOiBVc2UgYnVpbGRfYmluYXJ5X29wIGluc3RlYWQgb2YKCWJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQuCgkqIG1ldGhvZC5jIChidWlsZF9vdmVybG9hZF92YWx1ZSk6IE1hbmdsZSBwb2ludGVycy10by1tZW1iZXJzCglhcHByb3ByaWF0ZWx5IHVuZGVyIHRoZSBuZXcgQUJJLgoJKiB0eXBlY2suYyAoYnVpbGRfYXJyYXlfcmVmKTogVXNlIGJ1aWxkX2JpbmFyeV9vcCBpbnN0ZWFkIG9mCglidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0LgoJKGdldF9tZW1iZXJfZnVuY3Rpb25fZnJvbV9wdHJmdW5jKTogQWRqdXN0IGZvciB0aGUgbmV3IEFCSS4KCShidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0KTogUmVuYW1lIHRvIC4uLgoJKGJ1aWxkX2JpbmFyeV9vcCk6IC4uLiB0aGlzLiAgUmVtb3ZlIG9sZCB2ZXJzaW9uLiAgQWRqdXN0IGZvcgoJcG9pbnRlci10by1tZW1iZXIgY29tcGFyaXNvbnMgdW5kZXIgdGhlIG5ldyBBQkkuCgkoYnVpbGRfcHRybWVtZnVuYzEpOiBSZW1vdmUgZGVhZCBjb2RlLiAgQWRqdXN0IGZvciB0aGUgbmV3IEFCSS4KCShidWlsZF9wdHJtZW1mdW5jKTogQWRqdXN0IGZvciB0aGUgbmV3IEFCSS4KCShleHBhbmRfcHRybWVtZnVuY19jc3QpOiBMaWtld2lzZS4KCShkZWx0YTJfZnJvbV9wdHJtZW1mdW5jKTogQXNzZXJ0IHRoYXQgd2UncmUgbm90IHVzaW5nIHRoZSBuZXcgQUJJLgoJKHBmbl9mcm9tX3B0cm1lbWZ1bmMpOiBBZGp1c3QgZm9yIHRoZSBuZXcgQUJJLgoKMjAwMC0wMi0yMSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogY2FsbC5jIChidWlsZF9vYmplY3RfY2FsbCk6IENvbXByZXNzIGNvbnNlY3V0aXZlIGNhbGxzIHRvCgljcF9lcnJvci4KCShidWlsZF9jb25kaXRpb25hbF9leHByKTogU2F5ICdJU08gQysrJyBub3QgJ0FOU0kgQysrJy4KCShidWlsZF9vcF9kZWxldGVfY2FsbCk6IEFkanVzdCBtZXNzYWdlIGZvcm1hdHRpbmcuCgoJKiBjbGFzcy5jIChjaGVja19iYXNlcyk6IENvbXByZXNzIGNvbnNlY3V0aXZlIGNhbGxzIHRvCgljcF9wZWR3YXJuLgoJKGZpbmlzaF9zdHJ1Y3RfYW5vbik6IFNheSAnSVNPIEMrKycuCgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBTYW1lIGhlcmUuCgkoZ3Jva19yZWZlcmVuY2VfaW5pdCk6IExpa2V3aXNlLgoJKGdyb2tmbmRlY2wpOiBDb3JyZWN0IG1lc3NhZ2UgZm9ybWF0dGluZy4KCShncm9rZm5kZWNsKTogSW1wcm92ZSBkaWFnbm9zdGljLgoJKGNoZWNrX3N0YXRpY192YXJpYWJsZV9kZWZpbml0aW9uKTogTGlrZXdpc2UuIFNheSAnSVNPIEMrKycKCShjb21wdXRlX2FycmF5X2luZGV4X3R5cGUpOiBTYXkgJ0lTTyBDKysnCgkoY3JlYXRlX2FycmF5X3R5cGVfZm9yX2RlY2wpOiBDb21wcmVzcyBjb25zZWN1dGl2ZSBjYWxscyB0bwoJY3BfZXJyb3IuCgkoZ3Jva2RlY2xhcmF0b3IpOiBTYXkgJ0lTTyBDKysnCgkoZ3Jva19vcF9wcm9wZXJ0aWVzKTogTGlrZXdpc2UuCgoJKiBkZWNsMi5jIChkZWxldGVfc2FuaXR5KTogQ2xhaXJpZnkgZGlhZ25vc3RpYy4KCShjaGVja19tZW1iZXJfdGVtcGxhdGUpOiBTYW1lIGhlcmUuCgkoZ3Jva19mdW5jdGlvbl9pbml0KTogVXNlIGNvbnNpc3RlbnQgdGVybWlub2xvZ3kuCgoJKiBleHByLmMgKGRvX2Nhc2UpOiBTYXkgJ0lTTyBDKysnCgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogQ29tcHJlc3MgY29uc2VjdXRpdmUgY2FsbHMgdG8gd2FybmluZy4KCjIwMDAtMDItMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKG1lcmdlX3ByaW1hcnlfYW5kX3NlY29uZGFyeV92dGFibGVzX3ApOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKGJ1aWxkX3NlY29uZGFyeV92dGFibGUpOiBSZW9yZ2FuaXplLiAgRG9uJ3QgY3JlYXRlIGEKCW5ldyB2dGFibGUgdW5kZXIgdGhlIG5ldyBBQkkuCgkobGF5b3V0X3Z0YWJsZV9kZWNsKTogRG9uJ3QgYWRkIG51bV9leHRyYV92dGJsX2VudHJpZXMgd2hlbgoJY29tcHV0aW5nIHRoZSBzaXplLgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBEb24ndCByZXR1cm4gYSBDT05TVFJVQ1RPUjsganVzdCByZXR1cm4KCXRoZSBpbml0aWFsaXppbmcgZWxlbWVudHMuCgkoaW5pdGlhbGl6ZV92dGFibGUpOiBOZXcgZnVuY3Rpb24uCgkoZGZzX2ZpbmlzaF92dGJscyk6IFVzZSBpdC4KCShkZnNfYWNjdW11bGF0ZV92dGJsX2luaXRzKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmlzaF92dGJscyk6IE1lcmdlIHByaW1hcnkgYW5kIHNlY29uZGFyeSB2dGFibGVzIHVuZGVyIHRoZSBuZXcKCUFCSS4KCShmaW5pc2hfc3RydWN0XzEpOiBSZW1vdmUgcmVkdW5kYW50IGNhbGwgdG8gbGF5b3V0X3Z0YWJsZV9kZWNsLgoJKiBpbml0LmMgKGV4cGFuZF92aXJ0dWFsX2luaXQpOiBEZWFsIHdpdGggQklORk9fVlRBQkxFcyB0aGF0CglhcmVuJ3QgVkFSX0RFQ0xzLgoKCSogY2xhc3MuYyAoYnVpbGRfdnRhYmxlKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSAuLi4KCShnZXRfdnRhYmxlX2RlY2wpOiAuLi4gaGVyZSwgYW5kIC4uLgoJKGJ1aWxkX3NlY29uZGFyeV92dGFibGUpOiAuLi4gaGVyZS4KCgkqIHB0LmMgKHRzdWJzdF9kZWNsKTogRml4IGZvcm1hdHRpbmcuCgpTYXQgRmViIDE5IDE4OjQzOjEzIDIwMDAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBjbGFzcy5jIChidWlsZF9wcmltYXJ5X3Z0YWJsZSwgbGF5b3V0X3Z0YWJsZV9kZWNsKTogTGlrZXdpc2UuCgkoYXZvaWRfb3ZlcmxhcCwgYnVpbGRfYmFzZV9maWVsZCk6IExpa2V3aXNlLgoJKGJ1aWxkX2Jhc2VfZmllbGQsIGJ1aWxkX2Jhc2VfZmllbGRzLCBpc19lbXB0eV9jbGFzcyk6CglUZXN0IERFQ0xfU0laRSB3aXRoIGludGVnZXJfemVyby4KCShsYXlvdXRfY2xhc3NfdHlwZSk6IFNldCBDTEFTU1RZUEVfU0laRV9VTklULgoJKiBjcC10cmVlLmggKHN0cnVjdCBsYW5nX3R5cGUpOiBOZXcgZmllbGQgc2l6ZV91bml0LgoJKENMQVNTVFlQRV9TSVpFX1VOSVQpOiBOZXcgbWFjcm8uCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBTZXQgREVDTF9TSVpFX1VOSVQuCgkoY3BfZmluaXNoX2RlY2wpOiBEZWxldGUgLVdsYXJnZXItdGhhbiBwcm9jZXNzaW5nLgoJKiBvcHRpbWl6ZS5jIChyZW1hcF9kZWNsKTogV2FsayBERUNMX1NJWkVfVU5JVC4KCSogcHQuYyAodHN1YnN0X2RlY2wpOiBTZXQgREVDTF9TSVpFX1VOSVQuCgkqIHRyZWUuYyAobWFrZV9iaW5mbyk6IGJpbmZvIHZlY3RvciBpcyBvbmUgZW50cnkgbG9uZ2VyLgoJKHdhbGtfdHJlZSk6IFdhbGsgREVDTF9TSVpFX1VOSVQuCgoyMDAwLTAyLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoZGZzX2J1aWxkX3ZjYWxsX29mZnNldF92dGJsX2VudHJpZXMpOiBGaXggdHlwbyBpbgoJY29tbWVudC4KCShidWlsZF92dGFibGVfZW50cnkpOiBEb24ndCBhc3N1bWUgYWxsIHZ0YWJsZSBlbnRyaWVzIGFyZQoJZnVuY3Rpb25zLgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBBZGp1c3QgYWNjb3JkaW5nbHkuCgkoZ2V0X3Z0YWJsZV9kZWNsKTogRml4IGZvcm1hdHRpbmcuCgoyMDAwLTAyLTE4ICBKYXNvbiBNZXJyaWxsICA8amFzb25AY2FzZXkuY3lnbnVzLmNvbT4KCgkqIHNlbWFudGljcy5jIChkZWZlcnJlZF90eXBlX2FjY2Vzc19jb250cm9sKTogV2FsayB0aGUgZW50aXJlCgl0eXBlX2xvb2t1cHMgbGlzdC4KCShzYXZlX3R5cGVfYWNjZXNzX2NvbnRyb2wpOiBSZW5hbWUgZnJvbQoJaW5pdGlhbF9kZWZlcnJlZF90eXBlX2FjY2Vzc19jb250cm9sLiAgSnVzdCByZW1lbWJlciB0aGUgdmFsdWUuCgkoZGVjbF90eXBlX2FjY2Vzc19jb250cm9sKTogTmV3IGZuLgoJKGJlZ2luX2Z1bmN0aW9uX2RlZmluaXRpb24pOiBVc2UgZGVmZXJyZWRfdHlwZV9hY2Nlc3NfY29udHJvbCwgYWZ0ZXIKCXdlJ3ZlIHN0YXJ0ZWQgdGhlIGZ1bmN0aW9uLiAgU2V0IHR5cGVfbG9va3VwcyB0byBlcnJvcl9tYXJrX25vZGUuCgkqIHBhcnNlLnkgKGZyb2Jfc3BlY3MsIGZuLmRlZjEpOiBBZGp1c3QuCgkocGFyc2VfZGVjbDAsIHBhcnNlX2ZpZWxkLCBwYXJzZV9maWVsZDAsIHBhcnNlX2JpdGZpZWxkKTogTmV3IGZucy4KCShwYXJzZV9lbmRfZGVjbCwgcGFyc2VfYml0ZmllbGQwLCBwYXJzZV9tZXRob2QpOiBOZXcgZm5zLgoJKGZuLmRlZjIsIGluaXRkY2wsIGluaXRkY2wwX2lubmFyZHMsIG5vbW9kc19pbml0ZGNsMCk6IFVzZSB0aGVtLgoJKGFmdGVyX3R5cGVfY29tcG9uZW50X2RlY2xhcmF0b3IwKTogTGlrZXdpc2UuCgkoYWZ0ZXJfdHlwZV9jb21wb25lbnRfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKG5vdHlwZV9jb21wb25lbnRfZGVjbGFyYXRvcik6IExpa2V3aXNlLgoJKiBjcC10cmVlLmg6IEFkanVzdC4KCgkqIGRlY2wuYyAocmVkZWNsYXJhdGlvbl9lcnJvcl9tZXNzYWdlKTogQWxsb3cgcmVkZWNsYXJhdGlvbiBvZgoJbmFtZXNwYWNlLXNjb3BlIGRlY2xzLgoKMjAwMC0wMi0xOCAgTWFydGluIHZvbiBMb2V3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiB0eXBlY2syLmMgKG15X2ZyaWVuZGx5X2Fib3J0KTogVXNlIEdDQ0JVR1VSTC4KCjIwMDAtMDItMTcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChhZGRfbWV0aG9kKTogRG9uJ3Qgc2V0IERFQ0xfVklSVFVBTF9DT05URVhULgoJKiBkZWNsMi5jIChncm9rY2xhc3Nmbik6IExpa2V3aXNlLgoKCSogaXIudGV4aTogRG9jdW1lbnQgREVDTF9URU1QTEFURV9JTlNUQU5USUFUSU9OUy4KCgkqIGRlY2wyLmMgKGxhbmdfZGVjb2RlX29wdGlvbik6IERvbid0IHNldCBkZWZhdWx0IG1lc3NhZ2UgbGVuZ3RoCgloZXJlLgoJKiBsZXguYyAobGFuZ19pbml0X29wdGlvbnMpOiBTZXQgaXQgaGVyZS4KCjIwMDAtMDItMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJTWFrZSBERUNMX0NPTlRFWFQgbWVhbiB0aGUgY2xhc3MgaW4gd2hpY2ggYSBtZW1iZXIgZnVuY3Rpb24gd2FzCglkZWNsYXJlZCwgZXZlbiBmb3IgYSB2aXJ0dWFsIGZ1bmN0aW9uLgoJKiBjcC10cmVlLmggKERFQ0xfQ0xBU1NfQ09OVEVYVCk6IEFkanVzdC4KCShERUNMX0ZSSUVORF9DT05URVhUKTogTmV3IG1hY3JvLgoJKERFQ0xfUkVBTF9DT05URVhUKTogUmVtb3ZlLgoJKFNFVF9ERUNMX0ZSSUVORF9DT05URVhUKTogTGlrZXdpc2UuCgkoREVDTF9WSVJUVUFMX0NPTlRFWFQpOiBBZGp1c3QuCgkoREVDTF9DTEFTU19TQ09QRV9QKTogVXNlIFRZUEVfUC4KCShhZGRfZnJpZW5kcyk6IFJlbW92ZS4KCShoYWNrX2RlY2xfZnVuY3Rpb25fY29udGV4dCk6IExpa2V3aXNlLgoJKiBjYWxsLmMgKGJ1aWxkX25ld19mdW5jdGlvbl9jYWxsKTogUmVwbGFjZSBERUNMX1JFQUxfQ09OVEVYVCB3aXRoCglDUF9ERUNMX0NPTlRFWFQuCgkoYnVpbGRfb3Zlcl9jYWxsKTogRml4IGluZGVudGF0aW9uLiAgVXNlIERFQ0xfQ09OVEVYVAoJaW5zdGVhZCBvZiBERUNMX0NMQVNTX0NPTlRFWFQuCgkqIGNsYXNzLmMgKGRmc19idWlsZF92Y2FsbF9vZmZzZXRfdnRibF9lbnRyaWVzKTogTGlrZXdpc2UuCgkoYWRkX21ldGhvZCk6IFNldCBERUNMX1ZJUlRVQUxfQ09OVEVYVCwgbm90IERFQ0xfQ0xBU1NfQ09OVEVYVC4KCShzdHJpY3RseV9vdmVycmlkZXMpOiBVc2UgREVDTF9DT05URVhULCBub3QgREVDTF9DTEFTU19DT05URVhULgoJKGJ1aWxkX3Z0Ymxfb3JfdmJhc2VfZmllbGQpOiBEb24ndCBzZXQgREVDTF9DTEFTU19DT05URVhULgoJKGJ1aWxkX2Jhc2VfZmllbGQpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4KCShidWlsZF9zZWxmX3JlZmVyZW5jZSk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHB1c2hfY2xhc3NfYmluZGluZyk6IFVzZSBDUF9ERUNMX0NPTlRFWFQsIG5vdAoJREVDTF9SRUFMX0NPTlRFWFQuCgkocHVzaHRhZyk6IFVzZSBkZWNsX2Z1bmN0aW9uX2NvbnRleHQsIG5vdAoJaGFja19kZWNsX2Z1bmN0aW9uX2NvbnRleHQuCgkoZGVjbHNfbWF0Y2gpOiBVc2UgQ1BfREVDTF9DT05URVhULCBub3QgREVDTF9SRUFMX0NPTlRFWFQuCgkoZHVwbGljYXRlX2RlY2xzKTogVXNlIERFQ0xfVklSVFVBTF9DT05URVhULgoJKHB1c2hkZWNsKTogUmVtb3ZlIGJvZ3VzIGNvZGUuCgkoc3RhcnRfZGVjbCk6IFVzZSBERUNMX0NPTlRFWFQgcmF0aGVyIHRoYW4gREVDTF9DTEFTU19DT05URVhULgoJKGNwX2ZpbmlzaF9kZWNsKTogVXNlIENQX0RFQ0xfQ09OVEVYVCwgbm90IERFQ0xfUkVBTF9DT05URVhULgoJKGdyb2tmbmRlY2wpOiBVc2UgREVDTF9DT05URVhULCBub3QgREVDTF9DTEFTU19DT05URVhULgoJVXNlIGRlY2xfZnVuY3Rpb25fY29udGV4dCwgbm90aGFja19kZWNsX2Z1bmN0aW9uX2NvbnRleHQuCgkoZ3Jva3ZhcmRlY2wpOiBEb24ndCBzZXQgREVDTF9DTEFTU19DT05URVhULgoJKGdyb2tkZWNsYXJhdG9yKTogTGlrZXdpc2UuICBVc2UgZGVjbF9mdW5jdGlvbl9jb250ZXh0LCBub3QKCWhhY2tfZGVjbF9mdW5jdGlvbl9jb250ZXh0LgoJKGNvcHlfYXJnc19wKTogRG9jdW1lbnQuICBEb24ndCB1c2UgREVDTF9DTEFTU19DT05URVhULgoJKHN0YXJ0X2Z1bmN0aW9uKTogVXNlIERFQ0xfRlJJRU5EX0NPTlRFWFQsIG5vdAoJREVDTF9DTEFTU19DT05URVhULiAgVXNlIGRlY2xfZnVuY3Rpb25fY29udGV4dCwgbm90CgloYWNrX2RlY2xfZnVuY3Rpb25fY29udGV4dC4KCShmaW5pc2hfZnVuY3Rpb24pOiBVc2UgZGVjbF9mdW5jdGlvbl9jb250ZXh0LCBub3QKCWhhY2tfZGVjbF9mdW5jdGlvbl9jb250ZXh0LgoJKG1heWJlX3JldHJvZml0X2luX2NocmcpOiBVc2UgREVDTF9DT05URVhULCBub3QKCURFQ0xfQ0xBU1NfQ09OVEVYVC4KCShncm9rY2xhc3Nmbik6IFNldCBERUNMX1ZJUlRVQUxfQ09OVEVYVCwgbm90IERFQ0xfQ09OVEVYVC4KCShmaW5pc2hfc3RhdGljX2RhdGFfbWVtYmVyX2RlY2wpOiBEb24ndCBzZXQgREVDTF9DTEFTU19DT05URVhULgoJKGdyb2tmaWVsZCk6IExpa2V3aXNlLgoJKGZpbmlzaF9idWlsdGluX3R5cGUpOiBMaWtld2lzZS4KCShmaW5pc2hfdnRhYmxlX3ZhcmRlYyk6IFVzZSBkZWNsX2Z1bmN0aW9uX2NvbnRleHQsIG5vdAoJaGFja19kZWNsX2Z1bmN0aW9uX2NvbnRleHQuCgkoaW1wb3J0X2V4cG9ydF9kZWNsKTogVXNlIERFQ0xfQ09OVEVYVCwgbm90IERFQ0xfQ0xBU1NfQ09OVEVYVC4KCShzdGFydF9zdGF0aWNfaW5pdGlhbGl6YXRpb25fb3JfZGVzdHJ1Y3Rpb24pOiBMaWtld2lzZS4KCShmaW5pc2hfc3RhdGljX2luaXRpYWxpemF0aW9uX29yX2Rlc3RydWN0aW9uKTogTGlrZXdpc2UuCgkobWFya191c2VkKTogQWRqdXN0IGxvZ2ljIGZvciBkZWNpZGluZyB3aGVuIHRvIHN5bnRoZXNpemUgbWV0aG9kcy4KCSogZHVtcC5jIChkZXF1ZXVlX2FuZF9kdW1wKTogVXNlIENQX0RFQ0xfQ09OVEVYVCwgbm90CglERUNMX1JFQUxfQ09OVEVYVC4KCSogZXJyb3IuYyAoZHVtcF9mdW5jdGlvbl9kZWNsKTogVXNlIERFQ0xfQ09OVEVYVCwgbm90CglERUNMX0NMQVNTX0NPTlRFWFQuCgkqIGZyaWVuZC5jIChpc19mcmllbmQpOiBMaWtld2lzZS4KCShhZGRfZnJpZW5kcyk6IFJlbW92ZS4KCShkb19mcmllbmQpOiBVc2UgU0VUX0RFQ0xfRlJJRU5EX0NPTlRFWFQuCgkqIGxleC5jIChiZWdpbl9kZWZpbml0aW9uX29mX2luY2xhc3NfaW5saW5lKTogVXNlCglkZWNsX2Z1bmN0aW9uX2NvbnRleHQsIG5vdCBoYWNrX2RlY2xfZnVuY3Rpb25fY29udGV4dC4KCShwcm9jZXNzX25leHRfaW5saW5lKTogTGlrZXdpc2UuCgkoZG9faWRlbnRpZmllcik6IFVzZSBDUF9ERUNMX0NPTlRFWFQsIG5vdCBERUNMX1JFQUxfQ09OVEVYVC4KCSogbWV0aG9kLmMgKHNldF9tYW5nbGVkX25hbWVfZm9yX2RlY2wpOiBVc2UgREVDTF9DT05URVhULCBub3QKCURFQ0xfQ0xBU1NTX0NPTlRFWFQuCgkoaGFja19pZGVudGlmaWVyKTogTGlrZXdpc2UuCgkoc3ludGhlc2l6ZV9tZXRob2QpOiAgVXNlIGRlY2xfZnVuY3Rpb25fY29udGV4dCwgbm90CgloYWNrX2RlY2xfZnVuY3Rpb25fY29udGV4dC4KCSogcHQuYyAodGVtcGxhdGVfY2xhc3NfZGVwdGhfcmVhbCk6IFVzZSBDUF9ERUNMX0NPTlRFWFQsIG5vdAoJREVDTF9SRUFMX0NPTlRFWFQuCgkoaXNfbWVtYmVyX3RlbXBsYXRlKTogVXNlIGRlY2xfZnVuY3Rpb25fY29udGV4dCwgbm90CgloYWNrX2RlY2xfZnVuY3Rpb25fY29udGV4dC4gIFVzZSBERUNMX0NPTlRFWFQsIG5vdAoJREVDTF9DTEFTU19DT05URVhULgoJKGJ1aWxkX3RlbXBsYXRlX2RlY2wpOiBTZXQgREVDTF9WSVJUVUFMX0NPTlRFWFQsIG5vdAoJREVDTF9DTEFTU19DT05URVhULgoJKGNoZWNrX2RlZmF1bHRfdG1wbF9hcmdzKTogVXNlIENQX0RFQ0xfQ09OVEVYVCwgbm90CglERUNMX1JFQUxfQ09OVEVYVC4KCShwdXNoX3RlbXBsYXRlX2RlY2xfcmVhbCk6IExpa2V3aXNlLgoJKGluc3RhbnRpYXRlX2NsYXNzX3RlbXBsYXRlKTogRG9uJ3QgY2FsbCBhZGRfZnJpZW5kcy4KCSh0c3Vic3RfZGVmYXVsdF9hcmd1bWVudCk6IFVzZSBERUNMX0NPTlRFWFQsIG5vdAoJREVDTF9SRUFMX0NPTlRFWFQuCgkodHN1YnN0X2RlY2wpOiBTZXQgREVDTF9WSVJUVUFMX0NPTlRFWFQsIG5vdCBERUNMX0NMQVNTX0NPTlRFWFQuCglVc2UgREVDTF9DT05URVhULCBub3QgREVDTF9DTEFTU19DT05URVhULgoJKHNldF9tZWFuZ2xlZF9uYW1lX2Zvcl90ZW1wbGF0ZV9kZWNsKTogVXNlIERFQ0xfQ09OVEVYVCwgbm90CglERUNMX0NMQVNTX0NPTlRFWFQuCgkqIHJlcG8uYyAocmVwb19pbmxpbmVfdXNlZCk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoY3VycmVudF9zY29wZSk6IEFkanVzdCBmb3IgbmV3IF9DT05URVhUIG1hY3Jvcy4KCShjb250ZXh0X2Zvcl9uYW1lX2xvb2t1cCk6IFVzZSBDUF9ERUNMX0NPTlRFWFQsIG5vdAoJREVDTF9SRUFMX0NPTlRFWFQuCgkoZnJpZW5kX2FjY2Vzc2libGVfcCk6IFVzZSBERUNMX0NPTlRFWFQsIG5vdCBERUNMX0NMQVNTX0NPTlRFWFQuCgkobG9va3VwX2ZuZmllbGRzX2hlcmUpOkxpa2V3aXNlLgoJKGNoZWNrX2ZpbmFsX292ZXJyaWRlcik6IExpa2V3aXNlLgoJKGluaXRfdmJhc2VfcG9pbnRlcnMpOiBMaWtld2lzZS4KCSh2aXJ0dWFsX2NvbnRleHQpOiBMaWtld2lzZS4KCSogc2VtYW50aWNzLmMgKGZpbmlzaF9tZW1iZXJfZGVjbGFyYXRpb24pOiBKdXN0IHNldCBERUNMX0NPTlRFWFQuCgkoZXhwYW5kX2JvZHkpOiBVc2UgZGVjbF9mdW5jdGlvbl9jb250ZXh0LCBub3QKCWhhY2tfZGVjbF9mdW5jdGlvbl9jb250ZXh0LgoJKiB0cmVlLmMgKGhhY2tfZGVjbF9mdW5jdGlvbl9jb250ZXh0KTogUmVtb3ZlLgoJKiB0eXBlY2suYyAoYnVpbGRfeF9mdW5jdGlvbl9jYWxsKTogVXNlIERFQ0xfQ09OVEVYVCwgbm90CglERUNMX0NMQVNTX0NPTlRFWFQuCgkqIHR5cGVjazIuYyAoZXJyb3Jfbm90X2Jhc2VfdHlwZSk6IExpa2V3aXNlLgoKMjAwMC0wMi0xNSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkZWNsLmMgKHhyZWZfdGFnKTogRG9uJ3QgU0VUX0lERU5USUZJRVJfTkFNRVNQQUNFX1ZBTFVFLgoKMjAwMC0wMi0xNiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogTWFrZS1sYW5nLmluIChnKytzcGVjLm8pOiBEZXBlbmQgb24gJChHQ0NfSCksIG5vdCBnY2MuaC4KCjIwMDAtMDItMTUgIEpvbmF0aGFuIExhcm1vdXIgIDxqbGFybW91ckByZWRoYXQuY28udWs+CgoJKiBsYW5nLXNwZWNzLmg6IEFkZCBuZXcgX19HTlVDX1BBVENITEVWRUxfXyBkZWZpbmUgdG8gZGVmYXVsdCBzcGVjLgoKMjAwMC0wMS0xNiAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogRW5hYmxlIGF1dG9tYXRpYyBsaW5lIHdyYXBwaW5nLgoKMjAwMC0wMi0xMyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBwYXJzZS55IChmcm9iX3NwZWNzKTogU3BsaXQgb3V0Li4uCgkocGFyc2VfZGVjbCk6IEZyb20gaGVyZS4KCShmbi5kZWYyKTogQ2FsbCBpbml0aWFsX2RlZmVycmVkX3R5cGVfYWNjZXNzX2NvbnRyb2wuCgkoYWZ0ZXJfdHlwZV9jb21wb25lbnRfZGVjbGFyYXRvcjApOiBDYWxsIGZyb2Jfc3BlY3MuCgkobm90eXBlX2NvbXBvbmVudF9kZWNsYXJhdG9yMCk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoZnJpZW5kX2FjY2Vzc2libGVfcCk6IE5lc3RlZCBjbGFzc2VzIGFyZSBmcmllbmRzIG9mIHRoZWlyCgllbmNsb3NpbmcgY2xhc3Nlcy4KCjIwMDAtMDItMTAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBpci50ZXhpIChBRERSX0VYUFIpOiBEb2N1bWVudCB0aGUgZmFjdCB0aGF0IGFuIEFERFJfRVhQUiBjYW4gYmUKCXVzZWQgdG8gY3JlYXRlIGFuIGltcGxpY2l0IHRlbXBvcmFyeS4KCgkqIGNsYXNzLmMgKGRmc19tb2RpZnlfdnRhYmxlcyk6IFR3ZWFrIGNhbGN1bGF0aW9uIG9mIGZ1bmN0aW9ucyB0bwoJb3ZlcnJpZGUuCgoyMDAwLTAyLTA4ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogdHlwZWNrLmMgKHN0cmlwX2FsbF9wb2ludGVyX3F1YWxzKTogVXNlIFRZUEVfTUFJTl9WQVJJQU5ULCB0bwoJc3RyaXAgYXJyYXkgZWxlbWVudCBxdWFsaWZpZXJzIHRvby4KCjIwMDAtMDItMDcgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMgKHN0b3JlX3Bhcm1fZGVjbHMpOiBEb24ndCBidWlsZCBjbGVhbnVwcyBmb3IgcGFyYW1ldGVycwoJd2hpbGUgcHJvY2Vzc2luZ190ZW1wbGF0ZV9kZWNsLgoKMjAwMC0wMi0wNyAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBjcC10cmVlLmggKHN0cnVjdCBzYXZlZF9zY29wZSk6IEFkZCBpbmNvbXBsZXRlIGZpZWxkLgoJKG5hbWVzcGFjZV9zY29wZV9pbmNvbXBsZXRlKTogTmV3IG1hY3JvLgoJKiBkZWNsLmMgKHB1c2hkZWNsKTogVXNlIGl0LgoJKGhhY2tfaW5jb21wbGV0ZV9zdHJ1Y3R1cmVzKTogVXNlIGl0LiAgU2VlIHRocm91Z2ggYXJ0aWZpY2lhbAoJYmluZGluZyBsZXZlbHMuCgkobWFya19zYXZlZF9zY29wZSk6IE1hcmsgaXQuCgoJSW1wbGVtZW50IGFjY2VzcyBjb250cm9sIGZvciBuZXN0ZWQgdHlwZXMuCgkqIHNlYXJjaC5jICh0eXBlX2FjY2Vzc19jb250cm9sKTogTmV3IGZuLgoJKGFjY2Vzc2libGVfcCk6IE5vdyB3ZSBkbyBwZXJmb3JtIGFjY2VzcyBjb250cm9sIGZvciB0eXBlcy4KCSogc2VtYW50aWNzLmMgKGRlZmVycmVkX3R5cGVfYWNjZXNzX2NvbnRyb2wpOiBOZXcgZm4uCgkoaW5pdGlhbF9kZWZlcnJlZF90eXBlX2FjY2Vzc19jb250cm9sKTogTmV3IGZuLgoJKGJlZ2luX2Z1bmN0aW9uX2RlZmluaXRpb24pOiBDYWxsIGl0LiAgQWRkIGxvb2t1cHMgcGFybS4KCSogZGVjbC5jIChzdHJ1Y3QgYmluZGluZ19sZXZlbCk6IEFkZCB0aGlzX2NsYXNzIGZpZWxkLgoJKHB1c2hsZXZlbF9jbGFzcyk6IFNldCBpdC4KCShtYXJrX2JpbmRpbmdfbGV2ZWwpOiBNYXJrIGl0LgoJKGxvb2t1cF9uYW1lX3JlYWwpOiBVc2UgaXQuICBDYWxsIHR5cGVfYWNjZXNzX2NvbnRyb2wuCgkobWFya19zYXZlZF9zY29wZSk6IE1hcmsgbG9va3VwcyBmaWVsZC4KCSogY3AtdHJlZS5oIChmbGFnZ2VkX3R5cGVfdHJlZSk6IEFkZCBsb29rdXBzIGZpZWxkLgoJKHN0cnVjdCBzYXZlZF9zY29wZSk6IEFkZCBsb29rdXBzIGZpZWxkLgoJKHR5cGVfbG9va3Vwcyk6IE5ldyBtYWNyby4KCSogcGFyc2UueSAoZGVjbG1vZHMpOiBOb3cgPGZ0eXBlPi4KCShwYXJzZV9kZWNsKTogQWRkIGxvb2t1cHMgcGFybS4gIENhbGwKCWluaXRpYWxfZGVmZXJyZWRfdHlwZV9hY2Nlc3NfY29udHJvbC4KCShsYW5nX2V4dGRlZik6IENsZWFyIHR5cGVfbG9va3Vwcy4KCSh0eXBlZF9kZWNsc3BlY3MsIGRlY2xtb2RzLCB0eXBlc3BlYyk6IFNldCBsb29rdXBzIGZpZWxkLgoJKGluaXRkY2wpOiBDYWxsIGRlZmVycmVkX3R5cGVfYWNjZXNzX2NvbnRyb2wuCgkoZm4uZGVmMSwgZm4uZGVmMiwgdHlwZWRfZGVjbHNwZWNzMSwgaW5pdGRjbDBfaW5uYXJkcywgbm9tb2RzX2luaXRkY2wwLAoJY29tcG9uZW50X2RlY2xfMSwgbmFtZWRfcGFybSk6IEFkanVzdC4KCSogZnJpZW5kLmMgKGlzX2ZyaWVuZCk6IE5lc3RlZCBjbGFzc2VzIGFyZSBmcmllbmRzIG9mIHRoZWlyCgllbmNsb3NpbmcgY2xhc3Nlcy4KCgkqIGNsYXNzLmMgKGN1cnJlbnRseV9vcGVuX2Rlcml2ZWRfY2xhc3MpOiBOZXcgZm4uCgkqIG1ldGhvZC5jIChoYWNrX2lkZW50aWZpZXIpOiBVc2UgaXQuCgoJKiBsZXguYyAoZG9faWRlbnRpZmllcik6IFJlbW92ZSBvYnNvbGV0ZSBjb2RlLgoKCSogcGFyc2UueSAodHlwZWRfdHlwZXNwZWNzKTogUHJvcGFnYXRlIG5ld190eXBlX2ZsYWcgcHJvcGVybHkuCgoyMDAwLTAyLTA1ICBaYWNrIFdlaW5iZXJnICA8emFja0B3b2xlcnkuY3VtYi5vcmc+CgoJKiB0aW5mby5oOiBSZW1vdmUgYXBvc3Ryb3BoZXMgZnJvbSBDKysgY29tbWVudCAoeGdldHRleHQKCXRoaW5rcyB0aGlzIGZpbGUgaXMgcGxhaW4gQykuCgoyMDAwLTAyLTA1ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoY2FsbC5vKTogRGVwZW5kIG9uICQoRVhQUl9IKS4KCgkqIGNhbGwuYzogSW5jbHVkZSAiZXhwci5oIi4KCgkqIGNsYXNzLmMgKGR1bXBfY2xhc3NfaGllcmFyY2h5KTogQWRkIHByb3RvdHlwZS4KCgkqIHNlYXJjaC5jIChkZnNfZ2V0X3B1cmVfdmlydHVhbHMpOiBMaWtld2lzZS4KCjIwMDAtMDItMSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQHJlZGhhdC5jb20+CgoJKiBwYXJzZS55IChzaW1wbGVfc3RtdCk6IEFsbG93IDo6IHRva2VuIGluIGFzbSBwYXJhbWV0ZXIgbGlzdC4KCSogcGFyc2UuYzogUmVidWlsdC4KCk1vbiBKYW4gMzEgMTU6MzU6MjkgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdnRibF9vcl92YmFzZV9maWVsZCk6IE5ldyBwYXJhbWV0ZXIgZmNvbnRleHQuCglTdG9yZSBpdCBpbiBERUNMX0ZDT05URVhULgoJKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzLCBjcmVhdGVfdnRhYmxlX3B0cik6IEZpeCBjYWxsZXJzLgoKMjAwMC0wMS0zMSAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiB0aW5mby5oIChvbGQgYWJpKTogI2luY2x1ZGUgInRjb25maWcuaCIuCgkqIHRpbmZvLmNjIChjb252ZXJ0X3RvX2Jhc2UpOiBNb3ZlIGludG8gb2xkIGFiaSBzZWN0aW9uLgoKMjAwMC0wMS0zMSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQklORk9fVklSVFVBTFMpOiBUd2VhayBkb2N1bWVudGF0aW9uLgoJKENMQVNTVFlQRV9QUklNQVJZX0JJTkZPKTogVXNlIEJJTkZPX1BSSU1BUllfQklORk8uCgkoQklORk9fUFJJTUFSWV9CSU5GTyk6IE5ldyBtYWNyby4KCShCRl9ERUxUQSk6IFJlbmFtZSB0byAuLi4KCShCVl9ERUxUQSk6IC4uLiB0aGlzLgoJKEJGX1ZDQUxMX0lOREVYKTogUmVuYW1lIHRvIC4uLgoJKEJWX1ZDQUxMX0lOREVYKTogLi4uIHRoaXMuCgkoQkZfRk4pOiBSZW5hbWUgdG8gLi4uCgkoQlZfRk4pOiAuLi4gdGhpcy4KCSogY2xhc3MuYyAoYnVpbGRfdmJhc2VfcGF0aCk6IEFkanVzdCBmb3IgY2hhbmdlcyB0byByZXZlcnNlX3BhdGguCgkoc2V0X3J0dGlfZW50cnkpOiBSZW5hbWUgQkZfIG1hY3JvcyB0byBCVl8gdmFyaWFudHMuCgkobW9kaWZ5X3Z0YWJsZV9lbnRyeSk6IFNpbXBsaWZ5LgoJKGFkZF92aXJ0dWFsX2Z1bmN0aW9uKTogUmVuYW1lIEJGXyBtYWNyb3MgdG8gQlZfIHZhcmlhbnRzLgoJKGJ1aWxkX3Z0YWJsZV9pbml0aWFsaXplcik6IExpa2V3aXNlLgoJKGdldF9jbGFzc19vZmZzZXRfMSk6IFJlbW92ZS4KCShkZnNfZ2V0X2NsYXNzX29mZnNldCk6IExpa2V3aXNlLgoJKGdldF9jbGFzc19vZmZzZXQpOiBMaWtld2lzZS4KCShkZnNfZmluZF9maW5hbF9vdmVycmlkZXIpOiBOZXcgZnVuY3Rpb24uCgkoZmluZF9maW5hbF9vdmVycmlkZXIpOiBMaWtld2lzZS4KCShtb2RpZnlfb25lX3Z0YWJsZSk6IFJlbW92ZS4KCShkZnNfZmluZF9iYXNlKTogTmV3IGZ1bmN0aW9uLgoJKGRmc19tb2RpZnlfdnRhYmxlcyk6IEZvbGQgbW9kaWZ5X29uZV92dGFibGUgaW4gaGVyZS4gIFVzZQoJZmluZF9maW5hbF9vdmVycmlkZXIuCgkobW9kaWZ5X2FsbF92dGFibGVzKTogQWRqdXN0LiAgU2V0IEJWX1ZDQUxMX0lOREVYIG9uIG5ldwoJdmlydHVhbHMuCgkoZGZzX2ZpeHVwX3Z0YWJsZV9kZWx0YXMpOiBSZW1vdmUuCgkob3ZlcnJpZGVfb25lX3Z0YWJsZSk6IFJlbW92ZS4KCShtZXJnZV9vdmVycmlkZXMpOiBMaWtld2lzZS4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IE1ha2Ugc3VyZSBCSU5GT19PRkZTRVQgaXMgc2V0IHJpZ2h0IGZvcgoJdW5yZWFsIGNoaWxyZW4gb2YgdmlydHVhbCBiYXNlcy4KCShmaW5pc2hfc3RydWN0XzEpOiBEb24ndCB1c2UgbWVyZ2Vfb3ZlcnJpZGVzLiAgRG9uJ3QgdXNlCglkZnNfZml4dXBfdnRhYmxlX2RlbHRhcy4KCSogdHJlZS5jIChyZXZlcnNlX3BhdGgpOiBSZXR1cm4gYSBUUkVFX0xJU1QsIG5vdCBhIGNoYWluIG9mCglCSU5GT3MuCgoyMDAwLTAxLTMxICBIZXJtYW4gQS5KLiB0ZW4gQnJ1Z2dlIDxIYWouVGVuLkJydWdnZUBuZXQuSENDLm5sPgoJICAgIEphc29uIE1lcnJpbGwgIDxqYXNvbkB5b3JpY2suY3lnbnVzLmNvbT4KCgkqIHRpbmZvLmg6IFJlbmFtZSBVU0l0eXBlIHRvIG15aW50MzIsIGRlcGVuZCBvbiBCSVRTX1BFUl9VTklULgoKMjAwMC0wMS0zMSAgQWxmcmVkIE1pbmFyaWsgPGE4NjAxMjQ4QHVuZXQudW5pdmllLmFjLmF0PgoKCSogZXhjZXB0aW9uLmNjIChfX3Rocm93X2JhZF90eXBlaWQpOiBBZGQgbWlzc2luZyBzdGQ6Oi4KCjIwMDAtMDEtMzEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGNwLXRyZWUuaCAobWFrZV90aHVuayk6IFBST1RPIC0+IFBBUkFNUy4KCjIwMDAtMDEtMzEgIE5hdGhhbiBTaWR3ZWxsICA8c2lkd2VsbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChuZXdfYWJpX3J0dGlfcCk6IFVzZSBmbGFnX25ld19hYmkuCgoJUnVudGltZSBzdXBwb3J0IGZvciBuZXctYWJpIHJ0dGkuCgkqIGluYy90eXBlaW5mbyAodHlwZV9pbmZvOjpvcGVyYXRvciE9KTogRGVmaW5lIGluIGNsYXNzLgoJKHR5cGVfaW5mbzo6YmVmb3JlLCB0eXBlX2luZm86Om5hbWUsIHR5cGVfaW5mbzo6b3BlcmF0b3I9PSwKCXR5cGVfaW5mbzo6b3BlcmF0b3IhPSk6IERlZmluZSBuZXcgQUJJIGltcGxlbWVudGF0aW9ucy4KCSh0eXBlX2luZm86OmlzX3BvaW50ZXJfcCwgdHlwZV9pbmZvOjppc19mdW5jdGlvbl9wKTogRGVjbGFyZQoJbmV3IHZpcnR1YWwgZnVuY3Rpb25zLgoJKHR5cGVfaW5mbzo6ZG9fY2F0Y2gsIHR5cGVfaW5mbzo6ZG9fdXBjYXN0KTogTGlrZXdpc2UuCgoJKiB0aW5mby5oIChfX2Jhc2VfY2xhc3NfaW5mbyk6IERlZmluZSBuZXcgY2xhc3MuCgkoX19jbGFzc190eXBlX2luZm8pOiBMaWtld2lzZS4KCShfX3NpX2NsYXNzX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKF9fdm1pX2NsYXNzX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKF9fZHluYW1pY19jYXN0KTogUHJvdG90eXBlLgoKCSogdGluZm8uY2M6IENvbmRpdGlvbmFsaXplIG9sZCBhbmQgbmV3IHJ0dGkgbWVjaGFuaXNtcy4KCSh0eXBlX2luZm86OmlzX3BvaW50ZXJfcCk6IERlZmluZSBuZXcgZnVuY3Rpb24uCgkodHlwZV9pbmZvOjppc19mdW5jdGlvbl9wKTogTGlrZXdpc2UuCgkodHlwZV9pbmZvOjpkb19jYXRjaCk6IExpa2V3aXNlLgoJKHR5cGVfaW5mbzo6ZG9fdXBjYXN0KTogTGlrZXdpc2UuCgkodnRhYmxlX3ByZWZpeCk6IE5ldyBzdHJ1Y3R1cmUgZm9yIHZ0YWJsZSBhY2Nlc3MuCgkoYWRqdXN0X3BvaW50ZXIpOiBEZWZpbmUgbmV3IHRlbXBsYXRlIGZ1bmN0aW9uLgoJKGNvbnRhaW5lZF9wLCBwdWJsaWNfcCwgdmlydHVhbF9wLCBjb250YWluZWRfcHVibGljX3AsCgljb250YWluZWRfbm9ucHVibGljX3AsIGNvbnRhaW5lZF9ub252aXJ0dWFsX3ApOiBEZWZpbmUgbmV3CglmdW5jdGlvbnMuCgkobm9udmlydHVhbF9iYXNlX3R5cGUpOiBOZXcgbG9jYWwgdmFyaWFibGUuCgkoX19jbGFzc190eXBlX2luZm86On5fX2NsYXNzX3R5cGVfaW5mbyk6IERlZmluZS4KCShfX3NpX2NsYXNzX3R5cGVfaW5mbzo6fl9fc2lfY2xhc3NfdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvOjp+X192bWlfY2xhc3NfdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoX19jbGFzc190eXBlX2luZm86OmRvX2NhdGNoKTogRGVmaW5lIG5ldyBmdW5jdGlvbi4KCShfX2NsYXNzX3R5cGVfaW5mbzo6ZG9fdXBjYXN0KTogTGlrZXdpc2UuCgkoX19jbGFzc190eXBlX2luZm86OmZpbmRfcHVibGljX3NyYyk6IExpa2V3aXNlLgoJKF9fY2xhc3NfdHlwZV9pbmZvOjpkb19maW5kX3B1YmxpY19zcmMpOiBMaWtld2lzZS4KCShfX3NpX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZmluZF9wdWJsaWNfc3JjKTogTGlrZXdpc2UuCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvOjpkb19maW5kX3B1YmxpY19zcmMpOiBMaWtld2lzZS4KCShfX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZHluY2FzdCk6IExpa2V3aXNlLgoJKF9fc2lfY2xhc3NfdHlwZV9pbmZvOjpkb19keW5jYXN0KTogTGlrZXdpc2UuCgkoX192bWlfY2xhc3NfdHlwZV9pbmZvOjpkb19keW5jYXN0KTogTGlrZXdpc2UuCgkoX19jbGFzc190eXBlX2luZm86OmRvX3VwY2FzdCk6IExpa2V3aXNlLgoJKF9fc2lfY2xhc3NfdHlwZV9pbmZvOjpkb191cGNhc3QpOiBMaWtld2lzZS4KCShfX3ZtaV9jbGFzc190eXBlX2luZm86OmRvX3VwY2FzdCk6IExpa2V3aXNlLgoJKF9fZHluYW1pY19jYXN0KTogTGlrZXdpc2UuCgoJKiB0aW5mbzIuY2MgKF9fZnVuZGFtZW50YWxfdHlwZV9pbmZvKTogRGVmaW5lIG5ldyBjbGFzcy4KCShfX3BvaW50ZXJfdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoX19yZWZlcmVuY2VfdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoX19hcnJheV90eXBlX2luZm8pOiBMaWtld2lzZS4KCShfX2Z1bmN0aW9uX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKF9fZW51bV90eXBlX2luZm8pOiBMaWtld2lzZS4KCShfX3B0cl90b19tZW1iZXJfdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoX19mdW5kYW1lbnRhbF90eXBlX2luZm86On5fX2Z1bmRhbWVudGFsX3R5cGVfaW5mbyk6IERlZmluZS4KCShfX3BvaW50ZXJfdHlwZV9pbmZvOjp+X19wb2ludGVyX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKF9fcmVmZXJlbmNlX3R5cGVfaW5mbzo6fl9fcmVmZXJlbmNlX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKF9fYXJyYXlfdHlwZV9pbmZvOjp+X19hcnJheV90eXBlX2luZm8pOiBMaWtld2lzZS4KCShfX2Z1bmN0aW9uX3R5cGVfaW5mbzo6fl9fZnVuY3Rpb25fdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoX19lbnVtX3R5cGVfaW5mbzo6fl9fZW51bV90eXBlX2luZm8pOiBMaWtld2lzZS4KCShfX3B0cl90b19tZW1iZXJfdHlwZV9pbmZvOjp+X19wdHJfdG9fbWVtYmVyX3R5cGVfaW5mbyk6IExpa2V3aXNlLgoJKF9fcG9pbnRlcl90eXBlX2luZm86OmRvX2NhdGNoKTogRGVmaW5lIG5ldyBmdW5jdGlvbi4KCShfX3B0cl90b19tZW1iZXJfdHlwZV9pbmZvOjpkb19jYXRjaCk6IERlZmluZSBuZXcgZnVuY3Rpb24uCgoJKF9fdGhyb3dfdHlwZV9tYXRjaF9ydHRpXzIpOiBVc2UgbmV3IEFCSSBpbnRlcmZhY2UsIGlmIGVuYWJsZWQuCgkoX19pc19wb2ludGVyKTogTGlrZXdpc2UuCgoJKiBleGNlcHRpb24uY2MgKF9fY3BsdXNfdHlwZV9tYXRjaGVyKTogRGVhbCB3aXRoIG5ldy1hYmkgcnR0aS4KCjIwMDAtMDEtMzAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC9jbGFzcy5jIChidWlsZF92dGFibGUpOiBSZW5hbWUgdG8gYnVpbGRfcHJpbWFyeV92dGFibGUuCgkocHJlcGFyZV9mcmVzaF92dGFibGUpOiBSZW5hbWUgdG8gYnVpbGRfc2Vjb25kYXJ5X3Z0YWJsZS4KCShtYWtlX25ld192dGFibGUpOiBOZXcgZnVuY3Rpb24uCgkobW9kaWZ5X3Z0YWJsZV9lbnRyeSk6IEhhbmRsZSBnZW5lcmF0aW9uIG9mIG5ldyB2dGFibGVzIGNvcnJlY3RseS4KCShtb2RpZnlfb25lX3Z0YWJsZSk6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVyLgoJKGRmc19maXh1cF92dGFibGVfZGVsdGFzKTogTGlrZXdpc2UuCgkob3ZlcnJpZGVfb25lX3Z0YWJsZSk6IFVzZSBidWlsZF9zZWNvbmRhcnlfdnRhYmxlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IFVzZSBidWlsZF9wcmltYXJ5X3Z0YWJsZSBhbmQKCWJ1aWxkX3NlY29uZGFyeV92dGFibGUuCgoyMDAwLTAxLTI4ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAcmVkaGF0LmNvbT4KCgkqIGNwL2RlY2wuYzogQWRqdXN0IHZhcmlhYmxlIG5hbWVzLCBjb21tZW50cywgaGVscCBzdHJpbmdzLgoKMjAwMC0wMS0yOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIG5ldzIuY2MgKG9wZXJhdG9yIGRlbGV0ZVtdKTogVXNlIG9wZXJhdG9yIGRlbGV0ZSwgZG9uJ3QgYXNzdW1lCglpbXBsZW1lbnRhdGlvbi4KCjIwMDAtMDEtMjkgIE5hdGhhbiBTaWR3ZWxsICA8c2lkd2VsbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoYnVpbGRfdnRibF9pbml0aWFsaXplcik6IEFkZCBhcmd1bWVudCB0bwoJYnVpbGRfdnRhYmxlX2VudHJ5IGNhbGwuCgoyMDAwLTAxLTI3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5kZWYgKFRIVU5LX0RFQ0wpOiBEaXNjdXNzIHZjYWxsIGluZGljZXMuCgkqIGNwLXRyZWUuaCAoQklORk9fVklSVFVBTFMpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCShCRl9ERUxUQSk6IE5ldyBtYWNyby4KCShCRl9WQ0FMTF9JTkRFWCk6IExpa2V3aXNlLgoJKEJGX0ZOKTogTGlrZXdpc2UuCgkoVEhVTktfVkNBTExfT0ZGU0VUKTogTGlrZXdpc2UuCgkobWFrZV90aHVuayk6IENoYW5nZSBwcm90b3R5cGUuCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeSk6IEludGVncmF0ZQoJYnVpbGRfdnRhYmxlX2VudHJ5X2Zvcl9mbi4gIEhhbmRsZSB2Y2FsbCBpbmRpY2VzLgoJKGJ1aWxkX3Z0YWJsZV9lbnRyeV9mb3JfZm4pOiBSZW1vdmUuCgkoc2V0X3J0dGlfZW50cnkpOiBIYW5kbGUgdmNhbGwgaW5kaWNlcy4gIFVzZSBCRl9ERUxUQSwKCUJGX1ZDQUxMX0lOREVYLCBCRl9GTi4KCShtb2RpZnlfdnRhYmxlX2VudHJ5KTogSW50ZWdyYXRlIGNvbW1vbiBjb2RlIGZyb20KCW1vZGlmeV9vbmVfdnRhYmxlIGFuZCBkZnNfZml4dXBfdnRhYmxlX2RlbHRhcy4KCShhZGRfdmlydHVhbF9mdW5jdGlvbik6IFNldCBCRl9WQ0FMTF9JTkRFWC4KCShidWlsZF92dGJsX2luaXRpYWxpemVyKTogU2ltcGxpZnkuICBVc2UgQkZfREVMVEEsIEJGX1ZDQUxMX0lOREVYLAoJYW5kIEJGX0ZOLgoJKG1vZGlmeV9vbmVfdnRhYmxlKTogU2ltcGxpZnkuCgkoZGZzX2ZpeHVwX3Z0YWJsZV9kZWx0YXMpOiBMaWtld2lzZS4KCShvdmVycmlkZV9vbmVfdnRhYmxlKTogVXNlIEJGX0RFTFRBLCBCRl9WQ0FMTF9JTkRFWCwgQkZfRk4uCgkqIG1ldGhvZC5jIChtYWtlX3RodW5rKTogSGFuZGxlIHZjYWxsIGluZGljZXMuCgoyMDAwLTAxLTI4ICBOYXRoYW4gU2lkd2VsbCAgPHNpZHdlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCglDb21waWxlciBzaWRlIG5ldyBhYmkgcnR0aSAobm90IGVuYWJsZWQpLgoJKiBjcC10cmVlLmggKG5ld19hYmlfcnR0aV9wKTogTmV3IG1hY3JvLgoJKGVtaXRfc3VwcG9ydF90aW5mb3MpOiBQcm90b3R5cGUgbmV3IGZ1bmN0aW9uLgoJKHRpbmZvX2RlY2xfcCk6IExpa2V3aXNlLgoJKGVtaXRfdGluZm9fZGVjbCk6IExpa3dpc2UuCgkqIHJ0dGkuYyAoVElORk9fUFNFVURPX1RZUEUsIFRJTkZPX1ZUQUJMRV9ERUNMKTogTmV3IGFjY2Vzc29yCgltYWNyb3MuCgkoZG9pbmdfcnVudGltZSk6IE5ldyBsb2NhbCBzdGF0aWMuCgkoaW5pdF9ydHRpX3Byb2Nlc3NpbmcpOiBBZGQgbmV3LWFiaSBpbml0aWFsaXplci4KCShnZXRfdGluZm9fZGVjbCk6IEFkZCBuZXctYWJpIGxvZ2ljLgoJKHRpbmZvX2Zyb21fZGVjbCk6IExpa2V3aXNlLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogTGlrZXdpc2UuCgkocXVhbGlmaWVyX2ZsYWdzKTogTmV3IHN0YXRpYyBmdW5jdGlvbi4KCSh0aW5mb19iYXNlX2luaXQpOiBMaWtld2lzZS4KCShnZW5lcmljX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkocHRyX3JlZl9pbml0aWFsaXplcik6IExpa2V3aXNlLgoJKHB0bWRfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShjbGFzc19oaW50X2ZsYWdzKTogTGlrZXdpc2UuCgkoY2xhc3NfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShzeW50aGVzaXplX3RpbmZvX3Zhcik6IExpa2V3aXNlLgoJKGNyZWF0ZV9yZWFsX3RpbmZvX3Zhcik6IExpa2V3aXNlLgoJKGNyZWF0ZV9wc2V1ZG9fdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoZ2V0X3ZtaV9wc2V1ZG9fdHlwZV9pbmZvKTogTGlrZXdpc2UuCgkoY3JlYXRlX3RpbmZvX3R5cGVzKTogTGlrZXdpc2UuCgkoZW1pdF9zdXBwb3J0X3RpbmZvcyk6IE5ldyBnbG9iYWwgZnVuY3Rpb24uCgkodGluZm9fZGVjbF9wKTogTmV3IGdsb2JhbCBwcmVkaWNhdGUuCgkoZW1pdF90aW5mb19kZWNsKTogTmV3IGdsb2JhbCBmdW5jdGlvbi4KCSogY2xhc3MuYyAoc2V0X3J0dGlfZW50cnkpOiBHZW5lcmFsaXplIGZvciBvbGQgYW5kIG5ldyBydHRpLgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAoZmluaXNoX2ZpbGUpOiBMaWtld2lzZS4KClRodSBKYW4gMjcgMjA6NTM6MzYgMjAwMCAgSmltIFdpbHNvbiAgPHdpbHNvbkBjeWdudXMuY29tPgoKCSogb3B0aW1pemUuYyAocmVtYXBfZGVjbCk6IEFkZCB3YWxrX3RyZWUgY2FsbHMgZm9yIERFQ0xfU0laRSAodCkKCWFuZCBUWVBFX01BWF9WQUxVRSAoVFlQRV9ET01BSU4gKFRSRUVfVFlQRSAodCkpKS4KClRodSBKYW4gMjcgMTM6NTQ6MTIgMjAwMCAgTWlrZSBTdHVtcCAgPG1yc0B3cnMuY29tPgoKCSogZGVjbC5jIChwdXNoZGVjbCk6IEZpeCB1cCBzaGFkb3cgd2FybmluZ3Mgd2l0aCByZXNwZWN0IHRvIGltcGxpY2l0Cglmb3Igc2NvcGVzLgoKMjAwMC0wMS0yNiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBwdC5jICh1bmlmeSk6IFVzZSBmb2xkLCBub3QgbWF5YmVfZm9sZF9ub250eXBlX2FyZy4KCldlZCBKYW4gMjYgMjI6MTk6MTQgMjAwMCAgSiJvcm4gUmVubmVja2UgPGFteWxhYXJAY3lnbnVzLmNvLnVrPgoKCSogb3B0aW1pemUuYyAoY2FsbHNfc2V0am1wX3IpOiBTdXBwbHkgbmV3IGFyZ3VtZW50Cgl0byBzcGVjaWFsX2Z1bmN0aW9uX3AuCgoyMDAwLTAxLTI2ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxsLmM6IFBST1RPIC0+IFBBUkFNUy4KCSogY2xhc3MuYzogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaDogTGlrZXdpc2UuCgkqIGN2dC5jOiBMaWtld2lzZS4KCSogZGVjbC5jOiBMaWtld2lzZS4KCSogZGVjbC5oOiBMaWtld2lzZS4KCSogZGVjbDIuYzogTGlrZXdpc2UuCgkqIGR1bXAuYzogTGlrZXdpc2UuCgkqIGVycmZuLmM6IExpa2V3aXNlLgoJKiBlcnJvci5jOiBMaWtld2lzZS4KCSogZXhjZXB0LmM6IExpa2V3aXNlLgoJKiBleHByLmM6IExpa2V3aXNlLgoJKiBpbml0LmM6IExpa2V3aXNlLgoJKiBpbnB1dC5jOiBMaWtld2lzZS4KCSogbGV4LmM6IExpa2V3aXNlLgoJKiBsZXguaDogTGlrZXdpc2UuCgkqIG1ldGhvZC5jOiBMaWtld2lzZS4KCSogb3B0aW1pemUuYzogTGlrZXdpc2UuCgkqIHBhcnNlLnk6IExpa2V3aXNlLgoJKiBwdC5jOiBMaWtld2lzZS4KCSogcmVwby5jOiBMaWtld2lzZS4KCSogcnR0aS5jOiBMaWtld2lzZS4KCSogc2VhcmNoLmM6IExpa2V3aXNlLgoJKiBzZW1hbnRpY3MuYzogTGlrZXdpc2UuCgkqIHNwZXcuYzogTGlrZXdpc2UuCgkqIHRyZWUuYzogTGlrZXdpc2UuCgkqIHR5cGVjay5jOiBMaWtld2lzZS4KCSogdHlwZWNrMi5jOiBMaWtld2lzZS4KCSogeHJlZi5jOiBMaWtld2lzZS4KCjIwMDAtMDEtMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQGN5Z251cy5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfYmluYXJ5X29wX25vZGVmYXVsdCk6IFJlbW92ZSBVTk5FX0VYUFIuCgoyMDAwLTAxLTI1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oICh2Y2FsbF9vZmZzZXRfaW5fdnRhYmxlX3ApOiBOZXcgbWFjcm8uCgkqIGNsYXNzLmMgKGJ1aWxkX3ZiYXNlX29mZnNldF92dGJsX2VudHJpZXMpOiBGaXggdHlwbyBpbiBjb21tbWVudC4KCShzdHJ1Y3QgdmNhbGxfb2Zmc2V0X2RhdGFfcyk6IE5ldyB0eXBlLgoJKGRmc192Y2FsbF9vZmZzZXRfcXVldWVfcCk6IE5ldyBmdW5jdGlvbi4KCShkZnNfYnVpbGRfdmNhbGxfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZjYWxsX29mZnNldF92dGJsX2VudHJpZXMpOiBMaWtld2lzZS4KCShsYXlvdXRfdnRhYmxlX2RlY2wpOiBMaWtld2lzZS4KCShudW1fdmZ1bl9lbnRyaWVzKTogTGlrZXdpc2UuCgkobnVtX2V4dHJhX3Z0YmxfZW50cmllcyk6IEFkZCB0aGUgZW50cmllcyBmb3IgdmNhbGwgb2Zmc2V0cy4KCShidWlsZF92dGJsX2luaXRpYWxpemVyKTogTGlrZXdpc2UuCgkoZGZzX2ZpbmlzaF92dGFibHMpOiBVc2UgbGF5b3V0X3Z0YWJsZV9kZWNsLgoJKG1vZGlmeV9vbmVfdnRhYmxlcyk6IEFsd2F5cyBkdXBsaWNhdGUgdnRhYmxlcyB1bmRlciB0aGUgbmV3IEFCSS4KCShmaW5pc2hfc3RydWN0XzEpOiBVc2UgbGF5b3V0X3Z0YWJsZV9kZWNsLgoKMjAwMC0wMS0yNSAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogZGVjbC5jIChtZW1iZXJfZnVuY3Rpb25fb3JfZWxzZSk6IENoYW5nZSB0aGlyZCBhcmcgZnJvbSBhIGZvcm1hdAoJc3BlY2lmaWVyIHRvIGFuIGBlbnVtIG92ZXJsb2FkX2ZsYWdzJy4gIENhbGxlcnMgY2hhbmdlZC4KCjIwMDAtMDEtMjUgIEdhYnJpZWwgRG9zIFJlaXMgIDxnZHJAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHR5cGVjay5jIChjb21wb3NpdGVfcG9pbnRlcl90eXBlLCBjX3NpemVvZiwgZXhwcl9zaXplb2YsCglidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0LCBidWlsZF91bmFyeV9vcCwgYnVpbGRfcmVpbnRlcnByZXRfY2FzdCwKCWJ1aWxkX2NvbnN0X2Nhc3QsIGdldF9kZWx0YV9kaWZmZXJlbmNlLCBjaGVja19yZXR1cm5fZXhwcik6IEF2b2lkCglBTlNJIHN0cmluZyBjb25jYXRlbmF0aW9uIHVzYWdlLgoKMjAwMC0wMS0yNCAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGxheW91dF9jbGFzc190eXBlKTogUHV0IHRoZSBmaWVsZHMgcmVxdWlyZWQgdG8gbWFrZSBhCgljbGFzcyBub24tZW1wdHkgYXQgdGhlIGVuZCwgbm90IHRoZSBiZWdpbm5pbmcsIG9mIHRoZSBUWVBFX0ZJRUxEcwoJbGlzdC4KCjIwMDAtMDEtMjQgIEphc29uIE1lcnJpbGwgIDxqYXNvbkBjYXNleS5jeWdudXMuY29tPgoKCSogcHQuYyAobWF5YmVfZm9sZF9ub250eXBlX2FyZyk6IERvIG5vdGhpbmcgaWYgd2UncmUgbm90IGluIGEKCXRlbXBsYXRlLgoKCSogZGVjbDIuYyAobWFya191c2VkKTogRG8gaW5zdGFudGlhdGUgaW5saW5lcyB0aGF0IGhhdmUgYmVlbgoJZXhwbGljaXRseSBpbnN0YW50aWF0ZWQuCgoyMDAwLTAxLTI0ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEBjeWdudXMuY29tPgoKCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBVc2UgZXhwYW5kX3RyZWVfYnVpbHRpbi4KCSogdHlwZWNrLmMgKGJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCk6IExpa2V3aXNlLgoJKGJ1aWxkX2JpbmFyeV9vcF9ub2RlZmF1bHQpOiBIYW5kbGUgdW5vcmRlcmVkIGNvbXBhcmVzLgoKMjAwMC0wMS0yNCAgTmF0aGFuIFNpZHdlbGwgIDxzaWR3ZWxsQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENQVElfQkFEX0NBU1QsIENQVElfQkFEX1RZUEVJRCwgQ1BUSV9EQ0FTVCk6IE5ldwoJY3BfdHJlZV9pbmRleCB2YWx1ZXMuCgkodGhyb3dfYmFkX2Nhc3Rfbm9kZSwgdGhyb3dfYmFkX3R5cGVpZF9ub2RlLCBkeW5hbWljX2Nhc3Rfbm9kZSk6CglOZXcgZ2xvYmFsIG5vZGUgI2RlZmluZXMgZm9yIHRoZW0uCgkqIHJ0dGkuYyAoY2FsbF92b2lkX2ZuKTogUmVwbGFjZSB3aXRoIC4uLgoJKGJ1aWxkX3J1bnRpbWVfZGVjbCk6IC4uLiBuZXcgc3RhdGljIGZ1bmN0aW9uLgoJKHRocm93X2JhZF9jYXN0KTogVXNlIHRocm93X2JhZF9jYXN0X25vZGUgYW5kIGJ1aWxkX3J1bnRpbWVfZGVjbC4KCSh0aHJvd19iYWRfdHlwZWlkKTogVXNlIHRocm93X2JhZF90eXBlaWRfbm9kZSBhbmQgYnVpbGRfcnVudGltZV9kZWNsLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogQWx3YXlzIHByb2R1Y2UgY29ycmVjdGx5IHR5cGVkIHJlc3VsdC4KCUV4cGxpY2l0bHkgcHJvZHVjZSB0eXBlX2luZm8gYWRkcmVzc2VzLiBVc2UgZHluYW1pY19jYXN0X25vZGUuCgkqIGV4Y2VwdGlvbi5jYyAoX190aHJvd19iYWRfY2FzdCk6IFJldHVybiBgdm9pZCAqJy4KCShfX3Rocm93X2JhZF90eXBlaWQpOiBSZXR1cm4gYGNvbnN0IHR5cGVfaW5mbyAmJy4KCjIwMDAtMDEtMjQgIE5hdGhhbiBTaWR3ZWxsICA8c2lkd2VsbEBjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChnZXRfdnRhYmxlX2RlY2wpOiBQcm90b3R5cGUgbmV3IGZ1bmN0aW9uLgoJKiBjbGFzcy5jIChnZXRfdnRhYmxlX2RlY2wpOiBOZXcgZnVuY3Rpb24uIEJyb2tlbiBvdXQgZnJvbSAuLi4KCShidWlsZF92dGFibGUpOiAuLi4gaGVyZS4gVXNlIGl0LgoJKiBkZWNsMi5jIChmaW5pc2hfdnRhYmxlX3ZhcmRlY2wpOiBJZ25vcmUgZHVtbXkgdnRhYmxlcyBjcmVhdGVkCglieSBnZXRfdnRhYmxlX2RlY2wuCgoyMDAwLTAxLTI0ICBOYXRoYW4gU2lkd2VsbCAgPHNpZHdlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ1BUSV9UUF9ERVNDX1RZUEUsIENQVElfQUNDRVNTX01PREVfVFlQRSwKCUNQVElfVVNFUl9ERVNDX1RZUEUsIENQVElfQ0xBU1NfREVTQ19UWVBFLCBDUFRJX0FUVFJfREVTQ19UWVBFLAoJQ1BUSV9QVE1GX0RFU0NfVFlQRSk6IFJlbW92ZSBjcF90cmVlX2luZGV4IGVudW1lcmF0aW9ucy4KCShDUFRJX1RJX0RFU0NfVFlQRSwgQ1BUSV9SRUZfREVTQ19UWVBFLCBDUFRJX0FSWV9ERVNDX1RZUEUsCglDUFRJX0VOVU1fREVTQ19UWVBFLCBDUFRJX0NMQVNTX0RFU0NfVFlQRSwgQ1BUSV9TSV9DTEFTU19ERVNDX1RZUEUsCglDUFRJX1ZNSV9DTEFTU19ERVNDX1RZUEUsIENQVElfQkFTRV9ERVNDX1RZUEUpOiBOZXcgZW51bWVyYXRpb25zLgoJKENQVElfVElORk9fRk5fSUQsIENQVElfVElORk9fRk5fVFlQRSk6IFJlbmFtZSB0byAuLi4KCShDUFRJX1RJTkZPX0RFQ0xfSUQsIENQVElfVElORk9fREVDTF9UWVBFKTogLi4uIGhlcmUuCgkoQ1BUSV9USU5GT19WQVJfSUQpOiBOZXcgZW51bWVyYXRpb24uCgkoX190cF9kZXNjX3R5cGVfbm9kZSwgX19hY2Nlc3NfbW9kZV90eXBlX25vZGUsCglfX2JsdG5fZGVzY190eXBlX25vZGUsIF9fdXNlcl9kZXNjX3R5cGVfbm9kZSwKCV9fY2xhc3NfZGVzY190eXBlX25vZGUsIF9fcHRyX2Rlc2NfdHlwZV9ub2RlLAoJX19hdHRyX2Rlc2NfdHlwZV9ub2RlLCBfX2Z1bmNfZGVzY190eXBlX25vZGUsCglfX3B0bWZfZGVzY190eXBlX25vZGUsIF9fcHRtZF9kZXNjX3R5cGVfbm9kZSk6IFJlbW92ZSAjZGVmaW5lcy4KCSh0aV9kZXNjX3R5cGVfbm9kZSwgYmx0bl9kZXNjX3R5cGVfbm9kZSwgcHRyX2Rlc2NfdHlwZV9ub2RlLAoJcmVmX2Rlc2NfdHlwZV9ub2RlLCBhcnlfZGVzY190eXBlX25vZGUsIGZ1bmNfZGVzY190eXBlX25vZGUsCgllbnVtX2Rlc2NfdHlwZV9ub2RlLCBjbGFzc19kZXNjX3R5cGVfbm9kZSwKCXNpX2NsYXNzX2Rlc2NfdHlwZV9ub2RlLCB2bWlfY2xhc3NfZGVzY190eXBlX25vZGUsCglwdG1kX2Rlc2NfdHlwZV9ub2RlLCBiYXNlX2Rlc2NfdHlwZV9ub2RlKTogTmV3ICNkZWZpbmVzLgoJKHRpbmZvX2ZuX2lkLCB0aW5mb19mbl90eXBlKTogUmVuYW1lIHRvIC4uLgoJKHRpbmZvX2RlY2xfaWQsIHRpbmZvX2RlY2xfdHlwZSk6IC4uLiBoZXJlLiBBZGp1c3QuCgkodGluZm9fdmFyX2lkKTogTmV3IGVudW1lcmF0aW9uLgoJKERFQ0xfVElORk9fRk5fUCk6IEF1Z21lbnQgY29tbWVudC4KCSogZGVjbC5jIChjcF9nbG9iYWxfdHJlZXMpOiBBZGp1c3QgZG9jdW1lbnRhdGlvbi4KCSogcnR0aS5jIChpbml0X3J0dGlfcHJvY2Vzc2luZyk6IEFkanVzdCBmb3IgdGluZm9fZGVjbF9pZCwKCXRpbmZvX2RlY2xfdHlwZSBhbmQgdGluZm9fdmFyX2lkLgoJKGdldF90aW5mb19kZWNsX2R5bmFtaWMpOiBBZGp1c3QgZm9yIHRpbmZvX2RlY2xfdHlwZS4KCShidWlsZF90eXBlaWQpOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlLgoJKGdldF90aW5mb192YXIpOiBVc2UgdGluZm9fdmFyX2lkLgoJKHRpbmZvX25hbWUpOiBOZXcgc3RhdGljIGZ1bmN0aW9uLgoJKGdldF90aW5mb19kZWNsKTogQWRqdXN0IGZvciB0aW5mb19kZWNsX2lkIGFuZCB0aW5mb19kZWNsX3R5cGUuCgkodGluZm9fZnJvbV9kZWNsKTogTGlrZXdpc2UuCgkoZ2V0X2Jhc2Vfb2Zmc2V0KTogTmV3IHN0YXRpYyBmdW5jdGlvbiwgYnJva2VuIG91dCBvZgoJZXhwYW5kX2NsYXNzX2Rlc2MuCgkoZXhwYW5kX3NpX2Rlc2MpOiBVc2UgdGluZm9fbmFtZS4KCShleHBhbmRfY2xhc3NfZGVzYyk6IExpa2V3aXNlLiBMb3NlIGxvY2FsIHN0YXRpYyB2YXJpYWJsZS4KCVVzZSBiYXNlX2Rlc2NfdHlwZV9ub2RlLiBVc2UgZ2V0X2Jhc2Vfb2Zmc2V0LgoJKGV4cGFuZF9wdHJfZGVzYyk6IFVzZSB0aW5mb19uYW1lLgoJKGV4cGFuZF9hdHRyX2Rlc2MpOiBMaWtld2lzZS4KCShleHBhbmRfZ2VuZXJpY19kZXNjKTogTGlrZXdpc2UuCgoJKiB0aW5mby5jYyAoX19HWFhfQUJJX1ZFUlNJT04pOiBUZXN0IHZhbHVlIGFuZCBleGlzdGVuY2UuCgkqIHRpbmZvLmggKF9fR1hYX0FCSV9WRVJTSU9OKTogVGVzdCB2YWx1ZSBhbmQgZXhpc3RlbmNlLgoKMjAwMC0wMS0yMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoX19lcHJpbnRmKTogUmVtb3ZlIGRlY2xhcmF0aW9uLgoJKiB0cmVlLmMgKF9fZXByaW50Zik6IFJlbW92ZSBkZWZpbml0aW9uLgoKMjAwMC0wMS0yMyAgWmFjayBXZWluYmVyZyAgPHphY2tAcmFiaS5jb2x1bWJpYS5lZHU+CgkgICAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX01BUktFRF9OLCBTRVRfQ0xBU1NUWVBFX01BUktFRF9OLAoJQ0xFQVJfQ0xBU1NUWVBFX01BUktFRF9OKTogQXZvaWQgc2lnbmVkIHZzLiB1bnNpZ25lZCB3YXJuaW5ncy4KCjIwMDAtMDEtMjMgIEJyYWQgTHVjaWVyICA8bHVjaWVyQG1hdGgucHVyZHVlLmVkdT4KCgkqIGNsYXNzLmMgKGR1bXBfY2xhc3NfaGllcmFyY2h5KTogUHJpbnQgSE9TVF9XSURFX0lOVCBwcm9wZXJseS4KCjIwMDAtMDEtMjMgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKHJlZ2lzdGVyX2R0b3JfZm4pOiBOZXcgZnVuY3Rpb24uCgkqIGRlY2wuYyAoZGVzdHJveV9sb2NhbF9zdGF0aWMpOiBSZW5hbWUgdG8gLi4uCgkocmVnaXN0ZXJfZHRvcl9mbik6IC4uLiB0aGlzLiAgR2l2ZSBpdCBleHRlcm5hbCBsaW5rYWdlLgoJKGV4cGFuZF9zdGF0aWNfaW5pdCk6IFVzZSBpdC4KCSogZGVjbDIuYyAoZG9fc3RhdGljX2luaXRpYWxpemF0aW9uKTogTGlrZXdpc2UsIGlmIHVzaW5nCglfX2N4YV9hdGV4aXQuCgkoZG9fc3RhdGljX2Rlc3RydWN0aW9uKTogQ2hlY2sgdGhhdCBfX2N4YV9hdGV4aXQgaXMgbm90IGluIHVzZS4KCShmaW5pc2hfZmlsZSk6IERvbid0IGNhbGwgZG9fc3RhdGljX2Rlc3RydWN0aW9uIGlmIHVzaW5nCglfX2N4YV9hdGV4aXQuCgoJKiB0eXBlY2suYyAoY29udmVydF9hcmd1bWVudHMpOiBSZXN0b3JlIHR3by1tZXNzYWdlIGVycm9yCglyZXBvcnRpbmcuCgoyMDAwLTAxLTIwICBOYXRoYW4gU2lkd2VsbCAgPHNpZHdlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCglSZW1hcCBkeW5hbWljIGNhc3QgaGludCB2YWx1ZXMgdG8gYmUgY29uc2lzdGVudCBhY3Jvc3MgQUJJcy4KCSogc2VhcmNoLmMgKGR5bmFtaWNfY2FzdF9iYXNlX3JlY3Vyc2UpOiBSZW1hcCBnZW5lcmF0ZWQgdmFsdWUuCgkoZ2V0X2R5bmFtaWNfY2FzdF9iYXNlX3R5cGUpOiBBZGp1c3QgZG9jdW1lbnRhdGlvbi4KCSogdGluZm8uaCAoX191c2VyX3R5cGVfaW5mbzo6ZHluY2FzdCk6IExpa2V3aXNlLgoJKF9fdXNlcl90eXBlX2luZm86OmZpbmRfcHVibGljX3N1Ym9iaik6IFJlbWFwIEJPRkYgbWVhbmluZy4KCSogdGluZm8uY2MgKF9fc2lfdHlwZV9pbmZvOjpkb19keW5jYXN0KTogUmVtYXAgQk9GRiBtZWFuaW5nLgoJKF9fY2xhc3NfdHlwZV9pbmZvOjpkb19keW5jYXN0KTogTGlrZXdpc2UuCgkoX19jbGFzc190eXBlX2luZm86OmRvX2ZpbmRfcHVibGljX3N1Ym9iaik6IExpa2V3aXNlLgoJKiB0aW5mbzIuY2MgKF9fZHluYW1pY19jYXN0KTogUmVtYXAgQk9GRiBwYXJhbWV0ZXIuCgoyMDAwLTAxLTE5ICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0eXBlY2suYyAoYnVpbGRfdW5hcnlfb3ApOiBVc2UgY3BfcGVkd2Fybiwgbm90IHBlZHdhcm4uCgoJKiB0eXBlY2syLmMgKGluY29tcGxldGVfdHlwZV9lcnJvcik6IFJlc3RvcmUgcHJldmlvdXMKCWNwX2Vycm9yIGFuZCBjcF9lcnJvcl9hdCBjYWxsIHNlcXVlbmNlLgoKMjAwMC0wMS0yMCAgQnJhZCBMdWNpZXIgIDxsdWNpZXJAbWF0aC5wdXJkdWUuZWR1PgoKCSogY2xhc3MuYyAoZHVtcF9jbGFzc19oaWVyYXJjaHkpOiBNYWtlIGZvcm1hdCBhZ3JlZSB3aXRoIGFyZ3VtZW50OwoJY2FzdCBwb2ludGVyIHRvIHVuc2lnbmVkIGxvbmcgYW5kIHByaW50IHdpdGggJWx4LgoKMjAwMC0wMS0xOSAgR2FicmllbCBEb3MgUmVpcyAgPGdkckBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogU2V0IGRlZmF1bHQgbGluZS13cmFwIGxlbmd0aCB0byA3Mi4KCgkqIHR5cGVjay5jIChjb21wb3NpdGVfcG9pbnRlcl90eXBlLCBjb21tb25fdHlwZSwKCWNvbXBfdGFyZ2V0X3Bhcm1zLCBjX3NpemVvZiwgZXhwcl9zaXplb2YsIGJ1aWxkX2FycmF5X3JlZiwKCWJ1aWxkX2Z1bmN0aW9uX2NhbGxfcmVhbCwgY29udmVydF9hcmd1bWVudHMsCglidWlsZF9iaW5hcnlfb3Bfbm9kZWZhdWx0LCBwb2ludGVyX2ludF9zdW0sIHBvaW50ZXJfZGlmZiwKCWJ1aWxkX3VuYXJ5X29wLCBtYXJrX2FkZHJlc3NhYmxlLCBidWlsZF9jb21wb3VuZF9leHByLAoJYnVpbGRfc3RhdGljX2Nhc3QsIGJ1aWxkX3JlaW50ZXJwcmV0X2Nhc3QsIGJ1aWxkX2NvbnN0X2Nhc3QsCglidWlsZF9jX2Nhc3QsIGJ1aWxkX21vZGlmeV9leHByLCBnZXRfZGVsdGFfZGlmZmVyZW5jZSwKCWJ1aWxkX3B0cm1lbWZ1bmMsIGNoZWNrX3JldHVybl9leHByKTogUmVwbGFjZSAnQU5TSSBDKysnIHdpdGgKCSdJU08gQysrJy4gIEZ1c2lvbiBjb25zZWN1dGl2ZSBjYWxscyB0byBkaWFnbm9zdGljIG1lc3NhZ2Ugcm91dGluZXMKCWludG8gYSBzaW5nbGUgb25lLgoJKiB0eXBlY2syLmMgKHJlYWRvbmx5X2Vycm9yLCBhYnN0cmFjdF92aXJ0dWFsc19lcnJvciwKCXByb2Nlc3NfaW5pdF9jb25zdHJ1Y3RvciwgY2hlY2tfZm9yX25ld190eXBlKTogTGlrZXdpc2UuCgoyMDAwLTAxLTE5ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJlZS5jIChib3RfbWFuaXApOiBTZXQgREVDTF9DT05URVhUIGZvciBuZXdseSBjcmVhdGVkCglWQVJfREVDTHMuCgoyMDAwLTAxLTE4ICBOYXRoYW4gU2lkd2VsbCAgPHNpZHdlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoZ2V0X3RpbmZvX2ZuX2R5bmFtaWMpOiBSZW1vdmUgcHJvdG90eXBlLgoJKGJ1aWxkX3hfdHlwZWlkKTogTGlrZXdpc2UuCgkoZ2V0X3RpbmZvX2ZuKTogTGlrZXdpc2UuCgkoZ2V0X3RpbmZvX2ZuX3VudXNlZCk6IFJlbmFtZSB0byAuLi4KCShnZXRfdGluZm9fZGVjbCk6IC4uLiBoZXJlLgoJKiBydHRpLmMgKGJ1aWxkX2hlYWRvZik6IFJlcGxhY2UgbG9naWMgZXJyb3Igd2l0aCBhc3NlcnRpb24uCgkoZ2V0X3RpbmZvX2ZuX2R5bmFtaWMpOiBSZW5hbWUgdG8gLi4uCgkoZ2V0X3RpbmZvX2RlY2xfZHluYW1pYyk6IC4uLiBoZXJlLiBNYWtlIHN0YXRpYy4gVXNlCgljb21wbGV0ZV90eXBlX29yX2Vsc2UuCgkoYnVpbGRfeF90eXBlaWQpOiBNb3ZlIGludG8gLi4uCgkoYnVpbGRfdHlwZWlkKTogLi4uIGhlcmUuIEFkanVzdCBjYWxsIHRvCglnZXRfdGluZm9fZGVjbF9keW5hbWljLiBVc2UgdGluZm9fZnJvbV9kZWNsLiBTaW1wbGlmeQoJdGhyb3dfYmFkX3R5cGVpZCBleHByZXNzaW9uLgoJKGdldF90aW5mb19mbl91bnVzZWQpOiBSZW5hbWUgdG8gLi4uCgkoZ2V0X3RpbmZvX2RlY2wpOiAuLi4gaGVyZS4gQWRqdXN0IGNvbW1lbnQuCgkoZ2V0X3RpbmZvX2ZuKTogRGVsZXRlLgoJKHRpbmZvX2Zyb21fZGVjbCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZ2V0X3R5cGVpZF8xKTogQ2FsbCBnZXRfdGluZm9fZGVjbCBhbmQgdGluZm9fZnJvbV9kZWNsLgoJKGdldF90eXBlaWQpOiBVc2UgY29tcGxldGVfdHlwZV9vcl9lbHNlLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogQWRqdXN0IGNhbGxzIHRvCglnZXRfdGluZm9fZGVjbF9keW5hbWljLiBTaW1wbGlmeSB0aHJvd19iYWRfY2FzdCBleHByZXNzaW9uLgoJKiBwYXJzZS55IChwcmltYXJ5KTogQWRqdXN0IGNhbGwgdG8gYnVpbGRfdHlwZWlkLgoJKiBleGNlcHQuYyAoYnVpbGRfZWhfdHlwZV90eXBlX3JlZik6IEFkanVzdCBjYWxsIHRvCglnZXRfdGluZm9fZGVjbC4gTWFyayBhcyB1c2VkLgoJKiBjbGFzcy5jIChzZXRfcnR0aV9lbnRyeSk6IEFkanVzdCBjYWxsIHRvIGdldF90aW5mb19kZWNsLgoJKiBkZWNsMi5jIChidWlsZF9leHByX2Zyb21fdHJlZSk6IEFkanVzdCBjYWxsIHRvIGJ1aWxkX3R5cGVpZC4KCSogcGFyc2UuYzogUmVnZW5lcmF0ZWQuCgoyMDAwLTAxLTE3ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY2xhc3MuYyAoZml4ZWRfdHlwZV9vcl9udWxsKTogRG9uJ3QgY2xlYXIgTk9OTlVMTC4gIERvY3VtZW50CgljYWxsaW5nIGNvbnZlbnRpb24uCgkocmVzb2x2ZXNfdG9fZml4ZWRfdHlwZV9wKTogRG9jdW1lbnQgY2FsbGluZyBjb252ZW50aW9uLgoJKiBydHRpLmMgKGJ1aWxkX3hfdHlwZWlkKTogSW5pdGlhbGl6ZSBOT05OVUxMLgoKCSogY3AtdHJlZS5oIChidWlsZF9zaGFyZWRfaW50X2NzdCk6IE5ldyBmdW5jdGlvbi4KCSogY2FsbC5jIChidWlsZF9vdmVyX2NhbGwpOiBVc2UgREVDTF9WSVJUVUFMX0NPTlRFWFQsIGZvciBjbGFyaXR5LgoJKiBjbGFzcy5jIChtb2RpZnlfdnRhYmxlX2VudHJ5KTogTGlrZXdpc2UuCgkoYWRkX3ZpcnR1YWxfZnVuY3Rpb24pOiBTcGxpdCBvdXQgY29kZSB0byBnZW5lcmF0ZWQgc2hhcmVkCglJTlRFR0VSX0NTVHMgdG8gYnVpbGRfc2hhcmVfaW50X2NzdC4KCShtb2RpZnlfYWxsX3Z0YWJsZXMpOiBIYW5kbGUgYWxsIHRoZSBvdmVycmlkZGVuIGZ1bmN0aW9ucyBoZXJlLgoJQWRkIG92ZXJyaWRkZW4gZnVuY3Rpb25zIGZyb20gbm9uLXByaW1hcnkgdmlydHVhbCBiYXNlcyB0byB0aGUKCXByaW1hcnkgdnRhYmxlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IEFkanVzdCBjYWxsIHRvIG1vZGlmeV9hbGxfdnRhYmxlcy4gIEFkZAoJb3ZlcnJpZGRlbiBmdW5jdGlvbnMgZnJvbSBub24tcHJpbWFyeSBiYXNlcyB0byB0aGUgdnRhYmxlLgoJKiB0cmVlLmMgKGJ1aWxkX3NoYXJlZF9pbnRfY3N0KTogTmV3IGZ1bmN0aW9uLgoKCSogY3AtdHJlZS5oIChzY3JhdGNoYWxsb2MpOiBSZW1vdmUuCgkoYnVpbGRfc2NyYXRjaF9saXN0KTogTGlrZXdpc2UuCgkqIGNhbGwuYyAoY29udmVydF9jbGFzc190b19yZWZlcmVuY2UpOiBSZXBsYWNlIGJ1aWxkX3NjcmF0Y2hfbGlzdAoJYW5kIGJ1aWxkX2V4cHJfbGlzdCB3aXRoIGJ1aWxkX3RyZWVfbGlzdC4KCShhZGRfY2FuZGlkYXRlKTogUmVwbGFjZSBzY3JhdGNoYWxsb2Mgd2l0aCBleHByYWxsb2MuICBOb3RlIG1lbW9yeQoJbGVhay4KCShidWlsZF91c2VyX3R5cGVfY29udmVyc2lvbl8xKTogIFJlcGxhY2UgYnVpbGRfc2NyYXRjaF9saXN0CglhbmQgYnVpbGRfZXhwcl9saXN0IHdpdGggYnVpbGRfdHJlZV9saXN0LgoJKGJ1aWxkX25ld19vcCk6IExpa2V3aXNlLgoJKGJ1aWxkX29wX2RlbGV0ZV9jYWxsKTogTGlrZXdpc2UuCgkoY29udmVydF9saWtlKTogTGlrZXdpc2UuCgkqIGN2dC5jIChvY3BfY29udmVydCk6IExpa2V3aXNlLgoJKiBkZWNsLmMgKHN0YXJ0X2RlY2wpOiBMaWtld2lzZS4KCShzdGFydF9mdW5jdGlvbik6IExpa2V3aXNlLgoJKGZpbmlzaF9kZXN0cnVjdG9yX2JvZHkpOiBMaWtld2lzZS4KCShtYXliZV9idWlsZF9jbGVhbnVwXzEpOiBMaWtld2lzZS4KCSogZGVjbDIuYyAocmVwYXJzZV9kZWNsX2FzX2V4cHIpOiBMaWtld2lzZS4KCSogaW5pdC5jIChwZXJmb3JtX21lbWJlcl9pbml0KTogTGlrZXdpc2UuCgkoZXhwYW5kX2NsZWFudXBfZm9yX2Jhc2UpOiBMaWtld2lzZS4KCShidWlsZF9idWlsdGluX2RlbGV0ZV9jYWxsKTogTGlrZXdpc2UuCgkoYnVpbGRfbmV3XzEpOiBMaWtld2lzZS4KCShidWlsZF9kZWxldGUpOiBMaWtld2lzZS4KCSogbWV0aG9kLmMgKGRvX2J1aWxkX2Fzc2lnbl9yZWYpOiBMaWtld2lzZS4KCSogcGFyc2UueSAoYWxyZWFkeV9zY29wZWRfc3RtdCk6IExpa2V3aXNlLgoJKG5vbnRyaXZpYWxfZXhwcmxpc3QpOiBMaWtld2lzZS4KCShuZXRfaW5pdGlhbGl6ZXIpOiBMaWtld2lzZS4KCShpbml0bGlzdCk6IExpa2V3aXNlLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcnR0aS5jIChidWlsZF94X3R5cGVpZCk6IExpa2V3aXNlLgoJKGJ1aWxkX2R5bmFtaWNfY2FzdF8xKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChidWlsZF94X2NvbXBvdW5kX2V4cHIpOiBMaWtld2lzZS4KCShidWlsZF9zdGF0aWNfY2FzdCk6IExpa2V3aXNlLgoJKGJ1aWxkX21vZGlmeV9leHByKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKERFQ0xfVklOREVYKTogQWRkIGRvY3VtZW50YXRpb24uCgkqIGNsYXNzLmMgKGJ1aWxkX3Z0YWJsZV9lbnRyeSk6IExpa2V3aXNlLgoJKHN0YXJ0X3Z0YWJsZSk6IEFkZCBjb21tZW50LgoJKGFkZF92aXJ0dWFsX2Z1bmN0aW9uKTogUmVwbGFjZSBwZW5kaW5nX2hhcmRfdmlydHVhbHMgd2l0aAoJb3ZlcnJpZGRlbl92aXJ0dWFscyBhbmQgcGVuZGluZ192aXJ0dWFscyB3aXRoIG5ld192aXJ0dWFscy4KCVJlcGxhY2UgcmVkdW5kYW50IGFzc2lnbm1lbnRzIHdpdGggYXNzZXJ0aW9ucy4KCShjaGVja19mb3Jfb3ZlcnJpZGUpOiBBZGQgY29tbWVudC4KCShjaGVja19iYXNlc19hbmRfbWVtYmVycyk6IFJlcGxhY2UgcGVuZGluZ19oYXJkX3ZpcnR1YWxzIHdpdGgKCW92ZXJyaWRkZW5fdmlydHVhbHMgYW5kIHBlbmRpbmdfdmlydHVhbHMgd2l0aCBuZXdfdmlydHVhbHMuCgkoY3JlYXRlX3Z0YmxfcHRyKTogTGlrZXdpc2UuCgkobGF5b3V0X2NsYXNzX3R5cGUpOiBMaWtld2lzZS4KCShmaW5pc2hfc3RydWN0XzEpOiBMaWtld2lzZS4gIEFkZCBjb21tZW50cy4KCjIwMDAtMDEtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjbGFzcy5jIChmaW5pc2hfc3RydWN0XzEpOiBSZXBsYWNlIHJlZHVuZGFudCBjb2RlIHdpdGgKCWFzc2VydGlvbnMuCgoJKiBjcC10cmVlLmggKGZsYWdfbmV3X2FiaSk6IE1vdmUuCgkoZmxhZ191c2VfY3hhX2F0ZXhpdCk6IExpa2V3aXNlLgoJKGZsYWdfaG9ub3Jfc3RkKTogTGlrZXdpc2UuCgkoZmxhZ19ydHRpKTogTGlrZXdpc2UuCgkodmJhc2Vfb2Zmc2V0c19pbl92dGFibGVfcCk6IERlZmluZS4KCSh2cHRyc19wcmVzZW50X2V2ZXJ5d2hlcmVfcCk6IExpa2V3aXNlLgoJKFRZUEVfQ09OVEFJTlNfVlBUUl9QKTogTGlrZXdpc2UuCgkoZGZzX3dhbGtfcmVhbCk6IERlY2xhcmUuCgkqIGNsYXNzLmMgKGJ1aWxkX3ZiYXNlX3BvaW50ZXJfZmllbGRzKTogQ2hlY2sKCXZiYXNlX29mZnNldHNfaW5fdnRhYmxlX3AuCgkoZGZzX2J1aWxkX3ZiYXNlX29mZnNldF92dGJsX2VudHJpZXMpOiBSZWNvcmQgdGhlIHZiYXNlIGluZGljZXMgaW4KCUJJTkZPX1ZQVFJfRklFTEQuCgkoYnVpbGRfdmJhc2Vfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IFNpbXBsaWZ5LgoJKGJ1aWxkX3ZiYXNlX29mZnNldF92dGJsX2VudHJpZXMpOiBBZGp1c3QuCgkoYnVpbGRfdmJhc2VfcG9pbnRlcik6IEFkZCBhYmlsaXR5IHRvIGxvb2sgdXAgdmJhc2Ugb2Zmc2V0cyBpbgoJdnRhYmxlLgoJKHN0YXJ0X3Z0YWJsZSk6IE5ldyBmdW5jdGlvbi4KCShhZGRfdmlydHVhbF9mdW5jdGlvbik6IFVzZSBpdC4KCShkZXRlcm1pbmVfcHJpbWFyeV9iYXNlKTogVXNlIFRZUEVfQ09OVEFJTlNfVlBUUl9QLgoJKG51bV9leHRyYV92dGJsX2VudHJpZXMpOiBVc2UgdmJhc2Vfb2Zmc2V0c19pbl92dGFibGVfcC4KCShidWlsZF92dGJsX2luaXRpYWxpemVyKTogVGFrZSB0aGUgdHlwZSBvZiB0aGUgY29tcGxldGUgb2JqZWN0IGFzCglpbnB1dC4gIFVzZSBpdCB0byBjb3JyZWN0bHkgY2FsY3VsYXRlIHZiYXNlIG9mZnNldHMuCgkoZGZzX2ZpbmlzaF92dGJscyk6IFBhc3MgdGhlIGNvbXBsZXRlIHR5cGUgdG8KCWJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIuCgkoY2hlY2tfYmFzZXNfYW5kX21lbWJlcnMpOiBVc2UgVFlQRV9DT05UQUlOU19WUFRSX1AuCgkoY3JlYXRlX3Z0YWJsZV9wdHIpOiBDcmVhdGUgYSB2dGFibGUgZXZlbiBpZiB0aGVyZSBhcmUgbm8KCW5ldyB2aXJ0dWFsIGZ1bmN0aW9ucywgdW5kZXIgdGhlIG5ldyBBQkkuCgkoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkoZ2V0X3ZmaWVsZF9uYW1lKTogVXNlIFRZUEVfQ09OVEFJTlNfVlBUUl9QLgoJKiBkZWNsLmMgKGV4YXBuZF9zdGF0aWNfaW5pdCk6IFJlbW92ZSBjYWxsIHRvCglwcmVzZXJ2ZV9pbml0aWFsaXplci4KCSogZGVjbDIuYyAobWFya192dGFibGVfZW50cmllcyk6IFR3ZWFrIHRvIGhhbmRsZSB2YmFzZSBvZmZzZXRzIGluCgl2dGFibGVzLgoJKiBpbml0LmMgKGluaXRpYWxpemVfdnRibF9wdHJzKTogSW5pdGlhbGl6ZSB0aGVtIGluIHByZS1vcmRlci4KCShleHBhbmRfdmlydHVhbF9pbml0KTogVXNlIHZiYXNlX29mZnNldHNfaW5fdnRhYmxlX3AuCgkoY29uc3RydWN0X3ZpcnR1YWxfYmFzZXMpOiBEb24ndCBpbml0aWFsaXplIHZpcnR1YWwgYmFzZSBwb2ludGVycwoJdW5kZXIgdGhlIG5ldyBBQkkuCgkoYnVpbGRfYWdncl9pbml0KTogQ2xlYW4gdXAgY29tbWVudC4KCShleHBhbmRfYWdncl9pbml0XzEpOiBMaWtld2lzZS4KCSogcnR0aS5jIChleHBhbmRfY2xhc3NfZGVzYyk6IFN0b3JlIHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIHRhYmxlCglpbmRleCB3aGVyZSB0aGUgdmJhc2Ugb2Zmc2V0IGxpdmVzIGluIHRoZSBvZmZzZXQgZmllbGQuCgkqIHNlYXJjaC5jIChkZnNfd2Fsa19yZWFsKTogTWFrZSBpdCBnbG9iYWwuCgkoZGZzX2RlYnVnX21hcmspOiBVc2UgVFlQRV9DT05UQUlOU19WUFRSX1AuCgkqIHRyZWUuYyAobWFrZV9iaW5mbyk6IERvbid0IGNsZWFyIEJJTkZPX1ZQVFJfRklFTEQuCgoJKiB0aW5mby5oIChVU0l0eXBlKTogTWFrZSBpdCBzaWduZWQgdW5kZXIgdGhlIG5ldyBBQkkuCgkqIHRpbmZvLmNjIChjb252ZXJ0X3RvX2Jhc2UpOiBOZXcgZnVuY3Rpb24uICBFbmNhcHN1bGF0ZSBiYXNlCgljb252ZXJzaW9uIGxvZ2ljIGhlcmUuCgkoX19jbGFzc190eXBlX2luZm86OmRvX3VwY2FzdCk6IFVzZSBpdC4KCShfX2NsYXNzX3R5cGVfaW5mbzo6ZG9fZHluY2FzdCk6IExpa2V3aXNlLgoJKF9fY2xhc3NfdHlwZV9pbmZvOjpkb19maW5kX3B1YmxpY19zdWJvYmopOiBMaWtld2lzZS4KCgkqIGluaXQuYyAoY29uc3RydWN0X3ZpcnR1YWxfYmFzZXMpOiBEb24ndCBsb29rIHVwIHRoZSBhZGRyZXNzZXMgb2YKCXZpcnR1YWwgYmFzZXMgYXQgcnVuLXRpbWUuCgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wb2ludGVyKTogUmVsb2NhdGUuCgkoYnVpbGRfdmJhc2VfcG9pbnRlcl9maWVsZHMpOiBMaWtld2lzZS4KCShkZnNfYnVpbGRfdmJhc2Vfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IExpa2V3aXNlLgoJKGJ1aWxkX3ZiYXNlX29mZnNldF92dGJsX2VudHJpZXMpOiBMaWtld2lzZS4KCgkqIGRlY2wuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBDb21wbGFpbiBpZiAtZm5ldy1hYmkKCS1mbm8tdnRhYmxlLXRodW5rcyBpcyB1c2VkLgoKCSogZGVjbDIuYyAobGFuZ19kZWNvZGVfb3B0aW9uKTogRG9uJ3QgY291cGxlIGZsYWdfaG9ub3Jfc3RkIHRvCglmbGFnX25ld19hYmkuCgoyMDAwLTAxLTE1ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChudW1fZXh0cmFfdnRibF9lbnRyaWVzKTogTmV3IGZ1bmN0aW9uLgoJKHNpemVfZXh0cmFfdnRibF9lbnRyaWVzKTogTGlrZXdpc2UuCgkoZGZzX3Z0YWJsZV9wYXRoX3VubWFyayk6IExpa2V3aXNlLgoJKGRmc192dGFibGVfcGF0aF91bm1hcmtlZF9yZWFsX2Jhc2VzX3F1ZXVlX3ApOiBMaWtld2lzZS4KCShkZnNfdnRhYmxlX3BhdGhfbWFya2VkX3JlYWxfYmFzZXNfcXVldWVfcCk6IExpa2V3aXNlLgoJKiBjbGFzcy5jIChudW1fZXh0cmFfdnRibF9lbnRyaWVzKTogTmV3IGZ1bmN0aW9uLgoJKHNpemVfZXh0cmFfdnRibF9lbnRyaWVzKTogTGlrZXdpc2UuCgkoZGZzX2J1aWxkX3ZiYXNlX29mZnNldF92dGJsX2VudHJpZXMpOiBOZXcgZnVuY3Rpb24uCgkoYnVpbGRfdmJhc2Vfb2Zmc2V0X3Z0YmxfZW50cmllcyk6IExpa2V3aXNlLgoJKGJ1aWxkX3Z0YmxfaW5pdGlhbGl6ZXIpOiBVc2UgaXQuCgkoZmluaXNoX3N0cnVjdF8xKTogQWRqdXN0IHZ0YWJsZSBzaXplcyAodXNpbmcKCW51bV9leHRyYV92dGJsX2VudHJpZXMpLgoJKiBleHByLmMgKGNwbHVzX2V4cGFuZF9leHByKTogQXNzZXJ0IHRoYXQgdGhlIERFQ0xfUlRMIGZvciBhCglUSFVOS19ERUNMIGlzIG5vbi1OVUxMIGJlZm9yZSBleHBhbmRpbmcgaXQuCgkqIGluaXQuYyAoZXhwYW5kX3ZpcnR1YWxfaW5pdCk6IEFkanVzdCB0aGUgdnRhYmxlIHBvaW50ZXIgYnkKCXNpemVfZXh0cmFfdnRibF9lbnRyaWVzIGJlZm9yZSBzdG9yaW5nIGl0LgoJKiBzZWFyY2guYyAoZ2V0X3NoYXJlZF92YXNlX2lmX25vdF9wcmltYXJ5KTogQWRqdXN0IHByb3RvdHlwZS4KCUhhbmRsZSBUUkVFX0xJU1QgcGFyYW1ldGVycyBoZXJlLCBub3QgaW4gdGhlIGRmc18qIGZ1bmN0aW9ucy4KCShkZnNfdW5tYXJrZWRfcmVhbF9iYXNlc19xdWV1ZV9wKTogQWRqdXN0LgoJKGRmc19tYXJrZWRfcmVhbF9iYXNlc19xdWV1ZV9wKTogTGlrZXdpc2UuCgkoZGZzX3Z0YWJsZV9wYXRoX3VubWFya2VkX3JlYWxfYmFzZXNfcXVldWVfcCk6IE5ldyBmdW5jdGlvbi4KCShkZnNfdnRhYmxlX3BhdGhfbWFya2VkX3JlYWxfYmFzZXNfcXVldWVfcCk6IE5ldyBmdW5jdGlvbi4KCShkZnNfdnRhYmxlX3BhdGhfdW5tYXJrKTogTGlrZXdpc2UuCgoyMDAwLTAxLTE0ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogb3B0aW1pemUuYyAoY29weV9ib2R5X3IpOiBDbGVhciB0aGUgb3BlcmFuZCB0aHJlZSBvZiBhCglUQVJHRVRfRVhQUiB3aGVuIGNvcHlpbmcgaXQuCgoyMDAwLTAxLTE0ICBNYXJ0aW4gdi4gTPZ3aXMgIDxsb2V3aXNAaW5mb3JtYXRpay5odS1iZXJsaW4uZGU+CgoJKiBtZXRob2QuYyAoYnVpbGRfZGVjbF9vdmVybG9hZF9yZWFsKTogQ2hlY2sgd2hldGhlciB3ZSBhcmUgaW4gOjoKCWJlZm9yZSByZXR1cm5pbmcgX19idWlsdGluX25ldy9kZWxldGUuCgoyMDAwLTAxLTEzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogcHQuYyAodHN1YnN0X2ZyaWVuZF9mdW5jdGlvbik6IEltcHJvdmUgY29tbWVudC4KCShpbnN0YW50aWF0ZV9kZWNsKTogQXZvaWQgY3Jhc2hpbmcgd2hlbiBhICJuZXN0ZWQiIGZ1bmN0aW9uIGlzCglpbnN0YW50aWF0ZWQgZnJvbSB0aGUgdG9wIGxldmVsLgoKCSogZHVtcC5jIChkcWV1ZXVlX2FuZF9kdW1wKTogRHVtcAoJREVDTF9GUklFTkRfUFNFVURPX1RFTVBMQVRFX0lOU1RBTlRJQVRJT04uCgoyMDAwLTAxLTEzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBjYWxsLmM6IElmIEdBVEhFUl9TVEFUSVNUSUNTLCBkZWNsYXJlIGBuX2J1aWxkX21ldGhvZF9jYWxsJy4KCjIwMDAtMDEtMTMgIE5hdGhhbiBTaWR3ZWxsICA8c2lkd2VsbEBjb2Rlc291cmNlcnkuY29tPgoKCSogZysrc3BlYy5jIChsYW5nX3NwZWNpZmljX2RyaXZlcik6IEFkZCAtZm5ldy1hYmkgaWYKCUVOQUJMRV9ORVdfR1hYX0FCSSBkZWZpbmVkLgoJKiBNYWtlLWxhbmcuaW4gKHRpbmZvLm8sIHRpbmZvMi5vLCBleGNlcHRpb24ubywgbmV3Lm8sCglvcG5ldy5vLCBvcG5ld250Lm8sIG9wdm5ldy5vLCBvcHZuZXdudC5vLCBvcGRlbC5vLCBvcGRlbG50Lm8sCglvcHZkZWwubywgb3B2ZGVsbnQubyk6IFVzZSBHWFhfQUJJX0ZMQUcgc3dpdGNoLgoKMjAwMC0wMS0xMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoc3RhcnRfY2xlYW51cF9mbik6IENhbGwgcHVzaGRlY2wuCgoJKiBjYWxsLmMgKGNvbnZlcnRfY2xhc3NfdG9fcmVmZXJlbmNlKTogRml4IHR5cG9zLgoJKGJ1aWxkX2NvbmRpdGlvbmFsX2V4cHIpOiBIYW5kbGUgZXJyb3JzIGdyYWNlZnVsbHkuCgkqIGNsYXNzLmMgKHB1c2hfbmVzdGVkX2NsYXNzKTogTGlrZXdpc2UuCgkqIGNwLXRyZWUuaCAoVkFSX0ZVTkNUSU9OX09SX1BBUk1fREVDTF9DSEVDSyk6IE5ldyBtYWNyby4KCShERUNMX1RISVNfRVhURVJOKTogVXNlIGl0LgoJKERFQ0xfVEhJU19TVEFUSUMpOiBMaWtld2lzZS4KCSogY3Z0LmMgKGNvbnZlcnRfdG9fdm9pZCk6IEhhbmRsZSBlcnJvcnMgZ3JhY2VmdWxseS4KCShidWlsZF9leHByX3R5cGVfY29udmVyc2lvbik6IExpa2V3aXNlLgoJKiBkZWNsLmMgKG1heWJlX3B1c2hfZGVjbCk6IExpa2V3aXNlLgoJKHN0YXJ0X2RlY2xfMSk6IExpa2V3aXNlLgoJKHJlcXVpcmVfY29tcGxldGVfdHlwZXNfZm9yX3Bhcm1zKTogTGlrZXdpc2UuCgkqIHBhcnNlLnkgKHN0cnVjdHNwKTogTGlrZXdpc2UuCgkoYmFzZV9jbGFzcyk6IExpa2V3aXNlLgoJKiBwYXJzZS5jOiBSZWdlbmVyYXRlZC4KCSogcHQuYyAoZmluaXNoX21lbWJlcl90ZW1wbGF0ZV9kZWNsKTogTGlrZXdpc2UuCgkqIHR5cGVjay5jIChkZWNheV9jb252ZXJzaW9uKTogTGlrZXdpc2UuCgoJKiBjcC10cmVlLmggKGRmc19za2lwX3ZiYXNlcyk6IE5ldyBmdW5jdGlvbi4KCShmaW5kX3ZiYXNlX2luc3RhbmNlKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGRldGVybWluZV9wcmltYXJ5X2Jhc2UpOiBBbGxvdyBhIG5lYXJseSBlbXB0eSBiYXNlIHRvCglzZXJ2ZSBhcyBhIHByaW1hcnkgYmFzZSBjbGFzcyB1bmRlciB0aGUgbmV3IEFCSS4KCShnZXRfY2xhc3Nfb2Zmc2V0XzEpOiBSZW5hbWUgdG8gLi4uCgkoZGZzX2dldF9jbGFzc19vZmZzZXQpOiAuLi4gdGhpcy4gIFNpbXBsaWZ5LiAgRG9uJ3QgaXNzdWUgZXJyb3IKCW1lc3NhZ2VzIGhlcmUuCgkoZ2V0X2NsYXNzX29mZnNldCk6IFVzZSBpdC4gIElzc3VlIGVycm9yIG1lc3NhZ2VzIGhlcmUuCgkoZGZzX21vZGlmeV92dGFibGVzKTogUmVseSBvbiBkZnNfdW5tYXJrZWRfcmVhbF9iYXNlc19xdWV1ZV9wIHRvCglmaW5kIHRoZSByaWdodCBjb3BpZXMgb2YgdmlydHVhbCBiYXNlcy4KCShmaXh1cF92dGFibGVfZGVsdGFzMSk6IFJlbmFtZSB0byAuLi4KCShkZnNfZml4dXBfdnRhYmxlX2RlbHRhcyk6IC4uLiB0aGlzLiAgQWRqdXN0IHRvIGhhbmRsZSB2aXJ0dWFsCgliYXNlcyBhcyBwcmltYXJ5IGJhc2VzLgoJKGZpeHVwX3Z0YWJsZV9kZWx0YXMpOiBSZW1vdmUuCgkob3ZlcnJpZGVfb25lX3Z0YWJsZSk6IEhhbmRsZSB2aXJ0dWFsIGJhc2VzIGFzIHByaW1hcnkgYmFzZXMuCgkobWVyZ2Vfb3ZlcnJpZGVzKTogTGlrZXdpc2UuCgkoZmluaXNoX3N0cnVjdF8xKTogTGlrZXdpc2UuCgkoZHVtcF9jbGFzc19oaWVyYXJjaHkpOiBEdW1wIHByaW1hcnktbmVzcyBvZiBiYXNlcyBhcyB3ZWxsLgoJKiBzZWFyY2guYyAobWFya19wcmltYXJ5X2Jhc2VzKTogVXNlIGEgcHJlLW9yZGVyIHRyYXZlcnNhbCB0bwoJaGFuZGxlIHByaW1hcnkgdmlydHVhbCBiYXNlcy4KCShkZnNfc2tpcF92YmFzZXMpOiBOZXcgZml1bmN0aW9uLgoJKGV4cGFuZF91cGNhc3RfZml4dXBzKTogQWRqdXN0IHRvIGhhbmRsZSBwcmltYXJ5IHZpcnR1YWwgYmFzZXMuCgkoZml4dXBfdmlydHVhbF91cGNhc3Rfb2Zmc2V0cyk6IExpa2V3aXNlLgoJKGZpeHVwX2FsbF92aXJ0dWFsX3VwY2FzdF9vZmZzZXRzKTogTGlrZXdpc2UuCgkoZGZzX2ZpbmRfdmJhc2VfaW5zdGFuY2VzKTogTmV3IGZ1bmN0aW9uLgoJKGZpbmRfdmJhc2VfaW5zdGFuY2UpOiBMaWtld2lzZS4KCjIwMDAtMDEtMTEgIE11bWl0IEtoYW4gIDxraGFuQHhyYXlsaXRoLndpc2MuZWR1PgoKCSogbGV4LmMgKERJUl9TRVBBUkFUT1IpOiBEZWxldGUgbWFjcm8uCgoyMDAwLTAxLTEyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgogICAgICAgKiBkZWNsMi5jIChsYW5nX2RlY29kZV9vcHRpb24pOiBIYW5kbGUgYXV0b21hdGljIGxpbmUgd3JhcHBpbmcKICAgICAgIG9wdGlvbi4KCjIwMDAtMDEtMTEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBmcmllbmQuYyAoZG9fZnJpZW5kKTogRG9uJ3QgcmVzb2x2ZSBzY29wZXMgd2hlbiBwcm9jZXNzaW5nCgl0ZW1wbGF0ZSBkZWNsYXJhdGlvbnMsIGV2ZW4gaWYgdGhlIHF1YWxpZnlpbmcgc2NvcGUgZG9lc24ndAoJaW52b2x2ZSB0ZW1wbGF0ZSBwYXJhbWV0ZXJzLgoKMjAwMC0wMS0xMCAgTWFyayBNaXRjaGVsbCAgPG1pdGNoZWxsQGR1bWJsZWRvcmUuY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNsYXNzLmMgKGRmc19tb2RpZnlfdnRhYmxlc19xdWV1ZV9wKTogUmVtb3ZlLgoJKG1vZGlmeV9hbGxfdnRhYmxlcyk6IFVzZSBkZnNfdW5tYXJrZWRfcmVhbF9iYXNlc19xdWV1ZV9wCglhbmQgZGZzX21hcmtlZF9yZWFsX2Jhc2VzX3F1ZXVlX3AgaW5zdGVhZCBvZgoJZGZzX21vZGlmeV92dGFibGVzX3F1ZXVlX3AuCgoJKiBjbGFzcy5jIChidWlsZF92YmFzZV9wYXRoKTogU2ltcGxpZnkuCgkoZGZzX3Byb3BhZ2F0ZV9iaW5mb19vZmZzZXRzKTogTmV3IGZ1bmN0aW9uLgoJKHByb3BhZ2F0ZV9iaW5mb19vZmZzZXRzKTogVXNlIGl0LgoJKHJlbW92ZV9iYXNlX2ZpZWxkKTogU2ltcGxpZnkuCgkoZGZzX3NldF9vZmZzZXRfZm9yX3ZiYXNlcyk6IFJlbW92ZS4KCShkZnNfc2V0X29mZnNldF9mb3Jfc2hhcmVkX3ZiYXNlcyk6IE5ldyBmdW5jdGlvbi4KCShkZnNfc2V0X29mZnNldF9mb3JfdW5zaGFyZWRfdmJhc2VzKTogTGlrZXdpc2UuCgkobGF5b3V0X3ZpcnR1YWxfYmFzZXMpOiBVc2UgdGhlbS4KCShsYXlvdXRfYmFzZXR5cGVzKTogRG9uJ3QgY2FsbCBwcm9wYWdhdGVfYmluZm9fb2Zmc2V0cy4KCSogc2VhcmNoLmMgKGRmc19nZXRfdmJhc2VfdHlwZXMpOiBDbG9uZSBjb21wbGV0ZWx5IGZyZXNoIGJpbmZvcwoJZm9yIHRoZSB2YmFzZXMuCgoJKiBjbGFzcy5jIChidWlsZF9iYXNlX2ZpZWxkKTogTmV3IGZ1bmN0aW9uLCBzcGxpdCBvdXQgZnJvbSAuLi4KCShidWlsZF9iYXNlX2ZpZWxkcyk6IC4uLiBoZXJlLiAgVXNlIGl0LiAgQWxsb2NhdGUgcHJpbWFyeSBiYXNlcwoJZmlyc3QsIHVuZGVyIHRoZSBuZXcgQUJJLgoJKGdldF92dGFibGVfZW50cnkpOiBSZW1vdmUuCgkocmVtb3ZlX2Jhc2VfZmllbGQpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tIC4uLgoJKHJlbW92ZV9iYXNlX2ZpZWxkcyk6IC4uLiBoZXJlLiAgQWRqdXN0IHNpbmNlIHByaW1hcnkgYmFzZXMgY29tZQoJZmlyc3QgdW5kZXIgdGhlIG5ldyBBQkkuCgoJKiBjcC10cmVlLmggKGV4cGFuZF9kaXJlY3RfdnRibHNfaW5pdCk6IFJlbW92ZSBkZWNsYXJhdGlvbi4KCShpbml0aWFsaXplX3Z0YmxfcHRycyk6IE5ldyBmdW5jdGlvbi4KCShleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IENoYW5nZSBwcm90b3R5cGUuCgkoY29udmVydF9wb2ludGVyX3RvX3ZiYXNlKTogRGVjbGFyZS4KCSogaW5pdC5jIChleHBhbmRfZGlyZWN0X3Z0YmxzX2luaXQpOiBSZW1vdmUuCgkoZGZzX2luaXRpYWxpemVfdnRibF9wdHJzKTogTmV3IGZ1bmN0aW9uLgoJKGluaXRpYWxpemVfdnRibF9wdHJzKTogTGlrZXdpc2UuCgkoZW1pdF9iYXNlX2luaXQpOiBVc2UgaW5pdGlhbGl6ZV92dGJsX3B0cnMuCgkqIHNlYXJjaC5jIChjb252ZXJ0X3BvaW50ZXJfdG9fdmJhc2UpOiBNYWtlIGl0IGdsb2JhbC4KCShleHBhbmRfaW5kaXJlY3RfdnRibHNfaW5pdCk6IFJlbW92ZSB2dGFibGUgaW5pdGlhbGl6YXRpb24gY29kZS4KCSogc2VtYW50aWNzLmMgKHNldHVwX3Z0YmxfcHRyKTogVXNlIGluaXRpYWxpemVfdnRibF9wdHJzLgoKCSogY2xhc3MuYyAoZGZzX2ZpbmlzaF92dGJscyk6IE5ldyBmdW5jdGlvbi4KCShmaW5pc2hfdnRibHMpOiBVc2UgaXQuCgkoZHVtcF9jbGFzc19oaWVyYXJjaHkpOiBOZXcgZnVuY3Rpb24uCgoJKiBjcC10cmVlLmggKEJJTkZPX1BSSU1BUllfTUFSS0VEX1ApOiBDaGFuZ2UgZGVmaW5pdGlvbi4KCShCSU5GT19WQkFTRV9QUklNQVJZX1ApOiBOZXcgbWFjcm8uCgkoQklORk9fVklSVFVBTFMpOiBBZGQgdG8gZG9jdW1lbnRhdGlvbi4KCShTRVRfQklORk9fUFJJTUFSWV9NQVJLRURfUCk6IFJlbW92ZS4KCShDTEVBUl9CSU5GT19QUklNQVJZX01BUktFRF9QKTogTGlrZXdpc2UuCgkoZGZzX21hcmtfcHJpbWFyeV9iYXNlc19xdWV1ZV9wKTogTGlrZXdpc2UuCgkoZGZzX3VubWFya2VkX3JlYWxfYmFzZXNfcXVldWVfcCk6IE5ldyBmdW5jdGlvbi4KCShkZnNfbWFya2VkX3JlYWxfYmFzZXNfcXVldWVfcCk6IExpa2V3aXNlLgoJKiBzZWFyY2guYyAoZGZzX21hcmtfcHJpbWFyeV9iYXNlcyk6IEFkanVzdC4KCShtYXJrX3ByaW1hcnlfYmFzZXMpOiBMaWtld2lzZS4KCShnZXRfc2hhcmVkX3ZiYXNlX2lmX25vdF9wcmltYXJ5KTogTmV3IGZ1bmN0aW9uLgoJKGRmc191bm1hcmtlZF9yZWFsX2Jhc2VzX3F1ZXVlX3ApOiBMaWtld2lzZS4KCShkZnNfbWFya2VkX3JlYWxfYmFzZXNfcXVldWVfcCk6IExpa2V3aXNlLgoJKGRmc19nZXRfcHVyZV92aXJ0dWFscyk6IFNpbXBsaWZ5LgoJKGdldF9wdXJlX3ZpcnR1YWxzKTogTGlrZXdpc2UuCgoyMDAwLTAxLTEwICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBsZXguYzogSW5jbHVkZSB0bV9wLmguCgoyMDAwLTAxLTA3ICBOYXRoYW4gU2lkd2VsbCAgPHNpZHdlbGxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGxhbmctc3BlY3MuaCAoX19HWFhfQUJJX1ZFUlNJT04pOiBOZXcgcHJlcHJvY2Vzc29yIG1hY3JvLgoKMjAwMC0wMS0wNiAgSmFzb24gTWVycmlsbCAgPGphc29uQGNhc2V5LmN5Z251cy5jb20+CgoJKiBkZWNsMi5jIChjb21kYXRfbGlua2FnZSk6IERvbid0IHNldCBERUNMX0RFRkVSX09VVFBVVC4KCSogcHQuYyAoaW5zdGFudGlhdGVfZGVjbCk6IERlZmVyIGNvbWRhdCB0ZW1wbGF0ZXMgdGhhdCBtaWdodCBub3QgYmUKCW5lZWRlZC4KCgkqIGNwLXRyZWUuaCAoREVDTF9ORUVERURfUCk6IEFsc28gdHJ1ZSBpZiAhREVDTF9DT01EQVQuCgkqIGRlY2wyLmMgKGZpbmlzaF92dGFibGVfdmFyZGVjbCk6IERvbid0IGNoZWNrICFERUNMX0NPTURBVC4KCShmaW5pc2hfZmlsZSk6IExpa2V3aXNlLgoKCSogZGVjbDIuYyAoaW1wb3J0X2V4cG9ydF9jbGFzcyk6IFVuZG8gMTIvMTQgY2hhbmdlLgoKCSogZXJyb3IuYyAoZHVtcF9kZWNsKTogb3BlcmF0b3IgbmV3LCBub3Qgb3BlcmF0b3JuZXcuCgoJKiBjbGFzcy5jIChmaWVsZF9kZWNsX2NtcCk6IEEgbm9udHlwZSBpcyAiZ3JlYXRlciIgdGhhbiBhIHR5cGUuCgkqIHNlYXJjaC5jIChsb29rdXBfZmllbGRfMSk6IExvb2sgZm9yIHRoZSBsYXN0IGZpZWxkIHdpdGggdGhlCglkZXNpcmVkIG5hbWUuCgoyMDAwLTAxLTA1ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBhY20ub3JnPgoKCSogZGVjbDIuYyAobG9va3VwX2FyZ19kZXBlbmRlbnQpOiBEZWFsIHdpdGggRk5TIG5vdCBiZWluZyBhCglGVU5DVElPTl9ERUNMLgoKMjAwMC0wMS0wNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AYWNtLm9yZz4KCgkqIHR5cGVjay5jIChidWlsZF9zdGF0aWNfY2FzdCk6IERvbid0IHN0cmlwIHRhcmdldCBxdWFsaWZpZXJzCgl3aGVuIGNhc3RpbmcgZnJvbSBhIGNsYXNzLgoKMjAwMC0wMS0wNCAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogY2xhc3MuYyAod2Fybl9oaWRkZW4pOiBJbml0aWFsaXplIHZhcmlhYmxlIGBmbmRlY2wnLgoKMjAwMC0wMS0wMyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CgoJKiBkZWNsLmMgKGZsYWdfaXNvYzl4KTogTmV3IHZhcmlhYmxlIHRvIGJlIGFibGUgdG8gdXNlIGNvZGUgaW4KCWMtY29tbW9uLmMuICBGb3Igbm93IGFsd2F5cyB6ZXJvLgoKMjAwMC0wMS0wMyAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX1ZCQVNFQ0xBU1NFUyk6IEltcHJvdmUgZG9jdW1lbnRhdGlvbi4KCSogY2xhc3MuYyAobGF5b3V0X2Jhc2V0eXBlcyk6IERvbid0IHNldCBCSU5GT19JTkhFUklUQU5DRV9DSEFJTgoJb3IgdW5zaGFyZV9iYXNlX2JpbmZvcyBmb3IgdmlydHVhbCBiYXNlcyBoZXJlLgoJKiBzZWFyY2guYyAoZGZzX2dldF92YmFzZV90eXBlcyk6IERvIGl0IGhlcmUuCgkoZ2V0X3ZiYXNlX3R5cGVzKTogQWRqdXN0LgoKMjAwMC0wMS0wMiAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGNwLXRyZWUuaCAoQ0xBU1NUWVBFX1ZGSUVMRFMpOiBNb3ZlIGRlZmluaXRpb24uCgkoQklORk9fUFJJTUFSWV9NQVJLRURfUCk6IFVzZSBmbGFnIDUuCgkoU0VUX0JJTkZPX1BSSU1BUllfTUFSS0VEX1ApOiBMaWtld2lzZS4KCShDTEVBUl9CSU5GT19QUklNQVJZX01BUktFRF9QKTogTGlrZXdpc2UuCgkodW5tYXJrX3ByaW1hcnlfYmFzZXMpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgkodW5tYXJrZWRwKTogRGVjbGFyZS4KCShkZnNfdmJhc2VfdW5tYXJrKTogTGlrZXdpc2UuCgkqIGNsYXNzLmMgKGRldGVybWluZV9wcmltYXJ5X2Jhc2UpOiBSZXR1cm4gaW1tZWRpYXRlbHkgaWYgdGhlcmUKCWFyZSBubyBiYXNlIGNsYXNzZXMuICBDYWxsIG1hcmtfcHJpbWFyeV9iYXNlcyBoZXJlLgoJKG1vZGlmeV9hbGxfZGlyZWN0X3Z0YWJsZXMpOiBSZW1vdmUuCgkobW9kaWZ5X2FsbF9pbmRpcmVjdF92dGFibGVzKTogUmVtb3ZlLgoJKGRmc19tb2RpZnlfdnRhYmxlc19xdWV1ZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGRmc19tb2RpZnlfdnRhYmxlcyk6IE5ldyBmdW5jdGlvbi4KCShtb2RpZnlfYWxsX3Z0YWJsZXMpOiBVc2UgdGhlbS4KCShidWlsZF9iYXNlX2ZpZWxkcyk6IEJ1aWxkIEZJRUxEX0RFQ0xzIGZvciBwcmltYXJ5IHZpcnR1YWwgYmFzZQoJY2xhc3Nlcy4KCShjcmVhdGVfdnRhYmxlX3B0cik6IERvbid0IGNhbGwgZGV0ZXJtaW5lX3ByaW1hcnlfYmFzZSBoZXJlLgoJKGRmc19tYXJrX3ByaW1hcnlfYmFzZXNfYW5kX3NldF92YmFzZV9vZmZzZXRzKTogUmVuYW1lIHRvIC4uLgoJKGRmc19zZXRfb2Zmc2V0X2Zvcl92YmFzZXMpOiAuLi4gdGhpcy4KCShsYXlvdXRfdmlydHVhbF9iYXNlcyk6IFVzZSBpdC4KCShsYXlvdXRfY2xhc3NfdHlwZSk6IENhbGwgZGV0ZXJtaW5lX3ByaW1hcnlfYmFzZSBoZXJlLgoJKiBzZWFyY2guYyAodW5tYXJrZWRwKTogTWFrZSBpdCBnbG9iYWwuCgkoc2hhcmVkX21hcmtlZF9wKTogU2ltcGxpZnkuCgkoc2hhcmVkX3VubWFya2VkX3ApOiBMaWtld2lzZS4KCShkZnNfcHJpbWFyeV9iYXNlc19xdWV1ZV9wKTogUmVtb3ZlLgoJKGRmc191bm1hcmtfcHJpbWFyeV9iYXNlcyk6IExpa2V3aXNlLgoJKHVubWFya19wcmltYXJ5X2Jhc2VzKTogTGlrZXdpc2UuCgkobWFya19wcmltYXJ5X2Jhc2VzKTogU2ltcGxpZnkuCgkoZ2V0X3B1cmVfdmlydHVhbHMpOiBEb24ndCBjYWxsIG1hcmtfcHJpbWFyeV9iYXNlcyBoZXJlLgoJKGRmc192YmFzZV91bm1hcmspOiBOZXcgZnVuY3Rpb24uCgkoZ2V0X3ZiYXNlX3R5cGVzKTogU2ltcGxpZnkuCgoJKiBjbGFzcy5jIChzdHJ1Y3QgYmFzZV9pbmZvKTogUmVtb3ZlLgoJKGRldGVybWluZV9wcmltYXJ5X2Jhc2UpOiBUYWtlIGhhc192aXJ0dWFsX3AgcmF0aGVyIHRoYW4gYQoJYmFzZV9pbmZvIGFzIGlucHV0LiAgRG9uJ3QgY2FsY3VsYXRlIG1heF9oYXNfdmlydHVhbC4KCShmaW5pc2hfc3RydWN0X2JpdHMpOiBSZW1vdmUgbWF4X2hhc192aXJ0dWFsIGFyZ3VtZW50LgoJKGNyZWF0ZV92dGFibGVfcHRyKTogUmVtb3ZlIG1heF9oYXNfdmlydHVhbF9wIGFyZ3VtZW50LgoJKGxheW91dF92aXJ0dWFsX2Jhc2VzKTogUmVtb3ZlIG1heCBhcmd1bWVudC4KCShsYXlvdXRfYmFzZXR5cGVzKTogTGlrZXdpc2UuCgkobGF5b3V0X2NsYXNzX3R5cGUpOiBSZW1vdmUgbWF4X2hhc192aXJ0dWFsX3AgYXJndW1lbnQuCgkoZmluaXNoX3N0cnVjdF8xKTogUmVtb3ZlIG1heF9oYXNfdmlydHVhbC4KCgkqIGNwLXRyZWUuaCAoZGZzX21hcmtfcHJpbWFyeV9iYXNlc19xdWV1ZV9wKTogTmV3IGZ1bmN0aW9uLgoJKGxheW91dF9iYXNldHlwZXMpOiBSZW1vdmUuCgkqIGNsYXNzLmMgKHByb3BhZ2F0ZV9iaW5mb19vZmZzZXRzKTogTW92ZWQgaGVyZSBmcm9tIHRyZWUuYy4KCVVwZGF0ZSB0byBoYW5kbGUgcHJpbWFyeSB2aXJ0dWFsIGJhc2VzLgoJKHJlbW92ZV9iYXNlX2ZpZWxkcyk6IE5ldyBmdW5jdGlvbiwgc3BsaXQgb3V0IGZyb20KCWxheW91dF9iYXNldHlwZXMuCgkoZGZzX21hcmtfcHJpbWFyeV9iYXNlc19hbmRfc2V0X3ZiYXNlX29mZnNldHMpOiBOZXcgZnVuY3Rpb24uCgkobGF5b3V0X3ZpcnR1YWxfYmFzZXMpOiBOZXcgZnVuY3Rpb24sIHNwbGl0IG91dCBmcm9tCglsYXlvdXRfYmFzZXR5cGVzLiAgVXBkYXRlIHRvIGhhbmRsZSBwcmltYXJ5IHZpcnR1YWwgYmFzZXMuCgkobGF5b3V0X2Jhc2V0eXBlcyk6IE1vdmVkIGhlcmUgZnJvbSB0cmVlLmMuICBVc2UKCXJlbW92ZV9iYXNlX2ZpZWxkcyBhbmQgbGF5b3V0X3ZpcnR1YWxfYmFzZXMuCgkqIHNlYXJjaC5jIChkZnNfbWFya19wcmltYXJ5X2Jhc2VzX3F1ZXVlX3ApOiBOZXcgZnVuY3Rpb24uCgkobWFya19wcmltYXJ5X2Jhc2VzKTogVXNlIGl0LgoJKiB0cmVlLmMgKENFSUwpOiBSZW1vdmUuCgkocHJvcGFnYXRlX2JpbmZvX29mZnNldHMpOiBSZW1vdmUuCgkobGF5b3V0X2Jhc2V0eXBlcyk6IFJlbW92ZS4KCjIwMDAtMDEtMDEgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjcC10cmVlLmggKENMQVNTVFlQRV9OX0JBU0VDTEFTU0VTKTogVXNlIEJJTkZPX05fQkFTRVRZUEVTLgoJKEJJTkZPX1BSSU1BUllfTUFSS0VEX1ApOiBOZXcgbWFjcm8uCgkoU0VUX0JJTkZPX1BSSU1BUllfTUFSS0VEX1ApOiBMaWtld2lzZS4KCShDTEVBUl9CSU5GT19QUklNQVJZX01BUktFRF9QKTogTGlrZXdpc2UuCgkobWFya19wcmltYXJ5X2Jhc2VzKTogTmV3IGZ1bmN0aW9uLgoJKHVubWFya19wcmltYXJ5X2Jhc2VzKTogTGlrZXdpc2UuCgkqIHNlYXJjaC5jIChnZXRfYWJzdHJhY3RfdmlydHVhbHNfMSk6IFJlbW92ZS4KCShkZnNfbWFya19wcmltYXJ5X2Jhc2VzKTogTmV3IGZ1bmN0aW9uLgoJKG1hcmtfcHJpbWFyeV9iYXNlcyk6IExpa2V3aXNlLgoJKGRmc191bm1hcmtfcHJpbWFyeV9iYXNlcyk6IExpa2V3aXNlLgoJKHVubWFya19wcmltYXJ5X2Jhc2VzKTogTGlrZXdpc2UuCgkoZGZzX2dldF9wdXJlX3ZpcnR1YWxzKTogTGlrZXdpc2UuCgoyMDAwLTAxLTAxICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3AtdHJlZS5oIChza2lwX3J0dGlfc3R1ZmYpOiBBZGp1c3QgcHJvdG90eXBlLgoJKiBjbGFzcy5jIChza2lwX3J0dGlfc3R1ZmYpOiBSZW9yZ2FuaXplIHBhcmFtZXRlcnMgYW5kIHJldHVybiB2YWx1ZS4KCShtb2RpZnlfb25lX3Z0YWJsZSk6IEFkanVzdC4KCShmaXh1cF92dGFibGVfZGVsdGFzMSk6IExpa2V3aXNlLgoJKG92ZXJyaWRlX29uZV92dGFibGUpOiBMaWtld2lzZS4KCSogc2VhcmNoLmMgKGdldF9hYnN0cmFjdF92aXJ0dWFsc18xKTogTGlrZXdpc2UuCgkoZ2V0X3B1cmVfdmlydHVhbHMpOiBMaWtld2lzZS4KCShleHBhbmRfdXBjYXN0X2ZpeHVwcyk6IExpa2V3aXNlLgoJKiB0cmVlLmMgKGRlYnVnX2JpbmZvKTogTGlrZXdpc2UuCgoJKiBjbGFzcy5jIChidWlsZF92dGFibGUpOiBEb24ndCByZXR1cm4gYSB2YWx1ZS4gIERvbid0IHJlYnVpbGQKCXZ0YWJsZXMgZm9yIGJhc2VzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gaGFuZGxlZC4KCShwcmVwYXJlX2ZyZXNoX3Z0YWJsZSk6IERvbid0IHJlYnVpbGQgdnRhYmxlcyBmb3IgYmFzZXMgdGhhdCBoYXZlCglhbHJlYWR5IGJlZW4gaGFuZGxlZC4KCShtb2RpZnlfb25lX3Z0YWJsZSk6IEFkanVzdCBhY2NvcmRpbmdseS4KCShmaXh1cF92dGFibGVfZGVsdGFzMSk6IExpa2V3aXNlLgoJKGZpbmlzaF9zdHJ1Y3RfMSk6IExpa2V3aXNlLgoKMjAwMC0wMS0wMSAgTWFydGluIHYuIEz2d2lzICA8bG9ld2lzQGluZm9ybWF0aWsuaHUtYmVybGluLmRlPgoKCSogY2FsbC5jIChidWlsZF9uZXdfbWV0aG9kX2NhbGwpOiBBbHNvIGNoZWNrIGRlc3RydWN0b3JzLgo=