MjAwNi0xMi0wNyAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0BhcHBsZS5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVwbGFjZSBDUk9TU19DT01QSUxFIHdpdGggQ1JPU1NfRElSRUNUT1JZX1NUUlVDVFVSRS4KCSogYWRhaW50LmM6IExpa2V3aXNlLgoKMjAwNy0wNS0xMyAgUmVsZWFzZSBNYW5hZ2VyCgoJKiBHQ0MgNC4yLjAgcmVsZWFzZWQuCgoyMDA3LTAzLTA0ICByaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUFIgYWRhLzI2Nzk3CgkqIGxhbmcub3B0OiBBY2NlcHQgLWZ0cmVlLXZycCBmb3IgQWRhLgoJKiBtaXNjLmMgKE9QVF9mdHJlZV92cnApOiBOZXcgY2FzZS4KCShnbmF0X3Bvc3Rfb3B0aW9ucyk6IERpc2FibGUgVHJlZS1WUlAgdW5sZXNzIGV4cGxpY2l0bHkgdHVybmVkIG9uLgoKMjAwNy0wMi0yOCAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoZG9jL2duYXRfdWduX3Vudy50ZXhpKTogRGVwZW5kIG9uCgkkKGdjY19kb2NkaXIpL2luY2x1ZGUvZ2NjLWNvbW1vbi50ZXhpIGFuZCBnY2MtdmVycy50ZXhpLgoJKGRvYy9nbmF0LXN0eWxlLmluZm8pOiBMaWtld2lzZS4KCjIwMDctMDItMjYgIEJyb29rcyBNb3NlcyAgPGJyb29rcy5tb3Nlc0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ25hdC1zdHlsZS50ZXhpOiBTdGFuZGFyZGl6ZSB0aXRsZSBwYWdlLgoJKiBnbmF0X3JtLnRleGk6IExpa2V3aXNlLgoJKiBnbmF0X3Vnbi50ZXhpOiBMaWtld2lzZS4KCjIwMDctMDItMjEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCglQUiBhZGEvMTg4MTkKCSogc2VtX2NoMy5hZGIgKENyZWF0ZV9Db25zdHJhaW5lZF9Db21wb25lbnRzKTogZm9yIGEgc3VidHlwZSBvZiBhbgoJdW50YWdnZWQgZGVyaXZlZCB0eXBlLCBhZGQgaGlkZGVuIGNvbXBvbmVudHMgdG8ga2VlcCBkaXNjcmltaW5hbnQKCWxheW91dCBjb25zaXN0ZW50LCB3aGVuIGEgZ2l2ZW4gZGlzY3JpbWluYW50IG9mIHRoZSBkZXJpdmVkIHR5cGUKCWNvbnN0cmFpbnRzIHNldmVyYWwgZGlzY3JpbWluYW50cyBvZiB0aGUgcGFyZW50IHR5cGUuCgoyMDA2LTExLTE3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIGFkYS8yNzkzNgoJKiBhZGEtdHJlZS5oIChERUNMX1JFQURPTkxZX09OQ0VfRUxBQik6IE5ldyBtYWNyby4KCSogZGVjbC5jIChlbGFib3JhdGVfZXhwcmVzc2lvbl8xKTogVGVzdCB0aGUgREVDTF9SRUFET05MWV9PTkNFX0VMQUIKCWZsYWcgaW4gYWRkaXRpb24gdG8gVFJFRV9SRUFET05MWSB0byBhc3NlcnQgdGhlIGNvbnN0YW50bmVzcyBvZgoJdmFyaWFibGVzIGZvciBlbGFib3JhdGlvbiBwdXJwb3Nlcy4KCSogdHJhbnMuYyAoYWRkX2RlY2xfZXhwcik6IERvIG5vdCBkeW5hbWljYWxseSBlbGFib3JhdGUgcGFkZGVkIG9iamVjdHMKCWlmIHRoZSBpbml0aWFsaXplciB0YWtlcyBpbnRvIGFjY291bnQgdGhlIHBhZGRpbmcuCglTZXQgREVDTF9SRUFET05MWV9PTkNFX0VMQUIgZmxhZyBvbiB2YXJpYWJsZXMgb3JpZ2luYWxseSBUUkVFX1JFQURPTkxZCglidXQgd2hvc2UgZWxhYm9yYXRpb24gY2Fubm90IGJlIHBlcmZvcm1lZCBzdGF0aWNhbGx5LgoKMjAwNi0xMC0xNiAgQnJvb2tzIE1vc2VzICA8Ym1vc2VzQHN0YW5mb3JkLmVkdT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgVEVYSTJQREYgZGVmaW5pdGlvbi4KCSogTWFrZS1sYW5nLmluOiBBZGQgImFkYS5wZGYiIHRhcmdldC4KCjIwMDYtMTAtMDMgIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jLCB1dGlscy5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogdXRpbHMuYzogRml4IGEgdHlwby4KCjIwMDYtMDktMjggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPEVfUHJvY2VkdXJlPjogRG8gbm90IHNldCAiY29uc3QiIGZsYWcKCW9uICJwdXJlIiBBZGEgc3VicHJvZ3JhbXMgaWYgU0pMSiBleGNlcHRpb25zIGFyZSB1c2VkLgoJKiB0cmFucy5jIChIYW5kbGVkX1NlcXVlbmNlX09mX1N0YXRlbWVudHNfdG9fZ251KTogU2V0IFRSRUVfTk9fV0FSTklORwoJb24gdGhlIGRlY2xhcmF0aW9uIG5vZGUgb2YgSk1QQlVGX1NBVkUuCgkqIHV0aWxzLmMgKGluaXRfZ2lnaV9kZWNscyk6IFNldCBERUNMX0lTX1BVUkUgb24gdGhlIGRlY2xhcmF0aW9uIG5vZGVzCglvZiBHZXRfSm1wYnVmX0FkZHJlc3NfU29mdCBhbmQgR2V0X0dOQVRfRXhjZXB0aW9uLgoJKiB1dGlsczIuYyAoYnVpbGRfY2FsbF8wX2V4cHIpOiBEbyBub3Qgc2V0IFRSRUVfU0lERV9FRkZFQ1RTLgoKMjAwNi0wOC0yMCAgTGF1cmVudCBHVUVSQlkgIDxsYXVyZW50QGd1ZXJieS5uZXQ+CgoJUFIgYWRhLzI4NzE2CglnLXNvY2tldC5hZGIgKEJpbmRfU29ja2V0KTogQ2FsbCBTZXRfQWRkcmVzcy4KCjIwMDYtMDktMTUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE1ODAyCgkqIGRlY2wuYyAoc2FtZV9kaXNjcmltaW5hbnRfcCk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9SZWNvcmRfVHlwZT46IFdoZW4gdGhlcmUgaXMgYSBwYXJlbnQKCXN1YnR5cGUgYW5kIHdlIGhhdmUgZGlzY3JpbWluYW50cywgZml4IHVwIHRoZSBDT01QT05FTlRfUkVGcwoJZm9yIHRoZSBkaXNjcmltaW5hbnRzIHRvIG1ha2UgdGhlbSByZWZlcmVuY2UgdGhlIGNvcnJlc3BvbmRpbmcKCWZpZWxkcyBvZiB0aGUgcGFyZW50IHN1YnR5cGUgYWZ0ZXIgaXQgaGFzIGJlZW4gYnVpbHQuCgoyMDA2LTA5LTE1ICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCglQUiBhZGEvMTg4MTcKCSogdXRpbHMuYyAobWF4X3NpemUpOiBQZXJmb3JtIGNvbnN0YW50IGZvbGRpbmcgb2YgKEEgPyBCIDogQykgLSBECglpbnRvIEEgPyBCIC0gRCA6IEMgLSBEIHdoZW4gY2FsY3VsYXRpbmcgdGhlIHNpemUgb2YgYSBNSU5VU19FWFBSLgoKMjAwNi0wOS0xMyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMjkwMjUKCSogdHJhbnMuYyAoZ25hdF9naW1wbGlmeV9leHByKSA8QUREUl9FWFBSPjogV2hlbiB0YWtpbmcgdGhlIGFkZHJlc3MKCW9mIGEgU0FWRV9FWFBSLCBqdXN0IG1ha2UgdGhlIG9wZXJhbmQgYWRkcmVzc2FibGUvbm90LXJlYWRvbmx5IGFuZAoJbGV0IHRoZSBjb21tb24gZ2ltcGxpZmllciBjb2RlIG1ha2UgYW5kIHByb3BhZ2F0ZSBhIHRlbXBvcmFyeSBjb3B5LgoJKGNhbGxfdG9fZ251KTogQ2xhcmlmeSB0aGUgdXNlIG9mIFNBVkVfRVhQUiBmb3Igbm90IGFkZHJlc3NhYmxlCglvdXQvaW4tb3V0IGFjdHVhbHMgYW5kIGRlZmVyIHNldHRpbmcgdGhlIGFkZHJlc3NhYmxlL3JlYWRvbmx5IGJpdHMKCXRvIHRoZSBnaW1wbGlmaWVyLgoKMjAwNi0wOS0xMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMjg1OTEKCSogZGVjbC5jIChjb21wb25lbnRzX3RvX3JlY29yZCk6IERlZmVyIGVtaXR0aW5nIGRlYnVnIGluZm8gZm9yIHRoZQoJcmVjb3JkIHR5cGUgYXNzb2NpYXRlZCB3aXRoIHRoZSB2YXJpYW50IHVudGlsIGFmdGVyIHdlIGFyZSBzdXJlIHRvCglhY3R1YWxseSB1c2UgaXQuCgoyMDA2LTA5LTEzICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIGFkYS8yMTk1MgoJKiBnaWdpLmggKGduYXRfaW50ZXJuYWxfYXR0cmlidXRlX3RhYmxlKTogRGVjbGFyZS4KCSogbWlzYy5jIChMQU5HX0hPT0tTX0FUVFJJQlVURV9UQUJMRSk6IERlZmluZSB0byBhYm92ZS4KCSogdXRpbHMuYyAoZ25hdF9pbnRlcm5hbF9hdHRyaWJ1dGVfdGFibGUpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBBbHdheXMgY2FsbCBkZWNsX2F0dHJpYnV0ZXMgb24gdGhlIGJ1aWx0aW4uCgkoaGFuZGxlX2NvbnN0X2F0dHJpYnV0ZSk6IE5ldyBzdGF0aWMgZnVuY3Rpb24uCgkoaGFuZGxlX25vdGhyb3dfYXR0cmlidXRlKTogTGlrZXdpc2UuCgoyMDA2LTA3LTI4ICBWb2xrZXIgUmVpY2hlbHQgIDxyZWljaGVsdEBpZ3BtLnJ3dGgtYWFjaGVuLmRlPgoKCSogTWFrZS1sYW5nLmluOiBVc2UgJChIRUFERVJfSCkgaW5zdGVhZCBvZiBoZWFkZXIuaCBpbiBkZXBlbmRlbmNpZXMuCgoyMDA2LTA2LTIzICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogbWlzYy5jIChnbmF0X3R5cGVfbWF4X3NpemUpOiBMb29rIGF0IFRZUEVfQURBX1NJWkUgaWYgd2UgaGF2ZQoJbm90IGJlZW4gYWJsZSB0byBnZXQgYSBjb25zdGFudCB1cHBlciBib3VuZCBmcm9tIFRZUEVfU0laRV9VTklULgoKMjAwNi0wNi0yMCAgSmFtZXMgQS4gTW9ycmlzb24gIDxwaHl0aG9uQGdjYy5nbnUub3JnPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE4NjkyCgkqIE1ha2UtbGFuZy5pbjogQWRkIGNoZWNrLWduYXQgdG8gbGFuZ19jaGVja3MuICBSZW5hbWUgZXhpc3RpbmcKCWNoZWNrLWduYXQgaW50byBjaGVjay1hY2F0cy4KCjIwMDYtMDYtMTcgIEthcmwgQmVycnkgIDxrYXJsQGdudS5vcmc+CgoJKiBnbmF0LXN0eWxlLnRleGkgKEBkaXJjYXRlZ29yeSk6IFVzZSAiU29mdHdhcmUgZGV2ZWxvcG1lbnQiCglpbnN0ZWFkIG9mICJQcm9ncmFtbWluZyIsIGZvbGxvd2luZyB0aGUgRnJlZSBTb2Z0d2FyZSBEaXJlY3RvcnkuCgoyMDA2LTA2LTEyICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIGFkYS8yNzk0NAoJKiBzLXRhcHJvcC1ocHV4LWRjZS5hZGI6IERlbGV0ZSByZWR1bmRhbnQgJ3dpdGggU3lzdGVtLlBhcmFtZXRlcnMnLgoKMjAwNi0wNi0wNiAgTGF1cmVudCBHVUVSQlkgIDxsYXVyZW50QGd1ZXJieS5uZXQ+CgoJUFIgYWRhLzI3NzY5CgkqIG1saWItdXRsLmFkYjogVXNlIFByb2dyYW1fTmFtZS4KCjIwMDYtMDUtMjggIEthenUgSGlyYXRhICA8a2F6dUBjb2Rlc291cmNlcnkuY29tPgoKCSogZGVjbC5jLCBlbnYuYywgZ2lnaS5oLCBpbml0LmMsIGluaXRpYWxpemUuYywgcmFpc2UtZ2NjLmMsCglzZW1fY2gxMy5hZGIsIHN5c2RlcC5jLCB0YXJndHlwcy5jLCB0Yi1hbHZ4dy5jLCB0cmFjZWJhay5jLAoJdHJhbnMuYywgdXRpbHMuYzogRml4IGNvbW1lbnQgdHlwb3MuICBGb2xsb3cgc3BlbGxpbmcKCWNvbnZlbnRpb25zLgoJKiBnbmF0X3JtLnRleGksIGduYXRfdWduLnRleGksIDogRml4IHR5cG9zLiAgRm9sbG93IHNwZWxsaW5nCgljb252ZW50aW9ucy4KCjIwMDYtMDUtMTkgIE5pY29sYXMgU2V0dG9uICA8c2V0dG9uQGFkYWNvcmUuY29tPgoKCSogbWlzYy5jIChnbmF0X2R3YXJmX25hbWUpOiBOZXcgZnVuY3Rpb24uCgkoTEFOR19IT09LU19EV0FSRl9OQU1FKTogRGVmaW5lIHRvIGl0LgoKMjAwNi0wNS0xNCAgSC5KLiBMdSAgPGhvbmdqaXUubHVAaW50ZWwuY29tPgoKCSogTWFrZS1sYW5nLmluIChhZGEvZGVjbC5vKTogUmVwbGFjZSB0YXJnZXQuaCB3aXRoICQoVEFSR0VUX0gpLgoJKGFkYS9taXNjLm8pOiBMaWtld2lzZS4KCShhZGEvdXRpbHMubyk6IExpa2V3aXNlLgoKMjAwNi0wNC0wOCAgQXVyZWxpZW4gSmFybm8gIDxhdXJlbDMyQGRlYmlhbi5vcmc+CgoJKiBNYWtlZmlsZS5pbjogQWRkIEFkYSBzdXBwb3J0IGZvciBHTlUva0ZyZWVCU0QuCgkqIHMtb3NpbnRlLWtmcmVlYnNkLWdudS5hZHM6IE5ldyBmaWxlLgoKMjAwNi0wMy0yOSAgQ2FybG9zIE8nRG9uZWxsICA8Y2FybG9zQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW46IFJlbmFtZSBkb2NkaXIgdG8gZ2NjX2RvY2Rpci4KCjIwMDYtMDMtMDQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBnaWdpLmggKGdldF9hZGFfYmFzZV90eXBlKTogRGVsZXRlLgoJKiB1dGlsczIuYyAoZ2V0X2FkYV9iYXNlX3R5cGUpOiBMaWtld2lzZS4KCSogdHJhbnMuYyAoY29udmVydF93aXRoX2NoZWNrKTogT3BlcmF0ZSBpbiB0aGUgcmVhbCBiYXNlIHR5cGUuCgoyMDA2LTAzLTAzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdWludHAuYWRiIChOdW1fQml0cyk6IEhhbmRsZSBVaW50X0ludF9GaXJzdCBzcGVjaWFsbHkuCgoyMDA2LTAzLTAyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJpY2hhcmRAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHV0aWxzLmMgKGNyZWF0ZV92YXJfZGVjbCk6IFVzZSBoYXZlX2dsb2JhbF9ic3NfcCB3aGVuIGRlY2lkaW5nCgl3aGV0aGVyIHRvIG1ha2UgdGhlIGRlY2wgY29tbW9uLgoKMjAwNi0wMi0yMCAgUmFmYWVsIMF2aWxhIGRlIEVzcO1uZG9sYSA8cmFmYWVsLmVzcGluZG9sYUBnbWFpbC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEFkYSk6IFJlbW92ZQoJKC5QSE9OWSk6IFJlbW92ZSBBZGEKCjIwMDYtMDItMTcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChGaW5kX0Jvb2xlYW5fVHlwZXMpOiBJZiBvbmUgb2YgdGhlIG9wZXJhbmRzIGlzIGFuCglhZ2dyZWdhdGUsIGNoZWNrIHRoZSBpbnRlcnByZXRhdGlvbnMgb2YgdGhlIG90aGVyIG9wZXJhbmQgdG8gZmluZCBvbmUKCXRoYXQgbWF5IGJlIGEgYm9vbGVhbiBhcnJheS4KCgkoQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBGaXggZmxvdy1vZi1jb250cm9sIHR5cG8gaW4gY2FzZSB3aGVyZQoJdGhlIHByZWZpeCBpcyBhIHByaXZhdGUgZXh0ZW5zaW9uLgoKMjAwNi0wMi0xNyAgRXJpYyBCb3RjYXpvdSAgPGJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIGFkYS8yNjMxNQoJKiB1dGlsczIuYyAoZmluZF9jb21tb25fdHlwZSk6IElmIGJvdGggaW5wdXQgdHlwZXMgYXJlIEJMS21vZGUgYW5kCgloYXZlIHRoZSBzYW1lIGNvbnN0YW50IHNpemUsIGtlZXAgdXNpbmcgdGhlIGZpcnN0IG9uZS4KCgkqIGJpbmRnZW4uYWRiOiAoR2VuX1ZlcnNpb25zX0FkYSk6IFJldmVydCBwcmV2aW91cyB3b3JrYXJvdW5kLgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpOiBPbmx5IGNoZWNrIFRSRUVfT1ZFUkZMT1cgZm9yIGEgY29uc3RhbnQuCgoJKiBtaXNjLmMgKGduYXRfaGFuZGxlX29wdGlvbik6IE5ldyBjYXNlIGZvciAtV292ZXJsZW5ndGgtc3RyaW5ncy4KCjIwMDYtMDItMTcgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBzLXRhcHJvcC1pcml4LmFkYiwgcy10YXByb3AtaHB1eC1kY2UuYWRiLCBzLXRhcHJvcC1saW51eC5hZGIsIAoJcy10YXByb3Atc29sYXJpcy5hZGIsIHMtdGFwcm9wLXZtcy5hZGIsIHMtdGFwcm9wLW1pbmd3LmFkYiwgCglzLXRhcHJvcC1wb3NpeC5hZGIsIHMtdGFwcm9wLXZ4d29ya3MuYWRiLCBzLXRhcHJvcC1seW54b3MuYWRiLCAKCXMtdGFwcm9wLXRydTY0LmFkYiAoU2V0X0ZhbHNlLCBTZXRfVHJ1ZSwgU3VzcGVuZF9VbnRpbF9UcnVlKTogQWRkCglBYm9ydF9EZWZlci9VbmRlZmVyIHBhaXJzIHRvIGF2b2lkIHRoZSBwb3NzaWJpbGl0eSBvZiBhIHRhc2sgYmVpbmcKCWFib3J0ZWQgd2hpbGUgb3duaW5nIGEgbG9jay4KCjIwMDYtMDItMTcgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9BbGxvY2F0b3IpOiBJZiB0aGUgYWxsb2NhdGVkIG9iamVjdCBpcyBhY2Nlc3NlZAoJdGhyb3VnaCBhbiBhY2Nlc3MgdG8gY2xhc3Mtd2lkZSBpbnRlcmZhY2Ugd2UgZm9yY2UgdGhlIGRpc3BsYWNlbWVudCBvZgoJdGhlIHBvaW50ZXIgdG8gdGhlIGFsbG9jYXRlZCBvYmplY3QgdG8gcmVmZXJlbmNlIHRoZSBjb3JyZXNwb25kaW5nCglzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGUuCgkoRXhwYW5kX05fT3BfRGl2aWRlKTogQWxsb3cgNjQgYml0IGRpdmlzaW9ucyBieSBzbWFsbCBwb3dlciBvZiAyLAoJaWYgTG9uZ19TaGlmdHMgYXJlIHN1cHBvcnRlZCBvbiB0aGUgdGFyZ2V0LCBldmVuIGlmIDY0IGJpdCBkaXZpZGVzCglhcmUgbm90IHN1cHBvcnRlZCAoY29uZmlndXJhYmxlIHJ1biB0aW1lIG1vZGUpLgoJKEV4cGFuZF9OX1R5cGVfQ29udmVyc2lvbik6IERvIHZhbGlkaXR5IGNoZWNrIGlmIHZhbGlkaXR5IGNoZWNrcyBvbgoJb3BlcmFuZHMgYXJlIGVuYWJsZWQuCgkoRXhwYW5kX05fUXVhbGlmaWVkX0V4cHJlc3Npb24pOiBEbyB2YWxpZGl0eSBjaGVjayBpZiB2YWxpZGl0eSBjaGVja3MKCW9uIG9wZXJhbmRzIGFyZSBlbmFibGVkLgoKMjAwNi0wMi0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2RidWcuYWRiIChEZWJ1Z19SZW5hbWluZ19EZWNsYXJhdGlvbik6IEluZGljYXRlIHRoYXQgdGhlIGVudGl0eQoJbXVzdCBiZSBtYXRlcmlhbGl6ZWQgd2hlbiB0aGUgcmVuYW1lZCBleHByZXNzaW9uIGlzIGFuIGV4cGxpY2l0CglkZXJlZmVyZW5jZS4KCjIwMDYtMDItMTcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGZyZWV6ZS5hZGIgKFN0YXRpY2FsbHlfRGlzY3JpbWluYXRlZF9Db21wb25lbnRzKTogUmV0dXJuIGZhbHNlIGlmCgl0aGUgYm91bmRzIG9mIHRoZSB0eXBlIG9mIHRoZSBkaXNjcmltaW5hbnQgYXJlIG5vdCBzdGF0aWMgZXhwcmVzc2lvbnMuCgoJKiBzZW1fYWdnci5hZGIgKENoZWNrX1N0YXRpY19EaXNjcmltaW5hdGVkX1N1YnR5cGUpOiBSZXR1cm4gZmFsc2UgaWYKCXRoZSBib3VuZHMgb2YgdGhlIGRpc2NyaW1pbmFudCB0eXBlIGFyZSBub3Qgc3RhdGljLgoKMjAwNi0wMi0xNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnLW9zX2xpYi5hZGIgKENvcHlfRmlsZSk6IE1ha2Ugc3VyZSB0aGF0IGlmIEZyb20gaGFzIGFuIEludmFsaWRfRkQsCgl0aGVuIHdlIGNsb3NlIFRvIGlmIGl0IGlzIHZhbGlkLgoKMjAwNi0wMi0xNyAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhZGFjb3JlLmNvbT4KCgkqIGluaXQuYyAoZmFjaWxpdHlfcmVzaWduYWxfdGFibGUpOiBuZXcgYXJyYXkKCShfX2duYXRfZGVmYXVsdF9yZXNpZ25hbF9wKTogZW5oYW5jZSBkZWZhdWx0IHByZWRpY2F0ZSB0byByZXNpZ25hbCBpZgoJVk1TIGNvbmRpdGlvbiBoYXMgb25lIG9mIHRoZSBwcmVkZWZpbmVkIGZhY2lsaXR5IGNvZGVzLgoKMjAwNi0wMi0xNyAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBVc2UgVk1TNjQgc3BlY2lhbGl6ZWQgdmVyc2lvbnMgb2Ygc2V2ZXJhbCB1bml0cyBpbgoJSW50ZXJmYWNlcy5DIGhpZXJhcmNoeSB0byBiZSBjb21wYXRpYmxlIHdpdGggSFAgQyBkZWZhdWx0IHNpemUgY2hvaWNlcy4KCVVzZSB0aGUgZGVmYXVsdCB2ZXJzaW9uIG9mIEFkYS5TeW5jaHJvbm91c19UYXNrX0NvbnRyb2wgZm9yIFZ4V29ya3MgNjUzLgoKMjAwNi0wMi0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTAuYWRiIChBbmFseXplX1dpdGhfQ2xhdXNlKTogSWYgdGhlIHVuaXQgaXMgYSBzdWJwcm9ncmFtCglpbnN0YW50aWF0aW9uLCB0aGUgY29ycmVzcG9uZGluZyBlbnRpdHkgaXMgdGhlIHJlbGF0ZWRfaW5zdGFuY2Ugb2YgdGhlCgl3cmFwcGVyIHBhY2thZ2UgY3JlYXRlZCBmb3IgdGhlIGluc3RhbmNlLgoKMjAwNi0wMi0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTIuYWRiIChBbmFseXplX1BhY2thZ2VfSW5zdGFudGlhdGlvbik6IElubGluZV9Ob3cgaXMgZmFsc2UgaWYKCXRoZSBjdXJyZW50IGluc3RhbmNlIGlzIG5lc3RlZCB3aXRoaW4gYW5vdGhlciBpbnN0YW5jZSBpbiBhIGNoaWxkIHVuaXQuCgoyMDA2LTAyLTE3ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMy5hZGIgKEJ1aWxkX0Rpc2NyaW1pbmF0ZWRfU3VidHlwZSk6IEluIGNhc2Ugb2YgY29uY3VycmVudAoJdHlwZSB3ZSBjYW5ub3QgaW5oZXJpdCB0aGUgcHJpbWl0aXZlIG9wZXJhdGlvbnM7IHdlIGluaGVyaXQgdGhlCglDb3JyZXNwb25kaW5nX1JlY29yZF9UeXBlICh3aGljaCBoYXMgdGhlIGxpc3Qgb2YgcHJpbWl0aXZlIG9wZXJhdGlvbnMpLgoJKENoZWNrX0Fub255bW91c19BY2Nlc3NfVHlwZXMpOiBXaGVuIGNyZWF0aW5nIGFub255bW91cyBhY2Nlc3MgdHlwZXMgZm9yCglhY2Nlc3MgY29tcG9uZW50cywgdXNlIFJld3JpdGUgaW4gb3JkZXIgdG8gcHJlc2VydmUgdGhlIHRyZWUgc3RydWN0dXJlLAoJZm9yIEFTSVMgdXNlLgoJKEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uKTogRm9yIGxpbWl0ZWQgdHlwZXMgd2l0aCBhY2Nlc3MKCWRpc2NyaW1pbmFudHMgd2l0aCBkZWZhdWx0cyBpbml0aWFsaXplZCBieSBhbiBhZ2dyZWdhdGUsIG9idGFpbgoJc3VidHlwZSBmcm9tIGFnZ3JlZ2F0ZSBhcyBmb3Igb3RoZXIgbXV0YWJsZSB0eXBlcy4KCShEZXJpdmVkX1R5cGVfRGVjbGFyYXRpb24pOiBJZiB0aGUgZGVyaXZlZCB0eXBlIGlzIGEgbGltaXRlZCBpbnRlcmZhY2UsCglzZXQgdGhlIGNvcnJlc3BvbmRpbmcgZmxhZyAoSXNfTGltaXRlZF9SZWNvcmQgaXMgbm90IHN1ZmZpY2llbnQpLgoKMjAwNi0wMi0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNi5hZGIgKEJ1aWxkX0JvZHlfVG9fSW5saW5lKTogRW5mb3JjZSB0aGUgcnVsZSB0aGF0IGluIG9yZGVyCgl0byBpbmxpbmUgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gdW5jb25zdHJhaW5lZCB0eXBlLCB0aGUgcmV0dXJuCglleHByZXNzaW9uIG11c3QgYmUgdGhlIGZpcnN0IHZhcmlhYmxlIGRlY2xhcmVkIGluIHRoZSBib2R5IG9mIHRoZQoJZnVuY3Rpb24uCgoyMDA2LTAyLTE3ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBJbiBjYXNlIG9mIGNvbnZlcnNpb24gdG8gYW4KCWFic3RyYWN0IGludGVyZmFjZSB0eXBlLCB0aGUgc3RhdGljIGFuYWx5c2lzIGlzIG5vdCBlbm91Z2ggdG8ga25vdyBpZgoJdGhlIGludGVyZmFjZSBpcyBpbXBsZW1lbnRlZCBvciBub3QgYnkgdGhlIHNvdXJjZSB0YWdnZWQgdHlwZS4gSGVuY2UKCXdlIG11c3QgcGFzcyB0aGUgd29yayB0byB0aGUgZXhwYW5kZXIgdG8gZ2VuZXJhdGUgdGhlIHJlcXVpcmVkIGNvZGUgdG8KCWV2YWx1YXRlIHRoZSBjb252ZXJzaW9uIGF0IHJ1bi10aW1lLgoJKFJlc29sdmVfRXF1YWxpdHlfT3ApOiBEbyBub3QgYXBwbHkgcHJldmlvdXMKCXRyYW5zZm9ybWF0aW9uIGlmIGV4cGFuc2lvbiBpcyBkaXNhc2JsZWQsIHRvIHByZXZlbnQgYW5vbWFsaWVzIHdoZW4KCWxvY2F0aW5nIGdsb2JhbCByZWZlcmVuY2VzIGluIGEgZ2VuZXJpYyB1bml0LgoKMjAwNi0wMi0xNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBOZXcgc3RhbmRhcmQgbmFtZXMgZm9yIG5ldyBwcm9qZWN0IGF0dHJpYnV0ZXM6CglhcmNoaXZlX2J1aWxkZXIsIGFyY2hpdmVfaW5kZXhlciwgY29tcGlsZXJfcGljX29wdGlvbiwKCWNvbmZpZ19ib2R5X2ZpbGVfbmFtZSwgY29uZmlnX2JvZHlfZmlsZV9uYW1lX3BhdHRlcm4sCgljb25maWdfZmlsZV9zd2l0Y2hlcywgY29uZmlnX2ZpbGVfdW5pcXVlLCBjb25maWdfc3BlY19maWxlX25hbWUsCgljb25maWdfc3BlY19maWxlX25hbWVfcGF0dGVybiwgZGVmYXVsdF9idWlsZGVyX3N3aXRjaGVzLAoJZGVmYXVsdF9nbG9iYWxfY29tcGlsZXJfc3dpdGNoZXMsIGRlZmF1bHRfbGFuZ3VhZ2UsCglkZXBlbmRlbmN5X2ZpbGVfa2luZCwgZ2xvYmFsX2NvbXBpbGVyX3N3aXRjaGVzLCBpbmNsdWRlX3BhdGgsCglpbmNsdWRlX3BhdGhfZmlsZSwgbGFuZ3VhZ2Vfa2luZCwgbGlua2VyX2V4ZWN1dGFibGVfb3B0aW9uLAoJbGlua2VyX2xpYl9kaXJfb3B0aW9uLCBsaW5rZXJfbGliX25hbWVfb3B0aW9uLCBtYXBwaW5nX2ZpbGVfc3dpdGNoZXMsCglyb290cywgcnVudGltZV9wcm9qZWN0LgoKMjAwNi0wMi0xNyAgTWF0dGhldyBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgoJKiBhLWNvbnZlYy5hZHMsIGEtY29udmVjLmFkYjogCgkob3BlcmF0b3IgIiYiKTogaGFuZGxlIHBvdGVudGlhbCBvdmVyZmxvdyBmb3IgbGFyZ2UgaW5kZXggdHlwZXMKCShJbnNlcnQpOiByZW1vdmVkIENvbnRyYWludF9FcnJvciB3aGVuIHVzaW5nIGxhcmdlIGluZGV4IHR5cGVzCgkoSW5zZXJ0X1NwYWNlKTogcmVtb3ZlZCBDb25zdHJhaW50X0Vycm9yIGZvciBsYXJnZSBpbmRleCB0eXBlcwoJKExlbmd0aCk6IG1vdmVkIGNvbnN0cmFpbnQgY2hlY2sgZnJvbSBMZW5ndGggdG8gSW5zZXJ0CgoJKiBhLWNvaW52ZS5hZHMsIGEtY29pbnZlLmFkYjogU3RyZWFtIGF0dHJpYnV0ZSBwcm9jZWR1cmVzIGFyZSBkZWNsYXJlZAoJYXMgbm90IG51bGwgYWNjZXNzLgoJRXhwbGljaXQgcmFpc2Ugc3RhdGVtZW50cyBub3cgaW5jbHVkZSBhbiBleGNlcHRpb24gbWVzc2FnZS4KCShvcGVyYXRvciAiJiIpOiBoYW5kbGUgcG90ZW50aWFsIG92ZXJmbG93IGZvciBsYXJnZSBpbmRleCB0eXBlcwoJKEluc2VydCk6IHJlbW92ZWQgQ29udHJhaW50X0Vycm9yIHdoZW4gdXNpbmcgbGFyZ2UgaW5kZXggdHlwZXMKCShJbnNlcnRfU3BhY2UpOiByZW1vdmVkIENvbnN0cmFpbnRfRXJyb3IgZm9yIGxhcmdlIGluZGV4IHR5cGVzCgkoTGVuZ3RoKTogbW92ZWQgY29uc3RyYWludCBjaGVjayBmcm9tIExlbmd0aCB0byBJbnNlcnQKCjIwMDYtMDItMTcgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcy13Y2hjbnYuYWRiOiBEb2N1bWVudCBoYW5kbGluZyBvZiBbIG9uIG91dHB1dCAod2UgZG8gbm90IGNoYW5nZQoJdGhpcyB0byBbIjVCIl0gYW5kIHRoZSBuZXcgY29tbWVudHMgc2F5IHdoeSBub3QuCgoJKiBnbmF0X3Vnbi50ZXhpOiAKCUFkZCBub3RlIGZvciAtZ25hdFZvIHRoYXQgdGhpcyBub3cgaW5jbHVkZXMgdGhlIGNhc2VzIG9mIHR5cGUKCWNvbnZlcnNpb25zIGFuZCBxdWFsaWZpZWQgZXhwcmVzc2lvbnMuCglBZGQgY29tbWVudHMgb24gaGFuZGxpbmcgb2YgYnJhY2tldHMgZW5jb2RpbmcgZm9yIFRleHRfSU8KCjIwMDYtMDItMTcgIFJhbW9uIEZlcm5hbmRleiAgPGZlcm5hbmRlekBhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cGFuZGVyLmFkYjogRml4IHR5cG8gaW4gY29tbWVudAoKCSogZXhwX3Bha2QuYWRiOiBGaXggdHlwbwoJTWlub3IgY29tbWVudCByZWZvcm1hdHRpbmcuCgoJKiBnLWR5bnRhYi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZXhwX2NoNi5hZGIgKFJlZ2lzdGVyX0ludGVyZmFjZV9EVF9FbnRyeSk6IFRyYXZlcnNlIHRoZSBsaXN0IG9mCglhbGlhc2VkIHN1YnByb2dyYW1zIHRvIGxvb2sgZm9yIHRoZSBhYnN0cmFjdCBpbnRlcmZhY2Ugc3VicHJvZ3JhbS4KCjIwMDYtMDItMTYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBlbnYuYyAoX19nbmF0X3NldGVudik6IFVzZSBzaXplX3QuCgkoX19nbmF0X3Vuc2V0ZW52KTogTGlrZXdpc2UuCgkoX19nbmF0X2NsZWFyZW52KTogTGlrZXdpc2UuCgoyMDA2LTAyLTE2ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBvcHQuYWRzIChBZGFfVmVyc2lvbl9EZWZhdWx0KTogU2V0IHRvIEFkYSAyMDA1IGJ5IGRlZmF1bHQuCgoyMDA2LTAyLTEzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBhLWludG5hbS1vczIuYWRzLCBhLWludG5hbS11bml4d2FyZS5hZHMsIGctc29jY29uLXVuaXh3YXJlLmFkcywKCWctc29saW9wLXVuaXh3YXJlLmFkcywgaS1vczJlcnIuYWRzLCBpLW9zMmxpYi5hZGIsIGktb3MybGliLmFkcywKCWktb3Myc3luLmFkcywgaS1vczJ0aHIuYWRzLCBzLWludG1hbi1pcml4LWF0aHJlYWQuYWRiLAoJcy1vc2ludGUtYWl4LWZzdS5hZHMsIHMtb3NpbnRlLWZzdS5hZGIsIHMtcGFyYW1lLW9zMi5hZGIsCglzLW9zaW50ZS1pcml4LWF0aHJlYWQuYWRzLCBzLW9zaW50ZS1saW51eC1mc3UuYWRzLCBzLW9zaW50ZS1vczIuYWRiLAoJcy1vc2ludGUtb3MyLmFkcywgcy1vc2ludGUtc29sYXJpcy1mc3UuYWRzLCBzLW9zaW50ZS11bml4d2FyZS5hZGIsCglzLW9zaW50ZS11bml4d2FyZS5hZHMsIHMtb3NwcmltLW9zMi5hZGIsIHMtdGFwcm9wLWlyaXgtYXRocmVhZC5hZGIsCglzLXRhcHJvcC1vczIuYWRiLCBzLXRhc2luZi1pcml4LWF0aHJlYWQuYWRiLCBzLXRhc2luZi1pcml4LWF0aHJlYWQuYWRzLAoJcy10YXNwcmktb3MyLmFkcywgc3lzdGVtLW9zMi5hZHMsIHN5c3RlbS11bml4d2FyZS5hZHM6IFJlbW92ZWQsCglubyBsb25nZXIgdXNlZC4KCjIwMDYtMDItMTMgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBhLXRhc3Rlci5hZGIgKEN1cnJlbnRfVGFza19GYWxsYmFja19IYW5kbGVyKTogRG9jdW1lbnQgd2h5IGV4cGxpY2l0Cglwcm90ZWN0aW9uIGFnYWluc3QgcmFjZSBjb25kaXRpb25zIGlzIG5vdCBuZWVkZWQuCgkoU2V0X0RlcGVuZGVudHNfRmFsbGJhY2tfSGFuZGxlcik6IEFkZCBtdXR1YWwgZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUKCWZhbGxiYWNrIGhhbmRsZXIuCgkoU2V0X1NwZWNpZmljX0hhbmRsZXIpOiBBZGQgbXV0dWFsIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIHNwZWNpZmljCgloYW5kbGVyLgoJKFNwZWNpZmljX0hhbmRsZXIpOiBBZGQgbXV0dWFsIGV4Y2x1c2l2ZSBhY2Nlc3MgZm9yIHJldHJpZXZpbmcgdGhlCglzcGVjaWZpYyBoYW5kbGVyLgoKCSogcy10YXJlc3QuYWRiIChUYXNrX1dyYXBwZXIpOiBBZGQgbXV0dWFsIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIGZhbGwKCWJhY2sgaGFuZGxlci4KCgkqIHMtdGFza2luLmFkcyAoQ29tbW9uX0FUQ0IpOiBSZW1vdmUgcHJhZ21hIEF0b21pYyBmb3IKCUZhbGxfQmFja19IYW5kbGVyIGFuZCBTcGVjaWZpY19IYW5kbGVyLgoKCSogcy10YXNzdGEuYWRiIChUYXNrX1dyYXBwZXIpOiBBZGQgbXV0dWFsIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gdGhlIHRhc2sKCXRlcm1pbmF0aW9uIGhhbmRsZXJzLgoJU2V0IHR3byBkaWZmZXJlbnQgb3dlcmZsb3cgZGVwZW5kaW5nIG9uIHRoZSBtYXhpbWFsIHN0YWNrIHNpemUuCgoJKiBzLXNvbGl0YS5hZGIgKFRhc2tfVGVybWluYXRpb25fSGFuZGxlcl9UKTogRG9jdW1lbnQgd2h5IGV4cGxpY2l0Cglwcm90ZWN0aW9uIGFnYWluc3QgcmFjZSBjb25kaXRpb25zIGlzIG5vdCBuZWVkZWQgd2hlbiBleGVjdXRpbmcgdGhlCgl0YXNrIHRlcm1pbmF0aW9uIGhhbmRsZXIuCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtZ2xvbG9jLW1pbmd3LmFkYiwgYS1jZ2Fhc28uYWRzLCBhLXN0em1hcC5hZGIsIGEtc3R6bWFwLmFkYiwKCWEtc3R6bWFwLmFkcywgYS16dGNvaW8uYWRiLCBhLXp0ZWRpdC5hZGIsIGEtenRlZGl0LmFkcywgYS16dGVuYXUuYWRiLAoJYS16dGVuYXUuYWRzLCBhLWNvbGllbi5hZGIsIGEtY29saWVuLmFkcywgYS1jb2xpcmUuYWRiLCBhLWNvbGlyZS5hZHMsCglhLWNvbWxpbi5hZGIsIGEtZGVjaW1hLmFkYiwgYS1kZWNpbWEuYWRzLCBhLWRpcmVpby5hZGIsIGEtZGlyZWlvLmFkYiwKCWEtZGlyZWlvLmFkYiwgYS1kaXJlaW8uYWRzLCBhLW5nY290eS5hZGIsIGEtbmdjb3R5LmFkcywgYS1udWZscmEuYWRiLAoJYS1udWZscmEuYWRzLCBhLXNlcXVpby5hZGIsIGEtc2VxdWlvLmFkcywgYS1zZXF1aW8uYWRzLCBhLXN0b3Jpby5hZHMsCglhLXN0cmVhbS5hZHMsIGEtc3RzdGlvLmFkYiwgYS1zdHN0aW8uYWRiLCBhLXN0c3Rpby5hZHMsIGEtc3RzdGlvLmFkcywKCWEtc3R3aW1hLmFkYiwgYS1zdHdpbWEuYWRiLCBhLXN0d2ltYS5hZHMsIGEtc3R3aXNlLmFkYiwgYS10ZWlvZWQuYWRiLAoJYS10ZWlvZWQuYWRzLCBhLXRpY29hdS5hZGIsIGEtdGljb2F1LmFkcywgYS10aWNvaW8uYWRiLCBhLXRhc2F0dC5hZHMsCglhLXRpZGVhdS5hZGIsIGEtdGlkZWF1LmFkcywgYS10aWRlaW8uYWRiLCBhLXRpZGVpby5hZHMsIGEtdGllbmF1LmFkYiwKCWEtdGllbmF1LmFkcywgYS10aWVuaW8uYWRiLCBhLXRpZW5pby5hZHMsIGEtdGlmaWlvLmFkcywgYS10aWZsYXUuYWRiLAoJYS10aWZsYXUuYWRzLCBhLXRpZmxpby5hZGIsIGEtdGlmbGlvLmFkYiwgYS10aWZsaW8uYWRzLCBhLXRpZ2VhdS5hZHMsCglhLXRpaW5hdS5hZGIsIGEtdGlpbmF1LmFkcywgYS10aWluaW8uYWRiLCBhLXRpaW5pby5hZHMsIGEtdGltb2lvLmFkYiwKCWEtdGltb2lvLmFkcywgYS10aXRlc3QuYWRiLCBhLXRpdGVzdC5hZHMsIGEtd3Rjb2lvLmFkYiwgYS13dGRlYXUuYWRiLAoJYS13dGRlYXUuYWRzLCBhLXd0ZGVpby5hZGIsIGEtd3RkZWlvLmFkcywgYS13dGVkaXQuYWRiLCBhLXd0ZWRpdC5hZGIsCglhLXd0ZWRpdC5hZHMsIGEtd3RlbmF1LmFkYiwgYS13dGVuYXUuYWRzLCBhLXd0ZW5hdS5hZHMsIGEtd3RlbmlvLmFkYiwKCWEtd3RlbmlvLmFkcywgYS13dGZpaW8uYWRiLCBhLXd0Zmlpby5hZHMsIGEtd3RmbGF1LmFkYiwgYS13dGZsYXUuYWRzLAoJYS13dGZsaW8uYWRiLCBhLXd0Zmxpby5hZGIsIGEtd3RmbGlvLmFkcywgYS13dGdlYXUuYWRzLCBhLXd0aW5hdS5hZGIsCglhLXd0aW5hdS5hZHMsIGEtd3RpbmlvLmFkYiwgYS13dGluaW8uYWRzLCBhLXd0bW9hdS5hZGIsIGEtd3Rtb2F1LmFkcywKCWEtd3Rtb2lvLmFkYiwgYS13dG1vaW8uYWRzLCB4cmVmX2xpYi5hZGIsIHhyZWZfbGliLmFkcywgeHJfdGFibHMuYWRiLAoJZy1ib3VidWYuYWRiLCBnLWJvdWJ1Zi5hZHMsIGctY2dpZGViLmFkYiwgZy1pby5hZGIsIGduYXRkbGwuYWRiLAoJZy1wZWhhZ2UuYWRiLCBpLWMuYWRzLCBnLXNwaXRiby5hZGIsIGctc3BpdGJvLmFkcywgbWRsbC5hZGIsCgltbGliLWZpbC5hZGIsIG1saWItdXRsLmFkYiwgbWxpYi11dGwuYWRzLCBwcmotZW52LmFkYiwgcHJqLXRyZWUuYWRiLAoJcHJqLXRyZWUuYWRzLCBwcmotdXRpbC5hZGIsIHMtYXJpdDY0LmFkYiwgcy1hc3RoYW4uYWRzLCBzLWF1eGRlYy5hZGIsCglzLWF1eGRlYy5hZHMsIHMtY2hlcG9vLmFkcywgcy1kaXJlaW8uYWRiLCBzLWRpcmVpby5hZHMsIHMtZXJycmVwLmFkYiwKCXMtZXJycmVwLmFkcywgcy1maWxlaW8uYWRiLCBzLWZpbGVpby5hZHMsIHMtZmlucm9vLmFkYiwgcy1maW5yb28uYWRzLAoJcy1nbG9sb2MuYWRiLCBzLWdsb2xvYy5hZHMsIHMtaW8uYWRiLCBzLWlvLmFkcywgcy1ycGMuYWRiLAoJcy1ycGMuYWRzLCBzLXNoYXN0by5hZHMsIHMtc2VxdWlvLmFkYiwgcy1zdG9wb28uYWRzLCBzLXN0cmF0dC5hZGIsCglzLXN0cmF0dC5hZHMsIHMtdGFhc2RlLmFkYiwgcy10YWFzZGUuYWRzLCBzLXRhZGVydC5hZGIsIHMtc2VxdWlvLmFkcywKCXMtdGFza2luLmFkYiwgcy10YXNxdWUuYWRiLCBzLXRhc3F1ZS5hZHMsIHMtd2NoamlzLmFkcywgbWFrZWdwci5hZGIsCglhLWNvaW52ZS5hZGIsIGEtY2lkbGxpLmFkYiwgZXZhbF9mYXQuYWRiLCBleHBfZGlzdC5hZHMsIGV4cF9zbWVtLmFkYiwKCWZtYXAuYWRiLCBnLWR5bnRhYi5hZHMsIGctZXhwZWN0LmFkYiwgbGliLXhyZWYuYWRzLCBvc2ludC5hZGIsCglwYXItbG9hZC5hZGIsIHJlc3RyaWN0LmFkYiwgc2lucHV0LWMuYWRzLCBhLWNkbGlsaS5hZGIsCglzeXN0ZW0tdm1zLmFkcywgc3lzdGVtLXZtcy16Y3guYWRzLCBzeXN0ZW0tdm1zXzY0LmFkczogTWlub3IKCXJlZm9ybWF0dGluZy4KCjIwMDYtMDItMTMgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBhLXRhc2F0dC5hZGIsIHMtb3NpbnRlLWx5bnhvcy0zLmFkYiwgcy1vc2ludGUtbHlueG9zLmFkYiwKCXMtb3NpbnRlLWFpeC5hZGIsIHMtaW50ZXJyLXNpZ2FjdGlvbi5hZGIsIHMtYXN0aGFuLXZtcy1hbHBoYS5hZGIsCglzLWludGVyci12bXMuYWRiLCBzLWludG1hbi12bXMuYWRiLCBzLWludGVyci12eHdvcmtzLmFkYiwKCXMtaW50bWFuLXZ4d29ya3MuYWRiLCBzLWFzdGhhbi12bXMtYWxwaGEuYWRiLCBhLXp0ZXhpby5hZGIsCglhLXJlYXRpbS5hZGIsIGEtdGFzaWRlLmFkYiwgYS10ZXh0aW8uYWRiLCBhLXdpdGVpby5hZGIsIHByai1hdHRyLmFkYiwKCXMtaW50bWFuLWlyaXguYWRiLCBzLWludG1hbi1zb2xhcmlzLmFkYiwgcy1pbnRtYW4tcG9zaXguYWRiLAoJYS1keW5wcmkuYWRiLCBhLWludGVyci5hZGIsIGctZHluaHRhLmFkYiwgcy1hc3RoYW4uYWRiLCBzLWludGVyci5hZGIsCglzLXBvb2dsby5hZGIsIHMtcG9vbG9jLmFkYiwgcy1wb29zaXouYWRiLCBzLXRhc3Jlbi5hZGIsIHMtdGFzdXRpLmFkYiwKCXMtdGF0YWF0LmFkYiwgcy10cG9ib3AuYWRiOiBSZW1vdmUgcmVkdW5kYW50IHdpdGggY2xhdXNlcy4KCjIwMDYtMDItMTMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtb3NpbnRlLWRhcndpbi5hZGIsIHMtb3NpbnRlLWRhcndpbi5hZHMsIHMtb3NpbnRlLXZ4d29ya3MuYWRzLCAKCXMtb3NpbnRlLXNvbGFyaXMuYWRzLCBzLW9zaW50ZS1saW51eC5hZHMsIHMtb3NpbnRlLWZyZWVic2QuYWRzLCAKCXMtb3NpbnRlLXNvbGFyaXMtcG9zaXguYWRzLCBzLW9zaW50ZS1seW54b3MtMy5hZHMsIHMtb3NpbnRlLWx5bnhvcy5hZHMsIAoJcy1vc2ludGUtdHJ1NjQuYWRzLCBzLW9zaW50ZS1haXguYWRzLCBzLW9zaW50ZS1pcml4LmFkcywgCglzLW9zaW50ZS1ocHV4LWRjZS5hZHMsIHMtb3NpbnRlLWxpbnV4LWhwcGEuYWRzLCAKCXMtb3NpbnRlLWxpbnV4LWFscGhhLmFkcywgcy1pbm1hb3AtcG9zaXguYWRiIChzaWdzZXRfdF9wdHIpOiBSZW1vdmVkLAoJcmVwbGFjZWQgYnkgYW5vbnltb3VzIGFjY2VzcyB0eXBlLgoJKHB0aHJlYWRfc2lnbWFzayk6IE5vdyB0YWtlIGFuIGFjY2VzcyBzaWdzZXRfdAoKCSogcy1vc2ludGUtaHB1eC5hZHM6ICBEaXR0by4KCShwdGhyZWFkX211dGV4X3QsIHB0aHJlYWRfY29uZF90KTogVXBkYXRlIGRlZmluaXRpb25zIHRvIHN1cHBvcnQKCXByb3Blcmx5IDMyIGFuZCA2NCBiaXQgQUJJcy4KCjIwMDYtMDItMTMgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIHMtdGFwcm9wLXBvc2l4LmFkYiwgcy10YXByb3Atdnh3b3Jrcy5hZGIsIHMtdGFwcm9wLXRydTY0LmFkYiwgCglzLXRhcHJvcC1seW54b3MuYWRiLCBzLXRhcHJvcC1pcml4LmFkYiwgcy10YXByb3AtaHB1eC1kY2UuYWRiLCAKCXMtdGFwcm9wLWxpbnV4LmFkYiwgcy10YXByb3Atc29sYXJpcy5hZGIsCglzLXRhcHJvcC12bXMuYWRiIChDcmVhdGVfVGFzayk6IFJlbW92ZSB0YXNrIGFkanVzdG1lbnQgY29kZS4gVGhpcwoJYWRqdXN0ZW1lbnQgaXMgYWxyZWFkeSBkb25lIHdoZW4gY2FsbGluZyB0aGlzIHJvdXRpbmUuCgoyMDA2LTAyLTEzICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBzeXN0ZW0tbWluZ3cuYWRzIChVbmRlcmx5aW5nX1ByaW9yaXRpZXMpOiBVcGRhdGUgdGhlIHByaW9yaXR5IG1hcHBpbmcKCXRhYmxlIHRvIHRha2UgYWR2YW50YWdlIG9mIHRoZSAxNiBwcmlvcml0eSBsZXZlbHMgYXZhaWxhYmxlIG9uIFdpbmRvd3MKCTIwMDAgYW5kIFhQLiBPbiBOVDQgdGhlcmUgYXJlIG9ubHkgNyBwcmlvcml0eSBsZXZlbHMsIHRoaXMgaXMgcHJvcGVybHkKCXN1cHBvcnRlZCBieSB0aGlzIG5ldyBtYXBwaW5nLgoKMjAwNi0wMi0xMyAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiBhZGFkZWNvZGUuaCwgYWRhZGVjb2RlLmM6IChfX2duYXRfZGVjb2RlKTogSW1wcm92ZSBzdXBwb3J0IG9mIHR5cGVzLgoJKGdldF9lbmNvZGluZyk6IE5ldyBzdWJwcm9ncmFtLiBFeHRyYWN0cyB0aGUgZW5jb2RpbmdzIGZyb20gYW4gZW5jb2RlZAoJQWRhIG5hbWUuCgoyMDA2LTAyLTEzICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgkgICAgTmljb2xhcyBSb2NoZSAgPHJvY2hlQGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5oLCBhZGFpbnQuYyAoRElSX1NFUEFSQVRPUik6IFVzZSBfVCgpIG1hY3JvIGZvciBVbmljb2RlCglzdXBwb3J0LgoJKF9fZ25hdF90cnlfbG9jayk6IEFkZCB1bmljb2RlIHN1cHBvcnQgYnkgdXNpbmcgYSBzcGVjaWZpYyBzZWN0aW9uIG9uCglXaW5kb3dzLgoJKF9fZ25hdF9nZXRfY3VycmVudF9kaXIpOiBJZGVtLgoJKF9fZ25hdF9vcGVuX3JlYWQpOiBJZGVtLgoJKF9fZ25hdF9vcGVuX3J3KTogSWRlbS4KCShfX2duYXRfb3Blbl9jcmVhdGUpOiBJZGVtLgoJKF9fZ25hdF9jcmVhdGVfb3V0cHV0X2ZpbGUpOiBJZGVtLgoJKF9fZ25hdF9vcGVuX2FwcGVuZCk6IElkZW0uCgkoX19nbmF0X29wZW5fbmV3KTogSWRlbS4KCShfX2duYXRfZmlsZV90aW1lX25hbWUpOiBJZGVtLgoJKF9fZ25hdF9zZXRfZmlsZV90aW1lX25hbWUpOiBJZGVtLgoJKF9fZ25hdF9zdGF0KTogSWRlbS4KCSh3aW4zMl9ub19ibG9ja19zcGF3bik6IElkZW0uCgkoX19nbmF0X2xvY2F0ZV9leGVjX29uX3BhdGgpOiBJZGVtLgoJKF9fZ25hdF9vcGVuZGlyKTogTmV3IHJvdXRpbmUuCgkoX19nbmF0X2Nsb3NlZGlyKTogSWRlbS4KCShfX2duYXRfcmVhZGRpcik6IEFkZCBuZXcgcGFyYW1ldGVyIGxlbmd0aCAocG9pbnRlciB0byBpbnQpLiBVcGRhdGUKCWltcGxlbWVudGF0aW9uIHRvIHVzZSBpdCBhbmQgYWRkIHNwZWNpZmljIFdpbjMyIGNvZGUgZm9yIFVuaWNvZGUKCXN1cHBvcnQuCgkoX19nbmF0X2dldF9lbnZfdmFsdWVfcHRyKTogUmVtb3ZlLiBSZXBsYWNlZCBieSBfX2duYXRfZ2V0ZW52IGluIGVudi5jCgkoX19nbmF0X3NldF9lbnZfdmFsdWUpOiBSZW1vdmUuIFJlcGxhY2VkIGJ5IF9fZ25hdF9zZXRlbnYgaW4gZW52LmMKCShjb252ZXJ0X2FkZHJlc3Nlcyk6IERvIG5vdCBkZWZpbmUgdGhpcyBkdW1teSByb3V0aW5lIG9uIFZNUy4KCgkqIG1pbmd3MzIuaCAoR05BVF9VTklDT0RFX1NVUFBPUlQpOiBOZXcgZGVmaW5pdGlvbiwgaWYgc2V0IHRoZSBHTkFUCglydW50aW1lIFVuaWNvZGUgc3VwcG9ydCB3aWxsIGJlIGFjdGl2YXRlZC4KCShTMldTKTogU3RyaW5nIHRvIFdpZGUtU3RyaW5nIGNvbnZlcnNpb24uIFRoaXMgdmVyc2lvbiBqdXN0IGNvcHkgYQoJc3RyaW5nIGluIG5vbiBVbmljb2RlIHZlcnNpb24uCgkoV1MyUyk6IFdpZGUtU3RyaW5nIHRvIFN0cmluZyBjb252ZXJzaW9uLiBUaGlzIHZlcnNpb24ganVzdCBjb3B5IGEKCXN0cmluZyBpbiBub24gVW5pY29kZSB2ZXJzaW9uLgoKCSogZy1kaXJvcGUuYWRiOiAoQ2xvc2UpOiBOb3cgaW1wb3J0IF9fZ25hdF9jbG9zZWRpciBmcm9tIGFkYWludC5jLgoJKE9wZW4pOiBOb3cgaW1wb3J0IF9fZ25hdF9vcGVuZGlyIGZyb20gYWRhaW50LmMuCgkoUmVhZCk6IENoYW5nZSB0aGUgaW1wbGVtZW50YXRpb24gdG8gc3VwcG9ydCB1bmljb2RlIGNoYXJhY3RlcnMuIEl0IGlzCglub3QgcG9zc2libGUgdG8gdXNlIHN0cmxlbigpIG9uIFdpbmRvd3MgYXMgdGhpcyB2ZXJzaW9uIHN1cHBvcnRzIG9ubHkKCXN0YW5kYXJkIEFTQ0lJIGNoYXJhY3RlcnMuIFNvIHRoZSBsZW5ndGggb2YgdGhlIGRpcmVjdG9yeSBlbnRyeSBpcyBub3cKCXJldHVybmVkIGZyb20gdGhlIGltcG9ydGVkIF9fZ25hdF9yZWFkZGlyIHJvdXRpbmUuCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCgkqIHMtY3J0bC12bXM2NC5hZHMsIHMtY3J0bC5hZHM6IChjbG9zZWRpcik6IE1vdmVkIHRvIGFkYWludC5jLgoJKG9wZW5kaXIpOiBNb3ZlZCB0byBhZGFpbnQuYy4KCgkqIGctb3NfbGliLmFkYiAoQ29weV9UaW1lX1N0YW1wKTogRml4IG9mZi1ieS1vbmUgcmFuZ2UgY29tcHV0YXRpb24uCgkoR2V0X0RpcmVjdG9yeSk6IEZpeCB3cm9uZyBpbmRleGluZy4KCShHZXRlbnYpOiByZXBsYWNlIF9fZ25hdF9nZXRfZW52X3ZhbHVlX3B0ciBmcm9tIGFkYWludC5jIGJ5CglfX2duYXRfZ2V0ZW52IGZyb20gZW52LmMKCShTZXRlbnYpOiByZXBsYWNlIF9fZ25hdF9zZXRfZW52X3ZhbHVlIGZyb20gYWRhaW50LmMgYnkgX19nbmF0X3NldGVudgoJZnJvbSBlbnYuYwoKCSogZW52LmgsIGVudi5jOiBOZXcgZmlsZS4KCgkqIHMtc2NhdmFsLmFkYiAoSW5pdGlhbGl6ZSk6IFJlcGxhY2UgX19nbmF0X2dldF9lbnZfdmFsdWVfcHRyIGZyb20KCWFkYWludC5jIGJ5IF9fZ25hdF9nZXRlbnYgZnJvbSBlbnYuYwoKCSogcy1zaGFzdG8uYWRiIChJbml0aWFsaXplKTogcmVwbGFjZSBfX2duYXRfZ2V0X2Vudl92YWx1ZV9wdHIgZnJvbQoJYWRhaW50LmMgYnkgX19nbmF0X2dldGVudiBmcm9tIGVudi5jCgoJKiBNYWtlLWxhbmcuaW46IEFkZCBlbnYubyBpbiB0aGUgbGlzdCBvZiBDIG9iamVjdCBuZWVkZWQgYnkgZ25hdDEKCWFuZCBnbmF0YmluZC4KCVVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDA2LTAyLTEzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGFkYS10cmVlLmg6IChUWVBFX1VOQ0hFQ0tFRF9VTklPTl9QKTogRGVsZXRlZC4KCQoJKiBnaWdpLmggKHZhbHVlX2ZhY3Rvcl9wKTogQWRkIHByb3RvdHlwZSBhbmQgZGVzY3JpcHRpb24sIG5vdyBwdWJsaWMuCgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2ZpZWxkKTogRG9uJ3QgYXR0ZW1wdCBCTEttb2RlIHRvIGludGVncmFsIHR5cGUKCXByb21vdGlvbiBmb3IgZmllbGQgd2l0aCByZXAgY2xhdXNlIGlmIHRoZSBhc3NvY2lhdGVkIHNpemUgd2FzIHByb3ZlbgoJdG8gYmUgaW4gZXJyb3IuCglFeHBhbmQgY29tbWVudHMgZGVzY3JpYmluZyBhdHRlbXB0cyB0byB1c2UgYSBwYWNrYWJsZSB0eXBlLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfU2lnbmVkX0ludGVnZXJfU3VidHlwZSwKCUVfRmxvYXRpbmdfUG9pbnRfU3VidHlwZT46IEluaGVyaXQgYWxpYXMgc2V0IG9mIHdoYXQgd2UgYXJlIG1ha2luZyBhCglzdWJ0eXBlIG9mIHRvIGVuc3VyZSBjb25mbGljdHMgYW1vbmdzdCBhbGwgc3VidHlwZXMgaW4gYSBoaWVyYXJjaHksCgluZWNlc3Nhcnkgc2luY2UgdGhlc2UgYXJlIG5vdCBkaWZmZXJlbnQgdHlwZXMgYW5kIHBvaW50ZXJzIG1heQoJYWN0dWFsbHkgZGVzaWduYXRlIGFueSBzdWJ0eXBlIGluIHRoaXMgaGllcmFyY2h5LgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX1JlY29yZF9UeXBlKTogQWx3YXlzIG1ha2UgZmllbGRzIGZvcgoJZGlzY3JpbWluYW50cyBidXQgcHV0IHRoZW0gaW50byByZWNvcmQgb25seSBpZiBub3QgVW5jaGVja2VkX1VuaW9uOwoJcGFzcyBmbGFnIHRvIGNvbXBvbmVudHNfdG9fcmVjb3JkIHNob3dpbmcgVW5jaGVja2VkX1VuaW9uLgoJKG1ha2VfZHVtbXlfdHlwZSk6IFVzZSBVTklPTl9UWVBFIG9ubHkgaWYgVW5jaGVja2VkX1VuaW9uIGFuZCBubwoJY29tcG9uZW50cyBiZWZvcmUgdmFyaWFudHM7IGRvbid0IHNldCBUWVBFX1VOQ0hFQ0tFRF9VTklPTl9QLgoJKGNvbXBvbmVudHNfdG9fcmVjb3JkKTogTmV3IGFyZ3VtZW50IFVOQ0hFQ0tFRF9VTklPTi4KCVJlbW92ZSBzcGVjaWFsIGNhc2UgY29kZSBmb3IgVW5jaGVja2VkX1VuaW9uIGFuZCBpbnN0ZWFkIHVzZSBtYWluIGNvZGUKCXdpdGggc21hbGwgY2hhbmdlcy4KCglQUiBhZGEvMjYwOTYKCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1ZhcmlhYmxlPjogRG8gbm90IGluaXRpYWxpemUgdGhlCglhbGlnbmluZyB2YXJpYWJsZSB3aXRoIHRoZSBleHByZXNzaW9uIGJlaW5nIGJ1aWx0LCBvbmx5IGl0cyBpbm5lcgoJZmllbGQuCgoJKiB0cmFucy5jIChIYW5kbGVkX1NlcXVlbmNlX09mX1N0YXRlbWVudHNfdG9fZ251KTogUmVtb3ZlIGNhbGwgdG8KCWVtaXRfc2VxdWVuY2VfZW50cnlfc3RhdGVtZW50cy4KCShlbWl0X3NlcXVlbmNlX2VudHJ5X3N0YXRlbWVudHMsIGJvZHlfd2l0aF9oYW5kbGVyc19wKTogRGVsZXRlLgoJKGVzdGFibGlzaF9nbmF0X3Ztc19jb25kaXRpb25faGFuZGxlcik6IE1vdmUgYmVmb3JlCglTdWJwcm9ncmFtX0JvZHlfdG9fZ251LgoJKFN1YnByb2dyYW1fQm9keV90b19nbnUpOiBPbiBWTVMsIGVzdGFibGlzaF9nbmF0X3Ztc19jb25kaXRpb25faGFuZGxlcgoJZm9yIGEgc3VicHJvZ3JhbSBpZiBpdCBoYXMgYSBmb3JlaWduIGNvbnZlbnRpb24gb3IgaXMgZXhwb3J0ZWQuCgkoSWRlbnRpZmllcl90b19nbnUpOiBNYW51YWxseSB1bnNoYXJlIHRoZSBERUNMX0lOSVRJQUwgdHJlZSB3aGVuIGl0IGlzCglzdWJzdGl0dXRlZCBmb3IgYSBDT05TVF9ERUNMLgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fQWdncmVnYXRlKTogUmVtb3ZlIGNvZGUgZm9yIFVOSU9OX1RZUEUgYW5kIHBhc3MKCUV0eXBlIHRvIGFzc29jX3RvX2NvbnN0cnVjdG9yLgoJKGFzc29jX3RvX2NvbnN0cnVjdG9yKTogTmV3IGFyZ3VtZW50LCBHTkFUX0VOVElUWTsgdXNlIGl0IHRvIGlnbm9yZQoJZGlzY3JpbWluYW50cyBvZiBVbmNoZWNrZWRfVW5pb24uCgkoVEFSR0VUX0FCSV9PUEVOX1ZNUyk6IERlZmluZSB0byAwIGlmIG5vdCBkZWZpbmVkLCBzbyB0aGF0IGxhdGVyIHVzZXMKCWRvbid0IG5lZWQgY2x1dHRlcmluZyBwcmVwcm9jZXNzb3IgZGlyZWN0aXZlcy4KCShlc3RhYmxpc2hfZ25hdF92bXNfY29uZGl0aW9uX2hhbmRsZXIpOiBOZXcgZnVuY3Rpb24uIEVzdGFibGlzaCB0aGUgR05BVAoJY29uZGl0aW9uIGhhbmRsZXIgYXMgY3VycmVudCBpbiB0aGUgY29tcGlsZWQgZnVuY3Rpb24uCgkoYm9keV93aXRoX2hhbmRsZXJzX3ApOiBOZXcgZnVuY3Rpb24uIFRlbGwgd2hldGhlciBhIGdpdmVuIHNlcXVlbmNlIG9mCglzdGF0ZW1lbnRzIG5vZGUgaXMgYXR0YWNoZWQgdG8gYSBwYWNrYWdlIG9yIHN1YnByb2dyYW0gYm9keSBhbmQgaW52b2x2ZXMKCWV4Y2VwdGlvbiBoYW5kbGVycyBwb3NzaWJseSBuZXN0ZWQgd2l0aGluIGlubmVyIGJsb2NrIHN0YXRlbWVudHMuCgkoZW1pdF9zZXF1ZW5jZV9lbnRyeV9zdGF0ZW1lbnRzKTogTmV3IGZ1bmN0aW9uLCB0byBlbWl0IHNwZWNpYWwKCXN0YXRlbWVudHMgb24gZW50cnkgb2Ygc2VxdWVuY2VzIHdoZW4gbmVjZXNzYXJ5LiBFc3RhYmxpc2ggR05BVAoJY29uZGl0aW9uIGhhbmRsZXIgaW4gdGhlIHByb3BlciBjYXNlcyBmb3IgVk1TLgoJKEhhbmRsZWRfU2VxdWVuY2VfT2ZfU3RhdGVtZW50c190b19nbnUpOiBTdGFydCBibG9jayBjb2RlIHdpdGgKCWVtaXRfc2VxdWVuY2VfZW50cnlfc3RhdGVtZW50cy4KCgkqIHV0aWxzMi5jIChmaW5kX2NvbW1vbl90eXBlKTogSWYgYm90aCBpbnB1dCB0eXBlcyBhcmUgQkxLbW9kZSBhbmQKCWhhdmUgYSBjb25zdGFudCBzaXplLCB1c2UgdGhlIHNtYWxsZXIgb25lLgoJKGJ1aWxkX3NpbXBsZV9jb21wb25lbnRfcmVmKTogQWxzbyBtYXRjaCBpZiBGSUVMRCBhbmQgTkVXX0ZJRUxEIGFyZQoJdGhlIHNhbWUuCgoJKiB1dGlscy5jICh2YWx1ZV9mYWN0b3JfcCk6IE1ha2UgcHVibGljLCB0byBhbGxvdyB1c2VzIGZyb20gb3RoZXIgZ2lnaQoJdW5pdHMuCgkoY3JlYXRlX3R5cGVfZGVjbCk6IERvIG5vdCBzZXQgdGhlIGZsYWcgREVDTF9JR05PUkVEX1AgZm9yIGR1bW15IHR5cGVzLgoJKGNvbnZlcnQsIGNhc2UgVU5JT05fVFlQRSk6IFJlbW92ZSBzcGVjaWFsIHRyZWF0bWVudCBmb3IgdW5jaGVja2VkCgl1bmlvbnMuCgoJUFIgYWRhLzE4NjU5CgkodXBkYXRlX3BvaW50ZXJfdG8pOiBVcGRhdGUgdmFyaWFudHMgb2YgcG9pbnRlciB0eXBlcyB0bwoJdW5jb25zdHJhaW5lZCBhcnJheXMgYnkgYXR0YWNoaW5nIHRoZSBsaXN0IG9mIGZpZWxkcyBvZiB0aGUgbWFpbgoJdmFyaWFudC4KCjIwMDYtMDItMTMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGEtZXhleHByLmFkYiwgYS1leGV4cHItZ2NjLmFkYgoJKFByb2Nlc3NfUmFpc2VfRXhjZXB0aW9uKTogUmVtb3ZlZCwgbWVyZ2VkIHdpdGggUHJvcGFnYXRlX0V4Y2VwdGlvbi4KCShQcm9wYWdhdGVfRXhjZXB0aW9uKTogTm93IHRha2UgZXh0cmEgRnJvbV9TaWduYWxfSGFuZGxlciBwYXJhbWV0ZXIuCglSZW1vdmUgY29kZSB1bnVzZWQgZm9yIGV4Y2VwdGlvbiBwcm9wYWdhdGlvbiBmb3IgdGhlIGNvbXBpbGVyIGl0c2VsZgogCWZyb20gYS1leGNlcHQuYWRiIGFuZCB1cGRhdGUgdG8gc3RpbGwgc2hhcmUgc2VwYXJhdGUgcGFja2FnZXMuCgoJKiBhLWV4Y2VwdC5hZHMsIGEtZXhjZXB0LmFkYjogRGl0dG8uCglBZGQgY29tbWVudHMgdGhhdCB0aGlzIHZlcnNpb24gaXMgbm93IHVzZWQgb25seSBieSB0aGUgY29tcGlsZXIgYW5kCglvdGhlciBiYXNpYyB0b29scy4gVGhlIGZ1bGwgdmVyc2lvbiB0aGF0IGluY2x1ZGVzIHRoZSBBZGEgMjAwNSBzdHVmZgoJaXMgaW4gc2VwYXJhdGUgZmlsZXMgYS1leGNlcHQtMjAwNS5hZHMvYWRiLiBUaGUgcmVhc29uIGlzIHRoYXQgd2UgZG8KCW5vdCB3YW50IHRvIGNhdXNlIGJvb3RzdHJhcCBwcm9ibGVtcyB3aXRoIGNvbXBpbGVycyBub3QgcmVjb2duaXppbmcKCVdpZGVfV2lkZV9TdHJpbmcuCglBZGQgZXhjZXB0aW9uIHJlYXNvbiBjb2RlIFBFX0ltcGxpY2l0X1JldHVybgoJQWRkIG5ldyBleGNlcHRpb24gcmVhc29uIGNvZGUgKE51bGwgRXhjZXB0aW9uX0lkKQoKCSogYS1leGNlcHQtMjAwNS5hZGIsIGEtZXhjZXB0LTIwMDUuYWRzOiBOZXcgZmlsZXMuCgoJKiBzLXdjaGNvbi5hZHM6IChHZXRfV0NfRW5jb2RpbmdfTWV0aG9kKTogTmV3IGZ1bmN0aW9uLgoKCSogcy13Y2hjb24uYWRiOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluIChMSUJHTkFUX1NSQ1MpOiBBZGQgdGItZ2NjLmMuCgkodHJhY2ViYWNrLm8gZGVwcyk6IExpa2V3aXNlLgoJKFNQQVJDL1NvbGFyaXMpOiBBY2NlcHQgc3BhcmNbNjR8djldLXN1bi1zb2xhcmlzLgoJQWN0aXZhdGUgYnVpbGQgb2YgR01FTSBpbnN0cnVtZW50YXRpb24gbGlicmFyeSBvbiBWTVMgdGFyZ2V0cy4KCShnbmF0bGliLXNqbGosIGduYXRsaWItemN4KTogUGFzcyBFSF9NRUNIQU5JU00gdG8gbWFrZSBnbmF0bGliLgoJVXNlIGEtZXhjZXB0LTIwMDUuYWRzL2FkYiBmb3IgYWxsIHJ1bi10aW1lIGxpYnJhcnkgYnVpbGRzIHVubGVzcwoJc3BlY2lmaWVkIG90aGVyd2lzZS4KCVtWTVNdIChMSUJHTkFUX1RBUkdFVF9QQUlSU19BVVgxLDIpOiBSZW5hbWUgcy1wYXJhbWUtdm1zLmFkcyB0bwoJcy1wYXJhbWUtdm1zLWFscGhhLmFkcyBhbmQgYWRkIHMtcGFyYW1lLXZtcy1pYTY0LmFkcy4KCVVzZSBzLXBhcmFtZS5hZGIgb24gYWxsIG5hdGl2ZSBwbGF0Zm9ybXMuCglVc2Ugcy1wYXJhbWUtdnh3b3Jrcy5hZGIgb24gYWxsIHZ4d29ya3MgcGxhdGZvcm1zLgoJQWRkIGVudi5jIGVudi5oIGluIExJQkdOQVRfU1JDUwoJQWRkIGVudi5vIGluIExJQkdOQVRfT0JKUwoJKEdOQVRNQUtFX09CSlMpOiBSZW1vdmUgY3RybF9jLm8gb2JqZWN0LgoJKExJQkdOQVRfVEFSR0VUX1BBSVJTIGZvciB4ODYtdnh3b3Jrcyk6IFVzZSBhbiBzcGVjaWFsaXplZCB2ZXJzaW9uIG9mCglzLW9zaW50ZS5hZGIsIHMtdHBvcHNwLmFkYiwgYW5kIHN5c3RlbS5hZHMgZm9yIHRoZSBydW4gdGltZSB0aGF0CglzdXBwb3J0cyBWeFdvcmtzIDYgUlRQcy4KCShFWFRSQV9HTkFUUlRMX05PTlRBU0tJTkdfT0JKUyBmb3IgeDg2LXZ4d29ya3MpOiBSZW1vdmUgdGhlIHVzZSBvZgoJaS12eHdvcmtzIGFuZCBpLXZ4d29pbyBmcm9tIHRoZSBydW4gdGltZSB0aGF0IHN1cHBvcnRzIFZ4V29ya3MgNiBSVFBzLgoKCSogdHlwZXMuaCwgdHlwZXMuYWRzIChUZXJtaW5hdGVfUHJvZ3JhbSk6IE5ldyBleGNlcHRpb24KCUFkZCBjb21tZW50IG9uIG1vZGlmeWluZyBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBhLWV4Y2VwdC5hZGIgd2hlbiB0aGUKCXRhYmxlIG9mIGV4Y2VwdGlvbiByZWFzb25zIGlzIG1vZGlmaWVkLgoJQWRkIGV4Y2VwdGlvbiByZWFzb24gY29kZSBQRV9JbXBsaWNpdF9SZXR1cm4KCUFkZCBuZXcgZXhjZXB0aW9uIHJlYXNvbiBjb2RlIChOdWxsIEV4Y2VwdGlvbl9JZCkKCgkqIGNsZWFuLmFkYiAoSW5pdGlhbGl6ZSk6IEdldCB0aGUgdGFyZ2V0IHBhcmFtZXRlcnMgYmVmb3JlIGNoZWNraW5nCglpZiB0YXJnZXQgaXMgT3BlblZNUy4gTW92ZSB0aGUgT3BlblZNUyBzcGVjaWZpYyBjb2RlIGhlcmUgZnJvbSBwYWNrYWdlCglib2R5IGVsYWJvcmF0aW9uIGNvZGUuCgoyMDA2LTAyLTEzICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYWxpLXV0aWwuYWRiIChHZXRfRmlsZV9DaGVja3N1bSk6IFVwZGF0ZSB0byBhY2NvdW50IGZvciBjaGFuZ2UgaW4KCXByb2ZpbGUgb2YgSW5pdGlhbGl6ZV9TY2FubmVyLgoKCSogZ3ByZXAuYWRiIChHbmF0cHJlcCk6IFVwZGF0ZSB0byBhY2NvdW50IGZvciBjaGFuZ2UgaW4gcHJvZmlsZSBvZgoJSW5pdGlhbGl6ZV9TY2FubmVyLgoJKFByb2Nlc3NfT25lX0ZpbGUpOiBTYW1lLgoKCSogbGliLmFkYiAoR2V0X0NvZGVfT3JfU291cmNlX1VuaXQpOiBOZXcgc3VicHJvZ3JhbSBmYWN0b3JpbmcgdGhlCgljb21tb24gY29kZSBiZXR3ZWVuIEdldF9Db2RlX1VuaXQgYW5kIEdldF9Tb3VyY2VfVW5pdC4gUmVpbXBsZW1lbnQKCXRoYXQgYmVoYXZpb3VyIHVzaW5nIHRoZSBuZXcgVW5pdCBpbmZvcm1hdGlvbiByZWNvcmRlZCBpbiB0aGUgc291cmNlCglmaWxlcyB0YWJsZSwgcmF0aGVyIHRoYW4gZ29pbmcgdGhyb3VnaCBhbGwgdW5pdHMgZXZlcnkgdGltZS4KCShHZXRfQ29kZV9Vbml0KTogUmVpbXBsZW1lbnQgaW4gdGVybXMgb2YgR2V0X0NvZGVfT3JfU291cmNlX1VuaXQuCgkoR2V0X1NvdXJjZV9Vbml0KTogU2FtZS4KCgkqIHByZXBjb21wLmFkYiAoUGFyc2VfUHJlcHJvY2Vzc2luZ19EYXRhX0ZpbGUpOiBVcGRhdGUgdG8gYWNjb3VudCBmb3IKCWNoYW5nZSBpbiBwcm9maWxlIG9mIEluaXRpYWxpemVfU2Nhbm5lci4KCShQcmVwYXJlX1RvX1ByZXByb2Nlc3MpOiBTYW1lLgoKCSogbGliLmFkczogRml4IHR5cG8gaW4gY29tbWVudCAodGVtcGxhY2UgLT4gdGVtcGxhdGUpLgoKCSogcHJqLXBhcnQuYWRiIChQYXJzZV9TaW5nbGVfUHJvamVjdCk6IFVwZGF0ZSB0byBhY2NvdW50IGZvciBjaGFuZ2UgaW4KCXByb2ZpbGUgb2YgSW5pdGlhbGl6ZV9TY2FubmVyLgoKCSogc2NuLmFkYiAoSW5pdGlhbGl6ZV9TY2FubmVyKTogQWNjb3VudCBmb3IgY2hhbmdlIGluIHByb2ZpbGUgb2YKCVNjbmcuSW5pdGlhbGl6ZV9TY2FubmVyOiBzZXQgQ3VycmVudF9Tb3VyY2VfVW5pdCBpbiBTY24gaW5zdGVhZCBvZiBTY25nLgoJQWxzbyByZWNvcmQgdGhlIGFzc29jaWF0aW9uIG9mIHRoZSBnaXZlbiBTb3VyY2VfRmlsZV9JbmRleCB0byB0aGUKCWNvcnJlc3BvbmRpbmcgVW5pdF9OdW1iZXJfVHlwZS4KCgkqIHNjbmcuYWRzLCBzY25nLmFkYiAoSW5pdGlhbGl6ZV9TY2FubmVyLlNldF9SZXNlcnZlZCk6IFJlbW92ZQoJcHJvY2VkdXJlLgoJKEluaXRpYWxpemVfU2Nhbm5lcik6IENhbGwgU2NhbnMuSW5pdGlhbGl6ZV9BZGFfS2V5d29yZHMuCglSZW1vdmUgVW5pdCBmb3JtYWwgZm9yIGdlbmVyaWMgc2Nhbm5lcjogdGhpcyBmb3JtYWwKCWlzIG9ubHkgcmVsZXZhbnQgdG8gU2NuICh0aGUgc2Nhbm5lciBpbnN0YW5jZSB1c2VkIHRvIHBhcnNlIEFkYSBzb3VyY2UKCWZpbGVzKSwgbm90IHRvIG90aGVyIGluc3RhbmNlcy4gVXBkYXRlIGNvbW1lbnQgYWNjb3JkaW5nbHkuCgkoU2Nhbik6IFVzZSBuZXcgZnVuY3Rpb24gU25hbWVzLklzX0tleXdvcmRfTmFtZS4KCgkqIHNpbmZvLWNuLmFkYjogRml4IHR5cG8gaW4gY29tbWVudC4KCgkqIHNpbnB1dC5hZGIgKFVuaXQsIFNldF9Vbml0KTogQWNjZXNzb3JzIGZvciBuZXcgc291cmNlIGZpbGUgYXR0cmlidXRlCglVbml0LgoKCSogc2lucHV0LmFkcyAoU291cmNlX0ZpbGVfUmVjb3JkKTogTmV3IGNvbXBvbmVudCBVbml0LCB1c2VkIHRvIGNhcHR1cmUKCXRoZSB1bml0IGlkZW50aWZpZXIgKGlmIGFueSkgYXNzb2NpYXRlZCB0byBhIHNvdXJjZSBmaWxlLgoKCSogc2lucHV0LWMuYWRiLCBzaW5wdXQtbC5hZGIgKExvYWRfRmlsZSk6IEluaXRpYWxpemUgbmV3IGNvbXBvbmVudAoJVW5pdCBpbiBTb3VyY2VfRmlsZV9SZWNvcmQuCgoJKiBzaW5wdXQtcC5hZGIgKFNvdXJjZV9GaWxlX0lzX1N1YnVuaXQpOiBVcGRhdGUgdG8gYWNjb3VudCBmb3IgY2hhbmdlCglpbiBwcm9maWxlIG9mIEluaXRpYWxpemVfU2Nhbm5lci4KCgkqIHNjYW5zLmFkYiAoSW5pdGlhbGl6ZV9BZGFfS2V5d29yZHMpOiBOZXcgcHJvY2VkdXJlCgoJKiBzY2Fucy5hZHMgKEluaXRpYWxpemVfQWRhX0tleXdvcmRzKTogTmV3IHByb2NlZHVyZSB0byBpbml0aWFsaXplIHRoZQoJQWRhIGtleXdvcmRzIGluIHRoZSBOYW1ldCB0YWJsZSwgd2l0aG91dCB0aGUgbmVlZCB0byBjYWxsCglJbml0aWFsaXplX1NjYW5uZXIuCgoJKiBzbmFtZXMuYWRiOiBBZGQgcHJhZ21hIEFkYV8yMDA1IChzeW5vbnltIGZvciBBZGFfMDUpCgkoSXNfS2V5d29yZF9OYW1lKTogTmV3IGZ1bmN0aW9uCgoJKiBzbmFtZXMuYWRzOiBBZGQgc3VidHlwZSBDb25maWd1cmF0aW9uX1ByYWdtYV9OYW1lcwoJQWRkIHByYWdtYSBBZGFfMjAwNSAoc3lub255bSBmb3IgQWRhXzA1KQoJKElzX0tleXdvcmRfTmFtZSk6IE5ldyBmdW5jdGlvbgoKCSogc25hbWVzLmg6IEFkZCBwcmFnbWEgQWRhXzIwMDUgKHN5bm9ueW0gZm9yIEFkYV8wNSkKCjIwMDYtMDItMTMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGEtc3R3aXN1LmFkYiwgYS1zdHJzdXAuYWRiLCBhLXN0enN1cC5hZGIgKFN1cGVyX1NsaWNlKTogRml4IHNsaWNlCglpbmRleC4KCgkqIGEtc3R3aW1hLmFkYiAoVG9fU2V0KTogQWRkIGV4dHJhIGNoZWNrIHdoZW4gTiA9IDAuCgoJKiBnLXJlZ3BhdC5hZGI6IChNYXRjaF9TaW1wbGVfT3BlcmF0b3IpOiBBdm9pZCBwb3NzaWJsZSBvdmVyZmxvdy4KCjIwMDYtMDItMTMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtcGFyYW1lLW1pbmd3LmFkYiwgcy1wYXJhbWUtbGludXguYWRiLAoJcy1wYXJhbWUtc29sYXJpcy5hZGI6IFJlbW92ZWQsIHJlcGxhY2VkIGJ5IHMtcGFyYW1lLmFkYgoKCSogcy1wYXJhbWUtdnh3b3Jrcy5hZHM6IEZpeCB0eXBvLgoKCSogcy1wYXJhbWUtdnh3b3Jrcy5hZGI6IE5ldyBmaWxlLgoKCSogcy1wYXJhbWUuYWRiOiBWZXJzaW9uIG5vdyB1c2VkIGJ5IGFsbCBuYXRpdmUgcGxhdGZvcm1zLgoJKERlZmF1bHRfU3RhY2tfU2l6ZSk6IFVzZSAyIG1lZ3MgZm9yIGRlZmF1bHQgc3RhY2sgc2l6ZSBhbmQgdXNlCglfX2dsX2RlZmF1bHRfc3RhY2tfc2l6ZSB3aGVuIGF2YWlsYWJsZS4KCShNaW5pbXVtX1N0YWNrX1NpemUpOiBVc2UgMTJLLgoKCSogcy10YXByb3AtbWluZ3cuYWRiOiBTZXQgZGVmYXVsdCBzdGFjayBzaXplIGxpbmtlciBzd2l0Y2ggdG8gMm1lZ3MuCgkoQ3JlYXRlX1Rhc2spOiBSZWZpbmUgaW1wbGVtZW50YXRpb24gdGFraW5nIGFkdmFudGFnZSBvZiB0aGUgWFAgc3RhY2sKCXNpemUgc3VwcG9ydC4gT24gWFAsIHdlIG5vdyBjcmVhdGUgdGhlIHRocmVhZCB1c2luZyB0aGUgZmxhZwoJU1RBQ0tfU0laRV9QQVJBTV9JU19BX1JFU0VSVkFUSU9OLgoKCSogcy1vc2ludGUtbWluZ3cuYWRzIChTdGFja19TaXplX1BhcmFtX0lzX0FfUmVzZXJ2YXRpb24pOiBOZXcgY29uc3RhbnQuCgoJKiBzeXNkZXAuYyAoX19nbmF0X2lzX3dpbmRvd3NfeHApOiBOZXcgcm91dGluZSwgcmV0dXJucyAxIG9uIFdpbmRvd3MKCVhQIGFuZCAwIG9uIG9sZGVyIFdpbmRvd3MgdmVyc2lvbnMuCgoJKiBpbnRlcmZhYy12bXMuYWRzOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCjIwMDYtMDItMTMgIE1hdHRoZXcgSGVhbmV5ICA8aGVhbmV5QGFkYWNvcmUuY29tPgoKCSogYS1yYnRnc28uYWRiLCBhLWNyYnRnby5hZGIsIGEtY3JidGdrLmFkYiwgYS1jb29yc2UuYWRiLCAKCWEtY29oYW1hLmFkYiwgYS1jaW9yc2UuYWRiLCBhLWNpaGFtYS5hZGIsIGEtY2loYXNlLmFkYiwgCglhLWNvaGFzZS5hZGI6IEFsbCBleHBsaWNpdCByYWlzZSBzdGF0ZW1lbnRzIG5vdyBpbmNsdWRlIGFuIGV4Y2VwdGlvbgoJbWVzc2FnZS4KCgkqIGEtY2lvcm11LmFkcywgYS1jaW9ybXUuYWRiLCBhLWNvb3JtdS5hZHMsIGEtY29vcm11LmFkYgoJKFVwZGF0ZV9FbGVtZW50X1ByZXNlcnZpbmdfS2V5KTogcmVuYW1lZCBvcCB0byBqdXN0IFVwZGF0ZV9FbGVtZW50LgoJRXhwbGljaXQgcmFpc2Ugc3RhdGVtZW50cyBub3cgaW5jbHVkZSBhbiBleGNlcHRpb24gbWVzc2FnZQoKCSogYS1jaWhhc2UuYWRzLCBhLWNvaGFzZS5hZHM6IFJlbW92ZWQgY29tbWVudC4KCgkqIGEtc3Rib2hhLmFkcywgYS1zdGJvaGEuYWRiLCBhLXN0ZmloYS5hZHMsIGEtZW52dmFyLmFkYiwKCWEtZW52dmFyLmFkcywgYS1zd2J3aGEuYWRzLCBhLXN3YndoYS5hZGIsIGEtc3dmd2hhLmFkcywgYS1zemJ6aGEuYWRzLAoJYS1zemJ6aGEuYWRiLCBhLXN6ZnpoYS5hZHM6IE5ldyBmaWxlcy4KCjIwMDYtMDItMTMgIE1hdHRoZXcgSGVhbmV5ICA8aGVhbmV5QGFkYWNvcmUuY29tPgoKCSogYS1jZ2Nhc28uYWRiLCBhLWNnYWFzby5hZGI6IEltcGxlbWVudGVkIHVzaW5nIGhlYXBzb3J0IGluc3RlYWQgb2YKCXF1aWNrc29ydC4KCjIwMDYtMDItMTMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBsYW5nLm9wdDogV3ZhcmlhZGljLW1hY3JvczogTmV3IG9wdGlvbi4KCVdvbGQtc3R5bGUtZGVmaW5pdGlvbjogTGlrZXdpc2UuCglXbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlOiBMaWtld2lzZS4KCgkqIG1pc2MuYyAoZ25hdF9oYW5kbGVfb3B0aW9uKTogTmV3IGNhc2VzIGZvciAtV3ZhcmlhZGljLW1hY3JvcywKCS1Xb2xkLXN0eWxlLWRlZmluaXRpb24gYW5kIC1XbWlzc2luZy1mb3JtYXQtYXR0cmlidXRlLgoKMjAwNi0wMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLXRpY29pby5hZHMsIGEtdGljb2lvLmFkYjogQWRkIHVzZSBjbGF1c2UgKG1vdmVkIGhlcmUgZnJvbSBzcGVjKQoKCSogYS1jb3RlaW8uYWRzLCBhLWxjdGVpby5hZHMsIGEtbGxjdGlvLmFkcywgYS1zY3RlaW8uYWRzOiBOZXcgZmlsZXMuCgoyMDA2LTAyLTEzICBOaWNvbGFzIFJvY2hlICA8cm9jaGVAYWRhY29yZS5jb20+CgoJKiBhLWVudnZhci5hZGIsIGEtZW52dmFyLmFkczogTmV3IGZpbGVzLgoKMjAwNi0wMi0xMyAgRG91Z2xhcyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIHMtcGFyYW1lLXZtcy5hZHM6IFJlbmFtZWQgdG8gcy1wYXJhbWUtdm1zLWFscGhhLmFkcwoKCSogcy1wYXJhbWUtdm1zLWFscGhhLmFkcywgcy1wYXJhbWUtdm1zLWlhNjQuYWRzOiBOZXcgZmlsZXMuCgoyMDA2LTAyLTEzICBQYXQgUm9nZXJzICA8cm9nZXJzQGFkYWNvcmUuY29tPgoKCSogYS1ydHRpZXYuYWRiLCBhLXJ0dGlldi5hZHM6IE5ldyBmaWxlcy4KCjIwMDYtMDItMTMgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBhLXRpYm9pby5hZGIsIGEtdGlib2lvLmFkcywgYS13d2JvaW8uYWRiLAoJYS13d2JvaW8uYWRzLCBhLXp6Ym9pby5hZGIsIGEtenpib2lvLmFkczogIE5ldyBmaWxlcy4KCgkqIGltcHVuaXQuYWRiLCBNYWtlZmlsZS5ydGw6IEFkZGVkIG5ldyBBZGEgMjAwNSB1bml0cy4KCjIwMDYtMDItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcnRzZmluZC5hZGIsIGV4cF9wcmFnLmFkYiwgbGliLXdyaXQuYWRiLCBwYXItbGFibC5hZGIsIAoJc2VtX2Nhc2UuYWRiOiBNaW5vciBjb2RlIHJlb3JnYW5pemF0aW9uIChub3QgUHJlc2VudCBzaG91bGQgYmUgTm8pCgoyMDA2LTAyLTEzICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGEtdGlmaWlvLmFkYiAoUHV0X0RpZ2l0cyk6IFRlc3QgTGFzdCBhZ2FpbnN0IFRvJ0ZpcnN0IC0gMSBpbnN0ZWFkIG9mCgkwLCBzaW5jZSB0aGUgbG93ZXIgYm91bmQgb2YgdGhlIGFjdHVhbCBzdHJpbmcgbWF5IGJlIGdyZWF0ZXIgdGhhbiBvbmUuCgoJUFIgYWRhLzIwNzUzCgkoUHV0KTogRml4IGNvbmRpdGlvbiB0byByYWlzZSBMYXlvdXRfRXJyb3Igd2hlbiBpbnZhbGlkCglsYXlvdXQgaXMgcmVxdWVzdGVkLgoKMjAwNi0wMi0xMyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBiYWNrX2VuZC5hZGIgKFNjYW5fQ29tcGlsZXJfQXJndW1lbnRzKTogQ2hlY2sgaWYKCVNlYXJjaF9EaXJlY3RvcnlfUHJlc2VudCBpcyBUcnVlIGFuZCwgaWYgaXQgaXMsIGFkZCB0aGUgYXJndW1lbnQgaW4KCXRoZSBzb3VyY2Ugc2VhcmNoIGRpcmVjdG9yeSBwYXRoLgoKCSogc3dpdGNoLWMuYWRiIChTY2FuX0Zyb250X0VuZF9Td2l0Y2hlcyk6IEFjY2VwdCBzd2l0Y2ggIi1JIi4gU2V0CglTZWFyY2hfRGlyZWN0b3J5X1ByZXNlbnQgdG8gVHJ1ZS4KCjIwMDYtMDItMTMgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VAYWRhY29yZS5jb20+CgoJKiBiaW5kZ2VuLmFkYiAoR2VuX01haW5fQyk6IGRlY2xhcmUgdGhlIGVuc3VyZV9yZWZlcmVuY2UgdmFyaWFibGUgYXMKCXZvbGF0aWxlLCB0byB0ZWxsIHRoZSBjb21waWxlciB0byBwcmVzZXJ2ZSB0aGlzIHZhcmlhYmxlIGF0IGFueSBsZXZlbAoJb2Ygb3B0aW1pemF0aW9uLgoJKEdlbl9WZXJzaW9uc19BZGEpOiBUZW1wb3JhcmlseSB3b3JrIGFyb3VuZCBjb2RlZ2VuIGJ1Zy4KCjIwMDYtMDItMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZ25hdGxpbmsuYWRiIChQcm9jZXNzX0JpbmRlcl9GaWxlKTogSWYgLXNoYXJlZCBpcyBzcGVjaWZpZWQsIGludm9rZQoJZ2NjIHRvIGxpbmsgd2l0aCBvcHRpb24gLXNoYXJlZC1saWJnY2MuCgkoR25hdGxpbmspOiBSZW1vdmUgZHVwbGljYXRlIHN3aXRjaGVzIC1zaGFyZWQtbGliZ2NjCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGduYXR2c24uYWRzIChDdXJyZW50X1llYXIpOiBOZXcgY29uc3RhbnQsIHVzZWQgdG8gZWFzaWx5IHVwZGF0ZQoJY29weXJpZ2h0IG9uIGFsbCBHTkFUIHRvb2xzLgoKCSogZ25hdGxzLmFkYiwgZ25hdG5hbWUuYWRiLCB2bXNfY29udi5hZGI6IEFkZCAyMDA2IHRvIGRpc3BsYXllZAoJY29weXJpZ2h0IG5vdGljZS4KCjIwMDYtMDItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXJyb3V0Yy5hZHMsIGVycm91dGMuYWRiIChTZXRfTWVzc2FnZV9CbGFuayk6IERvbid0IGluc2VydCBzcGFjZQoJYWZ0ZXIgaHlwaGVuIChzbWFsbCBhZXN0aGV0aWMgY2hhbmdlIHVzZWZ1bCBmb3IgYSByYW5nZSBvZiBudW1iZXJzCgl1c2luZyBeLV4uCglTdXBwcmVzcyByYW5nZSBjaGVja3MgZm9yIGEgY291cGxlIG9mIGFzc2lnbm1lbnRzIHdoaWNoIG90aGVyd2lzZQoJY2F1c2UgdmFsaWRpdHkgY2hlY2tzIHdpdGggdmFsaWRpdHkgY2hlY2tpbmcgdHVybmVkIG9uLgoKCSogc2VtX2NoMTMuYWRiIChBbmFseXplX0F0dHJpYnV0ZV9EZWZpbml0aW9uX0NsYXVzZSwgY2FzZSBTaXplKToKCUltcHJvdmVtZW50IGluIGVycm9yIG1lc3NhZ2UgZm9yIG9iamVjdC4KCShSZXBfSXRlbV9Ub29fTGF0ZSk6IFJlbW92ZSAnIScgaW4gd2FybmluZyBtZXNzYWdlLgoKMjAwNi0wMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGVycl92YXJzLmFkczogU3VwcHJlc3MgcmFuZ2UgY2hlY2tzIGZvciBhIGNvdXBsZSBvZiBhc3NpZ25tZW50cwoJd2hpY2ggb3RoZXJ3aXNlIGNhdXNlIHZhbGlkaXR5IGNoZWNrcyB3aXRoIHZhbGlkaXR5IGNoZWNraW5nIHR1cm5lZCBvbi4KCVVwZGF0ZSBjb21tZW50cy4KCgkqIGVycm91dC5hZGIgKEVycm9yX01zZ19JbnRlcm5hbCk6IERvIG5vdCBzdXBwcmVzcyB3YXJuaW5nIG1lc3NhZ2VzLgoJTWFrZSBtZXNzYWdlIHVuY29uZGl0aW9uYWwgaWYgaXQgaXMgYSB3YXJuaW5nLgoJKEVycm9yX01zZ19ORUwpOiBBbHdheXMgb3V0cHV0IHdhcm5pbmcgbWVzc2FnZXMuCglTdXBwcmVzcyByYW5nZSBjaGVja3MgZm9yIGEgY291cGxlIG9mIGFzc2lnbm1lbnRzIHdoaWNoIG90aGVyd2lzZQoJY2F1c2UgdmFsaWRpdHkgY2hlY2tzIHdpdGggdmFsaWRpdHkgY2hlY2tpbmcgdHVybmVkIG9uLgoKCSogZXJyb3V0LmFkcyAoTWVzc2FnZSBJbnNlcnRpb24gQ2hhcmFjdGVycyk6IERvY3VtZW50IHRoYXQgJyEnIGlzCglpbXBsaWVkIGJ5ICc/JyBpbiBlcnJvciBtZXNzYWdlcy4KCgkqIGduYXQxZHJ2LmFkYjogKEJhZF9Cb2R5KTogUmVtb3ZlICchJyBpbiB3YXJuaW5nIG1lc3NhZ2UuCgkoR25hdDFkcnYpOiBVc2UgYSBnb3RvIHRvIGVuZCBvZiBtYWluIHN1YnByb2dyYW0gaW5zdGVhZCBvZgoJRXhpdF9Qcm9ncmFtIChFX1N1Y2Nlc3MpIHNvIHRoYXQgZmluYWxpemF0aW9uIGNhbiBvY2N1ciBub3JtYWxseS4KCjIwMDYtMDItMTMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBzLXN0Y2hvcC5hZGIgKFN0YWNrX0NoZWNrKTogUmFpc2UgU3RvcmFnZV9FcnJvciBpZiB0aGUgYXJndW1lbnQgaGFzCgl3cmFwcGVkIGFyb3VuZC4KCjIwMDYtMDItMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogYS1kaXJlY3QuYWRiIChEdXJhdGlvbl9Ub19UaW1lLCBPU19UaW1lX1RvX0xvbmdfSW50ZWdlcik6IE5ldwoJVW5jaGVja2VkX0NvbnZlcnNpb24gZnVuY3Rpb25zLgoJKE1vZGlmaWNhdGlvbl9UaW1lKTogVXNlIGRpcmVjdCBjb252ZXJzaW9uIG9mIE9TX1RpbWUgdG8gQ2FsZW5kYXIgdGltZQoJd2hlbiBPcGVuVk1TIHJldHVybnMgRmFsc2UuCgoJKiBhLWRpcnZhbC1taW5ndy5hZGIsIGEtZGlydmFsLXZtcy5hZGIsIGEtZGlydmFsLmFkcywKCWEtZGlydmFsLmFkYiAoT3BlblZNUyk6IE5ldyBCb29sZWFuIGZ1bmN0aW9uCgoyMDA2LTAyLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGNoZWNrcy5hZGIgKEJ1aWxkX0Rpc2NyaW1pbmFudF9DaGVja3MpOiBJZiB0aGUgZXhwcmVzc2lvbiBiZWluZwoJY2hlY2tzIGlzIGFuIGFnZ3JlZ2F0ZSByZXRyaWV2ZSB0aGUgdmFsdWVzIG9mIGl0cyBkaXNjcmltaW5hbnRzIHRvCglnZW5lcmF0ZSB0aGUgY2hlY2ssIHJhdGhlciB0aGFuIGNyZWF0aW5nIGEgdGVtcG9yYXJ5IGFuZCBhIHJlZmVyZW5jZQoJdG8gaXQuCgkoQXBwbHlfQWNjZXNzX0NoZWNrKTogUmV3cml0dGVuIHRvIGhhbmRsZSBuZXcgSXNfS25vd25fTnVsbCBmbGFnCgkoSW5zdGFsbF9OdWxsX0V4Y2x1ZGluZ19DaGVjayk6IERpdHRvCgkoU2VsZWN0ZWRfTGVuZ3RoX0NoZWNrcyk6IEJ1aWxkIGFjdHVhbCBzdWJ0eXBlIGZvciB0aGUgb3JpZ2luYWwgQ2tfTm9kZSwKCW5vdCBmb3IgdGhlIHJlbmFtZWQgb2JqZWN0LCBzbyB0aGF0IHRoZSBhY3R1YWwgaXR5cGUgaXMgYXR0YWNoZWQgaW4gdGhlCglwcm9wZXIgY29udGV4dC4KCjIwMDYtMDItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZGVidWcuYWRiOiBFbGltaW5hdGUgbnVtZXJpYyBzd2l0Y2hlcyBmb3IgYmluZGVyL2duYXRtYWtlCgoJKiBzd2l0Y2gtbS5hZGIgKE5vcm1hbGl6ZV9Db21waWxlcl9Td2l0Y2hlcyk6IFJlY29yZCBudW1lcmljIGRlYnVnCglzd2l0Y2hlcyBmb3IgdGhlIGNvbXBpbGVyLgoJKFNjYW5fTWFrZV9Td2l0Y2hlcyk6IERvIG5vdCBhbGxvdyBudW1lcmljIGRlYnVnIHN3aXRjaGVzIGZvciBnbmF0bWFrZQoJKFNjYW5fTWFrZV9Td2l0Y2hlcyk6IFdoZW4gZmFpbGluZyB3aXRoIGFuIGlsbGVnYWwgc3dpdGNoLCBvdXRwdXQgYW4KCWVycm9yIG1lc3NhZ2Ugd2l0aCB0aGUgZnVsbCBzd2l0Y2guCglFbGltaW5hdGUgbnVtZXJpYyBzd2l0Y2hlcyBmb3IgYmluZGVyL2duYXRtYWtlCgoJKiBzd2l0Y2guYWRzLCBzd2l0Y2guYWRiIChCYWRfU3dpdGNoKTogTmV3IHByb2NlZHVyZQoKCSogc3dpdGNoLWIuYWRiIChTY2FuX0JpbmRlcl9Td2l0Y2hlcyk6IERvIG5vdCBhY2NlcHQgY29tYmluZWQgc3dpdGNoZXMuCglSZW1vdmUgMC05IGFzIGRlYnVnIGZsYWcgY2hhcmFjdGVyIHBvc3NpYmlsaXRpZXMKCS1kIGlzIG5vdyBjb250cm9sbGluZyB0aGUgcHJpbWFyeSBzdGFjayBzaXplIHdoZW4gaXRzIHZhbHVlIGlzIGEKCXBvc2l0aXZlLiBBbHNvIGFkZCBjaGVja3MgYWdhaW5zdCBpbnZhbGlkIHZhbHVlcywgYW5kIHN1cHBvcnQgZm9yIGtiLAoJbWIuIERpdHRvIGZvciAtRCBzd2l0Y2guCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBTZXJndWVpIFJ5YmluICA8cnliaW5AYWRhY29yZS5jb20+CgoJKiBvcHQuYWRzIG9wdC5hZGI6IEFkZCBBZGFfVmVyc2lvbl9FeHBsaWNpdF9Db25maWcgYWxvbmcgd2l0aAoJc2F2ZS9yZXN0b3JlIHJvdXRpbmVzLgoJUHJvcGVybHkgaGFuZGxlIEFkYV9WZXJzaW9uX0V4cGxpY2l0IGFuZCBBZGFfVmVyc2lvbl9Db25maWcsIHdoaWNoCgl3ZXJlIG5vdCBhbHdheXMgcHJvcGVybHkgaGFuZGxlZCBwcmV2aW91c2x5LgoJU2luY2Ugd2UgYXJlIGNoYW5naW5nIHRoZSB0cmVlIGZvcm1hdCBhbnl3YXksIGFsc28gZ2V0IHJpZCBvZiB0aGUKCWp1bmsgb2Jzb2xldGUgSW1tZWRpYXRlX0Vycm9ycyBmbGFnLgoJKFRyZWVfUmVhZCk6IENoYW5nZSB0aGUgd2F5IG9mIHJlYWRpbmcgVHJlZV9WZXJzaW9uX1N0cmluZyAtIG5vdyB3ZQoJcmVhZCB0aGUgdmVyc2lvbiBzdHJpbmcgZnJvbSB0aGUgdHJlZSBldmVuIGlmIGl0cyBsZW5ndGggaXMgbm90IHRoZQoJc2FtZSBhcyB0aGUgbGVuZ3RoIG9mIHRoZSB2ZXJzaW9uIHN0cmluZyBjb21wdXRlZCBmcm9tIEduYXR2c24uCgkoU2VhcmNoX0RpcmVjdG9yeV9QcmVzZW50KTogTmV3IEJvb2xlYW4gZmxhZyBmb3IgdGhlIGNvbXBpbGVyLgoJRGVmaW5lIFRyZWVfVmVyc2lvbl9TdHJpbmcgYXMgYSBkeW5hbWljIHN0cmluZy4KCShEZWZhdWx0X1N0YWNrX1NpemUpOiBuZXcgdmFyaWFibGUsIHVzZWQgdG8gaGFuZGxlIHN3aXRjaCAtZC4KCgkqIHBhci1wcmFnLmFkYjogCglGb3IgcHJhZ21hIEFkYV8yMDA1LCByZW1vdmUgc3R1ZmYgYWJvdXQgc2V0dGluZyBBZGFfVmVyc2lvbl9FeHBsaWNpdAoJb25seSBmb3IgbWFpbiB1bml0LgoJQWRkIHByYWdtYSBBZGFfMjAwNSAoc3lub255bSBmb3IgQWRhXzA1KQoJUHJvcGVybHkgaGFuZGxlIEFkYV9WZXJzaW9uX0V4cGxpY2l0IGFuZCBBZGFfVmVyc2lvbl9Db25maWcsIHdoaWNoCgl3ZXJlIG5vdCBhbHdheXMgcHJvcGVybHkgaGFuZGxlZCBwcmV2aW91c2x5LgoKCSogZGlyZWN0aW8uYWRzLCBpb2V4Y2VwdC5hZHMsIHNlcXVlbmlvLmFkcywgdGV4dF9pby5hZHM6IENoYW5nZQoJZXhwbGljaXQgQWRhXzk1IHRvIEFkYV8yMDA1LgoKMjAwNi0wMi0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGVpbmZvLmFkcywgZWluZm8uYWRiIChGaXJzdF9UYWdfQ29tcG9uZW50KTogUHJvdGVjdCB0aGUgZnJvbnRlbmQKCWFnYWluc3QgZXJyb3JzIGluIHRoZSBzb3VyY2UgcHJvZ3JhbTogYSBwcml2YXRlIHR5cGVzIGZvciB3aGljaCB0aGUKCWNvcnJlc3BvbmRpbmcgZnVsbCB0eXBlIGRlY2xhcmF0aW9uIGlzIG1pc3NpbmcgYW5kIHByYWdtYSBDUFBfVmlydHVhbAoJaXMgdXNlZC4KCShJc19VbmNoZWNrZWRfVW5pb24pOiBDaGVjayBmbGFnIG9uIEltcGxlbWVudGF0aW9uX0Jhc2VfVHlwZS4KCShJc19Lbm93bl9OdWxsKTogTmV3IGZsYWcKCShIYXNfUHJhZ21hX1B1cmUpOiBOZXcgZmxhZwoJKE5vX1JldHVybik6IFByZXNlbnQgaW4gYWxsIGVudGl0aWVzLCBzZXQgb25seSBmb3IgcHJvY2VkdXJlcwoJKElzX0xpbWl0ZWRfVHlwZSk6IEEgdHlwZSB3aG9zZSBhbmNlc3RvciBpcyBhbiBpbnRlcmZhY2UgaXMgbGltaXRlZCBpZgoJZXhwbGljaXRseSBkZWNsYXJlZCBsaW1pdGVkLgoJKERUX09mZnNldF9Ub19Ub3BfRnVuYyk6IE5ldyBhdHRyaWJ1dGUgdGhhdCBpcyBwcmVzZW50IGluIEVfQ29tcG9uZW50CgllbnRpdGllcy4gT25seSB1c2VkIGZvciBjb21wb25lbnQgbWFya2VkIElzX1RhZy4gSWYgcHJlc2VudCBpdCBzdG9yZXMKCXRoZSBPZmZzZXRfVG9fVG9wIGZ1bmN0aW9uIHVzZWQgdG8gcHJvdmlkZSB0aGlzIHZhbHVlIGluIHRhZ2dlZCB0eXBlcwoJd2hvc2UgYW5jZXN0b3IgaGFzIGRpc2NyaW1pbmFudHMuCgoJKiBleHBfY2gyLmFkYjogVXBkYXRlIHN0YXR1cyBvZiBuZXcgSXNfS25vd25fTnVsbCBmbGFnCgoJKiBzZW1fY2g3LmFkYjogTWFpbnRhaW4gc3RhdHVzIG9mIG5ldyBJc19Lbm93bl9OdWxsIGZsYWcKCgkqIHNlbV9jYXQuYWRiIChHZXRfQ2F0ZWdvcml6YXRpb24pOiBEb24ndCB0cmVhdCBmdW5jdGlvbiBhcyBQdXJlIGluCgl0aGUgY2F0ZWdvcml6YXRpb24gc2Vuc2UgaWYgSXNfUHVyZSB3YXMgc2V0IGJ5IHByYWdtYSBQdXJlX0Z1bmN0aW9uLgoKMjAwNi0wMi0xMyAgUXVlbnRpbiBPY2hlbSAgPG9jaGVtQGFkYWNvcmUuY29tPgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBiaW5kdXNnLmFkYjogVXBkYXRlZCBkb2N1bWVudGF0aW9uIGZvciAtZCBhbmQgLUQgc3dpdGNoZXMuCgoJKiByYWlzZS5oIChfX2duYXRfc2V0X2dsb2JhbHMpOiBhZGRlZCBuZXcgcGFyYW1ldGVyIGZvcgoJRGVmYXVsdF9TdGFja19TaXplLgoKCSogaW5pdC5jIChfX2duYXRfYWRqdXN0X2NvbnRleHRfZm9yX3JhaXNlKSA8YWxwaGEtdm1zIGNhc2U+OiBJbXBsZW1lbnQuCgkoX19nbmF0X2hhbmRsZV92bXNfY29uZGl0aW9uKTogQWRqdXN0IGNvbnRleHQgYmVmb3JlIHJhaXNlLgoJKF9fZ25hdF9pbnN0YWxsX2hhbmRsZXIpOiBSZXN0b3JlIHRoZSBnbG9iYWwgdmVjdG9yIHNldHVwIGZvciBHQ0MKCXZlcnNpb25zIGJlZm9yZSAzLjQsIGFzIHRoZSBmcmFtZSBiYXNlZCBjaXJjdHVpdHJ5IGlzIG5vdCBhdmFpbGFibGUKCWluIHRoaXMgY2FzZS4KCShfX2duYXRfc2V0X2dsb2JhbHMpOiBhZGRlZCBhIHBhcmFtZXRlciBkZWZhdWx0X3N0YWNrX3NpemUKCShfX2dsX2RlZmF1bHRfc3RhY2tfc2l6ZSk6IG5ldyB2YXJpYWJsZS4KCjIwMDYtMDItMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoQnVpbGRfQXJyYXlfQWdncl9Db2RlKTogUmVuYW1lIHZhcmlhYmxlCgkiT3RoZXJzX01ib3hfUHJlc2VudCIgdG8gIk90aGVyc19Cb3hfUHJlc2VudCIgYmVjYXVzZSB0aGUgbWJveCBjb25jZXB0Cglkb2VzIG5vdCBleGlzdCBpbiB0aGUgQWRhIFJNLgoJKENvbXBhdGlibGVfSW50X0JvdW5kcyk6IERldGVybWluZSB3aGV0aGVyIHR3byBpbnRlZ2VyIHJhbmdlIGJvdW5kcwoJYXJlIG9mIGVxdWFsIGxlbmd0aCBhbmQgaGF2ZSB0aGUgc2FtZSBzdGFydCBhbmQgZW5kIHZhbHVlcy4KCShJc19JbnRfUmFuZ2VfQm91bmRzKTogRGV0ZXJtaW5lIHdoZXRoZXIgYSBub2RlIGlzIGFuIGludGVnZXIgcmFuZ2UuCgkoQnVpbGRfUmVjb3JkX0FnZ3JfQ29kZSk6IFBlcmZvcm0gcHJvcGVyIHNsaWRpbmcgb2YgYSBuZXN0ZWQgYXJyYXkKCWFnZ3JlZ2F0ZSB3aGVuIGl0IGlzIHBhcnQgb2YgYW4gb2JqZWN0IGRlY2xhcmF0aW9uLgoJKEJ1aWxkX1JlY29yZF9BZ2dyX0NvZGUpICBJZiB0aGUgYWdncmVnYXRlIHR0eXBlIGlzIGEgZGVyaXZlZCB0eXBlIHRoYXQKCWNvbnN0cmFpbnMgZGlzY3JpbWluYW50cyBvZiBpdHMgcGFyZW50LCBhZGQgZXhwbGljaXRseSB0aGUgZGlzY3JpbWluYW50Cgljb25zdHJhaW50cyBvZiB0aGUgYW5jZXN0b3IgYnkgcmV0cmlldmluZyB0aGVtIGZyb20gdGhlCglzdG9yZWRfY29uc3RyYWludCBvZiB0aGUgcGFyZW50LgoKMjAwNi0wMi0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfYXR0ci5hZGIgKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UsIGNhc2UgTWVjaGFuaXNtX0NvZGUpOiBJZgoJYXR0cmlidXRlIE1lY2hhbmlzbV9Db2RlIGlzIGFwcGxpZWQgdG8gcmVuYW1lZCBzdWJwcm9ncmFtLCBtb2RpZnkKCXByZWZpeCB0byBwb2ludCB0byBiYXNlIHN1YnByb2dyYW0uCglNYXgvTWluIGF0dHJpYnV0ZXMgbm93IHZpb2xhdGUgUmVzdHJpY3Rpb24gTm9fSW1wbGljaXRfQ29uZGl0aW9uYWxzCgoJKiBzaW5mby5hZHM6IERvY3VtZW50IHRoYXQgTWVjaGFuaXNtX0NvZGUgY2Fubm90IGJlIGFwcGxpZWQgdG8KCXJlbmFtZWQgc3VicHJvZ3JhbXMgc28gdGhhdCB0aGUgZnJvbnQtZW5kIG11c3QgcmVwbGFjZSB0aGUgcHJlZml4CglhcHByb3ByaWF0ZWx5LgoKMjAwNi0wMi0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDMuYWRiIChDb21wb25lbnRfTmVlZHNfU2ltcGxlX0luaXRpYWxpemF0aW9uKTogQWRkIGNoZWNrIGZvcgoJYXZhaWxhYmlsaXR5IG9mIFJFX0ludGVyZmFjZV9UYWcuCgkoQnVpbGRfSW5pdGlhbGl6YXRpb25fQ2FsbCk6IEZpeCB3cm9uZyBhY2Nlc3MgdG8gdGhlIGRpc2NyaW1pbmFudCB2YWx1ZS4KCShGcmVlemVfUmVjb3JkX1R5cGUpOiBEbyBub3QgZ2VuZXJhdGUgdGhlIHRhYmxlcyBhc3NvY2lhdGVkIHdpdGgKCXRpbWVkIGFuZCBjb25kaXRpb25hbCBkaXNwYXRjaGluZyBjYWxscyB0aHJvdWdoIHN5bmNocm9uaXplZAoJaW50ZXJmYWNlcyBpZiBjb21waWxpbmcgdW5kZXIgTm9fRGlzcGF0Y2hpbmdfQ2FsbHMgcmVzdHJpY3Rpb24uCglXaGVuIGNvbXBpbGluZyBmb3IgQWRhIDIwMDUsIGZvciBhIG5vbmFic3RyYWN0Cgl0eXBlIHdpdGggYSBudWxsIGV4dGVuc2lvbiwgY2FsbCBNYWtlX0NvbnRyb2xsaW5nX0Z1bmN0aW9uX1dyYXBwZXJzCglhbmQgaW5zZXJ0IHRoZSB3cmFwcGVyIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyBhbmQgYm9kaWVzICh0aGUgbGF0dGVyCgliZWluZyBhcHBlbmRlZCBhcyBmcmVlemUgYWN0aW9ucykuCgkoUHJlZGVmaW5lZF9QcmltaXRpdmVfQm9kaWVzKTogRG8gbm90IGdlbmVyYXRlIHRoZSBib2RpZXMgb2YgdGhlCglwcmVkZWZpbmVkIHByaW1pdGl2ZXMgYXNzb2NpYXRlZCB3aXRoIHRpbWVkIGFuZCBjb25kaXRpb25hbAoJZGlzcGF0Y2hpbmcgY2FsbHMgdGhyb3VnaCBzeW5jaHJvbml6ZWQgaW50ZXJmYWNlcyBpZiB3ZSBhcmUKCWNvbXBpbGluZyB1bmRlciBOb19EaXNwYXRjaGluZ19DYWxscy4KCShCdWlsZF9Jbml0X1Byb2NlZHVyZSk6ICBVc2UgUlRFX0F2YWlsYWJsZSB0byBjaGVjayBpZiBhIHJ1bi10aW1lCglzZXJ2aWNlIGlzIGF2YWlsYWJsZSBiZWZvcmUgZ2VuZXJhdGluZyBhIGNhbGwuCgkoTWFrZV9Db250cm9sbGluZ19GdW5jdGlvbl9XcmFwcGVycyk6IE5ldyBwcm9jZWR1cmUuCgkoRXhwYW5kX05fRnVsbF9UeXBlX0RlY2xhcmF0aW9uKTogQ3JlYXRlIGEgY2xhc3Mtd2lkZSBtYXN0ZXIgZm9yCglhY2Nlc3MtdG8tbGltaXRlZC1pbnRlcmZhY2VzIGJlY2F1c2UgdGhleSBjYW4gYmUgdXNlZCB0byByZWZlcmVuY2UKCXRhc2tzIHRoYXQgaW1wbGVtZW50IHN1Y2ggbGltaXRlZCBpbnRlcmZhY2UuCgkoQnVpbGRfT2Zmc2V0X1RvX1RvcF9GdW5jdGlvbnMpOiBCdWlsZCB0aGUgdHJlZSBjb3JyZXNwb25kaW5nIHRvIHRoZQoJcHJvY2VkdXJlIHNwZWMgYW5kIGJvZHkgb2YgdGhlIE9mZnNldF9Ub19Ub3AgZnVuY3Rpb24gdGhhdCBpcyBnZW5lcmF0ZWQKCXdoZW4gdGhlIHBhcmVudCBvZiBhIHR5cGUgd2l0aCBkaXNjcmltaW5hbnRzIGhhcyBzZWNvbmRhcnkgZGlzcGF0Y2gKCXRhYmxlcy4KCShJbml0X1NlY29uZGFyeV9UYWdzKTogSGFuZGxlIHRoZSBjYXNlIGluIHdoaWNoIHRoZSBwYXJlbnQgb2YgdGhlIHR5cGUKCWNvbnRhaW5pbmcgc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlcyBoYXMgZGlzY3JpbWluYW50cyB0byBnZW5lcmF0ZSB0aGUKCWNvcnJlY3QgYXJndW1lbnRzIHRvIGNhbGwgU2V0X09mZnNldF9Ub19Ub3AuCgkoQnVpbGRfUmVjb3JkX0luaXRfUHJvYyk6IEFkZCBjYWxsIHRvIEJ1aWxkX09mZnNldF9Ub19Ub3BfRnVuY3Rpb25zLgoKCSogYS10YWdzLmFkcywgYS10YWdzLmFkYjogKENoZWNrX0luZGV4KTogUmVtb3ZlZC4KCUFkZCBXaWRlX1tXaWRlX11FeHBhbmRlZF9OYW1lLgoJKEdldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcyk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgcHJvdmlkZXMgZXhhY3RseQoJdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSBvZiBHZXRfUHJpbV9PcF9BZGRyZXNzIGJ1dCBhcHBsaWVkIHRvIHByZWRlZmluZWQKCXByaW1pdGl2ZSBvcGVyYXRpb25zIGJlY2F1c2UgdGhlIHBvaW50ZXJzIHRvIHRoZSBwcmVkZWZpbmVkIHByaW1pdGl2ZXMKCWFyZSBub3cgc2F2ZWQgaW4gYSBzZXBhcmF0ZSB0YWJsZS4KCShQYXJlbnRfU2l6ZSk6IE1vZGlmaWVkIHRvIGdldCBhY2Nlc3MgdG8gdGhlIHNlcGFyYXRlIHRhYmxlIG9mIHByaW1pdGl2ZQoJb3BlcmF0aW9ucyBvciB0aGUgcGFyZW50IHR5cGUuCgkoU2V0X1ByZWRlZmluZWRfUHJpbV9PcF9BZGRyZXNzKTogTmV3IHN1YnByb2dyYW0gdGhhdCBwcm92aWRlcyB0aGUgc2FtZQoJZnVuY3Rpb25hbGl0eSBvZiBTZXRfUHJpbV9PcF9BZGRyZXNzIGJ1dCBhcHBsaWVkIHRvIHByZWRlZmluZWQgcHJpbWl0aXZlCglvcGVyYXRpb25zLgoJKFNldF9TaWduYXR1cmUpOiBOZXcgc3VicHJvZ3JhbSB1c2VkIHRvIHN0b3JlIHRoZSBzaWduYXR1cmUgb2YgYSBEVC4KCShEaXNwbGFjZSk6IElmIHRoZSBPZmZzZXRfVG9fVG9wIHZhbHVlIGlzIG5vdCBzdGF0aWMgdGhlbiBjYWxsIHRoZQoJZnVuY3Rpb24gZ2VuZXJhdGVkIGJ5IHRoZSBleHBhbmRlciB0byBnZXQgc3VjaCB2YWx1ZTsgb3RoZXJ3aXNlIHVzZQoJdGhlIHZhbHVlIHN0b3JlZCBpbiB0aGUgdGFibGUgb2YgaW50ZXJmYWNlcy4KCShPZmZzZXRfVG9fVG9wKTogVGhlIHR5cGUgb2YgdGhlIGFjdHVhbCBoYXMgYmVlbiBjaGFuZ2VkIHRvIEFkZHJlc3MgdG8KCWdpdmUgdGhlIGNvcnJlY3Qgc3VwcG9ydCB0byB0YWdnZWQgdHlwZXMgd2l0aCBkaXNjcmltaW5hbnRzLiBJbiB0aGlzCgljYXNlIHRoaXMgdmFsdWUgaXMgc3RvcmVkIGp1c3QgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHRhZyBmaWVsZC4KCShTZXRfT2Zmc2V0X1RvX1RvcCk6IFR3byBuZXcgZm9ybWFscyBoYXZlIGJlZW4gYWRkZWQgdG8gaW5kaWNhdGUgaWYgdGhlCglvZmZzZXRfdG9fdG9wIHZhbHVlIGlzIHN0YXRpYyBhbmQgaGVuY2UgcGFzcyB0aGlzIHZhbHVlIHRvIHRoZSBydW4tdGltZQoJdG8gc3RvcmUgaXQgaW4gdGhlIHRhYmxlIG9mIGludGVyZmFjZXMsIG9yIGVsc2UgaWYgdGhpcyB2YWx1ZSBpcyBkeW5hbWljCglhbmQgdGhlbiBwYXNzIHRvIHRoZSBydW4tdGltZSB0aGUgYWRkcmVzcyBvZiBhIGZ1bmN0aW9uIHRoYXQgaXMKCWdlbmVyYXRlZCBieSB0aGUgZXhwYW5kZXIgdG8gcHJvdmlkZSB0aGlzIHZhbHVlIGZvciBlYWNoIG9iamVjdCBvZiB0aGUKCXR5cGUuCgoJKiBydHNmaW5kLmFkcyAoRGVmYXVsdF9QcmluX09wX0NvdW50KTogUmVtb3ZlZC4KCShEZWZhdWx0X1ByaW1fT3BfQ291bnQpOiBOZXcgZW50aXR5CgkoR2V0X1ByZWRlZmluZWRfUHJpbV9PcF9BZGRyZXNzKTogTmV3IGVudGl0eQoJKFNldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcyk6IE5ldyBlbnRpdHkKCShSRV9TZXRfU2lnbmF0dXJlKTogTmV3IGVudGl0eQoKMjAwNi0wMi0xMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX0FsbG9jYXRvcl9FeHByZXNzaW9uKTogUGFzcyBBbGxvY2F0b3IgPT4gVHJ1ZSB0bwoJTWFrZV9BZGp1c3RfQ2FsbCBkb25lIGZvciBhIG5ld2x5LWFsbG9jYXRlZCBvYmplY3QuCgoJKiBleHBfY2g3LmFkcywgZXhwX2NoNy5hZGIgKEV4cGFuZF9DbGVhbnVwX0FjdGlvbnMpOiBJZiB0aGUgc3RhdGVtZW50cwoJaW4gYSBzdWJwcm9ncmFtIGFyZSB3cmFwcGVkIGluIGEgY2xlYW51cCBibG9jaywgaW5kaWNhdGUgdGhhdCB0aGUKCXN1YnByb2dyYW0gY29udGFpbnMgYW4gaW5uZXIgYmxvY2sgd2l0aCBhbiBleGNlcHRpb24gaGFuZGxlci4KCShNYWtlX0FkanVzdF9DYWxsKTogTmV3IEJvb2xlYW4gZm9ybWFsIEFsbG9jYXRvciBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlCglBZGp1c3QgY2FsbCBpcyBmb3IgYSBuZXdseS1hbGxvY2F0ZWQgb2JqZWN0LiBJbiB0aGF0IGNhc2Ugd2UgbXVzdCBub3QKCWFzc3VtZSB0aGF0IHRoZSBmaW5hbGl6YXRpb24gbGlzdCBjaGFpbiBwb2ludGVycyBhcmUgY29ycmVjdCAoc2luY2UgdGhleQoJY29tZSBmcm9tIGEgYml0LWZvci1iaXQgY29weSBvZiB0aGUgb3JpZ2luYWwgb2JqZWN0J3MgcG9pbnRlcnMpIHNvIGlmCgl0aGUgYXR0YWNoIGxldmVsIHdvdWxkIG90aGVyd2lzZSBiZSB6ZXJvIChubyBjaGFuZ2UpLCB3ZSBzZXQgaXQgdG8gNAoJaW5zdGVhZCB0byBjYXVzZSB0aGUgcG9pbnRlcnMgdG8gYmUgcmVzZXQgdG8gbnVsbC4KCgkqIHMtZmluaW1wLmFkYiAoQXR0YWNoX1RvX0ZpbmFsX0xpc3QpOiBOZXcgYXR0YWNoIGxldmVsOiA0LCBtZWFuaW5nCglyZXNldCBjaGFpbiBwb2ludGVycyB0byBudWxsLgoKMjAwNi0wMi0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9Bc3NpZ25fQXJyYXkpOiBJZiB0aGUgcmlnaHQtaGFuZCBzaWRlIGlzIGEKCXN0cmluZywgYW5kIHRoZSBjb250ZXh0IHJlcXVpcmVzIGEgbG9vcCBmb3IgdGhlIGFzc2lnbm1lbnQgKGUuZy4KCWJlY2F1c2UgdGhlIGxlZnQtaGFuZCBzaWRlIGlzIHBhY2tlZCksIGdlbmVyYXRlIGEgdW5pcXVlIG5hbWUgZm9yIHRoZQoJdGVtcG9yYXJ5IHRoYXQgaG9sZHMgdGhlIHN0cmluZywgdG8gcHJldmVudCBzcHVyaW91cyBuYW1lIGNsYXNoZXMuCgoyMDA2LTAyLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfSW5saW5lZF9DYWxsKTogSGFuZGxlIGNhbGxzIHRvIGZ1bmN0aW9ucyB0aGF0CglyZXR1cm4gdW5jb25zdHJhaW5lZCBhcnJheXMuCglVcGRhdGUgY29tbWVudHMuCgkoRXhwYW5kX0NhbGwpOiAgQW4gaW5kaXJlY3QgY2FsbCB0aHJvdWdoIGFuIGFjY2VzcyBwYXJhbWV0ZXIgb2YgYQoJcHJvdGVjdGVkIG9wZXJhdGlvbiBpcyBub3QgYSBwcm90ZWN0ZWQgY2FsbC4KCUFkZCBjaXJjdWl0IHRvIHJhaXNlIENFIGluIEFkYSAyMDA1IG1vZGUgZm9sbG93aW5nIGNhbGwKCXRvIFJhaXNlX0V4Y2VwdGlvbi4KCShSZWdpc3Rlcl9EVF9FbnRyeSk6IERvIG5vdGhpbmcgaWYKCXRoZSBydW4tdGltZSBkb2VzIG5vdCBnaXZlIHN1cHBvcnQgdG8gYWJzdHJhY3QgaW50ZXJmYWNlcy4KCShGcmVlemVfU3VicHJvZ3JhbSk6IEluIGNhc2Ugb2YgZGlzcGF0Y2hpbmcgb3BlcmF0aW9ucywgZG8gbm90IGdlbmVyYXRlCgljb2RlIHRvIHJlZ2lzdGVyIHRoZSBvcGVyYXRpb24gaW4gdGhlIGRpc3BhdGNoIHRhYmxlIGlmIHRoZSBzb3VyY2UKCWlzIGNvbXBpbGVkIHdpdGggTm9fRGlzcGF0Y2hpbmdfQ2FsbHMuCgkoUmVnaXN0ZXJfUHJlZGVmaW5lZF9EVF9FbnRyeSk6IEdlbmVyYXRlIGNvZGUgdGhhdCBjYWxscyB0aGUgbmV3CglydW4tdGltZSBzdWJwcm9ncmFtIFNldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcyBpbnN0ZWFkIG9mCglTZXRfUHJpbV9PcF9BZGRyZXNzLgoKCSogc2VtX2NoNS5hZGIgKEFuYWx5emVfQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBEbyBub3QgYXBwbHkgbGVuZ3RoIGNoZWNrcwoJb24gYXJyYXkgYXNzaWdubWVudHMgaWYgdGhlIHJpZ2h0LWhhbmQgc2lkZSBpcyBhIGZ1bmN0aW9uIGNhbGwgdGhhdCBoYXMKCWJlZW4gaW5saW5lZC4gQ2hlY2sgaXMgcGVyZm9ybWVkIG9uIHRoZSBhc3NpZ25tZW50IGluIHRoZSBibG9jay4KCShQcm9jZXNzX0JvdW5kcyk6IElmIGJvdW5kcyBhbmQgcmFuZ2UgYXJlIG92ZXJsb2FkZWQsIGFwcGx5IHByZWZlcmVuY2UKCXJ1bGUgZm9yIHJvb3Qgb3BlcmF0aW9ucyB0byBkaXNhbWJpZ3VhdGUsIGFuZCBkaWFnbm9zZSB0cnVlIGFtYmlndWl0eS4KCShBbmFseXplX0Fzc2lnbm1lbnQpOiBQcm9wYWdhdGUgdGhlIHRhZyBmb3IgYSBjbGFzcy13aWRlIGFzc2lnbm1lbnQgd2l0aAoJYSB0YWctaW5kZXRlcm1pbmF0ZSByaWdodC1oYW5kIHNpZGUgZXZlbiB3aGVuIEV4cGFuZGVyX0FjdGl2ZSBpcyBUcnVlLgoJTmVlZGVkIHRvIGVuc3VyZSB0aGF0IGRpc3BhdGNoaW5nIGNhbGxzIHRvIFQnSW5wdXQgYXJlIGFsbG93ZWQgYW5kCglnZXQgdGhlIHRhZyBvZiB0aGUgdGFyZ2V0IGNsYXNzLXdpZGUgb2JqZWN0LgoKCSogc2VtX2NoNi5hZGIgKE5ld19PdmVybG9hZGVkX0VudGl0eSk6IEhhbmRsZSBlbnRpdGllcyB0aGF0IG92ZXJyaWRlCglhbiBpbmhlcml0ZWQgcHJpbWl0aXZlIG9wZXJhdGlvbiB0aGF0IGFscmVhZHkgb3ZlcnJpZGVzIHNldmVyYWwKCWFic3RyYWN0IGludGVyZmFjZSBwcmltaXRpdmVzLiBGb3IgdHJhbnNpdGl2aXR5LCB0aGUgbmV3IGVudGl0eSBtdXN0CglhbHNvIG92ZXJyaWRlIGFsbCB0aGUgYWJzdHJhY3QgaW50ZXJmYWNlIHByaW1pdGl2ZXMgY292ZXJlZCBieSB0aGUKCWluaGVyaXRlZCBvdmVycmlkZW4gcHJpbWl0aXZlLgoJRW1pdCB3YXJuaW5nIGlmIG5ldyBlbnRpdHkgZGlmZmVycyBmcm9tIGhvbW9ncmFwaCBpbiBzYW1lIHNjb3BlIG9ubHkgaW4KCXRoYXQgb25lIGhhcyBhbiBhY2Nlc3MgcGFyYW1ldGVyIGFuZCB0aGUgb3RoZXIgb25lIGhhcyBhIHBhcmFtZXRlciBvZgoJYSBnZW5lcmFsIGFjY2VzcyB0eXBlIHdpdGggdGhlIHNhbWUgZGVzaWduYXRlZCB0eXBlLCBhdCB0aGUgc2FtZQoJcG9zaXRpb24gaW4gdGhlIHNpZ25hdHVyZS4KCShNYWtlX0luZXF1YWxpdHlfT3BlcmF0b3IpOiBVc2Ugc291cmNlIGxvY2F0aW9ucyBvZiBwYXJhbWV0ZXJzIGFuZAoJc3VidHlwZSBtYXJrcyBmcm9tIGNvcnJlc3BvbmRpbmcgZXF1YWxpdHkgb3BlcmF0b3Igd2hlbiBjcmVhdGluZyB0aGUKCXRyZWUgc3RydWN0dXJlIGZvciB0aGUgaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgIi89Ii4gVGhpcyBkb2VzIG5vdAoJY2hhbmdlIGFueXRoaW5nIGluIGJlaGF2aW91ciBleGNlcHQgdGhhdCB0aGUgZGVjb3JhdGlvbiBvZiB0aGUKCWNvbXBvbmVudHMgb2YgdGhlIHN1YnRyZWUgY3JlYXRlZCBmb3IgIi89IiBhbGxvd3MgQVNJUyB0byBnZXQgdGhlCglzdHJpbmcgaW1hZ2VzIG9mIHRoZSBjb3JyZXNwb25kaW5nIGlkZW50aWZpZXJzLgoJKEFuYWx5emVfUmV0dXJuX1N0YXRlbWVudCk6IFJlbW92ZSAnIScgaW4gd2FybmluZyBtZXNzYWdlLgoJKENoZWNrX1N0YXRlbWVudF9TZXF1ZW5jZSk6IExpa2V3aXNlLgoJKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogRm9yIGFuIGFjY2VzcyBwYXJhbWV0ZXIgd2hvc2UgZGVzaWduYXRlZCB0eXBlCglpcyBhbiBpbmNvbXBsZXRlIHR5cGUgaW1wb3J0ZWQgdGhyb3VnaCBhIGxpbWl0ZWRfd2l0aCBjbGF1c2UsIHVzZSB0aGUKCXR5cGUgb2YgdGhlIGNvcnJlc3BvbmRpbmcgZm9ybWFsIGluIHRoZSBib2R5LgoJKENoZWNrX1JldHVybnMpOiBJbXBsaWNpdCByZXR1cm4gaW4gTm9fUmV0dXJuIHByb2NlZHVyZSBub3cgcmFpc2VzCglQcm9ncmFtX0Vycm9yIHdpdGggYSBjb21waWxlIHRpbWUgd2FybmluZywgaW5zdGVhZCBvZiBiZWdpbmcgaWxsZWdhbC4KCShIYXNfU2luZ2xlX1JldHVybik6ICBGdW5jdGlvbiByZXR1cm5pbmcgdW5jb25zdHJhaW5lZCB0eXBlIGNhbm5vdCBiZQoJaW5saW5lZCBpZiBleHByZXNzaW9uIGluIHVuaXF1ZSByZXR1cm4gc3RhdGVtZW50IGlzIG5vdCBhbiBpZGVudGlmaWVyLgoJKEJ1aWxkX0JvZHlfVG9fSW5saW5lKTogSXQgaXMgcG9zc2libGUgdG8gaW5saW5lIGEgZnVuY3Rpb24gY2FsbCB0aGF0CglyZXR1cm5zIGFuIHVuY29uc3RyYWluZWQgdHlwZSBpZiBhbGwgcmV0dXJuIHN0YXRlbWVudHMgaW4gdGhlIGZ1bmN0aW9uCglyZXR1cm4gdGhlIHNhbWUgbG9jYWwgdmFyaWFibGUuIFN1YnNpZGlhcnkgcHJvY2VkdXJlIEhhc19TaW5nbGVfUmV0dXJuCgl2ZXJpZmllcyB0aGF0IHRoZSBib2R5IGNvbmZvcm1zIHRvIHRoaXMgcmVzdHJpY3Rpb24uCgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9FcXVhbGl0eV9PcCk6IElmIHRoZSBvcGVyYW5kcyBkbyBub3QgaGF2ZSB0aGUKCXNhbWUgdHlwZSwgYW5kICBvbmUgb2YgdGhlbSBpcyBvZiBhbiBhbm9ueW1vdXMgYWNjZXNzIHR5cGUsIGNvbnZlcnQKCXRoZSBvdGhlciBvcGVyYW5kIHRvIGl0LCBzbyB0aGF0IHRoaXMgaXMgYSB2YWxpZCBiaW5hcnkgb3BlcmF0aW9uIGZvcgoJZ2lnaS4KCShSZXNvbHZlX1R5cGVfQ29udmVyc2lvbik6IEhhbmRsZSBzdWJ0eXBlcyBvZiBwcm90ZWN0ZWQgdHlwZXMgYW5kCgl0YXNrIHR5cGVzIHdoZW4gYWNjZXNzaW5nIHRvIHRoZSBjb3JyZXNwb25kaW5nIHJlY29yZCB0eXBlLgoJKFJlc29sdmVfQWxsb2NhdG9yKTogQWRkICdcJyBpbiAyLWxpbmUgd2FybmluZyBtZXNzYWdlLgoJUmVtb3ZlICchJyBpbiB3YXJuaW5nIG1lc3NhZ2UuCgkoUmVzb2x2ZV9DYWxsKTogQWRkICdcJyBpbiAyLWxpbmUgd2FybmluZyBtZXNzYWdlLgoJKFZhbGlkX0NvbnZlcnNpb24pOiBMaWtld2lzZS4KCShSZXNvbHZlX092ZXJsb2FkZWRfU2VsZWN0ZWRfQ29tcG9uZW50KTogSWYgZGlzYW1iaWd1YXRpb24gc3VjY2VlZHMsIHRoZQoJcmVzdWx0aW5nIHR5cGUgbWF5IGJlIGFuIGFjY2VzcyB0eXBlIHdpdGggYW4gaW1wbGljaXQgZGVyZWZlcmVuY2UuCglPYnRhaW4gdGhlIHByb3BlciBjb21wb25lbnQgZnJvbSB0aGUgZGVzaWduYXRlZCB0eXBlLgoJKE1ha2VfQ2FsbF9JbnRvX09wZXJhdG9yKTogSGFuZGxlIHByb3Blcmx5IGEgY2FsbCB0byBwcmVkZWZpbmVkIGVxdWFsaXR5CglnaXZlbiBieSBhbiBleHBhbmRlZCBuYW1lIHdpdGggcHJlZml4IFN0YW5kYXJkLCB3aGVuIHRoZSBvcGVyYW5kcyBhcmUKCW9mIGFuIGFub255bW91cyBhY2Nlc3MgdHlwZS4KCShDaGVja19GdWxseV9EZWNsYXJlZF9QcmVmaXgpOiBOZXcgcHJvY2VkdXJlLCBzdWJzaWRpYXJ5IG9mIFJlc29sdmVfCglFeHBsaWNpdF9EZXJlZmVyZW5jZSBhbmQgUmVzb2x2ZV9TZWxlY3RlZF9Db21wb25lbnQsIHRvIHZlcmlmeSB0aGF0IHRoZQoJcHJlZml4IG9mIHRoZSBleHByZXNzaW9uIGlzIG5vdCBvZiBhbiBpbmNvbXBsZXRlIHR5cGUuIEFsbG93cyBmdWxsCglkaWFnbm9zZXMgb2YgYWxsIHNlbWFudGljIGVycm9ycy4KCShSZXNvbHZlX0FjdHVhbHMpOiBJZiB0aGUgYWN0dWFsIGlzIGFuIGFsbG9jYXRvciB3aG9zZSBkaXJlY3RseQoJZGVzaWduYXRlZCB0eXBlIGlzIGEgY2xhc3Mtd2lkZSBpbnRlcmZhY2Ugd2UgYnVpbGQgYW4gYW5vbnltb3VzCglhY2Nlc3MgdHlwZSB0byB1c2UgaXQgYXMgdGhlIHR5cGUgb2YgdGhlIGFsbG9jYXRvci4gTGF0ZXIsIHdoZW4KCXRoZSBzdWJwcm9ncmFtIGNhbGwgaXMgZXhwYW5kZWQsIGlmIHRoZSBpbnRlcmZhY2UgaGFzIGEgc2Vjb25kYXJ5CglkaXNwYXRjaCB0YWJsZSB0aGUgZXhwYW5kZXIgd2lsbCBhZGQgYSB0eXBlIGNvbnZlcnNpb24gdG8gZm9yY2UKCXRoZSBkaXNwbGFjZW1lbnQgb2YgdGhlIHBvaW50ZXIuCgkoUmVzb2x2ZV9DYWxsKTogSWYgYSBmdW5jdGlvbiB0aGF0IHJldHVybnMgYW4gdW5jb25zdHJhaW5lZCB0eXBlIGlzCgltYXJrZWQgSW5saW5lZF9BbHdheXMgYW5kIGlubGluZWQsIHRoZSBjYWxsIHdpbGwgYmUgaW5saW5lZCBhbmQgZG9lcwoJbm90IHJlcXVpcmUgdGhlIGNyZWF0aW9uIG9mIGEgdHJhbnNpZW50IHNjb3BlLgoJKENoZWNrX0RpcmVjdF9Cb29sZWFuX09wKTogUmVtb3ZlZAoJKFJlc29sdmVfQ29tcGFyaXNvbl9PcCk6IFJlbW92ZSBjYWxsIHRvIGFib3ZlCgkoUmVzb2x2ZV9FcXVhbGl0eV9PcCk6IFJlbW92ZSBjYWxsIHRvIGFib3ZlCgkoUmVzb2x2ZV9Mb2dpY2FsX09wKTogSW5saW5lIGFib3ZlLCBzaW5jZSB0aGlzIGlzIG9ubHkgY2FsbC4KCShWYWxpZF9Db252ZXJzaW9uKTogSGFuZGxlIHByb3Blcmx5IGNvbnZlcnNpb25zIGJldHdlZW4gYXJyYXlzIG9mCgljb252ZXJ0aWJsZSBhbm9ueW1vdXMgYWNjZXNzIHR5cGVzLgoKCVBSIGFkYS8yNTg4NQoJKFNldF9MaXRlcmFsX1N0cmluZ19TdWJ0eXBlKTogSWYgdGhlIGxvd2VyIGJvdW5kIGlzIG5vdCBzdGF0aWMsIHdyYXAKCXRoZSBsaXRlcmFsIGluIGFuIHVuY2hlY2tlZCBjb252ZXJzaW9uLCBiZWNhdXNlIEdDQyA0LnggbmVlZHMgYSBzdGF0aWMKCXZhbHVlIGZvciBhIHN0cmluZyBib3VuZC4KCjIwMDYtMDItMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogZXhwX2NoOS5hZGIgKEV4cGFuZF9OX1Byb3RlY3RlZF9UeXBlX0RlY2xhcmF0aW9uKTogV2hlbiBjcmVhdGluZyB0aGUKCWNvbXBvbmVudHMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgcmVjb3JkLCB0YWtlIGludG8gYWNjb3VudCBjb21wb25lbnQKCWRlZmluaXRpb25zIHRoYXQgYXJlIGFjY2VzcyBkZWZpbml0aW9ucy4KCShFeHBhbmRfTl9Bc3luY2hyb25vdXNfU2VsZWN0KTogQSBkZWxheSB1bml0IHN0YXRlbWVudCByZXdyaXR0ZW4gYXMgYQoJcHJvY2VkdXJlIGlzIG5vdCBjb25zaWRlcmVkIGEgZGlzcGF0Y2hpbmcgY2FsbCBhbmQgd2lsbCBiZSBleHBhbmRlZAoJcHJvcGVybHkuCgoyMDA2LTAyLTEzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzcC5hZHMsIGV4cF9kaXNwLmFkYiAoRXhwYW5kX0Rpc3BhdGNoaW5nX0NhbGwpOiBJZiB0aGUKCWNvbnRyb2xsaW5nIGFyZ3VtZW50IG9mIHRoZSBkaXNwYXRjaGluZyBjYWxsIGlzIGFuIGFic3RyYWN0IGludGVyZmFjZQoJY2xhc3Mtd2lkZSB0eXBlIHRoZW4gd2UgdXNlIGl0IGRpcmVjdGx5LgoJQ2hlY2sgTm9fRGlzcGF0Y2hpbmdfQ2FsbHMgcmVzdHJpY3Rpb24uCgkoRGVmYXVsdF9QcmltX09wX1Bvc2l0aW9uKTogUmVtb3ZlIHRoZSBjb2RlIHRoYXQgbG9va3MgZm9yIHRoZSBsYXN0CgllbnRpdHkgaW4gdGhlIGxpc3Qgb2YgYWxpYXNlZCBzdWJwcm9ncmFtcy4gVGhpcyBjb2RlIHdhcyB3cm9uZyBpbgoJY2FzZSBvZiByZW5hbWluZ3MuCgkoRmlsbF9EVF9FbnRyeSk6IEFkZCBhc3NlcnRpb24gdG8gYXZvaWQgdGhlIHVzZSBvZiB0aGlzIHN1YnByb2dyYW0KCXdoZW4gdGhlIHNvdXJjZSBpcyBjb21waWxlZCB3aXRoIHRoZSBOb19EaXNwYXRjaGluZ19DYWxscyByZXN0cmljdGlvbi4KCShJbml0X1ByZWRlZmluZWRfSW50ZXJmYWNlX1ByaW1pdGl2ZXMpOiBObyBuZWVkIHRvIGluaGVyaXQgcHJpbWl0aXZlcwoJaWYgd2UgYXJlIGNvbXBpbGluZyB3aXRoIHJlc3RyaWN0aW9uIE5vX0Rpc3BhdGNoaW5nX0NhbGxzLgoJKE1ha2VfRGlzcF9YWFgpOiBBZGRpdGlvbiBvZiBhc3NlcnRpb24gdG8gYXZvaWQgdGhlIHVzZSBvZiBhbGwgdGhlc2UKCXN1YnByb2dyYW1zIGlmIHdlIGFyZSBjb21waWxpbmcgdW5kZXIgTm9fRGlzcGF0Y2hpbmdfQ2FsbHMgcmVzdHJpY3Rpb24uCgkoTWFrZV9EVCk6IEdlbmVyYXRlIGEgZGlzcGF0Y2ggdGFibGUgd2l0aCBhIHNpbmdsZSBkdW1teSBlbnRyeSBpZgoJd2UgYXJlIGNvbXBpbGluZyB3aXRoIHRoZSBOb19EaXNwYXRjaGluZ19DYWxscyByZXN0cmljdGlvbi4gSW4KCWFkZGl0aW9uLCBpbiB0aGlzIGNhc2Ugd2UgZG9uJ3QgZ2VuZXJhdGUgY29kZSB0aGF0IGNhbGxzIHRvIHRoZQoJZm9sbG93aW5nIHJ1bi10aW1lIHN1YnByb2dyYW1zOiBTZXRfVHlwZV9LaW5kLCBJbmhlcml0X0RULgoJKE1ha2VfU2VsZWN0X1NwZWNpZmljX0RhdGFfVGFibGUpOiBBZGQgYXNzZXJ0aW9uIHRvIGF2b2lkIHRoZSB1c2UKCW9mIHRoaXMgc3VicHJvZ3JhbSBpZiBjb21waWxpbmcgd2l0aCB0aGUgTm9fRGlzcGF0Y2hpbmdfQ2FsbHMKCXJlc3RyaWN0aW9uLgoJKEV4cGFuZF9UeXBlX0NvbnZlcnNpb24pOiBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBhY3R1YWwgcGFyYW1ldGVyLAoJdGhlIGFyZ3VtZW50IHBhc3NlZCBhcyBwYXJhbWV0ZXIgdG8gdGhlIGNvbnZlcnNpb24gZnVuY3Rpb24gd2FzCgllcnJvbmVvdXNseSByZWZlcmVuY2VkIGJ5IHRoZSBleHBhbmRlci4KCShBZGFfQWN0aW9ucyk6IEFkZGl0aW9uIG9mIEdldF9QcmVkZWZpbmVkX1ByaW1fT3BfQWRkcmVzcywKCVNldF9QcmVkZWZpbmVkX1ByaW1pdGl2ZV9PcF9BZGRyZXNzIGFuZCBTZXRfU2lnbmF0dXJlLgoJKEV4cGFuZF9EaXNwYXRjaGluZ19DYWxsKTogR2VuZXJhdGUgY2FsbCB0bwoJR2V0X1ByZWRlZmluZWRfUHJpbV9PcF9BZGRyZXNzIGZvciBwcmVkZWZpbmVkIHByaW1pdGl2ZXMuCgkoRmlsbF9EVF9FbnRyeSk6IEdlbmVyYXRlIGNhbGwgdG8gU2V0X1ByZWRlZmluZWRfUHJpbV9PcF9BZGRyZXNzIGZvcgoJcHJlZGVmaW5lZCBwcmltaXRpdmVzLgoJKE1ha2VfRFQsIE1ha2VfU2Vjb25kYXJ5X0RUKTogSWYgdGhlIHRhZ2dlZCB0eXBlIGhhcyBubyB1c2VyIGRlZmluZWQKCXByaW1pdGl2ZXMgd2UgcmVzZXJ2ZSBvbmUgZHVtbXkgZW50cnkgdG8gZW5zdXJlIHRoYXQgdGhlIHRhZyBkb2VzIG5vdAoJcG9pbnQgdG8gc29tZSBtZW1vcnkgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggc29tZSBvdGhlciBvYmplY3QuIEluCglhZGRpdGlvbiwgcmVtb3ZlIGFsbCB0aGUgb2xkIGNvZGUgdGhhdCBnZW5lcmF0ZWQgdGhlIGFzc2lnbm1lbnRzCglhc3NvY2lhdGVkIHdpdGggdGhlIHNpZ25hdHVyZSBvZiB0aGUgZGlzcGF0Y2ggdGFibGUgYW5kIHJlcGxhY2UgdGhlbQoJYnkgYSBjYWxsIHRvIHRoZSBuZXcgc3VicHJvZ3JhbSBTZXRfU2lnbmF0dXJlLgoJKFNldF9BbGxfRFRfUG9zaXRpb24pOiBDaGFuZ2UgdGhlIGFsZ29yaXRobSBiZWNhdXNlIG5vdyB3ZSBoYXZlIGEKCXNlcGFyYXRlIGRpc3BhdGNoIHRhYmxlIGFzc29jaWF0ZWQgd2l0aCBwcmVkZWZpbmVkIHByaW1pdGl2ZSBvcGVyYXRpb25zLgoJKEV4cGFuZF9JbnRlcmZhY2VfQ29udmVyc2lvbik6IEluIGNhc2Ugb2Ygbm9uLXN0YXRpYyBvZmZzZXRfdG9fdG9wCglhZGQgZXhwbGljaXQgZGVyZWZlcmVuY2UgdG8gZ2V0IGFjY2VzcyB0byB0aGUgb2JqZWN0IGFmdGVyIHRoZSBjYWxsCgl0byBkaXNwbGFjZSB0aGUgcG9pbnRlciB0byB0aGUgb2JqZWN0LgoJKEV4cGFuZF9JbnRlcmZhY2VfVGh1bmspOiBNb2RpZnkgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGFjdHVhbCB1c2VkCglpbiB0aGUgY2FsbHMgdG8gdGhlIHJ1bi10aW1lIGZ1bmN0aW9uIE9mZnNldF9Ub19Ub3AgdG8gZnVsZmlsIGl0cwoJbmV3IGludGVyZmFjZS4KCShNYWtlX0RUKTogQWRkIHRoZSBuZXcgYWN0dWFscyByZXF1aXJlZCB0byBjYWxsIFNldF9PZmZzZXRfVG9fVG9wLgoKMjAwNi0wMi0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2Rpc3QuYWRiIChDb3B5X1NwZWNpZmljYXRpb24pOiBGb3IgYWNjZXNzIHBhcmFtZXRlcnMsIGNvcHkKCU51bGxfRXhjbHVzaW9uIGZsYWcsIHdoaWNoIHdpbGwgaGF2ZSBiZWVuIHNldCBmb3Igc3RyZWFtIHN1YnByb2dyYW1zCglpbiBBZGEyMDA1IG1vZGUuCgoyMDA2LTAyLTEzICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBleHBlY3QuYyAoX19nbmF0X2V4cGVjdF9wb3J0YWJsZV9leGVjdnApOiBOZXcgaW1wbGVtZW50YXRpb24uIFRoZQoJcHJldmlvdXMgaW1wbGVtZW50YXRpb24gd2FzIHVzaW5nIHRoZSBDIHJ1bnRpbWUgc3Bhd252ZSByb3V0aW5lIGJ1dAoJdGhlIGNvcnJlc3BvbmRpbmcgd2FpdCB3YXMgdXNpbmcgZGlyZWN0bHkgdGhlIFdpbjMyIEFQSS4gVGhpcyB3YXMKCWNhdXNpbmcgc29tZSB0aW1lcyBhIGxvY2sgd2hlbiB3YWl0aW5nIGZvciBhbiBldmVudCB1c2luZwoJV2FpdEZvclNpbmdsZU9iamVjdCBpbiBfX2duYXRfd2FpdHBpZC4gVGhpcyBuZXcgaW1wbGVtZW50YXRpb24gdXNlcwoJdGhlIFdpbjMyIENyZWF0ZVByb2Nlc3Mgcm91dGluZS4gQXZvaWRpbmcgbWl4aW5nIEMgcnVudGltZSBhbmQgV2luMzIKCUFQSSBmaXhlcyB0aGlzIHByb2JsZW0uCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9pbnRyLmFkYiAoRXhwYW5kX1VuY19EZWFsbG9jYXRpb24pOiBDb3JyZWN0IGVycm9yIG9mIGJhZCBhbmFseXplCgljYWxsLgoKMjAwNi0wMi0xMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9wYWtkLmFkczogRml4IHR5cG9zIGluIGNvbW1lbnRzLgoKCSogZXhwX3Bha2QuYWRiIChDb252ZXJ0X1RvX1BBVF9UeXBlKTogRm9yIHRoZSBjYXNlIG9mIGEgYml0IHBhY2tlZAoJYXJyYXkgcmVmZXJlbmNlIHRoYXQgaXMgYW4gZXhwbGljaXQgZGVyZWZlcmVuY2UsIG1hcmsgdGhlIGNvbnZlcnRlZAoJKHBhY2tlZCkgYXJyYXkgcmVmZXJlbmNlIGFzIGFuYWx5emVkIHRvIHByZXZlbnQgYSBmb3J0aGNvbWluZwoJcmVhbmFseXNpcyBmcm9tIHJlc2V0dGluZyBpdHMgdHlwZSB0byB0aGUgb3JpZ2luYWwgKG5vbi1wYWNrZWQpIGFycmF5Cgl0eXBlLgoKMjAwNi0wMi0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZXhwX3V0aWwuYWRzLCBleHBfdXRpbC5hZGIgKEZpbmRfUHJpbV9PcCwKCUlzX1ByZWRlZmluZWRfUHJpbWl0aXZlX09wZXJhdGlvbik6IFdoZW4KCXNlYXJjaGluZyBmb3IgdGhlIHByZWRlZmluZWQgZXF1YWxpdHkgb3BlcmF0b3IsIHZlcmlmeSB0aGF0IG9wZXJhbmRzCgloYXZlIHRoZSBzYW1lIHR5cGUuCgkoSXNfUHJlZGVmaW5lZF9EaXNwYXRjaGluZ19PcGVyYXRpb24pOiBSZW1vdmUgdGhlIGNvZGUgdGhhdCBsb29rcwoJZm9yIHRoZSBsYXN0IGVudGl0eSBpbiB0aGUgbGlzdCBvZiBhbGlhc2VkIHN1YnByb2dyYW1zLiBUaGlzIGNvZGUKCXdhcyB3cm9uZyBpbiBjYXNlIG9mIHJlbmFtaW5ncy4KCShTZXRfUmVuYW1lZF9TdWJwcm9ncmFtKTogTmV3IHByb2NlZHVyZQoJKFJlbW92ZV9TaWRlX0VmZmVjdHMpOiBSZXBsYWNlIGNhbGxzIHRvIEV0eXBlIChFeHApIHdpdGggdXNlIG9mIHRoZQoJRXhwX1R5cGUgY29uc3RhbnQgY29tcHV0ZWQgd2hlbiBlbnRlcmluZyB0aGlzIHN1YnByb2dyYW0uCgkoS25vd25fTnVsbCk6IE5ldyBmdW5jdGlvbgoJKE9LX1RvX0RvX0NvbnN0YW50X1JlcGxhY2VtZW50KTogTmV3IGZ1bmN0aW9uCgkoS25vd25fTm9uX051bGwpOiBDaGVjayBzY29wZSBiZWZvcmUgYmVsaWV2aW5nIElzX0tub3duX05vbl9OdWxsIGZsYWcKCShTaWRlX0VmZmVjdF9GcmVlKTogQW4gYXR0cmlidXRlIHJlZmVyZW5jZSAnSW5wdXQgaXMgbm90IGZyZWUgb2YKCXNpZGUgZWZmZWN0LCB1bmxpa2Ugb3RoZXIgYXR0cmlidXRlcyB0aGF0IGFyZSBmdW5jdGlvbnMuIChmcm9tIGNvZGUKCXJlYWRpbmcpLgoJKFJlbW92ZV9TaWRlX0VmZmVjdHMpOiBFeHByZXNzaW9ucyB0aGF0IGludm9sdmUgcGFja2VkIGFycmF5cyBvciByZWNvcmRzCglhcmUgY29waWVkIGF0IHRoZSBwb2ludCBvZiByZWZlcmVuY2UsIGFuZCB0aGVyZWZvcmUgbXVzdCBiZSBtYXJrZWQgYXMKCXJlbmFtaW5ncyBvZiBvYmplY3RzLgoJKElzX1ByZWRlZmluZWRfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogUmV0dXJuIGZhbHNlIGlmIHRoZSBvcGVyYXRpb24gaXMKCW5vdCBhIGRpc3BhdGNoaW5nIG9wZXJhdGlvbi4KCglQUiBhZGEvMTg4MTkKCShSZW1vdmVfU2lkZV9FZmZlY3RzKTogTGlmdCBlbmNsb3NpbmcgdHlwZSBjb252ZXJzaW9uIG5vZGVzIGZvcgoJZWxlbWVudGFyeSB0eXBlcyBpbiBhbGwgY2FzZXMuCgoyMDA2LTAyLTEzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBmcmVlemUuYWRiIChGcmVlemVfRW50aXR5KTogSGFuZGxlIHN1YnR5cGVzIG9mIHByb3RlY3RlZCB0eXBlcyBhbmQKCXRhc2sgdHlwZXMgd2hlbiBhY2Nlc3NpbmcgdG8gdGhlIGNvcnJlc3BvbmRpbmcgcmVjb3JkIHR5cGUuCglSZW1vdmUgJyEnIGluIHdhcm5pbmcgbWVzc2FnZS4KCjIwMDYtMDItMTMgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBnLWFsdGl2ZS5hZHMgKFZFQ1RPUl9BTElHTk1FTlQpOiBTZXQgdG8gTWluICgxNiwgTWF4X0FsaWdubWVudCksCgl0byBhdm9pZCB1c2VsZXNzIGFuZCBzcGFjZSBpbmVmZmljaWVudCBvdmVyYWxpZ25tZW50cyBvbiB0YXJnZXRzIHdoZXJlCglNYXhfQWxpZ25tZW50IGlzIGxhcmdlciB0aGFuIDE2LgoKMjAwNi0wMi0xMyAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogZy1jYXRpaW8uYWRiIChTZWNfTnVtYmVyKTogTmV3IHR5cGUgdXNlZCB0byBjb21wdXRlIHRoZSBudW1iZXIgb2YKCXNlY29uZHMgc2luY2UgMS0xLTE5NzAuCgkoSW1hZ2UpIFtOYXR1cmFsXTogVGhlIHBhcmFtZXRlciB3YXMgYW4gSW50ZWdlciwgYXMgd2UgY2FuJ3QgZGVhbCB3aXRoCgluZWdhdGl2ZSBudW1iZXJzICh5ZWFycywgbW9udGhzLi4uKSBpdCBpcyBiZXR0ZXIgdG8gaGF2ZSBhIE5hdHVyYWwgaGVyZS4KCUNvZGUgY2xlYW4tdXAuCgkoSW1hZ2UpIFtOdW1iZXJdOiBDaGFuZ2UgcGFyYW1ldGVyIGZyb20gTG9uZ19JbnRlZ2VyIHRvIE51bWJlci4KCShJbWFnZSk6IFVzZSBOdW1iZXIgdHlwZSB0byBjb21wdXRlIHRoZSBzZWNvbmRzIHNpbmNlIDEtMS0xOTcwIHRvIGZpeCBhbgoJb3ZlcmZsb3cgZm9yIGRhdGVzIHBhc3QgeWVhciAyMDM4LgoKMjAwNi0wMi0xMyAgTWF0dGhldyBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgoJKiAgZy1keW50YWIuYWRiIChJbmRleF9PZik6IGNvbnZlcnNpb24gZnJvbSBOYXR1cmFsIGNhbiBubyBsb25nZXIgcmFpc2UKCUNvbnN0cmFpbnRfRXJyb3IuCgoyMDA2LTAyLTEzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBnbmF0YmluZC5hZGIgKFNjYW5fQmluZF9BcmcpOiBSZXBsYWNlIGVycm9yIGJ5IHdhcm5pbmcgb24gLU0gYW5kCgluYXRpdmUgcGxhdGZvcm1zLgoJKEduYXRiaW5kKTogRG8gbm90IGNhbGwgRXhpdF9Qcm9ncmFtIChFX1N1Y2Nlc3MpIGF0IHRoZSBlbmQsIHNvIHRoYXQKCWZpbmFsaXphdGlvbiBjYW4gb2NjdXIgbm9ybWFsbHkuCgoyMDA2LTAyLTEzICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGduYXRjbWQuYWRiIChSdWxlc19Td2l0Y2hlcyk6IE5ldyB0YWJsZQoJKEFkZF9Ub19SdWxlc19Td2l0Y2hlcyk6IE5ldyBwcm9jZWR1cmUKCShHTkFUQ21kKTogRm9yIGNvbW1hbmQgQ0hFQ0ssIHB1dCBhbGwgb3B0aW9ucyBmb2xsb3dpbmcgIi1ydWxlcyIgaW4gdGhlCglSdWxlc19Td2l0Y2hlcyB0YWJsZS4gQXBwZW5kIHRoZXNlIC1ydWxlcyBzd2l0Y2hlcyBhZnRlciB0aGUgLWNhcmdzCglzd2l0Y2hlcy4KCjIwMDYtMDItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy1zcGlwYXQuYWRiIChJbWFnZSwgY2FzZSBQQ19Bc3NpZ25fSW1tIGFuZCBjYXNlIFBDX0Fzc2lnbl9Pbk0pOgoJVGhlc2UgdHdvIGNhc2VzIHdlcmUgZ2VuZXJhdGluZyBpbmNvcnJlY3Qgb3V0cHV0LCBhbmQgaWYgdGhpcyB1bml0Cgl3YXMgYnVpbHQgd2l0aCBjaGVja3Mgb24sIGdlbmVyYXRlZCBhIGRpc2NyaW1pbmFudCBtaXNtYXRjaCBjb25zdHJhaW50CgllcnJvci4KCjIwMDYtMDItMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGxpYi14cmVmLmFkYiAoR2V0X1R5cGVfUmVmZXJlbmNlKTogRm9yIGEgcHJpdmF0ZSB0eXBlIHdob3NlIGZ1bGwKCXZpZXcgaXMgYW4gYXJyYXkgdHlwZSwgaW5kaWNhdGUgdGhlIGNvbXBvbmVudCB0eXBlIGFzIHdlbGwsIGZvcgoJbmF2aWdhdGlvbiBwdXJwb3Nlcy4KCShHZW5lcmF0ZV9SZWZlcmVuY2UpOiBEb24ndCBjb25zaWRlciBhcnJheSByZWYgb24gTEhTIHRvIGJlIGEgY2FzZQoJb2YgdmlvbGF0aW5nIHByYWdtYSBVbnJlZmVyZW5jZWQuCglEbyBub3QgZ2l2ZSBBZGEgMjAwNSB3YXJuaW5nIGV4Y2VwdCBvbiByZWFsIHJlZmVyZW5jZS4KCjIwMDYtMDItMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZS5hZGIgKENvbGxlY3RfQXJndW1lbnRzX0FuZF9Db21waWxlKTogRm9yIFZNUywgd2hlbiBjb21waWxpbmcgdGhlCgltYWluIHNvdXJjZSwgYWRkIHN3aXRjaCAtbWRlYnVnLW1haW49X2FkYV8gc28gdGhhdCB0aGUgZXhlY3V0YWJsZSBjYW4KCWJlIGRlYnVnZ2VkIGJ5IHRoZSBzdGFuZGFyZCBWTVMgZGVidWdnZXIuCgkoR25hdG1ha2UpOiBTZXQgTm9fTWFpbl9TdWJwcm9ncmFtIHRvIFRydWUgd2hlbiB0aGVyZSBpcyBubyBtYWluCglzdWJwcm9ncmFtLCB0byBhdm9pZCBpc3N1aW5nIC1tZGVidWctbWFpbj1fYWRhXyBmb3IgVk1TIHVzZWxlc3NseS4KCUV4aXQgdGhlIE11bHRpX01haW5fTG9vcCB3aGVuIFVuaXF1ZV9Db21waWxlIGlzIFRydWUgYWZ0ZXIgY29tcGlsYXRpb24KCW9mIHRoZSBsYXN0IHNvdXJjZSwgYXMgdGhlIGJpbmRpbmcgYW5kIGxpbmtpbmcgcGhhc2VzIGFyZSBuZXZlcgoJcGVyZm9ybWVkLgoJU2V0IGFsbCBleGVjdXRhYmxlIG9ic29sZXRlIHdoZW4gcmVidWlsZGluZyBhIGxpYnJhcnkuCgoJKiBtYWtldXRsLmFkYiAoTGlua2VyX09wdGlvbnNfU3dpdGNoZXMpOiBEbyBub3QgcHJvY2VzcyBlbXB0eSBsaW5rZXIKCW9wdGlvbnMuCgoyMDA2LTAyLTEzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJUFIgYWRhLzIzOTczCgkqIHBhci1jaDMuYWRiIChQX0Rlcml2ZWRfVHlwZV9EZWZfT3JfUHJpdmF0ZV9FeHRfRGVjbCk6IFJlb3JnYW5pemUgdGhlCgljb2RlIHRvIGltcHJvdmUgdGhlIGVycm9yIG1lc3NhZ2UgcmVwb3J0ZWQgd2hlbiB0aGUgcHJvZ3JhbSBoYXMKCWRlY2xhcmF0aW9ucyBvZiBhYnN0cmFjdCBpbnRlcmZhY2UgdHlwZXMgYW5kIGl0IGlzIG5vdCBjb21waWxlZCB3aXRoCgl0aGUgLWduYXQwNSBzd2l0Y2guCgkoUF9BY2Nlc3NfRGVmaW5pdGlvbik6IFJlb3JnYW5pemUgdGhlIGNvZGUgdG8gaW1wcm92ZSB0aGUgZXJyb3IKCW1lc3NhZ2UgcmVwb3J0ZWQgd2hlbiB0aGUgbmV3IEFkYSAyMDA1IHN5bnRheCBmb3IgYW5vbnltb3VzCglhY2Nlc3MgdHlwZXMgaXMgdXNlZCBhbmQgdGhlIHByb2dyYW0gaXMgbm90IGNvbXBpbGVkIHdpdGggdGhlCgktZ25hdDA1IHN3aXRjaC4KCjIwMDYtMDItMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoNi5hZGIsIHN0eWxlLmFkcywgc3R5bGVnLmFkYiwgc3R5bGVnLmFkcywgc3R5bGVzdy5hZGIsCglzdHlsZXN3LmFkcywgdXNhZ2UuYWRiLCB2bXNfZGF0YS5hZHM6IEltcGxlbWVudCAtZ25hdHlJIHN3aXRjaAoJKE1PREVfSU4pCgoyMDA2LTAyLTEzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBwYXItZW5kaC5hZGIgKEV4cGxpY2l0X1N0YXJ0X0xhYmVsKTogQWRkIGNvZGUgdG8gcHJvdGVjdCB0aGUgcGFyc2VyCglhZ2FpbnN0IHNvdXJjZSBjb250YWluaW5nIHN5bnRheCBlcnJvcnMuCgoyMDA2LTAyLTEzICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByai5hZGIgKFJlc2V0KTogSW5pdGlhbGl6ZSB0aGUgZmlyc3QgZWxlbWVudCBvZiB0YWJsZSBOYW1pbmdzIHdpdGgKCXRoZSBzdGFuZGFyZCBuYW1pbmcgZGF0YS4KCjIwMDYtMDItMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLmFkcyAoRXJyb3JfV2FybmluZyk6IE5ldyBlbnVtZXJhdGlvbiB0eXBlCgoJKiBwcmotbm1zYy5hZHMsIHByai1ubXNjLmFkYiAoRXJyb3JfTXNnKTogSWYgbG9jYXRpb24gcGFyYW1ldGVyIGlzCgl1bmtub3duLCB1c2UgdGhlIGxvY2F0aW9uIG9mIHRoZSBwcm9qZWN0IHRvIHJlcG9ydCB0aGUgZXJyb3IuCgkoV2hlbl9Ob19Tb3VyY2VzKTogTmV3IGdsb2JhbCB2YXJpYWJsZQoJKFJlcG9ydF9Ob19BZGFfU291cmNlcyk6IE5ldyBwcm9jZWR1cmUKCShDaGVjayk6IE5ldyBwYXJhbWV0ZXIgV2hlbl9Ob19Tb3VyY2VzLiBTZXQgdmFsdWUgb2YgZ2xvYmFsIHZhcmlhYmxlCglXaGVuX05vX1NvdXJjZXMsCgkoRmluZF9Tb3VyY2VzKTogQ2FsbCBSZXBvcnRfTm9fQWRhX1NvdXJjZXMgd2hlbiBhcHByb3ByaWF0ZQoJKEdldF9Tb3VyY2VzX0Zyb21fRmlsZSk6IERpdHRvCgkoV2Fybl9JZl9Ob3RfU291cmNlcyk6IEJldHRlciB3YXJuaW5nIG1lc3NhZ2VzIGluZGljYXRpbmcgdGhlIHVuaXQgbmFtZQoJYW5kIHRoZSBmaWxlIG5hbWUuCgoJKiBwcmotcGFycy5hZHMsIHByai1wYXJzLmFkYiAoUGFyc2UpOiBOZXcgcGFyYW1ldGVyIFdoZW5fTm9fU291cmNlcy4KCUNhbGwgUHJqLlByb2MuUHJvY2VzcyB3aXRoIHBhcmFtZXRlciBXaGVuX05vX1NvdXJjZXMuCgoJKiBwcmotcHJvYy5hZHMsIHByai1wcm9jLmFkYiAoQ2hlY2spOiBOZXcgcGFyYW1ldGVyIFdoZW5fTm9fU291cmNlcy4KCUNhbGwgUmVjdXJzaXZlX0NoZWNrIHdpdGggcGFyYW1ldGVyIFdoZW5fTm9fU291cmNlcy4KCShSZWN1cnNpdmVfQ2hlY2spOiBOZXcgcGFyYW1ldGVyIFdoZW5fTm9fU291cmNlcy4gQ2FsbCBpdHNlbGYgYW5kCglQcmouTm1zYy5DaGVjayB3aXRoIHBhcmFtZXRlciBXaGVuX05vX1NvdXJjZXMuCgkoUHJvY2Vzcyk6IE5ldyBwYXJhbWV0ZXIgV2hlbl9Ob19Tb3VyY2VzLiBDYWxsIENoZWNrIHdpdGggcGFyYW1ldGVyCglXaGVuX05vX1NvdXJjZXMuCgkoQ29weV9QYWNrYWdlX0RlY2xhcmF0aW9ucyk6IE5ldyBwcm9jZWR1cmUgdG8gY29weSByZW5hbWVkIHBhcmFtZXRlcnMKCWFuZCBzZXR0aW5nIHRoZSBsb2NhdGlvbiBvZiB0aGUgZGVjbGFyZWQgYXR0cmlidXRlcyB0byB0aGUgbG9jYXRpb24KCW9mIHRoZSByZW5hbWVkIHBhY2thZ2UuCgkoUHJvY2Vzc19EZWNsYXJhdGl2ZV9JdGVtcyk6IENhbGwgQ29weV9QYWNrYWdlX0RlY2xhcmF0aW9ucyBmb3IgcmVuYW1lZAoJcGFja2FnZXMuCgoyMDA2LTAyLTEzICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByai1tYWtyLmFkYiAoTWFrZSk6IFByZXNlcnZlIHRoZSBjb21tZW50cyBmcm9tIHRoZSBvcmlnaW5hbCBwcm9qZWN0CglmaWxlLgoJV2hlbiByZW1vdmluZyBub2RlcyAoYXR0cmlidXRlcyBTb3VyY2VfRGlycywgU291cmNlX0ZpbGVzLAoJU291cmNlX0xpc3RfRmlsZSBhbmQgcGFja2FnZSBOYW1pbmcpLCBzYXZlIHRoZSBjb21tZW50cyBhbmQgYXR0YWNoIHRoZQoJc2F2ZWQgY29tbWVudHMgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgbm9kZXMuCglEbyBub3QgYWRkIGEgd2l0aCBjbGF1c2UgZm9yIHRoZSBuYW1pbmcgcGFja2FnZSBpZiBvbmUgYWxyZWFkeSBleGlzdHMuCgoyMDA2LTAyLTEzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcmVzdHJpY3QuYWRzIChOb19EaXNwYXRjaGluZ19DYWxscyk6IE5ldyBHTkFUIHJlc3RyaWN0aW9uLgoKCSogc2VtX2Rpc3AuYWRiIChPdmVycmlkZV9EaXNwYXRjaGluZ19PcGVyYXRpb24pOiBUcmF2ZXJzZSB0aGUgbGlzdCBvZgoJYWxpYXNlZCBlbnRpdGllcyB0byBsb29rIGZvciB0aGUgb3ZlcnJpZGVuIGFic3RyYWN0IGludGVyZmFjZQoJc3VicHJvZ3JhbS4KCShJc19JbnRlcmZhY2VfU3VicHJvZ3JhbSk6IENvbXBsZXRlIGRvY3VtZW50YXRpb24uCgkoQ2hlY2tfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogRG8gbm90IGdlbmVyYXRlIGNvZGUgdG8gcmVnaXN0ZXIgdGhlCglvcGVyYXRpb24gaW4gdGhlIGRpc3BhdGNoIHRhYmxlIGlmIHRoZSBzb3VyY2UgaXMgY29tcGlsZWQgd2l0aAoJcmVzdHJpY3Rpb24gTm9fRGlzcGF0Y2hpbmdfQ2FsbHMuCgkoT3ZlcnJpZGVfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogQ2hlY2sgZm9yIGlsbGVnYWwgYXR0ZW1wdCB0byBvdmVycmlkZQoJTm9fUmV0dXJuIHByb2NlZHVyZSB3aXRoIHByb2NlZHVyZSB0aGF0IGlzIG5vdCBOb19SZXR1cm4KCShDaGVja19EaXNwYXRjaGluZ19DYWxsKTogU3VwcHJlc3MgdGhlIGNoZWNrIGZvciBhbiBhYnN0cmFjdCBvcGVyYXRpb24KCXdoZW4gdGhlIG9yaWdpbmFsIG5vZGUgb2YgYW4gYWN0dWFsIGlzIGEgdGFnLWluZGV0ZXJtaW5hdGUgYXR0cmlidXRlCgljYWxsLCBzaW5jZSB0aGUgYXR0cmlidXRlLCB3aGljaCBtdXN0IGJlICdJbnB1dCwgY2FuIG5ldmVyIGJlIGFic3RyYWN0LgoJKElzX1RhZ19JbmRldGVybWluYXRlKTogSGFuZGxlIGNoZWNraW5nIG9mIHRhZyBpbmRldGVybWluYWN5IG9mIGEKCWNhbGwgdG8gdGhlIElucHV0IGF0dHJpYnV0ZSAoZXZlbiB3aGVuIHJld3JpdHRlbikuCgkoUHJvcGFnYXRlX1RhZyk6IEF1Z21lbnQgY29tbWVudCB0byBpbmRpY2F0ZSB0aGUgcG9zc2liaWxpdHkgb2YgYSBjYWxsCgl0byBhbiBJbnB1dCBhdHRyaWJ1dGUuCgoJKiBzZW1fZGlzcC5hZHMgKE92ZXJyaWRlX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IE1vdmVkIHRvIHNwZWMgdG8gYWxsb3cKCWNhbGxpbmcgaXQgZnJvbSBFeHBfQ2gzLk1ha2VfQ29udHJvbGxpbmdfRnVuY3Rpb25fV3JhcHBlcnMuCgoJKiBzLXJpZGVudC5hZHM6IChOb19EaXNwYXRjaGluZ19DYWxscyk6IE5ldyBHTkFUIHJlc3RyaWN0aW9uLgoJTm9fV2lkZV9DaGFyYWN0ZXJzIGlzIG5vIGxvbmdlciBwYXJ0aXRpb24td2lkZQoJTm9fSW1wbGVtZW50YXRpb25fQXR0cmlidXRlcy9QcmFnbWFzIGFyZSBub3cgQWRhIDIwMDUgKEFJLTI1NykKCXJhdGhlciB0aGFuIEdOQVQKCjIwMDYtMDItMTMgIERvdWdsYXMgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBzLWF1eGRlYy12bXNfNjQuYWRzIChTaG9ydF9BZGRyZXNzKTogV3JhcCBpdCBpbiBhIHR5cGUuCgoyMDA2LTAyLTEzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fYWdnci5hZGIgKFJlc29sdmVfUmVjb3JkX0FnZ3JlZ2F0ZSk6IFJlc3RydWN0dXJlIHRoZSBjb2RlIHRoYXQKCWhhbmRsZXMgZGVmYXVsdC1pbml0aWFsaXplZCBjb21wb25lbnRzIHRvIGtlZXAgc2VwYXJhdGUgdGhlIG1hbmFnZW1lbnQKCW9mIHRoaXMgZmVhdHVyZSBidXQgYWxzbyBhdm9pZCB0aGUgdW5yZXF1aXJlZCByZXNvbHV0aW9uIGFuZAoJZXhwYW5zaW9uIG9mIGNvbXBvbmVudHMgdGhhdCBkbyBub3QgaGF2ZSBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQKCXZhbHVlcy4KCShDb2xsZWN0X0FnZ3JfQm91bmRzKTogQWRkICdcJyBpbiAyLWxpbmUgd2FybmluZyBtZXNzYWdlLgoJKENoZWNrX0JvdW5kcyk6IExpa2V3aXNlLgoJKENoZWNrX0xlbmd0aCk6IExpa2V3aXNlLgoKMjAwNi0wMi0xMyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9hdHRyLmFkYiAoQW5hbHl6ZV9BdHRyaWJ1dGUpOiBJbiBjYXNlIG9mICdDbGFzcyBhcHBsaWVkIHRvIGFuCglhYnN0cmFjdCBpbnRlcmZhY2UgdHlwZSBjYWxsIGFuYWx5emVfYW5kX3Jlc29sdmUgdG8gZXhwYW5kIHRoZSB0eXBlCgljb252ZXJzaW9uIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgZGlzcGxhY2VtZW50IG9mIHRoZQoJcmVmZXJlbmNlIHRvIHRoZSBiYXNlIG9mIHRoZSBvYmplY3QuCgkoRXZhbF9BdHRyaWJ1dGUsIGNhc2UgV2lkdGgpOiBGb3Igc3lzdGVtcyB3aGVyZSBJRUVFIGV4dGVuZGVkIHByZWNpc2lvbgoJaXMgc3VwcG9ydGVkLCB0aGUgbWF4aW11bSBleHBvbmVudCBvY2N1cGllcyA0IGRlY2ltYWwgZGlnaXRzLgoJKEFjY2Vzc2liaWxpdHlfTWVzc2FnZSk6IEFkZCAnXCcgaW4gMi1saW5lIHdhcm5pbmcgbWVzc2FnZS4KCShSZXNvbHZlX0F0dHJpYnV0ZSk6IExpa2V3aXNlLgoJKGNhc2UgQXR0cmlidXRlX0FjY2Vzcyk6IFNpZ25pZmljYW50bHkgcmV2aXNlIGNoZWNrcwoJZm9yIGlsbGVnYWwgYWNjZXNzLXRvLXN1YnByb2dyYW0gQWNjZXNzIGF0dHJpYnV0ZXMgdG8gcHJvcGVybHkgZW5mb3JjZQoJdGhlIHJ1bGVzIG9mIDMuMTAuMigzMi8yKS4KCURpYWdub3NlIHVzZSBvZiBjdXJyZW50IGluc3RhbmNlIHdpdGggYW4gaWxsZWdhbCBhdHRyaWJ1dGUuCgoJKiBzZW1fdXRpbC5hZHMsIHNlbV91dGlsLmFkYiAoRW5jbG9zaW5nX0dlbmVyaWNfQm9keSk6IENoYW5nZSBmb3JtYWwKCXRvIGEgTm9kZV9JZC4KCShFbmNsb3NpbmdfR2VuZXJpY19Vbml0KTogTmV3IGZ1bmN0aW9uIHRvIHJldHVybiBhIG5vZGUncyBpbm5lcm1vc3QKCWVuY2xvc2luZyBnZW5lcmljIGRlY2xhcmF0aW9uIG5vZGUuCgkoQ29tcGlsZV9UaW1lX0NvbnN0cmFpbnRfRXJyb3IpOiBSZW1vdmUgJyEnIGluIHdhcm5pbmcgbWVzc2FnZXMuCgkoVHlwZV9BY2Nlc3NfTGV2ZWwpOiBUaGUgYWNjZXNzaWJpbGl0eSBsZXZlbCBvZiBhbm9ueW1vdXMgYWNjY2VzcyB0eXBlcwoJYXNzb2NpYXRlZCB3aXRoIGRpc2NyaW1pbmFudHMgaXMgdGhhdCBvZiB0aGUgY3VycmVudCBpbnN0YW5jZSBvZiB0aGUKCXR5cGUsIGFuZCB0aGF0J3MgZGVlcGVyIHRoYW4gdGhlIHR5cGUgaXRzZWxmIChBQVJNIDMuMTAuMiAoMTIuMy4yMSkpLgoJKENvbXBpbGVfVGltZV9Db25zdHJhaW50X0Vycm9yKTogSGFuZGxlIGNhc2Ugb2YgY29uZGl0aW9uYWwgZXhwcmVzc2lvbi4KCShLaWxsX0N1cnJlbnRfVmFsdWVzX0Zvcl9FbnRpdHkpOiBOZXcgZnVuY3Rpb24KCShFbnRlcl9OYW1lKTogQ2hhbmdlIGZvcm1hbCB0eXBlIHRvIEVudGl0eV9JZAoKMjAwNi0wMi0xMyAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTAuYWRiIChDaGVja19SZWR1bmRhbnRfV2l0aHMpOiBOZXcgcHJvY2VkdXJlIGluCglBbmFseXplX0NvbXBpbGF0aW9uX1VuaXQuCglEZXRlY3QgYW5kIHdhcm4gb24gcmVkdW5kYW50IHdpdGggY2xhdXNlcyBkZXRlY3RlZCBpbiBhIHBhY2thZ2Ugc3BlYwoJYW5kL29yIGJvZHkgd2hlbiAtZ25hdHdyIGlzIHVzZWQuCgkoQW5hbHl6ZV9Db250ZXh0KTogQW5hbHl6ZSBjb25maWcgcHJhZ21hcyBiZWZvcmUgb3RoZXIgaXRlbXMKCShJbnN0YWxsX0NvbnRleHRfSXRlbXMpOiBEb24ndCBhbmFseXplIGNvbmZpZyBwcmFnbWFzIGhlcmUKCShJbnN0YWxsX0xpbWl0ZWRfV2l0aGVkX1VuaXQpOiBTZXQgbGltaXRlZCBlbnRpdHkgb2YgcGFja2FnZSBpbgoJd2l0aF9jbGF1c2Ugc28gdGhhdCBjcm9zcy1yZWZlcmVuY2UgaW5mb3JtYXRpb24gb3Igd2FybmluZyBtZXNzYWdlcyBvbgoJdW51c2VkIHBhY2thZ2VzIGNhbiBiZSBwcm9wZXJseSBnZW5lcmF0ZWQKCShJc19WaXNpYmxlX1Rocm91Z2hfUmVuYW1pbmdzKTogUmV0dXJuIGZhbHNlIGlmIHRoZSBsaW1pdGVkX3dpdGhfY2xhdXNlCgloYXMgRXJyb3JfUG9zdGVkIHNldC4gUHJldmVudCBpbmZpbml0ZSBsb29wcyBpbiBpbGxlZ2FsIHByb2dyYW1zLgoJKENoZWNrX1ByaXZhdGVfQ2hpbGRfVW5pdCk6IE1vdmUgdGVzdCBmb3IgYSBub25wcml2YXRlIHdpdGggY2xhdXNlIGRvd24KCXRvIHRoZSBwb2ludCBvZiB0aGUgZXJyb3IgdGVzdCByZXF1aXJpbmcgdGhlIGN1cnJlbnQgdW5pdCB0byBiZSBwcml2YXRlLgoJVGhpcyBlbnN1cmVzIHRoYXQgcHJpdmF0ZSB3aXRoIGNsYXVzZXMgYXJlIG5vdCBleGVtcHRlZCBmcm9tIHRoZSBiYXNpYwoJY2hlY2tpbmcgZm9yIGJlaW5nIGEgZGVzY2VuZGFudCBvZiB0aGUgc2FtZSBsaWJyYXJ5IHVuaXQgcGFyZW50IGFzIGEKCXdpdGhlZCBwcml2YXRlIGRlc2NlbmRhbnQgdW5pdC4KCShDaGVja19Qcml2YXRlX0xpbWl0ZWRfV2l0aGVkX1VuaXQpOiBSZXZpc2UgdGhlIGNoZWNraW5nIGFsZ29yaXRobSB0bwoJaGFuZGxlIHByaXZhdGUgd2l0aCBjbGF1c2VzIHByb3Blcmx5LCBhcyB3ZWxsIGFzIHRvIGFjY291bnQgZm9yIGNhc2VzCgl3aGVyZSB0aGUgd2l0aGVkIHVuaXQgaXMgYSBwdWJsaWMgZGVzY2VuZGFudCBvZiBhIHByaXZhdGUgYW5jZXN0b3IKCShpbiB3aGljaCBjYXNlIHRoZSBjdXJyZW50IHVuaXQgbXVzdCBiZSBhIGRlc2NlbmRhbnQgb2YgdGhlIHByaXZhdGUKCWFuY2VzdG9yJ3MgcGFyZW50KS4gVGhlIHNwZWMgY29tbWVudHMgd2VyZSB1cGRhdGVkIGFjY29yZGluZ2x5LiBBbHNvLAoJdGhlIG9sZCBlcnJvciBtZXNzYWdlIGluIHRoaXMgc3VicHJvZ3JhbSB3YXMgcmVwbGFjZWQgd2l0aCBlcnJvcgoJbWVzc2FnZXMgdGhhdCBtaXJyb3IgdGhlIGVycm9ycyB0ZXN0ZWQgYW5kIHJlcG9ydGVkIGJ5CglDaGVja19Qcml2YXRlX0NoaWxkX1VuaXQuCglQYXJhbWV0ZXIgYW5kIHZhcmlhYmxlIG5hbWVzIGltcHJvdmVkIGZvciByZWFkYWJpbGl0eS4KCShJbnN0YWxsX0xpbWl0ZWRfQ29udGV4dF9DbGF1c2VzKTogUmVtb3ZlIHRlc3QgZm9yIGEgd2l0aGVkIHVuaXQgYmVpbmcKCXByaXZhdGUgYXMgdGhlIHByZWNvbmRpdGlvbiBmb3IgY2FsbGluZwoJQ2hlY2tfUHJpdmF0ZV9MaW1pdGVkX1dpdGhlZF9Vbml0IHNpbmNlIHRoYXQgc3VicHJvZ3JhbSBoYXMgYmVlbgoJcmV2aXNlZCB0byB0ZXN0IHB1YmxpYyB1bml0cyBhcyB3ZWxsIGFzIHByaXZhdGUgdW5pdHMuCgoyMDA2LTAyLTEzICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKElubGluZV9JbnN0YW5jZV9Cb2R5KTogUmVtb3ZlIGVycm9uZW91cyBhc3N1bXB0aW9uCgl0aGF0IFNjb3BlX1N0YWNrLkZpcnN0ID0gMS4KCVByb3Blcmx5IGhhbmRsZSBBZGFfVmVyc2lvbl9FeHBsaWNpdCBhbmQgQWRhX1ZlcnNpb25fQ29uZmlnLCB3aGljaAoJd2VyZSBub3QgYWx3YXlzIHByb3Blcmx5IGhhbmRsZWQgcHJldmlvdXNseS4KCShGb3JtYWxfRW50aXR5KTogQ29tcGxldGUgcmV3cml0ZSwgdG8gaGFuZGxlIHByb3Blcmx5IHNvbWUgY29tcGxleCBjYXNlCgl3aXRoIG11bHRpcGxlIGxldmVscyBvZiBwYXJhbWV0cml6YXRpb24gYnkgZm9ybWFsIHBhY2thZ2VzLgoJKEFuYWx5emVfRm9ybWFsX0Rlcml2ZWRfVHlwZSk6IFByb3BhZ2F0ZSBBZGEgMjAwNSAibGltaXRlZCIgaW5kaWNhdG9yCgl0byB0aGUgY29ycmVzcG9uZGluZyBkZXJpdmVkIHR5cGUgZGVjbGFyYXRpb24gZm9yIHByb3BlciBzZW1hbnRpY3MuCgoJKiBzZW1fcHJhZy5hZGIgKEFuYWx5emVfUHJhZ21hKTogUmVtb3ZlICchJyBpbiB3YXJuaW5nIG1lc3NhZ2UuCgkoQ2hlY2tfQ29tcG9uZW50KTogRW5mb3JjZSByZXN0cmljdGlvbiBvbiBjb21wb25lbnRzIG9mCgl1bmNoZWNrZWRfdW5pb25zOiBhIGNvbXBvbmVudCBpbiBhIHZhcmlhbnQgY2Fubm90IGNvbnRhaW4gdGFza3Mgb3IKCWNvbnRyb2xsZWQgdHlwZXMuCgkoVW5jaGVja2VkX1VuaW9uKTogQWxsb3cgbmVzdGVkIHZhcmlhbnRzIGFuZCBtdWx0aXBsZSBkaXNjcmltaW5hbnRzLCB0bwoJY29uZm9ybSB0byBBSS0yMTYuCglBZGQgcHJhZ21hIEFkYV8yMDA1IChzeW5vbnltIGZvciBBZGFfMDUpCglQcm9wZXJseSBoYW5kbGUgQWRhX1ZlcnNpb25fRXhwbGljaXQgYW5kIEFkYV9WZXJzaW9uX0NvbmZpZywgd2hpY2gKCXdlcmUgbm90IGFsd2F5cyBwcm9wZXJseSBoYW5kbGVkIHByZXZpb3VzbHkuCglEb2N1bWVudCB0aGF0IHByYWdtYSBQcm9wYWdhdGVfRXhjZXB0aW9ucyBoYXMgbm8gZWZmZWN0CgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgUHVyZSk6IFNldCBuZXcgZmxhZyBIYXNfUHJhZ21hX1B1cmUKCShTZXRfQ29udmVudGlvbl9Gcm9tX1ByYWdtYSk6IENoZWNrIHRoYXQgaWYgYSBjb252ZW50aW9uIGlzCglzcGVjaWZpZWQgZm9yIGEgZGlzcGF0Y2hpbmcgb3BlcmF0aW9uLCB0aGVuIGl0IG11c3QgYmUKCWNvbnNpc3RlbnQgd2l0aCB0aGUgZXhpc3RpbmcgY29udmVudGlvbiBmb3IgdGhlIG9wZXJhdGlvbi4KCShDUFBfQ2xhc3MpOiBCZWNhdXNlIG9mIHRoZSBDKysgQUJJIGNvbXBhdGliaWxpdHksIHRoZSBwcm9ncmFtbWVyIGlzIG5vCglsb25nZXIgcmVxdWlyZWQgdG8gc3BlY2lmeSBhbiB2dGFibGUtcHRyIGNvbXBvbmVudCBpbiB0aGUgcmVjb3JkLiBGb3IKCWNvbXBhdGliaWxpdHkgcmVhc29ucyB3ZSBsZWF2ZSB0aGUgc3VwcG9ydCBmb3IgdGhlIHByZXZpb3VzIGRlZmluaXRpb24uCgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgTm9fUmV0dXJuKTogQWxsb3cgbXVsdGlwbGUgYXJndW1lbnRzCgoJKiBzZW1fY2gzLmFkcywgc2VtX2NoMy5hZGIgKENoZWNrX0Fic3RyYWN0X092ZXJyaWRpbmcpOiBGbGFnIGEKCW5vbi1vdmVycmlkZWVuIGluaGVyaXRlZCBvcGVyYXRpb24gd2l0aCBhIGNvbnRyb2xsaW5nIHJlc3VsdCBhcwoJaWxsZWdhbCBvbmx5IGl0cyBpbXBsaWNpdCBkZWNsYXJhdGlvbiBjb21lcyBmcm9tIHRoZSBkZXJpdmVkIHR5cGUKCWRlY2xhcmF0aW9uIG9mIGl0cyByZXN1bHQncyB0eXBlLgoJKENoZWNrX1Bvc3NpYmxlX0RlZmVycmVkX0NvbXBsZXRpb24pOiBSZWxvY2F0ZSB0aGUgb2JqZWN0IGRlZmluaXRpb24KCW5vZGUgb2YgdGhlIHN1YnR5cGUgaW5kaWNhdGlvbiBvZiBhIGRlZmVycmVkIGNvbnN0YW50IGNvbXBsZXRpb24gcmF0aGVyCgl0aGFuIGRpcmVjdGx5IGFuYWx5emluZyBpdC4gVGhlIGFuYWx5c2lzIG9mIHRoZSBnZW5lcmF0ZWQgc3VidHlwZSB3aWxsCgljb3JyZWN0bHkgZGVjb3JhdGUgdGhlIEdOQVQgdHJlZS4KCShSZWNvcmRfVHlwZV9EZWNsYXJhdGlvbik6IENoZWNrIHdoZXRoZXIgdGhpcyBpcyBhIGRlY2xhcmF0aW9uIGZvciBhCglsaW1pdGVkIGRlcml2ZWQgcmVjb3JkIGJlZm9yZSBhbmFseXppbmcgY29tcG9uZW50cy4KCShBbmFseXplX0NvbXBvbmVudF9EZWNsYXJhdGlvbik6IERpYWdub3NlIHJlY29yZCB0eXBlcyAgbm90IGV4cGxpY2l0bHkKCWRlY2xhcmVkIGxpbWl0ZWQgd2hlbiBhIGNvbXBvbmVudCBoYXMgYSBsaW1pdGVkIHR5cGUuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IENvZGUgcmVvcmdhbml6YXRpb24gdG8gY2hlY2sgaWYgc29tZSBvZgoJdGhlIGluaGVyaXRlZCBzdWJwcm9ncmFtcyBvZiBhIHRhZ2dlZCB0eXBlIGNvdmVyIGludGVyZmFjZSBwcmltaXRpdmVzLgoJVGhpcyBjaGVjayB3YXMgbWlzc2luZyBpbiBjYXNlIG9mIGEgZnVsbC10eXBlIGFzc29jaWF0ZWQgd2l0aCBhIHByaXZhdGUKCXR5cGUgZGVjbGFyYXRpb24uCgkoQ29uc3RhbnRfUmVkZWNsYXJhdGlvbik6IENoZWNrIHRoYXQgdGhlIHN1YnR5cGVzIG9mIHRoZSBwYXJ0aWFsIGFuZCB0aGUKCWZ1bGwgdmlldyBvZiBhIGNvbnN0cmFpbmVkIGRlZmVycmVkIGNvbnN0YW50IHN0YXRpY2FsbHkgbWF0Y2guCgkoTWVudGlvbnNfVCk6IEEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IHR5cGUgaW4gYW4gYW5vbnltb3VzIGFjY2VzcwoJY29tcG9uZW50IGRlY2xhcmF0aW9uICBtdXN0IGJlIGFuIGVudGl0eSBuYW1lLgoJKE1ha2VfSW5jb21wbGV0ZV9UeXBlX0RlY2xhcmF0aW9uKTogSWYgdHlwZSBpcyB0YWdnZWQsIHNldCB0eXBlIG9mCgljbGFzc193aWRlIHR5cGUgdG8gcmVmZXIgdG8gZnVsbCB0eXBlLCBub3QgdG8gdGhlIGluY29tcGxldGUgb25lLgoJKEFkZF9JbnRlcmZhY2VfVGFnX0NvbXBvbmVudHMpOiBEbyBub3RoaW5nIGlmIFJFX0ludGVyZmFjZV9UYWcgaXMgbm90CglhdmFpbGFibGUuIFJlcXVpcmVkIHRvIGdpdmUgc3VwcG9ydCB0byB0aGUgY2VydGlmaWVkIHJ1bi10aW1lLgoJKEFuYWx5emVfQ29tcG9uZW50X0RlY2xhcmF0aW9uKTogSW4gY2FzZSBvZiBhbm9ueW1vdXMgYWNjZXNzIGNvbXBvbmVudHMKCXBlcmZvcm0gbWlzc2luZyBjaGVja3MgZm9yIEFBUk0gMy45LjIoOSkgYW5kIDMuMTAuMiAoMTIuMikuCgkoUHJvY2Vzc19EaXNjcmltaW5hbnRzKTogRm9yIGFuIGFjY2VzcyBkaXNjcmltaW5hbnQsIHVzZSB0aGUKCWRpc2NyaW1pbmFudCBzcGVjaWZpY2F0aW9uIGFzIHRoZSBhc3NvY2lhdGVkX25vZGVfZm9yX2l0eXBlLCB0bwoJc2ltcGxpZnkgYWNjZXNzaWJpbGl0eSBjaGVja3MuCgoyMDA2LTAyLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNC5hZGIgKFJlbW92ZV9BYnN0cmFjdF9JbnRlcnByZXRhdGlvbnMpOiBFdmVuIGlmIHRoZXJlIGFyZSBubwoJYWJzdHJhY3QgaW50ZXJwcmV0YXRpb25zIG9uIGFuIG9wZXJhdG9yLCByZW1vdmUgaW50ZXJwcmV0YXRpb25zIHRoYXQKCXlpZWxkIEFkZHJlc3Mgb3IgYSB0eXBlIGRlcml2ZWQgZnJvbSBpdCwgaWYgb25lIG9mIHRoZSBvcGVyYW5kcyBpcyBhbgoJaW50ZWdlciBsaXRlcmFsLgoJKFRyeV9PYmplY3RfT3BlcmF0aW9uLlRyeV9QcmltaXRpdmVfT3BlcmF0aW9uLAoJVHJ5X09iamVjdF9PcGVyYXRpb24uVHJ5X0NsYXNzX1dpZGVfT3BlcmF0aW9uKTogU2V0IHByb3BlciBzb3VyY2UKCWxvY2F0aW9uIHdoZW4gY3JlYXRpbmcgdGhlIG5ldyByZWZlcmVuY2UgdG8gYSBwcmltaXRpdmUgb3IgY2xhc3Mtd2lkZQoJb3BlcmF0aW9uIGFzIGEgcGFydCBvZiByZXdyaXRpbmcgYSBzdWJwcm9ncmFtIGNhbGwuCgkoVHJ5X1ByaW1pdGl2ZV9PcGVyYXRpb25zKTogSWYgY29udGV4dCByZXF1aXJlcyBhIGZ1bmN0aW9uLCBjb2xsZWN0IGFsbAoJaW50ZXJwcmV0YXRpb25zIGFmdGVyIHRoZSBmaXJzdCBtYXRjaCwgYmVjYXVzZSB0aGVyZSBtYXkgYmUgcHJpbWl0aXZlCglvcGVyYXRpb25zIG9mIHRoZSBzYW1lIHR5cGUgd2l0aCB0aGUgc2FtZSBwcm9maWxlIGFuZCBkaWZmZXJlbnQgcmV0dXJuCgl0eXBlcy4gRnJvbSBjb2RlIHJlYWRpbmcuCgkoVHJ5X1ByaW1pdGl2ZV9PcGVyYXRpb24pOiBVc2UgdGhlIG5vZGUga2luZCB0byBjaG9vc2UgdGhlIHByb3BlcgoJb3BlcmF0aW9uIHdoZW4gYSBmdW5jdGlvbiBhbmQgYSBwcm9jZWR1cmUgaGF2ZSB0aGUgc2FtZSBwYXJhbWV0ZXIKCXByb2ZpbGUuCgkoQ29tcGxldGVfT2JqZWN0X09wZXJhdGlvbik6IElmIGZvcm1hbCBpcyBhbiBhY2Nlc3MgcGFyYW1ldGVyIGFuZCBwcmVmaXgKCWlzIGFuIG9iamVjdCwgcmV3cml0ZSBhcyBhbiBBY2Nlc3MgcmVmZXJlbmNlLCB0byBtYXRjaCBzaWduYXR1cmUgb2YKCXByaW1pdGl2ZSBvcGVyYXRpb24uCgkoRmluZF9FcXVhbGl0eV9UeXBlLCBGaW5kX09uZV9JbnRlcnApOiBIYW5kbGUgcHJvcGVybHkgZXF1YWxpdHkgZ2l2ZW4KCWJ5IGFuIGV4cGFuZGVkIG5hbWUgd2l0aCBwcmVmaXggU3RhbmRhcmQsIHdoZW4gdGhlIG9wZXJhbmRzIGFyZSBvZiBhbgoJYW5vbnltb3VzIGFjY2VzcyB0eXBlLgoJKFJlbW92ZV9BYnN0cmFjdF9PcGVyYXRpb25zKTogSWYgdGhlIG9wZXJhdGlvbiBpcyBhYnN0cmFjdCBiZWNhdXNlIGl0IGlzCglpbmhlcml0ZWQgYnkgYSB1c2VyLWRlZmluZWQgdHlwZSBkZXJpdmVkIGZyb20gQWRkcmVzcywgcmVtb3ZlIGl0IGFzCgl3ZWxsIGZyb20gdGhlIHNldCBvZiBjYW5kaWRhdGUgaW50ZXJwcmV0YXRpb25zIG9mIGFuIG92ZXJsb2FkZWQgbm9kZS4KCShBbmFseXplX01lbWJlcnNoaXBfT3ApOiBNZW1iZXJzaGlwIHRlc3Qgbm90IGFwcGxpY2FibGUgdG8gY3BwLWNsYXNzCgl0eXBlcy4KCjIwMDYtMDItMTMgIEJvYiBEdWZmICA8ZHVmZkBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDguYWRiIChOb3RlX1JlZHVuZGFudF9Vc2UpOiBTdXBwcmVzcyB1bmhlbHBmdWwgd2FybmluZyBhYm91dAoJcmVkdW5kYW50IHVzZSBjbGF1c2VzLgoJSW4gcGFydGljdWxhciwgaWYgdGhlIHNjb3BlIG9mIHR3byB1c2UgY2xhdXNlcyBvdmVybGFwcywgYnV0IG9uZSBpcyBub3QKCWVudGlyZWx5IGluY2x1ZGVkIGluIHRoZSBvdGhlciwgd2Ugc2hvdWxkIG5vdCB3YXJuLiAgVGhpcyBjYW4gaGFwcGVuCgl3aXRoIG5lc3RlZCBwYWNrYWdlcy4KCShBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBQcm90ZWN0IHRoZSBjb21waWxlciBhZ2FpbnN0IHByZXZpb3VzbHkKCXJlcG9ydGVkIGVycm9ycy4gVGhlIGJ1ZyB3YXMgcmVwb3J0ZWQgd2hlbiB0aGUgY29tcGlsZXIgd2FzIGJ1aWx0Cgl3aXRoIGFzc2VydGlvbnMgZW5hYmxlZC4KCShGaW5kX1R5cGUpOiBJZiB0aGUgbm9kZSBpcyBhICdDbGFzcyByZWZlcmVuY2UgYW5kIHRoZSBwcmVmaXggaXMgYQoJc3luY2hyb25pemVkIHR5cGUgd2l0aG91dCBhIGNvcnJlc3BvbmRpbmcgcmVjb3JkLCByZXR1cm4gdGhlIHR5cGUKCWl0c2VsZi4KCjIwMDYtMDItMTMgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDkuYWRiIChBbmFseXplX1Byb3RlY3RlZF9UeXBlLCBBbmFseXplX1Rhc2tfVHlwZSk6IENoZWNrIHRoYXQKCWlmIHRoaXMgaXMgdGhlIGZ1bGwtZGVjbGFyYXRpb24gYXNzb2NpYXRlZCB3aXRoIGEgcHJpdmF0ZSBkZWNsYXJhdGlvbgoJdGhhdCBpbXBsZW1lbnQgaW50ZXJmYWNlcywgdGhlbiB0aGUgcHJpdmF0ZSB0eXBlIGRlY2xhcmF0aW9uIG11c3QgYmUKCWxpbWl0ZWQuCgkoQW5hbHl6ZV9TaW5nbGVfUHJvdGVjdGVkLCBBbmFseXplX1NpbmdsZV9UYXNrKTogRG8gbm90IG1hcmsgdGhlIG9iamVjdAoJYXMgYWxpYXNlZC4gVGhlIHVzZSBvZiB0aGUgJ2FjY2VzcyBhdHRyaWJ1dGUgaXMgbm90IGF2YWlsYWJsZSBmb3Igc3VjaAoJb2JqZWN0IChmb3IgdGhpcyBwdXJwb3NlIHRoZSBvYmplY3Qgc2hvdWxkIGJlIGV4cGxpY2l0bHkgbWFya2VkIGFzCglhbGlhc2VkLCBidXQgYmVpbmcgYW4gYW5vbnltb3VzIHR5cGUgdGhpcyBpcyBub3QgcG9zc2libGUpLgoKMjAwNi0wMi0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX2VsYWIuYWRiIChTYW1lX0VsYWJvcmF0aW9uX1Njb3BlKTogQSBwYWNrYWdlIHRoYXQgaXMgYQoJY29tcGlsYXRpb24gdW5pdCBpcyBhbiBlbGFib3JhdGlvbiBzY29wZS4KCShBZGRfVGFza19Qcm9jKTogQWRkICdcJyBpbiAyLWxpbmUgd2FybmluZyBtZXNzYWdlLgoJKEFjdGl2YXRlX0FsbF9EZXNpcmFibGUpOiBEZWFsIHdpdGggY2FzZSBvZiB1bml0IHdpdGgnZWQgYnkgcGFyZW50CgoyMDA2LTAyLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX3R5cGUuYWRiIChXcml0ZV9PdmVybG9hZHMpOiBJbXByb3ZlIGRpc3BsYXkgb2YgY2FuZGlkYXRlCglpbnRlcnByZXRhdGlvbnMuCgkoQWRkX09uZV9JbnRlcnApOiBEbyBub3QgYWRkIHRvIHRoZSBsaXN0IG9mIGludGVycHJldGF0aW9ucyBhbGlhc2VkCgllbnRpdGllcyBjb3JyZXNwb25kaW5nIHdpdGggYW4gYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGUgdGhhdCBpcyBhbgoJaW1tZWRpYXRlIGFuY2VzdG9yIG9mIGEgdGFnZ2VkIHR5cGU7IG90aGVyd2lzZSB3ZSBoYXZlIGEgZHVtbXkKCWNvbmZsaWN0IGJldHdlZW4gdGhpcyBlbnRpdHkgYW5kIHRoZSBhbGlhc2VkIGVudGl0eS4KCShEaXNhbWJpZ3VhdGUpOiBUaGUgcHJlZGVmaW5lZCBlcXVhbGl0eSBvbiB1bml2ZXJzYWxfYWNjZXNzIGlzIG5vdAoJdXNhYmxlIGlmIHRoZXJlIGlzIGEgdXNlci1kZWZpbmVkIGVxdWFsaXR5IHdpdGggdGhlIHByb3BlciBzaWduYXR1cmUsCglkZWNsYXJlZCBpbiB0aGUgc2FtZSBkZWNsYXJhdGl2ZSBwYXJ0IGFzIHRoZSBkZXNpZ25hdGVkIHR5cGUuCgkoRmluZF9VbmlxdWVfVHlwZSk6IFRoZSB1bml2ZXJzYWxfYWNjZXNzIGVxdWFsaXR5IG9wZXJhdG9yIGRlZmluZWQgdW5kZXIKCUFJLTIzMCBkb2VzIG5vdCBjb3ZlciBwb29sIHNwZWNpZmljIGFjY2VzcyB0eXBlcy4KCShDb3ZlcnMpOiBJZiBvbmUgb2YgdGhlIHR5cGVzIGlzIGEgZ2VuZXJpYyBhY3R1YWwgc3VidHlwZSwgY2hlY2sgd2hldGhlcgoJaXQgbWF0Y2hlcyB0aGUgcGFydGlhbCB2aWV3IG9mIHRoZSBvdGhlciB0eXBlLgoKMjAwNi0wMi0xMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHNpbnB1dC1kLmFkYiAoV3JpdGVfTGluZSk6IFVwZGF0ZSB0aGUgU291cmNlX0luZGV4X1RhYmxlIGFmdGVyIGVhY2gKCWxpbmUuIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IEluX0V4dGVuZGVkX01haW5fVW5pdCB0byBwcm92aWRlCgljb3JyZWN0IHJlc3VsdHMgZm9yIGl0eXBlcyB3aGlsZSB3cml0aW5nIG91dCBleHBhbmRlZCBzb3VyY2UuCgkoQ2xvc2VfRmlsZSk6IE5vIG5lZWQgdG8gdXBkYXRlIHRoZSBzb3VyY2VfaW5kZXhfdGFibGUgaGVyZSBzaW5jZSBpdCdzCglub3cgZG9uZSBmb3IgZWFjaCBsaW5lLgoKMjAwNi0wMi0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc3ByaW50LmFkYiAoV3JpdGVfSXR5cGUpOiBQcmVzZXJ2ZSBTbG9jIG9mIGRlY2xhcmF0aW9uLCBpZiBhbnksIHRvCglwcmVzZXJ2ZSB0aGUgc291cmNlIHVuaXQgd2hlcmUgdGhlIGl0eXBlIGlzIGRlY2xhcmVkLCBhbmQgcHJldmVudCBhCgliYWNrZW5kIGFib3J0LgoJKE5vdGVfSW1wbGljaXRfUnVuX1RpbWVfQ2FsbCk6IE5ldyBwcm9jZWR1cmUKCShXcml0ZV9JdHlwZSk6IEhhbmRsZSBtaXNzaW5nIGNhc2VzIChFX0NsYXNzX1dpZGVfVHlwZSBhbmQKCUVfU3VicHJvZ3JhbV9UeXBlKQoKCSogc3ByaW50LmFkczogRG9jdW1lbnQgdXNlIG9mICQgZm9yIGltcGxpY2l0IHJ1biB0aW1lIHJvdXRpbmUgY2FsbAoKMjAwNi0wMi0xMyAgUXVlbnRpbiBPY2hlbSAgPG9jaGVtQGFkYWNvcmUuY29tPgoKCSogcy1zdGF1c2EuYWRiIChJbml0aWFsaXplX0FuYWx5emVyKTogZml4ZWQgZXJyb3IgaW4gYXNzaWdubWVudCBvZgoJdGFzayBuYW1lLgoKMjAwNi0wMi0xMyAgQm9iIER1ZmYgIDxkdWZmQGFkYWNvcmUuY29tPgoKCSogcy12YWxpbnQuYWRiIChTY2FuX0ludGVnZXIpOiBDYWxsIFNjYW5fUmF3X1Vuc2lnbmVkIGluc3RlYWQgb2YKCVNjYW5fVW5zaWduZWQsIHNvIHdlIGRvIG5vdCBzY2FuIGxlYWRpbmcgYmxhbmtzIGFuZCBzaWduIHR3aWNlLgoJSW50ZWdlcidWYWx1ZSgiLSA1IikgYW5kIEludGVnZXInVmFsdWUoIi0rNSIpIG5vdyBjb3JyZWN0bHkKCXJhaXNlIENvbnN0cmFpbnRfRXJyb3IuCgoJKiBzLXZhbGxsaS5hZGIgKFNjYW5fTG9uZ19Mb25nX0ludGVnZXIpOiBDYWxsCglTY2FuX1Jhd19Mb25nX0xvbmdfVW5zaWduZWQgaW5zdGVhZCBvZiBTY2FuX0xvbmdfTG9uZ19VbnNpZ25lZCwgc28gd2UKCWRvIG5vdCBzY2FuIGxlYWRpbmcgYmxhbmtzIGFuZCBzaWduIHR3aWNlLgoJSW50ZWdlcidWYWx1ZSgiLSA1IikgYW5kIEludGVnZXInVmFsdWUoIi0rNSIpIG5vdyBjb3JyZWN0bHkKCXJhaXNlIENvbnN0cmFpbnRfRXJyb3IuCgoJKiBzLXZhbGxsdS5hZHMsIHMtdmFsbGx1LmFkYiAoU2Nhbl9SYXdfTG9uZ19Mb25nX1Vuc2lnbmVkLAoJU2Nhbl9Mb25nX0xvbmdfVW5zaWduZWQpOiBTcGxpdCBvdXQgbW9zdCBvZiB0aGUgcHJvY2Vzc2luZyBmcm9tCglTY2FuX0xvbmdfTG9uZ19VbnNpZ25lZCBvdXQgaW50bwoJU2Nhbl9SYXdfTG9uZ19Mb25nX1Vuc2lnbmVkLCBzbyB0aGF0IFZhbF9MTEkgY2FuIGNhbGwgdGhlIFJhd18gdmVyc2lvbi4KCVRoaXMgcHJldmVudHMgc2Nhbm5pbmcgbGVhZGluZyBibGFua3MgYW5kIHNpZ24gdHdpY2UuCglBbHNvIGZpeGVkIGEgYnVnOiBNb2R1bGFyJ1ZhbHVlKCItMCIpIHNob3VsZCByYWlzZSBDb25zdHJhaW50X0Vycm9yCglTZWUgUk0tMy41KDQ0KS4KCgkqIHMtdmFsdW5zLmFkcywgcy12YWx1bnMuYWRiIChTY2FuX1Jhd19VbnNpZ25lZCwgU2Nhbl9VbnNpZ25lZCk6IFNwbGl0CglvdXQgbW9zdCBvZiB0aGUgcHJvY2Vzc2luZyBmcm9tIFNjYW5fVW5zaWduZWQgb3V0IGludG8KCVNjYW5fUmF3X1Vuc2lnbmVkLCBzbyB0aGF0IFZhbF9MTEkgY2FuIGNhbGwgdGhlIFJhd18gdmVyc2lvbi4KCVRoaXMgcHJldmVudHMgc2Nhbm5pbmcgbGVhZGluZyBibGFua3MgYW5kIHNpZ24gdHdpY2UuCgoJKiBzLXZhbHV0aS5hZHMsIHMtdmFsdXRpLmFkYiAoU2Nhbl9QbHVzX1NpZ24pOiBBZGQgU2Nhbl9QbHVzX1NpZ24sIGZvcgoJdXNlIHdpdGggTW9kdWxhcidWYWx1ZSBhdHRyaWJ1dGUuCgkoU2Nhbl9QbHVzX1NpZ24pOiBBZGQgU2Nhbl9QbHVzX1NpZ24sIGZvciB1c2Ugd2l0aCBNb2R1bGFyJ1ZhbHVlCglhdHRyaWJ1dGUuCgoyMDA2LTAyLTEzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtd2NoamlzLmFkYiAoSklTX1RvX0VVQyk6IFJhaXNlIENvbnN0cmFpbnRfRXJyb3IgZm9yIGludmFsaWQgdmFsdWUKCjIwMDYtMDItMTMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiB0cmFjZWJhay5jIChQUEMgQUlYL0Rhcndpbik6IERlZmluZSBGT1JDRV9DQUxMIHRvIDEuCgkoUFBDIFZ4V29ya3MpOiBMaWtld2lzZS4KCShHZW5lcmljIHVud2luZGVyKTogRGVmaW5lIEZPUkNFX0NBTEwgdG8gMCBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLgoJKGZvcmNlZF9jYWxsZWUpOiBNYWtlIG5vbi1pbmxpbmFibGUgYW5kIG5vbi1wdXJlLgoJKF9fZ25hdF9iYWNrdHJhY2UpOiBDYWxsIGZvcmNlZF9jYWxsZWUgaWYgRk9SQ0VfQ0FMTCBpcyBzZXQgdG8gMS4KCjIwMDYtMDItMTMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCSAgICBCZW4gQnJvc2dvbCAgPGJyb3Nnb2xAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnbmF0X3JtLnRleGksIGduYXRfdWduLnRleGk6IFJlbW92ZSBsaW1pdGF0aW9ucyB3aXRoIHNwYXJjIG02NAoJc3VwcG9ydC4KCURvY3VtZW50IHRoYXQgZ25hdGJpbmQgLU0gb3B0aW9uIGlzIGZvciBjcm9zcyBlbnZpcm9ubWVudHMgb25seS4KCUFkZGVkIGRlc2NyaXB0aW9uIG9mIHVzaW5nIGduYXRtZW0gdG8gdHJhY2UgZ25hdCBydGwgYWxsb2NzIGFuZCBkZWFsbG9jcwoJQWRkIG5vdGUgb24gdXNlIG9mICQgdG8gbGFiZWwgaW1wbGljaXQgcnVuIHRpbWUgY2FsbHMKCUFkZCBkb2N1bWVudGF0aW9uIGZvciAtZ25hdHlJIChjaGVjayBtb2RlIElOKQoJVXBkYXRlZCBjaGFwdGVyIG9uIGNvbXBhdGliaWxpdHkgd2l0aCBIUCBBZGEKCVZNUy1vcmllbnRlZCBlZGl0cy4KCVJhbiBzcGVsbCBhbmQgY29ycmVjdGVkIGVycm9ycwoJQWRkIGRvY3VtZW50YXRpb24gZm9yIGduYXRiaW5kIC1kIGFuZCByZXdvcmsgZG9jdW1lbnRhdGlvbiBvZiAtRAoJYXQgdGhlIHNhbWUgdGltZS4KCUFkZCBzdWJwcm9ncmFtL2RhdGEgZWxpbWluYXRpb24gc2VjdGlvbi4KCU1pbm9yIGVkaXRpbmcgb2YgYW5uZXggQS4KCUFkZCBzZWN0aW9uIGZvciBnbmF0Y2hlY2suCglBZGQgZG9jdW1lbnRhdGlvbiBmb3IgcmVzdHJpY3Rpb24gTm9fRGlzcGF0Y2hpbmdfQ2FsbHMKCUFkZCBkb2N1bWVudGF0aW9uIGZvciBwcmFnbWEgQWRhXzIwMDUKCVJlbW92ZSBtZW50aW9uIG9mIG9ic29sZXRlIHByYWdtYSBQcm9wYWdhdGVfRXhjZXB0aW9ucwoJRG9jdW1lbnQgdGhhdCBwcmFnbWEgVW5yZWZlcmVuY2VkIGNhbiBhcHBlYXIgYWZ0ZXIgRE8gaW4gQUNDRVBUCglDbGFyaWZ5IFB1cmVfRnVuY3Rpb24gZm9yIGxpYnJhcnkgbGV2ZWwgdW5pdHMKCU1lbnRpb24gTWF4L01pbiBpbiBjb25uZWN0aW9uIHdpdGggTm9fSW1wbGljaXRfQ29uZGl0aW9uYWxzCglOb19XaWRlX0NoYXJhY3RlcnMgcmVzdHJpY3Rpb24gaXMgbm8gbG9uZ2VyIHBhcnRpdGlvbi13aWRlCglBZGQgYSBuaWNlIGV4YW1wbGUgZm9yIFVuaXZlcnNhbF9MaXRlcmFsX1N0cmluZyBhdHRyaWJ1dGUKCURvY3VtZW50IHRoYXQgcHJhZ21hIE5vX1JldHVybiBjYW4gdGFrZSBtdWx0aXBsZSBhcmd1bWVudHMKCgkqIHVnX3dvcmRzOiBBZGRlZCBlbnRyeSBmb3IgZ25hdGNoZWNrCgoJKiBnLWN0cmxfYy5hZHMgKEluc3RhbGxfSGFuZGxlcik6IEVuaGFuY2UgY29tbWVudHMKCgkqIGctb3NfbGliLmFkczogQWRkIGNvbW1lbnRzIHRvIE9TX0V4aXQgdGhhdCBpdCBpcyBhYnJ1cHQgdGVybWluYXRpb24KCgkqIGctdHJhc3ltLmFkczogQWRkIGRvY3VtZW50YXRpb24gb24gaG93IHRvIGRvIG9mZiBsaW5lIHN5bWJvbGljCgl0cmFjZWJhY2sgY29tcHV0YXRpb24uCgoJKiBzLWZhdGdlbi5hZGI6IEFkZCBjb21tZW50cyBmb3IgVW5hbGlnbmVkX1ZhbGlkCgoJKiBzdGFuZC5hZHM6IEZpeCB0eXBvIGluIGNvbW1lbnQKCjIwMDYtMDItMDkgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogTWFrZS1sYW5nLmluIChjaGVjay1nbmF0KTogUnVuIHJ1bl9hY2F0cyB3aXRoICQoU0hFTEwpLgoKMjAwNi0wMi0wNiAgUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJKiBkZWNsLmMgKGduYXRfc3Vic3RpdHV0ZV9pbl90eXBlKTogRG9uJ3QgaGFuZGxlIENIQVJfVFlQRS4KCjIwMDYtMDItMDMgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJUFIgdGFyZ2V0LzI1OTI2CgkqIGluaXRpYWxpemUuYyAoX19nbmF0X2luaXRpYWxpemUpOiBQcm92aWRlIEhQLVVYIDEwIGhvc3QgYW5kIHRhcmdldAoJaW1wbGVtZW50YXRpb24gdGhhdCBjYWxscyBfX21haW4uCgoyMDA2LTAxLTI1ICBQZXRlciBPJ0dvcm1hbiAgPHBldGVyQHBvZ21hLmNvbT4KCglQUiBib290c3RyYXAvMjU4NTkKCSogTWFrZWZpbGUuaW4gKEdDQ19MSU5LKTogUmVtb3ZlIHF1b3Rlcy4KCSh0b29scyB0YXJnZXRzKTogTGluayB3aXRoIGVpdGhlciAkKEdOQVRMSU5LKSAtLUdDQz0iJChHQ0NfTElOSykiCglvciAkKEdDQ19MSU5LKS4KCgkocG93ZXJwYy1kYXJ3aW4pOiBQYXNzIC1zaGFyZWQtbGliZ2NjIHdoZW4gYnVpbGRpbmcgc2hhcmVkIGxpYnJhcnkuCgoyMDA2LTAxLTIwICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCVBSIGFkYS8yNDUzMwoJKiBzLW9zaW50ZS1saW51eC1ocHBhLmFkczogUmVkdWNlIGFsaWdubWVudCBvZiBhdG9taWNfbG9ja190IHRvIDguCgoyMDA1LTEyLTI4ICBKb2huIERhdmlkIEFuZ2xpbiAgPGRhdmUuYW5nbGluQG5yYy1jbnJjLmdjLmNhPgoKCSogcy1vc2ludGUtbGludXgtaHBwYS5hZHM6IENvcnJlY3QgYWxpZ25tZW50IG9mIGF0b21pY19sb2NrX3QuCgoyMDA1LTEyLTEyICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIGR1bW15IHNldHRpbmcgb2YgR0NDX0ZPUl9UQVJHRVQsIG5vIGxvbmdlcgoJbmVlZGVkLgoKMjAwNS0xMi0xMiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogTWFrZS1sYW5nLmluOiBVcGRhdGUgZGVwZW5kZW5jaWVzCgoyMDA1LTEyLTEyICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBNYWtlLWxhbmcuaW46IEFkZCBydWxlIGZvciBhZGEvZXhwX3NlbC5vCgoyMDA1LTEyLTEyICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBNYWtlZmlsZS5pbiAobWluZ3cgc2VjdGlvbik6IFJlbW92ZSBFSF9NRUNIQU5JU00gc2V0dGluZy4KCjIwMDUtMTItMDkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGduYXR2c24uYWRzIChMaWJyYXJ5X1ZlcnNpb24pOiBCdW1wIHRvIHZlcnNpb24gNC4yCgkoQVNJU19WZXJzaW9uX051bWJlcik6IEJ1bXBlZC4KCjIwMDUtMTItMDkgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBtbGliLXRndC12bXMtaWE2NC5hZGIsIG1saWItdGd0LXZtcy1hbHBoYS5hZGIgKElzX0ludGVyZmFjZSk6IENoYW5nZQoJQWRhIGJpbmQgZmlsZSBwcmVmaXggb24gVk1TIGZyb20gYiQgdG8gYl9fLgoJKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IENoYW5nZSBJbml0IGZpbGUgc3VmZml4IG9uIFZNUyBmcm9tICRpbml0IHRvCglfX2luaXQuCgoJKiBwcmotbm1zYy5hZGI6IENoYW5nZSBzb21lIEhvc3RwYXJtLk9wZW5WTVMgY2hlY2tzIHRvCglUYXJncGFybS5PcGVuVk1TX09uX1RhcmdldC4KCShPYmplY3RfU3VmZml4KTogSW5pdGlhbGl6ZSB3aXRoIHRhcmdldCBvYmplY3Qgc3VmZml4LgoJKEdldF9Vbml0KTogQ2hhbmdlIEFkYSBiaW5kIGZpbGUgcHJlZml4IG9uIFZNUyBmcm9tIGIkIHRvIGJfXy4KCgkqIGJ1dGlsLmFkYjogQ2hhbmdlIHNvbWUgSG9zdHBhcm0uT3BlblZNUyBjaGVja3MgdG8KCVRhcmdwYXJtLk9wZW5WTVNfT25fVGFyZ2V0LgoKCSogY2xlYW4uYWRiOiBDaGFuZ2Ugc29tZSBIb3N0cGFybS5PcGVuVk1TIGNoZWNrcyB0bwoJVGFyZ3Bhcm0uT3BlblZNU19Pbl9UYXJnZXQuCgkoT2JqZWN0X1N1ZmZpeCk6IEluaXRpYWxpemUgd2l0aCBjYWxsIHRvIEdldF9UYXJnZXRfT2JqZWN0X1N1ZmZpeC4KCSh7ZGVjbGFyYWN0aW9ufSxEZWxldGVfQmluZGVyX0dlbmVyYXRlZF9GaWxlcyx7aW5pdGlhbGl6YXRpb259KTogQ2hhbmdlCglBZGEgYmluZCBmaWxlIHByZWZpeCBvbiBWTVMgZnJvbSBiJCB0byBiX18uCgoJKiBnbmF0bGluay5hZGIgKFByb2Nlc3NfQXJncyk6IENhbGwgQWRkX1NyY19TZWFyY2hfRGlyIGZvciAtSSBpbgoJLS1HQ0Mgc28gdGhhdCBHZXRfVGFyZ2V0X1BhcmFtZXRlcnMgY2FuIGZpbmQgc3lzdGVtLmFkcy4KCShHbmF0bGluayk6IENhbGwgR2V0X1RhcmdldF9QYXJhbWV0ZXJzIGluIG1haW5saW5lLgoJSW5pdGlhbGl6ZSBzdGFuZGFyZCBwYWNrYWdlcyBmb3IgVGFyZ3Bhcm0uCglDaGFuZ2Ugc29tZSBIb3N0cGFybS5PcGVuVk1TIGNoZWNrcyB0byBUYXJncGFybS5PcGVuVk1TX09uX1RhcmdldC4KCShQcm9jZXNzX0FyZ3MpOiBBbHNvIENoZWNrIGZvciBvYmplY3QgZmlsZXMgd2l0aCB0YXJnZXQgb2JqZWN0CglleHRlbnNpb24uCgkoTWFrZV9CaW5kZXJfRmlsZV9OYW1lcyk6IENyZWF0ZSB3aXRoIHRhcmdldCBvYmplY3QgZXh0ZW5zaW9uLgoJKE1ha2VfQmluZGVyX0ZpbGVfTmFtZXMpOiBDaGFuZ2UgQWRhIGJpbmQgZmlsZSBwcmVmaXggb24gVk1TIGZyb20gYiQKCXRvIGJfXy4KCgkqIG1saWItcHJqLmFkYjogQ2hhbmdlIHNvbWUgSG9zdHBhcm0uT3BlblZNUyBjaGVja3MgdG8KCVRhcmdwYXJtLk9wZW5WTVNfT25fVGFyZ2V0LgoJKHtkZWNsYXJhdGlvbn0sQnVpbGRfTGlicmFyeSxDaGVja19MaWJyYXJ5KTogQ2hhbmdlIEFkYSBiaW5kIGZpbGUKCXByZWZpeCBvbiBWTVMgZnJvbSBiJCB0byBiX18uCgoJKiBvc2ludC1iLmFkYjogQ2hhbmdlIHNvbWUgSG9zdHBhcm0uT3BlblZNUyBjaGVja3MgdG8KCVRhcmdwYXJtLk9wZW5WTVNfT25fVGFyZ2V0LgoJKENyZWF0ZV9CaW5kZXJfT3V0cHV0KTogQ2hhbmdlIEFkYSBiaW5kIGZpbGUgcHJlZml4IG9uIFZNUyBmcm9tIGIkIHRvCgliX18uCgoJKiB0YXJnZXh0LmM6IE5ldyBmaWxlLgoKCSogTWFrZWZpbGUuaW46IGFkZCBzdXBwb3J0IGZvciB2eHdvcmtzNjUzIGJ1aWxkcwoJKC4uLy4uL3Z4YWRkcjJsaW5lKTogZ25hdGxpbmsgd2l0aCB0YXJnZXh0Lm8uCgkoVE9PTFNfTElCUyk6IE1vdmUgdGFyZ2V4dC5vIHRvIHByZWNlZGUgbGliZ25hdC4KCShpbml0Lm8sIGluaXRpYWxpemUubyk6IE1pbm9yIGNsZWFuIHVwIGluIGRlcGVuZGVuY2llcy4KCShHTkFUTElOS19PQkpTKTogQWRkIHRhcmdwYXJtLm8sIHNuYW1lcy5vCglBZGQgcnVsZXMgZm8gYnVpbGRpbmcgdGFyZ2V4dC5vIGFuZCBsaW5raW5nIGl0IGV4cGxpY2l0bHkgd2l0aCBhbGwKCXRvb2xzLgoJQWxzbyBhZGQgdGFyZ2V4dC5vIHRvIGduYXRsaWIuCgoJKiBNYWtlLWxhbmcuaW46IEFkZCBydWxlcyBmb3IgYnVpbGRpbmcgdGFyZ2V4dC5vIGFuZCBsaW5raW5nIGl0IGluCgl3aXRoIGduYXQxIGFuZCBnbmF0YmluZC4KCUFkZCBlbnRyeSBmb3IgZXhwX3NlbC5vLgoKCSogb3NpbnQuYWRiIENoYW5nZSBzb21lIEhvc3RwYXJtLk9wZW5WTVMgY2hlY2tzIHRvCglUYXJncGFybS5PcGVuVk1TX09uX1RhcmdldC4KCShPYmplY3RfRmlsZV9OYW1lKTogVXNlIHRhcmdldCBvYmplY3Qgc3VmZml4LgoKCSogb3NpbnQuYWRzIChPYmplY3RfU3VmZml4KTogUmVtb3ZlLCBubyBsb25nZXIgdXNlZC4KCShUYXJnZXRfT2JqZWN0X1N1ZmZpeCk6IEluaXRpYWxpemUgd2l0aCB0YXJnZXQgb2JqZWN0IHN1ZmZpeC4KCgkqIHJpZGVudC5hZHM6IEFkZCBzcGVjaWFsIGV4Y2VwdGlvbiB0byBsaWNlbnNlLgoKCSogdGFyZ3Bhcm0uYWRiIChHZXRfVGFyZ2V0X1BhcmFtZXRlcnMpOiBTZXQgdGhlIHZhbHVlIG9mCglNdWx0aV9Vbml0X0luZGV4X0NoYXJhY3RlciBhZnRlciBPcGVuVk1TX09uX1RhcmdldCBnZXRzIGl0cyBkZWZpbml0aXZlCgl2YWx1ZS4KCShHZXRfVGFyZ2V0X1BhcmFtZXRlcnMpOiBTZXQgT3BlblZNU19Pbl9UYXJnZXQgaWYgb3BlbnZtcy4KCQoJKiB0YXJncGFybS5hZHM6IEFkZCBzcGVjaWFsIGV4Y2VwdGlvbiB0byBsaWNlbnNlLgoKCSogZy1vc19saWIuYWRzLCBnLW9zX2xpYi5hZGIgKEdldF9UYXJnZXRfRGVidWdnYWJsZV9TdWZmaXgpOiBOZXcKCWZ1bmN0aW9uLgoJKENvcHlfRmlsZSk6IE1ha2Ugc3VyZSBmcm9tIGZpbGUgaXMgY2xvc2VkIGlmIGVycm9yIG9uIHRvIGZpbGUKCShHZXRfVGFyZ2V0X0V4ZWN1dGFibGVfU3VmZml4LCBHZXRfVGFyZ2V0X09iamVjdF9TdWZmaXgpOiBOZXcgZnVuY3Rpb25zLgoKCSogbWFrZS5hZGIgKE9iamVjdF9TdWZmaXgpOiBJbnRpYWxpemUgd2l0aCBHZXRfVGFyZ2V0X09iamVjdF9TdWZmaXguCgkoRXhlY3V0YWJsZV9TdWZmaXgpOiBJbnRpYWxpemUgd2l0aCBHZXRfVGFyZ2V0X0V4ZWN1dGFibGVfU3VmZml4LgoKCSogb3NpbnQtYy5hZGIgKFNldF9PdXRwdXRfT2JqZWN0X0ZpbGVfTmFtZSk6IEluaXRpYWxpemUgZXh0ZW5zaW9uIHdpdGgKCXRhcmdldCBvYmplY3Qgc3VmZml4LgoKMjAwNS0xMi0wOSAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCSAgICBRdWVudGluIE9jaGVtICA8b2NoZW1AYWRhY29yZS5jb20+CgkgICAgRmxvcmlhbiBWaWxsb2luZyAgPHZpbGxvaW5nQGFkYWNvcmUuY29tPgoKCSogYS10YXN0ZXIuYWRzLCBhLXRhc3Rlci5hZGI6IE5ldyBmaWxlcy4KCgkqIGEtZWxjaGhhLmFkYiAoTGFzdF9DaGFuY2VfSGFuZGxlcik6IENoYW5nZSB0aGUgdGFzayB0ZXJtaW5hdGlvbiBzb2Z0CglsaW5rIHRvIHRoZSB2ZXJzaW9uIHRoYXQgZG9lcyBub3RoaW5nLiBUaGlzIHdheSB0aGUgdGFzayB0ZXJtaW5hdGlvbgoJcm91dGluZSBpcyBub3QgZXhlY3V0ZWQgdHdpY2UgZm9yIHRoZSBlbnZpcm9ubWVudCB0YXNrIHdoZW4gZmluaXNoaW5nCgliZWNhdXNlIG9mIGFuIHVuaGFuZGxlZCBleGNlcHRpb24uCgoJKiBhLWV4ZXh0ci5hZGIgKE5vdGlmeV9VbmhhbmRsZWRfRXhjZXB0aW9uKTogQ2FsbCB0aGUgdGFzayB0ZXJtaW5hdGlvbgoJaGFuZGxlciBiZWNhdXNlIG9mIGFuIHVuaGFuZGxlZCBleGNlcHRpb24uCgoJKiBhLXRhc2lkZS5hZGIgKEFib3J0X1Rhc2tzKTogQ2FsbCB0aGUgQWJvcnRfVGFza3MgcHJvY2VkdXJlIGZyb20KCVN5c3RlbS5UYXNraW5nLlV0aWxpdGllcyBpbnN0ZWFkIG9mIHRoYXQgaW4gU3lzdGVtLlRhc2tpbmcuU3RhZ2VzLgoKCSogcy1maW5pbXAuYWRiIChpbml0aWFsaXphdGlvbiBjb2RlKTogTW9kaWZ5IHRoZSBzb2Z0IGxpbmsgZm9yIHRoZQoJZmluYWxpemF0aW9uIG9mIHRoZSBnbG9iYWwgbGlzdCBpbnN0ZWFkIG9mIEFkYWZpbmFsLgoKCSogcy1zb2ZsaW4uYWRzLCBzLXNvZmxpbi5hZGIgKFRhc2tfVGVybWluYXRpb25fTlQpOiBBZGQgdGhpcwoJbm9uLXRhc2tpbmcgdmVyc2lvbiBvZiB0aGUgc29mdCBsaW5rIGZvciB0YXNrIHRlcm1pbmF0aW9uLiBXZSBkbwoJbm90aGluZyBzaW5jZSBpZiB3ZSBhcmUgdXNpbmcgdGhlIG5vbi10YXNraW5nIHZlcnNpb24gaXQKCW1lYW5zIHRoYXQgdGhlIHRhc2sgdGVybWluYXRpb24gZnVuY3Rpb25hbGl0eSBpcyBub3QgdXNlZC4KCShOdWxsX0ZpbmFsaXplX0dsb2JhbF9MaXN0KTogQWRkIHRoaXMgbnVsbCB2ZXJzaW9uIGZvciB0aGUgcHJvY2VkdXJlCglpbiBjaGFyZ2Ugb2YgZmluYWxpemluZyB0aGUgZ2xvYmFsIGxpc3QgZm9yIGNvbnRyb2xsZWQgb2JqZWN0cy4KCShOdWxsX0FkYWZpbmFsKTogUmVtb3ZlIHRoaXMgcHJvY2VkdXJlLiBBZGFmaW5hbF9OVCBoYXMgYmVlbiBjcmVhdGVkCglpbnN0ZWFkIGZvciBoYW5kbGluZyBydW4tdGltZSB0ZXJtaW5hdGlvbiBpbiBhIG1vcmUgZmxleGlibGUgd2F5LgoJKEFkYWZpbmFsX05UKTogVGhpcyBuZXcgcHJvY2VkdXJlIHdpbGwgdGFrZSBjYXJlIG9mIGZpbmFsaXppbmcgdGhlCglnbG9iYWwgbGlzdCBmb3IgY29udHJvbGxlZCBvYmplY3RzIGlmIG5lZWRlZCwgYnV0IG5vIHRhc2tpbmcKCWZpbmFsaXphdGlvbi4KCgkqIHMtdGFyZXN0LmFkYiAoVGFza19Mb2NrKTogRG8gbm90IHRyeSB0byBsb2NrIGFnYWluIHRoZQoJR2xvYmFsX1Rhc2tfTG9jayBpZiB3ZSBhbHJlYWR5IG93biBpdC4gT3RoZXJ3aXNlLCB3ZSBnZXQgYmxvY2tlZCBpbgoJc29tZSBydW4tdGltZSBvcGVyYXRpb25zLgoJKFRhc2tfVW5sb2NrKTogRG8gbm90IHRyeSB0byBhY3R1YWxseSB1bmxvY2sgdGhlIEdsb2JhbF9UYXNrX0xvY2sKCXVudGlsIGFsbCBuZXN0ZWQgbG9ja3MgaGF2ZSBiZWVuIHJlbGVhc2VkLgoJKFRhc2tfV3JhcHBlcik6IENhbGwgdGhlIGZhbGwtYmFjayB0YXNrIHRlcm1pbmF0aW9uIGhhbmRsZXIuIEl0CglhcHBsaWVzIHRvIGFsbCB0YXNrcyBidXQgdGhlIGVudmlyb25tZW50IHRhc2suCgkoRmluYWxpemVfR2xvYmFsX1Rhc2tzKTogQWRkIHRoZSBjYWxsIGZvciB0aGUgdGFzayB0ZXJtaW5hdGlvbgoJcHJvY2VkdXJlIGZvciB0aGUgZW52aXJvbm1lbnQgdGFzay4KCShUYXNrX1dyYXBwZXIpOiBzdXBwcmVzcyB3YXJuaW5ncyBhcm91bmQgZGVjbGFyYXRpb24gb2YKCVNlY29uZGFyeV9TdGFja19BZGRyZXNzLgoKCSogcy10YXNpbmkuYWRiIChGaW5hbF9UYXNrX1VubG9jayk6IEdsb2JhbF9UYXNrX0xvY2tfTmVzdGluZyBoYXMgYmVlbgoJbW92ZWQgdG8gdGhlIENvbW1vbl9BVENCIHJlY29yZC4KCShUYXNrX0xvY2spOiBHbG9iYWxfVGFza19Mb2NrX05lc3RpbmcgaGFzIGJlZW4gbW92ZWQgdG8gdGhlCglDb21tb25fQVRDQiByZWNvcmQuCgkoVGFza19VbmxvY2spOiBHbG9iYWxfVGFza19Mb2NrX05lc3RpbmcgaGFzIGJlZW4gbW92ZWQgdG8gdGhlCglDb21tb25fQVRDQiByZWNvcmQuCgoJKiBzLXRhc2tpbi5hZGIgKEluaXRpYWxpemVfQVRDQik6IEluaXRpYWxpemUgR2xvYmFsX1Rhc2tfTG9ja19OZXN0aW5nLAoJRmFsbF9CYWNrX0hhbmRsZXIsIGFuZCBTcGVjaWZpY19IYW5kbGVyLgoKCSogcy10YXNraW4uYWRzIChDYXVzZV9PZl9UZXJtaW5hdGlvbik6IFJlZGVmaW5lIHRoaXMgdHlwZSBoZXJlLCBhbHJlYWR5CglkZWZpbmVkIGluIEFkYS5UYXNrX1Rlcm1pbmF0aW9uLCB0byBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCgkoVGVybWluYXRpb25fSGFuZGxlcik6IFJlZGVmaW5lIHRoaXMgdHlwZSBoZXJlLCBhbHJlZHkgZGVmaW5lZCBpbgoJQWRhLlRhc2tfVGVybWluYXRpb24sIGZvciBhdm9pZGluZyBjaXJjdWxhciBkZXBlbmRlbmNpZXMuCgkoQ29tbW9uX0FUQ0IpOiBBZGQgdGhlIEZhbGxfQmFja19IYW5kbGVyIGFuZCBTcGVjaWZpY19IYW5kbGVyIHJlcXVpcmVkCglmb3Igc3RvcmluZyB0YXNrIHRlcm1pbmF0aW9uIGhhbmRsZXJzLiBJbiBhZGRpdGlvbiwKCUdsb2JhbF9UYXNrX0xvY2tfTmVzdGluZyBoYXMgYmVlbiBtb3ZlZCBmcm9tIEFkYV9UYXNrX0NvbnRyb2xfQmxvY2sgdG8KCUNvbW1vbl9BVENCIGJlY2F1c2UgaXQgaXMgdXNlZCBieSBib3RoIHRoZSByZWd1bGFyIGFuZCB0aGUgcmVzdHJpY3RlZAoJcnVuIHRpbWVzLgoJKEFkYV9UYXNrX0NvbnRyb2xfQmxvY2spOiBNb3ZlIEdsb2JhbF9UYXNrX0xvY2tfTmVzdGluZyBmcm9tIGhlcmUgdG8KCUNvbW1vbl9BVENCIGJlY2F1c2UgaXQgaXMgdXNlZCBieSBib3RoIHRoZSByZWd1bGFyIGFuZCB0aGUgcmVzdHJpY3RlZAoJcnVuIHRpbWVzLgoJKENvbW1vbl9BVENCKTogQWRkZWQgYSBkeW5hbWljIHRhc2sgYW5hbHl6ZXIgZmllbGQuCgoJKiBzLXRhc3N0YS5hZGIgKEFib3J0X1Rhc2tzKTogTW92ZSB0aGUgY29kZSBpbiBjaGFyZ2Ugb2YgY2hlY2tpbmcKCXBvdGVudGlhbGx5IGJsb2NraW5nIG9wZXJhdGlvbnMgdG8gU3lzdGVtLlRhc2tpbmcuVXRpbGl0aWVzLkFib3J0X1Rhc2tzLgoJKFRhc2tfV3JhcHBlcik6IENhbGwgdGhlIHRhc2sgdGVybWluYXRpb24gaGFuZGxlci4gSXQgYXBwbGllcyB0byBhbGwKCXRhc2tzIGJ1dCB0aGUgZW52aXJvbm1lbnQgdGFzay4KCShGaW5hbGl6ZV9HbG9iYWxfVGFza3MpOiBDYWxsIHRoZSB0YXNrIHRlcm1pbmF0aW9uIHByb2NlZHVyZSBmb3IgdGhlCgllbnZpcm9ubWVudCB0YXNrLiBUaGUgY2FsbCB0byBGaW5hbGl6ZV9HbG9iYWxfTGlzdCBpcyBub3cgcGVyZm9ybWVkCgl1c2luZyB0aGUgc29mdCBsaW5rcyBtZWNoYW5pc20uCgkoVGFza19XcmFwcGVyKTogYWRkZWQgZHluYW1pYyBzdGFjayBhbmFseXNpcy4KCgkqIHMtdGFzdXRpLmFkYiAoQWJvcnRfVGFza3MpOiBUaGUgY29kZSBpbiBjaGFyZ2Ugb2YgY2hlY2tpbmcKCXBvdGVudGlhbGx5IGJsb2NraW5nIG9wZXJhdGlvbnMgaGFzIGJlZW4gbW92ZWQgZnJvbQoJU3lzdGVtLlRhc2tpbmcuU3RhZ2VzLkFib3J0X1Rhc2tzIHRvIHRoaXMgcHJvY2VkdXJlLiBUaGVyZSBjYW4gYmUKCWRpcmVjdCBjYWxscyB0byBTeXN0ZW0uVGFza2luZy5VdGlsaXRpZXMuQWJvcnRfVGFza3MgdGhhdCBkbyBub3QgcGFzcwoJdGhyb3VnaCBTeXN0ZW0uVGFza2luZy5TdGFnZXMuQWJvcnRfVGFza3MsIGFuZCB3ZSBkbyBub3Qgd2FudCB0byBtaXNzCgl0aGlzIHJ1bi10aW1lIGNoZWNrLgoKCSogcy1zb2xpdGEuYWRiIChUYXNrX1Rlcm1pbmF0aW9uX0hhbmRsZXJfVCk6IEFkZCB0aGlzIHRhc2stc2FmZSB2ZXJzaW9uCglvZiB0YXNrIHRlcm1pbmF0aW9uIHByb2NlZHVyZS4KCShJbml0X1Rhc2tpbmdfU29mdF9MaW5rcyk6IEluc3RhbGwgdGhlIHRhc2stc2FmZSB2ZXJzaW9uIG9mIHRoZSBzb2Z0CglsaW5rIGZvciB0aGUgdGFzayB0ZXJtaW5hdGlvbiBwcm9jZWR1cmUuCgoJKiBiaW5kdXNnLmFkYjogKEJpbmR1c2cpOiBBZGRlZCBkb2N1bWVudGF0aW9uIGZvciAtdSBvcHRpb24uCgoJKiBiaW5kZ2VuLmFkYiAoR2V0X01haW5fQWRhKSBBZGRlZCBoYW5kbGluZyBvZiBkeW5hbWljIHN0YWNrIGFuYWx5c2lzLgoJKEdldF9NYWluX0MpOiBBZGQgaGFuZGxpbmcgb2YgZHluYW1pYyBzdGFjayBhbmFseXNpcy4KCShHZW5fT3V0cHV0X0ZpbGVfQyk6IEFkZCBleHRlcm5hbCBmdW5jdGlvbnMgZm9yIGR5bmFtaWMgc3RhY2sgYW5hbHlzaXMuCgoJKiBNYWtlZmlsZS5ydGw6IEFkZCBlbnRyeSBmb3IgYS10YXN0ZXIgKEFkYS5UYXNrX1Rlcm1pbmF0aW9uKS4KCShHTkFUUlRMX05PTlRBU0tJTkdfT0JKUykgQWRkZWQgZW50cmllcyBmb3IgZHluYW1pYyBzdGFjayBhbmFseXNpcwoJKEdOQVRSVExfTk9OVEFTS0lOR19PQkpTKTogQWRkIEFsdGlWZWMgZmlsZXMuCgoJKiBvcHQuYWRzOiBBZGRlZCBmbGFncyB1c2VkIGJ5IGR5bmFtaWMgc3RhY2sgbWVhc3VyZW1lbnQuCgkoTWF4X0xpbmVfTGVuZ3RoKTogUmVtb3ZlIChub3QgdXNlZCBhbnltb3JlKQoKCSogcy1pby5hZHMsIHMtaW8uYWRiIChTdGFuZGFyZF9FcnJvcik6IG5ldyBzdWJwcm9ncmFtCgkoU3RhbmRhcnRfT3V0cHV0KTogbmV3IHN1YnByb2dyYW0KCShTZXRfT3V0cHV0KTogbmV3IHN1YnByb2dyYW0KCShQdXQpOiBub3cgdXNlcyB0aGUgdmFsdWUgb2YgQ3VycmVudF9PdXQgdG8ga25vdyBpZiB0aGUgb3V0cHV0IGhhcyB0byBiZQoJc2VuZCB0byBzdGRlcnIgb3Igc3Rkb3V0LgoJCgkqIHMtc3RhdXNhLmFkczogQ29tcGxldGUgaW1wbGVtZW50YXRpb24uCgoJKiBzd2l0Y2gtYi5hZGI6IEFkZGVkIGhhbmRsaW5nIG9mIC11IHN3aXRjaCBmb3IgZHluYW1pYyBzdGFjayBhbmFseXNpcy4KCQoJKiBpbXB1bml0LmFkYiAoTm9uX0ltcF9GaWxlX05hbWVzXzA1KTogQWRkIEFkYS5UYXNrX1Rlcm1pbmF0aW9uIHRvIHRoZQoJbGlzdCBvZiBBZGEgMDUgZmlsZXMuCgkoR05BVCBMaWJyYXJ5IFVuaXRzKTogQWRkIEFsdGlWZWMgZmlsZXMuCgoJKiBnLWFsbGVpbi5hZHMsIGctYWxsZXZlLmFkYiwgZy1hbGxldmUuYWRzLCBnLWFsdGNvbi5hZGIsCglnLWFsdGNvbi5hZHMsIGctYWx0aXZlLmFkcywgZy1hbHZlb3AuYWRiLCBnLWFsdmVvcC5hZHMKCWctYWx2ZXR5LmFkcywgZy1hbHZldmkuYWRzOiBOZXcgZmlsZXMgcHJvdmlkaW5nIGFsdGl2ZWMgQVBJLgoKMjAwNS0xMi0wOSAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiBhZGFpbnQuYyAoX19nbmF0X2xvY2F0ZV9yZWd1bGFyX2ZpbGUpOiBSZXR1cm4gaW1tZWRpYXRlbHkgaWYKCWZpbGVfbmFtZSBpcyBlbXB0eS4KCjIwMDUtMTItMDkgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogYS10YWdzLmFkcywgYS10YWdzLmFkYiAoT2Zmc2V0X1RvX1RvcCk6IE1vdmVkIGZyb20gdGhlIHBhY2thZ2UgYm9keQoJdG8gdGhlIHNwZWNpZmljYXRpb24gYmVjYXVzZSB0aGUgZnJvbnRlbmQgZ2VuZXJhdGVzIGNvZGUgdGhhdCB1c2VzIHRoaXMKCXN1YnByb2dyYW0uCgkoU2V0X0ludGVyZmFjZV9UYWJsZSk6IEFkZCBtaXNzaW5nIGFzc2VydGlvbi4KCVVwZGF0ZSBkb2N1bWVudGF0aW9uIGRlc2NyaWJpbmcgdGhlIHJ1bi10aW1lIHN0cnVjdHVyZS4KCShEaXNwbGFjZSk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgZGlzcGxhY2VzIHRoZSBwb2ludGVyIHRvIHRoZSBvYmplY3QKCXRvIHJlZmVyZW5jZSBvbmUgb2YgaXRzIHNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZXMuCgkoSVdfTWVtYmVyc2hpcCk6IE1vZGlmaWVkIHRvIHVzZSB0aGUgbmV3IHRhYmxlIG9mIGludGVyZmFjZXMuCgkoSW5oZXJpdF9UU0QpOiBNb2RpZmllZCB0byB1c2UgdGhlIG5ldyB0YWJsZSBvZiBpbnRlcmZhY2VzLgoJKFJlZ2lzdGVyX0ludGVyZmFjZV9UYWcpOiBVc2UgdGhlIGFkZGl0aW9uYWwgZm9ybWFsIHRvIGZpbGwgdGhlCgljb250ZW50cyBvZiB0aGUgbmV3IHRhYmxlIG9mIGludGVyZmFjZXMuCgkoU2V0X0ludGVyZmFjZV9UYWJsZSk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgc3RvcmVzIGluIHRoZSBUU0QgdGhlCglwb2ludGVyIHRvIHRoZSB0YWJsZSBvZiBpbnRlcmZhY2VzLgoJKFNldF9PZmZzZXRfVG9fVG9wKTogVXNlIHRoZSBhZGRpdGlvbmFsIGZvcm1hbCB0byBzYXZlIGNvcHkgb2YKCXRoZSBvZmZzZXQgdmFsdWUgaW4gdGhlIHRhYmxlIG9mIGludGVyZmFjZXMuCglVcGRhdGUgc3RydWN0dXJlIG9mIEdOQVQgUHJpbWFyeSBhbmQgU2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlIGRpYWdyYW0uCglBZGQgY29tbWVudCBzZWN0aW9uIG9uIEdOQVQgZGlzcGF0Y2ggdGFibGUgcHJvbG9ndWUuCgkoT2Zmc2V0X1RvX1NpZ25hdHVyZSk6IFVwZGF0ZSB0aGUgY29uc3RhbnQgdmFsdWUgb2YgdGhlIFNpZ25hdHVyZSBmaWVsZC4KCShEaXNwYXRjaF9UYWJsZSk6IFVwZGF0ZSBjb21tZW50IG9uIGhpZGRlbiBmaWVsZHMgaW4gdGhlIHByb2xvZ3VlLgoJKEdldF9FbnRyeV9JbmRleCwgR2V0X1ByaW1fT3BfS2luZCwgR2V0X09mZnNldF9JbmRleCwgT1NELAoJU2V0X0VudHJ5X0luZGV4LCBTZXRfT2Zmc2V0X0luZGV4LCBTZXRfUHJpbV9PcF9LaW5kLCBTU0QsIFRTRCk6IENoYW5nZQoJdGhlIHR5cGUgb2YgZm9ybWFsIHBhcmFtZXRlciBUIHRvIFRhZywgaW50cm9kdWNlIGFkZGl0aW9uYWwgYXNzZXJ0aW9ucy4KCShHZXRfTnVtX1ByaW1fT3BzLCBTZXRfTnVtX1ByaW1fT3BzKTogUmVtb3ZlIGFuIHVubmVjZXNzYXJ5IHR5cGUKCWNvbnZlcnNpb24uCgkoR2V0X1RhZ2dlZF9LaW5kLCBTZXRfVGFnZ2VkX0tpbmQpOiBOZXcgYm9kaWVzLgoKCSogZXhwX2NoNi5hZGIgKFJlZ2lzdGVyX0ludGVyZmFjZV9EVF9FbnRyeSk6IFJlbW92ZSB0aGUgVGh1bmtfSWQgYWN0dWFsCglpbiBhbGwgdGhlIGNhbGxzIHRvIEV4cGFuZF9JbnRlcmZhY2VfVGh1bmsuIEluc3RlYWQgb2YgcmVmZXJlbmNpbmcgdGhlCglyZWNvcmQgY29tcG9uZW50IGNvbnRhaW5pbmcgdGhlIHRhZyBvZiB0aGUgc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlIHdlCgloYXZlIHRvIHVzZSB0aGUgT2Zmc2V0X1RvX1RvcCBydW4tdGltZSBmdW5jdGlvbiB0byBnZXQgdGhpcyBpbmZvcm1hdGlvbjsKCW90aGVyd2lzZSBpZiB0aGUgcG9pbnRlciB0byB0aGUgYmFzZSBvZiB0aGUgb2JqZWN0IGhhcyBiZWVuIGRpc3BsYWNlCgl3ZSBnZXQgYSB3cm9uZyB2YWx1ZSBpZiB3ZSB1c2UgdGhlICdwb3NpdGlvbiBhdHRyaWJ1dGUuCgoJKiBleHBfZGlzcC5hZGIgKEV4cGFuZF9JbnRlcmZhY2VfVGh1bmspOiBSZW1vdmUgdGhlIFRodW5rX0lkIGFjdHVhbCBpbgoJYWxsIHRoZSBjYWxscyB0byBFeHBhbmRfSW50ZXJmYWNlX1RodW5rLgoJKE1ha2VfU2Vjb25kYXJ5X0RUKTogU2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlcyBkbyBub3QgaGF2ZSBhIHRhYmxlIG9mCglpbnRlcmZhY2VzOyBoZW5jZSB0aGUgY2FsbCB0byBTZXRfSW50ZXJmYWNlX1RhYmxlIHdhcyBjbGVhcmx5IHdyb25nLgoJKENvbGxlY3RfQWxsX0ludGVyZmFjZXMpOiBNb2RpZnkgdGhlIGludGVybmFsIHN1YnByb2dyYW0gQ29sbGVjdCB0bwoJZW5zdXJlIHRoYXQgdGhlIGludGVyZmFjZXMgaW1wbGVtZW50ZWQgYnkgdGhlIGFuY2VzdG9ycyBhcmUgcGxhY2VkCglhdCB0aGUgaGVhZGVyIG9mIHRoZSBnZW5lcmF0ZWQgbGlzdC4KCShFeHBhbmRfSW50ZXJmYWNlX0NvbnZlcnNpb24pOiBIYW5kbGUgdGhlIGNhc2UgaW4gd2hpY2ggdGhlIGRpc3BsYWNlbWVudAoJYXNzb2NpYXRlZCB3aXRoIHRoZSBpbnRlcmZhY2UgY29udmVyc2lvbiBpcyBub3Qgc3RhdGljYWxseSBrbm93bi4gSW4KCXRoaXMgY2FzZSB3ZSBnZW5lcmF0ZSBhIGNhbGwgdG8gdGhlIG5ldyBydW4tdGltZSBzdWJwcm9ncmFtIERpc3BsYWNlLgoJKE1ha2VfRFQpOiBHZW5lcmF0ZSBhbmQgZmlsbCB0aGUgbmV3IHRhYmxlIG9mIGludGVyZmFjZXMuCgkoQWRhX0FjdGlvbnMsIEFjdGlvbl9Jc19Qcm9jLCBBY3Rpb25fTmJfQXJnKTogQWRkIGVudHJpZXMgZm9yCglHZXRfVGFnZ2VkX0tpbmQgYW5kIFNldF9UYWdnZWRfS2luZC4KCShUYWdnZWRfS2luZCk6IE5ldyBmdW5jdGlvbiB0aGF0IGRldGVybWluZXMgdGhlIHRhZ2dlZCBraW5kIG9mIGEgdHlwZQoJd2l0aCByZXNwZWN0IHRvIGxpbWl0ZWRuZXNzIGFuZCBjb25jdXJyZW5jeSBhbmQgcmV0dXJucyBhIHJlZmVyZW5jZSB0bwoJUkVfVGFnZ2VkX0tpbmQuCgkoTWFrZV9EaXNwX0FzeW5jaHJvbm91c19TZWxlY3RfQm9keSwgTWFrZV9EaXNwX0NvbmRpdGlvbmFsX1NlbGVjdF9Cb2R5LAoJTWFrZV9EaXNwX1RpbWVkX1NlbGVjdF9Cb2R5KTogQ29ycmVjdGx5IHJldHJpZXZlIHRoZSBwb2ludGVyIHRvIHRoZQoJcHJpbWFyeSBkaXNwYXRjaCB0YWJsZSBmb3IgYSB0eXBlLgoJKE1ha2VfRFQsIE1ha2VfU2Vjb25kYXJ5X0RUKTogU2V0IHRoZSB0YWdnZWQga2luZCBpbiB0aGUgcHJpbWFyeSBhbmQKCXNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZSByZXNwZWN0aXZlbHkgb2YgYSB0YWdnZWQgdHlwZS4KCgkqIGV4cF9kaXNwLmFkcyAoRXhwYW5kX0ludGVyZmFjZV9UaHVuayk6IFJlbW92ZSBUaHVua19JZCBmb3JtYWwuCgkoRXhwYW5kX0ludGVyZmFjZV9Db252ZXJzaW9uKTogTmV3IHN1YnByb2dyYW0gdG8gaW5kaWNhdGUgaWYgdGhlCglkaXNwbGFjZW1lbnQgb2YgdGhlIHR5cGUgY29udmVyc2lvbiBpcyBzdGF0aWNhbGx5IGtub3duLgoJKERUX0FjY2Vzc19BY3Rpb24pOiBBZGQgdmFsdWVzIEdldF9UYWdnZWRfS2luZCBhbmQgU2V0X1RhZ2dlZF9LaW5kLgoKCSogcnRzZmluZC5hZHMgKFJFX09mZnNldF9Ub19Ub3ApOiBOZXcgZW50aXR5CgkoUlRVX0lkKTogQWRkIEFkYV9UYXNrX1Rlcm1pbmF0aW9uIHRvIHRoZSBsaXN0IHNvIHRoYXQgaXQgaXMgbWFkZQoJYWNjZXNzaWJsZSB0byB1c2Vycy4KCShSZV9EaXNwbGFjZSk6IE5ldyBlbnRpdHkKCShSRV9JbnRlcmZhY2VfRGF0YSk6IE5ldyBlbnRpdHkKCShSRV9TZXRfSW50ZXJmYWNlX0RhdGEpOiBOZXdfRW50aXR5CgkoUkVfSWQsIFJFX1VuaXRfVGFibGUpOiBBZGQgZW50cnkgZm9yIFJFX0dldF9UYWdnZWRfS2luZCwKCVNldF9UYWdnZWRfS2luZCwgUkVfVGFnZ2VkX0tpbmQsIFJFX1RLX0Fic3RyYWN0X0xpbWl0ZWRfVGFnZ2VkLAoJUkVfVEtfQWJzdHJhY3RfVGFnZ2VkLCBSRV9US19MaW1pdGVkX1RhZ2dlZCwgUkVfVEtfUHJvdGVjdGVkLAoJUkVfVEtfVGFnZ2VkLCBSRV9US19UYXNrLgoKCSogZXhwX2NoMy5hZGIgKEluaXRfU2Vjb25kYXJ5X1RhZ3MpOiBNb2RpZnkgdGhlIHN1YnByb2dyYW0KCUluaXRfU2Vjb25kYXJ5X1RhZ3NfSW50ZXJuYWwgdG8gYWxsb3cgaXRzIHVzZSB3aXRoIGludGVyZmFjZSB0eXBlcyBhbmQKCWFsc28gdG8gZ2VuZXJhdGUgdGhlIGNvZGUgZm9yIHRoZSBuZXcgYWRkaXRpb25hbCBhY3R1YWwgcmVxdWlyZWQKCWJ5IFNldF9PZmZzZXRfVG9fVG9wLgoJKEJ1aWxkX0luaXRfU3RhdGVtZW50cyk6IEluIGNhc2Ugb2YgY29tcG9uZW50cyBhc3NvY2lhdGVkIHdpdGggYWJzdHJhY3QKCWludGVyZmFjZSB0eXBlcyB0aGVyZSBpcyBubyBuZWVkIHRvIGdlbmVyYXRlIGEgY2FsbCB0byBpdHMgSVAuCgkoRnJlZXplX1JlY29yZF9UeXBlKTogR2VuZXJhdGUgU2VsZWN0IFNwZWNpZmljIERhdGEgdGFibGVzIG9ubHkgZm9yCgljb25jdXJyZW50IHR5cGVzLgoJKE1ha2VfUHJlZGVmaW5lZF9QcmltaXRpdmVfU3BlY3MsIFByZWRlZmluZWRfUHJpbWl0aXZlX0JvZGllcyk6IEdlbmVyYXRlCgl0aGUgYm9kaWVzIGFuZCBzcGVjaWZpY2F0aW9ucyBvZiB0aGUgcHJlZGVmaW5lZCBwcmltaXRpdmUgb3BlcmF0aW9ucwoJZGVhbGluZyB3aXRoIGRpc3BhdGNoaW5nIHNlbGVjdHMgYW5kIGFib3J0LCAnQ2FsbGFibGUsICdUZXJtaW5hdGVkIG9ubHkKCWZvciBjb25jdXJyZW50IHR5cGVzLgoKCSogZXhwX3NlbC5hZHMsIGV4cF9zZWwuYWRiOiBOZXcgZmlsZXMuCgoJKiBleHBfY2g5LmFkYiAoQnVpbGRfUHJvdGVjdGVkX0VudHJ5LCBFeHBhbmRfTl9Qcm90ZWN0ZWRfQm9keSwKCUV4cGFuZF9OX1Byb3RlY3RlZF9UeXBlX0RlY2xhcmF0aW9uLCBNYWtlX0luaXRpYWxpemVfUHJvdGVjdGlvbik6IEhhbmRsZQoJcHJvcGVybHkgcHJvdGVjdGVkIG9iamVjdHMgYW5kIGF0dGFjaCBoYW5kbGVyIGluIHRoZSBjYXNlIG9mIHRoZQoJcmVzdHJpY3RlZCBwcm9maWxlLgoJTW92ZSBlbWJlZGVkIHBhY2thZ2UgU2VsZWN0X0V4cGFuc2lvbl9VdGlsaXRpZXMgaW50byBhIHNlcGFyYXRlIGV4dGVybmFsCglwYWNrYWdlLgoJKEV4cGFuZF9OX0FzeW5jaHJvbm91c19TZWxlY3QsIEV4cGFuZF9OX0NvbmRpdGlvbmFsX1NlbGVjdCwKCUV4cGFuZF9OX1RpbWVkX0VudHJ5X0NhbGwpOiBDb3JyZWN0IGNhbGxzIGV4dGVybmFsIHBhY2thZ2UgRXhwX1NlbC4KCShCdWlsZF9LLCBCdWlsZF9TX0Fzc2lnbm1lbnQpOiBOZXcgc3VicHJvZ3JhbXMsIHBhcnQgb2YgdGhlIHNlbGVjdAoJZXhwYW5zaW9uIHV0aWxpdGllcy4KCShFeHBhbmRfTl9Bc3luY2hyb25vdXNfU2VsZWN0LCBFeHBhbmRfTl9Db25kaXRpb25hbF9FbnRyeV9DYWxsLAoJRXhwYW5kX05fVGltZWRfRW50cnlfQ2FsbCk6IE9wdGltaXplIGV4cGFuc2lvbiBvZiBzZWxlY3Qgc3RhdGVtZW50cwoJd2hlcmUgdGhlIHRyaWdnZXIgaXMgYSBkaXNwYXRjaGluZyBwcm9jZWR1cmUgb2YgYSBsaW1pdGVkIHRhZ2dlZCB0eXBlLgoKMjAwNS0xMi0wOSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCByZW5hbWluZyBvYmplY3QgY2FzZSk6IERvbid0IGVhcmx5IGV4cGFuZAoJcG9pbnRlciBpbml0aWFsaXphdGlvbiB2YWx1ZXMuIE1ha2UgYSBTQVZFX0VYUFIgaW5zdGVhZC4gQWRkIGNvbW1lbnRzCglhYm91dCB0aGUgdXNlIGFuZCBleHBhbnNpb24gb2YgU0FWRV9FWFBScyBpbiB0aGUgdmFyaW91cyBwb3NzaWJsZQoJcmVuYW1pbmcgaGFuZGxpbmcgY2FzZXMuCgkoY29tcG9uZW50c190b19yZWNvcmQsIGNvbXBhcmVfZmllbGRfYml0cG9zKTogU29ydCBieSBERUNMX1VJRCwgbm90IGJ5CglhYnVzaW5nIERFQ0xfRkNPTlRFWFQuCgoyMDA1LTEyLTA5ICBNYXR0aGV3IEhlYW5leSAgPGhlYW5leUBhZGFjb3JlLmNvbT4KCgkqIGEtY29udmVjLmFkYiAoTWVyZ2UpOiBBZGRlZCBhc3NlcnRpb25zIHRvIGNoZWNrIHdoZXRoZXIgdmVjdG9yIHBhcmFtcwoJYXJlIHNvcnRlZC4KCgkqIGEtY29pbnZlLmFkYiAoTWVyZ2UpOiBBZGRlZCBhc3NlcnRpb25zIHRvIGNoZWNrIHdoZXRoZXIgdmVjdG9yIHBhcmFtcwoJYXJlIHNvcnRlZC4KCgkqIGEtY29oYW1hLmFkcyAoQ3Vyc29yJ1dyaXRlKTogcmFpc2VzIFByb2dyYW1fRXJyb3IgcGVyIGxhdGVzdCBBSS0zMDIKCWRyYWZ0LgoJKEN1cnNvcidSZWFkKTogcmFpc2VzIFBFCgoJKiBhLWNvaGFtYS5hZGIgKEluc2VydC5OZXdfTm9kZSk6IFVzZXMgYm94LXN0eWxlIHN5bnRheCB0byBpbml0IGVsZW0KCXRvIGl0cyBkZWZhdWx0IHZhbHVlLgoKCSogYS1jaWhhbWEuYWRiOiBNYW51YWxseSBjaGVjayB3aGV0aGVyIGN1cnNvcidzIGtleSBhbmQgZWxlbSBhcmUKCW5vbi1udWxsCgoJKiBhLWNpZGxsaS5hZHMsIGEtY2lkbGxpLmFkYiAoU3BsaWNlKTogQ2hhbmdlZCBwYXJhbSBuYW1lIGFuZCBwYXJhbSBtb2RlCgkoTWVyZ2UpOiBBc3NlcnQgdGhhdCB0YXJnZXQgYW5kIHNvdXJjZSBsaXN0cyBhcmUgaW4gb3JkZXIKCShTd2FwKTogRGVjbGFyZSBub24tY29uc3QgdGVtcG9yYXJpZXMsIHRvIHBhc3MgdG8gU3BsaWNlCgoJKiBhLWNkbGlsaS5hZHM6IChTcGxpY2UpOiBDaGFuZ2VkIHBhcmFtIG5hbWUgYW5kIHBhcmFtIG1vZGUKCgkqIGEtY2RsaWxpLmFkYjogKFNwbGljZSk6IENoYW5nZWQgcGFyYW0gbmFtZSBhbmQgcGFyYW0gbW9kZQoJKE1lcmdlKTogQXNzZXJ0IHRoYXQgdGFyZ2V0IGFuZCBzb3VyY2UgbGlzdHMgYXJlIGluIG9yZGVyCgkoU3dhcCk6IERlY2xhcmUgbm9uLWNvbnN0IHRlbXBvcmFyaWVzLCB0byBwYXNzIHRvIFNwbGljZQoKCSogYS1jaW9ybWEuYWRzLCBhLWNvb3JtYS5hZHM6IChSZWFkKTogZGVjbGFyZSBTdHJlYW0gcGFyYW0gYXMgbm90IG51bGwKCShXcml0ZSk6IGRlY2xhcmUgU3RyZWFtIHBhcmFtIGFzIG5vdCBudWxsCgoJKiBhLWNpb3JtYS5hZGIsIGEtY29vcm1hLmFkYjogQWxsIGV4cGxpY2l0IHJhaXNlIHN0YXRlbWVudHMgbm93IGluY2x1ZGUKCWFuIGV4Y2VwdGlvbiBtZXNzYWdlLgoKMjAwNS0xMi0wOSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGhvc3RwYXJtLmFkcyAoTWF4X0xpbmVfTGVuZ3RoKTogU2V0IHRvIFR5cGVzLkNvbHVtbl9OdW1iZXInTGFzdCAtIDEsCgl3aGljaCBpcyB0aGUgYWJzb2x1dGUgbWF4aW11bSBsZW5ndGggd2UgY2FuIHN1cHBvcnQuCgoJKiBmcm9udGVuZC5hZGI6IEZvciB0aGUgcHJvY2Vzc2luZyBvZiBjb25maWd1cmF0aW9uIHByYWdtYSBmaWxlcywKCXJlbW92ZSByZWZlcmVuY2VzIHRvIE9wdC5NYXhfTGluZV9MZW5ndGgsIHdoaWNoIGlzIG5vdCBjaGVja2VkIGFueW1vcmUuCgoJKiBuYW1ldC5hZHMgKE5hbWVfQnVmZmVyKTogQWRqdXN0IHNpemUgdG8gcmVmbGVjdCBpbmNyZWFzZSBvbiBtYXggbGluZQoJbGVuZ3RoLgoKCSogc2NuLmFkYiwgc2NuZy5hZGI6IAoJQWx3YXlzIGNoZWNrIGxpbmUgbGVuZ3RoIGFnYWluc3QgdGhlIGFic29sdXRlIHN1cHBvcnRlZCBtYXhpbXVtLAoJSG9zdHBhcm0uTWF4X0xpbmVfTGVuZ3RoLgoKCSogc3R5bGVzdy5hZGIgKFNldF9TdHlsZV9DaGVja19PcHRpb25zLCBjYXNlIE0pOiBUaGUgbWF4aW11bSBzdXBwb3J0ZWQKCXZhbHVlIGZvciB0aGUgbWF4aW11bSBsaW5lIGxlbmd0aCBpcyBNYXhfTGluZV9MZW5ndGggKG5vdAoJQ29sdW1uX051bWJlcidMYXN0KS4KCU1pbm9yIGVycm9yIG1zZyB1cGRhdGUKCShTZXRfU3R5bGVfQ2hlY2tfT3B0aW9ucyk6IE5ldyBpbnRlcmZhY2UgcmV0dXJuaW5nIGVycm9yIG1zZwoJTWlub3IgY29kZSByZW9yZ2FuaXphdGlvbiAocHJvY2Vzc2luZyBmb3IgJ00nIHdhcyBvdXQgb2YgYWxwaGEgb3JkZXIpCgoJKiBzd2l0Y2gtYy5hZGI6IE5ldyBpbnRlcmZhY2UgZm9yIFNldF9TdHlsZV9DaGVja19PcHRpb25zCgoJKiBzdHlsZXN3LmFkcyAoU2V0X1N0eWxlX0NoZWNrX09wdGlvbnMpOiBOZXcgaW50ZXJmYWNlIHJldHVybmluZyBlcnJvcgoJbXNnLgoKMjAwNS0xMi0wOSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZXhwX2FnZ3IuYWRiIChCdWlsZF9SZWNvcmRfQWdncl9Db2RlKTogRGVmYXVsdC1pbml0aWFsaWFsaXplZCByZWNvcmRzCgl3aXRoIElQIHN1YnByb2dyYW0gd2VyZSBvbmx5IHN1cHBvcnRlZCBpZiB0aGVyZSB3ZXJlIGxpbWl0ZWQgdHlwZXMuCgoJKiBzZW1fYWdnci5hZGIgKFJlc29sdmVfUmVjb3JkX0FnZ3JlZ2F0ZSk6IERlZmF1bHQtaW5pdGlhbGlhbGl6ZWQKCXJlY29yZHMgd2l0aCBJUCBzdWJwcm9ncmFtIHdlcmUgb25seSBzdXBwb3J0ZWQgaWYgdGhlcmUgd2VyZSBsaW1pdGVkCgl0eXBlcy4KCjIwMDUtMTItMDkgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtLCBlbWl0X2NoZWNrKTogQWRqdXN0IGNhbGxzIHRvCglidWlsZF9jYWxsX3JhaXNlLCBwYXNzaW5nIHRoZSBub3cgZXhwZWN0ZWQgR05BVF9OT0RFIGFyZ3VtZW50LgoKCSogZ2lnaS5oIChidWlsZF9jYWxsX3JhaXNlKTogQWRkIGEgR05BVF9OT0RFIGFyZ3VtZW50IHRvIGNvbnZleSBiZXR0ZXIKCXNvdXJjZSBsaW5lIGluZm9ybWF0aW9uIHRoYW4gd2hhdCB0aGUgY3VycmVudCBnbG9iYWwgbG9jdXMgaW5kaWNhdGVzCgl3aGVuIGFwcHJvcHJpYXRlLgoKCSogdXRpbHMyLmMgKGJ1aWxkX3NpbXBsZV9jb21wb25lbnRfcmVmKTogUmV0dXJuIDAgaWYgdGhlIG9mZnNldCBvZiB0aGUKCWZpZWxkIGhhcyBvdmVyZmxvd2VkLgoJKGJ1aWxkX2NhbGxfcmFpc2UpOiBBZGQgYSBHTkFUX05PREUgYXJndW1lbnQgdG8gY29udmV5IGJldHRlciBzb3VyY2UKCWxpbmUgaW5mb3JtYXRpb24gdGhhbiB3aGF0IHRoZSBjdXJyZW50IGdsb2JhbCBsb2N1cyBpbmRpY2F0ZXMgd2hlbgoJYXBwcm9wcmlhdGUuCgkoYnVpbGRfY29tcG9uZW50X3JlZik6IEFkanVzdCBjYWxsIHRvIGJ1aWxkX2NhbGxfcmFpc2UuCgoyMDA1LTEyLTA5ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBnLWRpb3BpdC5hZGIgKEZpbmQpOiBGaXggdGVzdCB0byBleGl0IHRoZSBpdGVyYXRvciBhbmQgbWFrZSBzdXJlIHRoYXQKCXRoZSBpdGVyYXRvciBpcyBxdWl0dGluZyBpdGVyYXRpb24gb24gcGFyZW50IGRpcmVjdG9yeS4KCjIwMDUtMTItMDkgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfTl9Bc3NpZ25tZW50X1N0YXRlbWVudCk6IEluIGNhc2Ugb2YgdGFnZ2VkIHR5cGVzCglhbmQgdGhlIGFzc2lnbm1lbnQgdG8gYSBjbGFzcy13aWRlIG9iamVjdCwgYmVmb3JlIHRoZSBhc3NpZ25tZW50IHdlCglnZW5lcmF0ZSBhIHJ1bi10aW1lIGNoZWNrIHRvIGVuc3VyZSB0aGF0IHRoZSB0YWcgb2YgdGhlIFRhcmdldCBpcwoJY292ZXJlZCBieSB0aGUgdGFnIG9mIHRoZSBzb3VyY2UuCgoyMDA1LTEyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9pbWd2LmFkYiAoRXhwYW5kX0ltYWdlX0F0dHJpYnV0ZSk6IEdlbmVyYXRlIGV4dHJhIGJvb2xlYW4KCXBhcmFtZXRlciBpbiBjYWxsIHRvIEltYWdlX1dpZGVfQ2hhcmFjdGVyLgoKCSogcy1pbWd3Y2guYWRzLCBzLWltZ3djaC5hZGIgKEltYWdlX1dpZGVfQ2hhcmFjdGVyKTogQWRkIGJvb2xlYW4KCXBhcmFtZXRlciBBZGFfMjAwNSB0byBkZWFsIHdpdGggYW5ub3lpbmcgRkZGRS9GRkZGIGluY29uc2lzdGVuY3kuCgkoSW1hZ2VfV2lkZV9DaGFyYWN0ZXIpOiBBZGQgYm9vbGVhbiBwYXJhbWV0ZXIgQWRhXzIwMDUgdG8gZGVhbCB3aXRoCglhbm5veWluZyBGRkZFL0ZGRkYgaW5jb25zaXN0ZW5jeS4KCjIwMDUtMTItMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfdXRpbC5hZHMsIGV4cF91dGlsLmFkYiAoSXNfUmVmX1RvX0JpdF9QYWNrZWRfU2xpY2UpOiBIYW5kbGUgY2FzZQoJb2YgdHlwZSBjb252ZXJzaW9uLgoJKEZpbmRfSW50ZXJmYWNlKTogTmV3IHN1YnByb2dyYW0gdGhhdCBnaXZlbiBhIHRhZ2dlZCB0eXBlIGFuZCBvbmUgb2YgaXRzCgljb21wb25lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWNvbmRhcnkgdGFibGUgb2YgYW4gYWJzdHJhY3QgaW50ZXJmYWNlCgl0eXBlLCByZXR1cm4gdGhlIGVudGl0eSBhc3NvY2lhdGVkIHdpdGggc3VjaCBhYnN0cmFjdCBpbnRlcmZhY2UgdHlwZS4KCShNYWtlX1N1YnR5cGVfRnJvbV9FeHByKTogSWYgdHlwZSBoYXMgdW5rbm93biBkaXNjcmltaW5hbnRzLCBhbHdheXMgdXNlCgliYXNlIHR5cGUgdG8gY3JlYXRlIGFub255bW91cyBzdWJ0eXBlLCBiZWNhdXNlIGVudGl0eSBtYXkgYmUgYSBsb2NhbGx5CglkZWNsYXJlZCBzdWJ0eXBlIG9yIGdlbmVyaWMgYWN0dWFsLgoJKEZpbmRfSW50ZXJmYWNlKTogTmV3IHN1YnByb2dyYW0gdGhhdCBnaXZlbiBhIHRhZ2dlZCB0eXBlIGFuZCBvbmUgb2YgaXRzCgljb21wb25lbnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWNvbmRhcnkgdGFibGUgb2YgYW4gYWJzdHJhY3QgaW50ZXJmYWNlCgl0eXBlLCByZXR1cm4gdGhlIGVudGl0eSBhc3NvY2lhdGVkIHdpdGggc3VjaCBhYnN0cmFjdCBpbnRlcmZhY2UgdHlwZS4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX1R5cGVfQ29udmVyc2lvbik6IEhhbmRsZSB0aGUgY2FzZSBpbiB3aGljaCB0aGUKCWNvbnZlcnNpb24gY2Fubm90IGJlIGhhbmRsZWQgYXQgY29tcGlsZSB0aW1lLiBJbiB0aGlzIGNhc2Ugd2UgcGFzcyB0aGlzCglpbmZvcm1hdGlvbiB0byB0aGUgZXhwYW5kZXIgdG8gZ2VuZXJhdGUgdGhlIGFwcHJvcHJpYXRlIGNvZGUuCgoyMDA1LTEyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogZWluZm8uYWRiIChJdHlwZV9QcmludGVkKTogTmV3IGZsYWcKCShJc19MaW1pdGVkX1R5cGUpOiBEZXJpdmVkIHR5cGVzIGRvIG5vdCBpbmhlcml0IGxpbWl0ZWRuZXNzIGZyb20KCWludGVyZmFjZSBwcm9nZW5pdG9ycy4KCShJc19SZXR1cm5fQnlfUmVmZXJlbmNlX1R5cGUpOiBQcmVkaWNhdGUgZG9lcyBub3QgYXBwbHkgdG8gbGltaXRlZAoJaW50ZXJmYWNlcy4KCgkqIGVpbmZvLmFkcyAoSXR5cGVfUHJpbnRlZCk6IE5ldyBmbGFnCglNb3ZlIElzX1dyYXBwZXJfUGFja2FnZSB0byBwcm9wZXIgc2VjdGlvbgoJQWRkIG1pc3NpbmcgSW5saW5lIGZvciBJc19Wb2xhdGlsZQoKCSogb3V0cHV0LmFkcywgb3V0cHV0LmFkYiAoV3JpdGVfRXJhc2VfQ2hhcik6IE5ldyBwcm9jZWR1cmUKCShTYXZlL1Jlc3RvcmVfT3V0cHV0X0J1ZmZlcik6IE5ldyBwcm9jZWR1cmVzCgkoU2F2ZS9SZXN0b3JlX091dHB1dF9CdWZmZXIpOiBOZXcgcHJvY2VkdXJlcwoKCSogc3ByaW50LmFkcywgc3ByaW50LmFkYiAoV3JpdGVfSXR5cGUpOiBIYW5kbGUgY2FzZSBvZiByZWNvcmQgaXR5cGVzCglBZGQgbWlzc2luZyBzdXBwb3J0IGZvciBhbm9ueW1vdXMgYWNjZXNzIHR5cGUKCShXcml0ZV9JZCk6IEluc2VydCBjYWxscyB0byBXcml0ZV9JdHlwZQoJKFdyaXRlX0l0eXBlKTogTmV3IHByb2NlZHVyZSB0byBvdXRwdXQgaXR5cGVzCgoJKiBwYXItY2gxMi5hZGIgKFBfRm9ybWFsX0Rlcml2ZWRfVHlwZV9EZWZpbml0aW9uKTogSW4gQWRhIDIwMDUsIGhhbmRsZQoJdXNlIG9mICJsaW1pdGVkIiBpbiBkZWNsYXJhdGlvbi4KCgkqIHNpbmZvLmFkcywgc2luZm8uYWRiOiAKCUZvcm1hbCBkZXJpdmVkIHR5cGVzIGNhbiBjYXJyeSBhbiBleHBsaWNpdCAibGltaXRlZCIgaW5kaWNhdGlvbi4KCgkqIHNlbV9jaDMuYWRiOiBBZGQgd2l0aCBhbmQgdXNlIG9mIFRhcmdwYXJtLgoJKENyZWF0ZV9Db21wb25lbnQpOiBJZiBGcm9udGVuZF9MYXlvdXRfT25fVGFyZ2V0IGlzIFRydWUgYW5kIHRoZQoJY29waWVkIGNvbXBvbmVudCBkb2VzIG5vdCBoYXZlIGEga25vd24gc3RhdGljIEVzaXplLCB0aGVuIHJlc2V0Cgl0aGUgc2l6ZSBhbmQgcG9zaXRpb25hbCBmaWVsZHMgb2YgdGhlIG5ldyBjb21wb25lbnQuCgkoQW5hbHl6ZV9Db21wb25lbnRfRGVjbGFyYXRpb24pOiBBIGxpbWl0ZWQgY29tcG9uZW50IGlzCglsZWdhbCB3aXRoaW4gYSBwcm90ZWN0ZWQgdHlwZSB0aGF0IGltcGxlbWVudHMgYW4gaW50ZXJmYWNlLgoJKENvbGxlY3RfSW50ZXJmYWNlcyk6IERvIG5vdCBhZGQgdG8gdGhlIGxpc3QgdGhlIGludGVyZmFjZXMgdGhhdAoJYXJlIGltcGxlbWVudGVkIGJ5IHRoZSBhbmNlc3RvcnMuCgkoRGVyaXZlZF9UeXBlX0RlY2xhcmF0aW9uKTogSWYgdGhlIHBhcmVudCBvZiB0aGUgZnVsbC12aWV3IGlzIGFuCglpbnRlcmZhY2UgcGVyZm9ybSBhIHRyYW5zZm9ybWF0aW9uIG9mIHRoZSB0cmVlIHRvIGVuc3VyZSB0aGF0IGl0IGhhcwoJdGhlIHNhbWUgcGFyZW50IHRoYW4gdGhlIHBhcnRpYWwtdmlldy4gVGhpcyBzaW1wbGlmaWVzIHRoZSBqb2Igb2YgdGhlCglleHBhbmRlciBpbiBvcmRlciB0byBnZW5lcmF0ZSB0aGUgY29ycmVjdCBvYmplY3QgbGF5b3V0LCBhbmQgaXQgaXMKCW5lZWRlZCBiZWNhdXNlIHRoZSBsaXN0IG9mIGludGVyZmFjZXMgb2YgdGhlIGZ1bGwtdmlldyBjYW4gYmUgZ2l2ZW4gaW4KCWFueSBvcmRlci4KCShQcm9jZXNzX0Z1bGxfVmlldyk6IFRoZSBwYXJlbnQgb2YgdGhlIGZ1bGwtdmlldyBkb2VzIG5vdCBuZWVkIHRvIGJlCglhIGRlc2NlbmRhbnQgb2YgdGhlIHBhcmVudCBvZiB0aGUgcGFydGlhbCB2aWV3IGlmIGJvdGggcGFyZW50cyBhcmUKCWludGVyZmFjZXMuCgkoQW5hbHl6ZV9Qcml2YXRlX0V4dGVuc2lvbl9EZWNsYXJhdGlvbik6IElmIGRlY2xhcmF0aW9uIGhhcyBhbiBleHBsaWNpdAoJImxpbWl0ZWQiIHRoZSBwYXJlbnQgbXVzdCBiZSBhIGxpbWl0ZWQgdHlwZS4KCShCdWlsZF9EZXJpdmVkX1JlY29yZF9UeXBlKTogQSBkZXJpdmVkIHR5cGUgdGhhdCBpcyBleHBsaWNpdGx5IGxpbWl0ZWQKCW11c3QgaGF2ZSBsaW1pdGVkIGFuY2VzdG9yIGFuZCBwcm9nZW5pdG9ycy4KCShCdWlsZF9EZXJpdmVkX1R5cGUpOiBEaXR0by4KCShQcm9jZXNzX0Z1bGxfVmlldyk6IFZlcmlmeSB0aGF0IGV4cGxpY2l0IHVzZXMgb2YgImxpbWl0ZWQiIGluIHBhcnRpYWwKCWFuZCBmdWxsIGRlY2xhcmF0aW9ucyBhcmUgY29uc2lzdGVudC4KCShGaW5kX0FuY2VzdG9yX0ludGVyZmFjZSk6IFJlbW92ZSBmdW5jdGlvbi4KCShDb2xsZWN0X0ltcGxlbWVudGVkX0ludGVyZmFjZXMpOiBOZXcgcHJvY2VkdXJlIHVzZWQgdG8gZ2F0aGVyIGFsbAoJaW1wbGVtZW50ZWQgaW50ZXJmYWNlcyBieSBhIHR5cGUuCgkoQ29udGFpbl9JbnRlcmZhY2UpOiBOZXcgZnVuY3Rpb24gdXNlZCB0byBjaGVjayB3aGV0aGVyIGFuIGludGVyZmFjZSBpcwoJcHJlc2VudCBpbiBhIGxpc3QuCgkoRmluZF9IaWRkZW5fSW50ZXJmYWNlKTogTmV3IGZ1bmN0aW9uIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdHdvCglsaXN0cyBvZiBpbnRlcmZhY2VzIGNvbnN0aXR1dGUgYSBzZXQgZXF1YWxpdHkuIElmIG5vdCwgdGhlIGZpcnN0CglkaWZmZXJpbmcgaW50ZXJmYWNlIGlzIHJldHVybmVkLgoJKFByb2Nlc3NfRnVsbF9WaWV3KTogSW1wcm92ZSB0aGUgY2hlY2sgZm9yIHRoZSAibm8gaGlkZGVuIGludGVyZmFjZSIKCXJ1bGUgYXMgZGVmaW5lZCBieSBBSS0zOTYuCgoyMDA1LTEyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGZyZWV6ZS5hZGIgKEZyZWV6ZV9SZWNvcmRfVHlwZSk6IE9ubHkgdGVzdCBmb3IgdXNlbGVzcyBwYWNrIG9uIHJlY29yZAoJdHlwZXMsIG5vdCBvbiByZWNvcmQgc3VidHlwZXMuCgkoRnJlZXplX0VudGl0eSk6IENvZGUgY2xlYW51cC4gQWRkIGJhcnJpZXIgdG8gdGhlIGxvb3AKCXRoYXQgZ2VuZXJhdGVzIHRoZSByZWZlcmVuY2VzIGZvciBwcmltaXRpdmUgb3BlcmF0aW9ucy4gVGhpcyBhbGxvd3MgdG8KCXJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBleGNlcHRpb24gaGFuZGxlci4KCUNvZGUgcmVmb3JtYXR0aW5nIGFuZCBjb21tZW50IGNsZWFuIHVwcy4KCjIwMDUtMTItMDkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogZ25hdGNtZC5hZGIgKEdOQVRDbWQpOiBHTkFUIENIRUNLIGFjY2VwdHMgc3dpdGNoIC1VCglJZiBHTkFUIENIRUNLIGlzIGNhbGxlZCB3aXRoIGEgcHJvamVjdCBmaWxlLCBidXQgd2l0aCBubwoJc291cmNlIG9uIHRoZSBjb21tYW5kIGxpbmUsIGNhbGwgZ25hdGNoZWNrIHdpdGggYWxsIHRoZSBjb21waWxhYmxlCglzb3VyY2VzIG9mIHRoZSBwcm9qZWN0LgoJVGFrZSBpbnRvIGFjY291bnQgdGhlIG5ldyBjb21tYW5kIENoZWNrLCBmb3IgZ25hdGNoZWNrLiBUcmVhdCBhcyBmb3IKCW90aGVyIEFTSVMgdG9vbHM6IHRha2UgaW50byBhY2NvdW50IHByb2plY3QsIHNwZWNpZmljIHBhY2thZ2UgQ2hlY2sgYW5kCglDb21waWxlciBzd2l0Y2hlcy4KCUZvciBBU0lTIHRvb2xzLCBhZGQgdGhlIHN3aXRjaGVzIGluIHBhY2thZ2UgQ29tcGlsZXIgZm9yCgl0aGUgaW52b2NhdGlvbiBvZiB0aGUgY29tcGlsZXIuCgoJKiBwcmotYXR0ci5hZGI6IEFkZCBwYWNrYWdlIENoZWNrIGFuZCBpdHMgYXR0cmlidXRlcwoKCSogdm1zX2NvbnYuYWRzIChDb21tYW5kX1R5cGUpOiBOZXcgY29tbWFuZCBDaGVjaywgZm9yIGduYXRjaGVjawoKCSogdm1zX2NvbnYuYWRiIChJbml0aWFsaXplKTogQ2hhbmdlIFBhcmFtcyBvZiBjb21tYW5kIENoZWNrIHRvCgl1bmxpbWl0ZWQgZmlsZXMuCglDaGFuZ2Ugc29tZSBIb3N0cGFybS5PcGVuVk1TIGNoZWNrcyB0byBUYXJncGFybS5PcGVuVk1TX09uX1RhcmdldC4KCUFkZCBkYXRhIGZvciBuZXcgY29tbWFuZCBDaGVjawoKCSogdm1zX2RhdGEuYWRzOiBBZGQgcHJvamVjdCByZWxhdGVkIHF1YWxpZmllcnMgZm9yIEdOQVQgQ0hFQ0sgYW5kIEdOQVQKCUVMSU0uCglBZGQgcXVhbGlmaWVycyBmb3IgQ2hlY2sgY29tbWFuZCBvcHRpb25zCgkoQ29tbWFuZF9UeXBlKTogTmV3IGNvbW1hbmQgQ2hlY2sKCjIwMDUtMTItMDkgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBtbGliLXV0bC5hZGIgKEFyKTogVXNlIE91dHB1dC5CdWZmZXJfTWF4IHRvIGRldGVybWluZSB3aGV0aGVyIGEKCWNvbW1hbmQgbGluZSBzd2l0Y2ggb3ZlcnJ1bnMgdGhlIG91dHB1dCBidWZmZXIuCgoyMDA1LTEyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV9wcmFnLmFkYjogUHJvY2Vzc2luZyBmb3IgbmV3IHByYWdtYSBDb21wbGV0ZV9SZXByZXNlbnRhdGlvbgoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIERlYnVnKTogSW1wbGVtZW50IHR3byBhcmd1bWVudCBmb3JtLgoKCSogcGFyLXByYWcuYWRiOiBFbnRyeSBmb3IgbmV3IHByYWdtYSBDb21wbGV0ZV9SZXByZXNlbnRhdGlvbgoJKFByYWcsIGNhc2UgRGVidWcpOiBSZWNvZ25pemUgdHdvIGFyZ3VtZW50IGZvcm0gb2YgcHJhZ21hIERlYnVnCglOZXcgaW50ZXJmYWNlIGZvciBTZXRfU3R5bGVfQ2hlY2tfT3B0aW9ucy4KCgkqIHNlbV9jaDEzLmFkYjogSW1wbGVtZW50IG5ldyBwcmFnbWEgQ29tcGxldGVfUmVwcmVzZW50YXRpb24uCgoJKiBzbmFtZXMuYWRiLCBzbmFtZXMuYWRzLCBzbmFtZXMuaDogRW50cnkgZm9yIG5ldyBwcmFnbWEKCUNvbXBsZXRlX1JlcHJlc2VudGF0aW9uLgoKMjAwNS0xMi0wOSAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogc2VtX2NhdC5hZGIgKFZhbGlkYXRlX1JDSV9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogUmV2aXNlIHRlc3QgZm9yCglhdmFpbGFibGUgdXNlci1zcGVjaWZpZWQgc3RyZWFtIGF0dHJpYnV0ZXMgb24gbGltaXRlZCBwYXJhbWV0ZXJzIHRvCglhbHNvIHRlc3QgdGhlIHR5cGUgZGlyZWN0bHkgcmF0aGVyIHRoYW4gb25seSBpdHMgdW5kZXJseWluZyB0eXBlIChmb3IKCUFkYSA5NSkgYW5kLCBpbiB0aGUgY2FzZSBvZiBBZGEgMjAwNSwgdG8gY2hlY2sgdGhhdCB0aGUgdXNlci1zcGVjaWZpZWQKCWF0dHJpYnV0ZXMgYXJlIHZpc2libGUgYXQgdGhlIHBvaW50IG9mIHRoZSBzdWJwcm9ncmFtIGRlY2xhcmF0aW9uLgoJRm9yIEFkYSAyMDA1LCB0aGUgZXJyb3IgbWVzc2FnZSBpcyBtb2RpZmllZCB0byBpbmRpY2F0ZSB0aGF0IHRoZQoJdHlwZSdzIHN0cmVhbSBhdHRyaWJ1dGVzIG11c3QgYmUgdmlzaWJsZSAoYWdhaW4sIG9ubHkgZm9yIC1nbmF0MDUpLgoKMjAwNS0xMi0wOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTIuYWRiIChTdWJ0eXBlc19NYXRjaCk6IEhhbmRsZSBwcm9wZXJseSBBZGEwNSBhcnJheXMgb2YKCWFub255bW91cyBhY2Nlc3MgdHlwZXMuCgoJKiBzZW1fZXZhbC5hZGIgKFN1YnR5cGVzX1N0YXRpY2FsbHlfTWF0Y2gpOiBJbXBsZW1lbnQgbmV3IHJ1bGVzIGZvcgoJbWF0Y2hpbmcgb2YgYW5vbnltb3VzIGFjY2VzcyB0eXBlcyBhbmQgYW5vbnltb3VzIGFjY2VzcyB0byBzdWJwcm9ncmFtCgl0eXBlcy4gJ1InTSA0LjkuMSAoMi8yKS4KCjIwMDUtMTItMDkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChSZW1vdmVfQWJzdHJhY3RfT3BlcmF0aW9ucyk6IERvIG5vdCBhcHBseSBwcmVmZXJlbmNlCglydWxlIHByZW1hdHVyZWx5IHdoZW4gb3BlcmFuZHMgYXJlIHVuaXZlcnNhbCwgcmVtYWluaW5nIGFtYmlndWl0aWVzCgl3aWxsIGJlIHJlbW92ZWQgZHVyaW5nIHJlc29sdXRpb24uCglDb2RlIGNsZWFudXAuCgoJKiBzZW1fdHlwZS5hZGIgKERpc2FtYmlndWF0ZSk6IEluIEFkYTk1IG1vZGUsIGRpc2NhcmQgaW50ZXJwcmV0YXRpb25zCgl0aGF0IGFyZSBBZGEgMjAwNSBmdW5jdGlvbnMuCgkoSGFzX0Fic3RyYWN0X0ludGVycHJldGF0aW9uKTogU3Vic2lkaWFyeSB0bwoJUmVtb3ZlX0NvbnZlcnNpb25zLCB0byByZW1vdmUgYW1iaWd1aXRpZXMgY2F1c2VkIGJ5IGFic3RyYWN0IG9wZXJhdGlvbnMKCW9uIG51bWVyaWMgdHlwZXMgd2hlbiBvcGVyYW5kcyBhcmUgdW5pdmVyc2FsLgoKMjAwNS0xMi0wOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g2LmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtX0JvZHkpOiBQcm9wZXJseSBjaGVjayBjYXRlZ29yaXphdGlvbgoJZm9yIGNhc2Ugd2hlcmUgc3BlYyBpcyBjYXRlZ29yaXplZC4KCjIwMDUtMTItMDkgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDguYWRiIChGaW5kX1R5cGUpOiBJbiBjYXNlIG9mIHRhZ2dlZCB0eXBlcyB0aGF0IGFyZSBjb25jdXJyZW50Cgl0eXBlcyB1c2UgdGhlIGNvcnJlc3BvbmRpbmcgcmVjb3JkIHR5cGUuIFRoaXMgd2FzIG5vdCBuZWVkZWQgYmVmb3JlCgl0aGUgaW1wbGVtZW50YXRpb24gb2YgQWRhIDIwMDUgc3luY2hyb25pemVkIHR5cGVzIGJlY2F1c2UKCWNvbmN1cnJlbnQgdHlwZXMgd2VyZSBuZXZlciB0YWdnZWQgdHlwZXMgaW4gQWRhIDk1LgoKMjAwNS0xMi0wOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoOS5hZGIgKEFuYWx5emVfRGVsYXlfQWx0ZXJuYXRpdmUsIEFuYWx5emVfRGVsYXlfVW50aWwpOiBVc2UgdGhlCglmaXJzdCBzdWJ0eXBlIG9mIHRoZSB0eXBlIG9mIHRoZSBleHByZXNzaW9uIHRvIHZlcmlmeSB0aGF0IGl0IGlzIGEKCWxlZ2FsIFRpbWUgdHlwZS4KCjIwMDUtMTItMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX3V0aWwuYWRzLCBzZW1fdXRpbC5hZGIgKEZ1bGxfUXVhbGlmaWVkX05hbWUpOiBOb3cgcHJvdmlkZXMKCWRlY29kZWQgbmFtZXMuCgoyMDA1LTEyLTA5ICBRdWVudGluIE9jaGVtICA8b2NoZW1AYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgRmFsaXMgIDxmYWxpc0BhZGFjb3JlLmNvbT4KCSAgICBGbG9yaWFuIFZpbGxvaW5nICA8dmlsbG9pbmdAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBDcmVhdGVkIHNlY3Rpb24gIlN0YWNrIFJlbGF0ZWQgVG9vbHMiCglNb3ZlZCAiU3RhY2sgT3ZlcmZsb3cgQ2hlY2tpbmciIHN1YnNlY3Rpb24gZnJvbSAiU3dpdGNoZXMgZm9yIGdjYyIgdG8KCSJTdGFjayBSZWxhdGVkIFRvb2xzIgoJQWRkZWQgc3Vic2VjdGlvbiAiU3RhdGljIFN0YWNrIFVzYWdlIEFuYWx5c2lzIgoJQWRkZWQgc3Vic2VjdGlvbiAiRHluYW1pYyBTdGFjayBVc2FnZSBBbmFseXNpcyIKCUluY2x1ZGUgZG9jdW1lbnRhdGlvbiBvZiBpdHlwZXMgaW4gc3ByaW50IGxpc3RpbmcgKC1nbmF0RykKCURvY3VtZW50ZWQgZ25hdGJpbmQgLUQgc3dpdGNoIChkZWZhdWx0IHNlYyBzdGFjayBzaXplIGZvciBmaXhlZCBzZWMKCXN0YWNrcykuCglBZGRlZCBJbnRlcnJ1cHRfU3RhdGUgYW5kIFBlcnNpc3RlbnRfQlNTIHRvIGxpc3Qgb2YgY29uZmlndXJhdGlvbgoJcHJhZ21hcy4KCUFkZCBtaXNzaW5nIGRvYyBmb3IgbWF4aW11bSB2YWx1ZSBvZiBubm4gaW4gLWduYXR5TW5ubgoKCSogZ25hdF9ybS50ZXhpOiBEb2N1bWVudCB0aGUgQWx0aVZlYyBiaW5kaW5nLgoJQWRkIGRvY3VtZW50YXRpb24gZm9yIHByYWdtYSBDb21wbGV0ZV9SZXByZXNlbnRhdGlvbgoJU2hvcnRlbmVkIGFuIG92ZXJseSBsb25nIGxpbmUgKD4gNzkgY2hhcnMpCglDbGFyaWZ5IGRvY3VtZW50YXRpb24gb2YgdW5jaGVja2VkIGNvbnZlcnNpb24gaW4gaW1wbGVtZW50YXRpb24KCWRlZmluZWQgY2FzZXMuCglEb2N1bWVudCB0d28gYXJndW1lbnQgZm9ybSBvZiBwcmFnbWEgRGVidWcKCgkqIHR5cGVzLmFkcyAoQ29sdW1uX051bWJlcik6IFVwZGF0ZSBkb2N1bWVudGF0aW9uLgoKCSogZXhwX2NoNy5hZHMgKE1ha2VfQWRqdXN0X0NhbGwpOiBEb2N1bWVudCB0aGUgc3BlY2lhbCBwcm9jZXNzaW5nIGZvcgoJbGlicmFyeSBsZXZlbCBGaW5hbGl6ZV9TdG9yYWdlX09ubHkgb2JqZWN0cyAodGhlc2UgYXJlIG5vdCBhdHRhY2hlZCB0bwoJYW55IGZpbmFsaXphdGlvbiBsaXN0KS4KCgkqIHN5c3RlbS1taW5ndy5hZHM6IChVbmRlcmx5aW5nX1ByaW9yaXRpZXMpOiBVcGRhdGUgY29tbWVudC4KCjIwMDUtMTItMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogaS1jLmFkYiwgaS1jZXh0ZW4uYWRzLCBpLWNvYm9sLmFkYiwgaS1jb2JvbC5hZHMsIGktY3BvaW50LmFkcywKCWktY3BwLmFkYiwgaS1jcHAuYWRzLCBpLWNzdHJlYS5hZHMsIGktY3N0cmluLmFkYiwgaS1jc3RyaW4uYWRzLAoJaW5saW5lLmFkYiwgaW50ZXJmYWMuYWRzLCBpLW9zMmVyci5hZHMsIGktb3MybGliLmFkcywgaS1vczJzeW4uYWRzLAoJaS1vczJ0aHIuYWRzLCBpdHlwZXMuYWRiLCBpdHlwZXMuYWRiLCBpdHlwZXMuYWRzLCBrcnVuY2guYWRzLAoJa3J1bmNoLmFkYiwgbGliLmFkYiwgbGliLmFkcywgbGliLWxpc3QuYWRiLCBsaWItbG9hZC5hZGIsCglsaWItbG9hZC5hZHMsIGxpYi1zb3J0LmFkYiwgbGl2ZS5hZGIsIG1ha2UuYWRzLCBpLWNzdHJlYS12bXMuYWRiLAoJaW50ZXJmYWMtdm1zLmFkcywgbWFrZWdwci5hZGIsIGluZGVwc3ctZ251LmFkYiwgaW5kZXBzdy5hZHMsCglzLXdjaGNvbi5hZHMsIHNkZWZhdWx0LmFkcywgc2VtX2NoMTAuYWRiLCBzZW1fZXZhbC5hZHM6IE1pbm9yCglyZWZvcm1hdHRpbmcuCgoyMDA1LTEyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtdmFmbG9wLXZtcy1hbHBoYS5hZGI6IChOZV9GKTogTmV3IGZ1bmN0aW9uCgkoTmVfRyk6IE5ldyBmdW5jdGlvbgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9BbGxvY2F0b3JfRXhwcmVzc2lvbik6IEZhY3RvciBkdXBsaWNhdGVkIGNvZGUKCWZvciB0YWcgYXNzaWdubWVudC4KCShSZXdyaXRlX0NvbXBhcmlzb24pOiBIYW5kbGUgY2FzZSB3aGVyZSBvcGVyYXRpb24gaXMgbm90IGEgY29tcGFyaXNvbgoJYW5kIGlnbm9yZSwgYW5kIGFsc28gaGFuZGxlIHR5cGUgY29udmVyc2lvbiBjYXNlLgoKMjAwNS0xMi0wOSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkczogRml4IHR5cG8gaW4gY29tbWVudC4KCT8/Py1tYXJrIENvbnZlcnRfQWdncl9Jbl9Bc3NpZ25tZW50IGFzIG5lZWRpbmcgZG9jdW1lbnRhdGlvbi4KCjIwMDUtMTItMDkgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGxheW91dC5hZGI6IFJlcGxhY2UgdmFyaW91cyB1c2VzIG9mIGJ5dGUgYnkgc3RvcmFnZSB1bml0IHRocm91Z2hvdXQuCgkoR2V0X01heF9TVV9TaXplKTogTmFtZSBjaGFuZ2VkIGZyb20gR2V0X01heF9TaXplLiBJbiB0aGUgY2FzZSBvZiBhCglzdGF0aWMgc2l6ZSwgY29udmVydCB0byBzdG9yYWdlIHVuaXRzIGJlZm9yZSByZXR1cm5pbmcsIHRvIGNvbmZvcm0gdG8KCXNwZWMuCgoyMDA1LTEyLTA5ICBNYXR0aGV3IEdpbmdlbGwgIDxnaW5nZWxsQGFkYWNvcmUuY29tPgoKCSogZy1leGN0cmEuYWRzOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMjAwNS0xMi0wOSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHV0aWxzLmM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDUtMTItMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy1zb2Njb24uYWRzOiAKCUZ1cnRoZXIgY29tbWVudCBmaXhlcyB0byBtYWtlIHRoZSBzdGF0dXMgb2YgdGhlIGRlZmF1bHQgZmlsZSBjbGVhcgoKCSogcy1iaXRvcHMuYWRiOiBDbGFyaWZ5IGNvbW1lbnQgZm9yIEJpdHNfQXJyYXkKCjIwMDUtMTItMDcgIFJhZmFlbCDBdmlsYSBkZSBFc3DtbmRvbGEgIDxyYWZhZWwuZXNwaW5kb2xhQGdtYWlsLmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhLmluc3RhbGwtbm9ybWFsKTogUmVtb3ZlLgoKMjAwNS0xMi0wNyAgUmFmYWVsIMF2aWxhIGRlIEVzcO1uZG9sYSAgPHJhZmFlbC5lc3BpbmRvbGFAZ21haWwuY29tPgoKCSogTWFrZS1sYW5nLmluOiBSZW1vdmUgYWxsIGRlcGVuZGVuY2llcyBvbiBzLWd0eXBlLgoKMjAwNS0xMi0wNSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogdXRpbHMuYyAoY29udmVydCk6IFVzZSBmb2xkX2NvbnZlcnQgd2hlcmUgYXBwcm9wcmlhdGUuCgoyMDA1LTEyLTA1ICBQYW9sbyBCb256aW5pICA8Ym9uemluaUBnbnUub3JnPgoKCSogTWFrZWZpbGUuaW4gKGduYXRsaWIpOiBGaXggcmVnZXgsIHVzaW5nIFwuIGluc3RlYWQgb2YgLiB3aGVuCglhIHBlcmlvZCBpcyBtZWFudC4KCjIwMDUtMTItMDIgIFJpY2hhcmQgR3VlbnRoZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KCgkqIHRyYW5zLmMgKGduYXRfZ2ltcGxpZnlfZXhwcik6IFVzZSBidWlsZE4gaW5zdGVhZCBvZiBidWlsZC4KCjIwMDUtMTItMDEgIFJvZ2VyIFNheWxlICA8cm9nZXJAZXllc29wZW4uY29tPgoKCSogdXRpbHMuYyAobWF4X3NpemUpOiBPbmx5IHRlc3QgZm9yIFRSRUVfT1ZFUkZMT1cgb24gSU5URUdFUl9DU1QKCW5vZGVzLgoKMjAwNS0xMS0yMyAgTGF1cmVudCBHVUVSQlkgIDxsYXVyZW50QGd1ZXJieS5uZXQ+CgoJKiBtbGliLXByai5hZGIgKEJ1aWxkX0xpYnJhcnkpOiBJbml0aWFsaXplIERlbGV0ZS4KCjIwMDUtMTEtMjEgIEpvZWwgU2hlcnJpbGwgPGpvZWwuc2hlcnJpbGxAb2FyY29ycC5jb20+CgoJKiBzb2NrZXQuYzogQWRkIGV4dGVybiBpbnQgaF9lcnJubyBmb3IgcnRlbXMgc2luY2UgbmV0d29ya2luZyBoZWFkZXIKCWZpbGVzIGFyZSBub3QgYXZhaWxhYmxlIGF0IHRoaXMgcG9pbnQgaW4gYSB0b29sIGJvb3RzdHJhcC4gTmV3bGliCglvbmx5IGhhcyBiYXNpYyBDIGxpYnJhcnkgaGVhZGVyIGZpbGVzLgoKMjAwNS0xMS0xOSAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoJUm9nZXIgU2F5bGUgIDxyb2dlckBleWVzb3Blbi5jb20+CgoJUFIgYWRhLzIzNzE3CgkqIG1pc2MuYyAoaW50ZXJuYWxfZXJyb3JfZnVuY3Rpb24pOiBEb24ndCB1c2UgdnNwcmludGYgdG8gZm9ybWF0Cgl0aGUgZXJyb3IgbWVzc2FnZSB0ZXh0LCBpbnN0ZWFkIHVzZSBwcF9mb3JtYXRfdGV4dCBhbmQgdGhlIG5ldwoJcHJldHR5IHByaW50ZXIgQVBJcy4gIFRoaXMgYWxsb3dzIGhhbmRsaW5nIG9mICVxcywgJXcsIGV0Yy4KCjIwMDUtMTEtMTggIExhdXJlbnQgR1VFUkJZICA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8yNDg1NwoJKiBNYWtlZmlsZS5pbjogVXNlIHMtYXV4ZGVjLWVtcHR5IGZvciBSVEVNUy4KCjIwMDUtMTEtMTcgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJUFIgYWRhLzIyMzMzCgkqIHRyYW5zLmMgKGduYXRfZ2ltcGxpZnlfZXhwciwgY2FzZSBBRERSX0VYUFIpOiBBbHdheXMgbWFrZQoJYSB0ZW1wb3JhcnkgaWYgdGFraW5nIHRoZSBhZGRyZXNzIG9mIHNvbWV0aGluZyB0aGF0IGlzIG5laXRoZXIKCXJlZmVyZW5jZSwgZGVjbGFyYXRpb24sIG9yIGNvbnN0YW50LCBzaW5jZSB0aGUgZ2ltcGxpZmllcgoJY2FuJ3QgaGFuZGxlIHRoYXQgY2FzZS4KCjIwMDUtMTEtMTcgIExhdXJlbnQgR1VFUkJZICA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8yNDg1NwoJKiBzLWF1eGRlYy1lbXB0eS5hZHMsIHMtYXV4ZGVjLWVtcHR5LmFkYjogTmV3IGZpbGVzLgoKMjAwNS0xMS0xNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW46IEFkZCBFSF9NRUNIQU5JU009LWdjYyB0byBzMzkwKHgpIGxpbnV4LgoKMjAwNS0xMS0xNiAgSm9lbCBTaGVycmlsbCA8am9lbC5zaGVycmlsbEBvYXJjb3JwLmNvbT4KCglQUiBhZGEvMjQ4NTUKCSogcmFpc2UtZ2NjLmM6IEFkZCBtaXNzaW5nIHN0ZGFyZy5oIGluY2x1ZGUuCiAKMjAwNS0xMS0xNiAgUmljaGFyZCBHdWVudGhlciAgPHJndWVudGhlckBzdXNlLmRlPgoKCSogTWFrZS1sYW5nLmluIChhZGEvZGVjbC5vKTogQWRkICQoRVhQUl9IKSBkZXBlbmRlbmN5LgoJKGFkYS9taXNjLm8pOiBMaWtld2lzZS4KCjIwMDUtMTEtMTQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnLXNvY2Nvbi5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZy4gVXBkYXRlIGNvbW1lbnRzLgoKCSogZ3NvY2tldC5oOiBJbmNsdWRlIDxzeXMvdGltZXMuaD4gaW4gdGhlIFZ4V29ya3MgY2FzZSwgaW4gb3JkZXIgdG8KCWdhaW4gdmlzaWJpbGl0eSBvbiB0aGUgZGVjbGFyYXRpb24gb2Ygc3RydWN0IHRpbWV2YWwuCgoJKiBnLXNvY2Nvbi1mcmVlYnNkLmFkcywKCWctc29jY29uLWRhcndpbi5hZHMsCglnLXNvY2Nvbi10cnU2NC5hZHMsCglnLXNvY2Nvbi1haXguYWRzLAoJZy1zb2Njb24taXJpeC5hZHMsCglnLXNvY2Nvbi1ocHV4LmFkcywKCWctc29jY29uLXNvbGFyaXMuYWRzLAoJZy1zb2Njb24tdm1zLmFkcywKCWctc29jY29uLW1pbmd3LmFkcywKCWctc29jY29uLXZ4d29ya3MuYWRzIChTSVpFT0ZfdHZfc2VjLCBTSVpFT0ZfdHZfdXNlYyk6IE5ldyBjb25zdGFudHMuCgoJKiBnLXNvY2Nvbi1ocHV4LWlhNjQuYWRzLCBnLXNvY2Nvbi1saW51eC1wcGMuYWRzLAoJZy1zb2Njb24tc29sYXJpcy02NC5hZHMsIGctc29jY29uLWxpbnV4LTY0LmFkcywKCWctc29jY29uLWxpbnV4LXg4Ni5hZHM6IE5ldyBmaWxlcy4KCgkqIGctc29jdGhpLW1pbmd3LmFkYjogCgkoU29ja2V0X0Vycm9yX01lc3NhZ2UpOiBSZW1vdmUgcmVkdW5kYW50IHVzZSBvZiBHTkFULlNvY2tldHMuQ29uc3RhbnRzCgoJKiBnLXNvY3RoaS12eHdvcmtzLmFkcywgZy1zb2N0aGktdm1zLmFkcywgZy1zb2N0aGktbWluZ3cuYWRzCgkodGltZV90LCBzdXNlY29uZHNfdCk6IE5ldyB0eXBlcyBjb25zdHJ1Y3RlZCB0byBtYXRjaCB0aGUgdHZfc2VjCglhbmQgdHZfdXNlYyBmaWVsZHMgb2YgQyBzdHJ1Y3QgdGltZXZhbC4KCShUaW1ldmFsKTogQ29uc3RydWN0IHN0cnVjdHVyZSBpbiB0ZXJtcyBvZiB0aGUgbmV3IHR5cGVzLgoJKEhvc3RfRXJybm8pOiBOZXcgZnVuY3Rpb24gKGltcG9ydGVkIGZyb20gc29ja2V0LmMpLCByZXR1cm5zIGxhc3QgaG9zdHMKCWRhdGFiYXNlIGVycm9yLgoKCSogZy1zb2N0aGktdnh3b3Jrcy5hZGI6ICBBZGQgZXJyb3IgaGFuZGxpbmcgY2lyY3VpdHJ5LgoKCSogZy1zb2NrZXQuYWRzLCBnLXNvY2tldC5hZGIgKFRvX1RpbWV2YWwpOiBSZWZsZWN0IGNoYW5nZSBvZiB0eXBlIGZvcgoJY29tcG9uZW50cyBvZiBzdHJ1Y3QgdGltZXZhbC4KCShHZXRfSG9zdF9CeV9OYW1lLCBHZXRfSG9zdF9CeV9BZGRyZXNzKTogRml4IGVycm9yIHJlcG9ydGluZyBjaXJjdWl0cnkuCgkoQ2hlY2tfU2VsZWN0b3IpOiBJbiBlcnJvciBjb25kaXRpb25zLCBjbGVhciBpbnRlcm5hbCBzb2NrZXQgc2V0cyB0bwoJYXZvaWQgYSBtZW1vcnkgbGVhay4KCShHZXRfU29ja2V0X09wdGlvbiwgU2V0X1NvY2tldF9PcHRpb24pOiBTdXBwb3J0IGZvciBNdWx0aWNhc3RfSWYsCglTZW5kX1RpbWVvdXQsIFJlY2VpdmVfVGltZW91dC4KCgkqIGctc29jdGhpLmFkcyAodGltZV90LCBzdXNlY29uZHNfdCk6IE5ldyB0eXBlcyBjb25zdHJ1Y3RlZCB0byBtYXRjaAoJdGhlIHR2X3NlYyBhbmQgdHZfdXNlYyBmaWVsZHMgb2YgQyBzdHJ1Y3QgdGltZXZhbC4KCShUaW1ldmFsKTogQ29uc3RydWN0IHN0cnVjdHVyZSBpbiB0ZXJtcyBvZiB0aGUgbmV3IHR5cGVzLgoJKEhvc3RfRXJybm8pOiBOZXcgZnVuY3Rpb24gKGltcG9ydGVkIGZyb20gc29ja2V0LmMpLCByZXR1cm5zIGxhc3QgaG9zdHMKCWRhdGFiYXNlIGVycm9yLgoKCSogc29ja2V0LmMgKF9fZ25hdF9nZXRfaF9lcnJubyk6IE5ldyBmdW5jdGlvbiB0byByZXRyaWV2ZSBoX2Vycm5vLCB0aGUKCWhvc3RzIGRhdGFiYXNlIGxhc3QgZXJyb3IgY29kZS4KCgkqIGdlbi1zb2Njb24uYzogQ29tcGxldGUgdmFsdWUgZXhwYW5zaW9uIHNob3VsZCBub3QgYmUgcGVyZm9ybWVkIG9uCglUQVJHRVQsIGFzIGl0IGhhcyB0aGUgZm9ybSBvZiBhIG1hdGggZXhwcmVzc2lvbiwgYW5kIHNvbWUgY29tcG9uZW50cwoJbWF5IGJlIHBsYXRmb3JtLWRlZmluZWQgbWFjcm9zLgoJRm9yIFZ4V29ya3MsIGdlbmVyYXRlIHRoZSBPSyBhbmQgRVJST1IgdmFsdWVzLgoJTmV3IGNvbnN0YW50cyBnaXZpbmcgdGhlIHNpemVzIG9mIHRoZSBjb21wb25lbnRzIG9mIEMgc3RydWN0IHRpbWV2YWwuCgoyMDA1LTExLTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE4NDM0CgkqIHR5cGVzLmFkczogSW5jbHVkZSBBbGxfQ2hlY2tzIGluIFN1cHByZXNzX0FycmF5CgoJKiBjaGVja3MuYWRiIChDaGVja19OZWVkZWQpOiBSZW1vdmUga2x1ZGdlIGZvciBhLz1iIHJld3JpdHRlbiBhcwoJbm90KGE9YiksIHNpbmNlIHdlIG5vIGxvbmdlciBkbyB0aGlzIHJld3JpdGluZywgYW5kIGhlbmNlIGl0IGlzIG5vdAoJbmVlZGVkLgoJKEVsYWJvcmF0aW9uX0NoZWNrc19TdXBwcmVzc2VkKTogQWRkIHNwZWNpYWwgY2FzaW5nIHRvCglkZWFsIHdpdGggZGlmZmVyZW50IGNhc2VzIG9mIHN0YXRpYyBhbmQgZHluYW1pYyBlbGFib3JhdGlvbiBjaGVja3MgKGFsbAoJY2hlY2tzIGRvZXMgbm90IGNvdW50IGluIHRoZSBmaXJzdCBjYXNlLCBidXQgZG9lcyBpbiB0aGUgc2Vjb25kKS4KCShFeHByX0tub3duX1ZhbGlkKTogRG8gbm90IGFzc3VtZSB0aGF0IHRoZSByZXN1bHQgb2YgYW55IGFyYml0cmFyeQoJZnVuY3Rpb24gY2FsbCBpcyB2YWxpZCwgc2luY2UgdGhpcyBpcyBub3QgdGhlIGNhc2UuCgkoRW5zdXJlX1ZhbGlkKTogRG8gbm90IGFwcGx5IHZhbGlkaXR5IGNoZWNrIHRvIGEgcmVhbCBsaXRlcmFsCglpbiBhIHVuaXZlcnNhbCBvciBmaXhlZCBjb250ZXh0CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fT3BfTmUpOiBEb24ndCBleHBhbmQgYS89YiB0byBub3QoYT1iKSBmb3IKCWVsZW1lbnRhcnkgdHlwZXMgdXNpbmcgdGhlIG9wZXJhdG9yIGluIHN0YW5kYXJkLiBJdCBpcyBjbGVhbmVyIG5vdCB0bwoJbW9kaWZ5IHRoZSBwcm9ncmFtbWVycyBpbnRlbnQsIGVzcGVjaWFsbHkgaW4gdGhlIGNhc2Ugb2YgZmxvYXRpbmctcG9pbnQuCgkoUmV3cml0ZV9Db21wYXJpc29uKTogRml4IGhhbmRsaW5nIG9mIC89ICh0aGlzIHdhcyBhbHdheXMgd3JvbmcsIGJ1dAoJaXQgZGlkIG5vdCBtYXR0ZXIgYmVjYXVzZSB3ZSBhbHdheXMgcmV3cm90ZSBhLz1iIHRvIG5vdChhPWIpLgoJKEV4cGFuZF9BbGxvY2F0b3JfRXhwcmVzc2lvbik6IEZvciBhbiBhbGxvY2F0b3IgZXhwcmVzc2lvbiB3aG9zZSBub21pbmFsCglzdWJ0eXBlIGlzIGFuIHVuY29uc3RyYWluZWQgcGFja2VkIHR5cGUsIGNvbnZlcnQgdGhlIGV4cHJlc3Npb24gdG8gaXRzCglhY3R1YWwgY29uc3RyYWluZWQgc3VidHlwZS4KCUltcGxlbWVudCB3YXJuaW5nIGZvciA8PSBvciA+PSB3aGVyZSA8IG9yID4gbm90IHBvc3NpYmxlCglGaXggdG8gVmF4X0Zsb2F0IHRlc3RzICh0b28gZWFybHkgaW4gbWFueSByb3V0aW5lcywgY2F1c2luZyBwcmVtYXR1cmUKCVZheF9GbG9hdCBleHBhbnNpb25zLgoKCSogc2VtX3ByYWcuYWRiIChBbmFseXplX1ByYWdtYSwgY2FzZSBPYnNvbGVzY2VudCk6IEFsbG93IHRoaXMgcHJhZ21hCgl0byBiZSB1c2VkIHdpdGggcGFja2FnZXMgYW5kIGdlbmVyaWMgcGFja2FnZXMgYXMgd2VsbCBhcyB3aXRoCglzdWJwcm9ncmFtcy4KCShTdXBwcmVzcyk6IFNldCBBbGxfQ2hlY2tzLCBidXQgbm90IEVsYWJvcmF0aW9uX0NoZWNrLCBmb3IgY2FzZQoJb2YgcHJhZ21hIFN1cHByZXNzIChBbGxfQ2hlY2tzKQoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIFdhcm5pbmdzKTogSW1wbGVtZW50IGZpcnN0IGFyZ3VtZW50IGFsbG93ZWQgdG8gYmUKCWEgc3RyaW5nIGxpdGVyYWwgZm9yIHByZWNpc2UgY29udHJvbCBvdmVyIHdhcm5pbmdzLgoJQXZvaWQgcmFpc2Ugb2YgcHJhZ21hIGluIGNhc2Ugb2YgdW5yZWNvZ25pemVkIHByYWdtYSBhbmQganVzdCByZXR1cm4KCWluc3RlYWQuCgoJKiBzZW1fcHJhZy5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc3dpdGNoLWMuYWRiIChTY2FuX0Zyb250X0VuZF9Td2l0Y2hlcyk6IFJlcGxhY2UgInJhaXNlIEJhZF9Td2l0Y2g7IgoJd2l0aCBjYWxsIHRvIG5ldyBwcm9jZWR1cmUgQmFkX1N3aXRjaC4gQ2FsbCBTY2FuX1BvcyB3aXRoIG5ldyBwYXJhbWV0ZXIKCVN3aXRjaC4gRG8gbm90IGhhbmRsZSBhbnkgZXhjZXB0aW9uLgoJSW5jbHVkZSAtZ25hdHd4IGFzIHBhcnQgb2YgLWduYXRnICh3YXJuIG9uIHJlZHVuZGFudCBwYXJlbnMpCglBbGxvdyBvcHRpb25hbCA9IGFmdGVyIC1nbmF0bQoJKFNjYW5fRnJvbnRfRW5kX1N3aXRjaGVzKTogVGhlIC1nbmF0cCBzd2l0Y2ggc2V0cyBBbGxfQ2hlY2tzLCBidXQgbm8KCWxvbmdlciBzZXRzIEVsYWJvcmF0aW9uX0NoZWNrcy4KCUNvZGUgdG8gc2V0IHdhcm5pbmcgbW9kZSBtb3ZlZCB0byBTZW1fV2FybgoJc28gdGhhdCBpdCBjYW4gYmUgc2hhcmVkIGJ5IHByYWdtYSBwcm9jZXNzaW5nLgoKCSogcy1tYXN0b3AtdHJ1NjQuYWRiIChQb3BfRnJhbWUpOiBSZW1vdmUgcmVkdW5kYW50IHBhcmVudGhlc2VzIGluIGlmCglzdGF0ZW1lbnQuCgoJKiBzLXRhcHJvcC1zb2xhcmlzLmFkYjogCglDaGFuZ2Ugc29tZSA8PSB0byA9LCB0byBhdm9pZCBuZXcgd2FybmluZwoKCSogYS1leGV4ZGEuYWRiLCBwcmotcHJvYy5hZGI6IAoJRml4IG9idmlvdXMgdHlwbyAoTnVtX1RyYWNlYmFja3MgY29tcGFyZWQgPD0gMCBpbnN0ZWFkIG9mIDwgMCkKCUZpeCBvYnZpb3VzIHR5cG8gKFRvdGFsX0Vycm9yc19EZXRlY3RlZCA8PSAwIHNob3VsZCBiZSA9IDApCgoyMDA1LTExLTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF92ZnB0LmFkYjogSGFuZGxlIC89IGNhc2UKCShFeHBhbmRfVmF4X0NvbnZlcnNpb24pOiBQcm9wZXJseSByZWNvZ25pemUgQ29udmVyc2lvbl9PSyBmbGFnCglzbyB0aGF0IHdlIGRvIG5vdCBnZXQgZHVwbGljYXRlIHNjYWxpbmcgZm9yIGZpeGVkIHBvaW50IGNvbnZlcnNpb25zLgoKCSogcy12YWZsb3AuYWRzLCBzLXZhZmxvcC5hZGI6IChOZV9GKTogTmV3IGZ1bmN0aW9uCgoyMDA1LTExLTE0ICBNYXR0aGV3IEdpbmdlbGwgIDxnaW5nZWxsQGFkYWNvcmUuY29tPgoKCSogc3lzdGVtLWx5bnhvcy1wcGMuYWRzLCBzeXN0ZW0tbHlueG9zLXg4Ni5hZHM6IAoJSW5jcmVhc2UgZGVmYXVsdCBwcmlvcml0eSBvbiBMeW54IGZyb20gMTUgdG8gMTcsIGFuZCBtZWV0IHRoZSBBZGEKCXJlcXVpcmVtZW50IHRoYXQgRGVmYXVsdF9Qcmlvcml0eSBiZSAoKFByaW9yaXR5J0ZpcnN0ICsKCVByaW9yaXR5J0xhc3QpIC8gMikgYnkgaW5jcmVhc2luZyB0aGUgcmFuZ2Ugb2YgSW50ZXJydXB0X1ByaW9yaXR5LgoKMjAwNS0xMS0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtbGliLXRndC10cnU2NC5hZGIsIG1saWItdGd0LWFpeC5hZGIsIG1saWItdGd0LWlyaXguYWRiLAoJbWxpYi10Z3QtaHB1eC5hZGIsIG1saWItdGd0LWhwdXguYWRiLCBtbGliLXRndC1saW51eC5hZGIsCgltbGliLXRndC1zb2xhcmlzLmFkYiwgbWxpYi10Z3Qtdm1zLWFscGhhLmFkYiwgbWxpYi10Z3Qtdm1zLWFscGhhLmFkYiwKCW1saWItdGd0LXZtcy1pYTY0LmFkYiwgbWxpYi10Z3QtbWluZ3cuYWRiLCBtbGliLXRndC12eHdvcmtzLmFkYiwKCW1saWItdGd0LWRhcndpbi5hZGIsIG1saWItdGd0LmFkYiwgbWxpYi10Z3QuYWRzLAoJbWxpYi10Z3QtbHlueG9zLmFkYiAoRExMX1ByZWZpeCk6IE5ldyBmdW5jdGlvbgoKMjAwNS0xMS0xNCAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIHN5c3RlbS12bXMuYWRzLCBzeXN0ZW0tdm1zXzY0LmFkczogQURBJEdOQVQ6IE5ldyBleHBvcnRlZCBvYmplY3QgaW4KCXByaXZhdGUgcGFydC4KCjIwMDUtMTEtMTQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIHMtdHJhY2VzLWRlZmF1bHQuYWRiLCBzLXRyYWZvci1kZWZhdWx0LmFkcywKCXMtdHJhdGFzLWRlZmF1bHQuYWRiOiBGaXggY29tcGlsYXRpb24gZXJyb3JzLgoKMjAwNS0xMS0xNCAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIHMtdGFwcm9wLXBvc2l4LmFkYiAoSW5pdGlhbGl6ZV9Mb2NrKTogRGVzdHJveSBtdXRleCBhdHRyaWJ1dGUgYmVmb3JlCglyYWlzaW5nIHRoZSBleGNlcHRpb24gc28gdGhlIG1lbW9yeSB1c2VkIGlzIGZyZWVkLgoKMjAwNS0xMS0xNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogYWRhaW50LmgsIGFkYWludC5jIChfX2duYXRfaXNfY3Jvc3NfY29tcGlsZXIpOiBOZXcgY29uc3RhbnQuCgkoR25hdF9JbnN0YWxsX0xvY2tzLCBfX2duYXRsaWJfaW5zdGFsbF9sb2Nrcyk6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoJKGNvbnZlcnRfYWRkcmVzcyk6IFVwZGF0ZSBjb21tZW50cyBhbmQgbGlzdCBvZiBwbGF0Zm9ybXMgdXNpbmcgdGhpcy4KCgkqIHMtdGFzaW5pLmFkYiAoR25hdF9JbnN0YWxsX0xvY2tzLCBfX2duYXRsaWJfaW5zdGFsbF9sb2Nrcyk6IFJlbW92ZWQsCglubyBsb25nZXIgdXNlZC4KCjIwMDUtMTEtMTQgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGduYXRkbGwuYWRiIChQYXJzZV9Db21tYW5kX0xpbmUpOiBSZW1vdmUgcmVkdW5kYW50IHVzZSBvZgoJR05BVC5Db21tYW5kX0xpbmUuCgoJKiBtZW1yb290LmFkYjogUmVtb3ZlIHJlZHVuZGFudCB3aXRoL3VzZSBjbGF1c2Ugb24KCVN5c3RlbS5TdG9yYWdlX0VsZW1lbnRzLgoKMjAwNS0xMS0xNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogYS1leGNlcHQuYWRiIChaZXJvX0Nvc3RfRXhjZXB0aW9ucyk6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoJKGJ1aWx0aW5fbG9uZ2ptcCwgUHJvY2Vzc19SYWlzZV9FeGNlZXB0aW9uKTogTW92ZSBzZXRqbXAvbG9uZ2ptcAoJcmVsYXRlZCBjb2RlIHRvIGEtZXhleHByLmFkYgoJKFNhdmVfT2NjdXJyZW5jZV9BbmRfUHJpdmF0ZSk6IE1vdmUgR0NDIEVIIHJlbGF0ZWQgY29kZSB0bwoJYS1leGV4cHItZ2NjLmFkYgoJKFJhaXNlX0N1cnJlbnRfRXhjZXApOiBBZGQgbmV3IHZhcmlhYmxlIElkIHdpdGggcHJhZ21hCgl2b2xhdGlsZSwgdG8gZW5zdXJlIHRoYXQgdGhlIHZhcmlhYmxlIGxpdmVzIG9uIHN0YWNrLgoKCSogYS1leGV4cHItZ2NjLmFkYiwgcmFpc2UtZ2NjLmM6IE5ldyBmaWxlLgoKCSogYS1leGV4cHIuYWRiIChidWlsdGluX2xvbmdqbXAsIFByb3BhZ2F0ZV9FeGNlcHRpb24pOiBNb3ZlZCBoZXJlIGNvZGUKCWZyb20gYS1leGNlcHQuYWRiLgoJTW92ZSBHQ0MgRUggcmVsYXRlZCBjb2RlIHRvIGEtZXhleHByLWdjYy5hZGIKCgkqIE1ha2VmaWxlLmluOiBBZGQgb3IgdXBkYXRlIGctc29jY29uIExJQkdOQVQgcGFpcnMgZm9yIExpbnV4L1BQQyBhbmQKCTY0LWJpdCBTb2xhcmlzCglTcGxpdCB0aGUgTGludXggdmVyc2lvbiBvZiBnLXNvY2NvbiBpbnRvIHNlcGFyYXRlIHZhcmlhbnRzIGZvciAzMiBhbmQgNjQKCWJpdCBwbGF0Zm9ybXMuCgkoZ25hdGxpYik6IFVzZSAkKEFSX0ZPUl9UQVJHRVQpIGFuZCAkKFJBTkxJQl9GT1JfVEFSR0VUKQoJdmljZSAkKEFSKSBhbmQgJChSQU5MSUIpLiBSZW1vdmUgdXNlIG9mIGhvc3QgdmFyaWFibGUgJChSQU5MSUJfRkxBR1MpLgoJaW5zdGFsbC1nbmF0bGliOiBVc2UgJChSQU5MSUJfRk9SX1RBUkdFVCkgdmljZSAkKFJBTkxJQikuIFJlbW92ZSB1c2UKCW9mIGhvc3QgdmFyaWFibGUgJChSQU5MSUJfRkxBR1MpLgoJKGFscGhhNjQtZGVjLSp2bXMqKTogRml4IHRyYW5zbGF0aW9ucyBmb3IgNjQgYml0IGNvbXBpbGVyLgoJQ29kZSBjbGVhbiB1cDogcmVtb3ZlIHVudXNlZC9vYnNvbGV0ZSB0YXJnZXRzLgoJKEVIX01FQ0hBTklTTSk6IE5ldyB2YXJpYWJsZSBpbnRyb2R1Y2VkIHRvIGRpZmZlcmVuY2lhdGUgYmV0d2VlbiB0aGUKCXR3byBFSCBtZWNoYW5pc21zIHN0YXRpY2FsbHkuCgkoZ25hdGxpYi16Y3gsIGduYXRsaWItc2psaik6IEZvcmNlIEVIX01FQ0hBTklTTSBtYW51YWxseS4KCShMSUJHTkFUX09CSlMpOiBBZGQgcmFpc2UtZ2NjLm8KCShMSUJHTkFUX1RBUkdFVF9QQUlSUyBmb3IgcHBjLXZ4d29ya3MpOiBVc2UgYW4gc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZgoJcy1vc2ludGUuYWRiLCBzLXRwb3BzcC5hZGIsIGFuZCBzeXN0ZW0uYWRzIGZvciB0aGUgcnVuIHRpbWUgdGhhdAoJc3VwcG9ydHMgVnhXb3JrcyA2IFJUUHMuCgkoRVhUUkFfR05BVFJUTF9OT05UQVNLSU5HX09CSlMgZm9yIHBwYy12eHdvcmtzKTogUmVtb3ZlIHRoZSB1c2Ugb2YKCWktdnh3b3JrcyBhbmQgaS12eHdvaW8gZnJvbSB0aGUgcnVuIHRpbWUgdGhhdCBzdXBwb3J0cyBWeFdvcmtzIDYgUlRQcy4KCgkqIHJhaXNlLmM6IE1vdmUgYWxsIEdDQyBFSC1yZWxhdGVkIHJvdXRpbmVzIHRvIHJhaXNlLWdjYy5jCgoyMDA1LTExLTE0ICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogcy10YXNzdGEuYWRiIChDcmVhdGVfVGFzayk6IE1vdmUgdGhlIGNvZGUgaW4gY2hhcmdlIG9mIHJlc2V0dGluZyB0aGUKCWRlZmVycmFsIGxldmVsLCB3aGVuIGFib3J0IGlzIG5vdCBhbGxvd2VkLCB0byBhIGxhdGVyIHN0YWdlICh0aGUKCVRhc2tfV3JhcHBlcikuCgkoVGFza19XcmFwcGVyKTogSWYgQWJvcnQgaXMgbm90IGFsbG93ZWQsIHJlc2V0IHRoZSBkZWZlcnJhbCBsZXZlbCBzaW5jZQoJaXQgd2lsbCBub3QgZ2V0IGNoYW5nZWQgYnkgdGhlIGdlbmVyYXRlZCBjb2RlLiBJdCB3YXMgcHJldmlvdXNseSBkb25lCglpbiBDcmVhdGVfVGFzay4KCjIwMDUtMTEtMTQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCSAgICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZGVjbC5jOgoJRmFjdG9yIGNvbW1vbiBjb2RlIHRvIGJ1aWxkIGEgc3RvcmFnZSB0eXBlIGZvciBhbiB1bmNvbnN0cmFpbmVkIG9iamVjdAoJZnJvbSBhIGZhdCBvciB0aGluIHBvaW50ZXIgdHlwZSBhbmQgYSBjb25zdHJhaW5lZCBvYmplY3QgdHlwZS4KCShhbm5vdGF0ZV92YWx1ZSk6IEhhbmRsZSBCSVRfQU5EX0VYUFIuCgkoYW5ub3RhdGVfcmVwKTogRG9uJ3QgcmVzdHJpY3QgdGhlIGJhY2sgYW5ub3RhdGlvbiBvZiBpbmhlcml0ZWQKCWNvbXBvbmVudHMgdG8gdGhlIHR5cGVfYW5ub3RhdGVfb25seSBjYXNlLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfQXJyYXlfVHlwZT46IERvIG5vdCBpbnZva2UgY3JlYXRlX3R5cGVfZGVjbCBpZgoJd2UgYXJlIG5vdCBkZWZpbmluZyB0aGUgdHlwZS4KCTxFX1JlY29yZF9UeXBlPjogTGlrZXdpc2UuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8b2JqZWN0LCByZW5hbWluZz46IEFkanVzdCBjb21tZW50cyBhbmQgc3RydWN0dXJlCgl0byBnZXQgYWR2YW50YWdlIG9mIHRoZSBuZXcgbWF5YmVfc3RhYmlsaXplX3JlZmVyZW5jZSBpbnRlcmZhY2UsIHRvCgllbnN1cmUgdGhhdCB3aGF0IHdlIHJlZmVyZW5jZSBpcyBpbmRlZWQgc3RhYmlsaXplZCBpbnN0ZWFkIG9mIHJlbHlpbmcKCW9uIGFzc3VtcHRpb25zIG9uIHdoYXQgdGhlIHN0YWJpbGl6ZXIgZG9lcy4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX0luY29tcGxldGVfVHlwZT46IElmIHRoZSBlbnRpdHkgaXMgYW4gaW5jb21wbGV0ZQoJdHlwZSBpbXBvcnRlZCB0aHJvdWdoIGEgbGltaXRlZF93aXRoIGNsYXVzZSwgdXNlIGl0cyBub24tbGltaXRlZCB2aWV3LgoJKEhhc19TdGRjYWxsX0NvbnZlbnRpb24pOiBOZXcgbWFjcm8sIHRvIGNlbnRyYWxpemUgdGhlIFdpbmRvd3MgdnMgb3RoZXJzCglkaWZmZXJlbnRpYXRpb24uCgkoZ25hdF90b19nbnVfZW50aXR5KTogVXNlIEhhc19TdGRjYWxsX0NvbnZlbnRpb24gaW5zdGVhZCBvZiBhIHNwcmVhZCBtaXgKCW9mICNpZiBzZWN0aW9ucyArIGV4cGxpY2l0IGNvbXBhcmlzb25zIG9mIGNvbnZlbnRpb24gaWRlbnRpZmllcnMuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9WYXJpYWJsZT46IERlY3JlbWVudCBmb3JjZV9nbG9iYWwgaWYgbmVjZXNzYXJ5CgliZWZvcmUgZWFybHktcmV0dXJuaW5nIGZvciBjZXJ0YWluIHR5cGVzIHdoZW4gY29kZSBnZW5lcmF0aW9uIGlzCglkaXNhYmxlZC4KCShnbmF0X3RvX2dudV9lbnRpdHkpIDxvYmplY3Q+OiBBZGp1c3QgY29tbWVudCBhdHRhY2hlZCB0byB0aGUKCW51bGxpZmljYXRpb24gb2YgZ251X2V4cHIgd2UgZG8gZm9yIG9iamVjdHMgd2l0aCBhZGRyZXNzIGNsYXVzZSBhbmQKCXRoYXQgd2UgYXJlIG5vdCBkZWZpbmluZy4KCShlbGFib3JhdGVfZXhwcmVzc2lvbl8xKTogRG8gbm90IGNyZWF0ZSBjb25zdGFudHMgd2hlbiBjcmVhdGluZwoJdmFyaWFibGVzIG5lZWRlZCBieSB0aGUgZGVidWcgaW5mbzogdGhlIGR3YXJmMiB3cml0ZXIgY29uc2lkZXJzIHRoYXQKCUNPTlNUX0RFQ0xzIGlzIHVzZWQgb25seSB0byByZXByZXNlbnQgZW51bWVyYXRpb24gY29uc3RhbnRzLCBhbmQgZW1pdHMKCW5vdGhpbmcgZm9yIHRoZW0uCgkoZ25hdF90b19nbnVfZW50aXR5KSA8b2JqZWN0PjogV2hlbiB0dXJuaW5nIGEgbm9uLWRlZmluaXRpb24gb2YgYW4KCW9iamVjdCB3aXRoIGFuIGFkZHJlc3MgY2xhdXNlIGludG8gYW4gaW5kaXJlY3QgcmVmZXJlbmNlLCBkcm9wIHRoZQoJaW5pdGlhbGl6aW5nIGV4cHJlc3Npb24uCglJbmNsdWRlICJleHByLmgiLgoJKFNUQUNLX0NIRUNLX0JVSUxUSU4pOiBEZWxldGUuCgkoU1RBQ0tfQ0hFQ0tfUFJPQkVfSU5URVJWQUwpOiBMaWtld2lzZS4KCShTVEFDS19DSEVDS19NQVhfRlJBTUVfU0laRSk6IExpa2V3aXNlLgoJKFNUQUNLX0NIRUNLX01BWF9WQVJfU0laRSk6IExpa2V3aXNlLgoJKGduYXRfdG9fZ251X2VudGl0eSk6IElmIGduYXRfZW50aXR5IGlzIGEgcmVuYW1pbmcsIGRvIG5vdCBtYXJrIHRoZSB0cmVlCgljb3JyZXNwb25kaW5nIHRvIHRoZSByZW5hbWVkIG9iamVjdCBhcyBpZ25vcmVkIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX0F0dHJpYnV0ZV9SZWZlcmVuY2UsIGNhc2UgQXR0cl9TaXplICYKCXJlbGF0ZWQpOiBGb3IgYSBwcmVmaXggdGhhdCBpcyBhIGRlcmVmZXJlbmNlIG9mIGEgZmF0IG9yIHRoaW4gcG9pbnRlciwKCWlmIHRoZXJlIGlzIGFuIGFjdHVhbCBzdWJ0eXBlIHByb3ZpZGVkIGJ5IHRoZSBmcm9udC1lbmQsIHVzZSB0aGF0CglzdWJ0eXBlIHRvIGJ1aWxkIGFuIGFjdHVhbCB0eXBlIHdpdGggYm91bmRzIHRlbXBsYXRlLgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fRnJlZV9TdGF0ZW1lbnQpOiBJZiBhbiBBY3R1YWxfRGVzaWduYXRlZF9TdWJ0eXBlCglpcyBwcm92aWRlZCBieSB0aGUgZnJvbnQtZW5kLCB1c2UgdGhhdCBzdWJ0eXBlIHRvIGNvbXB1dGUgdGhlIHNpemUgb2YKCXRoZSBkZWFsbG9jYXRlZCBvYmplY3QuCgkoZ25hdF90b19nbnUpOiBXaGVuIGFkZGluZyBhIHN0YXRlbWVudCBpbnRvIGFuIGVsYWJvcmF0aW9uIHByb2NlZHVyZSwKCWNoZWNrIGZvciBhIHBvdGVudGlhbCB2aW9sYXRpb24gb2YgYSBOb19FbGFib3JhdGlvbl9Db2RlIHJlc3RyaWN0aW9uLgoJKG1heWJlX3N0YWJpbGl6ZV9yZWZlcmVuY2UpOiBOZXcgZnVuY3Rpb24sIGxpa2UgZ25hdF9zdGFiaWxpemVfcmVmZXJlbmNlCgl3aXRoIGV4dHJhIGFyZ3VtZW50cyB0byBjb250cm9sIHdoZXRoZXIgdG8gcmVjdXJzZSB0aHJvdWdoIG5vbi12YWx1ZXMKCWFuZCB0byBsZXQgdGhlIGNhbGxlciBrbm93IGlmIHRoZSBzdGFiaWxpemF0aW9uIGhhcyBzdWNjZWVkZWQuCgkoZ25hdF9zdGFiaWxpemVfcmVmZXJlbmNlKTogTm93IGEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kCgltYXliZV9zdGFiaWxpemUsIGZvciBjb21tb24gdXNlcyB3aXRob3V0IHJlc3RyaWN0aW9uIG9uIGx2YWx1ZXMgYW5kCgl3aXRob3V0IG5lZWQgdG8gY2hlY2sgZm9yIHRoZSBzdWNjZXNzIGluZGljYXRpb24uCgkoZ25hdF90b19nbnUsIGNhbGxfdG9fZ251KTogQWRqdXN0IGNhbGxzIHRvIGduYXRfc3RhYmlsaXplX3JlZmVyZW5jZSwgdG8KCXBhc3MgZmFsc2UgaW5zdGVhZCBvZiAwIGFzIHRoZSBGT1JDRSBhcmd1bWVudCB3aGljaCBpcyBhIGJvb2wuCgkoSWRlbnRpZmllcl90b19nbnUpOiBSZW1vdmUgY2hlY2tzIGVuc3VyaW5nIHRoYXQgYW4gcmVuYW1lZCBvYmplY3QKCWF0dGFjaGVkIHRvIGEgcmVuYW1pbmcgcG9pbnRlciBoYXMgYmVlbiBwcm9wZXJseSBzdGFiaWxpemVkLCBhcyBubyBzdWNoCglvYmplY3QgaXMgYXR0YWNoZWQgb3RoZXJ3aXNlLgoJKGNhbGxfdG9fZ251KTogSW52b2tlIGNyZWF0ZV92YXJfZGVjbCB0byBjcmVhdGUgdGhlIHRlbXBvcmFyeSB3aGVuIHRoZQoJZnVuY3Rpb24gdXNlcyB0aGUgInRhcmdldCBwb2ludGVyIiByZXR1cm4gbWVjaGFuaXNtLgoJUmVpbnN0YXRlIGNvbnZlcnNpb24gb2YgdGhlIGFjdHVhbCB0byB0aGUgdHlwZSBvZiB0aGUgZm9ybWFsCglwYXJhbWV0ZXIgYmVmb3JlIGFueSBvdGhlciBzcGVjaWZpYyB0cmVhdG1lbnQgYmFzZWQgb24gdGhlIHBhc3NpbmcKCW1lY2hhbmlzbS4gVGhpcyB0dXJucyBvdXQgdG8gYmUgbmVjZXNzYXJ5IGluIG9yZGVyIGZvciBQTEFDRUhPTERFUgoJc3Vic3RpdHV0aW9uIHRvIHdvcmsgcHJvcGVybHkgd2hlbiB0aGUgbGF0dGVyIHR5cGUgaXMgdW5jb25zdHJhaW5lZC4KCgkqIGdpZ2kuaCAoYnVpbGRfdW5jX29iamVjdF90eXBlX2Zyb21fcHRyKTogTmV3IHN1YnByb2dyYW0sIGZhY3RvcmluZyBhCgljb21tb24gcGF0dGVybi4KCShtYXliZV9zdGFiaWxpemVfcmVmZXJlbmNlKTogTmV3IGZ1bmN0aW9uLCBsaWtlIGduYXRfc3RhYmlsaXplX3JlZmVyZW5jZQoJd2l0aCBleHRyYSBhcmd1bWVudHMgdG8gY29udHJvbCB3aGV0aGVyIHRvIHJlY3Vyc2UgdGhyb3VnaCBub24tdmFsdWVzCglhbmQgdG8gbGV0IHRoZSBjYWxsZXIga25vdyBpZiB0aGUgc3RhYmlsaXphdGlvbiBoYXMgc3VjY2VlZGVkLgoKCSogdXRpbHMyLmMgKGduYXRfYnVpbGRfY29uc3RydWN0b3IpOiBPbmx5IHNvcnQgdGhlIGZpZWxkcyBmb3IgcG9zc2libGUKCXN0YXRpYyBvdXRwdXQgb2YgcmVjb3JkIGNvbnN0cnVjdG9yIGlmIGFsbCB0aGUgY29tcG9uZW50cyBhcmUgY29uc3RhbnQuCgkoZ25hdF9idWlsZF9jb25zdHJ1Y3Rvcik6IEZvciBhIHJlY29yZCB0eXBlLCBzb3J0IHRoZSBsaXN0IG9mIGZpZWxkCglpbml0aWFsaXplcnMgaW4gaW5jcmVhc2luZyBiaXQgcG9zaXRpb24gb3JkZXIuCglGYWN0b3IgY29tbW9uIGNvZGUgdG8gYnVpbGQgYSBzdG9yYWdlIHR5cGUgZm9yIGFuIHVuY29uc3RyYWluZWQgb2JqZWN0Cglmcm9tIGEgZmF0IG9yIHRoaW4gcG9pbnRlciB0eXBlIGFuZCBhIGNvbnN0cmFpbmVkIG9iamVjdCB0eXBlLgoJKGJ1aWxkX3VuYXJ5X29wKSA8QUREUl9FWFBSPjogQWx3YXlzIHJlY3Vyc2UgZG93biBjb252ZXJzaW9ucyBiZXR3ZWVuCgl0eXBlcyB2YXJpYW50cywgYW5kIHByb2Nlc3Mgc3BlY2lhbCBjYXNlcyBvZiBWSUVXX0NPTlZFUlQgZXhwcmVzc2lvbnMKCWFzIHRoZWlyIE5PUF9FWFBSIGNvdW50ZXJwYXJ0IHRvIGVuc3VyZSB3ZSBnZXQgdG8gdGhlCglDT1JSRVNQT05ESU5HX1ZBUnMgYXNzb2NpYXRlZCB3aXRoIENPTlNUX0RFQ2xzLgoJKGJ1aWxkX2JpbmFyeV9vcCkgPE1PRElGWV9FWFBSPjogRG8gbm90IHN0cmlwIFZJRVdfQ09OVkVSVF9FWFBScwoJb24gdGhlIHJpZ2h0LWhhbmQgc2lkZS4KCgkqIHV0aWxzLmMgKGJ1aWxkX3VuY19vYmplY3RfdHlwZV9mcm9tX3B0cik6IE5ldyBzdWJwcm9ncmFtLCBmYWN0b3JpbmcKCWEgY29tbW9uIHBhdHRlcm4uCgkoY29udmVydCkgPFZJRVdfQ09OVkVSVF9FWFBSPjogUmV0dXJuIHRoZSBpbm5lciBvcGVyYW5kIGRpcmVjdGx5IGlmIHdlCglhcmUgY29udmVydGluZyBiYWNrIHRvIGl0cyBvcmlnaW5hbCB0eXBlLgoJKGNvbnZlcnQpIDxKTSBpbnB1dD46IEZhbGx0aHJvdWdoIHJlZ3VsYXIgY29udmVyc2lvbiBjb2RlIGluc3RlYWQgb2YKCWV4dHJhY3RpbmcgdGhlIG9iamVjdCBpZiBjb252ZXJ0aW5nIHRvIGEgdHlwZSB2YXJpYW50LgoJKGNyZWF0ZV92YXJfZGVjbCk6IFdoZW4gYSB2YXJpYWJsZSBoYXMgYW4gaW5pdGlhbGl6ZXIgcmVxdWlyaW5nIGNvZGUKCWdlbmVyYXRpb24gYW5kIHdlIGFyZSBhdCB0aGUgdG9wIGxldmVsLCBjaGVjayBmb3IgYSBwb3RlbnRpYWwgdmlvbGF0aW9uCglvZiBhIE5vX0VsYWJvcmF0aW9uX0NvZGUgcmVzdHJpY3Rpb24uCgkoY3JlYXRlX3Zhcl9kZWNsKTogY2FsbCBleHBhbmRfZGVjbCBmb3IgQ09OU1RfREVDTHMsIHRvIHNldCBNT0RFLCBBTElHTgoJU0laRSBhbmQgU0laRV9VTklUIHdoaWNoIHdlIG5lZWQgZm9yIGxhdGVyIGJhY2stYW5ub3RhdGlvbnMuCgkqIHV0aWxzLmM6IChjb252ZXJ0KSA8U1RSSU5HX0NTVD46IFJlbW92ZSBvYnNvbGV0ZSBjb2RlLgoJPFZJRVdfQ09OVkVSVF9FWFBSPjogRG8gbm90IGxpZnQgdGhlIGNvbnZlcnNpb24gaWYgdGhlIHRhcmdldCB0eXBlCglpcyBhbiB1bmNoZWNrZWQgdW5pb24uCgkocHVzaGRlY2wpOiBTZXQgREVDTF9OT19TVEFUSUNfQ0hBSU4gb24gaW1wb3J0ZWQgbmVzdGVkIGZ1bmN0aW9ucy4KCShjb252ZXJ0KSA8VklFV19DT05WRVJUX0VYUFI+OiBXaGVuIHRoZSB0eXBlcyBoYXZlIHRoZSBzYW1lCgltYWluIHZhcmlhbnQsIGp1c3QgcmVwbGFjZSB0aGUgVklFV19DT05WRVJUX0VYUFIuCgk8VU5JT05fVFlQRT46IFJldmVydCAyMDA1LTAzLTAyIGNoYW5nZS4KCgkqIHJlcGluZm8uaCwgcmVwaW5mby5hZHM6IEFkZCB0Y29kZSBmb3IgQklUX0FORF9FWFBSLgoKCSogcmVwaW5mby5hZGIgKFByaW50X0V4cHIsIFJlcF9WYWx1ZSk6IEhhbmRsZSBCaXRfQW5kX0V4cHJlc3Npb25zLgoKMjAwNS0xMS0xNCAgTWF0dGhldyBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgoJKiBhLWNyYnRnby5hZHMsIGEtY3JidGdvLmFkYiwgYS1jb29yc2UuYWRzLCBhLWNvb3JzZS5hZGIsIGEtY29udmVjLmFkcywgCglhLWNvbnZlYy5hZGIsIGEtY29pbnZlLmFkcywgYS1jb2ludmUuYWRiLCBhLWNvaGFtYS5hZHMsIGEtY29oYW1hLmFkYiwgCglhLWNpb3JzZS5hZHMsIGEtY2lvcnNlLmFkYiwgYS1jaWhhbWEuYWRzLCBhLWNpaGFtYS5hZGIsIGEtY2lkbGxpLmFkcywgCglhLWNpZGxsaS5hZGIsIGEtY2RsaWxpLmFkcywgYS1jZGxpbGkuYWRiLCBhLWNvb3JtdS5hZGIsIGEtY2lvcm11LmFkYiwgCglhLWNpaGFzZS5hZGIsIGEtY2loYXNlLmFkcywgYS1jb2hhc2UuYWRiLCBhLWNvaGFzZS5hZHMsIGEtY2lvcm1hLmFkcywgCglhLWNvb3JtYS5hZHMsIGEtY2lvcm11LmFkcywgYS1jb29ybXUuYWRzLCBhLWNpb3JtYS5hZGIsIGEtY29vcm1hLmFkYjogCglDb21waWxlcyBhZ2FpbnN0IHRoZSBzcGVjIGZvciBvcmRlcmVkIG1hcHMgZGVzY3JpYmVkIGluIHNlY3Rpb25zCglBLjE4LjYgb2YgdGhlIG1vc3QgcmVjZW50IChBdWd1c3QgMjAwNSkgQUktMzAyIGRyYWZ0LgoKMjAwNS0xMS0xNCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIGN1aW50cC5jIChVSV9Ub19nbnUpOiBVc2UgYSBwcm9wZXIgdHlwZSBmb3IgaW50ZXJtZWRpYXRlIGNvbXB1dGF0aW9ucwoJdG8gZW5zdXJlIGJpYXMgYWRqdXN0bWVudHMgdGFrZSBwbGFjZSB3aGVuIG5lZWQgYmUgYW5kIHRvIHByZXZlbnQKCW9jY3VycmVuY2VzIG9mIGludGVybWVkaWF0ZSBvdmVyZmxvd3MuCgoyMDA1LTExLTE0ICBNYXR0aGV3IEdpbmdlbGwgIDxnaW5nZWxsQGFkYWNvcmUuY29tPgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiB0Yi1nY2MuYyAodHJhY2VfY2FsbGJhY2spOiBXb3JrIGFyb3VuZCBwcm9ibGVtIHdpdGggX1Vud2luZF9HZXRJUCBvbgoJaWE2NCBIUC1VWC4KCgkqIHRyYWNlYmFrLmMgKGlhNjQgY29uZmlndXJhdGlvbik6IEVuYWJsZSBfVW53aW5kX0JhY2t0cmFjZSBkcml2ZW4KCXRyYWNlYmFja3Mgb24gaWE2NCBIUC1VWCBhbmQgcHJvdmlkZSBleHBsYW5hdG9yeSBjb21tZW50LgoJRW5hYmxlIGJhY2t0cmFjZXMgb24gaWE2NCBHTlUvTGludXguCgkoeDg2IGNvbmZpZ3VyYXRpb24pOiBCdW1wIEZSQU1FX0xFVkVMIHRvIDEgdG8gZW5zdXJlIHdlIHJldHJpZXZlIGEgcmVhbAoJYmFzZSBwb2ludGVyIGZyb20gYnVpbHRpbl9mcmFtZV9hZGRyZXNzLiBBZGp1c3QgQkFTRV9TS0lQIGFjY29yZGluZ2x5LgoKMjAwNS0xMS0xNCAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBydHNmaW5kLmFkcywgZXhwX3V0aWwuYWRiLCBleHBfdXRpbC5hZHMsIGV4cF9kaXNwLmFkYiwgZXhwX2Rpc3AuYWRzLAoJZXhwX2NoNy5hZGIsIHNlbV9jaDkuYWRiLCBzbmFtZXMuYWRiLCBzbmFtZXMuYWRzLAoJZXhwX2NoOS5hZGIsIGV4cF9jaDkuYWRzLCBleHBfY2g2LmFkYiwgZXhwX2NoMy5hZGIsIGV4cF9jaDMuYWRzLAoJZWluZm8uYWRzLCBlaW5mby5hZGI6IENvbXBsZXRlIHN1cHBvcnQgZm9yIEFkYSAyMDA1IGludGVyZmFjZXMuCgoJKiBhLXRhZ3MuYWRzLCBhLXRhZ3MuYWRiOiBNYWpvciByZXdyaXRlIGFuZCBhZGRpdGlvbnMgdG8gaW1wbGVtZW50Cglwcm9wZXJseSBuZXcgQWRhIDIwMDUgaW50ZXJmYWNlcyAoQUktMzQ1KSBhbmQgYWRkIHJ1bi10aW1lIGNoZWNrcyAodmlhCglhc3NlcnRpb25zKS4KCgkqIGV4cF9kYnVnLmFkcywgZXhwX2RidWcuYWRiIChHZXRfU2Vjb25kYXJ5X0RUX0V4dGVybmFsX05hbWUpOiBOZXcKCXN1YnByb2dyYW0gdGhhdCBnZW5lcmF0ZXMgdGhlIGV4dGVybmFsIG5hbWUgYXNzb2NpYXRlZCB3aXRoIGEKCXNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZS4KCShHZXRfU2Vjb25kYXJ5X0RUX0V4dGVybmFsX05hbWUpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IGdlbmVyYXRlcyB0aGUKCWV4dGVybmFsIG5hbWUgYXNzb2NpYXRlZCB3aXRoIGEgc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlLgoKMjAwNS0xMS0xNCAgRW1tYW51ZWwgQnJpb3QgIDxicmlvdEBhZGFjb3JlLmNvbT4KCgkqIHhyZWZfbGliLmFkYiAoUGFyc2VfSWRlbnRpZmllcl9JbmZvKTogSXQgaXMgcG9zc2libGUgZm9yIGFuIGVudGl0eQoJbGluZSBpbiB0aGUgQUxJIGZpbGUgdG8gaW5jbHVkZSBib3RoIGFuIGluc3RhbnRpYXRpb24gcmVmZXJlbmNlLCBhbmQgYQoJcmV0dXJuZWQgdmFsdWUuCgoyMDA1LTExLTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGNsZWFuLmFkYiAoQ2hlY2tfUHJvamVjdCk6IExvb2sgZm9yIEFkYSBjb2RlIGluIGV4dGVuZGluZyBwcm9qZWN0LAoJZXZlbiBpZiBBZGEgaXMgbm90IHNwZWNpZmllZCBhcyBhIGxhbmd1YWdlLgoJVXNlIG5ldyBmdW5jdGlvbiBETExfUHJlZml4IGZvciBETExfTmFtZQoJKENsZWFuX0ludGVyZmFjZV9Db3B5X0RpcmVjdG9yeSk6IE5ldyBwcm9jZWR1cmUKCShDbGVhbl9MaWJyYXJ5X0RpcmVjdG9yeSk6IE5ldyBwcm9jZWR1cmUKCShDbGVhbl9EaXJlY3RvcnkpOiBSZW1vdmUgcHJvY2VkdXJlLCBubyBsb25nZXIgdXNlZAoJKENsZWFuX1Byb2plY3QpOiBEbyBub3QgZGVsZXRlIGFueSBmaWxlIGluIGFuIGV4dGVybmFsbHkgYnVpbHQgcHJvamVjdAoKCSogcHJqLWVudi5hZGIgKFNldF9BZGFfUGF0aHMuQWRkLlJlY3Vyc2l2ZV9BZGQpOiBBZGQgdGhlIG9iamVjdAoJZGlyZWN0b3J5IG9mIGFuIGV4dGVuZGluZyBwcm9qZWN0LCBldmVuIHdoZW4gdGhlcmUgYXJlIG5vIEFkYSBzb3VyY2UKCXByZXNlbnQuCgkoQWRhX09iamVjdHNfUGF0aC5BZGQpOiBBZGQgTGlicmFyeV9BTElfRGlyLCBub3QgTGlicmFyeV9EaXIgdG8gdGhlIHBhdGgKCShTZXRfQWRhX1BhdGhzLkFkZC5SZWN1cnNpdmVfQWRkKTogRGl0dG8KCgkqIG1saWItcHJqLmFkYiAoQ2hlY2tfTGlicmFyeSk6IEZvciBhbGwgbGlicmFyeSBwcm9qZWN0cywgZ2V0IHRoZQoJbGlicmFyeSBmaWxlIHRpbWVzdGFtcC4KCShCdWlsZF9MaWJyYXJ5KTogQ29weSBBTEkgZmlsZXMgaW4gTGlicmFyeV9BTElfRGlyLCBub3QgaW4gTGlicmFyeV9EaXIKCShCdWlsZF9MaWJyYXJ5KTogVXNlIG5ldyBmdW5jdGlvbiBETExfUHJlZml4IGZvciB0aGUgRExMX05hbWUKCShDbGVhbik6IFJlbW92ZSBwcm9jZWR1cmUsIG5vIGxvbmdlciB1c2VkCgkoVWx0aW1hdGVfRXh0ZW5zaW9uX09mKTogTmV3IGZ1bmN0aW9uCgkoQnVpbGRfTGlicmFyeSk6IFdoZW4gY2xlYW5pbmcgdGhlIGxpYnJhcnkgZGlyZWN0b3J5LCBvbmx5IHJlbW92ZSBhbgoJZXhpc3RpbmcgbGlicmFyeSBmaWxlIGFuZCBhbnkgQUxJIGZpbGUgb2YgYSBzb3VyY2Ugb2YgdGhlIHByb2plY3QuCglXaGVuIGNsZWFuaW5nIHRoZSBpbnRlcmZhY2UgY29weSBkaXJlY3RvcnksIHJlbW92ZSBhbnkgc291cmNlIHRoYXQKCWNvdWxkIGJlIGEgc291cmNlIG9mIHRoZSBwcm9qZWN0LgoKCSogcHJqLmFkcywgcHJqLmFkYiAoUHJvamVjdF9FbXB0eSk6IEFkZCB2YWx1ZXMgb2YgbmV3IGNvbXBvbmVudHMKCUxpYnJhcnlfVFMgYW5kIEFsbF9JbXBvcnRlZF9Qcm9qZWN0cy4KCShQcm9qZWN0X0VtcHR5KTogQWRkIHZhbHVlcyBmb3IgbmV3IGNvbXBvbmVudHMgb2YgUHJvamVjdF9EYXRhOgoJTGlicmFyeV9BTElfRGlyIGFuZCBEaXNwbGF5X0xpYnJhcnlfQUxJX0RpcgoKCSogcHJqLWF0dHIuYWRiOiBOZXcgcHJvamVjdCBsZXZlbCBhdHRyaWJ1dGUgbmFtZSBMaWJyYXJ5X0FMSV9EaXIKCgkqIHByai1ubXNjLmFkYiAoQ2hlY2tfTGlicmFyeV9BdHRyaWJ1dGVzKTogVGFrZSBpbnRvIGFjY291bnQgbmV3CglhdHRyaWJ1dGUgTGlicmFyeV9BTElfRGlyLgoJKENoZWNrX0xpYnJhcnlfQXR0cmlidXRlcyk6IFRoZSBsaWJyYXJ5IGRpcmVjdG9yeSBjYW5ub3QgYmUgdGhlIHNhbWUgYXMKCWFueSBzb3VyY2UgZGlyZWN0b3J5IG9mIHRoZSBwcm9qZWN0IHRyZWUuCgkoQ2hlY2tfU3RhbmRfQWxvbmVfTGlicmFyeSk6IFRoZSBpbnRlcmZhY2UgY29weSBkaXJlY3RvcnkgY2Fubm90IGJlCgl0aGUgc2FtZSBhcyBhbnkgc291cmNlIGRpcmVjdG9yeSBvZiB0aGUgcHJvamVjdCB0cmVlLgoKCSogbWxpYi5hZGI6IFVzZSBQcmouQ29tLkZhaWwsIGluc3RlYWQgb2YgT3NpbnQuRmFpbCBkaXJlY3RseSwgdG8gZGVsZXRlCglhbGwgdGVtcG9yYXJ5IGZpbGVzLgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2VsYWIuYWRiOiBDaGFuZ2UgbmFtZSBJc19QYWNrYWdlIHRvIElzX1BhY2thZ2VfT3JfR2VuZXJpY19QYWNrYWdlCgkoQ2hlY2tfRWxhYl9DYWxsKTogQSBjYWxsIHdpdGhpbiBhIHByb3RlY3RlZCBib2R5IGlzIG5ldmVyIGFuCgllbGFib3JhdGlvbiBjYWxsLCBhbmQgZG9lcyBub3QgcmVxdWlyZSBjaGVja2luZy4KCShTYW1lX0VsYWJvcmF0aW9uX1Njb3BlKTogVGFrZSBpbnRvIGFjY291bnQgcHJvdGVjdGVkIHR5cGVzIGZvciBib3RoCgllbnRpdGllcy4KCShBY3RpdmF0ZV9FbGFib3JhdGVfQWxsX0Rlc2lyYWJsZSk6IE5ldyBwcm9jZWR1cmUKCgkqIGFsaS5hZHMsIGFsaS5hZGI6IEltcGxlbWVudCBuZXcgQUQvRUQgZm9yIEVsYWJvcmF0ZV9BbGwvRWxhYm9yYXRlCglkZXNpcmFibGUKCgkqIGJpbmRlLmFkYjogSW1wbGVtZW50IG5ldyBBRC9FRCBmb3IgRWxhYm9yYXRlX0FsbC9FbGFib3JhdGUgZGVzaXJhYmxlCgkoRWxhYl9FcnJvcl9Nc2cpOiBVc2UgLWRhIHRvIGluY2x1ZGUgaW50ZXJuYWwgdW5pdCBsaW5rcywgbm90IC1kZS4KCgkqIGxpYi13cml0LmFkcywgbGliLXdyaXQuYWRiOiAKCUltcGxlbWVudCBuZXcgQUQvRUQgZm9yIEVsYWJvcmF0ZV9BbGwvRWxhYm9yYXRlIGRlc2lyYWJsZQoJVXNlIG5ldyBFbGFib3JhdGVfQWxsX0Rlc2lyYWJsZSBmbGFnIGluIE5fV2l0aF9DbGF1c2Ugbm9kZQoKCSogc2luZm8uYWRzLCBzaW5mby5hZGIgKEFjdHVhbF9EZXNpZ25hdGVkX1N1YnR5cGUpOiBOZXcgYXR0cmlidXRlIGZvcgoJTl9GcmVlX1N0YXRlbWVudCBub2Rlcy4KCURlZmluZSBuZXcgY2xhc3MgTl9TdWJwcm9ncmFtX0luc3RhbnRpYXRpb24KCUFkZCBFbGFib3JhdGVfRGVzaXJhYmxlIGZsYWcgdG8gTl9XaXRoX0NsYXVzZSBub2RlCglBZGQgTl9EZWxheV9TdGF0ZW1lbnQgKGNvdmVyaW5nIHR3byBraW5kcyBvZiBkZWxheSkKCgkqIGRlYnVnLmFkYjogSW50cm9kdWNlIGQuZiBmbGFnIGZvciBjb21waWxlcgoJQWRkIC1kYSBzd2l0Y2ggZm9yIGJpbmRlcgoKMjAwNS0xMS0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoQnVpbGRfUmVjb3JkX0FnZ3JfQ29kZSk6IERvIG5vdCBjcmVhdGUgbWFzdGVyIGVudGl0eQoJZm9yIHRhc2sgY29tcG9uZW50LCBpbiB0aGUgY2FzZSBvZiBhIGxpbWl0ZWQgYWdncmVnYXRlLiBUaGUgZW5jbG9zZWQKCW9iamVjdCBkZWNsYXJhdGlvbiB3aWxsIGNyZWF0ZSBpdCBlYXJsaWVyLiBPdGhlcndpc2UsIGluIHRoZSBjYXNlIG9mIGEKCW5lc3RlZCBhZ2dyZWdhdGUsIHRoZSBvYmplY3QgbWF5IGFwcGVhciBpbiB0aGUgd3Jvbmcgc2NvcGUuCgkoQ29udmVydF9BZ2dyX0luX09iamVjdF9EZWNsKTogQ3JlYXRlIGEgdHJhbnNpZW50IHNjb3BlIHdoZW4gbmVlZGVkLgoJKEdlbl9Bc3NpZ24pOiBJZiB0aGUgY29tcG9uZW50IGJlaW5nIGFzc2lnbmVkIGlzIGFuIGFycmF5IHR5cGUgYW5kIHRoZQoJZXhwcmVzc2lvbiBpcyBpdHNlbGYgYW4gYWdncmVnYXRlLCB3cmFwIHRoZSBhc3NpZ25tZW50IGluIGEgYmxvY2sgdG8KCWZvcmNlIGZpbmFsaXphdGlvbiBhY3Rpb25zIG9uIHRoZSB0ZW1wb3JhcnkgY3JlYXRlZCBmb3IgZWFjaCByb3cgb2YgdGhlCgllbmNsb3Npbmcgb2JqZWN0LgoJKEJ1aWxkX1JlY29yZF9BZ2dyX0NvZGUpOiBTaWduaWZpY2FudCByZXdyaXRlIGluc3VyaW5nIHRoYXQgY3RybAoJc3RydWN0dXJlcyBhcmUgaW5pdGlhbGl6ZWQgYWZ0ZXIgYWxsIGRpc2NyaW1pbmFudHMgYXJlIHNldCBzbyB0aGF0Cgl0aGV5IGNhbiBiZSBhY2Nlc3NlZCBldmVuIHdoZW4gdGhlaXIgb2Zmc2V0IGlzIGR5bmFtaWMuCgoyMDA1LTExLTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogc2VtX2F0dHIuYWRiOiBJbXBsZW1lbnQgTWFjaGluZV9Sb3VuZGluZyBhdHRyaWJ1dGUKCShBbmFseXplX0FjY2Vzc19BdHRyaWJ1dGUpOiBUaGUgYWNjZXNzIGF0dHJpYnV0ZSBtYXkgYXBwZWFyIHdpdGhpbiBhbgoJYWdncmVnYXRlIHRoYXQgaGFzIGJlZW4gZXhwYW5kZWQgaW50byBhIGxvb3AuCgkoQ2hlY2tfVGFza19QcmVmaXgpOiBBZGQgc2VtYW50aWMgY2hlY2sgZm9yIGF0dHJpYnV0ZSAnQ2FsbGFibGUgYW5kCgknVGVybWluYXRlZCB3aGVuZXZlciB0aGUgcHJlZml4IGlzIG9mIGEgdGFzayBpbnRlcmZhY2UgY2xhc3Mtd2lkZSB0eXBlLgoJKEFuYWx5emVfQXR0cmlidXRlKTogQWRkIHNlbWFudGljIGNoZWNrIGZvciBhdHRyaWJ1dGUgJ0lkZW50aXR5IHdoZW5ldmVyCgl0aGUgcHJlZml4IGlzIG9mIGEgdGFzayBpbnRlcmZhY2UgY2xhc3Mtd2lkZSB0eXBlLgoKCSogcy12YWZsb3Atdm1zLWFscGhhLmFkYjogVmFsaWRfRCwgVmFsaWRfRiwgVmFsaWRfRzogTWFrZSBWYWwgY29uc3RhbnQKCXRvIGF2b2lkIHdhcm5pbmdzLgoKCSogcy1mYXRnZW4uYWRzLCBzLWZhdGdlbi5hZGIgKE1hY2hpbmVfUm91bmRpbmcpOiBOZXcgZnVuY3Rpb24KCVJlbW92ZSBwcmFnbWEgSW5saW5lIGZvciBbVW5hbGlnbmVkX11WYWxpZC4KCUFkZCBjb21tZW50cyB0aGF0IFZhbGlkIHJvdXRpbmVzIGRvIG5vdCB3b3JrIGZvciBWYXhfRmxvYXQKCgkqIGV4cF9hdHRyLmFkYjogSW1wbGVtZW50IE1hY2hpbmVfUm91bmRpbmcgYXR0cmlidXRlCgoJKiBzbmFtZXMuaDogQWRkIGVudHJ5IGZvciBNYWNoaW5lX1JvdW5kaW5nIGF0dHJpYnV0ZQoKMjAwNS0xMS0xNCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgoJKiBleHBfYXR0ci5hZGIgKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UsIGNhc2VzIG9mIEF0dHJpYnV0ZV9TaXplCglhbmQgcmVsYXRlZCk6IEZvciBhIHByZWZpeCB0aGF0IGlzIGFuIGV4cGxpY2l0IGRlcmVmZXJlbmNlIG9mIGFuCglhY2Nlc3MgdG8gdW5jb25zdHJhaW5lZCBwYWNrZWQgYXJyYXkgdHlwZSwgYW5ub3RhdGUgdGhlIGRlcmVmZXJlbmNlCgl3aXRoIGFuIGFjdHVhbCBzdWJ0eXBlIHNvIEdJR0kgY2FuIG1ha2UgYSBjb3JyZWN0IHNpemUgY29tcHV0YXRpb24uCgkoRXhwYW5kX05fQXR0cmlidXRlX1JlZmVyZW5jZSk6IEluIGNhc2Ugb2YgJ1VuY2hlY2tlZF9BY2Nlc3MgYW5kCgknVW5yZXN0cmljdGVkX0FjY2VzcywgaWYgdGhlIGRlc2lnbmF0ZWQgdHlwZSBpcyBhbiBpbnRlcmZhY2Ugd2UKCWFkZCBhIHR5cGUgY29udmVyc2lvbiB0byBmb3JjZSB0aGUgZGlzcGxhY2VtZW50IG9mIHRoZSBwb2ludGVyCgl0byB0aGUgc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlLgoJVXNlIFVuaXZlcnNhbF9SZWFsIGluc3RlYWQgb2YgTG9uZ19Mb25nX0Zsb2F0IHdoZW4gd2UgbmVlZCBhIGhpZ2gKCXByZWNpc2lvbiBmbG9hdCB0eXBlIGZvciB0aGUgZ2VuZXJhdGVkIGNvZGUgKHByZXZlbnRzIGdyYXR1aXRvdXMKCVZheF9GbG9hdCBzdHVmZiB3aGVuIHByYWdtYSBGbG9hdF9SZXByZXNlbnRhdGlvbiAoVmF4X0Zsb2F0KSB1c2VkKQoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBBZGQgc3VwcG9ydCBmb3IgYXR0cmlidXRlICdDYWxsYWJsZSBhbmQKCSdUZXJtaW5hdGVkIGZvciB0YXNrIGludGVyZmFjZSBjbGFzcy13aWRlIG9iamVjdHMuIEdlbmVyYXRlIGEgY2FsbCB0bwoJdGhlIHByZWRlZmluZWQgZGlzcGF0Y2hpbmcgcm91dGluZSB1c2VkIHRvIHJldHJpZXZlIHRoZSBfdGFza19pZCBmcm9tCglhIHRhc2sgY29ycmVzcG9uZGluZyByZWNvcmQuCgkoRXhwYW5kX0ZwdF9BdHRyaWJ1dGUpOiBNYWpvciBjaGFuZ2UgdG8gcHJvcGVybHkgaGFuZGxlIFZheF9GbG9hdAoKCSogc2VtX2Rpc3AuYWRiOiBDaGFuZ2UgbmFtZSBJc19QYWNrYWdlIHRvIElzX1BhY2thZ2VfT3JfR2VuZXJpY19QYWNrYWdlCgkoQ2hlY2tfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogUHJvdGVjdCB0aGUgZnJvbnRlbmQgYWdhaW50cwoJcHJldmlvdXNseSBkZXRlY3RlZCBlcnJvcnMuCgoJKiBNYWtlZmlsZS5ydGw6IEFkZCBuZXcgaW5zdGFudGlhdGlvbnMgb2Ygc3lzdGVtLmZhdF9nZW4KCgkqIHMtZmF0Zmx0LmFkcywgcy1mYXRsZmwuYWRzLCBzLWZhdGxsZi5hZHMsIHMtZmF0c2ZsLmFkczogCglDaGFuZ2UgbmFtZSBvZiBpbnN0YW50aWF0ZWQgcGFja2FnZSBmb3IgYmV0dGVyIGNvbnNpc3RlbmN5Cgl3aXRoIG5ld2x5IGFkZGVkIHN5c3RlbS5mYXRfZ2VuIGluc3RhbnRpYXRpb25zLgoKCSogcy1maWxvZmwuYWRzLCBzLWZpc2hmbC5hZHMsIHMtZnZhZGZsLmFkcywgcy1mdmFmZmwuYWRzLAoJcy1mdmFnZmwuYWRzOiBOZXcgZmlsZXMuCgoyMDA1LTExLTE0ICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfTl9Bc3NpZ25tZW50X1N0YXRlbWVudCwgVGFnZ2VkX0Nhc2UpOiBGb3IgYW4KCWFzc2lnbm1lbnQgb2YgYSB2YWx1ZSBvZiBhIHRhZ2dlZCB0eXBlIHRoYXQgaGFzIGJlZW4gcmV3cml0dGVuIHRvIGEKCWJsb2NrIHN0YXRlbWVudCwgaXQgaXMga25vd24gYnkgY29uc3RydWN0aW9uIHRoYXQgbm8gY2hlY2tzIGFyZQoJbmVjZXNzYXJ5IGZvciB0aGUgc3RhdGVtZW50cyB3aXRoaW4gdGhlIGJsb2NrOiBhbmFseXplIGl0IHdpdGggY2hlY2tzCglzdXBwcmVzc2VkLgoJKEV4cGFuZF9OX0lmX1N0YXRlbWVudCk6IFdoZW4ga2lsbGluZyBhIGRlYWQgdGhlbi1icmFuY2ggaW4gYW4KCWlmLXN0YXRlbWVudCB0aGF0IGhhcyBlbHNpZl9wYXJ0cywgcmVjb21wdXRlIHRoZSBDdXJyZW50X1ZhbHVlIG5vZGUKCWZvciBhbnkgZW50aXR5IHdob3NlIHZhbHVlIGlzIGtub3duIGZyb20gdGhlIGNvbmRpdGlvbiBvZiB0aGUgZmlyc3QKCWVsc2lmX3BhcnQuCgkoRXhwYW5kX05fUmV0dXJuX1N0YXRlbWVudCk6IFdoZW4gcmV0dXJuaW5nIGEgbXV0YWJsZSByZWNvcmQsIGNvbnZlcnQKCXRoZSByZXR1cm4gdmFsdWUgaW50byBpdHMgYWN0dWFsIHN1YnR5cGUgaW4gb3JkZXIgdG8gaGVscCB0aGUgYmFja2VuZAoJdG8gcmV0dXJuIHRoZSBhY3R1YWwgc2l6ZSBpbnN0ZWFkIG9mIHRoZSBtYXhpbXVtLiBUaGlzIGlzIGFub3RoZXIKCWFmdGVybWF0aCBvZiBub3QgcmV0dXJuaW5nIG11dGFibGUgcmVjb3JkcyBvbiB0aGUgc2VjLXN0YWNrIGFueW1vcmUuCgoJKiBzZW1fY2g1LmFkcywgc2VtX2NoNS5hZGIgKEFuYWx5emVfSXRlcmF0aW9uX1NjaGVtZSk6IE1pbm9yIGNoYW5nZSB0bwoJaGFuZGxpbmcgb2YgZXJyb3IgbXNnIGZvciBzdXNwaWNpb3VzIHJldmVyc2UgcmFuZ2UgaXRlcmF0aW9uLgoJKENoZWNrX1Bvc3NpYmxlX0N1cnJlbnRfVmFsdWVfQ29uZGl0aW9uKTogTW92ZSBkZWNsYXJhdGlvbiBmcm9tIGJvZHkgdG8KCXNwZWMsIHRvIGFsbG93IHRoaXMgc3VicHJvZ3JhbSB0byBiZSBjYWxsZWQgZnJvbSBleHBfY2g1LgoKMjAwNS0xMS0xNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXN0LmFkYiAoQXBwZW5kX0FycmF5X1RyYXZlcnNhbCk6IE1vZGlmeSBjb25zdHJhaW5lZCBjYXNlIHRvCglnZW5lcmF0ZSBhIHNldCBvZiBuZXN0ZWQgYXJyYXkgYWdncmVnYXRlcyBpbnN0ZWFkIG9mIGEgc2luZ2xlIGZsYXQKCWFnZ3JlZ2F0ZSBmb3IgbXVsdGktZGltZW5zaW9uYWwgYXJyYXlzLgoKMjAwNS0xMS0xNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogZXhwZWN0LmMgKF9fZ25hdF9raWxsKSBbV2luMzJdOiBGaXggaW1wbGVtZW50YXRpb24sIHRoZSBwaWQgcmV0dXJuZWQKCWJ5IHNwYXdudmUgaXMgYSBwcm9jZXNzIGhhbmRsZSwgbm8gbmVlZCB0byBjb252ZXJ0LiBBZGQgYSBwYXJhbWV0ZXIKCWNsb3NlIHRvIGNvbnRyb2wgd2V0aGVyIHRoZSBwcm9jZXNzIGhhbmRsZSBtdXN0IGJlIGNsb3NlZC4KCShfX2duYXRfd2FpdHBpZCk6IEZpeCBpbXBsZW1lbnRhdGlvbiwgdGhlIHBpZCByZXR1cm5lZCBieSBzcGF3bnZlIGlzCglhIHByb2Nlc3MgaGFuZGxlLCBub3QgbmVlZCB0byBjb252ZXJ0LgoJKF9fZ25hdF9raWxsKSBbKl06IEFkZCBkdW1teSBwYXJhbWV0ZXIgY2xvc2UgdG8gbWF0Y2ggdGhlIFdpbjMyIHNwZWMuCgoJKiBnLWV4cGVjdC5hZGI6IChLaWxsKTogRG9jdW1lbnQgdGhlIG5ldyBjbG9zZSBwYXJhbWV0ZXIuCgkoQ2xvc2UpOiBEbyBub3QgcmVsZWFzZSB0aGUgcHJvY2VzcyBoYW5kbGUgaW4gdGhlIGtpbGwgdGhlcmUgYXMKCXdhaXRwaWQoKSBpcyB1c2luZyBpdC4KCShTZW5kX1NpZ25hbCk6IFJlbGVhc2UgdGhlIHByb2Nlc3MgaGFuZGxlLgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfZml4ZC5hZGI6IFVzZSBVbml2ZXJzYWxfUmVhbCBpbnN0ZWFkIG9mIExvbmdfTG9uZ19GbG9hdCB3aGVuIHdlCgluZWVkIGEgaGlnaCBwcmVjaXNpb24gZmxvYXQgdHlwZSBmb3IgdGhlIGdlbmVyYXRlZCBjb2RlIChwcmV2ZW50cwoJZ3JhdHVpdG91cyBWYXhfRmxvYXQgc3R1ZmYgd2hlbiBwcmFnbWEgRmxvYXRfUmVwcmVzZW50YXRpb24gKFZheF9GbG9hdCkKCXVzZWQpLgoKCSogZXhwX2ltZ3YuYWRiOiBVc2UgVW5pdmVyc2FsX1JlYWwgaW5zdGVhZCBvZiBMb25nX0xvbmdfRmxvYXQgd2hlbiB3ZQoJbmVlZCBhIGhpZ2ggcHJlY2lzaW9uIGZsb2F0IHR5cGUgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZSAocHJldmVudHMKCWdyYXR1aXRvdXMgVmF4X0Zsb2F0IHN0dWZmIHdoZW4gcHJhZ21hIEZsb2F0X1JlcHJlc2VudGF0aW9uIChWYXhfRmxvYXQpCgl1c2VkKS4KCShFeHBhbmRfV2lkdGhfQXR0cmlidXRlKTogSW4gY29uZmlndXJhYmxlIHJ1bi10aW1lLCB0aGUgYXR0cmlidXRlIGlzIG5vdAoJYWxsb3dlZCBvbiBub24tc3RhdGljIGVudW1lcmF0aW9uIHN1YnR5cGVzLiBGb3JjZSBhIGxvYWQgZXJyb3IgdG8gZW1pdAoJdGhlIGNvcnJlY3QgZGlhZ25vc3RpYy4KCjIwMDUtMTEtMTQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2ludHIuYWRiIChFeHBhbmRfVW5jX0RlYWxsb2NhdGlvbik6IElmIEdJR0kgbmVlZHMgYW4gYWN0dWFsCglzdWJ0eXBlIHRvIGNvbXB1dGUgdGhlIHNpemUgb2YgdGhlIGRlc2lnbmF0ZWQgb2JqZWN0IGF0IHJ1bi10aW1lLAoJY3JlYXRlIHN1Y2ggYSBzdWJ0eXBlIGFuZCBzdG9yZSBpdCBpbiB0aGUgQWN0dWFsX0Rlc2lnbmF0ZWRfU3VidHlwZQoJYXR0cmlidXRlIG9mIHRoZSBOX0ZyZWVfU3RhdGVtZW50LgoJR2VuZXJhdGUgaXR5cGUgZm9yIGNsYXNzd2lkZSBkZXNpZ25hdGVkIG9iamVjdCBpbiBib3RoIGNhc2VzIG9mCgl1c2VyLXNwZWNpZmllZCBzdG9yYWdlIHBvb2w6IHNwZWNpZmljIGFuZCBjbGFzcy13aWRlLCBub3Qgb25seSBpbiB0aGUKCXNwZWNpZmljIGNhc2UuCglSYWlzZSBDRSB3aGVuIHRyeWluZyB0byBzZXQgYSBub3QgbnVsbCBhY2Nlc3MgdHlwZSBvYmplY3QgdG8gbnVsbC4KCShFeHBhbmRfRGlzcGF0Y2hpbmdfQ29uc3RydWN0b3JfQ2FsbCk6IFJldHJpZXZlIHN1YnByb2dyYW0gYWN0dWFsIHdpdGgKCWFuIGV4cGxpY2l0IGxvb3AsIGJlY2F1c2UgZnJlZXplIG5vZGVzIG1ha2UgaXRzIHBvc2l0aW9uIHZhcmlhYmxlLgoKCSogc2VtX2ludHIuYWRiIChDaGVja19JbnRyaW5zaWNfQ2FsbCk6IEdpdmVuIHdhcm5pbmcgZm9yIGZyZWVpbmcgbm90CgludWxsIG9iamVjdC4KCjIwMDUtMTEtMTQgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9zdHJtLmFkYiAoQnVpbGRfU3RyZWFtX0F0dHJfUHJvZmlsZSwgQnVpbGRfU3RyZWFtX0Z1bmN0aW9uLAoJQnVpbGRfU3RyZWFtX1Byb2NlZHVyZSk6IEFkZCB0aGUgbnVsbC1leGNsdWRpbmcgYXR0cmlidXRlIHRvIHRoZSBmaXJzdAoJZm9ybWFsLgoJVGhpcyBoYXMgbm8gc2VtYW50aWMgbWVhbmluZyB1bmRlciBBZGE5NSBtb2RlIGJ1dCBpdCBpcyBhCglyZXF1aXJlbWVudCB1bmRlciBBZGEwNSBtb2RlLgoKCSogcGFyLWNoMy5hZGIgKFBfQWNjZXNzX0RlZmluaXRpb24pOiBBZGRpdGlvbiBvZiB3YXJuaW5nIG1lc3NhZ2UgaWYKCXRoZSBudWxsIGV4Y2x1c2lvbiBpcyB1c2VkIHVuZGVyIEFkYTk1IG1vZGUKCShQX051bGxfRXhjbHVzaW9uKTogVGhlIHF1YWxpZmllciBoYXMgbm8gc2VtYW50aWMgbWVhbmluZyBpbiBBZGEgOTUuCgkoUF9BY2Nlc3NfRGVmaW5pdGlvbik6IFJlbW92ZSBhc3NlcnRpb24gdGhhdCBmb3JiaWRzIHRoZSB1c2Ugb2YKCXRoZSBudWxsLWV4Y2x1c2lvbiBmZWF0dXJlIGluIEFkYTk1LgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBpbXB1bml0LmFkYjogRXhjbHVkZSBjb250YWluZXIgaGVscGVyIHVuaXRzIG5vdCBpbnRlbmRlZCBmb3IgdXNlIGJ5Cgl1c2Vycy4KCjIwMDUtMTEtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGZyZWV6ZS5hZGIgKEZyZWV6ZV9FbnRpdHkpOiBGb3IgYW4gYWNjZXNzIGZvcm1hbCB0aGF0IGlzIGFuIGFjY2VzcwoJdG8gc3VicHJvZ3JhbSwgZnJlZXplIHRoZSBhbm9ueW1vdXMgc3VicHJvZ3JhbSB0eXBlIGF0IHRoZSBzYW1lIHRpbWUsCgl0byBwcmV2ZW50IGxhdGVyIGZyZWV6aW5nIGluIHRoZSB3cm9uZyBzY29wZSwgc3VjaCBhcyB0aGUgZW5jbG9zaW5nCglzdWJwcm9ncmFtIGJvZHkuCgkoRnJlZXplX0VudGl0eSk6IEZyZWV6ZSB0aGUgZXF1aXZhbGVudF90eXBlIG9mIGFuIGFjY2Vzc190b19wcm90ZWN0ZWRfCglzdWJwcm9ncmFtIHdoZW5ldmVyIGF2YWlsYWJsZS4KCjIwMDUtMTEtMTQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMjM3MzIKCSogZ25hdHZzbi5hZHMgKExpYnJhcnlfVmVyc2lvbik6IEJ1bXAgdG8gNC4xCgoyMDA1LTExLTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGctZGVicG9vLmFkYiAoU2V0X1ZhbGlkKTogVXNlIEludGVnZXJfQWRkcmVzcyBpbnN0ZWFkIG9mCglTdG9yYWdlX09mZnNldCB0byBhdm9pZCB3cmFwIGFyb3VuZCBjYXVzaW5nIGludmFsaWQgcmVzdWx0cy4KCjIwMDUtMTEtMTQgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGduYXRiaW5kLmFkYiAoSXNfQ3Jvc3NfQ29tcGlsZXIpOiBOZXcgZnVuY3Rpb24gcmV0dXJuaW5nIFRydWUgZm9yCgljcm9zcy1jb21waWxlci4KCShTY2FuX0JpbmRfQXJnKTogRmFpbCB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaWYgLU0gb3B0aW9uIGlzIHVzZWQKCW9uIGEgbmF0aXZlIGNvbXBpbGVyLgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBncHJlcC5hZGI6IEltcGxlbWVudCAtQyBzd2l0Y2ggdG8gc2NhbiBjb21tZW50cwoKCSogc2NuZy5hZGI6IFNjYW4gY29tbWVudCBzeW1ib2wgc2VwYXJhdGVseSBpZiBSZXBsYWNlX0luX0NvbW1lbnRzIHNldAoKCSogc2NhbnMuYWRzOiBDb21tZW50IHVwZGF0ZXMgKGluY2x1ZGluZyBuZXcgdXNlIG9mIFRva19Db21tZW50IGluCglwcmVwcm9jZXNzaW5nKQoKCSogb3B0LmFkczogQWRkIGRvY3VtZW50YXRpb24gZm9yIGZsYWdzIHRoYXQgYXJlIHVzZWQgYnkgZ3BybWFrZSwKCWN1cnJlbnRseSBhbmQgaW4gdGhlIG5leHQgdmVyc2lvbiBvZiBncHJtYWtlLgoJKFZlcmJvc2l0eV9MZXZlbCk6IE5ldyB2YXJpYWJsZQoJQWRkIFJlcGxhY2VfSW5fQ29tbWVudHMgc3dpdGNoCgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBWTVMgZXF1aXZhbGVudCBmb3IgbmV3IGduYXRtYWtlIHN3aXRjaGVzIC12bCwgLXZtCglhbmQgLXZtLgoJQWRkIC9SRVBMQUNFX0lOX0NPTU1FTlRTIGZvciBnbmF0cHJlcCAtQyBzd2l0Y2gKCjIwMDUtMTEtMTQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCgkqIGctcmVncGF0LmFkYiAoRmFpbCk6IHJhaXNlIEV4cHJlc3Npb25fRXJyb3IgaW5jbHVkaW5nIHRoZSBkaWFnbm9zdGljCgltZXNzYWdlLCBmcmllbmRsaWVyLgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnLXNwaXRiby5hZGI6IChIYXNoKTogUm90YXRlIGJ5IDMgaW5zdGVhZCBvZiAxCgoyMDA1LTExLTE0ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogaW5pdC5jIFtWTVNdOiBEb24ndCBpbnN0YWxsIF9fZ25hdF9lcnJvcl9oYW5kbGVyIGlmIERCRyRUREJHIGRlZmluZWQuCgoyMDA1LTExLTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGludGVyZmFjLmFkczogQ2hhbmdlIGRlY2xhcmF0aW9ucyBvZiBJRUVFIGZsb2F0IHR5cGVzIHNvIHRoYXQgd2Ugbm8KCWxvbmdlciBuZWVkIGEgc2VwYXJhdGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UgZm9yIFZNUy4KCjIwMDUtMTEtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGxpYi14cmVmLmFkYiAoR2VuZXJhdGVfRGVmaW5pdGlvbiwgR2VuZXJhdGVfUmVmZXJlbmNlKTogVHJlYXQgdGhlCglpbnRlcm5hbCBlbnRpdHkgY3JlYXRlZCBmb3IgdGhlIGRlY2xhcmF0aW9uIG9mIGEgY2hpbGQgc3VicHJvZ3JhbSBib2R5Cgl3aXRoIG5vIHNwZWMgYXMgY29taW5nIGZyb20gc291cmNlLCB0byBnZW5lcmF0ZSBwcm9wZXIgY3Jvc3MtcmVmZXJlbmNlCglpbmZvcm1hdGlvbi4KCjIwMDUtMTEtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZS5hZGIgKENvbXBpbGVfU291cmNlcyk6IENoYW5nZSB2ZXJib3NlIG1lc3NhZ2UgdG8gbWluaW11bQoJdmVyYm9zaXR5IGxldmVsIEhpZ2ggZm9yICJpcyBpbiBhbiBBZGEgbGlicmFyeSIsICJpcyBhIHJlYWQtb25seQoJbGlicmFyeSIgYW5kICJpcyBhbiBpbnRlcm5hbCBsaWJyYXJ5IiwKCShDcmVhdGVfQmluZGVyX01hcHBpbmdfRmlsZSk6IFBhdGggbmFtZSBvZiBBTEkgZmlsZSBmb3IgbGlicmFyeSBwcm9qZWN0CgltdXN0IGluY2x1ZGUgdGhlIGxpYnJhcnkgZGlyZWN0b3J5LCBub3QgdGhlIG9iamVjdCBkaXJlY3RvcnkuCgkoU2Nhbl9NYWtlX0FyZyk6IE1ha2Ugc3VyZSB0aGF0IFN3aXRjaC5NLlNjYW5fTWFrZV9Td2l0Y2hlcyBpcyBjYWxsZWQKCWZvciBuZXcgc3dpdGNoZXMgLXZsLCAtdm0gYW5kIC12aC4KCShWZXJib3NlX01zZyk6IEFkZCBuZXcgZGVmYXVsdGVkIHBhcmFtZXRlciBNaW5pbXVtX1ZlcmJvc2l0eQoJKENoZWNrKTogVXNlIG1pbmltdW0gdmVyYm9zaXR5IE1lZGl1bSBmb3Igc29tZSBWZXJib3NlX01zZyBjYWxscwoJKENvbXBpbGVfU291cmNlcyk6IERvIG5vdCBhdHRlbXB0IHRvIGNvbXBpbGUgaWYgYW4gQUxJIGZpbGUgaXMgbWlzc2luZwoJaW4gYSBwcm9qZWN0IHRoYXQgaXMgZXh0ZXJuYWxseSBidWlsdC4KCShDb21wdXRlX0FsbF9JbXBvcnRlZF9Qcm9qZWN0cyk6IE5ldyBwcm9jZWR1cmUKCShHbmF0bWFrZSk6IENoZWNrIGlmIGltcG9ydGluZyBsaWJyYXJpZXMgc2hvdWxkIGJlIHJlZ2VuZXJhdGVkIGJlY2F1c2UKCWF0IGxlYXN0IGFuIGltcG9ydGVkIGxpYnJhcnkgaXMgbW9yZSByZWNlbnQuCgkoSW5pdGlhbGl6ZSk6IEZvciBlYWNoIHByb2plY3QgY29tcHV0ZSB0aGUgbGlzdCBvZiB0aGUgcHJvamVjdHMgaXQKCWltcG9ydHMgZGlyZWN0bHkgb3IgaW5kaXJlY3RseS4KCShBZGRfTGlicmFyeV9TZWFyY2hfRGlyKTogTmV3IHByb2NlZHVyZSwgdXNlZCBpbiBwbGFjZSBvZgoJQWRkX0xpYl9TZWFyY2hfRGlyIGluIHByb2NlZHVyZSBTY2FuX01ha2VfQXJnIHNvIHRoYXQgYWJzb2x1dGUgcGF0aHMgYXJlCglwdXQgaW4gdGhlIHNlYXJjaCBwYXRocy4KCShBZGRfU291cmNlX1NlYXJjaF9EaXIpOiBOZXcgcHJvY2VkdXJlLCB1c2VkIGluIHBsYWNlIG9mCglBZGRfU3JjX1NlYXJjaF9EaXIgaW4gcHJvY2VkdXJlIFNjYW5fTWFrZV9Bcmcgc28gdGhhdCBhYnNvbHV0ZSBwYXRocyBhcmUKCXB1dCBpbiB0aGUgc2VhcmNoIHBhdGhzLgoJKE1hcmtfRGlyZWN0b3J5KTogUmVzb2x2ZSB0aGUgYWJzb2x1dGUgcGF0aCB0aGUgZGlyZWN0b3J5IGJlZm9yZSBtYXJraW5nCglpdC4KCgkqIHN3aXRjaC1tLmFkYiAoU2Nhbl9NYWtlX1N3aXRjaGVzKTogUmVwbGFjZSAicmFpc2UgQmFkX1N3aXRjaDsiIHdpdGgKCWNhbGwgdG8gbmV3IHByb2NlZHVyZSBCYWRfU3dpdGNoLiBDYWxsIFNjYW5fUG9zIHdpdGggbmV3IHBhcmFtZXRlcgoJU3dpdGNoLiBEbyBub3QgaGFuZGxlIGFueSBleGNlcHRpb24uCgkoU2Nhbl9NYWtlX1N3aXRjaGVzKTogSW5jcmVtZW50IFB0ciBmb3IgbmV3IHN3aXRjaGVzIC12bCwgLXZtIGFuZCAtdmgKCXNvIHRoYXQgdGhlIHN3aXRjaCBpcyByZWNvZ25pemVkIGFzIHZhbGlkLgoJKFNjYW5fTWFrZV9Td2l0Y2hlcyk6IEltcGxlbWVudCBuZXcgc3dpdGNoZXMgLXZsLCAtdm0gYW5kIC12aC4KCjIwMDUtMTEtMTQgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGFkYWNvcmUuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDUtMTEtMTQgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIG1kbGwuYWRiIChCdWlsZF9SZWxvY19ETEwpOiBGaXggcGFyYW1ldGVyIGhhbmRsaW5nIHdoZW4gYSBtYXAgZmlsZSBpcwoJdXNlZC4KCShBZGFfQnVpbGRfUmVsb2NfRExMKTogRml4IHBhcmFtZXRlciBoYW5kbGluZyB3aGVuIGEgbWFwIGZpbGUgaXMgdXNlZC4KCUluIGJvdGggY2FzZXMgdGhlIGxhc3QgYXJndW1lbnQgd2FzIGRyb3BwZWQuCgoyMDA1LTExLTE0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogbmFtZXQuaDogKENvbHVtbl9OdW1iZSk6IE5ldyB0eXBlLgoJKEdldF9Db2x1bW5fTnVtYmVyKTogRGVmaW5lIHRvIHNpbnB1dF9fZ2V0X2NvbHVtbl9udW1iZXIuCgkoSW5zdGFudGlhdGlvbik6IERlZmluZSB0byBzaW5wdXRfX2luc3RhbnRpYXRpb24uCgkoR2V0X0NvbHVtbl9OdW1iZXIpOiBEZWNsYXJlLgoJKEluc3RhbnRpYXRpb24pOiBMaWtld2lzZS4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoMTAuYWRiIChQX0NvbXBpbGF0aW9uX1VuaXQpOiBBZGQgZGVmZW5zZXMgYWdhaW5zdCBqdW5rIHVuaXQKCXN5bnRheCwgd2hpY2ggY291bGQgY2F1c2UgY29tcGlsZXIgaGFuZ3MuCgoyMDA1LTExLTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByai1leHQuYWRiOiBUYWtlIGludG8gYWNjb3VudCBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGUKCUdQUl9QUk9KRUNUX1BBVEguIFdhcm4gaWYgYm90aCBHUFJfUFJPSkVDVF9QQVRIIGFuZCBBREFfUFJPSkVDVF9QQVRICglhcmUgZGVmaW5lZC4KCShQcmouRXh0IGVsYWJvcmF0aW9uKTogRm9yIGVhY2ggZGlyZWN0b3J5IGluIHRoZSBBREFfUFJPSkVDVF9QQVRILAoJbm9ybWFsaXplIGl0cyBwYXRoIG5hbWUsIG1ha2luZyBpdCBhYnNvbHV0ZSBhbmQgcmVzb2x2aW5nIHN5bWJvbGljCglsaW5rcywgYW5kIHJlcGxhY2UgdGhlIG9yaWdpbmFsIGlmIHJlc29sdmVkIHBhdGggaXMgZGlmZmVyZW50LgoKMjAwNS0xMS0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmotcGFydC5hZGIgKENyZWF0ZV9WaXJ0dWFsX0V4dGVuZGluZ19Qcm9qZWN0KTogUHV0IHZpcnR1YWwgcHJvamVjdAoJaW50byBQcmouVHJlZS5UcmVlX1ByaXZhdGVfUGFydC5Qcm9qZWN0c19IdGFibGUgZm9yIEdQUy4KCjIwMDUtMTEtMTQgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWRhY29yZS5jb20+CgoJKiBwcmotcHAuYWRiIChQcmludCk6IERvIG5vdCBvdXRwdXQgdGhlIHdpdGggc3RhdGVtZW50IGlmIHRoZQoJYXNzb2NpYXRlZCBuYW1lIGlzIGVtcHR5LCB3aGljaCBoYXBwZW5zIGZvciB2aXJ0dWFsIGV4dGVuZGluZyBwcm9qZWN0cy4KCShQcmludCk6IFByZXNlcnZlIHRoZSAiZXh0ZW5kcyBhbGwiIGF0dHJpYnV0ZSB3aGVuIHByaW50aW5nIHRoZSBwcm9qZWN0LgoKCSogcHJqLXRyZWUuYWRzIChTdHJpbmdfVmFsdWVfT2YpOiBBZGQgY29tbWVudCBhYm91dCByZXR1cm5lZCB2YWx1ZSBmb3IKCWEgdmlydHVhbCBleHRlbmRpbmcgcHJvamVjdC4KCjIwMDUtMTEtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9hZ2dyLmFkYiAoUmVzb2x2ZV9BZ2dyZWdhdGUpOiBBbiBvdGhlcnMgY2hvaWNlIGlzIGxlZ2FsIG9uIHRoZQoJcmhzIG9mIGFuIGFzc2lnbm1lbnQgZXZlbiBpZiB0aGUgdHlwZSBpcyB1bmNvbnN0cmFpbmVkLCB3aGVuIHRoZQoJY29udGV4dCBpcyBub24tZXhwYW5kaW5nLgoJSW4gYW4gaW5saW5lZCBib2R5LCBpZiB0aGUgY29udGV4dCB0eXBlIGlzIHByaXZhdGUsCglyZXNvbHZlIHdpdGggaXRzIGZ1bGwgdmlldywgd2hpY2ggbXVzdCBiZSBhIGNvbXBvc2l0ZSB0eXBlLgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTAuYWRiOiBDaGFuZ2UgbmFtZSBJc19QYWNrYWdlIHRvIElzX1BhY2thZ2VfT3JfR2VuZXJpY19QYWNrYWdlCglEbyBub3QgZ2l2ZSBvYnNvbGVzY2VudCB3YXJuaW5nIG9uIHdpdGggb2Ygc3VicHJvZ3JhbSAoc2luY2Ugd2UKCWRpYWdub3NlIGNhbGxzKQoJKEFuYWx5emVfV2l0aF9DbGF1c2UpOiBBZGQgdGVzdCBmb3Igb2Jzb2xlc2NlbnQgcGFja2FnZQoJKEluc3RhbGxfQ29udGV4dF9DbGF1c2VzKTogSWYgdGhlIHVuaXQgaXMgdGhlIGJvZHkgb2YgYSBjaGlsZCB1bml0LCBkbwoJbm90IGluc3RhbGwgdHdpY2UgdGhlIHByaXZhdGUgZGVjbGFyYXRpb25zIG9mIHRoZSBwYXJlbnRzLCB0byBwcmV2ZW50CgljaXJjdWxhciBsaXN0cyBvZiBVc2VfQ2xhdXNlcyBpbiBhIHBhcmVudC4KCShJbXBsaWNpdF9XaXRoX09uX1BhcmVudCk6IERvIGFkZCBkdXBsaWNhdGUgd2l0aF9jbGF1c2Ugb24gcGFyZW50IHdoZW4KCWNvbXBpbGluZyBib2R5IG9mIGNoaWxkIHVuaXQuCglVc2UgbmV3IGNsYXNzIE5fU3VicHJvZ3JhbV9JbnN0YW50aWF0aW9uCgkoRXhwYW5kX1dpdGhfQ2xhdXNlKTogSWYgdGhpcyBpcyBhIHByaXZhdGUgd2l0aF9jbGF1c2UgZm9yIGEgY2hpbGQgdW5pdCwKCWFwcGVhcmluZyBpbiB0aGUgY29udGV4dCBvZiBhIHBhY2thZ2UgZGVjbGFyYXRpb24sIHRoZW4gdGhlIGltcGxpY2l0Cgl3aXRoX2NsYXVzZXMgZ2VuZXJhdGVkIGZvciBwYXJlbnQgdW5pdHMgYXJlIHByaXZhdGUgYXMgd2VsbC4KCShMaWNlbnNlX0NoZWNrKTogRG8gbm90IGdlbmVyYXRlIG1lc3NhZ2UgaWYgd2l0aCdlZCB1bml0IGlzIGludGVybmFsCgoyMDA1LTExLTE0ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMi5hZHMsIHNlbV9jaDEyLmFkYiAoTWFwX0VudGl0aWVzKTogRXhjbHVkZSBlbnRpdGllcyB3aG9zZQoJbmFtZXMgYXJlIGludGVybmFsLCBiZWNhdXNlIHRoZXkgd2lsbCBub3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgcGFydG5lcgoJaW4gdGhlIGFjdHVhbCBwYWNrYWdlLgoJKEFuYWx5emVfRm9ybWFsX1BhY2thZ2UpOiBNb3ZlIHRoZSBzZXR0aW5nIG9mIHRoZSBmb3JtYWwgcGFja2FnZSBzcGVjJ3MKCUdlbmVyaWNfUGFyZW50IGZpZWxkIHNvIHRoYXQgaXQgb2NjdXJzIHByaW9yIHRvIGFuYWx5emluZyB0aGUgcGFja2FnZSwKCXRvIGFsbG93IHByb3BlciBvcGVyYXRpb24gb2YgSW5zdGFsbF9QYXJlbnRfUHJpdmF0ZV9EZWNsYXJhdGlvbnMuCgkoQW5hbHl6ZV9QYWNrYWdlX0luc3RhbnRpYXRpb24pOiBTZXQgdGhlIGluc3RhbnRpYXRlZCBwYWNrYWdlIGVudGl0eSdzCglQYWNrYWdlX0luc3RhbnRpYXRpb24gZmllbGQuCgkoR2V0X1BhY2thZ2VfSW5zdGFudGlhdGlvbl9Ob2RlKTogTW92ZSBkZWNsYXJhdGlvbiB0byBwYWNrYWdlIHNwZWMuCglSZXRyaWV2ZSB0aGUgTl9QYWNrYWdlX0luc3RhbnRpYXRpb24gbm9kZSB3aGVuIHRoZSBQYWNrYWdlX0luc3RhbnRpYXRpb24KCWZpZWxkIGlzIHByZXNlbnQuCgkoQ2hlY2tfR2VuZXJpY19DaGlsZF9Vbml0KTogV2l0aGluIGFuIGlubGluZWQgY2FsbCwgdGhlIG9ubHkgcG9zc2libGUKCWluc3RhbnRpYXRpb24gaXMgVW5jaGVja2VkX0NvbnZlcnNpb24sIGZvciB3aGljaCBubyBwYXJlbnRzIGFyZSBuZWVkZWQuCgkoSW5saW5lX0luc3RhbmNlX0JvZHkpOiBEZWluc3RhbGwgYW5kIHJlY29yZCB0aGUgdXNlX2NsYXVzZXMgZm9yIGFsbAoJcGFyZW50IHNjb3BlcyBvZiBhIHNjb3BlIGJlaW5nIHJlbW92ZWQgcHJpb3IgdG8gaW5saW5pbmcgYW4gaW5zdGFuY2UKCWJvZHkuCgkoQW5hbHl6ZV9QYWNrYWdlX0luc3RhbnRpYXRpb24pOiBEbyBub3QgcGVyZm9ybSBmcm9udC1lbmQgaW5saW5pbmcgd2hlbgoJdGhlIGN1cnJlbnQgY29udGV4dCBpcyBpdHNlbGYgYW4gaW5zdGFuY2Ugd2l0aGluIGEgbm9uLWluc3RhbmNlIGNoaWxkCgl1bml0LCB0byBwcmV2ZW50IHNjb3BlIHN0YWNrIGVycm9ycy4KCShTYXZlX1JlZmVyZW5jZXMpOiBJZiB0aGUgbm9kZSBpcyBhbiBhZ2dyZWdhdGUgdGhhdCBpcyBhbiBhY3R1YWwgaW4gYQoJY2FsbCwgcmV3cml0ZSBhcyBhIHF1YWxpZmllZCBleHByZXNzaW9uIHRvIHByZXNlcnZlIHNvbWUgdHlwZQoJaW5mb3JtYXRpb24sIHRvIHJlc29sdmUgcG9zc2libGUgYW1iaWd1aXRpZXMgaW4gdGhlIGluc3RhbmNlLgoJKEluc3RhbmNlX1BhcmVudF9Vbml0KTogTmV3IGdsb2JhbCB2YXJpYWJsZSB0byByZWNvcmQgdGhlIHVsdGltYXRlCglwYXJlbnQgdW5pdCBhc3NvY2lhdGVkIHdpdGggYSBnZW5lcmljIGNoaWxkIHVuaXQgaW5zdGFuY2UgKGFzc29jaWF0ZWQKCXdpdGggdGhlIGV4aXN0aW5nIFBhcmVudF9Vbml0X1Zpc2libGUgZmxhZykuCgkodHlwZSBJbnN0YW5jZV9FbnYpOiBOZXcgY29tcG9uZW50IEluc3RhbmNlX1BhcmVudF9Vbml0IGZvciBzdGFja2luZwoJcGFyZW50cyByZWNvcmRlZCBpbiB0aGUgZ2xvYmFsIEluc3RhbmNlX1BhcmVudF9Vbml0LgoJKEluaXRfRW52KTogU2F2ZSB2YWx1ZSBvZiBJbnN0YW5jZV9QYXJlbnRfVW5pdCBpbiB0aGUgSW5zdGFuY2VfRW52CglzdGFjay4KCShJbnN0YWxsX1NwZWMpOiBTYXZlIHRoZSBwYXJlbnQgdW5pdCBlbnRpdHkgaW4gSW5zdGFuY2VfUGFyZW50X1VuaXQgd2hlbgoJaXQncyBub3QgYSB0b3AtbGV2ZWwgdW5pdCwgYW5kIG9ubHkgZG8gdGhpcyBpZiBJbnN0YW5jZV9QYXJlbnRfVW5pdCBpcwoJbm90IGFscmVhZHkgc2V0LiBSZXBsYWNlIHRlc3Qgb2YgSXNfQ2hpbGRfVW5pdCB3aXRoIHRlc3Qgb2YgcGFyZW50J3MKCXNjb3BlIGFnYWluc3QgcGFja2FnZSBTdGFuZGFyZC4gQWRkIGNvbW1lbnRzIGFuZCBhID8/PyBjb21tZW50LgoJKFJlbW92ZV9QYXJlbnQpOiBSZXZpc2UgY29uZGl0aW9uIGZvciByZXNldHRpbmcgSXNfSW1tZWRpYXRlbHlfVmlzaWJsZQoJb24gYSBjaGlsZCBpbnN0YW5jZSBwYXJlbnQgdG8gdGVzdCB0aGF0IHRoZSBwYXJlbnQgZXF1YWxzCglJbnN0YW5jZV9QYXJlbnQgcmF0aGVyIHRoYW4gc2ltcGx5IGNoZWNraW5nIHRoYXQgdGhlIHVuaXQgaXMgbm90IGEKCWNoaWxkIHVuaXQuCgkoUmVzdG9yZV9FbnYpOiBSZXN0b3JlIHZhbHVlIG9mIEluc3RhbmNlX1BhcmVudF9Vbml0IGZyb20gSW5zdGFuY2VfRW52LgoJKFZhbGlkYXRlX0Rlcml2ZWRfSW50ZXJmYWNlX1R5cGVfSW5zdGFuY2UpOiBWZXJpZnkgdGhhdCBhbGwgYW5jZXN0b3JzIG9mCglhIGZvcm1hbCBpbnRlcmZhY2UgYXJlIGFuY2VzdG9ycyBvZiB0aGUgY29ycmVzcG9uZGluZyBhY3R1YWwuCgkoVmFsaWRhdGVfRm9ybWFsX0ludGVyZmFjZV9UeXBlKTogQWRkaXRpb25hbCBsZWdhbGl0eSBjaGVja3MuCgkoQW5hbHl6ZV9Gb3JtYWxfRGVyaXZlZF9JbnRlcmZhY2VfVHlwZSk6IE5ldyBwcm9jZWR1cmUgdG8gaGFuZGxlIGZvcm1hbAoJaW50ZXJmYWNlIHR5cGVzIHdpdGggYW5jZXN0b3JzLgoJKEFuYWx5emVfRm9ybWFsX1BhY2thZ2UpOiBJZiBmb3JtYWwgaXMgYSByZW5hbWluZywgdXNlIHJlbmFtZWQgZW50aXR5Cgl0byBkaWFnbm9zZSBhdHRlbXB0cyB0byB1c2UgZ2VuZXJpYyB3aXRoaW4gaXRzIG93biBkZWNsYXJhdGlvbi4KCjIwMDUtMTEtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gzLmFkcywgc2VtX2NoMy5hZGIgKEJ1aWxkX0Rpc2NyaW1pbmFsKTogQWRkIGxpbmsgdG8gb3JpZ2luYWwKCWRpc2NyaW1pbmFudC4KCShCdWlsZF9Qcml2YXRlX0Rlcml2ZWRfVHlwZSk6IFRoZSBlbnRpdHkgb2YgdGhlIGNyZWF0ZWQgZnVsbCB2aWV3IG9mIHRoZQoJZGVyaXZlZCB0eXBlIGRvZXMgbm90IGNvbWUgZnJvbSBzb3VyY2UuIElmIGFmdGVyIGluc3RhbGxpbmcgdGhlIHByaXZhdGUKCWRlY2xhcmF0aW9ucyBvZiB0aGUgcGFyZW50IHNjb3BlIHRoZSBwYXJlbnQgaXMgc3RpbGwgcHJpdmF0ZSwgdXNlIGl0cwoJZnVsbCB2aWV3IHRvIGNvbnN0cnVjdCB0aGUgZnVsbCBkZWNsYXJhdGlvbiBvZiB0aGUgZGVyaXZlZCB0eXBlLgoJKEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUpOiBSZWxheCB0aGUgY29uZGl0aW9uIHRoYXQgY29udHJvbHMgdGhlCglleGVjdXRpb24gb2YgdGhlIGNoZWNrIHRoYXQgdmVyaWZpZXMgdGhhdCB0aGUgcGFydGlhbCB2aWV3IGFuZAoJdGhlIGZ1bGwgdmlldyBhZ3JlZSBpbiB0aGUgc2V0IG9mIGltcGxlbWVudGVkIGludGVyZmFjZXMuIEluCglhZGRpdGlvbiwgdGhpcyB0ZXN0IG5vdyBvbmx5IHRha2VzIGludG8gYWNjb3VudCB0aGUgcHJvZ2VuaXRvcnMuCgkoRGVyaXZlX0ludGVyZmFjZV9TdWJwcm9ncmFtcyk6IE5vIG5lZWQgdG8gZGVyaXZlIHN1YnByb2dyYW1zCglvZiBhbmNlc3RvcnMgdGhhdCBhcmUgaW50ZXJmYWNlcy4KCShEZXJpdmVfU3VicHJvZ3JhbXMpOiBSZW1vdmUgZm9ybWFsIE5vX1ByZWRlZmluZWRfUHJpbXMgYW5kIHRoZQoJYXNzb2NpYXRlZCBjb2RlLgoJQ2hhbmdlIG5hbWUgSXNfUGFja2FnZSB0byBJc19QYWNrYWdlX09yX0dlbmVyaWNfUGFja2FnZQoJKENvbXBsZXRlX1N1YnByb2dyYW1zX0Rlcml2YXRpb24pOiBIYW5kbGUgdGhlIGNhc2UgaW4gd2hpY2ggdGhlIGZ1bGwKCXZpZXcgaXMgYSB0cmFuc2l0aXZlIGRlcml2YXRpb24gb2YgdGhlIGFuY2VzdG9yIG9mIHRoZSBwYXJ0aWFsIHZpZXcuCgkoUHJvY2Vzc19GdWxsX1ZpZXcpOiBSZW5hbWUgbG9jYWwgc3VicHJvZ3JhbSBGaW5kX0ludGVyZmFjZV9Jbl8KCURlc2NlbmRhbnQgdG8gRmluZF9BbmNlc3Rvcl9JbnRlcmZhY2UgdG8gbGVhdmUgdGhlIGNvZGUgbW9yZSBjbGVhci4KCVJlbW92ZSB3cm9uZyBjb2RlIHRoYXQgYXZvaWRzIHRoZSBnZW5lcmF0aW9uIG9mIGFuIGVycm9yIG1lc3NhZ2UKCXdoZW4gdGhlIGltbWVkaWF0ZSBhbmNlc3RvciBvZiB0aGUgcGFydGlhbCB2aWV3IGlzIGFuIGludGVyZmFjZS4KCUluIGFkZGl0aW9uIHNvbWUgbWlub3IgcmVvcmdhbml6YXRpb24gb2YgdGhlIGNvZGUgaGFzIGJlZW4gZG9uZSB0bwoJbGVhdmUgaXQgbW9yZSBjbGVhci4KCShBbmFseXplX1R5cGVfRGVjbGFyYXRpb24pOiBJZiB0eXBlIGhhcyBwcmV2aW91cyBpbmNvbXBsZXRlIHRhZ2dlZAoJcGFydGlhbCB2aWV3LCBpbmhlcml0IHByb3Blcmx5IGl0cyBwcmltaXRpdmUgb3BlcmF0aW9ucy4KCShDb2xsZWN0X0ludGVyZmFjZXMpOiBNYWtlIHB1YmxpYywgZm9yIGFuYWx5c2lzIG9mIGZvcm1hbAoJaW50ZXJmYWNlcy4KCShBbmFseXplX0ludGVyZmFjZV9EZWNsYXJhdGlvbik6IE5ldyBwcm9jZWR1cmUgZm9yIHVzZSBmb3IgcmVndWxhciBhbmQKCWZvcm1hbCBpbnRlcmZhY2UgZGVjbGFyYXRpb25zLgoJKEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUpOiBBZGQgc3VwcG9ydCBmb3IgcHJpdmF0ZSB0eXBlcyB0byB0aGUgY29kZQoJdGhhdCBjaGVja3MgaWYgYSB0YWdnZWQgdHlwZSBpbXBsZW1lbnRzIGFic3RyYWN0IGludGVyZmFjZXMuCgkoQ2hlY2tfQWxpYXNlZF9Db21wb25lbnRfVHlwZSk6IFRoZSB0ZXN0IGFwcGxpZXMgaW4gdGhlIHNwZWMgb2YgYW4KCWluc3RhbmNlIGFzIHdlbGwuCgkoQWNjZXNzX1R5cGVfRGVjbGFyYXRpb24pOiBDbGVhbiB1cCBkZWNsYXJhdGlvbiBvZiBtYWxmb3JtZWQgdHlwZQoJZGVjbGFyZWQgYXMgYW4gYWNjZXNzIHRvIGl0cyBvd24gY2xhc3N3aWRlIHR5cGUsIHRvIHByZXZlbnQgY2FzY2FkZWQKCWNyYXNoLgoJKENvbGxlY3RfSW50ZXJmYWNlcyk6IEZvciBwcml2YXRlIGV4dGVuc2lvbnMgYW5kIGZvciBkZXJpdmVkIHRhc2sgdHlwZXMKCWFuZCBkZXJpdmVkIHByb3RlY3RlZCB0eXBlcywgdGhlIHBhcmVudCBtYXkgYmUgYW4gaW50ZXJmYWNlIHRoYXQgbXVzdAoJYmUgaW5jbHVkZWQgaW4gdGhlIGludGVyZmFjZSBsaXN0LgoJKEFjY2Vzc19EZWZpbml0aW9uKTogSWYgdGhlIGRlc2lnbmF0ZWQgdHlwZSBpcyBhbiBpbnRlcmZhY2UgdGhhdCBtYXkKCWNvbnRhaW4gdGFza3MsIGNyZWF0ZSBNYXN0ZXJfSWQgZm9yIGl0IGJlZm9yZSBhbmFseXppbmcgdGhlIGV4cHJlc3Npb24KCW9mIHRoZSBkZWNsYXJhdGlvbiwgd2hpY2ggbWF5IGJlIGFuIGFsbG9jYXRvci4KCShSZWNvcmRfVHlwZV9EZWNsYXJhdGlvbik6IFNldCBwcm9wZXJseSB0aGUgaW50ZXJmYWNlIGtpbmQsIGZvciB1c2UKCWluIGFsbG9jYXRvcnMsIHRoZSBjcmVhdGlvbiBvZiBtYXN0ZXIgaWQncyBmb3IgdGFzayBpbnRlcmZhY2VzLCBldGMuCgoyMDA1LTExLTE0ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNi5hZGIgKENoZWNrX0NvbmZvcm1hbmNlKTogVGhlIG51bGwtZXhjbHVzaW9uIGZlYXR1cmUgY2FuIGJlCglvbWl0dGVkIGluIGNhc2Ugb2Ygc3RyZWFtIGF0dHJpYnV0ZSBzdWJwcm9ncmFtcy4KCShDaGVja19JbmxpbmVfUHJhZ21hKTogSGFuZGxlIElubGluZSBhbmQgSW5saW5lX0Fsd2F5cyBwcmFnbWFzIHRoYXQKCWFwcGVhciBpbW1lZGlhdGVseSBhZnRlciBhIHN1YnByb2dyYW0gYm9keSwgd2hlbiB0aGVyZSBpcyBubyBwcmV2aW91cwoJc3VicHJvZ3JhbSBkZWNsYXJhdGlvbi4KCUNoYW5nZSBuYW1lIElzX1BhY2thZ2UgdG8gSXNfUGFja2FnZV9Pcl9HZW5lcmljX1BhY2thZ2UKCShQcm9jZXNzX0Zvcm1hbHMpOiBBIG5vbiBudWxsIHF1YWxpZmllciBvbiBhIG5vbiBudWxsIG5hbWVkIGFjY2VzcwoJdHlwZSBpcyBub3QgYW4gZXJyb3IsIGFuZCBpcyBhIHdhcm5pbmcgb25seSBpZiBSZWR1bmRhbnRfQ29uc3RydWN0cwoJYXJlIGZsYWdnZWQuCgoyMDA1LTExLTE0ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNy5hZGIgKEluc3RhbGxfUGFyZW50X1ByaXZhdGVfRGVjbGFyYXRpb25zKTogTmV3IHByb2NlZHVyZQoJbmVzdGVkIHdpdGhpbiBBbmFseXplX1BhY2thZ2VfU3BlY2lmaWNhdGlvbiB0byBpbnN0YWxsIHRoZSBwcml2YXRlCglkZWNsYXJhdGlvbnMgYW5kIHVzZSBjbGF1c2VzIHdpdGhpbiBlYWNoIG9mIHRoZSBwYXJlbnQgdW5pdHMgb2YgYQoJcGFja2FnZSBpbnN0YW5jZSBvZiBhIGdlbmVyaWMgY2hpbGQgcGFja2FnZS4KCShBbmFseXplX1BhY2thZ2VfU3BlY2lmaWNhdGlvbik6IFdoZW4gZW50ZXJpbmcgYSBwcml2YXRlIHBhcnQgb2YgYQoJcGFja2FnZSBhc3NvY2lhdGVkIHdpdGggYSBnZW5lcmljIGluc3RhbmNlIG9yIGZvcm1hbCBwYWNrYWdlLCB0aGUKCXByaXZhdGUgZGVjbGFyYXRpb25zIG9mIHRoZSBwYXJlbnQgbXVzdCBiZSBpbnN0YWxsZWQgKGJ5IGNhbGxpbmcgbmV3Cglwcm9jZWR1cmUgSW5zdGFsbF9QYXJlbnRfUHJpdmF0ZV9EZWNsYXJhdGlvbnMpLgoJQ2hhbmdlIG5hbWUgSXNfUGFja2FnZSB0byBJc19QYWNrYWdlX09yX0dlbmVyaWNfUGFja2FnZQoJKFByZXNlcnZlX0Z1bGxfQXR0cmlidXRlcyk6IEZvciBhIHN5bmNocm9uaXplZCB0eXBlLCB0aGUgY29ycmVzcG9uZGluZwoJcmVjb3JkIGlzIGFic2VudCBpbiBhIGdlbmVyaWMgY29udGV4dCwgd2hpY2ggZG9lcyBub3QgaW5kaWNhdGUgYQoJY29tcGlsZXIgZXJyb3IuCgoyMDA1LTExLTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g4LmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtX1JlbmFtaW5nKTogSW4gYSBnZW5lcmljIGNvbnRleHQsIGRvCglub3QgdHJ5IHRvIHJld3JpdGUgYSByZW5hbWVkIHN0cmVhbSBhdHRyaWJ1dGUsIGJlY2F1c2UgdGhlIG9wZXJhdGlvbnMKCW9uIHRoZSB0eXBlIG1heSBub3QgaGF2ZSBiZWVuIGdlbmVyYXRlZC4KCUhhbmRsZSBwcm9wZXJseSBhIHJlbmFtaW5nX2FzX2JvZHkgZ2VuZXJhdGVkIGZvciBhIHN0cmVhbSBvcGVyYXRpb24KCXdob3NlIGRlZmF1bHQgaXMgYWJzdHJhY3QgYmVjYXVzZSB0aGUgb2JqZWN0IHR5cGUgaXRzZWxmIGlzIGFic3RyYWN0LgoJKEZpbmRfVHlwZSk6IElmIHRoZSB0eXBlIGlzIGluY29tcGxldGUgYW5kIGFwcGVhcnMgYXMgdGhlIHByZWZpeCBvZiBhCgknQ2xhc3MgcmVmZXJlbmNlLCBpdCBpcyB0YWdnZWQsIGFuZCBpdHMgbGlzdCBvZiBwcmltaXRpdmUgb3BlcmF0aW9ucwoJbXVzdCBiZSBpbml0aWFsaXplZCBwcm9wZXJseS4KCShDaGFpbl9Vc2VfQ2xhdXNlcyk6IFdoZW4gY2hhaW5pbmcgdGhlIHVzZSBjbGF1c2VzIHRoYXQgYXBwZWFyIGluIHRoZQoJcHJpdmF0ZSBkZWNsYXJhdGlvbiBvZiBhIHBhcmVudCB1bml0LCBwcmlvciB0byBjb21waWxpbmcgdGhlIHByaXZhdGUKCXBhcnQgb2YgYSBjaGlsZCB1bml0LCBmaW5kIG9uIHRoZSBzY29wZSBzdGFjayB0aGUgcHJvcGVyIHBhcmVudCBlbnRpdHkKCW9uIHdoaWNoIHRvIGxpbmsgdGhlIHVzZSBjbGF1c2UuCgkoTm90ZV9SZWR1bmRhbnRfVXNlKTogRW1pdCBhIHdhcm5pbmcgd2hlbiBhIHJlZHVuZGFudCB1c2UgY2xhdXNlIGlzCglkZXRlY3RlZC4KCShBbmFseXplX09iamVjdF9SZW5hbWluZyk6IEFuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgbm90IGEgbGVnYWwgb2JqZWN0CglpZiBpdCBpcyBub3QgYSBmdW5jdGlvbiBjYWxsLgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2V2YWwuYWRiOiBJbXBsZW1lbnQgZC5mIGZsYWcKCShTdWJ0eXBlX1N0YXRpY2FsbHlfTWF0Y2gpOiBBIGdlbmVyaWMgYWN0dWFsIHR5cGUgaGFzIHVua25vd24KCWRpc2NyaW1pbmFudHMgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBhY3R1YWwgaGFzIGEgc2ltaWxhciBwYXJ0aWFsIHZpZXcuCglJZiB0aGUgcm91dGluZSBpcyBjYWxsZWQgdG8gdmFsaWRhdGUgdGhlIHNpZ25hdHVyZSBvZiBhbiBpbmhlcml0ZWQKCW9wZXJhdGlvbiBpbiBhIGNoaWxkIGluc3RhbmNlLCB0aGUgZ2VuZXJpYyBhY3R1YWwgbWF0Y2hlcyB0aGUgZnVsbCB2aWV3LAoKMjAwNS0xMS0xNCAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX0NhbGwpOiBQcm92aWRlIGEgYmV0dGVyIGVycm9yIG1lc3NhZ2Ugd2hlbmV2ZXIKCWEgcHJvY2VkdXJlIGNhbGwgaXMgdXNlZCBhcyBhIHNlbGVjdCBzdGF0ZW1lbnQgdHJpZ2dlciBhbmQgaXMgbm90IGFuCgllbnRyeSByZW5hbWluZyBvciBhIHByaW1pdGl2ZSBvZiBhIGxpbWl0ZWQgaW50ZXJmYWNlLgoJKFZhbGlkX0NvbnZlcnNpb24pOiBJZiB0aGUgb3BlcmFuZCBoYXMgYSBzaW5nbGUgaW50ZXJwcmV0YXRpb24gZG8gbm90CglyZW1vdmUgYWRkcmVzcyBvcGVyYXRpb25zLgoJKENoZWNrX0luZmluaXRlX1JlY3Vyc2lvbik6IFNraXAgZnJlZXplIG5vZGVzIHdoZW4gbG9va2luZyBmb3IgYSByYWlzZQoJc3RhdGVtZW50IHRvIGluaGliaXQgd2FybmluZy4KCShSZXNvbHZlX1VuYXJ5X09wKTogRG8gbm90IHByb2R1Y2UgYSB3YXJuaW5nIHdoZW4KCXByb2Nlc3NpbmcgYW4gZXhwcmVzc2lvbiBvZiB0aGUgZm9ybSAtKEEgbW9kIEIpCglVc2UgVW5pdmVyc2FsX1JlYWwgaW5zdGVhZCBvZiBMb25nX0xvbmdfRmxvYXQgd2hlbiB3ZSBuZWVkIGEgaGlnaAoJcHJlY2lzaW9uIGZsb2F0IHR5cGUgZm9yIHRoZSBnZW5lcmF0ZWQgY29kZSAocHJldmVudHMgZ3JhdHVpdG91cwoJVmF4X0Zsb2F0IHN0dWZmIHdoZW4gcHJhZ21hIEZsb2F0X1JlcHJlc2VudGF0aW9uIChWYXhfRmxvYXQpIHVzZWQpCgkoUmVzb2x2ZV9Db25jYXRlbmF0aW9uX0FyZyk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIGFyZ3VtZW50IGlzIGFuCglhbWJpZ3VvdXMgY2FsbCB0byBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBhcnJheS4KCShNYWtlX0NhbGxfSW50b19PcGVyYXRvciwgT3BlcmFuZF9UeXBlX0luX1Njb3BlKTogRG8gbm90IGNoZWNrIHRoYXQKCXRoZXJlIGlzIGFuIGltcGxpY2l0IG9wZXJhdG9yIGluIHRoZSBnaXZlbiBzY29wZSBpZiB3ZSBhcmUgd2l0aGluIGFuCglpbnN0YW5jZTogbGVnYWxpdHkgY2hlY2sgaGFzIGJlZW4gcGVyZm9ybWVkIG9uIHRoZSBnZW5lcmljLgoJKFJlc29sdmVfVW5hcnlfT3ApOiBBcHBseSB3YXJuaW5ncyBjaGVja3Mgb24gYXJndW1lbnQgb2YgQWJzIG9wZXJhdG9yCglhZnRlciByZXNvbHZpbmcgb3BlcmFuZCwgdG8gYXZvaWQgZmFsc2Ugd2FybmluZ3Mgb24gb3ZlcmxvYWRlZCBjYWxscy4KCjIwMDUtMTEtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE1NjA0CgkqIHNlbV90eXBlLmFkYiAoQ292ZXJzKTogSW4gYW4gaW5saW5lZCBib2R5LCBhIGNvbXBvc2l0ZSB0eXBlIG1hdGNoZXMKCWEgcHJpdmF0ZSB0eXBlIHdob3NlIGZ1bGwgdmlldyBpcyBhIGNvbXBvc2l0ZSB0eXBlLgoJKEludGVyZmFjZV9QcmVzZW50X0luX0FuY2VzdG9yKTogUHJvdGVjdCB0aGUgZnJvbnRlbmQgYWdhaW5zdAoJcHJldmlvdXNseSBkZXRlY3RlZCBlcnJvcnMgdG8gZW5zdXJlIHRoYXQgaXRzIGNvbXBpbGF0aW9uCgl3aXRoIGFzc2VydGlvbnMgZW5hYmxlZCBnaXZlcyB0aGUgc2FtZSBvdXRwdXQgdGhhdCBpdHMKCWNvbXBpbGF0aW9uIHdpdGhvdXQgYXNzZXJ0aW9ucy4KCShJbnRlcmZhY2VfUHJlc2VudF9Jbl9BbmNlc3Rvcik6IEFkZCBzdXBwb3J0IGZvciBwcml2YXRlIHR5cGVzLgoJQ2hhbmdlIG5hbWUgSW5fQWN0dWFsIHRvIEluX0dlbmVyaWNfQWN0dWFsIChjbGVhbiB1cCkKCShEaXNhbWJpZ3VhdGUpOiBOZXcgcHJlZGljYXRlIEluX0FjdHVhbCwgdG8gcmVjb2duaXplIGV4cHJlc3Npb25zIHRoYXQKCWFwcGVhciBpbiB0aGUgcmVuYW1pbmcgZGVjbGFyYXRpb24gZ2VuZXJhdGVkIGZvciBnZW5lcmljIGFjdHVhbHMsIGFuZAoJd2hpY2ggbXVzdCBiZSByZXNvbHZlZCBpbiB0aGUgb3V0ZXIgY29udGV4dC4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fdXRpbC5hZHMsIHNlbV91dGlsLmFkYjogQ2hhbmdlIG5hbWUgSXNfUGFja2FnZSB0bwoJSXNfUGFja2FnZV9Pcl9HZW5lcmljX1BhY2thZ2UuCgkoQ2hlY2tfT2Jzb2xlc2NlbnQpOiBOZXcgcHJvY2VkdXJlLgoJKFNldF9Jc19QdWJsaWMpOiBSZW1vdmUgb2Jzb2xldGUganVuayB0ZXN0LgoJKFNldF9QdWJsaWNfU3RhdHVzKTogRG8gbm90IHNldCBJc19QdWJsaWMgb24gYW4gb2JqZWN0IHdob3NlIGRlY2xhcmF0aW9uCglvY2N1cnMgd2l0aGluIGEgaGFuZGxlZF9zZXF1ZW5jZV9vZl9zdGF0ZW1ldHMuCgkoSXNfQ29udHJvbGxpbmdfTGltaXRlZF9Qcm9jZWR1cmUpOiBGYWN0b3Igc29tZSBvZiB0aGUgbG9naWMsIGFjY291bnQKCWZvciBhIHBhcmFtZXRlcmxlc3MgcHJvY2VkdXJlLgoJKEVudGVyX05hbWUpOiBSZWNvZ25pemUgcmVuYW1pbmcgZGVjbGFyYXRpb25zIGNyZWF0ZWQgZm9yIHByaXZhdGUKCWNvbXBvbmVudCBvZiBhIHByb3RlY3RlZCB0eXBlIHdpdGhpbiBwcm90ZWN0ZWQgb3BlcmF0aW9ucywgc28gdGhhdAoJdGhlIHNvdXJjZSBuYW1lIG9mIHRoZSBjb21wb25lbnQgY2FuIGJlIHVzZWQgaW4gdGhlIGRlYnVnZ2VyLgoKMjAwNS0xMS0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX3dhcm4uYWRzLCBzZW1fd2Fybi5hZGIgKFB1YmxpY2x5X1JlZmVyZW5jZWFibGUpOiBHZW5lcmljIGZvcm1hbHMKCW9mIGEgZ2VuZXJpYyBzdWJwcm9ncmFtIGFyZSBub3QgdmlzaWJsZSBvdXRzaWRlIHRoZSBib2R5LgoJKFNldF9XYXJuaW5nX1N3aXRjaCk6IE5ldyBwcm9jZWR1cmUgKGNvZGUgdG8gc2V0IHdhcm5pbmcgbW9kZSBtb3ZlZAoJaGVyZSBmcm9tIFN3aXRjaC5DIHNvIHRoYXQgaXQgY2FuIGJlIHNoYXJlZCBieSBwcmFnbWEgcHJvY2Vzc2luZy4KCShDaGVja19SZWZlcmVuY2VzKTogU3BlY2lhbCBjYXNlIHdhcm5pbmcgZm9yIG5vbi1tb2RpZmllZCBub24taW1wb3J0ZWQKCXZvbGF0aWxlIG9iamVjdHMuCgkqIHBhci1wcmFnLmFkYjogTW9kaWZ5IHByb2Nlc3Npbmcgb2YgcHJhZ21hIFdhcm5pbmdzIHRvIGFjY29tb2RhdGUgbmV3Cglmb3JtIHdpdGggYSBzdHJpbmcgbGl0ZXJhbCBhcmd1bWVudAoKMjAwNS0xMS0xNCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogcy1maW5yb28uYWRzLCBzLWZpbnJvby5hZGIgKFJlYWQpOiBBZGRpdGlvbiBvZiAibm90IG51bGwiIHRvIHRoZQoJYW5vbnltb3VzIGFjY2Vzcy4KCShXcml0ZSk6IEFkZGl0aW9uIG9mICJub3QgbnVsbCIgdG8gdGhlIGFub255bW91cyBhY2Nlc3MuCgkoUmVhZCk6IEFkZGl0aW9uIG9mICJub3QgbnVsbCIgdG8gdGhlIGFub255bW91cyBhY2Nlc3MuCgkoV3JpdGUpOiBBZGRpdGlvbiBvZiAibm90IG51bGwiIHRvIHRoZSBhbm9ueW1vdXMgYWNjZXNzLgoKCSogcy1zdHJ4ZHIuYWRiLCBzLXN0cmF0dC5hZHMsIHMtc3RyYXR0LmFkYiAoSV9BRCwgSV9BUywgSV9CLCBJX0MsIElfRiwKCUlfSSwgSV9MRiwgSV9MSSwgSV9MTEYsIElfTExJLCBJX0xMVSwgSV9MVSwgSV9TRiwgSV9TSSwgSV9TU0ksIElfU1NVLAoJSV9TVSwgSV9VLCBJX1dDKTogQWRkaXRpb24gb2YgIm5vdCBudWxsIiB0byB0aGUgYW5vbnltb3VzIGFjY2Vzcy4KCShXX0FELCBXX0FTLCBXX0IsIFdfQywgV19GLCBXX0ksIFdfTEYsIFdfTEksIFdfTExGLCBXX0xMSSwgV19MTFUsCglXX0xVLCBXX1NGLCBXX1NJLCBXX1NTSSwgV19TU1UsIFdfU1UsIFdfVSwgV19XQyk6IEFkZGl0aW9uIG9mCgkibm90IG51bGwiIHRvIHRoZSBhbm9ueW1vdXMgYWNjZXNzLgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzLXN0b2VsZS5hZGI6IEZpeCBjb2RlIGZvciBBZGRyZXNzIG1vZCBTdG9yYWdlX09mZnNldCBmb3IgbmVnYXRpdmUKCW9mZnNldCB2YWx1ZXMKCjIwMDUtMTEtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogc3dpdGNoLmFkYiAoQmFkX1N3aXRjaCk6IE5ldyBwcm9jZWR1cmUKCShTY2FuX05hdCwgU2Nhbl9Qb3MpOiBEaXJlY3RseSBjYWxsIE9zaW50LkZhaWwgd2l0aCB0aGUgYXBwcm9wcmlhdGUKCW1lc3NhZ2Ugd2hlbiBpbiBlcnJvci4KCgkqIHN3aXRjaC5hZHMgKEJhZF9Td2l0Y2gsIEJhZF9Td2l0Y2hfVmFsdWUsIE1pc3NpbmdfU3dpdGNoX1ZhbHVlLAoJVG9vX01hbnlfT3V0cHV0X0ZpbGVzKTogUmVtb3ZlIGRlY2xhcmF0aW9ucywgbm8gbG9uZ2VyIHVzZWQuCgkoU2Nhbl9OYXQpOiBOZXcgcGFyYW1ldGVyIFN3aXRjaAoJKFNjYW5fUG9zKTogRGl0dG8KCShCYWRfU3dpdGNoKTogTmV3IHByb2NlZHVyZQoKCSogc3dpdGNoLWIuYWRiIChTY2FuX0JpbmRlcl9Td2l0Y2hlcyk6IFJlcGxhY2UgInJhaXNlIEJhZF9Td2l0Y2g7IgoJd2l0aCBjYWxsIHRvIG5ldyBwcm9jZWR1cmUgQmFkX1N3aXRjaC4gQ2FsbCBTY2FuX1BvcyBhbmQgU2Nhbl9OYXR3aXRoCgluZXcgcGFyYW1ldGVyIFN3aXRjaC4gUmVwbGFjZSAicmFpc2UgVG9vX01hbnlfT3V0cHV0X0ZpbGVzOyIgd2l0aCBjYWxsCgl0byBPc2ludC5GYWlsLiBEbyBub3QgaGFuZGxlIGFueSBleGNlcHRpb24uCgoyMDA1LTExLTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHRlbXBkaXIuYWRiIChUZW1wZGlyKTogRG8gbm90IHVzZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBUTVBESVIgaWYgaXQKCWRlc2lnbmF0ZXMgYSBub24gZXhpc3RlbnQgZGlyZWN0b3J5LgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiB4Z25hdHVnbi5hZGI6IFJlcGxhY2UgaW52YWxpZCBtZW1iZXJzaGlwIHRlc3QgYnkgJ1ZhbGlkCgoyMDA1LTExLTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2VncHIuYWRiIChHcHJtYWtlKTogRG8gbm90IGF0dGVtcHQgdG8gYnVpbGQgdGhlIGdsb2JhbCBhcmNoaXZlIGlmCgl0aGVyZSBpcyBubyBvYmplY3QgZGlyZWN0b3J5LgoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiB1c2FnZS5hZGI6IE1pbm9yIGFkanVzdG1lbnQgdG8gb3V0cHV0IGZvcm1hdCwgdXNlIG5uIGluc3RlYWQgb2Ygbm5uCgkoc28gdGhhdCAtZ25hdGVJbm5uIGRvZXMgbm90IHJ1biBpbnRvIG5leHQgY29sdW1uKQoKMjAwNS0xMS0xNCAgRWQgRmFsaXMgIDxmYWxpc0BhZGFjb3JlLmNvbT4KCgkqIHMtYml0b3BzLmFkYiAoQml0c19BcnJheSk6IGNvcnJlY3RlZCBjb21tZW50OiAidW5jb25zdHJhaW5lZCIgPT4KCSJjb25zdHJhaW5lZCIKCjIwMDUtMTEtMTQgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhZGFjb3JlLmNvbT4KCgkqIHMtY2hlcG9vLmFkczogQWRkIGNvbW1lbnRzIG9uIERlcmVmZXJlbmNlLgoJUmVtb3ZlIHVubmVjZXNzYXJ5IGluaGVyaXRlZCBhYnN0cmFjdCBwcmltaXRpdmVzLgoJQ29zbWV0aWMgY2xlYW51cC4KCjIwMDUtMTEtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX2NhdC5hZHMgKFZhbGlkYXRlX0FjY2Vzc19UeXBlX0RlY2xhcmF0aW9uKTogUmVtb3ZlIGRlY2xhcmF0aW9uCglub2RlIHBhcmFtZXRlciwgbm90IG5lZWRlZCwgc2luY2UgaXQgaXMgYXZhaWxhYmxlIGFzIERlY2xhcmF0aW9uX05vZGUuCgoyMDA1LTExLTE0ICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoKCSogcy1leG5sbGYuYWRiIChFeG5fTExGKTogRml4IGNvbW1lbnQgdG8gYmUgbW9yZSBwcmVjaXNlIGFuZAoJZ3JhbW1hdGljYWxseSBjb3JyZWN0LgoKMjAwNS0xMS0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBzLWZpbGVpby5hZHM6IENvcnJlY3Qgc3BlbGxpbmcgZXJyb3IgaW4gY29tbWVudAoKMjAwNS0xMS0xNCAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoJICAgIEJlbiBCcm9zZ29sICA8YnJvc2dvbEBhZGFjb3JlLmNvbT4KCSAgICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoJICAgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IAoJRG9jdW1lbnQgdGhhdCAtZnN0YWNrLWNoZWNrIGlzIG5lZWRlZCBmb3Igc3RyaWN0IGNvbXBsaWFuY2Ugd2l0aCB0aGUKCUFkYSA5NSBSZWZlcmVuY2UgTWFudWFsLgoJQ29ycmVjdCByZWZlcmVuY2UgdG8gVkFYIHN5c3RlbXMgdG8gbWVldCBIUCBndWlkZWxpbmVzCglBZGQgZG9jdW1lbnRhdGlvbiBmb3IgbmV3IGduYXRtYWtlIHN3aXRjaGVzIC12bCwgLXZtIGFuZCAtdmgKCVJlcGxhY2UgREVDIEFkYSBieSBIUCBBZGEKCVJlcGxhY2UgRElHSVRBTCBieSBIUAoJUmVtb3ZlIGVtcHR5IHNlY3Rpb24gb24gdG9vbHMgaW4gY29tcGF0aWJpbGl0eSBzZWN0aW9uCglDbGFyaWZ5IHRoZSBXaW5kb3dzIGNvbnZlbnRpb24gc2VtYW50aWNzLgoJRG9jdW1lbnQgdGhlIFdpbjMyIGNhbGxpbmcgY29udmVudGlvbi4KCVRoZSBTdGRjYWxsLCBXaW4zMiBhbmQgRExMIGNvbnZlbnRpb24gYXJlIHN5bm9ueW1zLgoJQWRkIGEgbm90ZSBpbiAtZ25hdFIgZGVzY3JpcHRpb24gYWJvdXQgemVybyBzaXplIHJlY29yZCBjb21wb25lbnRzCglOb3RlIG9uIG5ldyA+PSBhbmQgPD0gd2FybmluZ3MgZm9yIC1nbmF0d2MKCURvY3VtZW50IHRoYXQgZXF1YWwgc2lnbiBhZnRlciAtZ25hdG0gaXMgb3B0aW9uYWwuCglOb3RlIHRoYXQgc3RyaXAgaXMgd29ya2luZyBmaW5lIG9uIERMTCBidWlsdCB3aXRoIGEgTGlicmFyeQoJUHJvamVjdC4gVGhlIHJlc3RyaWN0aW9uIGFwcGx5IG9ubHkgdG8gRExMIGJ1aWx0IHdpdGggZ25hdGRsbC4KCVVwZGF0ZSBzZWN0aW9uIGFib3V0IHRoZSB3YXkgdG8gZGVidWcgYSBETEwuCglVcGRhdGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIERMTCBjb252ZW50aW9uLgoJRG9jdW1lbnQgLUMgc3dpdGNoIGZvciBnbmF0cHJlcAoJRG9jdW1lbnQgbmV3IGF0dHJpYnV0ZSBMaWJyYXJ5X0FMSV9EaXIKCVVwZGF0ZSBlbGFib3JhdGlvbiBkb2MgdG8gaW5jbHVkZSBpbXBsaWNpdCBFbGFib3JhdGUgcHJhZ21hcyBub3cKCWdlbmVyYXRlZCBmb3Igc3VicHJvZ3JhbSBpbnN0YW50aWF0aW9ucy4KCURvY3VtZW50IGxpbWl0YXRpb24gb24gZXhlY3V0YWJsZSBuYW1lcyB0aGF0IGluY2x1ZGUgc3BhY2VzIGZvciAtLUdDQywKCS0tR05BVEJJTkQsIGFuZCAtLUdOQVRMSU5LIHN3aXRjaGVzLgoJRG9jdW1lbnQgdGhhdCAtdyBjYXVzZXMgLWduYXR3cyB0byBiZSBhZGRlZCBhdCBzdGFydCBvZiBnY2Mgc3dpdGNoZXMKCgkqIGduYXRfcm0udGV4aTogRG9jdW1lbnQgdGhhdCAtbWllZWUgaXMgbmVlZGVkIGZvciBnZW5lcmF0aW5nIGluZmluaXRlCglhbmQgTmFOIHZhbHVlcyBpbiBjYXNlIG9mIG92ZXJmbG93IG9uIG1hY2hpbmVzIHRoYXQgYXJlIG5vdCBmdWxseQoJY29tcGxpYW50IHdpdGggdGhlIElFRUUgZmxvYXRpbmctcG9pbnQgc3RhbmRhcmQuCglDcmVhdGUgYSBzZWN0aW9uIGRlc2NyaWJpbmcgdGhlIHNldCBvZiBjb21waWxlciBvcHRpb25zIG5lZWRlZCBmb3IKCXN0cmljdCBjb21wbGlhbmNlIHdpdGggdGhlIEFkYSA5NSBSZWZlcmVuY2UgTWFudWFsLgoJQWRkIGRvY3VtZW50YXRpb24gZm9yIHByYWdtYSBPYnNvbGVzY2VudCBhcHBsaWVkIHRvIGEgcGFja2FnZQoJQ2xhcmlmeSBwb3RlbnRpYWwgaXNzdWVzIG9mIG1peGVkIGxhbmd1YWdlIHByb2dyYW1zIHJlbGF0ZWQgdG8gdGhlCglJL08gYnVmZmVyaW5nIGVuYWJsaW5nIGluIHRoZSBlbGFib3JhdGlvbiBvZiB0aGUgR05BVCBydW50aW1lLgoJQWRkIGV4dHJhIGRvY3VtZW50YXRpb24gZm9yIHByYWdtYSBSZXN0cmljdGlvbnMgKE5vX0VsYWJvcmF0aW9uX0NvZGUpCglUaGlzIGRvY3VtZW50YXRpb24gb25seSBwYXRjaCBhZGRzIGV4dHJhIGRvY3VtZW50c2lvbiBmb3IgcHJhZ21hCglSZXN0cmljdGlvbnMgKE5vX0VsYWJvcmF0aW9uX0NvZGUpLCBleHBsYWluaW5nIHdoeSBpdCBpcyBub3QgcG9zc2libGUKCXRvIGRvY3VtZW50IHRoaXMgcmVzdHJpY3Rpb24gaW4gdGVybXMgb2YgYWxsb3dlZCBzb3VyY2UgY29uc3RydWN0cy4KCURvY3VtZW50IHN0cmluZyBsaXRlcmFsIGZvcm0gb2YgcHJhZ21hIFdhcm5pbmdzCglEb2N1bWVudCBuZXcgYXR0cmlidXRlIExpYnJhcnlfQUxJX0RpcgoJQWRkIGRvY3VtZW50YXRpb24gb24gc3RhYmxlIGF0dHJpYnV0ZXMgaW4gcHJvamVjdCBmaWxlcyB0aGF0IHdhcyBtaXNzaW5nCgoJKiBnbmF0LXN0eWxlLnRleGk6IEluZGljYXRlIHRoYXQgcGFyYWdyYXBocyB3aXRoaW4gYSBzaW5nbGUgY29tbWVudAoJc2hvdWxkIGJlIHNlcGFyYXRlZCBieSBlbXB0eSBjb21tZW50IGxpbmVzCgoJKiB1Z193b3JkczogQWRkZWQgcmVwbGFjZW1lbnRzIGZvciAtZ25hdDk1IGFuZCAtZ25hdDA1ICgvOTUgYW5kCgkvMDUgcmVzcGVjdGl2ZWx5KQoKCSogYmluZHVzZy5hZGI6IE1pbm9yIGNsZWFudXAsIHB1dCAtbSBiZWZvcmUgLU0gZm9yIGNvbnNpc3RlbmN5CgoyMDA1LTExLTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGEtc2VjYWluLmFkYiwgYS1zbGNhaW4uYWRiLCBhLXNoY2Fpbi5hZGIsIGEtY2h0Z2tlLmFkcywgYS1jaHRna2UuYWRiLAoJYS1zdHdpaGEuYWRiLCBhLXN0cmhhcy5hZGIsIGEtY2h6bGExLmFkcywgYS1jaHpsYTkuYWRzLCBhLXN0emJvdS5hZGIsCglhLXN0emJvdS5hZHMsIGEtc3R6Zml4LmFkYiwgYS1zdHpoYXMuYWRiLCBhLXN0em1hcC5hZGIsIGEtc3R6bWFwLmFkcywKCWEtc3R6c2VhLmFkYiwgYS1zdHpzZWEuYWRzLCBhLXN0enN1cC5hZGIsIGEtc3R6c3VwLmFkcywgYS1zdHp1bmIuYWRiLAoJYS1zdHp1bmIuYWRzLCBhLXN6dXpoYS5hZGIsIGEtc3p1emhhLmFkcywgYS1zenV6dGkuYWRiLCBhLXN6dXp0aS5hZHMsCglhLXp0Y29hdS5hZGIsIGEtenRjb2F1LmFkcywgYS16dGNvaW8uYWRiLCBhLXp0Y3N0ci5hZGIsIGEtenRjc3RyLmFkcywKCWEtenRkZWF1LmFkYiwgYS16dGRlYXUuYWRzLCBhLXp0ZGVpby5hZGIsIGEtenRkZWlvLmFkcywgYS16dGVkaXQuYWRiLAoJYS16dGVkaXQuYWRzLCBhLXp0ZW5hdS5hZHMsIGEtenRlbmlvLmFkYiwgYS16dGVuaW8uYWRzLCBhLXp0ZXhpby5hZGIsCglhLXp0ZXhpby5hZHMsIGEtenRmaWlvLmFkYiwgYS16dGZpaW8uYWRzLCBhLXp0ZmxhdS5hZGIsIGEtenRmbGF1LmFkcywKCWEtenRmbGlvLmFkYiwgYS16dGZsaW8uYWRzLCBhLXp0Z2VhdS5hZGIsIGEtenRnZWF1LmFkcywgYS16dGluYXUuYWRiLAoJYS16dGluYXUuYWRzLCBhLXp0aW5pby5hZGIsIGEtenRtb2F1LmFkcywgYS16dG1vaW8uYWRiLCBhLXp0bW9pby5hZHMsCglhLXp0dGVzdC5hZGIsIGctZW5ibHNwLXZtcy1hbHBoYS5hZGIsIGctZW5ibHNwLXZtcy1hbHBoYS5hZGIsCglnLWVuYmxzcC12bXMtaWE2NC5hZGIsIGctZW5ibHNwLXZtcy1pYTY0LmFkYiwgc3lzdGVtLWxpbnV4LWhwcGEuYWRzLAoJYS1jaGFjb24uYWRiLCBhLWNoYWNvbi5hZHMsIGEtd2ljaHVuLmFkYiwgYS13aWNodW4uYWRzLCBhLXpjaHVuaS5hZGIsCglhLXpjaHVuaS5hZHMsIGctdHJhc3ltLXZtcy1hbHBoYS5hZGIsIGctdHJhc3ltLXZtcy1pYTY0LmFkYiwKCXN5c3RlbS1ocHV4LWlhNjQuYWRzLCBnLXNvY2Nvbi11bml4d2FyZS5hZHMsIGctc29saW9wLXVuaXh3YXJlLmFkcywKCWctc29jY29uLWludGVyaXguYWRzLCBnLXNvbGlvcC1zb2xhcmlzLmFkcywgZy1lYWNvZHUtdm1zLmFkYiwKCWctZXhwZWN0LXZtcy5hZGIsIGctc29jdGhpLXZtcy5hZGIsIGctc29saW9wLW1pbmd3LmFkcywKCWEtaW50bmFtLXVuaXh3YXJlLmFkcywgYS1pbnRuYW0tbHlueG9zLmFkcywgYS1pbnRuYW0tdHJ1NjQuYWRzLAoJYS1pbnRuYW0tYWl4LmFkcywgYS1pbnRuYW0tbGludXguYWRzLCBhLWludG5hbS1saW51eC5hZHMsCglhLWludG5hbS1kdW1teS5hZHMsIGEtbnVtYXV4LWxpYmMteDg2LmFkcywgYS1pbnRuYW0taW50ZXJpeC5hZHMsCglhLWludG5hbS1zb2xhcmlzLmFkcywgYS1jYWxlbmQtdm1zLmFkYiwgYS1jYWxlbmQtdm1zLmFkcywKCWEtaW50bmFtLXZtcy5hZHMsIGEtY2FsZW5kLW1pbmd3LmFkYiwgYS1pbnRuYW0tbWluZ3cuYWRzLAoJYS1pbnRuYW0tdnh3b3Jrcy5hZHMsIGEtbnVtYXV4LXZ4d29ya3MuYWRzLCBzeXN0ZW0tdW5peHdhcmUuYWRzLAoJc3lzdGVtLWxpbnV4LWlhNjQuYWRzLCBhLWludG5hbS1mcmVlYnNkLmFkcywgc3lzdGVtLWZyZWVic2QteDg2LmFkcywKCXN5c3RlbS1seW54b3MtcHBjLmFkcywgc3lzdGVtLWxpbnV4LXg4Nl82NC5hZHMsIGEtc3R1bmhhLmFkYiwKCWEtY2dhYXNvLmFkcywgYS1jZ2Fhc28uYWRiLCBhLWNodGdvcC5hZGIsIGEtY2djYXNvLmFkYiwgYS1jZ2Fyc28uYWRiLAoJYS1jb2hhdGEuYWRzLCBhLWNyYnRnay5hZGIsIGEtY3JibHRyLmFkcywgYS1jb3BybnUuYWRiLCBhLXJidGdzby5hZGIsCglhLWludG5hbS1kYXJ3aW4uYWRzLCBzeXN0ZW0tZGFyd2luLXBwYy5hZHMsIGdwcm1ha2UuYWRiLCBtYWtlZ3ByLmFkcywKCXN5c3RlbS10cnU2NC5hZHMsIHN5c3RlbS1haXguYWRzLCBzeXN0ZW0tc29sYXJpcy14ODYuYWRzLAoJc3lzdGVtLWlyaXgtbzMyLmFkcywgcy1pbnRlcnItc2lnYWN0aW9uLmFkYiwgc3lzdGVtLWlyaXgtbjMyLmFkcywKCXMtcGFyYW1lLW1pbmd3LmFkYiwgc3lzdGVtLWhwdXguYWRzLCBzLXRyYWNlYi1ocHV4LmFkYiwKCXN5c3RlbS1saW51eC14ODYuYWRzLCBzLWlubWFvcC1kdW1teS5hZGIsIHN5c3RlbS1vczIuYWRzLAoJc3lzdGVtLWludGVyaXguYWRzLCBzeXN0ZW0tc29sYXJpcy1zcGFyYy5hZHMsCglzeXN0ZW0tc29sYXJpcy1zcGFyY3Y5LmFkcywgcy1pbm1hb3Atdm1zLmFkYiwKCXMtbWFzdG9wLXZtcy5hZGIsIGV4cGFuZGVyLmFkYiwgZXhwYW5kZXIuYWRzLCBzLWdsb2xvYy1taW5ndy5hZGIsCglzeXN0ZW0tbWluZ3cuYWRzLCBzeXN0ZW0tdm1zLXpjeC5hZHMsIHMtb3NpbnRlLWZzdS5hZGIsCglzLXRyYWNlYi1tYXN0b3AuYWRiLCBhLWV4ZXh0ci5hZGIsIGEtZXhzdGF0LmFkYiwgYS1maWxpY28uYWRzLAoJYS1maW5hbGkuYWRzLCBhLWludGVyci5hZHMsIGEtaW50c2lnLmFkYiwgYS1pbnRzaWcuYWRzLAoJYS1leGNlcHQuYWRzLCBhLW51bWF1eC14ODYuYWRzLCBhLWFzdGFjby5hZGIsIGEtY2FsZW5kLmFkYiwKCWEtY2FsZW5kLmFkcywgYS1jaGFoYW4uYWRiLCBhLWNoYWhhbi5hZHMsIGEtY2hsYXQ5LmFkcywKCWEtY29saWVuLmFkYiwgYS1jb2xpZW4uYWRzLCBhLWNvbGlyZS5hZGIsIGEtY29saXJlLmFkcywKCWEtY29tbGluLmFkYiwgYS1jb21saW4uYWRzLCBhLWN3aWxhMS5hZHMsIGEtY3dpbGE5LmFkcywKCWEtZWxjaGhhLmFkYiwgYS1kZWNpbWEuYWRiLCBhLWRlY2ltYS5hZHMsIGEtZGlvY3N0LmFkcywKCWEtZGlyZWlvLmFkYiwgYS1kaXJlaW8uYWRzLCBhLWV4Y2FjaC5hZGIsIGEtZXhjYWNoLmFkYiwKCWEtZXhjdHJhLmFkcywgYWxpLXV0aWwuYWRiLCBhLW5nY2VmdS5hZGIsIGEtbmdjb3R5LmFkYiwKCWEtbmdjb3R5LmFkcywgYS1udWRpcmEuYWRiLCBhLW51ZGlyYS5hZHMsIGEtbnVmbHJhLmFkYiwKCWEtbnVtYXV4LmFkcywgYS1yZWF0aW0uYWRzLCBhLXNlcXVpby5hZGIsIGEtc2VxdWlvLmFkcywKCWEtc2lvY3N0LmFkcywgYS1zc2ljc3QuYWRzLCBhLXN0bWFjby5hZHMsIGEtc3RvcmlvLmFkYiwKCWEtc3RyYm91LmFkYiwgYS1zdHJib3UuYWRzLCBhLXN0cmVhbS5hZHMsIGEtc3RyZml4LmFkYiwKCWEtc3RybWFwLmFkYiwgYS1zdHJtYXAuYWRzLCBhLXN0cnNlYS5hZGIsIGEtc3Ryc2VhLmFkcywKCWEtc3Ryc3VwLmFkYiwgYS1zdHJzdXAuYWRzLCBhLXN0cnVuYi5hZGIsIGEtc3RydW5iLmFkcywKCWEtc3R3aWJvLmFkYiwgYS1zdHdpYm8uYWRzLCBhLXN0d2lmaS5hZGIsIGEtc3R3aW1hLmFkYiwKCWEtc3R3aW1hLmFkcywgYS1zdHdpc2UuYWRiLCBhLXN0d2lzZS5hZHMsIGEtc3R3aXN1LmFkYiwKCWEtc3R3aXN1LmFkcywgYS1zdHdpdW4uYWRiLCBhLXN0d2l1bi5hZHMsIGEtc3V0ZWlvLmFkYiwKCWEtc3V0ZWlvLmFkcywgYS1zd213Y28uYWRzLCBhLXN3dXd0aS5hZGIsIGEtc3d1d3RpLmFkcywKCWEtc3l0YWNvLmFkYiwgYS1zeXRhY28uYWRzLCBhLXRhc2F0dC5hZGIsIGEtdGFzaWRlLmFkYiwKCWEtdGFzaWRlLmFkcywgYS10ZWlvZWQuYWRiLCBhLXRleHRpby5hZGIsIGEtdGV4dGlvLmFkcywKCWEtdGljb2F1LmFkYiwgYS10aWNvYXUuYWRzLCBhLXRpY29pby5hZGIsIGEtdGlkZWF1LmFkYiwKCWEtdGlkZWlvLmFkYiwgYS10aWVuYXUuYWRiLCBhLXRpZW5pby5hZGIsIGEtdGlmaWlvLmFkYiwKCWEtdGlmbGlvLmFkYiwgYS10aWdlYXUuYWRiLCBhLXRpZ2VhdS5hZHMsIGEtdGlpbmF1LmFkYiwKCWEtdGlpbmlvLmFkYiwgYS10aW1vYXUuYWRiLCBhLXRpbW9pby5hZGIsIGEtdGltb2lvLmFkcywKCWEtdGlvY3N0LmFkcywgYS10aXRlc3QuYWRiLCBhdHJlZS5hZGIsIGEtd2l0ZWlvLmFkYiwKCWEtd2l0ZWlvLmFkcywgYS13dGNvYXUuYWRiLCBhLXd0Y29hdS5hZHMsIGEtd3Rjb2lvLmFkYiwKCWEtd3Rjc3RyLmFkcywgYS13dGRlYXUuYWRiLCBhLXd0ZGVpby5hZGIsIGEtd3RlZGl0LmFkYiwKCWEtd3RlZGl0LmFkcywgYS13dGVuYXUuYWRiLCBhLXd0ZW5pby5hZGIsIGEtd3RmaWlvLmFkYiwKCWEtd3RmbGlvLmFkYiwgYS13dGdlYXUuYWRiLCBhLXd0aW5hdS5hZGIsIGEtd3RpbmlvLmFkYiwKCWEtd3Rtb2F1LmFkYiwgYS13dG1vaW8uYWRiLCBhLXd0dGVzdC5hZGIsIGJhY2tfZW5kLmFkYiwKCWJpbmRnZW4uYWRiLCBidXRpbC5hZGIsIGJ1dGlsLmFkcywgY2hlY2tzLmFkcywgY2lvLmMsIGNvbXBlcnIuYWRiLAoJY3NldHMuYWRzLCBjc3RhbmQuYWRiLCBkZWJ1Zy5hZHMsIGVsaXN0cy5hZHMsIGVycm5vLmMsIGVycm91dC5hZGIsCgllcnJvdXQuYWRzLCBlcnJvdXRjLmFkYiwgZXJyb3V0Yy5hZHMsIGVycnV0aWwuYWRiLCBlcnJ1dGlsLmFkcywKCWVycnV0aWwuYWRzLCBlcnJfdmFycy5hZHMsIGV2YWxfZmF0LmFkYiwgZXhwX2NoMTEuYWRiLCBleHBfY2gxMS5hZHMsCglleHBfY2gyLmFkYiwgZXhwX2NoNy5hZHMsIGV4cF9pbWd2LmFkcywgZXhwX3Bha2QuYWRiLCBleHBfcHJhZy5hZGIsCglleHBfcHJhZy5hZHMsIGV4cF90c3MuYWRiLCBleHBfdHNzLmFkcywgZXhwX3ZmcHQuYWRzLCBmZS5oLCBmbWFwLmFkYiwKCWZyZWV6ZS5hZHMsIGZyb250ZW5kLmFkYiwgZnJvbnRlbmQuYWRzLCBnLWFycnNwbC5hZGIsIGctYXJyc3BsLmFkcywKCWctYXdrLmFkYiwgZy1hd2suYWRzLCBnLWJvdW1haS5hZHMsIGctY2FsZW5kLmFkYiwgZy1jYWxlbmQuYWRzLAoJZy1jYXRpaW8uYWRiLCBnLWNvbWxpbi5hZGIsIGctY29tbGluLmFkcywgZy1jb21saW4uYWRzLCBnLWNvbWxpbi5hZHMsCglnLWNvbXZlci5hZGIsIGctY3JjMzIuYWRiLCBnLWNyYzMyLmFkcywgZy1jdHJsX2MuYWRzLCBnLWN1cmV4Yy5hZHMsCglnLWRlYnBvby5hZHMsIGctZGVidXRpLmFkYiwgZy1kaW9waXQuYWRiLCBnLWRpb3BpdC5hZHMsIGctZGlyb3BlLmFkYiwKCWctZGlyb3BlLmFkcywgZy1keW50YWIuYWRiLCBnLWR5bnRhYi5hZHMsIGctZXhjYWN0LmFkYiwgZy1leGNhY3QuYWRzLAoJZy1leGNlcHQuYWRzLCBnLWV4Y3RyYS5hZGIsIGctZXhjdHJhLmFkcywgZy1leHBlY3QuYWRzLCBnLWZsb2Nvbi5hZHMsCglnLWhlc29yZy5hZHMsIGctaW8uYWRiLCBnLWxvY2ZpbC5hZHMsIGctbWQ1LmFkYiwgZy1tZDUuYWRzLCBnLW1kNS5hZHMsCglnLW1vcmVleC5hZGIsIGctc2lnbmFsLmFkcywgZy1zaWduYWwuYWRiLCBnbmF0YmluZC5hZHMsIGduYXRjaG9wLmFkYiwKCWduYXRjbWQuYWRiLCBnbmF0ZmluZC5hZGIsIGduYXRsYnIuYWRiLCBnbmF0bWFrZS5hZHMsIGduYXRtZW0uYWRiLAoJZ25hdHByZXAuYWRiLCBnbmF0cHJlcC5hZHMsIGduYXRzeW0uYWRiLCBnbmF0eHJlZi5hZGIsIGctb3NfbGliLmFkYiwKCWctb3NfbGliLmFkcywgZy1wZWhhZ2UuYWRiLCBnLXBlaGFnZS5hZHMsIGdwcmVwLmFkcywgZy1yZWdleHAuYWRiLAoJZy1yZWdleHAuYWRzLCBnLXJlZ2lzdC5hZGIsIGctcmVnaXN0LmFkcywgZy1yZWdwYXQuYWRzLCBnLXNlbWFwaC5hZGIsCglnLXNvY3RoaS5hZGIsIGctc29saW9wLmFkcywgZy1zcGlwYXQuYWRiLCBnLXNwaXBhdC5hZHMsIGctc3B0YWJvLmFkcywKCWctc3B0YWluLmFkcywgZy1zcHRhdnMuYWRzLCBnLXN0cmluZy5hZHMsIGctdGFzbG9jLmFkYiwgZy10YXNsb2MuYWRzLAoJZy10cmFzeW0uYWRiLCBnLXRyYXN5bS5hZHMsIGktZm9ydHJhLmFkYiwgaS1mb3J0cmEuYWRzLCBpbmxpbmUuYWRiLAoJbGF5b3V0LmFkYiwgbGl2ZS5hZGIsIG1ha2UuYWRzLCBtYWtldXRsLmFkcywgbWFrZXV0bC5hZGIsIG1kbGwtZmlsLmFkYiwKCW1kbGwtZmlsLmFkcywgbWRsbC11dGwuYWRzLCBtZW1yb290LmFkcywgbWVtdHJhY2suYWRiLCBtbGliLmFkcywKCW1saWItZmlsLmFkYiwgbWxpYi1maWwuYWRzLCBtbGliLXByai5hZHMsIG1saWItdXRsLmFkYiwgbWxpYi11dGwuYWRzLAoJbmxpc3RzLmFkYiwgbmxpc3RzLmFkcywgb3NpbnQuYWRiLCBvc2ludC5hZHMsIG9zaW50LWMuYWRiLCBvc2ludC1sLmFkYiwKCW9zaW50LWwuYWRzLCBvc2ludC1tLmFkcywgb3V0cHV0LmFkYiwgcGFyLmFkYiwgcGFyLmFkYiwgcGFyLmFkcywKCXBhci1jaDExLmFkYiwgcGFyLWNoMTIuYWRiLCBwYXItY2gyLmFkYiwgcGFyLWNoNC5hZGIsIHBhci1jaDUuYWRiLAoJcGFyLWNoNi5hZGIsIHBhci1jaDkuYWRiLCBwYXItZW5kaC5hZGIsIHBhci1sYWJsLmFkYiwgcGFyLWxvYWQuYWRiLAoJcGFyLXRjaGsuYWRiLCBwcmVwLmFkYiwgcHJlcGNvbXAuYWRiLCBwcmVwY29tcC5hZHMsIHByai1hdHRyLmFkcywKCXByai1jb20uYWRzLCBwcmotZGVjdC5hZGIsIHByai1kZWN0LmFkcywgcHJqLWVudi5hZHMsIHByai1lcnIuYWRzLAoJcHJqLWV4dC5hZHMsIHByai1tYWtyLmFkYiwgcHJqLW1ha3IuYWRzLCBwcmotbm1zYy5hZHMsIHByai1wYXJzLmFkYiwKCXByai1wYXJzLmFkcywgcHJqLXBhcnQuYWRzLCBwcmotcHAuYWRzLCBwcmotcHJvYy5hZHMsIHByai1zdHJ0LmFkYiwKCXByai1zdHJ0LmFkcywgcHJqLXRyZWUuYWRiLCBwcmotdXRpbC5hZGIsIHByai11dGlsLmFkcywgcnRzZmluZC5hZGIsCglzZW0uYWRiLCBzZW0uYWRzLCBzZW1fY2FzZS5hZGIsIHNlbV9jYXNlLmFkcywgc2VtX2NoMTEuYWRiLAoJc2VtX2NoNC5hZGIsIHNlbV9jaDYuYWRzLCBzZW1fY2g3LmFkcywgc2VtX2Rpc3QuYWRzLCBzZW1fZWxhYi5hZHMsCglzZW1fZWxpbS5hZHMsIHNlbV9ldmFsLmFkcywgc2VtX2ludHIuYWRzLCBzZW1fbWFwcy5hZGIsIHNlbV9tYXBzLmFkcywKCXNlbV9tYXBzLmFkcywgc2VtX3Jlcy5hZHMsIHNlbV90eXBlLmFkcywgc2ZuX3NjYW4uYWRiLCBzZm5fc2Nhbi5hZHMsCglzLWltZ3djaC5hZHMsIHMtaW1nd2l1LmFkYiwgcy1pbWd3aXUuYWRzLCBzLWlubWFvcC5hZHMsIHNpbnB1dC5hZGIsCglzaW5wdXQuYWRzLCBzLXBhY2swMy5hZGIsIHMtcGFjazAzLmFkcywgcy1wYWNrMDUuYWRiLCBzLXBhY2swNS5hZHMsCglzLXBhY2swNi5hZGIsIHMtcGFjazA2LmFkcywgcy1wYWNrMDcuYWRiLCBzLXBhY2swNy5hZHMsIHMtcGFjazA5LmFkYiwKCXMtcGFjazA5LmFkcywgcy1wYWNrMTAuYWRiLCBzLXBhY2sxMC5hZHMsIHMtcGFjazExLmFkYiwgcy1wYWNrMTEuYWRzLAoJcy1wYWNrMTIuYWRiLCBzLXBhY2sxMi5hZHMsIHMtcGFjazEzLmFkYiwgcy1wYWNrMTMuYWRzLCBzLXBhY2sxNC5hZGIsCglzLXBhY2sxNC5hZHMsIHMtcGFjazE1LmFkYiwgcy1wYWNrMTUuYWRzLCBzLXBhY2sxNy5hZGIsIHMtcGFjazE3LmFkcywKCXMtcGFjazE4LmFkYiwgcy1wYWNrMTguYWRzLCBzLXBhY2sxOS5hZGIsIHMtcGFjazE5LmFkcywgcy1wYWNrMjAuYWRiLAoJcy1wYWNrMjAuYWRzLCBzLXBhY2syMS5hZGIsIHMtcGFjazIxLmFkcywgcy1wYWNrMjIuYWRiLCBzLXBhY2syMi5hZHMsCglzLXBhY2syMy5hZGIsIHMtcGFjazIzLmFkcywgcy1wYWNrMjQuYWRiLCBzLXBhY2syNC5hZHMsIHMtcGFjazI1LmFkYiwKCXMtcGFjazI1LmFkcywgcy1wYWNrMjYuYWRiLCBzLXBhY2syNi5hZHMsIHMtcGFjazI3LmFkYiwgcy1wYWNrMjcuYWRzLAoJcy1wYWNrMjguYWRiLCBzLXBhY2syOC5hZHMsIHMtcGFjazI5LmFkYiwgcy1wYWNrMjkuYWRzLCBzLXBhY2szMC5hZGIsCglzLXBhY2szMC5hZHMsIHMtcGFjazMxLmFkYiwgcy1wYWNrMzEuYWRzLCBzLXBhY2szMy5hZGIsIHMtcGFjazMzLmFkcywKCXMtcGFjazM0LmFkYiwgcy1wYWNrMzQuYWRzLCBzLXBhY2szNS5hZGIsIHMtcGFjazM1LmFkcywgcy1wYWNrMzYuYWRiLAoJcy1wYWNrMzYuYWRzLCBzLXBhY2szNy5hZGIsIHMtcGFjazM3LmFkcywgcy1wYWNrMzguYWRiLCBzLXBhY2szOC5hZHMsCglzLXBhY2szOS5hZGIsIHMtcGFjazM5LmFkcywgcy1wYWNrNDAuYWRiLCBzLXBhY2s0MC5hZHMsIHMtcGFjazQxLmFkYiwKCXMtcGFjazQxLmFkcywgcy1wYWNrNDIuYWRiLCBzLXBhY2s0Mi5hZHMsIHMtcGFjazQzLmFkYiwgcy1wYWNrNDMuYWRzLAoJcy1wYWNrNDQuYWRiLCBzLXBhY2s0NC5hZHMsIHMtcGFjazQ1LmFkYiwgcy1wYWNrNDUuYWRzLCBzLXBhY2s0Ni5hZGIsCglzLXBhY2s0Ni5hZHMsIHMtcGFjazQ3LmFkYiwgcy1wYWNrNDcuYWRzLCBzLXBhY2s0OC5hZGIsIHMtcGFjazQ4LmFkcywKCXMtcGFjazQ5LmFkYiwgcy1wYWNrNDkuYWRzLCBzLXBhY2s1MC5hZGIsIHMtcGFjazUwLmFkcywgcy1wYWNrNTEuYWRiLAoJcy1wYWNrNTEuYWRzLCBzLXBhY2s1Mi5hZGIsIHMtcGFjazUyLmFkcywgcy1wYWNrNTMuYWRiLCBzLXBhY2s1My5hZHMsCglzLXBhY2s1NC5hZGIsIHMtcGFjazU0LmFkcywgcy1wYWNrNTUuYWRiLCBzLXBhY2s1NS5hZHMsIHMtcGFjazU2LmFkYiwKCXMtcGFjazU2LmFkcywgcy1wYWNrNTcuYWRiLCBzLXBhY2s1Ny5hZHMsIHMtcGFjazU4LmFkYiwgcy1wYWNrNTguYWRzLAoJcy1wYWNrNTkuYWRiLCBzLXBhY2s1OS5hZHMsIHMtcGFjazYwLmFkYiwgcy1wYWNrNjAuYWRiLCBzLXBhY2s2MC5hZHMsCglzLXBhY2s2MS5hZGIsIHMtcGFjazYxLmFkcywgcy1wYWNrNjIuYWRiLCBzLXBhY2s2Mi5hZHMsIHMtcGFjazYzLmFkYiwKCXMtcGFjazYzLmFkcywgcy1wYXJpbnQuYWRiLCBzLXBhcmludC5hZGIsIHMtcGFyaW50LmFkcywgc3ByaW50LmFkcywKCXMtcHVyZXhjLmFkcywgcy1yZXN0cmkuYWRzLCBzLXJlc3RyaS5hZGIsIHMtc2NhdmFsLmFkYiwgcy1zY2F2YWwuYWRzLAoJcy1zZWNzdGEuYWRiLCBzLXNlY3N0YS5hZHMsIHMtc2VxdWlvLmFkYiwgcy1zZXF1aW8uYWRzLCBzdGFuZC5hZHMsCglzLXRhc3V0aS5hZGIsIHMtdHJhY2ViLmFkYiwgcy10cmFjZWIuYWRzLCBzdHJpbmd0LmFkYiwgc3RyaW5ndC5hZHMsCglzdHlsZWcuYWRzLCBzLXZhbGJvby5hZGIsIHMtdmFsYm9vLmFkcywgcy12YWxjaGEuYWRiLCBzLXZhbGNoYS5hZHMsCglzLXZhbGRlYy5hZGIsIHMtdmFsZGVjLmFkcywgcy12YWxpbnQuYWRiLCBzLXZhbGludC5hZHMsIHMtdmFsaW50LmFkcywKCXMtdmFsbGxkLmFkYiwgcy12YWxsbGQuYWRzLCBzLXZhbGxsaS5hZGIsIHMtdmFsbGxpLmFkcywgcy12YWxsbHUuYWRiLAoJcy12YWxsbHUuYWRzLCBzLXZhbHJlYS5hZGIsIHMtdmFscmVhLmFkcywgcy12YWx1bnMuYWRiLCBzLXZhbHVucy5hZHMsCglzLXZhbHV0aS5hZGIsIHMtdmFsdXRpLmFkcywgcy12YWx3Y2guYWRzLCBzLXZlYm9vcC5hZGIsIHMtdmVib29wLmFkcywKCXMtdmVyY29uLmFkYiwgcy12ZXJjb24uYWRzLCBzLXdjaGNudi5hZGIsIHMtd2NoY252LmFkcywgcy13Y2hjb24uYWRzLAoJcy13Y2hqaXMuYWRiLCBzLXdjaGppcy5hZHMsIHMtd2Noc3R3LmFkYiwgcy13Y2hzdHcuYWRiLCBzLXdjaHN0dy5hZHMsCglzLXdjaHd0cy5hZGIsIHMtd2Nod3RzLmFkcywgcy13aWRib28uYWRiLCBzLXdpZGJvby5hZHMsIHMtd2lkY2hhLmFkYiwKCXMtd2lkY2hhLmFkcywgcy13aWRlbnUuYWRiLCBzLXdpZGVudS5hZHMsIHMtd2lkbGxpLmFkYiwgcy13aWRsbGkuYWRzLAoJcy13aWRsbHUuYWRiLCBzLXdpZGxsdS5hZHMsIHMtd2lkd2NoLmFkYiwgcy13aWR3Y2guYWRzLCBzLXd3ZGNoYS5hZGIsCglzLXd3ZGNoYS5hZHMsIHMtd3dkZW51LmFkYiwgcy13d2RlbnUuYWRzLCBzeW1ib2xzLmFkYiwgc3ltYm9scy5hZHMsCgl0YWJsZS5hZHMsIHRhcmdwYXJtLmFkYiwgdGFyZ3Bhcm0uYWRzLCB0Yi1hbHZtcy5jLCB0Yi1hbHZ4dy5jLAoJdGJ1aWxkLmFkYiwgdHJlZV9pby5hZHMsIHRyZWVwci5hZGIsIHRyZWVwcnMuYWR0LCB0dHlwZWYuYWRzLAoJdHR5cGVzLmFkcywgdHlwZXMuYWRiLCB1aW50cC5hZGIsIHVpbnRwLmFkcywgdW5hbWUuYWRzLCB1cmVhbHAuYWRzLAoJdXNhZ2UuYWRzLCB2YWxpZHN3LmFkcywgdnhhZGRyMmxpbmUuYWRiLCB3aWRlY2hhci5hZGIsIHdpZGVjaGFyLmFkcywKCXhlaW5mby5hZGIsIHhubWFrZS5hZGIsIHhyZWZfbGliLmFkcywgeHJfdGFibHMuYWRiLCB4cl90YWJscy5hZHMsCgl4c2luZm8uYWRiLCB4dHJlZXBycy5hZGIsIHhzbmFtZXMuYWRiLCB2bXNfY29udi5hZHMsIHZtc19jb252LmFkYiwKCWEtZGlydmFsLmFkcywgYS1kaXJ2YWwuYWRiLCBhLWRpcnZhbC1taW5ndy5hZGIsIGEtZGlyZWN0LmFkcywKCWEtZGlyZWN0LmFkYiwgaW5kZXBzdy5hZHMsIHByai1hdHRyLXBtLmFkcywgc3lzdGVtLWxpbnV4LXBwYy5hZHMsCglhLW51bWF1eC1kYXJ3aW4uYWRzLCBhLW51bWF1eC1kYXJ3aW4uYWRiLAoJYS1zd3V3aGEuYWRzLCBhLXN0dW5oYS5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNS0xMS0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE4NDM0CgkqIG9zaW50LW0uYWRiOiBBZGQgcHJhZ21hIEVsYWJvcmF0ZV9BbGwgZm9yIE9zaW50CgoyMDA1LTExLTEwICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCVBSIGFkYS8yMzk5NQoJKiB0cmFucy5jIChjYWxsX3RvX2dudSk6IFJlc3RvcmUgc3RhdGVtZW50IGxvc3QgaW4gdHJhbnNsYXRpb24uCgoyMDA1LTExLTA4ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogaW5pdC5jOiBVc2UgdGhlIExpbnV4LXNwZWNpZmljIHNlY3Rpb24gZm9yIHRoZSBJQS02NC9MaW51eCB0YXJnZXQuCgkoX19nbmF0X2FkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSk6IEFkZCBjb25kaXRpb25hbCBjb2RlIHNvIHRoYXQgdGhlCglJQS02NCBpcyBhbHNvIHN1cHBvcnRlZC4KCjIwMDUtMTEtMDMgIEphbWVzIEUgV2lsc29uICA8d2lsc29uQHNwZWNpZml4LmNvbT4KCglQUiBhZGEvMjM0MjcKCSogdHJhbnMuYyAoZ25hdF90b19nbnUpOiBVc2UgVFlQRV9TSVpFX1VOSVQgbm90IFRZUEVfU0laRSBpbgoJVFJFRV9PVkVSRkxPVyBjaGVjay4KCjIwMDUtMDktMjEgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJUFIgYWRhLzIyNDE4CgkqIGRlY2wuYyAobWF5YmVfcGFkX3R5cGUpOiBVc2UgcHJvcGVyIGJpdHNpemV0eXBlIGZvciBYVlogb2JqZWN0cywKCWFzIHdlIGNyZWF0ZSB0aGVtIHRvIHN0b3JlIGEgc2l6ZSBpbiBiaXRzLgoKMjAwNS0xMC0yMSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMjE5MzcKCVBSIGFkYS8yMjMyOAoJUFIgYWRhLzIyMzgxCglQUiBhZGEvMjIzODMKCVBSIGFkYS8yMjQxOQoJUFIgYWRhLzIyNDIwCgkqIHV0aWxzMi5jIChidWlsZF9yZXR1cm5fZXhwcik6IE5ldyBoZWxwZXIgZnVuY3Rpb24uCgkqIGdpZ2kuaCAoYnVpbGRfcmV0dXJuX2V4cHIpOiBEZWNsYXJlIGl0LgoJKiB0cmFucy5jIChTdWJwcm9ncmFtX0JvZHlfdG9fZ251KTogVXNlIGJ1aWxkX3JldHVybl9leHByIGluc3RlYWQKCW9mIG1hbnVhbGx5IGJ1aWxkaW5nIHRoZSBSRVRVUk5fRVhQUiB0cmVlLgoJKGNhbGxfdG9fZ251KTogUGFzcyBNT0RJRllfRVhQUiB0aHJvdWdoIGJ1aWxkX2JpbmFyeV9vcC4KCShnbmF0X3RvX2dudSkgPE5fUmV0dXJuX1N0YXRlbWVudD46IFBhc3MgTU9ESUZZX0VYUFIgdGhyb3VnaAoJYnVpbGRfYmluYXJ5X29wIGZvciB0aGUgInRhcmdldCBwb2ludGVyIiBjYXNlLiAgVXNlIGJ1aWxkX3JldHVybl9leHByCglpbnN0ZWFkIG9mIG1hbnVhbGx5IGJ1aWxkaW5nIHRoZSBSRVRVUk5fRVhQUiB0cmVlLgoKMjAwNS0wOS0xNiAgTGF1cmVudCBHVUVSQlkgIDxsYXVyZW50QGd1ZXJieS5uZXQ+CgoJUFIgYWRhLzIzNzg4CgkqIHMtdHBpbm9wLmFkczogTWFrZSB0aGlzIHVuaXQgUHJlZWxhYm9yYXRlLgoKMjAwNS0wOS0xNiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogc29ja2V0LmM6IEFkZCBzdHJpbmcuaCBmb3IgbWVtY3B5LgoKMjAwNS0wOS0wNSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogZGVjLWlvLmFkcywgZGVjLWlvLmFkYjogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCgoyMDA1LTA5LTAxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBhLWNhbGVuZC1taW5ndy5hZGI6IEFkZCBjYWxsIHRvIE9TX1ByaW1pdGl2ZXMuSW5pdGlhbGl6ZTsKCgkqIHMtdGFwcm9wLW1pbmd3LmFkYiwgcy10YXByb3Atdm1zLmFkYiwgcy10YXByb3Atc29sYXJpcy5hZGIsCglzLXRhcHJvcC1vczIuYWRiLCBzLXRhcHJvcC1pcml4LWF0aHJlYWQuYWRiLCBzLXRhcHJvcC1saW51eC5hZGIsCglzLXRhcHJvcC1ocHV4LWRjZS5hZGIsIHMtdGFwcm9wLWlyaXguYWRiLCBzLXRhcHJvcC10cnU2NC5hZGIsCglzLXRhcHJvcC1seW54b3MuYWRiOiBNb3ZlIHdpdGggY2xhdXNlcyBvdXRzaWRlIFdhcm5pbmdzIE9mZiBub3cgdGhhdAoJZGVwZW5kZW50IHVuaXRzIGFyZSBQcmVlbGFib3JhdGUuCgkoSW5pdGlhbGl6ZSk6IENhbGwgSW50ZXJydXB0X01hbmFnZW1lZW50LkluaXRpYWxpemUgYW5kCglPU19QcmltaXRpdmVzLkluaXRpYWxpemUgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZiB0aGlzIHVuaXQuCglSZW1vdmUgdXNlIG9mIFN5c3RlbS5Tb2Z0X0xpbmtzCglNYWtlIHRoaXMgdW5pdCBQcmVlbGFib3JhdGUuCgoJKiBzLXN0YWNoZS5hZHMsIHMtdGFzcHJpLXZ4d29ya3MuYWRzLCBzLXRhc3ByaS1taW5ndy5hZHMsCglzLXRhc3ByaS12bXMuYWRzLCBzLXRhc2luZi1zb2xhcmlzLmFkcywgcy10YXNwcmktb3MyLmFkcywKCXMtdGFzcHJpLWx5bnhvcy5hZHMsIHMtdGFzcHJpLWhwdXgtZGNlLmFkcywgcy10YXNwcmktdHJ1NjQuYWRzLAoJcy10YXNpbmYtdHJ1NjQuYWRzLCBzLXRhc2luZi1pcml4LmFkcywgcy10YXNpbmYtaXJpeC1hdGhyZWFkLmFkcywKCXMtcHJvaW5mLWlyaXgtYXRocmVhZC5hZGIsIHMtcHJvaW5mLWlyaXgtYXRocmVhZC5hZHMsCglzLXRyYXRhcy5hZHMsIHMtdGFzaW5mLmFkczogTWlub3IgcmVmb3JtYXR0aW5nLgoJQWRkIHByYWdtYSBQcmVlbGFib3JhdGUsIHNpbmNlIHRoZXNlIHBhY2thZ2VzIGFyZSBzdWl0YWJsZSBmb3IgdGhpcwoJY2F0ZWdvcml6YXRpb24uCglVcGRhdGUgY29tbWVudHMuCgoJKiBzLXRyYWVudC12bXMuYWRzLCBzLWludG1hbi1kdW1teS5hZGIsCglzLXRhcHJvcC1kdW1teS5hZGI6IE1ha2UgdGhpcyB1bml0IFByZWVsYWJvcmF0ZS4KCgkqIHMtb3NwcmltLXZ4d29ya3MuYWRiLCBzLW9zcHJpbS12bXMuYWRiLCBzLW9zcHJpbS12bXMuYWRzLAoJcy1vc3ByaW0tbWluZ3cuYWRiLCBzLWludG1hbi12eHdvcmtzLmFkcywgcy1pbnRtYW4tdnh3b3Jrcy5hZGIsCglzLWludG1hbi12bXMuYWRiLCBzLWludG1hbi1taW5ndy5hZGIsIHMtaW50bWFuLXZtcy5hZHMsCglzLW9zcHJpbS11bml4LmFkYiwgcy1vc3ByaW0tb3MyLmFkYiwgcy1vc3ByaW0tc29sYXJpcy5hZGIsCglzLWludG1hbi1zb2xhcmlzLmFkYiwgcy1pbnRtYW4taXJpeC1hdGhyZWFkLmFkYiwKCXMtaW50bWFuLWlyaXguYWRiOiBNYXJrIHRoaXMgdW5pdCBQcmVlbGFib3JhdGUuCgkoSW5pdGlhbGl6ZSk6IE5ldyBwcm9jZWR1cmUuCglVcGRhdGUgY29tbWVudHMuCgoJKiBzLXRhc3ByaS1saW51eC5hZHM6IFJlbW92ZWQuCgoJKiBzLXRwb3BzcC1zb2xhcmlzLmFkYiAoSW5pdGlhbGl6ZSk6IENyZWF0ZSB0aGUga2V5IGluIHRoaXMgcHJvY2VkdXJlLAoJYXMgZG9uZSBieSBvdGhlciBpbXBsZW1lbnRhdGlvbnMgKGUuZy4gcG9zaXgpLgoKCSogcy10YXByb3AuYWRzIChUaW1lZF9EZWxheSk6IFVwZGF0ZSBzcGVjIHNpbmNlIHRoZSBjYWxsZXIgbm93IGlzCglyZXNwb25zaWJsZSBmb3IgZGVmZXJyaW5nIGFib3J0LgoJTWFyayB0aGlzIHVuaXQgUHJlZWxhYm9yYXRlLgoKCSogcy10YXByb2IuYWRiLCBzLXRhcmVzdC5hZGI6IENhbGwgU3lzdGVtLlRhc2tpbmcuSW5pdGlhbGl6ZSB0byBlbnN1cmUKCXByb3BlciBpbml0aWFsaXphdGlvbiBvZiB0aGUgdGFza2luZyBydW4tdGltZS4KCgkqIHMtdGFzZGViLmFkczogTWFyayB0aGlzIHVuaXQgUHJlZWxhYm9yYXRlLgoJKEtub3duX1Rhc2tzKTogQWRkIGV4cGxpY2l0IGRlZmF1bHQgdmFsdWUgdG8gYXZvaWQgZWxhYm9yYXRpb24gY29kZS4KCgkqIHMtaW5tYW9wLXZtcy5hZGIgKEVsYWJvcmF0aW9uIGNvZGUpOiBBZGQgY2FsbCB0bwoJSW50ZXJydXB0X01hbmFnZW1lbnQuSW5pdGlhbGl6ZSBzaW5jZSB0aGUgZWxhYm9yYXRpb24gY29kZSBkZXBlbmRzIG9uCglwcm9wZXIgaW5pdGlhbGl6YXRpb24gb2YgdGhpcyBwYWNrYWdlLgoKCSogcy1pbnRtYW4uYWRzLCBzLWlubWFvcC1wb3NpeC5hZGIsIHMtaW50bWFuLXBvc2l4LmFkYiwKCXMtb3NwcmltLmFkcywgcy10YXByb3AtcG9zaXguYWRiLCBzLXRhc3ByaS1wb3NpeC5hZHMsCglzLW9zcHJpbS1wb3NpeC5hZGI6IE1ha2UgdGhpcyB1bml0IFByZWVsYWJvcmF0ZS4KCgkqIGEtY2FsZW5kLmFkYjogQWRkIGNhbGwgdG8gT1NfUHJpbWl0aXZlcy5Jbml0aWFsaXplCgoJKiBhLWVsY2hoYS5hZGI6IFVwZGF0ZSB1c2Ugb2YgRXhjZXB0LklkLkZ1bGxfTmFtZS4KCU1pbm9yIHJlZm9ybWF0dGluZy4KCVJlbW92ZSB1c2Ugb2YgQWRhLkV4Y2VwdGlvbnMuVHJhY2ViYWNrIHdoZW4gcG9zc2libGUsIGNsZWFuZXIuCgoJKiBhLWR5bnByaS5hZGIsIGEtc3l0YWNvLmFkYiwgYS1zeXRhY28uYWRzOgoJTW92ZSB3aXRoIGNsYXVzZXMgb3V0c2lkZSBXYXJuaW5ncyBPZmYgbm93IHRoYXQgZGVwZW5kZW50IHVuaXRzIGFyZQoJUHJlZWxhYm9yYXRlLgoJVXNlIHJhaXNlIHh4eCB3aXRoICIuLi4iOyBBZGEgMjAwNSBmb3JtLgoKCSogYS10YXNpZGUuYWRzLCBhLXRhc2lkZS5hZGI6CglSZW1vdmUgc29tZSBkZXBlbmRlbmNpZXMsIHRvIG1ha2UgaXQgZWFzaWVyIHRvIG1ha2UgdGhpcyB1bml0IHRydWx5CglQcmVlbGFib3JhdGUuCglSZXdyaXRlIHNvbWUgY29kZSB0byBiZSBjb25mb3JtYW50IHdpdGggUHJlZWxhYm9yYXRlIHJ1bGVzLgoKCSogZy1vc19saWIuYWRiOiBSZW1vdmUgbm9uLXByZWVsYWJvcmF0ZSBjb2RlIHNvIHRoYXQgdGhpcyB1bml0IGNhbiBiZQoJbWFya2VkIFByZWVsYWJvcmF0ZSBpbiB0aGUgZnV0dXJlLgoKCSogcy1wcm9pbmYuYWRzLCBnLXN0cmluZy5hZHMsIHMtYXV4ZGVjLmFkcywgcy1hdXhkZWMtdm1zXzY0LmFkczogTWFrZQoJdGhlc2UgdW5pdHMgUHJlZWxhYm9yYXRlLgoKCSogcy1leGN0YWIuYWRiOiBVcGRhdGUgdXNlIG9mIEV4Y2VwdC5JZC5GdWxsX05hbWUuCgoJKiBzLXNvZmxpbi5hZHMsIHMtc29mbGluLmFkYjogTWFyayB0aGlzIHVuaXQgUHJlZWxhYm9yYXRlXzA1LgoJKFNldF9FeGNfU3RhY2tfQWRkcl9Tb2Z0LCBHZXRfRXhjX1N0YWNrX0FkZHJfTlQsIFNldF9FeGNfU3RhY2tfQWRkcl9OVCwKCVNldF9FeGNfU3RhY2tfQWRkcik6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoJUmVtb3ZlIHJlZmVyZW5jZSB0byAqTWFjaGluZV9TdGF0ZV9BZGRyKiwgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIHMtc3RhbGliLmFkczogTWFyayB0aGlzIHVuaXQgYXMgUHJlZWxhYm9yYXRlW18wNV0uCgkoRXhjZXB0aW9uX0RhdGEpOiBGdWxsX05hbWUgaXMgbm93IGEgU3lzdGVtLkFkZHJlc3Mgc28gdGhhdCB0aGlzIHVuaXQKCWNhbiBiZSBtYWRlIFByZWVsYWJvcmF0ZS4KCUNsZWFuIHVwL3NpbXBsaWZ5IGNvZGUgdGhhbmtzIHRvIEZ1bGxfTmFtZSBiZWluZyBhIFN5c3RlbS5BZGRyZXNzLgoJUmVtb3ZlIG9ic29sZXRlIHByYWdtYSBTdXBwcmVzcyAoQWxsX0NoZWNrcyksIG5vIGxvbmdlciBuZWVkZWQuCgoJKiBzLXRhc2tpbi5hZHMsIHMtdGFza2luLmFkYjoKCU1vdmUgd2l0aCBjbGF1c2VzIG91dHNpZGUgV2FybmluZ3MgT2ZmIG5vdyB0aGF0IGRlcGVuZGVudCB1bml0cyBhcmUKCVByZWVsYWJvcmF0ZS4KCU1ha2UgdGhpcyB1bml0IFByZWVsYWJvcmF0ZS4KCShJbml0aWFsaXplKTogTmV3IHByb2NlZHV1cmUsIHJlcGxhY2UgZWxhYm9yYXRpb24gY29kZSBhbmQgbWFrZXMgdGhlCglzZXQgdXAgb2YgdGhlIHRhc2tpbmcgcnVuLXRpbWUgY2xlYW5lci4KCShEZXRlY3RfQmxvY2tpbmcpOiBOb3cgYSBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgZGVmZXJyZWQgYm9vbGVhbiwgdG8KCW9iZXkgUHJlZWxhYm9yYXRlIHJ1bGVzLgoKCSogcy10YXNzdGEuYWRiIChGaW5hbGl6ZV9HbG9iYWxfVGFza3MpOiBSZW1vdmUgR2V0L1NldF9FeGNfU3RhY2tfQWRkcgoJc29mdCBsaW5rcywgbm8gbG9uZ2VyIHVzZWQuCgoJKiBzLXRyYWNlcy5hZHMsIHMtdHJhZW50LmFkczogQWRkIHByYWdtYSBQcmVlbGFib3JhdGUsIHNpbmNlIHRoZXNlCglwYWNrYWdlcyBhcmUgc3VpdGFibGUgZm9yIHRoaXMgY2F0ZWdvcml6YXRpb24uCgoJKiBzLXNvbGl0YS5hZGI6IFJlcGxhY2UgdXNlIG9mIEFkYS5FeGNlcHRpb24gYnkgcmFpc2UgeHh4IHdpdGggIi4uLiIKCXNpbmNlIHdlIGNvbXBpbGUgcnVuLXRpbWUgc291cmNlcyBpbiBBZGEgMjAwNSBtb2RlLgoJKFRpbWVkX0RlbGF5X1QpOiBDYWxsIEFib3J0X0RlZmVyL1VuZGVmZXIgYXJvdW5kIFRpbWVkX0RlbGF5LCB0bwoJYXZvaWQgaGF2aW5nIHMtdGFwcm9wKi5hZGIgZGVwZW5kIG9uIHMtc29mbGluIGFuZCB0byBhdm9pZCBjb2RlCglkdXBsaWNhdGlvbi4KCVJlbW92ZSByZWZlcmVuY2UgdG8gKk1hY2hpbmVfU3RhdGVfQWRkciosIG5vIGxvbmdlciBuZWVkZWQuCgoyMDA1LTA5LTAxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLW1hc3RvcC10cnU2NC5hZGIsIHMtbWFzdG9wLWlyaXguYWRiLCBzLW1hc3RvcC12bXMuYWRiCgkoRW50ZXJfSGFuZGxlciwgU2V0X1NpZ25hbF9NYWNoaW5lX1N0YXRlKTogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCglSZW1vdmUgcmVmZXJlbmNlIHRvIFN5c3RlbS5FeGNlcHRpb25zLgoKCSogcy1tYXN0b3AteDg2LmFkYjogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCgoJKiBzLXRyYWNlYi1tYXN0b3AuYWRiOiBBZGp1c3QgY2FsbHMgdG8gUG9wX0ZyYW1lLgoKCSogYS1leGNhY2guYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuCgoJKiBhLWV4Y2VwdC5hZHMsIGEtZXhjZXB0LmFkYjogUmVtb3ZlIGdsb2JhbCBXYXJuaW5ncyAoT2ZmKSBwcmFnbWEsIGFuZAoJaW5zdGVhZCBmaXggbmV3IHdhcm5pbmdzIHRoYXQgd2VyZSBoaWRkZW4gYnkgdGhpcyBjaGFuZ2UuCgkoQUFBLCBaWlopOiBSZW1vdmVkLCByZXBsYWNlZCBieS4uLgoJKENvZGVfQWRkcmVzc19Gb3JfQUFBLCBDb2RlX0FkZHJlc3NfRm9yX1paWik6IC4uLiB0aGVzZSBmdW5jdGlvbnMsIHdobwoJYXJlIHVzZWQgaW5zdGVhZCBvZiBjb25zdGFudHMsIHRvIGhlbHAgbWFrZSBBZGEuRXhjZXB0aW9uIHRydWx5CglwcmVlbGFib3JhdGUuCgkoUmNoZWNrXyosIFJhaXNlX0NvbnN0cmFpbnRfRXJyb3IsIFJhaXNlX1Byb2dyYW1fRXJyb3IsCglSYWlzZV9TdG9yYWdlX0Vycm9yKTogRmlsZSBpcyBub3cgYSBTeXN0ZW0uQWRkcmVzcywgdG8gc2ltcGxpZnkgY29kZS4KCShFbGFiIGNvZGUpOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCShOdWxsX09jY3VycmVuY2UpOiBSZW1vdmUgV2FybmluZ3MgT2ZmIGFuZCBtYWtlIHRoaXMgY29uc3RydWN0CglwcmVlbGFib3JhdGUuCglSZW1vdmUgY29kZSByZWxhdGVkIHRvIGZyb250LWVuZCB6ZXJvIGNvc3QgZXhjZXB0aW9uIGhhbmRsaW5nLCBzaW5jZQoJaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCglSZW1vdmUgLWduYXRMLy1nbmF0WiBzd2l0Y2hlcy4KCgkqIGEtZXhleGRhLmFkYiAoQXBwZW5kX0luZm9fRXhjZXB0aW9uX05hbWUsIFNldF9FeGNlcHRpb25fQ19Nc2cpOgoJVXBkYXRlIHVzZSBvZiBFeGNlcHQuTXNnLgoKCSogZ25hdDFkcnYuYWRiLCBpbmxpbmUuYWRiLCBiaW5kZ2VuLmFkYiwgZGVidWcuYWRiLCBleHBfY2gxMS5hZHMsCglmcmVlemUuYWRiLCBmcm9udGVuZC5hZGIsIGxpYi5hZGIsIGV4cF9jaDExLmFkYjogUmVtb3ZlIGNvZGUgcmVsYXRlZAoJdG8gZnJvbnQtZW5kIHplcm8gY29zdCBleGNlcHRpb24gaGFuZGxpbmcsIHNpbmNlIGl0IGlzIG5vIGxvbmdlciB1c2VkLgoJUmVtb3ZlIC1nbmF0TC8tZ25hdFogc3dpdGNoZXMuCgoJKiBsaWItd3JpdC5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoJUmVtb3ZlIGRvYyBvZiBVWAoKCSogTWFrZWZpbGUucnRsOiBSZW1vdmUgcmVmZXJlbmNlcyB0byBzLWV4Y2VwdCosIHMtbWFzdG9wLXg4NioKCgkqIE1ha2UtbGFuZy5pbjogUmVtb3ZlIHJlZmVyZW5jZXMgdG8gcy1leGNlcHQuYWRzCgoJKiBzLWV4Y2VwdC5hZHM6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoKCSogcy1tYXN0b3AuYWRzLCBzLW1hc3RvcC5hZGI6CgkoRW50ZXJfSGFuZGxlciwgU2V0X1NpZ25hbF9NYWNoaW5lX1N0YXRlKTogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCglSZW1vdmUgcmVmZXJlbmNlIHRvIFN5c3RlbS5FeGNlcHRpb25zLgoKCSogcmFpc2UuaCwgdXNhZ2UuYWRiLCB0YXJncGFybS5hZGIsIHRhcmdwYXJtLmFkcywgc3dpdGNoLW0uYWRiLAoJc3dpdGNoLWIuYWRiOiBSZW1vdmUgY29kZSByZWxhdGVkIHRvIGZyb250LWVuZCB6ZXJvIGNvc3QgZXhjZXB0aW9uCgloYW5kbGluZywgc2luY2UgaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCglSZW1vdmUgLWduYXRMLy1nbmF0WiBzd2l0Y2hlcy4KCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fSW4pOiBSZXBsYWNlIHRlc3Qgb2YgZXhwcmVzc2lvbiBpbiBpdHMgb3duCgl0eXBlIGJ5IHZhbGlkIHRlc3QgYW5kIGdlbmVyYXRlIHdhcm5pbmcuCgkoVGFnZ2VkX01lbWJlcnNoaXApOiBHZW5lcmF0ZSBjYWxsIHRvIHRoZSBydW4tdGltZQoJc3VicHJvZ3JhbSBJV19NZW1iZXJzaGlwIGluIGNhc2Ugb2YgIklmYWNlX0NXX1R5cCBpbiBUeXAnQ2xhc3MiCglDaGFuZ2UgZm9ybWFsIG5hbWUgU3VidHlwZV9NYXJrIHRvIFJlc3VsdF9EZWZpbml0aW9uIGluIHNldmVyYWwgY2FsbHMgdG8KCU1ha2VfRnVuY3Rpb25fU3BlY2lmaWNhdGlvbi4KCShFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3Npb24pOiBBZGQgdGVzdHMgZm9yIHN1cHByZXNzaW9uIG9mIHRoZSBBSS0zNDQKCWNoZWNrIGZvciBwcm9wZXIgYWNjZXNzaWJpbGl0eSBvZiB0aGUgb3BlcmFuZCBvZiBhIGNsYXNzLXdpZGUgYWxsb2NhdG9yLgoJVGhlIGNoZWNrIGNhbiBiZSBsZWZ0IG91dCBpZiBjaGVja3MgYXJlIHN1cHByZXNzZWQgb3IgaWYgdGhlIGV4cHJlc3Npb24KCWhhcyBhIHNwZWNpZmljIHRhZ2dlZCB0eXBlIHdob3NlIGxldmVsIGlzIGtub3duIHRvIGJlIHNhZmUuCgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX05fQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBTaW1wbGlmeSB0aGUgY29kZSB0aGF0CglnZW5lcmF0ZXMgdGhlIHJ1bi10aW1lIGNoZWNrIGFzc29jaWF0ZWQgd2l0aCBudWxsLWV4Y2x1ZGluZyBlbnRpdGllcy4KCShFeHBhbmRfTl9SZXR1cm5fU3RhdGVtZW50KTogQWRkIHRlc3RzIHRvIGRldGVybWluZSBpZiB0aGUgYWNjZXNzaWJpbGl0eQoJY2hlY2sgb24gdGhlIGxldmVsIG9mIHRoZSByZXR1cm4gZXhwcmVzc2lvbiBvZiBhIGNsYXNzLXdpZGUgZnVuY3Rpb24KCWNhbiBiZSBlbGlkZWQuIFRoZSBjaGVjayB1c3VhbGx5IGlzbid0IG5lZWRlZCBpZiB0aGUgZXhwcmVzc2lvbiBoYXMgYQoJc3BlY2lmaWMgdHlwZSAodW5sZXNzIGl0J3MgYSBjb252ZXJzaW9uIG9yIGEgZm9ybWFsIHBhcmFtZXRlcikuIEFsc28KCWFkZCBhIHRlc3QgZm9yIHdoZXRoZXIgYWNjZXNzaWJpbGl0eSBjaGVja3MgYXJlIHN1cHByZXNzZWQuIEF1Z21lbnQKCXRoZSBjb21tZW50cyB0byBkZXNjcmliZSB0aGUgY29uZGl0aW9ucyBmb3IgcGVyZm9ybWluZyB0aGUgY2hlY2suCgoyMDA1LTA5LTAxICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogYS10YWdzLmFkYiAoSVdfTWVtYmVyc2hpcCk6IEdpdmUgc3VwcG9ydCB0bwoJIklmYWNlX0NXX1R5cCBpbiBUJ0NsYXNzIi4gRm9yIHRoaXMgcHVycG9zZSB0aGUgZnVuY3Rpb25hbGl0eSBvZiB0aGlzCglzdWJwcm9ncmFtIGhhcyBiZWVuIGV4dGVuZGVkIHRvIGxvb2sgZm9yIHRoZSB0YWcgaW4gdGhlIGFuY2VzdG9ycyB0YWcKCXRhYmxlLgoJVXBkYXRlIHRoZSBzdHJ1Y3R1cmUgb2YgdGhlIEdOQVQgRGlzcGF0Y2ggVGFibGUgdG8gcmVmbGVjdCB0aGUKCWFkZGl0aW9uYWwgdHdvIHRhYmxlcyB1c2VkIGluIGRpc3BhdGNoaW5nIHNlbGVjdHMuCglJbnRyb2R1Y2UgYXBwcm9wcmlhdGUgYXJyYXkgdHlwZXMgYW5kIHJlY29yZCBjb21wb25lbnRzIGluCglUeXBlX1NwZWNpZmljX0RhdGEgdG8gcmVmbGVjdCB0aGUgdHdvIHRhYmxlcy4KCShHZXRfRW50cnlfSW5kZXgsIFNldF9FbnRyeV9JbmRleCk6IFJldHJpZXZlIGFuZCBzZXQgdGhlIGVudHJ5IGluZGV4IGluCgl0aGUgVFNEIG9mIGEgdGFnLCBpbmRleGVkIGJ5IHBvc2l0aW9uLgoJKEdldF9QcmltX09wX0tpbmQsIFNldF9QcmltX09wX0tpbmQpOiBSZXRyaWV2ZSBhbmQgc2V0IHRoZSBwcmltaXRpdmUKCW9wZXJhdGlvbiBraW5kIGluIHRoZSBUU0Qgb2YgYSB0YWcsIGluZGV4ZWQgYnkgcG9zaXRpb24uCgoJKiBhLXRhZ3MuYWRzOiBJbnRyb2R1Y2UgYW4gZW51bWVyYXRpb24gdHlwZSB0byBjYXB0dXJlIGRpZmZlcmVudAoJcHJpbWl0aXZlIG9wZXJhdGlvbiBraW5kcy4gRGVmaW5lIGEgY29uc3RhbnQgcmVmbGVjdGluZyB0aGUgbnVtYmVyIG9mCglwcmVkZWZpbmVkIHByaW1pdGl2ZSBvcGVyYXRpb25zLgoJKEdldF9FbnRyeV9JbmRleCwgU2V0X0VudHJ5X0luZGV4KTogU2V0IGFuZCByZXRyaWV2ZSB0aGUgZW50cnkgaW5kZXgKCW9mIGFuIGVudHJ5IHdyYXBwZXIuCgkoR2V0X1ByaW1fT3BfS2luZCwgU2V0X1ByaW1fT3BfS2luZCk6IFNldCBhbmQgcmV0cmlldmUgdGhlIGtpbmQgb2YKCWNhbGxhYmxlIGVudGl0eSBvZiBhIHByaW1pdGl2ZSBvcGVyYXRpb24uCgoJKiBleHBfY2gzLmFkYiAoRnJlZXplX1JlY29yZF9UeXBlKTogR2VuZXJhdGUgdGhlIGRlY2xhcmF0aW9ucyBvZiB0aGUKCXByaW1pdGl2ZSBvcGVyYXRpb25zIHVzZWQgaW4gZGlzcGF0Y2hpbmcgc2VsZWN0cyBmb3IgbGltaXRlZAoJaW50ZXJmYWNlcywgbGltaXRlZCB0YWdnZWQsIHRhc2sgYW5kIHByb3RlY3RlZCB0eXBlcyB3aGF0IGltcGxlbWVudCBhCglsaW1pdGVkIGludGVyZmFjZS4KCShGcmVlemVfVHlwZSk6IEdlbmVyYXRlIHRoZSBib2RpZXMgb2YgdGhlIHByaW1pdGl2ZSBvcGVyYXRpb25zIHVzZWQgaW4KCWRpc3BhdGNoaW5nIHNlbGVjdHMgZm9yIGxpbWl0ZWQgdGFnZ2VkLCB0YXNrIGFuZCBwcm90ZWN0ZWQgdHlwZXMgdGhhdAoJaW1wbGVtZW50IGEgbGltaXRlZCBpbnRlcmZhY2UuIEdlbmVyYXRlIHN0YXRlbWVudHMgdG8gcG9wdWxhdGUgdGhlIHR3bwoJYXV4aWxpYXJ5IHRhYmxlcyB1c2VkIGZvciBkaXNwYXRjaGluZyBpbiBzZWxlY3Qgc3RhdGVtZW50cy4KCShGcmVlemVfUmVjb3JkX1R5cGUpOiBBZGQgY2FsbCB0byBpbml0aWFsaXplIHRoZSBkaXNwYXRjaCB0YWJsZSBlbnRyaWVzCglhc3NvY2lhdGVkIHdpdGggcHJlZGVmaW5lZCBpbnRlcmZhY2UgcHJpbWl0aXZlIG9wZXJhdGlvbnMuCgkoQnVpbGRfRGNoZWNrX0Z1bmN0aW9uKTogQ2hhbmdlIFNldF9TdWJ0eXBlX01hcmsgdG8KCVNldF9SZXN1bHRfRGVmaW5pdGlvbi4KCShCdWlsZF9WYXJpYW50X1JlY29yZF9FcXVhbGl0eSk6IENoYW5nZSBTdWJ0eXBlX01hcmsgdG8KCVJlc3VsdF9EZWZpbml0aW9uLgoJKEZyZWV6ZV9FbnVtZXJhdGlvbl9UeXBlKTogQ2hhbmdlIFN1YnR5cGVfTWFyayB0byBSZXN1bHRfRGVmaW5pdGlvbi4KCShQcmVkZWZfU3BlY19Pcl9Cb2R5KTogQ2hhbmdlIFN1YnR5cGVfTWFyayB0byBSZXN1bHRfRGVmaW5pdGlvbi4KCShCdWlsZF9Bc3NpZ25tZW50KTogU2ltcGxpZnkgdGhlIGNvZGUgdGhhdCBhZGRzIHRoZSBydW4tdGltZS1jaGVjay4KCShFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBDb2RlIGNsZWFudXAuCgoJKiBleHBfY2g3LmFkYiAoTWFrZV9DbGVhbik6IFNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgdHlwZSBmb3IgbG9ja2luZwoJZW50cmllcyB3aGVuIHRoZXJlIGlzIGEgcHJvdGVjdGVkIHR5cGUgdGhhdCBpbXBsZW1lbnRzIGEgbGltaXRlZAoJaW50ZXJmYWNlLgoKCSogZXhwX2NoOS5hZGI6IEFkZCBwYWNrYWdlIFNlbGVjdF9FeHBhbnNpb25fVXRpbGl0aWVzIHRoYXQgY29udGFpbnMKCWNvbW1vbiByb3V0aW5lcyB1c2VkIGluIGV4cGFuc2lvbiBvZiBkaXNwYXRjaGluZyBzZWxlY3RzLgoJKEFkZF9Qcml2YXRlX0RlY2xhcmF0aW9ucyk6IFNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgcHJvdGVjdGlvbiB0eXBlIHdoZW4KCXRoZXJlIGlzIGEgcHJvdGVjdGVkIHR5cGUgdGhhdCBpbXBsZW1lbnRzIGEgbGltaXRlZCBpbnRlcmZhY2UuCgkoQnVpbGRfUGFyYW1ldGVyX0Jsb2NrKTogR2VuZXJhdGUgYSB3cmFwcGVkIHBhcmFtZXRlciBibG9jay4KCShCdWlsZF9Qcm90ZWN0ZWRfU3VicHJvZ3JhbV9Cb2R5KTogU2VsZWN0IHRoZSBhcHByb3ByaWF0ZSB0eXBlIGZvcgoJbG9ja2luZyBlbnRyaWVzIHdoZW4gdGhlcmUgaXMgYSBwcm90ZWN0ZWQgdHlwZSB0aGF0IGltcGxlbWVudHMgYQoJbGltaXRlZCBpbnRlcmZhY2UuCgkoQnVpbGRfV3JhcHBlcl9TcGVjKTogU2V0IHRoZSBmbGFnIGFuZCB3cmFwcGVkIGVudGl0eSBmb3IgcHJvY2VkdXJlcwoJY2xhc3NpZmllZCBhcyBlbnRyeSB3cmFwcGVycy4KCShFeHBhbmRfTl9Bc3luY2hyb25vdXNfU2VsZWN0KTogQWRkIHN1cHBvcnQgZm9yIGV4cGFuc2lvbiBvZiBkaXNwYXRjaGluZwoJYXN5bmNocm9ub3VzIHNlbGVjdHMuCgkoRXhwYW5kX05fQ29uZGl0aW9uYWxfRW50cnlfQ2FsbCk6IEFkZCBzdXBwb3J0IGZvciBleHBhbnNpb24gb2YKCWRpc3BhdGNoaW5nIGNvbmRpdGlvbmFsIHNlbGVjdHMuCgkoRXhwYW5kX05fUHJvdGVjdGVkX1R5cGVfRGVjbGFyYXRpb24pOiBTZWxlY3QgdGhlIGFwcHJvcHJpYXRlIHR5cGUgZm9yCglwcm90ZWN0aW9uIHdoZW4gdGhlcmUgaXMgYSBwcm90ZWN0ZWQgdHlwZSB0aGF0IGltcGxlbWVudHMgbGltaXRlZAoJaW50ZXJmYWNlcy4KCShFeHBhbmRfTl9UaW1lZF9FbnRyeV9DYWxsKTogQWRkIHN1cHBvcnQgZm9yIGV4cGFuc2lvbiBvZiBkaXNwYXRjaGluZwoJdGltZWQgc2VsZWN0cy4KCShFeHRyYWN0X0Rpc3BhdGNoaW5nX0NhbGwpOiBFeHRyYWN0IHRoZSBlbnRpdHkgb2YgdGhlIG5hbWUgb2YgYQoJZGlzcGF0Y2hpbmcgY2FsbCwgdGhlIG9iamVjdCBwYXJhbWV0ZXIsIGFjdHVhbCBwYXJhbWV0ZXJzIGFuZAoJY29ycmVzcG9uZGluZyBmb3JtYWxzLgoJKE1ha2VfSW5pdGlhbGl6ZV9Qcm90ZWN0aW9uKTogQ29ycmVjdCBsb2dpYyBvZiBwcm90ZWN0aW9uIGluaXRpYWxpemF0aW9uCgl3aGVuIHRoZXJlIGlzIGEgcHJvdGVjdGVkIHR5cGUgdGhhdCBpbXBsZW1lbnRzIGEgbGltaXRlZCBpbnRlcmZhY2UuCgkoUGFyYW1ldGVyX0Jsb2NrX1BhY2spOiBQb3B1bGF0ZSBhIHdyYXBwZWQgcGFyYW1ldGVyIGJsb2NrIHdpdGggdGhlCgl2YWx1ZXMgb2YgYWN0dWFsIHBhcmFtZXRlcnMuCgkoUGFyYW1ldGVyX0Jsb2NrX1VucGFjayk6IFJldHJpZXZlIHRoZSB2YWx1ZXMgZnJvbSBhIHdyYXBwZWQgcGFyYW1ldGVyCglibG9jayBhbmQgYXNzaWduIHRoZW0gdG8gdGhlIG9yaWdpbmFsIGFjdHVhbCBwYXJhbWV0ZXJzLgoKCSogZXhwX2NoOS5hZHMgKFN1YnByb2dyYW1fUHJvdGVjdGlvbl9Nb2RlKTogTmV3IHR5cGUuCgkoQnVpbGRfUHJvdGVjdGVkX1N1Yl9TcGVjaWZpY2F0aW9uKTogQ2hhbmdlIHRoZSB0eXBlIGFuZCBuYW1lIG9mIHRoZQoJbGFzdCBmb3JtYWwgdG8gYWNjb3VudCBmb3IgdGhlIGluY3JlYXNlZCB2YXJpZXR5IG9mIHByb3RlY3Rpb24gbW9kZXMuCgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYiAoV2FzX0hpZGRlbik6IE5ldyBhdHRyaWJ1dGUuIFByZXNlbnQgaW4gYWxsCgllbnRpdGllcy4gVXNlZCB0byBzYXZlIHRoZSB2YWx1ZSBvZiB0aGUgSXNfSGlkZGVuIGF0dHJpYnV0ZSB3aGVuIHRoZQoJbGltaXRlZC12aWV3IGlzIGluc3RhbGxlZC4KCShJc19QcmltaXRpdmVfV3JhcHBlciwgU2V0X0lzX1ByaW1pdGl2ZV9XcmFwcGVyKTogUmV0cmlldmUgYW5kIGNoYW5nZQoJdGhlIGF0dHJpYnV0ZSBvZiBwcm9jZWR1cmVzIGNsYXNzaWZpZWQgYXMgZW50cnkgd3JhcHBlcnMuCgkoV3JhcHBlZF9FbnRpdHksIFNldF9XcmFwcGVkX0VudGl0eSk6IFJldHJpZXZlIGFuZCBjaGFuZ2UgdGhlIHdyYXBwZWQKCWVudGl0eSBvZiBhIHByaW1pdGl2ZSB3cmFwcGVyLgoJKFdyaXRlX0VudGl0eV9GbGFncyk6IE91dHB1dCB0aGUgbmFtZSBhbmQgdmFsdWUgb2YgdGhlCglJc19QcmltaXRpdmVfV3JhcHBlciBhdHRyaWJ1dGUuCgkoV3JpdGVfRmllbGQyN19OYW1lKTogT3V0cHV0IHRoZSBuYW1lIGFuZCBlbnRpdHkgb2YgdGhlIGZpZWxkIFdyYXBwZWRfCglFbnRpdHkuCgkoVW5kZXJseWluZ19UeXBlKTogSWYgd2UgaGF2ZSBhbiBpbmNvbXBsZXRlIGVudGl0eSB0aGF0IGNvbWVzIGZyb20KCXRoZSBsaW1pdGVkIHZpZXcgdGhlbiB3ZSByZXR1cm4gdGhlIFVuZGVybHlpbmdfVHlwZSBvZiBpdHMgbm9uLWxpbWl0ZWQKCXZpZXcgaWYgaXQgaXMgYWxyZWFkeSBhdmFpbGFibGUuCgkoQWJzdHJhY3RfSW50ZXJmYWNlX0FsaWFzKTogRmxhZyBhcHBsaWVzIHRvIGFsbCBzdWJyb2dyYW0ga2luZHMsCglpbmNsdWRpbmcgb3BlcmF0b3JzLgoJKFdyaXRlX0ZpZWxkMjZfTmFtZSk6IEFkZCBlbnRyeSBmb3IgT3ZlcnJpZGRlbl9PcGVyYXRpb24KCShPdmVycmlkZGVuX09wZXJhdGlvbik6IE5ldyBhdHRyaWJ1dGUgb2YgZnVuY3Rpb25zIGFuZCBwcm9jZWR1cmVzLgoKCSogZXhwX2Rpc3AuYWRzLCBleHBfZGlzcC5hZGIgKERlZmF1bHRfUHJpbV9PcF9Qb3NpdGlvbik6IFJldHVybiBhCglwcmVkZWZpbmVkIHBvc2l0aW9uIGluIHRoZSBkaXNwYXRjaCB0YWJsZSBmb3IgdGhlIHByaW1pdGl2ZSBvcGVyYXRpb25zCgl1c2VkIGluIGRpc3BhdGNoaW5nIHNlbGVjdHMuCgkoSW5pdF9QcmVkZWZpbmVkX0ludGVyZmFjZV9QcmltaXRpdmVzKTogUmVtb3ZlIHRoZSBoYXJkY29kZWQgbnVtYmVyIG9mCglwcmVkZWZpbmVkIHByaW1pdGl2ZSBvcGVyYXRpb25zIGFuZCByZXBsYWNlIGl0IHdpdGgKCURlZmF1bHRfUHJpbV9PcF9Db3VudC4KCShNYWtlX0Rpc3BfQXN5bmNocm9ub3VzX1NlbGVjdF9TcGVjLCBNYWtlX0Rpc3BfQ29uZGl0aW9uYWxfU2VsZWN0X1NwZWMsCglNYWtlX0Rpc3BfR2V0X1ByaW1fT3BfS2luZF9TcGVjLCBNYWtlX0Rpc3BfVGltZWRfU2VsZWN0X1NwZWMpOiBVcGRhdGUKCXRoZSBuYW1lcyBvZiB0aGUgZ2VuZXJhdGVkIHByaW1pdGl2ZSBvcGVyYXRpb25zIHVzZWQgaW4gZGlzcGF0Y2hpbmcKCXNlbGVjdHMuCgkoSW5pdF9QcmVkZWZpbmVkX0ludGVyZmFjZV9QcmltaXRpdmVzKTogTm8gbmVlZCB0byBpbmhlcml0IHByaW1pdGl2ZXMgaW4KCWNhc2Ugb2YgYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzLiBUaGV5IHdpbGwgYmUgaW5oZXJpdCBieSB0aGUgb2JqZWN0cwoJaW1wbGVtZW50aW5nIHRoZSBpbnRlcmZhY2UuCgkoTWFrZV9EVCk6IFRoZXJlIGlzIG5vIG5lZWQgdG8gaW5oZXJpdCB0aGUgZGlzcGF0Y2ggdGFibGUgb2YgdGhlCglhbmNlc3RvciBpbnRlcmZhY2UgZm9yIHRoZSBlbGFib3JhdGlvbiBvZiBhYnN0cmFjdCBpbnRlcmZhY2UgdHlwZXMuCglUaGUgZGlzcGF0Y2ggdGFibGUgd2lsbCBiZSBpbmhlcml0ZWQgYnkgdGhlIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlCglpbnRlcmZhY2UuCgkoQ29weV9TZWNvbmRhcnlfRFRzKTogQWRkIGRvY3VtZW50YXRpb24uCgkoVmFsaWRhdGVfUG9zaXRpb24pOiBJbXByb3ZlIHRoaXMgc3RhdGljIGNoZWNrIGluIGNhc2Ugb2YKCWFsaWFzZWQgc3VicHJvZ3JhbXMgYmVjYXVzZSBhbGlhc2VkIHN1YnByb2dyYW1zIG11c3QgaGF2ZQoJdGhlIHNhbWUgcG9zaXRpb24uCgkoSW5pdF9QcmVkZWZpbmVkX0ludGVyZmFjZV9QcmltaXRpdmVzKTogTmV3IHN1YnByb2dyYW0gdGhhdCBpbml0aWFsaXplcwoJdGhlIGVudHJpZXMgYXNzb2NpYXRlZCB3aXRoIHByZWRlZmluZWQgcHJpbWl0aXZlcyBvZiBhbGwgdGhlIHNlY29uZGFyeQoJZGlzcGF0Y2ggdGFibGVzLgoJKEJ1aWxkX0Fub255bW91c19BY2Nlc3NfVHlwZSk6IFJlbW92ZWQuCgkoRXhwYW5kX0ludGVyZmFjZV9BY3R1YWxzKTogV2l0aCB0aGUgcHJldmlvdXMgY2xlYW51cCB0aGVyZSBpcyBubyBuZWVkCgl0byBidWlsZCBhbiBhbm9ueW1vdXMgYWNjZXNzIHR5cGUuIFRoaXMgYWxsb3dzIGZ1cnRoZXIgY2xlYW51cCBpbiB0aGUKCWNvZGUgZ2VuZXJhdGVkIGJ5IHRoZSBleHBhbmRlci4KCShFeHBhbmRfSW50ZXJmYWNlX0NvbnZlcnNpb24pOiBJZiB0aGUgYWN0dWFsIGlzIGFuIGFjY2VzcyB0eXBlIHRoZW4KCWJ1aWxkIGFuIGludGVybmFsIGZ1bmN0aW9uIHRvIGhhbmRsZSB0aGUgZGlzcGxhY2VtZW50LiBJZiB0aGUgYWN0dWFsCglpcyBudWxsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBudWxsIGJlY2F1c2Ugbm8gZGlzcGxhY2VtZW50IGlzCglyZXF1aXJlZDsgb3RoZXJ3aXNlIHBlcmZvcm1zIGEgdHlwZSBjb252ZXJzaW9uIHRoYXQgd2lsbCBiZQoJZXhwYW5kZWQgaW4gdGhlIGNvZGUgdGhhdCByZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgZGlzcGxhY2VkIGFjdHVhbC4KCShFeHBhbmRfSW50ZXJmYWNlX0FjdHVhbHMpOiBBdm9pZCB0aGUgZ2VuZXJhdGlvbiBvZiB1bm5lY2Vzc2FyeSB0eXBlCgljb252ZXJzaW9ucyB0aGF0IGhhdmUgbm8gZWZmZWN0IGluIHRoZSBnZW5lcmF0ZWQgY29kZSBiZWNhdXNlIG5vCglkaXNwbGFjZW1lbnQgaXMgcmVxdWlyZWQuIENvZGUgY2xlYW51cDsgdXNlIGxvY2FsIHZhcmlhYmxlcyB0bwoJYXZvaWQgcmVwZWF0ZWQgY2FsbHMgdG8gdGhlIHN1YnByb2dyYW0gZGlyZWN0bHlfZGVzaWduYXRlZF90eXBlKCkuCgoJKiBleHBfdXRpbC5hZHMsIGV4cF91dGlsLmFkYiAoSXNfUHJlZGVmaW5lZF9EaXNwYXRjaGluZ19PcGVyYXRpb24pOgoJQ2xhc3NpZnkgdGhlIHByaW1pdGl2ZSBvcGVyYXRpb25zIHVzZWQgaW4gZGlzcGF0Y2hpbmcgc2VsZWN0cyBhcwoJcHJlZGVmaW5lZC4KCShJbXBsZW1lbnRzX0xpbWl0ZWRfSW50ZXJmYWNlKTogRGV0ZXJtaW5lIHdoZXRoZXIgc29tZSB0eXBlIGVpdGhlcgoJZGlyZWN0bHkgaW1wbGVtZW50cyBhIGxpbWl0ZWQgaW50ZXJmYWNlIG9yIGV4dGVuZHMgYSB0eXBlIHRoYXQKCWltcGxlbWVudHMgYSBsaW1pdGVkIGludGVyZmFjZS4KCShCdWlsZF9UYXNrX0ltYWdlX0Z1bmN0aW9uKTogQ2hhbmdlIFN1YnR5cGVfTWFyayB0byBSZXN1bHRfRGVmaW5pdGlvbi4KCShFeHBhbmRfU3VidHlwZV9Gcm9tX0V4cHIpOiBEbyBub3QgYnVpbGQgYWN0dWFsIHN1YnR5cGUgaWYgdGhlCglleHByZXNzaW9uIGlzIGxpbWl0ZWQuCgkoRmluZF9JbnRlcmZhY2VfVGFnKTogQWRkIGNvZGUgdG8gaGFuZGxlIGNsYXNzLXdpZGUgdHlwZXMgYW5kCgllbnRpdGllcyBmcm9tIHRoZSBsaW1pdGVkLXZpZXcuCgoJKiBydHNmaW5kLmFkczogQWRkIGVudHJpZXMgaW4gUkVfSWQgYW5kIFJFX1VuaXRfVGFibGUgZm9yCglHZXRfRW50cnlfSW5kZXgsIEdldF9QcmltX09wX0tpbmQsIFBPS19GdW5jdGlvbiwgUE9LX1Byb2NlZHVyZSwKCVBPS19Qcm90ZWN0ZWRfRW50cnksIFBPS19Qcm90ZWN0ZWRfRnVuY3Rpb24sIFBPS19Qcm90ZWN0ZWRfUHJvY2VkdXJlLAoJUE9LX1Rhc2tfRW50cnksIFBPS19UYXNrX1Byb2NlZHVyZSwgUHJpbV9PcF9LaW5kLCBTZXRfRW50cnlfSW5kZXgsCglTZXRfUHJpbV9PcF9LaW5kLgoKCSogc2VtX2NoOS5hZGIgKEFuYWx5emVfVHJpZ2dlcmluZ19BbHRlcm5hdGl2ZSk6IENoZWNrIGZvciBsZWdhbCB0eXBlCglvZiBwcm9jZWR1cmUgbmFtZSBvciBwcmVmaXggdGhhdCBhcHBlYXJzIGFzIGEgdHJpZ2dlciBpbiBhIHRyaWdnZXJpbmcKCWFsdGVybmF0aXZlLgoKCSogdWludHAuYWRzOiBJbnRyb2R1Y2UgY29uc3RhbnRzIFVpbnRfMTEgYW5kIFVpbnRfMTMuCgoyMDA1LTA5LTAxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLXRhdGFhdC5hZGIsIGEtdGFzYXR0LmFkYjoKCVJlcGxhY2UgY2FsbHMgdG8gRGVmZXIvVW5kZWZlcl9BYm9ydGlvbiBieSBEZWZlci9VbmRlZmVyX0Fib3J0LgoKCSogcy10YXNpbmkuYWRzLCBzLXRhc2luaS5hZGIgKERlZmVyX0Fib3J0aW9uLCBVbmRlZmVyX0Fib3J0aW9uKTogTW92ZWQKCXRoZXNlIHByb2NlZHVyZXMgdG8gYm9keSwgYW5kIHJlbmFtZWQgQWJvcnRfRGVmZXIsIEFib3J0X1VuZGVmZXIuCgkoR2V0X0V4Y19TdGFja19BZGRyLCBTZXRfRXhjX1N0YWNrX0FkZHIpOiBSZW1vdmVkLCBubwoJbG9uZ2VyIHVzZWQuCgoyMDA1LTA5LTAxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgkgICAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIHMtdGFwcm9wLXZ4d29ya3MuYWRiOgoJTW92ZSB3aXRoIGNsYXVzZXMgb3V0c2lkZSBXYXJuaW5ncyBPZmYgbm93IHRoYXQgZGVwZW5kZW50IHVuaXRzIGFyZQoJUHJlZWxhYm9yYXRlLgoJKEluaXRpYWxpemUpOiBDYWxsIEludGVycnVwdF9NYW5hZ2VtZWVudC5Jbml0aWFsaXplIHRvIGVuc3VyZSBwcm9wZXIKCWluaXRpYWxpemF0aW9uIG9mIHRoaXMgdW5pdC4KCShTcGVjaWZpYyk6IEFkZCBuZXcgcHJvY2VkdXJlcyBJbml0aWFsaXplIGFuZCBEZWxldGUgc28gdGhhdCB0aGlzCglwYWNrYWdlIGNhbiBiZSB1c2VkIGZvciBWeFdvcmtzIDUueCBhbmQgNi54CgkoQVRDQl9LZXksIEFUQ0JfS2V5X0FkZHJlc3MpOiBNb3ZlZCB0byBTcGVjaWZpYyBwYWNrYWdlIGJvZHkgdG8gaGlkZQoJZGlmZmVyZW5jZXMgYmV0d2VlbiBWeFdvcmtzIDUueCBhbmQgNi54CglNaW5vciByZWZvcm1hdHRpbmcuCgkoVGltZWRfRGVsYXkpOiBSZW1vdmUgY2FsbHMgdG8gRGVmZXIvVW5kZWZlcl9BYm9ydCwgbm93IHBlcmZvcm1lZCBieQoJY2FsbGVyLgoJVXNlIG9ubHkgUHJlZWxhYm9yYXRlLWNvbXBhdGlibGUgY29uc3RydWN0cy4KCgkqIHMtdHBvcHNwLXZ4d29ya3MuYWRiIChBVEJDX0tleSwgQVRDQl9LZXlfQWRkcik6IE1vdmVkIGZyb20KCVByaW1pdGl2ZXMuT3BlcmF0aW9ucy4KCShEZWxldGUsIEluaXRpYWxpemUpOiBOZXcgcHJvY2VkdXJlcy4KCgkqIHMtb3NpbnRlLXZ4d29ya3MuYWRiOiBCb2R5IHVzZWQgdG8gaGFuZGxlIGRpZmZlcmVuY2VzIGJldHdlZW4KCVZ4V29ya3MgNS54IGFuZCA2LngKCShraWxsLCBTZXRfVGltZV9TbGljZSwgVlhfRlBfVEFTSyk6IE5ldyBmdW5jdGlvbnMuCgoJKiBzLW9zaW50ZS12eHdvcmtzLmFkczogTWlub3IgcmVmb3JtYXR0aW5nLgoJQWRkIFZ4V3dvcmtzIDYueCBzcGVjaWZpYyBmdW5jdGlvbnMgKG9ubHkgY2FsbGVkIGZyb20gVnhXb3JrcyA2IGZpbGVzKS4KCShWWF9GUF9UQVNLKTogTm93IGEgZnVuY3Rpb24sIHRvIGhhbmRsZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIFZ4V29ya3MgNQoJYW5kIDYuCgkoU2V0X1RpbWVfU2xpY2UpOiBOZXcgZnVuY3Rpb24sIHJlcGxhY2luZyBrZXJuZWx0aW1lU2xpY2UgdG8gc2hhcmUgY29kZQoJYmV0d2VlbiBWeHdvcmtzIDUgYW5kIDYuCgkodGFza0xvY2ssIHRhc2tVbmxvY2spOiBSZW1vdmVlZCwgbm8gbG9uZ2VyIHVzZWQuCgoJKiBhZGFpbnQuYzogVGhlIHdhaXQuaCBoZWFkZXIgaXMgbm90IGxvY2F0ZWQgaW4gdGhlIHN5cyBkaXJlY3Rvcnkgb24KCVZ4V29ya3Mgd2hlbiB1c2luZyBSVFBzLgoJKF9fZ25hdF9zZXRfZW52X3ZhbHVlKTogVXNlIHNldGVudiBpbnN0ZWFkIG9mIHB1dGVudiBvbiBWeFdvcmtzIHdoZW4KCXVzaW5nIFJUUHMuCgkoX19nbmF0X2R1cCk6IGR1cCBpcyBhdmFpbGFibGUgb24gVnh3b3JrcyB3aGVuIHVzaW5nIFJUUHMuCgkoX19nbmF0X2R1cDIpOiBkdXAyIGlzIGF2YWlsYWJsZSBvbiBWeHdvcmtzIHdoZW4gdXNpbmcgUlRQcy4KCgkqIGNhbC5jOiBVc2UgdGhlIGhlYWRlciB0aW1lLmggZm9yIFZ4d29ya3MgNi4wIHdoZW4gdXNpbmcgUlRQcy4KCgkqIGV4cGVjdC5jOiBUaGUgd2FpdC5oIGhlYWRlciBpcyBub3QgbG9jYXRlZCBpbiB0aGUgc3lzIGRpcmVjdG9yeSBvbgoJVnhXb3JrcyB3aGVuIHVzaW5nIFJUUHMuCgoyMDA1LTA5LTAxICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZy1zb2Njb24tdm1zLmFkYjogUmVuYW1lZCB0byBnLXNvY2Nvbi12bXMuYWRzCgoJKiBnLXNvY2Nvbi12bXMuYWRzOiBSZW5hbWVkIGZyb20gZy1zb2Njb24tdm1zLmFkYgoKCSogZy1zb2Njb24uYWRzLCBnLXNvY2Nvbi10cnU2NC5hZHMsIGctc29jY29uLWFpeC5hZHMsCglnLXNvY2Nvbi1kYXJ3aW4uYWRzLCBnLXNvY2Nvbi1pcml4LmFkcywgZy1zb2Njb24taHB1eC5hZHMsCglnLXNvY2Nvbi1zb2xhcmlzLmFkcywgZy1zb2Njb24tbWluZ3cuYWRzLCBnLXNvY2Nvbi12eHdvcmtzLmFkcywKCWctc29jY29uLWZyZWVic2QuYWRzOiBBZGQgbmV3IGNvbnN0YW50czoKCSBJUF9NVUxUSUNBU1RfSUYKCSBTT19SQ1ZUSU1FTy9TT19TTkRUSU1FTwoJIElPVl9NQVgKCgkqIGdlbi1zb2Njb24uYzoKCU1vdmUgYWxsIHRhcmdldC1zcGVjaWZpYyBmaWxlIGluY2x1c2lvbnMgYW5kIG1hY3JvIGRlZmluaXRpb25zIHRvCglnc29ja2V0LmgsIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IGFueSBDIGNvZGUgaW4gc29ja2V0LmMgd2lsbCBzZWUgYQoJc2V0IG9mIGNvbnN0YW50cyB0aGF0IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgY29udGVudHMgb2YgZy1zb2Njb24uYWRzLgoKCSogZ3NvY2tldC5oOiBDb2RlIGltcG9ydGVkIGZyb20gZ2VuLXNvY2Nvbi5jOgoJTW92ZSBhbGwgdGFyZ2V0LXNwZWNpZmljIGZpbGUgaW5jbHVzaW9ucyBhbmQgbWFjcm8gZGVmaW5pdGlvbnMgdG8KCWdzb2NrZXQuaCwgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgYW55IEMgY29kZSBpbiBzb2NrZXQuYyB3aWxsIHNlZSBhIHNldAoJb2YgY29uc3RhbnRzIHRoYXQgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBjb250ZW50cyBvZiBnLXNvY2Nvbi5hZHMuCglUaGlzIGNoYW5nZSBhbHNvIG1ha2VzIGdlbi1zb2Njb24gc2VsZi1jb250YWluZWQgKHJlbW92aW5nIGRlcGVuZGVuY2llcwoJdXBvbiBHQ0MgaW50ZXJuYWwgaGVhZGVycykuCgoJKiBnLXNvY2tldC5hZGIgKFNlbmRfVmVjdG9yKTogTWFrZSBjYWxscyB0byBXcml0ZXYgYXQgbW9zdCBJT1ZfTUFYCglpb3ZlY3MgYXQgYSB0aW1lLgoJKFRvX0luZXRfQWRkcik6IE5vdyBhIHByb2NlZHVyZSBpbnN0ZWFkIG9mIGEgZnVuY3Rpb24sIG1vcmUgZWZmaWNpZW50LgoKCSogc29ja2V0LmM6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDUtMDktMDEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZm5hbWUtc2YuYWRiLCBtbGliLXRndC5hZHMsCgliYWNrX2VuZC5hZGIsIGNhc2luZy5hZGIsIGctZGVicG9vLmFkYiwgZy1leGNhY3QuYWRiLCBnLXNwaXBhdC5hZGIsCglnLXNwaXBhdC5hZHMsIGctdGhyZWFkLmFkYiwgbGliLWxpc3QuYWRiLCBtYWtldXRsLmFkYiwgbWxpYi5hZGIsCglvc2ludC5hZGIsIHBhci1jaDEwLmFkYiwgcGFyLWxvYWQuYWRiLCBwcmVwLmFkYiwgcHJqLmFkYiwgcHJqLWF0dHIuYWRzLAoJcHJqLWVudi5hZHMsIHByai1lcnIuYWRiLCBwcmotZXJyLmFkcywgcHJqLWV4dC5hZGIsIHByai1leHQuYWRzLAoJcHJqLW1ha3IuYWRiLCBwcmotbWFrci5hZHMsIHByai1wYXJzLmFkcywgcHJqLXBhcnQuYWRiLCBwcmotc3RydC5hZGIsCglwcmotdHJlZS5hZHMsIHByai11dGlsLmFkcywgc2VtX2Rpc3QuYWRiLCBzaW5wdXQtYy5hZHMsIHNpbnB1dC1sLmFkcywKCXNpbnB1dC1wLmFkcywgc3R5bGVnLWMuYWRzLCB4cl90YWJscy5hZGIsIHByai1hdHRyLXBtLmFkcywKCW1ha2VncHIuYWRiOiBSZW1vdmUgcmVkdW5kYW50IHVzZV9jbGF1c2VzLgoKMjAwNS0wOS0wMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy1zdG9lbGUuYWRzLCBzLXN0b3Bvby5hZHMsIHMtc3RyYXR0LmFkcywgcy1zdHJvcHMuYWRzLCBzLXVuc3R5cC5hZHMsCglzLXZhbGJvby5hZHMsIHMtdmFsY2hhLmFkcywgcy12YWxkZWMuYWRzLCBzLXZhbGVudS5hZHMsIHMtdmFsaW50LmFkcywKCXMtdmFsbGxkLmFkcywgcy12YWxsbGkuYWRzLCBzLXZhbGxsdS5hZHMsIHMtdmFscmVhLmFkcywgcy12YWx1bnMuYWRzLAoJcy12YWx1dGkuYWRzLCBzLXZhbHdjaC5hZHMsIHMtdmVib29wLmFkcywgcy12ZWN0b3IuYWRzLCBzLXZlcmNvbi5hZHMsCglzLXdjaGNudi5hZHMsIHMtd2NoY29uLmFkcywgcy13Y2hqaXMuYWRzLCBzLXdjaHN0dy5hZHMsIHMtd2Nod3RzLmFkcywKCXMtd2lkYm9vLmFkcywgcy13aWRjaGEuYWRzLCBzLXdpZGVudS5hZHMsIHMtd2lkbGxpLmFkcywgcy13aWRsbHUuYWRzLAoJcy13aWR3Y2guYWRzLCBzLXd3ZGNoYS5hZHMsIHMtd3dkZW51LmFkcywgcy13d2R3Y2guYWRzLCBzeXN0ZW0uYWRzLAoJdGFibGUuYWRzLCB0eXBlcy5hZHMsIHN5c3RlbS12bXNfNjQuYWRzLCBzLWNydGwtdm1zNjQuYWRzLAoJcy1hZGRvcGUuYWRzLCBzeXN0ZW0tZGFyd2luLXBwYy5hZHMsIHN5c3RlbS12eHdvcmtzLXg4Ni5hZHMsCglzLXZ4d29yay14ODYuYWRzLCBzeXN0ZW0tbGludXgtcHBjLmFkcywgaS12eHdvcmsteDg2LmFkcywKCWEtbnVtYXV4LWRhcndpbi5hZHMsIGEtY3JidGdvLmFkcywgYS1jcmJ0Z2suYWRzLCBhLWNyYmx0ci5hZHMsCglhLWNvcHJudS5hZHMsIGEtY29udmVjLmFkcywgYS1jb250YWkuYWRzLCBhLWNvaW52ZS5hZHMsIGEtY29oYXRhLmFkcywKCWEtY29oYW1hLmFkcywgYS1jaWhhbWEuYWRzLCBhLWNpZGxsaS5hZHMsIGEtY2RsaWxpLmFkcywKCWEtbnVtYXV4LWxpYmMteDg2LmFkcywgYS1udW1hdXgtdnh3b3Jrcy5hZHMsIHN5c3RlbS1saW51eC1pYTY0LmFkcywKCXN5c3RlbS1mcmVlYnNkLXg4Ni5hZHMsIHN5c3RlbS11bml4d2FyZS5hZHMsIHN5c3RlbS1seW54b3MtcHBjLmFkcywKCXN5c3RlbS1seW54b3MteDg2LmFkcywgc3lzdGVtLWxpbnV4LXg4Nl82NC5hZHMsIHN5c3RlbS10cnU2NC5hZHMsCglzLXZ4d29yay1hbHBoYS5hZHMsIHN5c3RlbS1haXguYWRzLCBzeXN0ZW0tdnh3b3Jrcy1zcGFyY3Y5LmFkcywKCXN5c3RlbS1zb2xhcmlzLXg4Ni5hZHMsIHN5c3RlbS1pcml4LW8zMi5hZHMsIHN5c3RlbS1pcml4LW4zMi5hZHMsCglzLXBhcmFtZS1ocHV4LmFkcywgc3lzdGVtLWhwdXguYWRzLCBzeXN0ZW0tdnh3b3Jrcy1tNjhrLmFkcywKCXMtdnh3b3JrLW02OGsuYWRzLCBzeXN0ZW0tbGludXgteDg2LmFkcywgc3lzdGVtLXZ4d29ya3MtbWlwcy5hZHMsCglzLXZ4d29yay1taXBzLmFkcywgc3lzdGVtLW9zMi5hZHMsIHN5c3RlbS1pbnRlcml4LmFkcywKCXMtdnh3b3JrLXBwYy5hZHMsIHN5c3RlbS1zb2xhcmlzLXNwYXJjLmFkcywgcy12eHdvcmstc3BhcmN2OS5hZHMsCglzeXN0ZW0tc29sYXJpcy1zcGFyY3Y5LmFkcywgcy1wYXJhbWUtdm1zLmFkcywgc3lzdGVtLXZtcy5hZHMsCglzLW9zaW50ZS1taW5ndy5hZHMsIHN5c3RlbS1taW5ndy5hZHMsIHMtcGFyYW1lLXZtcy1yZXN0cmljdC5hZHMsCglzeXN0ZW0tdm1zLXpjeC5hZHMsIHMtcGFyYW1lLWFlNjUzLmFkcywgc3lzdGVtLXZ4d29ya3MtcHBjLmFkcywKCXMtcGFyYW1lLXZ4d29ya3MuYWRzLCBzeXN0ZW0tdnh3b3Jrcy1hbHBoYS5hZHMsIGludGVyZmFjLXZtcy5hZHMsCglhLW51bWF1eC14ODYuYWRzLCBhLWFzdGFjby5hZHMsIGEtY2hhaGFuLmFkcywgYS1jaGFyYWMuYWRzLAoJYS1jaGxhdDEuYWRzLCBhLWNobGF0OS5hZHMsIGEtY29saXJlLmFkYiwgYS1jb2xpcmUuYWRzLCBhLWNvbWxpbi5hZHMsCglhLWN3aWxhMS5hZHMsIGEtY3dpbGE5LmFkcywgYWRhLmFkcywgYS1kZWNpbWEuYWRzLCBhLWV4ZXh0ci5hZGIsCglhLWZpbGljby5hZHMsIGEtZmluYWxpLmFkcywgYS1pbnRlcnIuYWRzLCBhLWlvZXhjZS5hZHMsIGEtZHlucHJpLmFkcywKCWEtbmdjZWZ1LmFkcywgYS1uZ2NlZnUuYWRiLCBhLW5nY290eS5hZGIsIGEtbmdjb3R5LmFkcywgYS1uZ2VsZnUuYWRzLAoJYS1udWRpcmEuYWRiLCBhLW51ZGlyYS5hZHMsIGEtbnVmbHJhLmFkYiwgYS1udW1hdXguYWRzLCBhLW51bWVyaS5hZHMsCglhLXJlYXRpbS5hZGIsIGEtc3RtYWNvLmFkcywgYS1zdG9yaW8uYWRzLCBhLXN0cmJvdS5hZHMsIGEtc3RyZWFtLmFkcywKCWEtc3RyZml4LmFkcywgYS1zdHJpbmcuYWRzLCBhLXN0cm1hcC5hZHMsIGEtc3Ryc2VhLmFkcywgYS1zdHJzdXAuYWRzLAoJYS1zdHJ1bmIuYWRzLCBhLXN0dW5hdS5hZHMsIGEtc3R3aWJvLmFkcywgYS1zdHdpZmkuYWRzLCBhLXN0d2ltYS5hZHMsCglhLXN0d2lzZS5hZHMsIGEtc3R3aXN1LmFkcywgYS1zdHdpdW4uYWRzLCBhLXN3bXdjby5hZHMsIGEtdGV4dGlvLmFkcywKCWNzZXRzLmFkcywgZGVidWcuYWRzLCBkZWMuYWRzLCBnLWN1cmV4Yy5hZHMsIGdldF90YXJnLmFkcywKCWctZXhjZXB0LmFkcywgc3lzdGVtLWxpbnV4LWhwcGEuYWRzLCBhLWNoYWNvbi5hZHMsIGEtd2lkY2hhLmFkcywKCWEtemNoYXJhLmFkcywgc3lzdGVtLWhwdXgtaWE2NC5hZHMsIGEtY2lvcm1hLmFkcywgYS1jb29ybWEuYWRzLAoJYS1jaW9ybXUuYWRzLCBhLWNvb3JtdS5hZHMsIGEtcmJ0Z3NvLmFkcywgYS1jaHpsYTEuYWRzLCBhLWNoemxhOS5hZHMsCglhLXN0emJvdS5hZHMsIGEtc3R6Zml4LmFkcywgYS1zdHptYXAuYWRzLCBhLXN0enNlYS5hZHMsIGEtc3R6c3VwLmFkcywKCWEtc3R6dW5iLmFkcywgYS1zd3VuYXUuYWRzLCBhLXN6dW5hdS5hZHMsIGduYXQuYWRzLCBnLXJlZ3BhdC5hZHMsCglnLXNwZWNoZS5hZHMsIGctc3BpdGJvLmFkcywgZy10YWJsZS5hZHMsIGctdGFzbG9jLmFkcywgZy10cmFzeW0uYWRzLAoJaS1jLmFkcywgaS1jcG9pbnQuYWRzLCBpLWNwcC5hZHMsIGktY3N0cmluLmFkcywgaS1mb3J0cmEuYWRzLAoJaW50ZXJmYWMuYWRzLCBpLW9zMmVyci5hZHMsIGktb3MybGliLmFkcywgaS1vczJzeW4uYWRzLCBpLW9zMnRoci5hZHMsCglpLXZ4d29yay5hZHMsIG91dHB1dC5hZHMsIHMtYXJpdDY0LmFkcywgcy1hdGFjY28uYWRzLCBzLWJvYXJvcC5hZHMsCglzLWNhc3V0aS5hZHMsIHMtY3J0bC5hZHMsIHMtZXhjdGFiLmFkcywgcy1leG5pbnQuYWRzLCBzLWV4bmxsZi5hZHMsCglzLWV4bmxsaS5hZHMsIHMtZXhwaW50LmFkcywgcy1leHBsbGkuYWRzLCBzLWV4cGxsdS5hZHMsIHMtZXhwbW9kLmFkcywKCXMtZXhwdW5zLmFkcywgcy1mYXRmbHQuYWRzLCBzLWZhdGdlbi5hZHMsIHMtZmF0bGZsLmFkcywgcy1mYXRsbGYuYWRzLAoJcy1mYXRzZmwuYWRzLCBzLWZpbmltcC5hZHMsIHMtZmlucm9vLmFkcywgcy1mb3JlLmFkcywgcy1nZXZlb3AuYWRzLAoJcy1odGFibGUuYWRzLCBzLWltZ2JpdS5hZHMsIHMtaW1nYm9vLmFkcywgcy1pbWdjaGEuYWRzLCBzLWltZ2RlYy5hZHMsCglzLWltZ2VudS5hZHMsIHMtaW1naW50LmFkcywgcy1pbWdsbGIuYWRzLCBzLWltZ2xsZC5hZHMsIHMtaW1nbGxpLmFkcywKCXMtaW1nbGx1LmFkcywgcy1pbWdsbHcuYWRzLCBzLWltZ3JlYS5hZHMsIHMtaW1ndW5zLmFkcywgcy1pbWd3Y2guYWRzLAoJcy1pbWd3aXUuYWRzLCBzLWlvLmFkcywgcy1tYWNjb2QuYWRzLCBzLW1hbnRpcy5hZHMsIHMtbWVtY29wLmFkcywKCXMtcGFjazAzLmFkcywgcy1wYWNrMDUuYWRzLCBzLXBhY2swNi5hZHMsIHMtcGFjazA3LmFkcywgcy1wYWNrMDkuYWRzLAoJcy1wYWNrMTAuYWRzLCBzLXBhY2sxMS5hZHMsIHMtcGFjazEyLmFkcywgcy1wYWNrMTMuYWRzLCBzLXBhY2sxNC5hZHMsCglzLXBhY2sxNS5hZHMsIHMtcGFjazE3LmFkcywgcy1wYWNrMTguYWRzLCBzLXBhY2sxOS5hZHMsIHMtcGFjazIwLmFkcywKCXMtcGFjazIxLmFkcywgcy1wYWNrMjIuYWRzLCBzLXBhY2syMy5hZHMsIHMtcGFjazI0LmFkcywgcy1wYWNrMjUuYWRzLAoJcy1wYWNrMjYuYWRzLCBzLXBhY2syNy5hZHMsIHMtcGFjazI4LmFkcywgcy1wYWNrMjkuYWRzLCBzLXBhY2szMC5hZHMsCglzLXBhY2szMS5hZHMsIHMtcGFjazMzLmFkcywgcy1wYWNrMzQuYWRzLCBzLXBhY2szNS5hZHMsIHMtcGFjazM2LmFkcywKCXMtcGFjazM3LmFkcywgcy1wYWNrMzguYWRzLCBzLXBhY2szOS5hZHMsIHMtcGFjazQwLmFkcywgcy1wYWNrNDEuYWRzLAoJcy1wYWNrNDIuYWRzLCBzLXBhY2s0My5hZHMsIHMtcGFjazQ0LmFkcywgcy1wYWNrNDUuYWRzLCBzLXBhY2s0Ni5hZHMsCglzLXBhY2s0Ny5hZHMsIHMtcGFjazQ4LmFkcywgcy1wYWNrNDkuYWRzLCBzLXBhY2s1MC5hZHMsIHMtcGFjazUxLmFkcywKCXMtcGFjazUyLmFkcywgcy1wYWNrNTMuYWRzLCBzLXBhY2s1NC5hZHMsIHMtcGFjazU1LmFkcywgcy1wYWNrNTYuYWRzLAoJcy1wYWNrNTcuYWRzLCBzLXBhY2s1OC5hZHMsIHMtcGFjazU5LmFkcywgcy1wYWNrNjAuYWRzLCBzLXBhY2s2MS5hZHMsCglzLXBhY2s2Mi5hZHMsIHMtcGFjazYzLmFkcywgcy1wYXJhbWUuYWRzLCBzLXBvb2dsby5hZHMsIHMtcG9vbG9jLmFkcywKCXMtcG9vc2l6LmFkcywgcy1wb3d0YWIuYWRzLCBzLXB1cmV4Yy5hZHMsIHMtc29wY28zLmFkcywgcy1zb3BjbzQuYWRzLAoJcy1zb3BjbzUuYWRzOiBNaW5vciByZWZvcm1hdHRpbmc6IHJlaW5kZW50IHByYWdtYSBQdXJlL1ByZWVsYWJvcmF0ZQoJYW5kIGFsd2F5cyB1c2UgdGhlIG5vIHBhcmFtZXRlciBmb3JtIGZvciBjb25zaXN0ZW5jeS4KCgkqIGduYXQtc3R5bGUudGV4aTogRG9jdW1lbnQgcnVsZXMgYWJvdXQgUHJlZWxhYm9yYXRlL1B1cmUgcHJhZ21hcy4KCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYmluZGUuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCShGaW5kX0VsYWJfT3JkZXIpOiBPdXRwdXQgd2FybmluZyBpZiAtcCB1c2VkIHdpdGggc3RhdGljIGVsYWIgb3JkZXIKCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogY2hlY2tzLmFkYiAoQ2hlY2tfTmVlZGVkKTogTmV3IHByb2NlZHVyZSwgZGVhbHMgd2l0aCByZW1vdmluZyBjaGVja3MKCWJhc2VkIG9uIGFuYWx5c2lzIG9mIHNob3J0LWNpcmN1aXRlZCBmb3Jtcy4gQWxzbyBnZW5lcmF0ZXMgd2FybmluZ3MgZm9yCglpbXByb3BlciB1c2Ugb2Ygbm9uLXNob3J0LWNpcmN1aXRlZCBmb3Jtcy4KCUNvZGUgY2xlYW4gdXBzLgoKMjAwNS0wOS0wMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLXp0ZXhpby5hZGIsIGEtdGV4dGlvLmFkYiwgYS13aXRlaW8uYWRiOiBSZXBsYWNlIGJhZCByYW5nZSBjaGVja3MKCXdpdGggJ1ZhbGlkIHRlc3RzLgoKMjAwNS0wOS0wMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBlcnJvdXQuYWRzLCBlcnJvdXQuYWRiIChGaXggRXJyb3JfTXNnX0YpOiBGaXggaW1wbGVtZW50YXRpb24gdG8gbWVldAoJc3BlYy4KCUltcGxlbWVudCBuZXcgaW5zZXJ0aW9uIGNoYXIgPCAoY29uZGl0aW9uYWwgd2FybmluZykKCSogZXJydXRpbC5hZGIsIGVycm91dGMuYWRiOiBJbXBsZW1lbnQgbmV3IGluc2VydGlvbiBjaGFyIDwKCShjb25kaXRpb25hbCB3YXJuaW5nKS4KCSogc2VtX2VsYWIuYWRiLCBwcmotZGVjdC5hZGIsIGVycm91dGMuYWRzLCBlcnJfdmFycy5hZHMKCShFcnJvcl9Nc2dfV2Fybik6IE5ldyB2YXJpYWJsZSBmb3IgPCBpbnNlcnRpb24gY2hhci4KCSogcHJqLW5tc2MuYWRiOiBJbXBsZW1lbnQgbmV3IGVycm91dCBpbnNlcnRpb24gY2hhciA8IChjb25kaXRpb25hbAoJd2FybmluZykuCgkoQ2hlY2tfRm9yX1NvdXJjZSk6IENoYW5nZSB2YWx1ZSBvZiBTb3VyY2VfSWQgb25seSBhZnRlciB0aGUgY3VycmVudAoJc291cmNlIGhhcyBiZWVuIGRlYWx0IHdpdGguCgoyMDA1LTA5LTAxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogZXhwX2F0dHIuYWRiOiBIYW5kbGUgdmF4IGZwdCBmb3IgJ1ZhbGlkIGF0dHJpYnV0ZQoJKiBleHBfdmZwdC5hZHMsIGV4cF92ZnB0LmFkYjogKEV4cGFuZF9WYXhfVmFsaWQpOiBOZXcgcHJvY2VkdXJlCgkqIHMtdmFmbG9wLXZtcy1hbHBoYS5hZGIsIHMtdmFmbG9wLmFkcywgcy12YWZsb3AuYWRiCgkoVmFsaWRfRCwgVmFsaWRfRiwgVmFsaWRfRyk6IE5ldyBmdW5jdGlvbnMKCjIwMDUtMDktMDEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IElmIGFuIGFjdHVhbCBpcyBhIGZ1bmN0aW9uIGNhbGwgcmV3cml0dGVuCglmcm9tIG9iamVjdCBub3RhdGlvbiwgdGhlIG9yaWdpbmFsIG5vZGUgaXMgdW5hbmFseXplZCBhbmQgY2FycmllcyBubwoJc2VtYW50aWMgaW5mb3JtYXRpb24sIHNvIHRoYXQgYWNjZXNzaWJsaXR5IGNoZWNrcyBtdXN0IGJlIHBlcmZvcm1lZCBvbgoJdGhlIHR5cGUgb2YgdGhlIGFjdHVhbCBpdHNlbGYuCgkoRXhwYW5kX05fU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IENoYW5nZSBsYXN0IGFjdHVhbCBwYXJhbWV0ZXIgZm9yCgljb21wYXRpYmlsaXR5IHdpdGggQnVpbGRfUHJvdGVjdGVkX1N1Yl9TcGVjaWZpY2F0aW9uLgoJKENoZWNrX092ZXJyaWRpbmdfSW5oZXJpdGVkX0ludGVyZmFjZXMpOiBBZGQgc3Vwb3J0IHRvIGhhbmRsZQoJb3ZlcmxvYWRlZCBwcmltaXRpdmVzLgoJKFJlZ2lzdGVyX0ludGVyZmFjZV9EVF9FbnRyeSk6IFVzZSB0aGUgbmV3IG5hbWUgb2YgdGhlIGZvcm1hbAoJdGhlIHRoZSBjYWxscyB0byBFeHBhbmRfSW50ZXJmYWNlX1RodW5rCgoJKiBleHBfZGJ1Zy5hZHM6IEF1Z21lbnQgY29tbWVudHMgb24gZW5jb2Rpbmcgb2YgcHJvdGVjdGVkIHR5cGVzIHRvCglpbmNsdWRlIHRoZSBnZW5lcmF0aW9uIG9mIGRpc3BhdGNoaW5nIHN1YnByb2dyYW1zIHdoZW4gdGhlIHR5cGUKCWltcGxlbWVudHMgYXQgbGVhc3Qgb25lIGludGVyZmFjZS4KCgkqIGxpYi5hZHM6IEV4dGVuZCBpbmZvcm1hdGlvbiBpbiBMb2FkX1N0YWNrIHRvIGluY2x1ZGUgd2hldGhlciBhIGdpdmVuCglsb2FkIGNvbWVzIGZyb20gYSBMaW1pdGVkX1dpdGhfQ2xhdXNlLgoKCSogbGliLWxvYWQuYWRiIChGcm9tX0xpbWl0ZWRfV2l0aF9DaGFpbik6IE5ldyBwcmVkaWNhdGUgdG8gZGV0ZXJtaW5lCgl3aGV0aGVyIGEgcG90ZW50aWFsIGNpcmN1bGFyaXR5IGlzIGhhcm1sZXNzLCBiZWNhdXNlIGl0IGluY2x1ZGVzIHVuaXRzCglsb2FkZWQgdGhyb3VnaCBhIGxpbWl0ZWRfd2l0aCBjbGF1c2UuIEV4dGVuZHMgcHJldmlvdXMgdHJlYXRtZW50IHdoaWNoCglkaWQgbm90IGhhbmRsZSBwcm9wZXJseSBhcmJpdHJhcnkgY29tYmluYXRpb25zIG9mIGxpbWl0ZWQgYW5kCglub24tbGltaXRlZCBjbGF1c2VzLgoKMjAwNS0wOS0wMSAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiBleHBfZGJ1Zy5hZGIgKEdldF9FbmNvZGVkX05hbWUpOiBGaXhlZCBidWcgdGhhdCBjYXVzZWQgYmlhaXNlZCB0eXBlcwoJdG8gYmUgZW5jb2RlZCBhcyB0eXBfX19YQkxVX2xvd2VyYm91bmRfX3VwcGVyYm91bmQgaW5zdGVhZCBvZgoJdHlwX19fWEJfbG93ZXJib3VuZF9fdXBwZXJib3VuZC4KCjIwMDUtMDktMDEgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzdC5hZGIgKEFkZF9SQUNXX1R5cGVDb2RlLCBBZGRfUkFTX1R5cGVDb2RlKTogRG8gbm90IGdlbmVyYXRlCglkdW1teSBhY2Nlc3MgZm9ybWFsIGZvciBSQUNXL1JBUyBUeXBlQ29kZSBUU1MuCgkoQnVpbGRfVHlwZUNvZGVfQ2FsbCk6IERvIG5vdCBnZW5lcmF0ZSBkdW1teSBudWxsIGFjY2VzcyBhY3R1YWwgZm9yCgljYWxscyB0byB0aGUgVHlwZUNvZGUgVFNTLgoKMjAwNS0wOS0wMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2ludHIuYWRiIChFeHBhbmRfU291cmNlX05hbWUpOiBGb3IgRW5jbG9zaW5nX0VudGl0eSwgZ2VuZXJhdGUKCWZ1bGx5IHF1YWxpZmllZCBuYW1lLCB0byBkaXN0aW5ndWlzaCBpbnN0YW5jZXMgd2l0aCB0aGUgc2FtZSBsb2NhbCBuYW1lLgoKCSogZy1zb3VpbmYuYWRzIChFbmNsb3NpbmdfRW50aXR5KTogRG9jdW1lbnQgdGhhdCBlbnRpdHkgbmFtZSBpcyBub3cKCWZ1bGx5IHF1YWxpZmllZC4KCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXhwX3Bha2QuYWRiIChDcmVhdGVfUGFja2VkX0FycmF5X1R5cGUpOiBQcm9wZXJseSBoYW5kbGUgdmVyeSBsYXJnZQoJcGFja2VkIGFycmF5cy4KCjIwMDUtMDktMDEgIEplcm9tZSBMYW1ib3VyZyAgPGxhbWJvdXJnQGFkYWNvcmUuY29tPgoKCSogZy1leHBlY3QuYWRiIChOb25fQmxvY2tpbmdfU3Bhd24pOiBJbml0aWFsaXplIHRoZSBmaWx0ZXJzIGZpZWxkIHRvCgkoRnJlZSk6IE5ldyBkZWFsbG9jYXRpb24gcHJvY2VkdXJlIGZvciBmaWx0ZXIgZWxlbWVudHMKCShDbG9zZSk6IERlYWxsb2NhdGUgYW55IGV4aXN0aW5nIGZpbHRlciBmb3IgdGhlIGNvbmNlcm5lZCBjb25uZWN0aW9uCgoyMDA1LTA5LTAxICBMYXVyZW50IFBhdXRldCAgPHBhdXRldEBhZGFjb3JlLmNvbT4KCgkqIGctcGVoYWdlLmFkcywgZy1wZWhhZ2UuYWRiIChTZWxlY3RfQ2hhcl9Qb3NpdGlvbik6IFdoZW4gbm8gY2hhcmFjdGVyCglwb3NpdGlvbiBzZXQgaXMgcHJvdmlkZWQsIHdlIGNvbXB1dGUgb25lIGluIG9yZGVyIHRvIHJlZHVjZSB0aGUgbWF4aW11bQoJbGVuZ3RoIG9mIHRoZSBrZXlzLiAgVGhpcyBjb21wdXRhdGlvbiBmaXJzdCBzZWxlY3RzIGEgY2hhcmFjdGVyCglwb3NpdGlvbiBiZXR3ZWVuIDEgYW5kIHRoZSBtaW5pbXVtIGxlbmd0aCBvZiB0aGUga2V5cyBpbiBvcmRlciB0bwoJYXZvaWQgcmVkdWNpbmcgb25lIG9mIHRoZSBrZXlzIHRvIGFuIGVtcHR5IHN0cmluZy4KCShJbml0aWFsaXplLCBDb21wdXRlKTogV2hlbiB0aGUgcmF0aW8gViB0byBLIGlzIHRvbyBsb3csIHRoZSBhbGdvcml0aG0KCWRvZXMgbm90IGNvbnZlcmdlLiBUaGUgaW5pdGlhbGl6YXRpb24gcHJvY2VkdXJlIG5vdyBjb21lcyB3aXRoIGEKCW1heGltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMgc3VjaCB0aGF0IHdoZW4gZXhjZWVkZWQsIGFuIGV4Y2VwdGlvbiBpcwoJcmFpc2VkIGluIENvbXB1dGUuIFRoZSB1c2VyIGNhbiBpbml0aWFsaXplIHRoaXMgcmF0aW8gdG8gYW5vdGhlciB2YWx1ZQoJYW5kIHRyeSBhZ2FpbgoJUmVmb3JtYXRpbmcgYW5kIHVwZGF0ZWQgaGVhZGVycy4KCjIwMDUtMDktMDEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGl0eXBlcy5hZHMsIGl0eXBlcy5hZGIgKENyZWF0ZV9OdWxsX0V4Y2x1ZGluZ19JdHlwZSk6IE5ldyBzdWJwcm9ncmFtCgl0aGF0IGdpdmVuIGFuIGVudGl0eSBUIGNyZWF0ZXMgYW5kIHJldHVybnMgYW4gSXR5cGUgdGhhdCBkdXBsaWNhdGVzIHRoZQoJY29udGVudHMgb2YgVC4gVGhlIHJldHVybmVkIEl0eXBlIGhhcyB0aGUgbnVsbC1leGNsdXNpb24KCWF0dHJpYnV0ZSBzZXQgdG8gVHJ1ZSwgYW5kIGl0cyBFdHlwZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBUCgl0byBrZWVwIHRoZSBhc3NvY2lhdGlvbiBiZXR3ZWVuIHRoZSB0d28gZW50aXRpZXMuCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZQoKCSogc2VtX2FnZ3IuYWRiIChDaGVja19DYW5fTmV2ZXJfQmVfTnVsbCwKCUFnZ3JlZ2F0ZV9Db25zdHJhaW50X0NoZWNrcywgUmVzb2x2ZV9BZ2dyZWdhdGUsCglSZXNvbHZlX0FycmF5X0FnZ3JlZ2F0ZSwgUmVzb2x2ZV9SZWNvcmRfQWdncmVnYXRlKTogQ29kZSBjbGVhbnVwLgoKCSogc2VtX2NoNS5hZGIgKEFuYWx5emVfQXNzaWdubWVudCk6IENvZGUgY2xlYW51cC4KCjIwMDUtMDktMDEgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGFkYWNvcmUuY29tPgoKCSogbGF5b3V0LmFkYiAoU09fUmVmX0Zyb21fRXhwcik6IENoYW5nZSBTdWJ0eXBlX01hcmsgdG8KCVJlc3VsdF9EZWZpbml0aW9uLgoKCSogcGFyLWNoNi5hZGIgKFBfU3VicHJvZ3JhbSk6IEhhbmRsZSBwYXJzaW5nIG9mIEFjY2Vzc19EZWZpbml0aW9ucyBpbgoJZnVuY3Rpb24gc3BlY3MuCglDYWxsIFNldF9SZXN1bHRfRGVmaW5pdGlvbiBpbnN0ZWFkIG9mIFNldF9TdWJ0eXBlX01hcmsuCgkoUF9TdWJwcm9ncmFtX1NwZWNpZmljYXRpb24pOiBBZGQgcGFyc2luZyBvZiBhbm9ueW1vdXMgYWNjZXNzIHJlc3VsdAoJcGx1cyBudWxsIGV4Y2x1c2lvbnMuIENhbGwgU2V0X1Jlc3VsdF9EZWZpbml0aW9uIGluc3RlYWQgb2YKCVNldF9TdWJ0eXBlX01hcmsuCgoJKiBwYXItY2gzLmFkYjogQWRkIHN1cHBvcnQgZm9yIExJTUlURUQgTkVXIGZvciBBZGEgMjAwNSBBSS00MTkKCShQX0FjY2Vzc19UeXBlX0RlZmluaXRpb24pOiBBZGQgcGFyc2luZyBmb3IgYW4gYW5vbnltb3VzIGFjY2VzcyByZXN1bHQKCXN1YnR5cGUsIHBsdXMgcGFyc2luZyBmb3IgbnVsbCBleGNsdXNpb25zLiBDYWxsIFNldF9SZXN1bHRfRGVmaW5pdGlvbgoJaW5zdGVhZCBvZiBTZXRfU3VidHlwZV9NYXJrLgoKCSogc2luZm8uYWRiOiBBZGQgc3VwcG9ydCBmb3IgTElNSVRFRCBORVcgZm9yIEFkYSAyMDA1IEFJLTQxOQoJKE51bGxfRXhjbHVzaW9uX1ByZXNlbnQpOiBBbGxvdyB0aGlzIGZsYWcgZm9yIE5fRnVuY3Rpb25fU3BlY2lmaWNhdGlvbi4KCShSZXN1bHRfRGVmaW5pdGlvbik6IE5ldyBmdW5jdGlvbiBmb3IgTl9GdW5jdGlvbl9TcGVjaWZpY2F0aW9ucy4KCShTdWJ0eXBlX01hcmspOiBObyBsb25nZXIgYWxsb3dlZCBmb3IgTl9BY2Nlc3NfRnVuY3Rpb25fRGVmaW5pdGlvbiBhbmQKCU5fRnVuY3Rpb25fU3BlY2lmaWNhdGlvbi4KCShTZXRfTnVsbF9FeGNsdXNpb25fUHJlc2VudCk6IEFsbG93IHRoaXMgZmxhZyBmb3IKCU5fRnVuY3Rpb25fU3BlY2lmaWNhdGlvbi4KCShTZXRfUmVzdWx0X0RlZmluaXRpb24pOiBOZXcgcHJvY2VkdXJlIGZvciBOX0Z1bmN0aW9uX1NwZWNpZmljYXRpb25zLgoJKFNldF9TdWJ0eXBlX01hcmspOiBObyBsb25nZXIgYWxsb3dlZCBmb3IgTl9BY2Nlc3NfRnVuY3Rpb25fRGVmaW5pdGlvbgoJYW5kIE5fRnVuY3Rpb25fU3BlY2lmaWNhdGlvbi4KCgkqIHNpbmZvLmFkczogVXBkYXRlIGdyYW1tYXIgcnVsZXMgZm9yIDkuNy4yOiBFbnRyeV9DYWxsX0FsdGVybmF0aXZlLAoJUHJvY2VkdXJlX09yX0VudHJ5X0NhbGw7IDkuNy40OiBUcmlnZ2VyaW5nX1N0YXRlbWVudC4KCUFkZCBzdXBwb3J0IGZvciBMSU1JVEVEIE5FVyBmb3IgQWRhIDIwMDUgQUktNDE5CglVcGRhdGUgdGhlIHN5bnRheCBvZiBQQVJBTUVURVJfQU5EX1JFU1VMVF9QUk9GSUxFIHRvIHJlZmxlY3QgdGhlIG5ldwoJc3ludGF4IGZvciBhbm9ueW1vdXMgYWNjZXNzIHJlc3VsdHMuCglSZXBsYWNlIFN1YnR5cGVfTWFyayBmaWVsZCBieSBSZXN1bHRfRGVmaW5pdGlvbiBpbgoJTl9GdW5jdGlvbl9TcGVjaWZpY2F0aW9uIGFuZCBOX0FjY2Vzc19EZWZpbml0aW9uIHNwZWNzLgoJQWRkIE51bGxfRXhjbHVzaW9uX1ByZXNlbnQgdG8gc3BlYyBvZiBOX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24uCgkoUmVzdWx0X0RlZmluaXRpb24pOiBOZXcgZnVuY3Rpb24gZm9yIE5fRnVuY3Rpb25fU3BlY2lmaWNhdGlvbiBhbmQKCU5fQWNjZXNzX0Z1bmN0aW9uX0RlZmluaXRpb24uCgkoU2V0X1Jlc3VsdF9EZWZpbml0aW9uKTogTmV3IHByb2NlZHVyZSBmb3IgTl9GdW5jdGlvbl9TcGVjaWZpY2F0aW9uIGFuZAoJTl9BY2Nlc3NfRnVuY3Rpb25fRGVmaW5pdGlvbi4KCgkqIHNwcmludC5hZGIgKFNfUHJpbnRfTm9kZV9BY3R1YWwpOiBDaGFuZ2UgU3VidHlwZV9NYXJrIGNhbGxzIHRvCglSZXN1bHRfRGVmaW5pdGlvbiBmb3IgY2FzZXMgb2YgTl9BY2Nlc3NfRnVuY3Rpb25fRGVmaW5pdGlvbiBhbmQKCU5fRnVuY3Rpb25fU3BlY2lmaWNhdGlvbi4KCVByaW50ICJub3QgbnVsbCIgaWYgTnVsbF9FeGNsdXNpb25fUHJlc2VudCBvbiBOX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24uCgoyMDA1LTA5LTAxICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGxpYi13cml0LmFkYjogVXBkYXRlIENvcHlyaWdodCBub3RpY2UKCShXcml0ZV9XaXRoX0xpbmVzKTogT24gcGxhdGZvcm1zIHdoZXJlIGZpbGUgbmFtZXMgYXJlIGNhc2UtaW5zZW5zaXRpdmUsCglyZWNvcmQgdGhlIGZpbGUgbmFtZXMgaW4gbG93ZXIgY2FzZS4KCShXcml0ZV9BTEkpOiBGb3IgRCBsaW5lcywgb24gcGxhdGZvcm1zIHdoZXJlIGZpbGUgbmFtZXMgYXJlCgljYXNlLWluc2Vuc2l0aXZlLCByZWNvcmQgdGhlIGZpbGUgbmFtZXMgaW4gbG93ZXIgY2FzZS4KCjIwMDUtMDktMDEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFkYWNvcmUuY29tPgoKCSogbGliLXhyZWYuYWRiIChPdXRwdXRfT3ZlcnJpZGRlbl9PcCk6IERpc3BsYXkgaW5mb3JtYXRpb24gb24KCW92ZXJyaWRkZW4gb3BlcmF0aW9uLgoKCSogbGliLXhyZWYuYWRzOiBBZGQgZG9jdW1lbnRhdGlvbiBvbiBvdmVycmlkZGVuIG9wZXJhdGlvbnMuCgoJKiBhbGkuYWRzIChYcmVmX0VudGl0eV9SZWNvcmQpOiBBZGQgc3VwcG9ydCBmb3Igc3RvcmluZyB0aGUgb3ZlcnJpZGluZwoJaW5mb3JtYXRpb24uCgoJKiBhbGkuYWRiIChHZXRfVHlwZXJlZik6IE5ldyBzdWJwcm9ncmFtLiBBZGRzIHN1cHBvcnQgZm9yIHBhcnNpbmcgdGhlCglvdmVycmlkaW5nIGVudGl0eSBpbmZvcm1hdGlvbi4KCjIwMDUtMDktMDEgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWxpYi1wcmouYWRiIChDb3B5X0ludGVyZmFjZV9Tb3VyY2VzKTogQ29weSBhbGwgaW50ZXJmYWNlIHNvdXJjZXMsCglpbmNsdWRpbmcgdGhvc2UgdGhhdCBhcmUgaW5oZXJpdGVkLgoKMjAwNS0wOS0wMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBvcHQuYWRzLCBvcHQuYWRiOiBBZGQgbmV3IHN3aXRjaGVzIERlYnVnX1ByYWdtYXNfRW5hYmxlZFtfQ29uZmlnXQoKCSogcGFyLXByYWcuYWRiOiBJbXBsZW1lbnQgbmV3IHByYWdtYSBEZWJ1Z19Qb2xpY3kKCgkqIHNlbV9wcmFnLmFkYiBJbXBsZW1lbnQgbmV3IHByYWdtYSBEZWJ1Z19Qb2xpY3kKCShBbmFseXplX1ByYWdtYSwgY2FzZSBQYWNrKTogZG8gbm90IGxldCBwcmFnbWEgUGFjayBvdmVycmlkZSBhbiBleHBsaWNpdAoJQ29tcG9uZW50X1NpemUgYXR0cmlidXRlIHNwZWNpZmljYXRpb24uIEdpdmUgd2FybmluZyBmb3IgaWdub3JlZCBwcmFnbWEKCVBhY2suCgoJKiBzbmFtZXMuaCwgc25hbWVzLmFkcywgc25hbWVzLmFkYjogSW50cm9kdWNlIGVudHJpZXMgaW4KCVByZXNldF9OYW1lcyBmb3IgTmFtZV9EaXNwX0FzeW5jaHJvbm91c19TZWxlY3QsCglOYW1lX0Rpc3BfQ29uZGl0aW9uYWxfU2VsZWN0LCBOYW1lX0Rpc3BfR2V0X1ByaW1fT3BfS2luZCwKCU5hbWVfRGlzcF9UaW1lZF9TZWxlY3QuCglOZXcgcHJhZ21hIERlYnVnX1BvbGljeQoKCSogc3dpdGNoLWMuYWRiIChTY2FuX0Zyb250X0VuZF9Td2l0Y2hlcyk6IFNldCBBZGEgMjAwNSBtb2RlCglleHBsaWNpdGx5LgoJU3dpdGNoIC1nbmF0YSBhbHNvIHNldHMgRGVidWdfUHJhZ21hc19FbmFibGVkCgoJKiBzZW0uYWRiLCBwYXIuYWRiIChTZXRfT3B0X0NvbmZpZ19Td2l0Y2gpOiBBZGQgcGFyYW1ldGVyIE1haW5fVW5pdCB0bwoJaGFuZGxlIGFuIGV4cGxpY2l0IC1nbmF0YSB3aGVuIGNvbXBpbGluZyBwcmVkZWZpbmVkIGZpbGVzLgoKMjAwNS0wOS0wMSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmotZW52LmFkYiAoU2V0X0FkYV9QYXRocy5BZGQuUmVjdXJzaXZlX0FkZCk6IERvIG5vdCBhZGQgdGhlIG9iamVjdAoJZGlyZWN0b3JpZXMgb2YgcHJvamVjdHMgdGhhdCBoYXZlIG5vIEFkYSBzb3VyY2VzLgoKMjAwNS0wOS0wMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzY25nLmFkYiAoQ2hlY2tfRW5kX09mX0xpbmUpOiBDb3VudCBjaGFyYWN0ZXJzLCByYXRoZXIgdGhhbiBieXRlcwoJKG1ha2VzIGEgZGlmZmVyZW5jZSBmb3Igd2lkZSBjaGFyYWN0ZXJzKQoKCSogd2lkZWNoYXIuYWRiLCB3aWRlY2hhci5hZHM6CglBZGQgV2lkZV9DaGFyX0J5dGVfQ291bnQgZmVhdHVyZSB0byBjb3VudCBjaGFycyB2cyBieXRlcwoKMjAwNS0wOS0wMSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzZW1fYXR0ci5hZGIgKFJlc29sdmVfQXR0cmlidXRlLCBjYXNlICdBZGRyZXNzKTogRm9yIGFuIGlsbGVnYWwKCSdBZGRyZXNzIGF0dHJpYnV0ZSByZWZlcmVuY2Ugd2l0aCBhbiBvdmVybG9hZGVkIHByZWZpeCwgdXNlIHRoZQoJbG9jYXRpb24gb2YgdGhlIHByZWZpeCAobm90IHRoZSBsb2NhdGlvbiBvZiB0aGUgYXR0cmlidXRlIHJlZmVyZW5jZSkgYXMKCXRoZSBlcnJvciBsb2NhdGlvbi4KCShBbmFseXplX0F0dHJpYnV0ZSwgY2FzZSAnU2l6ZSk6IFRoZSBuYW1lIG9mIGFuIGVudW1lcmF0aW9uIGxpdGVyYWwsIG9yCglhIGZ1bmN0aW9uIHJlbmFtaW5nIHRoZXJlb2YsIGlzIGEgdmFsaWQgcHJlZml4IGZvciAnU2l6ZSAod2hlcmUgaXQgaXMKCWludGVwcmV0ZWQgYXMgYSBmdW5jdGlvbiBjYWxsKS4KCShTdGF0aWNhbGx5X0Rlbm90ZXNfRW50aXR5KTogTmV3IHByZWRpY2F0ZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUKCXByZWZpeCBvZiBhbiBhcnJheSBhdHRyaWJ1dGUgY2FuIGJlIGNvbnNpZGVyZWQgc3RhdGljLgoKCVBSIGFkYS85MDg3CgkoRXZhbF9BdHRyKTogRml4IGZhaWx1cmUgdG8gZXZhbHVhdGUgQ29tcG9uZW50X1NpemUgZm9yCgl1bmNvbnN0cmFpbmVkIGFycmF5cyAocmVzdWx0ZWQgaW4gd3JvbmcgdmFsdWUgaW4gcGFja2VkIGNhc2UsIHNpbmNlCgliYWNrIGVuZCBjYW5ub3QgaGFuZGxlIHRoaXMgY2FzZSkKCjIwMDUtMDktMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX2NhdC5hZGIgKENoZWNrX0NhdGVnb3JpemF0aW9uX0RlcGVuZGVuY2llcyk6IEFkZCBtb3JlIGRldGFpbCB0bwoJZXJyb3IgbXNncyBmb3IgbW9zdCBjb21tb24gY2FzZXMuCglVc2UgbmV3IGVycm91dCBpbnNlcnRpb24gY2hhciA8IChjb25kaXRpb25hbCB3YXJuaW5nKQoKMjAwNS0wOS0wMSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEwLmFkYiAoSW5fQ2hhaW4pOiBNb3ZlZCBmcm9tIHRoZSBzY29wZSBvZiBhIHN1YnByb2dyYW0gdG8KCWJlY29tZSBsb2NhbCB0byB0aGUgd2hvbGUgcGFja2FnZS4KCShJbnN0YWxsX0xpbWl0ZWRfV2l0aGVkX1VuaXQpOiBJbnN0ZWFkIG9mIHVuY2hhaW5pbmcgcmVhbCBlbnRpdGllcyBpZgoJdGhlIHBhY2thZ2Ugd2FzIGFscmVhZHkgYW5hbHl6ZWQgdGhlIG5ldyBhbGdvcml0aG0gInJlcGxhY2VzIiB0aGUKCXJlYWwgZW50aXRpZXMgYnkgdGhlIHNoYWRvdyBvbmVzLiBUaGlzIGlzIHJlcXVpcmVkIHRvIGVuc3VyZSB0aGF0Cgl0aGUgb3JkZXIgb2YgdGhlc2UgZW50aXRpZXMgaW4gdGhlIGhvbW9ueW0gY2hhaW5zIGRvZXMgbm90IGNoYW5nZTsKCW90aGVyd2lzZSB3ZSBjYW4gaGF2ZSB1bmRlZmluZWQgcmVmZXJlbmNlcyBhdCBsaW5raW5nIHRpbWUgYmVjYXVzZQoJaW4gY2FzZSBvZiBjb25mbGljdHMgdGhlIGV4dGVybmFsIG5hbWUgb2YgdGhlIGVudGl0aWVzIHdpbGwgaGF2ZQoJYSBzdWZmaXggdGhhdCBkZXBlbmRzIG9uIHRoZSBvcmRlciBvZiB0aGUgZW50aXRpZXMgaW4gdGhlIGNoYWluLgoJKFJlbW92ZV9MaW1pdGVkX1dpdGhfQ2xhdXNlKTogQ29tcGxlbWVudGFyeSBjb2RlIHRoYXQgY29tcGxldGVzIHRoZQoJbmV3IGFsZ29yaXRobSBhbmQgcmVwbGFjZXMgdGhlIHNoYWRvdyBlbnRpdGllcyBieSB0aGUgcmVhbCBvbmVzLgoJKEluc3RhbGxfTGltaXRlZF9XaXRoZWRfVW5pdCk6IFdoZW4gdW5jaGFpbmluZyBlbnRpdGllcyBiZWZvcmUgdGhlCglpbnN0YWxsYXRpb24gb2YgdGhlIHNoYWRvdyBlbnRpdGllcywgb25seSByZWd1bGFyIGVudGl0aWVzIG9mIHRoZQoJcHVibGljIHBhcnQgbXVzdCBiZSB0YWtlbiBpbnRvIGFjY291bnQuIFRoaXMgaXMgcmVxdWlyZWQgdG8KCWtlZXAgdGhpcyByb3V0aW5lIGluIHN5bmNoIHdpdGggdGhlIHdvcmsgZG9uZSBieSBSZW1vdmVfTGltaXRlZF8KCVdpdGhfQ2xhdXNlCgkoSW5zdGFsbF9MaW1pdGVkX1dpdGhfQ2xhdXNlKTogSW50cm9kdWNlIGltcGxpY2l0IGxpbWl0ZWRfd2l0aF9jbGF1c2UKCWV2ZW4gaWYgdW5pdCBpcyBhbmFseXplZCwgYmVjYXVzZSB0aGUgYW5hbHlzaXMgb2YgdGhlIHVuaXQgaXMKCWlkZW1wb3RlbnQgaW4gYW55IGNhc2UsIGFuZCB0aGUgbGltaXRlZCB2aWV3IG9mIHRoZSB1bml0IG1heSBoYXZlIHRvCgliZSBpbnN0YWxsZWQgZm9yIHByb3BlciB2aXNpYmlsaXR5LgoJKEV4cGFuZF9MaW1pdGVkX1dpdGhfQ2xhdXNlKTogRXZlbiBpZiB0aGUgdW5pdCBpbiB0aGUgaW1wbGljaXQKCXdpdGhfY2xhdXNlIGhhcyBiZWVuIGFuYWx5emVkIGFscmVhZHksIGEgbGltaXRlZCB2aWV3IG9mIHRoZSBwYWNrYWdlCgltdXN0IGJlIGJ1aWx0IGZvciB0aGUgY3VycmVudCBjb250ZXh0LCBpZiBpdCBkb2VzIG5vdCBleGlzdCB5ZXQuCgoyMDA1LTA5LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoSW5zdGFudGlhdGVfU3VicHJvZ3JhbV9Cb2R5KTogV2hlbiBjcmVhdGluZyB0aGUKCWRlZmluaW5nIGVudGl0eSBmb3IgdGhlIGluc3RhbmNlIGJvZHksIG1ha2UgYSBuZXcgZGVmaW5pbmcgaWRlbnRpZmllcgoJcmF0aGVyIHRoYW4gY29weWluZyB0aGUgZW50aXR5IG9mIHRoZSBzcGVjLCB0byBwcmV2ZW50IGFjY2lkZW50YWwKCXNoYXJpbmcgb2YgdGhlIGVudGl0eSBsaXN0LgoJKENoZWNrX1ByaXZhdGVfVmlldyk6IFdoZW4gZXhjaGFuZ2luZyB2aWV3cyBvZiBwcml2YXRlIHR5cGVzLCBidWlsZCB0aGUKCWxpc3Qgb2YgZXhjaGFuZ2VkIHZpZXdzIGFzIGEgc3RhY2ssIHRvIGVuc3VyZSB0aGF0IG9uIGV4aXQgdGhlIGV4Y2hhbmdlcwoJYXJlIHVuZG9uZSBpbiB0aGUgcHJvcGVyIG9yZGVyLgoJKEFuYWx5emVfUGFja2FnZV9JbnN0YW50aWF0aW9uLCBBbmFseXplX1N1YnByb2dyYW1fSW5zdGFudGlhdGlvbik6CglSZXN0b3JlIHRoZSBjb21waWxhdGlvbiBlbnZpcm9ubWVudCBpbiBjYXNlIG9mIGluc3RhbnRpYXRpb25fZXJyb3IuCgkoQW5hbHl6ZV9HZW5lcmljX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBIYW5kbGUgY3JlYXRpb24gb2YgdHlwZSBlbnRpdHkKCWZvciBhbiBhbm9ueW1vdXMgYWNjZXNzIHJlc3VsdC4KCShJbnN0YW50aWF0ZV9HZW5lcmljX1N1YnByb2dyYW0pOiBTdWJ0eXBlX01hcmsgPT4gUmVzdWx0X0RlZmluaXRpb24KCShGb3JtYWxfRW50aXR5KTogSGFuZGxlIHByb3Blcmx5IHRoZSBjYXNlIG9mIGEgZm9ybWFsIHBhY2thZ2UgdGhhdAoJZGVub3RlcyBhIGdlbmVyaWMgcGFja2FnZSByZW5hbWluZy4KCjIwMDUtMDktMDEgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMy5hZGIgKEFuYWx5emVfRW51bWVyYXRpb25fUmVwcmVzZW50YXRpb25fQ2xhdXNlKTogUmVqZWN0IHRoZQoJY2xhdXNlIGlmIHRoZSBhcnJheSBhZ2dyZWdhdGUgaXMgc3Vycm91bmRlZCBieSBwYXJlbnRoZXNlcy4KCjIwMDUtMDktMDEgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDMuYWRzLCBzZW1fY2gzLmFkYiAoQW5hbHl6ZV9PYmplY3RfRGVjbGFyYXRpb24pOiBHbyB0byB0aGUKCXVuZGVybHlpbmcgdHlwZQoJdG8gY2hlY2sgaWYgYSB0eXBlIGlzIENvbnN0cmFpbmVkIGluIGNhc2VzIHJlbGF0ZWQgdG8gY29kZSBnZW5lcmF0aW9uCgkocmF0aGVyIHRoYW4gc2VtYW50aWMgY2hlY2tpbmcpIHNpbmNlIG90aGVyd2lzZSB3ZSBkbyBub3QgZ2VuZXJhdGUKCXNpbWlsYXIgY29kZSBmb3IgbXV0YWJsZSBwcml2YXRlIHR5cGVzIGRlcGVuZGluZyBpZiB0aGVpcgoJZGlzY3JpbWluYW50cyBhcmUgdmlzaWJsZSBvciBub3QuCgkoQ2hlY2tfQWJzdHJhY3RfT3ZlcnJpZGluZyk6IERvIG5vdCBjb21wbGFpbiBhYm91dCBmYWlsdXJlIHRvIG92ZXJyaWRlCgl0aGUgcHJpbWl0aXZlIG9wZXJhdGlvbnMgdXNlZCBpbiBkaXNwYXRjaGluZyBzZWxlY3RzIHNpbmNlIHRoZXkgd2lsbAoJYWx3YXlzIGJlIG92ZXJyaWRlbiBhdCB0aGUgZnJlZXplIHBvaW50IG9mIHRoZSB0eXBlLgoJKEFjY2Vzc19EZWZpbml0aW9uKTogU2VwYXJhdGUgb3V0IGhhbmRsaW5nIGZvciByZXNldHRpbmcgdGhlIHNjb3BlCglvZiBhbiBhbm9ueW1vdXMgYWNjZXNzIGZ1bmN0aW9uIHJlc3VsdCB0eXBlLiBSZXRyaWV2ZSB0aGUgc2NvcGUKCW9mIHRoZSBhc3NvY2lhdGVkIGZ1bmN0aW9uIHJhdGhlciB0aGFuIHVzaW5nIEN1cnJlbnRfU2NvcGUsIHdoaWNoCglkb2VzIG5vdCBoYXZlIGEgY29uc2lzdGVudCB2YWx1ZSAoZGVwZW5kcyBvbiB3aGV0aGVyIHdlJ3JlIGluIHRoZQoJbWlkZGxlIG9mIGFuYWx5emluZyBmb3JtYWwgcGFyYW1ldGVycykuIEFkZCA/Pz8gY29tbWVudCBhYm91dAoJZmluZGluZyBhIGNsZWFuZXIgd2F5IHRvIGhhbmRsZSB0aGUgc3BlY2lhbCBjYXNlcyBvZiBzY29wZSBzZXR0aW5nLgoJKFByb2Nlc3NfSW5jb21wbGV0ZV9EZXBlbmRlbnRzKTogQSBwcm90ZWN0ZWQgb3BlcmF0aW9uIGlzIG5ldmVyIGEKCWRpc3BhdGNoaW5nIG9wZXJhdGlvbiAob25seSBpdHMgd3JhcHBlciBtYXkgYmUpLgoJKEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUpOiBJbiBjYXNlIG9mIHRhZ2dlZCBwcml2YXRlIHR5cGVzIHRoYXQKCWltcGxlbWVudCBpbnRlcmZhY2VzIGFkZCBkZXJpdmF0aW9uIG9mIHByZWRlZmluZWQgcHJpbWl0aXZlCglvcGVyYXRpb25zLgoJKERlcml2ZV9TdWJwcm9ncmFtcyk6IFJlcGxhY2UgdGhlIElzX0ludGVyZmFjZV9EZXJpdmF0aW9uIHBhcmFtZXRlcgoJYnkgdHdvIHBhcmFtZXRlcnMgdGhhdCBhcmUgdXNlZCBpbiBjYXNlIG9mIGRlcml2YXRpb24gZnJvbSBhYnN0cmFjdAoJaW50ZXJmYWNlIHR5cGVzOiBOb19QcmVkZWZpbmVkX1ByaW1zIGlzIHVzZWQgdG8gYXZvaWQgdGhlIGRlcml2YXRpb24KCW9mIHByZWRlZmluZWQgcHJpbWl0aXZlcyBmcm9tIHRoZSBpbnRlcmZhY2UsIGFuZCBQcmVkZWZpbmVkCglQcmltc19Pbmx5IGlzIHVzZWQgdG8gY29tcGxldGUgdGhlIGRlcml2YXRpb24gcHJlZGVmaW5lZCBwcmltaXRpdmVzCglpbiBjYXNlIG9mIHByaXZhdGUgdGFnZ2VkIHR5cGVzIGltcGxlbWVudGluZyBpbnRlcmZhY2VzLgoJRml4IHR5cG8gaW4gY29tbWVudHMKCShGaW5kX0ludGVyZmFjZV9Jbl9EZXNjZW5kYW50KTogUHJvdGVjdCB0aGUgZnJvbnRlbmQgYWdhaW5zdAoJd3JvbmcgY29kZSB3aXRoIGxhcmdlIGNpcmN1bGFyaXR5IGNoYWlucy4KCShJc19Qcml2YXRlX092ZXJyaWRpbmcpOiBBZGQgc3VwcG9ydCBmb3IgZW50aXRpZXMgb3ZlcnJpZGluZyBpbnRlcmZhY2UKCXN1YnByb2dyYW1zLiBUaGUgdGVzdCBmYWlsZWQgYmVjYXVzZSBFbnRpdGllcyBhc3NvY2lhdGVkIHdpdGggb3ZlcnJpZGVuCglpbnRlcmZhY2Ugc3VicHJvZ3JhbXMgYXJlIGFsd2F5cyBtYXJrZWQgYXMgaGlkZGVuIChhbmQgdXNlZCB0byBidWlsZAoJdGhlIHNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZSk7IGluIHRoaXMgY2FzZSB0aGUgb3ZlcnJpZGVuIGVudGl0eSBpcwoJYXZhaWxhYmxlIHRocm91Z2ggdGhlIGZpZWxkIGFic3RyYWN0X2ludGVyZmFjZV9hbGlhcyAoY2YuIG92ZXJyaWRlXwoJZGlzcGF0Y2hpbmdfb3BlcmF0aW9uKQoJKEFjY2Vzc19EZWZpbml0aW9uKTogU2V0IHRoZSBzY29wZSBvZiB0aGUgdHlwZSB0byBDdXJyZW50X1Njb3BlIGZvciB0aGUKCWNhc2Ugb2YgYSBmdW5jdGlvbiB3aXRoIGFuIGFub255bW91cyBhY2Nlc3MgcmVzdWx0IHR5cGUuCgkoQWNjZXNzX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBIYW5kbGUgY3JlYXRpb24gb2YgdGhlIHR5cGUgZW50aXR5IGZvcgoJYW4gYWNjZXNzLXRvLWZ1bmN0aW9uIHR5cGUgd2l0aCBhbiBhbm9ueW1vdXMgYWNjZXNzIHJlc3VsdC4KCShDaGVja19Bbm9ueW1vdXNfQWNjZXNzX1R5cGVzKTogQ2hhbmdlIFN1YnR5cGVfTWFyayB0byBSZXN1bHRfRGVmaW5pdGlvbgoJaW4gaGFuZGxpbmcgZm9yIE5fQWNjZXNzX0Z1bmN0aW9uX0RlZmluaXRpb24uCgkoQW5hbHl6ZV9TdWJ0eXBlX0RlY2xhcmF0aW9uKTogTW9kaWZ5IHRoZSB0ZXh0IG9mIGVycm9yIG1lc3NhZ2UuCgkoRGVyaXZlZF9UeXBlX0RlY2xhcmF0aW9uKTogTW9kaWZ5IHRoZSB0ZXh0IG9mIGVycm9yIG1lc3NhZ2UuCgkoUHJvY2Vzc19TdWJ0eXBlKTogTW9kaWZ5IHRoZSB0ZXh0IG9mIGVycm9yIG1lc3NhZ2UgcGx1cyBjbGVhbnVwCglvZiBvbmUgcmVkdW5kYW50IGVycm9yIG1lc3NhZ2UuCgkoQW5hbHl6ZV9Db21wb25lbnRfRGVjbGFyYXRpb24pOiBDb2RlIGNsZWFudXAuCgkoQW5hbHl6ZV9PYmplY3RfRGVjbGFyYXRpb24pOiBDb2RlIGNsZWFudXAuCgkoQW5hbHl6ZV9TdWJ0eXBlX0RlY2xhcmF0aW9uKTogUHJvcGFnYXRlIHRoZSBudWxsLWV4Y2x1c2lvbgoJYXR0cmlidXRlIGluIGNhc2Ugb2YgYWNjZXNzIHR5cGVzLiBDb2RlIGNsZWFudXAuCgkoQXJyYXlfVHlwZV9EZWNsYXJhdGlvbik6IENvZGUgY2xlYW51cC4KCShQcm9jZXNzX0Rpc2NyaW1pbmFudHMpOiBDcmVhdGUgdGhlIG5ldyBudWxsLWV4Y2x1ZGluZyBpdHlwZQoJaWYgcmVxdWlyZWQuIENvZGUgY2xlYW51cC4KCShQcm9jZXNzX1N1YnR5cGUpOiBDcmVhdGUgdGhlIG5ldyBudWxsLWV4Y2x1ZGluZyBpdHlwZSBpZgoJcmVxdWlyZWQuIENvZGUgY2xlYW51cC4KCShCdWlsZF9EZXJpdmVkX1JlY29yZF9UeXBlKTogQ29kZSBjbGVhbnVwIHRvIGF2b2lkIGNhbGxpbmcKCXR3aWNlIHRoZSBzdWJwcm9ncmFtIGRlcml2ZV9zdWJwcm9ncmFtcyBpbiBjYXNlIG9mIHByaXZhdGUKCXR5cGVzIHRoYXQgaW1wbGVtZW50IGludGVyZmFjZXMuIEluIHRoaXMgcGFydGljdWxhciBjYXNlIHRoZQoJc3VicHJvZ3JhbSBDb21wbGV0ZV9TdWJwcm9ncmFtc19EZXJpdmF0aW9uIGFscmVhZHkgZG9lcyB0aGUKCWpvYiBhc3NvY2lhdGVkIHdpdGggdGhlIHNlY29uZCBjYWxsLgoKCSogZXhwX3N0cm0uYWRiIChCdWlsZF9FbGVtZW50YXJ5X0lucHV0X0NhbGwpOiBBZGQgYW4gZXhwbGljaXQKCWNvbnZlcnNpb24gdG8gdGhlIGZ1bGwgdmlldyB3aGVuIGdlbmVyYXRpbmcgYW4gb3BlcmF0aW9uIGZvciBhCglkaXNjcmltaW5hbnQgd2hvc2UgdHlwZSBtYXkgY3VycmVudGx5IGJlIHByaXZhdGUuCgoyMDA1LTA5LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNC5hZGIgKFRyYW5zZm9ybV9PYmplY3RfT3BlcmF0aW9uKTogSW4gYSBjb250ZXh0IG9mZiB0aGUgZm9ybQoJViAoT2JqLkYpLCB0aGUgcmV3cml0aW5nIGRvZXMgbm90IGludm9sdmUgdGhlIGluZGV4ZWQgY29tcG9uZW50LCBidXQKCW9ubHkgdGhlIHNlbGVjdGVkIGNvbXBvbmVudCBpdHNlbGYuCglEbyBub3QgYXBwbHkgdGhlIHRyYW5zZm9ybWF0aW9uIGlmIHRoZSBhbmFseXplZCBub2RlIGlzIGFuIGFjdHVhbCBvZiBhCgljYWxsIHRvIGFub3RoZXIgc3VicHJvZ3JhbS4KCShDb21wbGV0ZV9PYmplY3RfT3BlcmF0aW9uKTogUmV0YWluIHRoZSBlbnRpdHkgb2YgdGhlCglkaXNwYXRjaGluZyBvcGVyYXRpb24gaW4gdGhlIHNlbGVjdG9yIG9mIHRoZSByZXdyaXR0ZW4gbm9kZS4gVGhlCgllbnRpdHkgd2lsbCBiZSB1c2VkIGluIHRoZSBleHBhbnNpb24gb2YgZGlzcGF0Y2hpbmcgc2VsZWN0cy4KCShBbmFseXplX09uZV9DYWxsKTogSW1wcm92ZSBsb2NhdGlvbiBvZiB0aGUgZXJyb3IgbWVzc2FnZSBhc3NvY2lhdGVkCgl3aXRoIGludGVyZmFjZS4KCShBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IE5vIG5lZWQgdG8gcmVzb2x2ZSBwcmVmaXggd2hlbiBpdCBpcyBhCglmdW5jdGlvbiBjYWxsLCByZXNvbHV0aW9uIGlzIGRvbmUgd2hlbiBwYXJlbnQgbm9kZSBpcyByZXNvbHZlZCwgYXMKCXVzdWFsLgoJKEFuYWx5emVfT25lX0NhbGwpOiBBZGQgYSBmbGFnIHRvIHN1cHByZXNzIGFuYWx5c2lzIG9mIHRoZSBmaXJzdCBhY3R1YWwsCgl3aGVuIGF0dGVtcHRpbmcgdG8gcmVzb2x2ZSBhIGNhbGwgdHJhbnNmb3JtZWQgZnJvbSBpdHMgb2JqZWN0IG5vdGF0aW9uLgoJKFRyeV9PYmplY3RfT3BlcmF0aW9uLCBUcmFuc2Zvcm1fT2JqZWN0X09wZXJhc3Rpb24pOiBBdm9pZCBtYWtpbmQgY29waWVzCglvZiB0aGUgYXJndW1lbnQgbGlzdCBmb3IgZWFjaCBpbnRlcnByZXRhdGlvbiBvZiB0aGUgb3BlcmF0aW9uLgoJKFRyeV9PYmplY3RfT3BlcmF0aW9uKTogVGhlIGRlc2lnbmF0ZWQgdHlwZSBvZiBhbiBhY2Nlc3MgcGFyYW1ldGVyIG1heQoJYmUgYW4gaW5jb21wbGV0ZSB0eXBlIG9idGFpbmVkIHRocm91Z2ggYSBsaW1pdGVkX3dpdGggY2xhdXNlLCBpbiB3aGljaAoJY2FzZSB0aGUgcHJpbWl0aXZlIG9wZXJhdGlvbnMgb2YgdGhlIHR5cGUgYXJlIHJldHJpZXZlZCBmcm9tIGl0cyBmdWxsCgl2aWV3LgoJKEFuYWx5emVfQ2FsbCk6IElmIHRoaXMgaXMgYW4gaW5kaXJlY3QgY2FsbCwgYW5kIHRoZSByZXR1cm4gdHlwZSBvZiB0aGUKCWFjY2Vzc190b19zdWJwcm9ncmFtIGlzIGluY29tcGxldGUsIHVzZSBpdHMgZnVsbCB2aWV3IGlmIGF2YWlsYWJsZS4KCjIwMDUtMDktMDEgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g2LmFkcywgc2VtX2NoNi5hZGIgKENoZWNrX0NvbmZvcm1hbmNlKTogSW4gY2FzZSBvZiBhbm9ueW1vdXMKCWFjY2VzcyB0eXBlcyB0aGUgbnVsbC1leGNsdXNpb24gYW5kIGFjY2Vzcy10by1jb25zdGFudCBhdHRyaWJ1dGVzIG11c3QKCWFsc28gbWF0Y2guCgkoQW5hbHl6ZV9SZXR1cm5fU3RhdGVtZW50KTogV2hlbiB0aGUgcmVzdWx0IHR5cGUgaXMgYW4gYW5vbnltb3VzIGFjY2VzcwoJdHlwZSwgYXBwbHkgYSBjb252ZXJzaW9uIG9mIHRoZSByZXR1cm4gZXhwcmVzc2lvbiB0byB0aGUgYWNjZXNzIHR5cGUKCXRvIGVuc3VyZSB0aGF0IGFwcHJvcHJpYXRlIGFjY2Vzc2liaWxpdHkgY2hlY2tzIGFyZSBwZXJmb3JtZWQuCgkoQW5hbHl6ZV9SZXR1cm5fVHlwZSk6IEZvciB0aGUgY2FzZSBvZiBhbiBhbm9ueW1vdXMgYWNjZXNzIHJlc3VsdCB0eXBlLAoJZ2VuZXJhdGUgdGhlIEl0eXBlIGFuZCBzZXQgSXNfTG9jYWxfQW5vbnltb3VzX0FjY2VzcyBvbiB0aGUgdHlwZS4KCUFkZCA/Pz8gcGxhY2Vob2xkZXIgZm9yIGNoZWNrIHRvIGRpc2FsbG93IHJldHVybmluZyBhIGxpbWl0ZWQgb2JqZWN0CglpbiBBZGEgMjAwNSB1bmxlc3MgaXQncyBhbiBhZ2dyZWdhdGUgb3IgYSByZXN1bHQgb2YgYSBmdW5jdGlvbiBjYWxsLgoJQ2hhbmdlIGNhbGxzIGZyb20gU3VidHlwZV9NYXJrIHRvIFJlc3VsdF9EZWZpbml0aW9uLgoJKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogQ2hhbmdlIGZvcm1hbCBTdWJ0eXBlX01hcmsgdG8KCVJlc3VsdF9EZWZpbml0aW9uIGluIGNhbGwgdG8gTWFrZV9GdW5jdGlvbl9TcGVjaWZpY2F0aW9uLgoJKEJ1aWxkX0JvZHlfVG9fSW5saW5lKTogQ2hhbmdlIFNldF9TdWJ0eXBlX01hcmsgdG8KCVNldF9SZXN1bHRfRGVmaW5pdGlvbi4KCShNYWtlX0luZXF1YWxpdHlfT3BlcmF0b3IpOiBDaGFuZ2UgZm9ybWFsIFN1YnR5cGVfTWFyayB0bwoJUmVzdWx0X0RlZmluaXRpb24gaW4gY2FsbCB0byBNYWtlX0Z1bmN0aW9uX1NwZWNpZmljYXRpb24uCgkoUHJvY2Vzc19Gb3JtYWxzKTogQ3JlYXRlIHRoZSBuZXcgbnVsbC1leGNsdWRpbmcgaXR5cGUgaWYgcmVxdWlyZWQuCgkoTmV3X092ZXJsb2FkZWRfRW50aXR5KTogRm9yIGFuIGVudGl0eSBvdmVycmlkaW5nIGFuIGludGVyZmFjZSBwcmltaXRpdmUKCWNoZWNrIGlmIHRoZSBlbnRpdHkgYWxzbyBjb3ZlcnMgb3RoZXIgYWJzdHJhY3Qgc3VicHJvZ3JhbXMgaW4gdGhlIHNhbWUKCXNjb3BlLiBUaGlzIGlzIHJlcXVpcmVkIHRvIGhhbmRsZSB0aGUgZ2VuZXJhbCBjYXNlLCB0aGF0IGlzLCBvdmVycmlkaW5nCglvdGhlciBpbnRlcmZhY2UgcHJpbWl0aXZlcyBhbmQgb3ZlcnJpZGluZyBhYnN0cmFjdCBzdWJwcm9ncmFtcyBpbmhlcml0ZWQKCWZyb20gc29tZSBhYnN0cmFjdCBhbmNlc3RvciB0eXBlLgoJKE5ld19PdmVybG9hZGVkX0VudGl0eSk6IEZvciBhbiBvdmVycmlkaW5nIGVudGl0eSB0aGF0IGNvbWVzIGZyb20KCXNvdXJjZSwgbm90ZSB0aGUgb3BlcmF0aW9uIHRoYXQgaXQgb3ZlcnJpZGVzLgoJKENoZWNrX0NvbmZvcm1hbmNlLCBUeXBlX0NvbmZvcm1hbnQpOiBBZGRpdGlvbiBvZiBvbmUgbmV3IGZvcm1hbAoJdG8gc2tpcCBjb250cm9sbGluZyBmb3JtYWxzIGluIHRoZSBhbmFseXNpcy4gVGhpcyBpcyB1c2VkIHRvCgloYW5kbGUgb3ZlcmxvYWRpbmcgb2YgYWJzdHJhY3QgaW50ZXJmYWNlcy4KCShCYXNlX1R5cGVzX01hdGNoKTogQWRkIG1pc3NpbmcgY2FzZSBmb3IgdHlwZXMgaW1wb3J0ZWQgZnJvbQoJbGltaXRlZC13aXRoIGNsYXVzZXMKCShOZXdfT3ZlcmxvYWRlZF9FbnRpdHkpOiBBZGQgYmFycmllciB0byBwcm90ZWN0IHRoZSB1c2Ugb2YKCXRoZSAiYWxpYXMiIGF0dHJpYnV0ZS4KCjIwMDUtMDktMDEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDguYWRiIChBbmFseXplX1JlbmFtZWRfRW50cnkpOiBGb3IgYSByZW5hbWluZ19hc19kZWNsYXJhdGlvbiwKCXZlcmlmeSB0aGF0IHRoZSBwcm9jZWR1cmUgYW5kIHRoZSBlbnRyeSBhcmUgbW9kZSBjb25mb3JtYW50LgoJKEFuYWx5emVfU3VicHJvZ3JhbV9SZW5hbWluZyk6IEVtaXQgYSB3YXJuaW5nIGlmIGFuIG9wZXJhdG9yIGlzIHJlbmFtZWQKCWFzIGEgZGlmZmVyZW50IG9wZXJhdG9yLCB3aGljaCBpcyBvZnRlbiBhIGN1dC1hbmQtcGFzdGUgZXJyb3IuCgoyMDA1LTA5LTAxICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2Rpc3AuYWRiIChDaGVja19Db250cm9sbGluZ19Gb3JtYWxzKTogQW5vbnltb3VzIGFjY2VzcyB0eXBlcwoJdXNlZCBpbiBjb250cm9sbGluZyBwYXJhbWV0ZXJzIGV4Y2x1ZGUgbnVsbCBiZWNhdXNlIGl0IGlzIG5lY2Vzc2FyeSB0bwoJcmVhZCB0aGUgdGFnIHRvIGRpc3BhdGNoLCBhbmQgbnVsbCBoYXMgbm8gdGFnLgoJKE92ZXJyaWRlX0Rpc3BhdGNoaW5nX09wZXJhdGlvbik6IElmIHRoZSBwcmV2aW91cyBvcGVyYXRpb24gaXMgaW5oZXJpdGVkCglmcm9tIGFuIGludGVyZmFjZSwgaXQgYmVjb21lcyBoaWRkZW4gIGFuZCBkb2VzIG5vdCBwYXJ0aWNpcGF0ZSBpbiBsYXRlcgoJbmFtZSByZXNvbHV0aW9uLgoKMjAwNS0wOS0wMSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9NZW1iZXJzaGlwX09wKTogSW4gY2FzZSBvZiB0aGUgbWVtYmVyc2hpcCB0ZXN0CgkiSWZhY2VfQ1dfVHlwIGluIFQnQ2xhc3MiIHdlIGhhdmUgbm90aGluZyBlbHNlIHRvIGRvIGluIHRoZSBmcm9udGVuZDsKCXRoZSBleHBhbmRlciB3aWxsIGdlbmVyYXRlIHRoZSBjb3JyZXNwb25kaW5nIHJ1bi10aW1lIGNoZWNrIHRvIGV2YWx1YXRlCgl0aGUgZXhwcmVzc2lvbi4KCShSZXNvbHZlX0NhbGwpOiBDaGVjayBmb3IgbGVnYWwgdHlwZSBvZiBwcm9jZWR1cmUgbmFtZSBvciBwcmVmaXggdGhhdAoJYXBwZWFycyBhcyBhIHRyaWdnZXIgaW4gYSB0cmlnZ2VyaW5nIGFsdGVybmF0aXZlLgoJKFZhbGlkX0NvbnZlcnNpb24pOiBJZiBleHByZXNzaW9uIGlzIGFtYmlndW91cyBhbmQgdGhlIGNvbnRleHQgaW52b2x2ZXMKCWFuIGV4dGVuc2lvbiBvZiBTeXN0ZW0sIHJlbW92ZSBTeXN0ZW0uQWRkcmVzcyBpbnRlcnByZXRhdGlvbnMuCgkoUmVzb2x2ZV9RdWFsaWZpZWRfRXhwcmVzc2lvbik6IFJlamVjdCB0aGUgY2FzZSBvZiBhIHNwZWNpZmljLXR5cGUKCXF1YWxpZmljYXRpb24gYXBwbGllZCB0byBhIGNsYXNzLXdpZGUgYXJndW1lbnQuIEVuaGFuY2UgY29tbWVudAoJdG8gZXhwbGFpbiBjaGVja2luZyBvZiBPcmlnaW5hbF9Ob2RlLgoJKFJlc29sdmVfVHlwZV9Db252ZXJzaW9uKTogVGhlIGxvY2F0aW9uIG9mIHRoZSBlcnJvciBtZXNzYWdlIHdhcyBub3QKCWdlbmVyYWwgZW5vdWdoIHRvIGhhbmRsZSB0aGUgZ2VuZXJhbCBjYXNlIGFuZCBoZW5jZSBpdCBoYXMgYmVlbiByZW1vdmVkLgoJSW4gYWRkaXRpb24sIHRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuCgkoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBBZGQgbWlzc2luZyBzdXBwb3J0IGZvciBhY2Nlc3MgdG8gaW50ZXJmYWNlCgl0eXBlcy4KCShSZXNvbHZlX1R5cGVfQ29udmVyc2lvbik6IElmIHRoZSB0YXJnZXQgaXMgYSBjbGFzcy13aWRlIGludGVyZmFjZSB0eXBlLAoJZG8gbm90IGV4cGFuZCBpZiB0aGUgZXhwcmVzc2lvbiBpcyB0aGUgYWN0dWFsIGluIGEgY2FsbCwgYmVjYXVzZSBwcm9wZXIKCWV4cGFuc2lvbiB3aWxsIHRha2UgcGxhY2Ugd2hlbiB0aGUgY2FsbCBpdHNlbGYgaXMgZXhwYW5kZWQuCgkoUmVzb2x2ZV9BbGxvY2F0b3IpOiBJZiB0aGUgY29udGV4dCBpcyBhbiB1bmNoZWNrZWQgY29udmVyc2lvbiwgdGhlCglhbGxvY2F0b3IgaW5oZXJpdHMgaXRzIHN0b3JhZ2UgcG9vbCwgaWYgYW55LCBmcm9tIHRoZSB0YXJnZXQgdHlwZSBvZgoJdGhlIGNvbnZlcnNpb24uCgoyMDA1LTA5LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogc2VtX3R5cGUuYWRiIChBZGRfT25lX0ludGVycCk6IElmIGEgY2FuZGlkYXRlIG9wZXJhdGlvbiBpcyBhbgoJaW5oZXJpdGVkIGludGVyZmFjZSBvcGVyYXRpb24gdGhhdCBoYXMgYW4gaW1wbGVtZW50YXRpb24sIHVzZSB0aGUKCWltcGxlbWVudGF0aW9uIHRvIGF2b2lkIHNwdXJpb3VzIGFtYmlndWl0aWVzLgoJKEludGVyZmFjZV9QcmVzZW50X0luX0FuY2VzdG9yKTogSW4gY2FzZSBvZiBjb25jdXJyZW50IHR5cGVzIHdlIGNhbid0Cgl1c2UgdGhlIENvcnJlc3BvbmRpbmdfUmVjb3JkX1R5cCBhdHRyaWJ1dGUgdG8gbG9vayBmb3IgdGhlIGludGVyZmFjZQoJYmVjYXVzZSBpdCBpcyBzZXQgYnkgdGhlIGV4cGFuZGVyIChhbmQgaGVuY2UgaXQgaXMgbm90IGFsd2F5cwoJYXZhaWxhYmxlKS4gRm9yIHRoaXMgcmVhc29uIHdlIHRyYXZlcnNlIHRoZSBsaXN0IG9mIGludGVyZmFjZXMKCShhdmFpbGFibGUgaW4gdGhlIHBhcmVudCBvZiB0aGUgY29uY3VycmVudCB0eXBlKS4KCShJbnRlcmZhY2VfUHJlc2VudF9Jbl9BbmNlc3Rvcik6IEhhbmRsZSBlbnRpdGllcyBmcm9tIHRoZSBsaW1pdGVkIHZpZXcKCjIwMDUtMDktMDEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV91dGlsLmFkcywgc2VtX3V0aWwuYWRiIChHYXRoZXJfQ29tcG9uZW50cyk6IE9taXQgaW50ZXJmYWNlIHRhZ3MKCWZyb20gdGhlIGxpc3Qgb2YgcmVxdWlyZWQgY29tcG9uZW50cy4KCShJc19Db250cm9sbGluZ19MaW1pdGVkX1Byb2NlZHVyZSk6IERldGVybWluZSB3aGV0aGVyIGFuIGVudGl0eSBpcyBhCglwcmltaXRpdmUgcHJvY2VkdXJlIG9mIGEgbGltaXRlZCBpbnRlcmZhY2Ugd2l0aCBhIGNvbnRyb2xsaW5nIGZpcnN0CglwYXJhbWV0ZXIuCgkoSXNfUmVuYW1lZF9FbnRyeSk6IERldGVybWluZSB3aGV0aGVyIGFuIGVudHJ5IGlzIGEgcHJvY2VkdXJlIHJlbmFtaW5nCglvZiBhbiBlbnRyeS4KCShTYWZlX1RvX0NhcHR1cmVfVmFsdWUpOiBBIHZhbHVlIChzdWNoIGFzIG5vbl9udWxsKSBpcyBub3Qgc2FmZSB0bwoJY2FwdHVyZSBpZiBpdCBpcyBnZW5lcmF0ZWQgaW4gdGhlIHNlY29uZCBvcGVyYW5kIG9mIGEgc2hvcnQtY2lyY3VpdAoJb3BlcmF0aW9uLgoJRG8gbm90IGNhcHR1cmUgdmFsdWVzIGZvciB2YXJpYWJsZXMgd2l0aCBhZGRyZXNzIGNsYXVzZXMuCgkoSXNfT2JqZWN0X1JlZmVyZW5jZSk6IFRyZWF0IGEgZnVuY3Rpb24gY2FsbCBhcyBhbiBvYmplY3QgcmVmZXJlbmNlIG9ubHkKCWlmIGl0cyB0eXBlIGlzIG5vdCBTdGFuZGFyZF9Wb2lkX1R5cGUuCgoyMDA1LTA5LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fd2Fybi5hZGIgKFdhcm5fT25fS25vd25fQ29uZGl0aW9uKTogUmVmaW5lIHdhcm5pbmcgd2hlbiBhcHBsaWVkCgl0byBhIHZhcmlhYmxlIHRoYXQgaXMgc3RhdGljYWxseSBrbm93biB0byBiZSBjb25zdGFudC4KCjIwMDUtMDktMDEgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiB0dHlwZWYuYWRzIChWQVhERl9TYWZlX0ZpcnN0KTogVXNlIGNvcnJlY3QgdmFsdWUgZm9yIGNvbnN0YW50LgoJKFZBWEdGX1NhZmVfRmlyc3QpOiBJZGVtLgoKMjAwNS0wOS0wMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogZy1kaXJvcGUuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCURvY3VtZW50IHRoYXQgYm91bmRzIG9mIHJlc3VsdCBvZiBCYXNlX05hbWUgbWF0Y2ggdGhlIGlucHV0IGluZGV4Cglwb3NpdGlvbnMuCglBZGQgZG9jdW1lbnRhdGlvbiBvbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBzeW50YXggZm9yIEV4cGFuZF9QYXRoCgoJKiBnbmF0X3Vnbi50ZXhpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbiB0byBpbmNsdWRlIG1lbnRpb24gb2YgLW0gc3dpdGNoZXMKCURvY3VtZW50IG5ldyB0cmVhdG1lbnQgb2Ygd2lkZSBjaGFyYWN0ZXJzIGluIG1heCBsaW5lIGxlbmd0aAoJc3R5bGUgY2hlY2suCglSZW1vdmUgLWduYXRMLy1nbmF0WiBzd2l0Y2hlcywgbm8gbG9uZ2VyIHVzZWQuCglBZGQgbm90ZSBvbiBwcmFnbWFzIEFzc2VydGlvbl9Qb2xpY3kgYW5kIERlYnVnX1BvbGljeSBpbiBkaXNjdXNzaW9uCglvZiAtZ25hdGEgc3dpdGNoLgoKCSogZ25hdF9ybS50ZXhpOiBBZGQgZG9jIGZvciB0d28gYXJndW1lbnQgZm9ybSBvZiBwcmFnbWEKCUZsb2F0X1JlcHJlc2VudGF0aW9uLgoJQWRkIGRvY3VtZW50YXRpb24gZm9yIHByYWdtYSBOb19TdHJpY3RfQWxpYXNpbmcKCUFkZCBub3RlIHRoYXQgZXhwbGljaXQgY29tcG9uZW50IGNsYXVzZSBvdmVycmlkZXMgcHJhZ21hIFBhY2suCglBZGQgZG9jdW1lbnRhdGlvbiBvZiBwcmFnbWEgRGVidWdfUG9saWN5CgoyMDA1LTA5LTAxICBNYXR0aGV3IEhlYW5leSAgPGhlYW5leUBhZGFjb3JlLmNvbT4KCgkqIGEtY2loYXNlLmFkYiwgYS1jb29yc2UuYWRzLCBhLWNvb3JzZS5hZGIsIGEtY29oYW1hLmFkYiwKCWEtY2lvcnNlLmFkcywgYS1jaW9yc2UuYWRiLCBhLWNpaGFtYS5hZGIsIGEtY2RsaWxpLmFkYiwKCWEtY2lkbGxpLmFkYiwgYS1jaHRnb3AuYWRiLCBhLWNpaGFzZS5hZGIsIGEtY2loYXNlLmFkcywKCWEtY29oYXNlLmFkYiwgYS1jb2hhc2UuYWRiLCBhLWNvaGFzZS5hZHM6IFN5bmNocm9uaXplZCB3aXRoIGxhdGVzdAoJZHJhZnQgKERyYWZ0IDEzLCBBdWd1c3QgMjAwNSkgb2YgQWRhIEFtZW5kbWVudCAxLgoKMjAwNS0wOS0wMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogTWFrZWZpbGUuaW46IEFkanVzdCB0aGUgbGliZ25hdCB0YXJnZXQgcGFpcnMgZm9yIFhzY2FsZSB0byBBUk0uCglOb3RlIHRoYXQgdGhlIHBsYXRmb3JtLXNwZWNpZmljIHZlcnNpb24gb2YgZy1zb2Njb24uYWRzIGZvciBWTVMgaXMgbm93CgluYW1lZCBnLXNvY2Nvbi12bXMuYWRzIChpdCB3YXMgcHJldmlvdXNseSBnLXNvY2Nvbi12bXMuYWRiLCBhbHRob3VnaCBpdAoJcmVhbGx5IGlzIGEgcGFja2FnZSBzcGVjKS4KCVJlcGxhY2Ugcy10YXNwcmktbGludXguYWRzIGJ5IHMtdGFzcHJpLXBvc2l4LmFkcwoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gcy1tYXN0b3AteDg2LmFkYgoKCSogc3lzdGVtLXZ4d29ya3MteHNjYWxlLmFkczogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCgkqIHMtdnh3b3JrLXhzY2FsZS5hZHM6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoKMjAwNS0wOS0wMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLWRpcnZhbC1taW5ndy5hZGIsIGEtZGlyZWN0LmFkYiwgYS1jb2ludmUuYWRiLAoJZy1keW5odGEuYWRiLCBnLWR5bmh0YS5hZHMsIGNzdGFuZC5hZGIsIGV4cF9zbWVtLmFkYiwgZy1kZWJ1dGkuYWRzLAoJZy1kaXJvcGUuYWRiLCBnLXRhYmxlLmFkYiwgbGliLXNvcnQuYWRiLCBzZW1fbWFwcy5hZGIsCglleHBfZml4ZC5hZGIsIGV4cF9hZ2dyLmFkYiwgYS1pbnRuYW0tbWluZ3cuYWRzLCBhLWludG5hbS12eHdvcmtzLmFkcywKCWctYXJyc3BsLmFkYiwgZy1hcnJzcGwuYWRzLCBnLWF3ay5hZGIsIGctYXdrLmFkcywgZy1ib3VidWYuYWRzLAoJZy1ib3VidWYuYWRzLCBnLWJvdWJ1Zi5hZHMsIGctYnVic29yLmFkcywgZy1idWJzb3IuYWRiLCBnLWJ1c29yYS5hZGIsCglnLWJ1c29yYS5hZHMsIGctYnVzb3JnLmFkYiwgZy1idXNvcmcuYWRzLCBnLWNhbGVuZC5hZGIsIGctY2FsZW5kLmFkcywKCWctY2FzdXRpLmFkYiwgZy1jYXN1dGkuYWRzLCBnLWNhdGlpby5hZGIsIGctY2F0aWlvLmFkcywgZy1jZ2kuYWRiLAoJZy1jZ2kuYWRzLCBnLWNnaWNvby5hZGIsIGctY2dpY29vLmFkcywgZy1jZ2lkZWIuYWRiLCBnLWNnaWRlYi5hZHMsCglnLWNvbWxpbi5hZGIsIGctY29tdmVyLmFkcywgZy1zZW1hcGguYWRzLCBnLXNvY3RoaS5hZHMsCglzZW1fY2g3LmFkYiwgYS1kaXJlaW8uYWRiLCBhLWNhbGRlbC5hZHMsIGktY3N0cmVhLXZtcy5hZGIsCglhLXp0ZWRpdC5hZGIsIGEtenRlbmF1LmFkYiwgZy1zb2N0aGktdm1zLmFkYiwgZy1zb2N0aGktdm1zLmFkcywKCWctc29jdGhpLW1pbmd3LmFkYiwgZy1zb2N0aGktbWluZ3cuYWRzLCBnLXNvY3RoaS12eHdvcmtzLmFkcywKCWEtaW50bmFtLWlyaXguYWRzLCBhLWludG5hbS1pcml4LmFkcywgYS1pbnRuYW0taHB1eC5hZHMsCglhLWludG5hbS1vczIuYWRzLCBhLWludG5hbS1vczIuYWRzLCBhLWNhbGRlbC12bXMuYWRiLCBhLWNhbGVuZC12bXMuYWRiLAoJYS1jYWxlbmQtdm1zLmFkcywgZy1oZWFzb3IuYWRiLCBnLWhlYXNvci5hZHMsIGctaGVzb3JhLmFkYiwKCWctaGVzb3JhLmFkcywgZy1oZXNvcmcuYWRiLCBnLWhlc29yZy5hZHMsIGctaHRhYmxlLmFkYiwgZy1odGFibGUuYWRzLAoJZy1pby5hZGIsIGctaW8uYWRzLCBnLWlvX2F1eC5hZGIsIGctaW9fYXV4LmFkcywgZy1sb2NmaWwuYWRzLAoJZy1tZW1kdW0uYWRiLCBnLW1lbWR1bS5hZHMsIGctdHJhY2ViLmFkYiwgZy10cmFjZWIuYWRzLCBpLWNvYm9sLmFkYiwKCWktY29ib2wuYWRzLCBpLWNzdHJlYS5hZHMsIGktY3N0cmluLmFkYiwgYS13dGVkaXQuYWRiLCBhLXRpZmlpby5hZGIsCglhLXd0ZW5hdS5hZGIsIGEtd3RlbmF1LmFkYiwgYS10ZWlvZWQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDUtMDgtMjkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMjMxODcKCSogYWRhaW50LmMKCShHTkFUX01BWFBBVEhfTEVOKTogVXNlIGRlZmF1bHQgdmFsdWUgaWYgTUFYUEFUSExFTiBpcyB1bmRlZmluZWQuCgoyMDA1LTA4LTI5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgkgICAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIHMtc3RhbGliLmFkYjogQWRkIG1pc3NpbmcgcHJhZ21hIFdhcm5pbmdzIChPbikgdG8gcmVlbmFibGUgV2FybmluZ3MKCXdoZW4gbmVlZGVkLgoJKEluc2lkZV9FbGFiX0ZpbmFsX0NvZGUpOiBNb3ZlZCB0byBpbml0LmMgdG8gYXZvaWQgaGF2aW5nIHRvIGtlZXAKCXRoaXMgY29kZSBpbiB0aGUgR05BVCBydW4tdGltZS4KCgkqIGRlY2wuYywgZmUuaDogUmVwbGFjZSBHQ0NfWkNYIGJ5IEJhY2tfRW5kX0V4Y2VwdGlvbnMuCgoJUFIgYWRhLzIxMDUzCgkqIGluaXQuYyAoX19nbmF0X2Vycm9yX2hhbmRsZXIgW21hbnldKTogTWFyayAibXNnIiBhcyBjb25zdAoJKF9fZ25hdF9lcnJvcl9oYW5kbGVyIFtIUFVYXSk6IE1hcmsgc2lnaW5mbyBwYXJhbWV0ZXIgYXMgdW51c2VkCgoJKF9fZ25hdF9pbnNpZGVfZWxhYl9maW5hbF9jb2RlKTogTW92ZWQgaGVyZSBmcm9tCglTdGFuZGFyZF9MaWJyYXJ5IGFuZCBvbmx5IGRlZmluZWQgZm9yIHRoZSBjb21waWxlci4KCV9fZ25hdF9lcnJvcl9oYW5kbGVyIFtWTVNdOiBBZGp1c3Qgc2lnYXJncyB0byBhY2NvdW50IGZvciBQQyAmIFBTTC4KCShfX2duYXRfaW51bV90b19pdmVjKTogRG8gbm90IGRlZmluZSB0aGlzIGZ1bmN0aW9uIG9uIFZ4V29ya3Mgd2hlbgoJdXNpbmcgUlRQcyBiZWNhdXNlIGRpcmVjdGx5IHZlY3RvcmVkIEludGVycnVwdCByb3V0aW5lcyBhcmUgbm90CglzdXBwb3J0ZWQgb24gdGhpcyBjb25maWd1cmF0aW9uLgoJKGdldHBpZCk6IERvIG5vdCByZWRlZmluZSB0aGlzIGZ1bmN0aW9uIG9uIFZ4V29ya3Mgd2hlbiB1c2luZyBSVFBzCgliZWNhdXNlIHRoaXMgcHJpbWl0aXZlIGlzIHdlbGwgc3VwcG9ydGVkIGJ5IHRoZSBSVFAgbGlicmFyaWVzLgoJKGNvcHlfbXNnKTogQ29ycmVjdCB0aGUgY29kZSB0aGF0IGNoZWNrcyBmb3IgYnVmZmVyIG92ZXJmbG93LgoJRGlzY292ZXJlZCBkdXJpbmcgY29kZSByZWFkaW5nLgoKMjAwNS0wOC0yOSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KSA8RV9WYXJpYWJsZT46IFdoZW4gYWxsb2NhdGluZyBzdG9yYWdlIGZvcgoJYSBsaWJyYXJ5IGxldmVsIG11dGFibGUgdmFyaWFibGUgd2l0aCBhbiBpbml0aWFsaXplciwgdGVsbAoJYnVpbGRfYWxsb2NhdG9yIHRvIGlnbm9yZSB0aGUgaW5pdGlhbGl6ZXIncyBzaXplLiBJdCBtYXkgbm90IGJlIGxhcmdlCgllbm91Z2ggZm9yIGFsbCB0aGUgdmFsdWVzIHRoYXQgbWlnaHQgYmUgYXNzaWduZWQgdG8gdGhlIHZhcmlhYmxlIGxhdGVyCglvbi4KCjIwMDUtMDgtMjkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCSAgICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdHJhbnMuYzogUHJvdGVjdCA8IGluIGVycm9yIG1zZyB3aXRoIHF1b3RlCglSZXBsYWNlIEdDQ19aQ1ggYnkgQmFja19FbmRfRXhjZXB0aW9ucy4KCShhZGRyZXNzYWJsZV9wKSA8Q09NUE9ORU5UX1JFRj46IEFsc28gcmV0dXJuIDEgaWYgdGhlIGZpZWxkCgloYXMgYmVlbiBzdWZmaWNpZW50bHkgYWxpZ25lZCBpbiB0aGUgcmVjb3JkLgoKMjAwNS0wOC0xNSAgSmFtZXMgRS4gV2lsc29uICA8d2lsc29uQHNwZWNpZml4LmNvbT4KCgkqIHN5c3RlbS1saW51eC1hbHBoYS5hZHM6IENoYW5nZSBpYTY0IHRvIGFscGhhLgoKMjAwNS0wOC0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMsIHV0aWxzLmM6IEZpeCBjb21tZW50IHR5cG9zLgoKMjAwNS0wNy0yOSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNvZGVzb3VyY2VyeS5jb20+CgoJKiBkZWNsLmMsIGluaXQuYywgaW5pdGlhbGl6ZS5jOiBGaXggY29tbWVudCB0eXBvcy4KCjIwMDUtMDctMjAgIEdpb3Zhbm5pIEJham8gIDxnaW92YW5uaWJham9AbGliZXJvLml0PgoKCU1ha2UgQ09OU1RSVUNUT1IgdXNlIFZFQyB0byBzdG9yZSBpbml0aWFsaXplcnMuCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KTogVXBkYXRlIHRvIGNvcGUgd2l0aCBWRUMgaW4KCUNPTlNUUlVDVE9SX0VMVFMuCgkqIHRyYW5zLmMgKGV4dHJhY3RfdmFsdWVzKTogTGlrZXdpc2UuCgkqIHV0aWxzLmMgKGNvbnZlcnQsIHJlbW92ZV9jb252ZXJzaW9ucyk6IExpa2V3aXNlLgoJKiB1dGlsczIuYyAoY29udGFpbnNfc2F2ZV9leHByX3AsIGJ1aWxkX2JpbmFyeV9vcCwgYnVpbGRfdW5hcnlfb3AsCglnbmF0X2J1aWxkX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgoyMDA1LTA3LTA5ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIGRlY2wuYyAoY29tcG9uZW50c190b19yZWNvcmQpOiBVc2UgREVDTF9GQ09OVEVYVCBpbnN0ZWFkIG9mCglERUNMX1NFQ1RJT05fTkFNRS4KCShjb21wYXJlX2ZpZWxkX2JpdHBvcyk6IExpa2V3aXNlLgoKMjAwNS0wNy0wOSAgQW5kcmV3IFBpbnNraSAgPHBpbnNraWFAcGh5c2ljcy51Yy5lZHU+CgoJKiB1dGlscy5jIChjcmVhdGVfdmFyX2RlY2wpOiBPbmx5IHNldCBERUNMX0NPTU1PTiBvbgoJVkFSX0RFQ0xzLiBPbmx5IHNldCBTRVRfREVDTF9BU1NFTUJMRVJfTkFNRSBvbgoJVkFSX09SX0ZVTkNUSU9OX0RFQ0xfUC4KCjIwMDUtMDctMDggIERhbmllbCBCZXJsaW4gIDxkYmVybGluQGRiZXJsaW4ub3JnPgoKCSogdXRpbHMuYyAoY3JlYXRlX3BhcmFtX2RlY2wpOiBERUNMX0FSR19UWVBFX0FTX1dSSVRURU4gaXMKCXJlbW92ZWQuCgoyMDA1LTA3LTA3ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBnLXNvY3RoaS1taW5ndy5hZGIgKENfSW5ldF9BZGRyKTogTmV3IGJvZHkgdXNlZCB0byBjb252ZXJ0IHRoZQoJcmV0dXJuZWQgdHlwZSBvbiBXaW5kb3dzLgoKCSogZy1zb2N0aGktbWluZ3cuYWRzIChDX0luZXRfQWRkcik6IFJlbW92ZSBwcmFnbWEgSW1wb3J0IGZvciB0aGlzCglyb3V0aW5lLgoKCSogZy1zb2NrZXQuYWRiIChJbmV0X0FkZHIpOiBDaGVjayBmb3IgZW1wdHkgSW1hZ2UgYW5kIHJhaXNlcyBhbgoJZXhjZXB0aW9uIGluIHRoaXMgY2FzZS4KCVNpbXBsaWZ5IHRoZSBjb2RlIGFzICJJbWFnZSAoSW1hZ2UnUmFuZ2UpIiA9ICJJbWFnZSIuCgoyMDA1LTA3LTA3ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGJpbmRnZW4uYWRiIChHZW5fT3V0cHV0X0ZpbGVfQyk6IFdoZW4gc3dpdGNoIC1hIHdhcyBzcGVjaWZpZWQsIHB1dAoJdGhlIGRlc3RydWN0b3IvY29uc3RydWN0b3IgYXR0cmlidXRlcyBmb3IgPGxpYj5maW5hbC88bGliPmluaXQuCgoJKiBnbmF0YmluZC5hZGIgKEduYXRiaW5kKTogQWxsb3cgLWEgdG8gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIC1DCgoyMDA1LTA3LTA3ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1Byb2NlZHVyZT46IERvIG5vdCBzdHJpcCB0aGUgcGFkZGluZwoJdHlwZSBpZiB0aGUgcGFyYW1ldGVyIGlzIG5vdCBwYXNzZWQgYnkgY29weSBidXQgcmVmZXJlbmNlIGJ5IGRlZmF1bHQuCgoyMDA1LTA3LTA3ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBleHBfY2gzLmFkYiAoQnVpbGRfUmVjb3JkX0luaXRfUHJvYy9GcmVlemVfUmVjb3JkX1R5cGUpOgoJUmVpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3VwcG9ydCBmb3IgYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzIGluIG9yZGVyCgl0byBsZWF2ZSB0aGUgY29kZSBtb3JlIGNsZWFyIGFuZCBlYXN5IHRvIG1haW50YWluLgoKCSogZXhwX2NoNi5hZGIgKEZyZWV6ZV9TdWJwcm9ncmFtKTogUmVpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc3VwcG9ydCBmb3IKCWFic3RyYWN0IGludGVyZmFjZSB0eXBlcyBpbiBvcmRlciB0byBsZWF2ZSB0aGUgY29kZSBjbGVhcmVyIGFuZCBlYXNpZXIKCXRvIG1haW50YWluLgoKCSogZXhwX2Rpc3AuYWRzLCBleHBfZGlzcC5hZGIgKEZpbGxfRFRfRW50cnkpOiBQYXJ0IG9mIGl0cyBmdW5jdGlvbmFsaXR5CglpcyBub3cgaW1wbGVtZW50ZWQgYnkgdGhlIG5ldyBzdWJwcm9ncmFtIEZpbGxfU2Vjb25kYXJ5X0RUX0VudHJ5LgoJKEZpbGxfU2Vjb25kYXJ5X0RUX0VudHJ5KTogR2VuZXJhdGUgdGhlIGNvZGUgbmVjZXNzYXJ5IHRvIGZpbGwgdGhlCglhcHByb3ByaWF0ZSBlbnRyeSBvZiB0aGUgc2Vjb25kYXJ5IGRpc3BhdGNoIHRhYmxlLgoJKE1ha2VfRFQpOiBBZGQgY29kZSB0byBpbmhlcml0IHRoZSBzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGVzIG9mCgl0aGUgYW5jZXN0b3JzLgoKCSogZXhwX3V0aWwuYWRiIChGaW5kX0ludGVyZmFjZV9UYWcvRmluZF9JbnRlcmZhY2VfQURUKTogSW5zdGVhZCBvZgoJaW1wbGVtZW50aW5nIGJvdGggZnVuY3Rpb25hbGl0aWVzIGJ5IG1lYW5zIG9mIGEgY29tbW9uIHJvdXRpbmUsIGVhY2gKCXJvdXRpbmUgaGFzIGl0cyBvd24gY29kZS4KCjIwMDUtMDctMDcgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIGZyZWV6ZS5hZGIgKEZyZWV6ZV9FbnRpdHkpOiBDaGVjayB3cm9uZyB1c2VzIG9mIHRhZyBpbmNvbXBsZXRlIHR5cGVzLgoKCSogcGFyLWNoMy5hZGIgKFBfVHlwZV9EZWNsYXJhdGlvbik6IEdpdmUgc3VwcG9ydCB0byB0YWdnZWQgaW5jb21wbGV0ZQoJdHlwZXM6CgktLQoJICB0eXBlIERFRklOSU5HX0lERU5USUZJRVIgW0RJU0NSSU1JTkFOVF9QQVJUXSBbSVMgVEFHR0VEXTsKCS0tCgoJKiBzZW1fYXR0ci5hZGIgKENoZWNrX05vdF9JbmNvbXBsZXRlX1R5cGUpOiBBZGRpdGlvbmFsIGNoZWNrcyBmb3Igd3JvbmcKCXVzZSBvZiB0YWcgaW5jb21wbGV0ZSB0eXBlcy4KCgkqIHNlbV9jaDMuYWRiIChBbmFseXplX0luY29tcGxldGVfVHlwZSk6IEFkZCBtaW5pbnVtIGRlY29yYXRpb24gdG8KCWdpdmUgc3VwcG9ydCB0byB0YWdnZWQgaW5jb21wbGV0ZSB0eXBlcy4KCgkqIHNlbV9jaDUuYWRiIChBbmFseXplX0Nhc2VfU3RhdGVtZW50KTogSW4gZ2VuZXJhdGVkIGNvZGUsIGlmIHRoZQoJZXhwcmVzc2lvbiBpcyBhIGRpc2NyaW1pbmFudCByZWZlcmVuY2UgYW5kIGl0cyB0eXBlIGlzIHByaXZhdGUsIGFzIGNhbgoJaGFwcGVuIHdpdGhpbiBhIHN0cmVhbSBvcGVyYXRpb24gZm9yIGEgbXV0YWJsZSByZWNvcmQsIHVzZSB0aGUgZnVsbAoJdmlldyBvZiB0aGUgdHlwZSB0byByZXNvbHZlIHRoZSBjYXNlIGFsdGVybmF0aXZlcy4KCShBbmFseXplX0Fzc2lnbm1lbnQpOiBDaGVjayB3cm9uZyBkZXJlZmVyZW5jZSBvZiBpbmNvbXBsZXRlIHR5cGVzLgoKCSogc2VtX2NoNi5hZGIgKFByb2Nlc3NfRm9ybWFscyk6IEFsbG93IHRoZSB1c2Ugb2YgdGFnZ2VkIGluY29tcGxldGUKCXR5cGVzLgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfRXhwbGljaXRfRGVyZWZlcmVuY2UpOiBBbGxvdyB0aGUgdXNlIG9mIHRhZ2dlZAoJaW5jb21wbGV0ZSB0eXBlcy4KCgkqIHNpbmZvLmFkYiAoVGFnZ2dlZF9QcmVzZW50L1NldF9UYWdnZ2VkX1ByZXNlbnQpOiBBcHBsaWNhYmxlIHRvCglOX0luY29tcGxldGVfVHlwZV9EZWNsYXJhdGlvbiBub2Rlcy4KCgkqIHNpbmZvLmFkcyAoTl9JbmNvbXBsZXRlX1R5cGVfRGVjbGFyYXRpb24pOiBBZGRpdGlvbiBvZiBhdHRyaWJ1dGUKCVRhZ19QcmVzZW50IHRvIGdpdmUgc3VwcG9ydCB0byB0YWdnZWQgaW5jb21wbGV0ZSB0eXBlczoKCS0tCgkgIHR5cGUgREVGSU5JTkdfSURFTlRJRklFUiBbRElTQ1JJTUlOQU5UX1BBUlRdIFtJUyBUQUdHRURdOwoJLS0KCjIwMDUtMDctMDcgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJUFIgYWRhLzIyMzAxCgkqIHJhaXNlLmM6IE9ubHkgaW5jbHVkZSB1bndpbmQuaCBpZiBJTl9SVFMsIGFuZCBwcm92aWRlIGR1bW15IHR5cGUKCWRlZmluaXRpb25zIGZvciB0aGUgVW53aW5kIHdyYXBwZXJzIGluIHRoZSBjb21waWxlciBjYXNlLgoKMjAwNS0wNy0wNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHBhci1sb2FkLmFkYiAoTG9hZCk6IElmIGEgY2hpbGQgdW5pdCBpcyBsb2FkZWQgdGhyb3VnaCBhIGxpbWl0ZWRfd2l0aAoJY2xhdXNlLCBlYWNoIHBhcmVudCBtdXN0IGJlIGxvYWRlZCBhcyBhIGxpbWl0ZWQgdW5pdCBhcyB3ZWxsLgoKCSogc2VtX2NoMTAuYWRiIChQcmV2aW91c19XaXRoZWRfVW5pdCk6IEJldHRlciBuYW1lIGZvcgoJQ2hlY2tfV2l0aGVkX1VuaXQuIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgcHJldmlvdXMgd2l0aF9jbGF1c2UgZm9yCgl0aGlzIHVuaXQsIHdoZXRoZXIgbGltaXRlZCBvciBub3QuCgkoRXhwYW5kX0xpbWl0ZWRfV2l0aF9DbGF1c2UpOiBEbyBub3QgZ2VuZXJhdGUgYSBsaW1pdGVkX3dpdGhfY2xhdXNlIG9uCgl0aGUgY3VycmVudCB1bml0LgoJKElzX1Zpc2libGVfVGhyb3VnaF9SZW5hbWluZ3MpOiBOZXcgbG9jYWwgc3VicHJvZ3JhbSBvZiBpbnN0YWxsX2xpbWl0ZWQKCV93aXRoZWRfdW5pdCB0aGF0IGNoZWNrcyBpZiBzb21lIHBhY2thZ2UgaW5zdGFsbGVkIHRocm91Z2ggbm9ybWFsIHdpdGgKCWNsYXVzZXMgaGFzIGEgcmVuYW1pbmcgZGVjbGFyYXRpb24gb2YgcGFja2FnZSB3aG9zZSBsaW1pdGVkLXZpZXcgaXMKCXJlYWR5IHRvIGJlIGluc3RhbGxlZC4gVGhpcyBlbmZvcmNlcyB0aGUgY2hlY2sgb2YgdGhlIHJ1bGUgMTAuMS4yICgyMS8yKQoJb2YgdGhlIGN1cnJlbnQgRHJhZnQgZG9jdW1lbnQgZm9yIEFkYSAyMDA1LgoJKEFuYWx5emVfQ29udGV4dCk6IENvbXBsZXRlIHRoZSBsaXN0IG9mIGNvbXBpbGF0aW9uIHVuaXRzIHRoYXQKCWFyZSBhbGxvd2VkIHRvIGNvbnRhaW4gbGltaXRlZC13aXRoIGNsYXVzZXMuIEl0IGFsc28gY29udGFpbnMKCWNoZWNrcyB0aGF0IHdlcmUgcHJldmlvdXNseSBkb25lIGJ5IEluc3RhbGxfTGltaXRlZF9Db250ZXh0X0NsYXVzZXMuCglUaGlzIG1ha2VzIHRoZSBjb2RlIG1vcmUgY2xlYXIgYW5kIGVhc3kgdG8gbWFpbnRhaW4uCgkoRXhwYW5kX0xpbWl0ZWRfV2l0aF9DbGF1c2UpIEl0IGlzIG5vdyBhIGxvY2FsIHN1YnByb2dyYW0gb2YKCUluc3RhbGxfTGltaXRlZF9Db250ZXh0X0NsYXVzZXMsIGFuZCBjb250YWlucyB0aGUgY29kZSB0aGF0IGFkZHMKCXRoZSBpbXBsaWNpdCBsaW1pdGVkLXdpdGggY2xhdXNlcyBmb3IgcGFyZW50cyBvZiBjaGlsZCB1bml0cy4KCVRoaXMgZnVuY3Rpb25hbGl0eSB3YXMgcHJldm91c2x5IGRvbmUgYnkgQW5hbHl6ZV9Db250ZXh0LgoKCSogc2VtX2NoNC5hZGIgKEFuYWx5emVfU2VsZWN0ZWRfQ29tcG9uZW50KTogQ2hlY2sgd3JvbmcgdXNlIG9mCglpbmNvbXBsZXRlIHR5cGUuCgoJKiBzZW1fY2g3LmFkYiAoQW5hbHl6ZV9QYWNrYWdlX0RlY2xhcmF0aW9uKTogQ2hlY2sgaWYgdGhlIHBhY2thZ2UgaGFzCgliZWVuIGVycm9uZW91c2x5IG5hbWVkIGluIGEgbGltaXRlZC13aXRoIGNsYXVzZSBvZiBpdHMgb3duIGNvbnRleHQuCglJbiB0aGlzIGNhc2UgdGhlIGVycm9yIGhhcyBiZWVuIHByZXZpb3VzbHkgbm90aWZpZWQgYnkgQW5hbHl6ZV9Db250ZXh0LgoKMjAwNS0wNy0wNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoOC5hZGIgKEZpbmRfRGlyZWN0X05hbWUpOiBIYW5kbGUgcHJvcGVybHkgdGhlIGNhc2Ugb2YgYQoJZ2VuZXJpYyBwYWNrYWdlIHRoYXQgY29udGFpbnMgbG9jYWwgZGVjbGFyYXRpb25zIHdpdGggdGhlIHNhbWUgbmFtZS4KCShBbmFseXplX09iamVjdF9SZW5hbWluZyk6IENoZWNrIHdyb25nIHJlbmFtaW5nIG9mIGluY29tcGxldGUgdHlwZS4KCjIwMDUtMDctMDcgIEJlcm5hcmQgQmFubmVyICA8YmFubmVyQGFkYWNvcmUuY29tPgoKCSogdHJhY2ViYWsuYzogUmVmaW5lIHRyYWNlYmFja3MgdG8gdXNlIFVud2luZF9CYWNrdHJhY2Ugc2NoZW1lIG9uCglpYTY0IHBsYXRmb3JtIG9ubHkgb24gcGxhdGZvcm1zIHRoYXQgeW91IHRoZSBHQ0MgdW53aW5kIGxpYnJhcnkKCXJhdGhlciB0aGFuIHRoZSBzeXN0ZW0gdW53aW5kIGxpYnJhcnkuCgoyMDA1LTA3LTA3ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZXhwZWN0LmM6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNS0wNy0wNyAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWRhY29yZS5jb20+CgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBWTVMgcXVhbGlmaWVycyBmb3IgbmV3IGduYXRwcCBzd2l0Y2gKCS0tbm8tc2VwYXJhdGUtaXMKCgkqIGduYXRfdWduLnRleGk6IEFkZCBkZXNjcmlwdGlvbiBmb3IgbmV3IGduYXRwcCBvcHRpb24KCSgtLW5vLXNlcGFyYXRlLWlzKQoKMjAwNS0wNy0wNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGctZXhwZWN0LXZtcy5hZGIsIGctZXhwZWN0LmFkcywgZy1leHBlY3QuYWRiCgkoR2V0X0NvbW1hbmRfT3V0cHV0KTogTmV3IHN1YnByb2dyYW0gdG8gbGF1bmNoIGEgcHJvY2VzcyBhbmQgZ2V0IGl0cwoJc3RhbmRhcmQgb3V0cHV0IGFzIGEgc3RyaW5nLgoKMjAwNS0wNy0wNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCSAgICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogcy1tYXN0b3AtdHJ1NjQuYWRiIChQb3BfRnJhbWUpOiBVc2UgZXhjX2xvb2t1cF9mdW5jdGlvbl9lbnRyeSB0bwoJZmV0Y2ggYSBjb2RlLXJhbmdlIGRlc2NyaXB0b3IgYXNzb2NpYXRlZCB3aXRoIHRoZSBtYWNoaW5lIHN0YXRlLiBPbgoJZmFpbHVyZSBzZXQgdGhlIG1hY2hpbmUgc3RhdGUncyBQQyB0byAwOyBvbiBzdWNjZXNzLCBwYXNzIHRoZQoJZGVzY3JpcHRvciB0byBleGNfdmlydHVhbF91bndpbmQuCgoJKiBpbml0LmMgKFRydTY0IHNlY3Rpb24pOiBOZXcgZnVuY3Rpb24gX19nbmF0X3NldF9jb2RlX2xvYy4KCjIwMDUtMDctMDQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWxpYi10Z3QtdHJ1NjQuYWRiLCBtbGliLXRndC1haXguYWRiLCBtbGliLXRndC1pcml4LmFkYiwKCW1saWItdGd0LWhwdXguYWRiLCBtbGliLXRndC1saW51eC5hZGIsIG1saWItdGd0LXNvbGFyaXMuYWRiLAoJbWxpYi10Z3QtbWluZ3cuYWRiLCBtbGliLXRndC1kYXJ3aW4uYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOgoJUmVtb3ZlIGFsbCBhdXRvLWluaXRpYWxpemF0aW9uIGNvZGUsIGFzIHRoaXMgaXMgbm93IGRvbmUgdGhyb3VnaCB0aGUKCWNvbnN0cnVjdG9yIG1lY2hhbmlzbS4KCgkqIGFkYWludC5oLCBhZGFpbnQuYyAoX19nbmF0X2JpbmRlcl9zdXBwb3J0c19hdXRvX2luaXQsCglfX2duYXRfc2Fsc19pbml0X3VzaW5nX2NvbnN0cnVjdG9ycyk6IE5ldyBmdW5jdGlvbnMuCgoJKiBiaW5kZ2VuLmFkYiAoR2VuX091dHB1dF9GaWxlX0FkYSk6IEdlbmVyYXRlIHByYWdtYXMKCUxpbmtlcl9Db25zdHJ1Y3RvciBhbmQgTGlua2VyX0Rlc3RydWN0b3Igd2hlbiBzd2l0Y2ggLWEgaXMgdXNlZC4KCgkqIGJpbmR1c2cuYWRiOiBBZGQgbGluZSBmb3IgbmV3IHN3aXRjaCAtYQoKCSogZ25hdGJpbmQuYWRiIChHbmF0YmluZF9TdXBwb3J0c19BdXRvX0luaXQpOiBOZXcgQm9vbGVhbiBmdW5jdGlvbgoJKEduYXRiaW5kKTogV2hlbiBzd2l0Y2ggLWEgaXMgdXNlZCwgY2hlY2sgaWYgaXQgaXMgYWxsb3dlZAoKCSogc3dpdGNoLWIuYWRiIChTY2FuX0JpbmRlcl9Td2l0Y2hlcyk6IFByb2Nlc3MgbmV3IHN3aXRjaCAtYQoKMjAwNS0wNy0wNCAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29yZS5jb20+CgoJKiBhLXRhZ3MuYWRiIChUeXBlX1NwZWNpZmljX0RhdGEpOiBEZWZpbmUgVGFnc19UYWJsZSBhcyBhIHNtYWxsIGFycmF5LgoJVGhpcyBwcmV2ZW50cyB1cyBmcm9tIGhpdHRpbmcgYSBsaW1pdGF0aW9uIGR1cmluZyB0aGUgZGVidWcgaW5mbwoJZ2VuZXJhdGlvbiB3aGVuIHVzaW5nIHN0YWJzLgoJKFByaW1zX1B0cik6IExpa2V3aXNlLgoKMjAwNS0wNy0wNCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBjaGVja3MuYWRiIChOdWxsX0V4Y2x1c2lvbl9TdGF0aWNfQ2hlY2tzKTogSW4gdGhlIGNhc2Ugb2YKCU5fT2JqZWN0X0RlY2xhcmF0aW9uLCBvbmx5IHBlcmZvcm0gdGhlIGNoZWNrcyBpZiB0aGUgT2JqZWN0X0RlZmluaXRpb24KCWlzIG5vdCBhbiBBY2Nlc3NfRGVmaW5pdGlvbi4KCgkqIHNlbV9jaDMuYWRiIChBY2Nlc3NfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IEFkZCB0ZXN0IGZvciB0aGUgY2FzZQoJd2hlcmUgdGhlIHBhcmVudCBvZiBhbiB0aGUgYWNjZXNzIGRlZmluaXRpb24gaXMgYW4gTl9PYmplY3RfRGVjbGFyYXRpb24KCXdoZW4gZGV0ZXJtaW5pbmcgdGhlIEFzc29jaWF0ZWRfTm9kZV9Gb3JfSXR5cGUgYW5kIHNjb3BlIG9mIGFuCglhbm9ueW1vdXMgYWNjZXNzLXRvLXN1YnByb2dyYW0gdHlwZS4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfTl9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogU2V0IHRoZQoJQ29ycmVzcG9uZGluZ19TcGVjIG9uIHRoZSBib2R5IGNyZWF0ZWQgZm9yIGEgbnVsbCBwcm9jZWR1cmUuIEFkZCA/Pz8KCWNvbW1lbnQuIFJlbW92ZSBOZXdfQ29weV9UcmVlIGNhbGwgb24gYm9keSBhcmd1bWVudCB0bwoJU2V0X0JvZHlfVG9fSW5saW5lLgoKCSogZXhwX2NoNi5hZGIgKEFkZF9TaW1wbGVfQ2FsbF9CeV9Db3B5X0NvZGUpOiBGb3IgYW4gb3V0IHBhcmFtZXRlciB3aXRoCglkaXNjcmltaW5hbnRzLCB1c2UgdGhlIHR5cGUgb2YgdGhlIGFjdHVhbCBhcyB3ZWxsLCBiZWNhdXNlIHRoZQoJZGlzY3JpbWluYW50cyBtYXkgYmUgcmVhZCBieSB0aGUgY2FsbGVkIHN1YnByb2dyYW0uCgoJKiBzZW1fY2gzLmFkYiAoQWNjZXNzX1R5cGVfRGVjbGFyYXRpb24pOiBJZiB0aGUgZGVzaWduYXRlZCB0eXBlIGlzIGFuCglhY2Nlc3MgdHlwZSB3ZSBkbyBub3QgbmVlZCB0byBoYW5kbGUgbm9uLWxpbWl0ZWQgdmlld3MuCgkoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IEFkZGl0aW9uYWwgY2hlY2sgdG8gY2hlY2sgdGhhdCBpbiBjYXNlIG9mCglwcml2YXRlIHR5cGVzLCBpbnRlcmZhY2VzIGFyZSBvbmx5IGFsbG93ZWQgaW4gcHJpdmF0ZSBleHRlbnNpb25zLgoKMjAwNS0wNy0wNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGRlY2wuYyAocHJlcGVuZF9hdHRyaWJ1dGVzKSA8UHJhZ21hX0xpbmtlcl9Db25zdHJ1Y3Rvcj46IE5ldyBjYXNlLgoJPFByYWdtYV9MaW5rZXJfRGVzdHJ1Y3Rvcj46IExpa2V3aXNlLgoKCSogZWluZm8uYWRzIChIYXNfR2lnaV9SZXBfSXRlbSk6IERvY3VtZW50IFByYWdtYV9MaW5rZXJfQ29uc3RydWN0b3IgYW5kCglQcmFnbWFfTGlua2VyX0Rlc3RydWN0b3IuCgoJKiBnaWdpLmggKGF0dHJfdHlwZSk6IEFkZCBBVFRSX0xJTktfQ09OU1RSVUNUT1IgYW5kCglBVFRSX0xJTktfREVTVFJVQ1RPUi4KCShzdGF0aWNfY3RvcnMsIHN0YXRpY19kdG9ycyk6IE5ldyB2YXJpYWJsZXMuCgoJKiBtaXNjLmMgKGduYXRfZXhwYW5kX2JvZHkpOiBPdXRwdXQgY3VycmVudCBmdW5jdGlvbiBhcyBjb25zdHJ1Y3RvcgoJYW5kIGRlc3RydWN0b3IgaWYgcmVxdWVzdGVkLgoKCSogcGFyLXByYWcuYWRiOiBBZGQgcHJvY2Vzc2luZyBmb3IgcHJhZ21hIExpbmtlcl9Db25zdHJ1Y3RvciBhbmQKCUxpbmtlcl9EZXN0cnVjdG9yLgoKCSogc2VtX3ByYWcuYWRiIChGaW5kX1VuaXF1ZV9QYXJhbWV0ZXJsZXNzX1Byb2NlZHVyZSk6IE5ldyBmdW5jdGlvbgoJZXh0cmFjdGVkIGZyb20gQ2hlY2tfSW50ZXJydXB0X09yX0F0dGFjaF9IYW5kbGVyLgoJKENoZWNrX0ludGVycnVwdF9Pcl9BdHRhY2hfSGFuZGxlcik6IEludm9rZSBpdC4KCUltcGxlbWVudCBwcmFnbWEgTGlua2VyX0NvbnN0cnVjdG9yIGFuZCBMaW5rZXJfRGVzdHJ1Y3RvciB3aXRoIHRoZQoJaGVscCBvZiBGaW5kX1VuaXF1ZV9QYXJhbWV0ZXJsZXNzX1Byb2NlZHVyZS4KCVJlcGxhY2UgTmFtZV9BbGlhcyB3aXRoIE5hbWVfVGFyZ2V0IGZvciBwcmFnbWEgTGlua2VyX0FsaWFzLgoKCSogc25hbWVzLmgsIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6CglBZGQgTmFtZV9MaW5rZXJfQ29uc3RydWN0b3IgYW5kIE5hbWVfTGlua2VyX0Rlc3RydWN0b3IuCglBZGQgUHJhZ21hX0xpbmtlcl9Db25zdHJ1Y3RvciBhbmQgUHJhZ21hX0xpbmtlcl9EZXN0cnVjdG9yLgoJKiBzbmFtZXMuYWRiOiBSZW1vdmUgTmFtZV9BbGlhcy4KCgkqIHRyYW5zLmM6IEluY2x1ZGUgY2dyYXBoLmguCgkoYnVpbGRfZ2xvYmFsX2NkdG9yKTogTmV3IGZ1bmN0aW9uLgoJKENvbXBpbGF0aW9uX1VuaXRfdG9fZ251KTogQnVpbGQgZ2xvYmFsIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yIGlmCgluZWVkZWQuCgkodHJlZV90cmFuc2Zvcm0pIDxOX0lkZW50aWZpZXI+OiBTdWJzdGl0dXRlIHJlbmFtaW5nIG9mIHZpZXctY29udmVyc2lvbnMKCW9mIG9iamVjdHMgdG9vLgoJKGFkZHJlc3NhYmxlX3ApIDxDT01QT05FTlRfUkVGPjogVW5jb25kaXRpb25hbGx5IHRlc3QKCURFQ0xfTk9OQUREUkVTU0FCTEVfUCBvbiBTVFJJQ1RfQUxJR05NRU5UIHBsYXRmb3Jtcy4KCgkqIHV0aWxzLmMgKHByb2Nlc3NfYXR0cmlidXRlcykgPEFUVFJfTElOS19BTElBUz46IERvIG5vdCBhc3NlbWJsZSB0aGUKCXZhcmlhYmxlIGlmIGl0IGlzIGV4dGVybmFsLgoKCShzdGF0aWNfY3RvcnMsIHN0YXRpY19kdG9ycyk6IE5ldyBnbG9iYWwgdmFyaWFibGVzLgoJKHByb2Nlc3NfYXR0cmlidXRlcykgPEFUVFJfTElOS19DT05TVFJVQ1RPUj46IE5ldyBjYXNlLgoJPEFUVFJfTElOS19ERVNUUlVDVE9SPjogTGlrZXdpc2UuCgkoZW5kX3N1YnByb2dfYm9keSk6IENoYWluIGZ1bmN0aW9uIGFzIGNvbnN0cnVjdG9yIGFuZCBkZXN0cnVjdG9yCglpZiByZXF1ZXN0ZWQuCgoJKiBleHBfdXRpbC5hZGIgKEZvcmNlX0V2YWx1YXRpb24pOiBVbmNvbmRpdGlvbmFsbHkgaW52b2tlCglSZW1vdmVfU2lkZV9FZmZlY3RzIHdpdGggVmFyaWFibGVfUmVmIHNldCB0byB0cnVlLgoJKFJlbW92ZV9TaWRlX0VmZmVjdHMpOiBIYW5kbGUgc2NhbGFyIHR5cGVzIGZpcnN0LiBVc2UgYSByZW5hbWluZwoJZm9yIG5vbi1zY2FsYXIgdHlwZXMgZXZlbiBpZiBWYXJpYWJsZV9SZWYgaXMgdHJ1ZSBhbmQgZm9yIGNsYXNzLXdpZGUKCWV4cHJlc3Npb25zLgoKMjAwNS0wNy0wNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2F0dHIuYWRiIChNb2QpOiBFdmFsdWF0ZSBjb25kaXRpb24gZXhwcmVzc2lvbiB3aXRoIGNoZWNrcyBvZmYsCgl0byBwcmV2ZW50IHNwdXJpb3VzIHdhcm5pbmdzLgoKMjAwNS0wNy0wNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXN0LmFkYiAoQnVpbGRfVHlwZUNvZGVfQ2FsbCk6IFJlbW92ZSBpbmNvcnJlY3QgcHJvY2Vzc2luZyBmb3IKCUl0eXBlcy4gSXR5cGVzIGFyZSByZWFsbHkgdW5leHBlY3RlZCB0aGVyZS4KCShCdWlsZF9UeXBlQ29kZV9GdW5jdGlvbik6IEdlbmVyYWxpc2Ugc3BlY2lhbCBwcm9jZXNzaW5nIGZvciBJdHlwZXMgdG8KCWhhbmRsZSB0aGUgY2FzZSBvZiBudW1lcmljIGltcGxpY2l0IGJhc2UgdHlwZXMgYXMgd2VsbCBhcyBlbnVtZXJhdGVkCglvbmVzLgoKMjAwNS0wNy0wNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2ludHIuYWRiIChFeHBhbmRfVW5jX0RlYWxsb2NhdGlvbik6IElmIHRoZSBkZXNpZ25hdGVkIHR5cGUgaXMKCWNvbnRyb2xsZWQsIGluZGljYXRlIHRoZSBleHBlY3RlZCB0eXBlIG9mIHRoZSBkZXJlZmVyZW5jZSB0aGF0IGlzCgljcmVhdGVkIGZvciB0aGUgY2FsbCB0byBEZWVwX0ZpbmFsaXplLCB0byBwcmV2ZW50IHNwdXJpb3VzIGVycm9ycyB3aGVuCgl0aGUgZGVzaWduYXRlZCB0eXBlIGlzIHByaXZhdGUgYW5kIGNvbXBsZXRlZCB3aXRoIGEgZGVyaXZhdGlvbiBmcm9tCglhbm90aGVyIHByaXZhdGUgdHlwZS4KCjIwMDUtMDctMDQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZS5hZGIgKENoYW5nZV9Ub19PYmplY3RfRGlyZWN0b3J5KTogV2hlbiB1bmFibGUgdG8gY2hhbmdlIHRoZQoJY3VycmVudCBkaXIgdG8gdGhlIG9iamVjdCBkaXJlY3RvcnksIG91dHB1dCB0aGUgZnVsbCBwYXRoIG9mIHRoZQoJZGlyZWN0b3J5LgoKMjAwNS0wNy0wNCAgTWF0dGhldyBHaW5nZWxsICA8Z2luZ2VsbEBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZXBsYWNlIGluZGVwc3ctbGludXguYWRiIGJ5IGluZGVwc3ctZ251LmFkYgoKCSogaW5kZXBzdy1saW51eC5hZGI6IFJlcGxhY2UgYnkuLi4KCgkqIGluZGVwc3ctZ251LmFkYjogLi4udGhpcyBuZXcgZmlsZQoKMjAwNS0wNy0wNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtbGliLXByai5hZGIgKEF1dG9fSW5pdGlhbGl6ZSk6IE5ldyBjb25zdGFudCBTdHJpbmcKCShTQUxzX1VzZV9Db25zdHJ1Y3RvcnMpOiBOZXcgQm9vbGVhbiBmdW5jdGlvbgoJKEJ1aWxkX0xpYnJhcnkpOiBDYWxsIGduYXRiaW5kIHdpdGggQXV0b19Jbml0aWFsaXplIHN3aXRjaCB3aGVuCglTQUxzX1VzZV9Db25zdHJ1Y3RvcnMgcmV0dXJucyBUcnVlLgoKCSogbWxpYi10Z3QuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIG1saWItdXRsLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBvcHQuYWRzOiAoVXNlX1ByYWdtYV9MaW5rZXJfQ29uc3RydWN0b3IpOiBOZXcgQm9vbGVhbiBmbGFnCgoyMDA1LTA3LTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBwYXItY2g5LmFkYiAoUF9UYXNrLCBQX1Byb3RlY3RlZCk6IEluZGljYXRlIHRoYXQgc2luZ2xlIHRhc2sgYW5kCglzaW5nbGUgcHJvdGVjdGVkIGRlY2xhcmF0aW9ucyBjYW4gaGF2ZSBhbiBpbnRlcmZhY2UgbGlzdC4KCShQX0VudHJ5X0RlY2xhcmF0aW9uKTogQWRkIGhhbmRsZXIgZm9yIEVycm9yX1Jlc3luYywgd2hpY2ggY2FuIGJlIHJhaXNlZAoJd2l0aCBzZXJpb3VzbHkgbWFsZm9ybWVkIGVudHJ5IGRlY2xhcmF0aW9ucywgYW5kIGxlYWQgdG8gY29tcGlsYXRpb24KCWFiYW5kb25lZCBtZXNzYWdlcy4KCjIwMDUtMDctMDQgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCgkqIHBhci1sb2FkLmFkYjogTG9hZCB0aGUgY29udGV4dCBpdGVtcyBpbiB0d28gcm91bmRzLgoKMjAwNS0wNy0wNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzY25nLmFkYjogRG8gbm90IGNvbnNpZGVyIE1vZCB1c2VkIGFzIGFuIGF0dHJpYnV0ZSB0byBiZSBhIGtleXdvcmQKCjIwMDUtMDctMDQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKEJ1aWxkX0xpbWl0ZWRfVmlld3MpOiBBIHR5cGUgZGVjbGFyZWQgd2l0aCBhIHByaXZhdGUKCXR5cGUgZXh0ZW5zaW9uIG5lZWRzIGEgbGltaXRlZCB2aWV3LgoJUmVtb3ZlIHByZXZpb3VzIHJlc3RyaWN0aW9uIG9uIHByaXZhdGUgdHlwZXMgYXZhaWxhYmxlIHRocm91Z2ggdGhlCglsaW1pdGVkLXZpZXcgKG9ubHkgdGFnZ2VkIHByaXZhdGUgdHlwZXMgd2VyZSBwcmV2aW91c2x5IGFsbG93ZWQpLgoJKEluc3RhbGxfV2l0aGVkX1VuaXQpOiBJbiB0aGUgY29kZSB0aGF0IGltcGxlbWVudHMgdGhlCglsZWdhbGl0eSBydWxlIGdpdmVuIGluIEFJLTM3NywgZXhjbHVkZSBhIGNoaWxkIHVuaXQgd2l0aCB0aGUgbmFtZQoJU3RhbmRhcmQsIGJlY2F1c2UgaXQgaXMgYSBob21vbnltIG9mIHRoZSBTdGFuZGFyZCBlbnZpcm9ubWVudCBwYWNrYWdlLgoKMjAwNS0wNy0wNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChUcmFuc2Zvcm1fT2JqZWN0X09wZXJhdGlvbik6IEZvciBhbiBhY3R1YWwgdGhhdCBpcyBhbgoJb3ZlcmxvYWRlZCBmdW5jdGlvbiBjYWxsLCBjYXJyeSBpbnRlcnByZXRhdGlvbnMgZnJvbSB0aGUgb3JpZ2luYWwgdHJlZQoJdG8gdGhlIGNvcHkuCgoyMDA1LTA3LTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g2LmFkYiAoQ29uZm9ybWluZ19UeXBlcyk6IElmIHRoZSB0eXBlcyBhcmUgYW5vbnltb3VzIGFjY2VzcwoJdHlwZXMgY2hlY2sgd2hldGhlciBzb21lIGRlc2lnbmF0ZWQgdHlwZSBpcyBhIGxpbWl0ZWQgdmlldywgYW5kIHVzZQoJdGhlIG5vbi1saW1pdGVkIHZpZXcgaWYgYXZhaWxhYmxlLgoKMjAwNS0wNy0wNCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogc2VtX2V2YWwuYWRiIChTdWJ0eXBlc19TdGF0aWNhbGx5X01hdGNoKTogVXNlIHRoZSBkaXNjcmltaW5hbnQKCWNvbnN0cmFpbnQgb2YgZnVsbCB2aWV3IG9mIGEgcHJpdmF0ZSB2aWV3IFQxIGlmIHByZXNlbnQsIHdoZW4gVDIgaXMgYQoJZGlzY3JpbWluYXRlZCBmdWxsIHZpZXcuCgoyMDA1LTA3LTA0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfQWN0dWFscyk6IERvIG5vdCByZXNvbHZlIHRoZSBleHByZXNzaW9uIG9mIGFuCglhY3R1YWwgdGhhdCBpcyBhIHZpZXcgY29udmVyc2lvbiBvZiBhIGJpdCBwYWNrZWQgYXJyYXkgcmVmZXJlbmNlLgoKMjAwNS0wNy0wNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX3R5cGUuYWRiIChDb3ZlcnMpOiBWZXJpZnkgdGhhdCBDb3JyZXNwb25kaW5nX1JlY29yZF9UeXBlIGlzCglwcmVzZW50IGJlZm9yZSBjaGVja2luZyB3aGV0aGVyIGFuIGludGVyZmFjZSB0eXBlIGNvdmVycyBhIHN5bmNocm9uaXplZAoJdHlwZS4KCjIwMDUtMDctMDQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV91dGlsLmFkYiAoSXNfT2JqZWN0X1JlZmVyZW5jZSk6IEFuIGluZGV4ZWQgb3Igc2VsZWN0ZWQgY29tcG9uZW50Cgl3aG9zZSBwcmVmaXggaXMgYW4gaW1wbGljaXQgZGVyZWZlcmVuY2UgaXMgYW4gb2JqZWN0IHJlZmVyZW5jZS4gUmVtb3ZlcwoJc3B1cmlvdXMgZXJyb3JzIHdoZW4gY29tcGlsaW5nIHdpdGggLWduYXRjLgoKMjAwNS0wNy0wNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJUFIgYWRhLzIyMDM5CgkqIHMtc29wY28zLmFkcywgcy1zb3BjbzQuYWRzLCBzLXNvcGNvNS5hZHM6IE1pbm9yIGRvY3VtZW50YXRpb24gZml4CgoyMDA1LTA3LTA0ICBNYXR0aGV3IEdpbmdlbGwgIDxnaW5nZWxsQGFkYWNvcmUuY29tPgoKCSogdHJhY2ViYWsuYzogRW5hYmxlIHRyYWNlYmFja3Mgb24gaWE2NCBwbGF0Zm9ybXMKCjIwMDUtMDctMDQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogdm1zX2NvbnYuYWRiIChJbml0aWFsaXplKTogQWxsb3cgbXVsdGlwbGUgQUxJIGZpbGVzIHRvIGJlIGdpdmVuIHRvCgl0aGUgR05BVCBCSU5EIGNvbW1hbmQsIGFzIGduYXRiaW5kIGFjY2VwdHMgbXVsdGlwbGVzIEFMSSBmaWxlcyB3aXRoCgl0aGUgLUwgb3IgLW4gc3dpdGNoZXMuCgoyMDA1LTA3LTA0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG1ha2VncHIuYWRiIChCdWlsZF9HbG9iYWxfQXJjaGl2ZSk6IE1ha2Ugc3VyZSB0aGUgbGlzdCBvZiBzb3VyY2VzIGlzCgljb3JyZWN0bHkgY29tcHV0ZWQgYW5kIHRoZSBtYWluIHByb2plY3QgZGF0YSBpcyBub3QgbW9kaWZpZWQgd2hpbGUKCWRvaW5nIHNvLgoJKEFkZF9DX1BsdXNfUGx1c19MaW5rX0Zvcl9HbmF0bWFrZSk6IEFsd2F5cyBsaW5rIHdpdGggdGhlIEMrKyBjb21waWxlcgoJKENob29zZV9DX1BsdXNfUGx1c19MaW5rX1Byb2Nlc3MpOiBEbyBub3QgZ2VuZXJhdGUgc2hlbGwgc2NyaXB0CgljKytsaW5rZXIgYXMgdGhpcyBkb2VzIG5vdCB3b3JrIG9uIHNvbWUgcGxhdGZvcm1zLgoKMjAwNS0wNy0wNCAgTWF0dGhldyBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgoJKiBhLWNvbnZlYy5hZHMsIGEtY29pbnZlLmFkczogRGVjbGFyYXRpb24gb2Ygc3VidHlwZSBFeHRlbmRlZF9JbmRleAoJd2FzIGNoYW5nZWQuCgkqIGEtY29pbnZlLmFkYjogUGVyZm9ybSBjb25zdHJhaW50IGNoZWNrcyBleHBsaWNpdGx5LgoKMjAwNS0wNy0wNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogTWFrZS1sYW5nLmluOiAoYWRhL3Rhcmd0eXBzLm8pOiBBZGQgbWlzc2luZyBUUkVFX0ggZGVwZW5kZW5jeS4KCW5ldyB0YXJnZXQgZ2VuLXNvY2Nvbi4KCjIwMDUtMDctMDQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcy1tYXN0b3AtaXJpeC5hZGIsIHMtbWFzdG9wLXZtcy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNS0wNy0wNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGctc29ja2V0LmFkcyAoQ2hlY2tfU2VsZWN0b3IpOiBNaW5vciByZXdvcmRpbmcgb2YgY29tbWVudC4KCjIwMDUtMDctMDQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogdm1zX2RhdGEuYWRzOiBBZGQgVk1TIHF1YWxpZmllcnMgZm9yIG5ldyBnbmF0cHAgc3dpdGNoIC0tZW9sPQoKMjAwNS0wNy0wNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGdlbi1zb2Njb24uYzogQWRkIGNvbnN0YW50cyBTT19TTkRUSU1FTyBhbmQgU09fUkNWVElNRU8uCgoyMDA1LTA3LTA0ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IEFkZCBkZXNjcmlwdGlvbiBvZiAtLWVvbCBnbmF0cHAgb3B0aW9uCgoyMDA1LTA3LTA0ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnbmF0X3JtLnRleGk6IEFkZCBhIG5vdGUgdGhhdCBwcmFnbWEgVW5yZWZlcmVuY2VkIGlzIG5vdCBhcHByb3ByaWF0ZQoJaWYgdGhlIHVzZXIgd2FudHMgYWxsIGNhbGxzIG9mIGEgc3VicHJvZ3JhbSB0byBiZSBmbGFnZ2VkLAoJaW5kZXBlbmRlbnRseSBvZiB3aGV0aGVyIHRoZXkgYXJlIG1hZGUgZnJvbSB3aXRoaW4gdGhlIHNhbWUgdW5pdCBvcgoJYW5vdGhlciB1bml0LgoJTWVudGlvbiByZXN0cmljdGlvbiBmb3IgcHJhZ21hIExpbmtlcl9BbGlhcyBvbiBzb21lIHBsYXRmb3Jtcy4KCURvY3VtZW50IHByYWdtYSBMaW5rZXJfQ29uc3RydWN0b3IgYW5kIExpbmtlcl9EZXN0cnVjdG9yLgoJUmV3cml0ZSBkb2N1bWVudGF0aW9uIG9mIFdlYWtfRXh0ZXJuYWwsIExpbmtlcl9TZWN0aW9uIGFuZAoJTGlua2VyX0FsaWFzIHByYWdtYXMuCgoyMDA1LTA3LTA0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLXN0YXVzYS5hZHMsIHMtc3RhdXNhLmFkYjogTmV3IGZpbGVzLgoKMjAwNS0wNi0zMCAgS2VsbGV5IENvb2sKCgkqIGFsbCBmaWxlczogIFVwZGF0ZSBGU0YgYWRkcmVzcyBpbiBjb3B5cmlnaHQgaGVhZGVycy4KCSogZ2VuLXNvY2Nvbi5jbyAobWFpbik6IE91dHB1dCBuZXcgRlNGIGFkZHJlc3MgaW4gZ2VuZXJhdGVkIGZpbGVzLgoKMjAwNS0wNi0yOCAgUGF1bCBCcm9vayAgPHBhdWxAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1pc2MuYyAoZ25hdF9pbml0X2djY19laCk6IENhbGwgZGVmYXVsdF9pbml0X3Vud2luZF9yZXN1bWVfbGliZnVuYy4KCjIwMDUtMDYtMTQgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHMtbWFzdG9wLWlyaXguYWRiIChQb3BfRnJhbWUpOiBSZXZlcnQgc2hvcmN1dHMgYXZvaWRpbmcgY2FsbHMgdG8KCWV4Y191bndpbmQsIG5vdyB0aGF0IHdlIGFyZSBnZW5lcmF0aW5nIHByb3BlciAuZGVidWdfZnJhbWUgb3V0cHV0IGZvcgoJdGhhdCB0YXJnZXQuCgoJKiB0cmFjZWJhay5jOiBSZW1vdmUgdGhlIG1pcHMtaXJpeCBzZWN0aW9uLCBhcyB3ZSBhcmUgbm93IHVzaW5nIHRoZQoJcy1tYXN0b3AgYmFzZWQgdW53aW5kZXIgYWdhaW4uCglVbmRlciBTUEFSQy9Tb2xhcmlzLCB0YWtlIGludG8gYWNjb3VudCB0aGUgc3RhY2sgYmlhcyB0byBjb21wdXRlIHRoZQoJZnJhbWUgb2Zmc2V0LiAgVGhlIHN0YWNrIGJpYXMgaXMgMCBmb3IgdGhlIFY4IEFCSSBhbmQgMjA0NyBmb3IgdGhlIFY5CglBQkkuCgoyMDA1LTA2LTE0ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogZy10cmFzeW0tdm1zLmFkYjogcmVuYW1lZCBnLXRyYXN5bS12bXMtYWxwaGEuYWRiCgoJKiBnLXRyYXN5bS12bXMtYWxwaGEuYWRiLCBnLXRyYXN5bS12bXMtaWE2NC5hZGI6IE5ldyBmaWxlcwoKMjAwNS0wNi0xNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogYS1zdHJoYXMuYWRzLCBhLXNlY2Fpbi5hZGIsIGEtc2VjYWluLmFkcywgYS1yYnRnc28uYWRzLCBhLWNnYWFzby5hZGIsCglhLWNnYWFzby5hZHMsIGEtY2dhcnNvLmFkYiwgYS1jZ2Nhc28uYWRiLCBhLWNnYXJzby5hZHMsIGEtY2djYXNvLmFkcywKCWEtY29udGFpLmFkcywgYS1jb3BybnUuYWRzLCBhLWNvcHJudS5hZGI6IEZpeCBoZWFkZXIgc3R5bGUgKHNwYWNlcyBpbgoJcGFja2FnZSBuYW1lKS4KCgkqIGEtaW50bmFtLWx5bnhvcy5hZHMsIGEtaW50bmFtLXVuaXh3YXJlLmFkcywgYS1pbnRuYW0tdHJ1NjQuYWRzLAoJYS1pbnRuYW0tYWl4LmFkcywgYS1pbnRuYW0taXJpeC5hZHMsIGEtZXhjcG9sLWludGVyaXguYWRiLAoJYS1pbnRuYW0taHB1eC5hZHMsIGEtaW50bmFtLWxpbnV4LmFkcywgYS1pbnRuYW0tZHVtbXkuYWRzLAoJYS1pbnRuYW0tb3MyLmFkcywgYS1udW1hdXgtbGliYy14ODYuYWRzLCBhLWludG5hbS1pbnRlcml4LmFkcywKCWEtaW50bmFtLXNvbGFyaXMuYWRzLCBhLWNhbGRlbC12bXMuYWRiLCBhLWNhbGVuZC12bXMuYWRzLAoJYS1pbnRuYW0tdm1zLmFkcywgYS1leGNwb2wtYWJvcnQuYWRiLCBhLWludG5hbS1taW5ndy5hZHMsCglhLWludG5hbS12eHdvcmtzLmFkcywgYS1udW1hdXgtdnh3b3Jrcy5hZHMsIHMtb3NpbnRlLXVuaXh3YXJlLmFkYiwKCXMtb3NpbnRlLXVuaXh3YXJlLmFkcywgcy1vc2ludGUtbHlueG9zLTMuYWRiLCBzLW9zaW50ZS1seW54b3MtMy5hZHMsCglzLW9zaW50ZS1ocHV4LmFkcywgcy1vc2ludGUtc29sYXJpcy1wb3NpeC5hZHMsIGEtaW50bmFtLWZyZWVic2QuYWRzLAoJcy1vc2ludGUtZnJlZWJzZC5hZGIsIHMtb3NpbnRlLWZyZWVic2QuYWRzLCBzLW9zaW50ZS1seW54b3MuYWRiLAoJcy1vc2ludGUtbHlueG9zLmFkcywgcy10cG9wc3AtbHlueG9zLmFkYiwgcy1vc2ludGUtdHJ1NjQuYWRiLAoJcy1vc2ludGUtdHJ1NjQuYWRzLCBzLXRwb3BzcC1wb3NpeC1mb3JlaWduLmFkYiwgcy12eHdvcmstYWxwaGEuYWRzLAoJcy1vc2ludGUtYWl4LmFkYiwgcy1vc2ludGUtYWl4LmFkcywgcy1vc2ludGUtYWl4LWZzdS5hZHMsCglzLW9zaW50ZS1pcml4LmFkYiwgcy1vc2ludGUtaXJpeC5hZHMsIHMtaW50ZXJyLXNpZ2FjdGlvbi5hZGIsCglzLW9zaW50ZS1pcml4LWF0aHJlYWQuYWRzLCBzLW9zaW50ZS1ocHV4LWRjZS5hZGIsCglzLW9zaW50ZS1ocHV4LWRjZS5hZHMsIHMtb3NpbnRlLXBvc2l4LmFkYiwgcy1vc2ludGUtbGludXguYWRzLAoJcy12eHdvcmstbTY4ay5hZHMsIHMtb3NpbnRlLWxpbnV4LWZzdS5hZHMsIHMtdnh3b3JrLW1pcHMuYWRzLAoJcy1vc2ludGUtZHVtbXkuYWRzLCBzLWludGVyci1kdW1teS5hZGIsIHMtb3NpbnRlLW9zMi5hZGIsCglzLW9zaW50ZS1vczIuYWRzLCBzLW9zcHJpbS1vczIuYWRiLCBzLW9zaW50ZS1pbnRlcml4LmFkcywKCXMtb3NwcmltLXVuaXguYWRiLCBzLXZ4d29yay1wcGMuYWRzLCBzLW9zaW50ZS1zb2xhcmlzLmFkYiwKCXMtb3NpbnRlLXNvbGFyaXMuYWRzLCBzLW9zcHJpbS1zb2xhcmlzLmFkYiwgcy10cG9wc3Atc29sYXJpcy5hZGIsCglzLXZ4d29yay1zcGFyY3Y5LmFkcywgcy1vc2ludGUtc29sYXJpcy1mc3UuYWRzLCBzLWludGVyci12bXMuYWRiLAoJcy1vc2ludGUtdm1zLmFkYiwgcy1vc2ludGUtdm1zLmFkcywgcy1vc3ByaW0tdm1zLmFkYiwKCXMtb3NwcmltLXZtcy5hZHMsIHMtdHBvcGRlLXZtcy5hZGIsIHMtdHBvcGRlLXZtcy5hZHMsCglzLW9zcHJpbS1taW5ndy5hZGIsIHMtdnh3b3JrLXhzY2FsZS5hZHMsIHMtaW50ZXJyLXZ4d29ya3MuYWRiLAoJcy1vc2ludGUtdnh3b3Jrcy5hZGIsIHMtb3NpbnRlLXZ4d29ya3MuYWRzLCBzLW9zcHJpbS12eHdvcmtzLmFkYiwKCXMtdGZzZXRyLXZ4d29ya3MuYWRiLCBzLXRwb3BzcC12eHdvcmtzLmFkYiwgcy1pbnRtYW4tcG9zaXguYWRiLAoJcy1vc2ludGUtZnN1LmFkYiwgcy1vc3ByaW0tcG9zaXguYWRiLCBzLXRmc2V0ci1kZWZhdWx0LmFkYiwKCXMtdHBvcHNwLXBvc2l4LmFkYiwgcy10cmFjZXMtZGVmYXVsdC5hZGIsIHMtdHJhZm9yLWRlZmF1bHQuYWRiLAoJcy10cmFmb3ItZGVmYXVsdC5hZHMsIHMtdHJhdGFzLWRlZmF1bHQuYWRiLCBhLW51bWF1eC14ODYuYWRiLAoJYS1udW1hdXgteDg2LmFkcywgYS1hc3RhY28uYWRiLCBhLWFzdGFjby5hZHMsIGEtY2FsZGVsLmFkYiwKCWEtY2FsZGVsLmFkcywgYS1jaGFyYWMuYWRzLCBhLWNobGF0MS5hZHMsIGEtY2hsYXQ5LmFkcywgYS1jb2xpZW4uYWRiLAoJYS1jb2xpZW4uYWRzLCBhLWNvbGlyZS5hZGIsIGEtY29saXJlLmFkcywgYS1jb21saW4uYWRiLCBhLWN3aWxhMS5hZHMsCglhLWN3aWxhOS5hZHMsIGFkYS5hZHMsIGEtZGVjaW1hLmFkYiwgYS1kaW9jc3QuYWRzLCBhLWRpcmVpby5hZGIsCglhLWR5bnByaS5hZGIsIGEtZHlucHJpLmFkcywgYS1leGNwb2wuYWRiLCBhLWZsdGVpby5hZHMsIGEtZnd0ZWlvLmFkcywKCWEtaW50ZWlvLmFkcywgYS1pbnRlcnIuYWRiLCBhLWludG5hbS5hZHMsIGEtaW50c2lnLmFkYiwgYS1pbnRzaWcuYWRzLAoJYS1pb2V4Y2UuYWRzLCBhLWl3dGVpby5hZHMsIGEtbGZ0ZWlvLmFkcywgYS1sZnd0aW8uYWRzLCBhLWxpdGVpby5hZHMsCglhLWxpd3Rpby5hZHMsIGEtbGxmdGlvLmFkcywgYS1sbGZ3dGkuYWRzLCBhLWxsaXRpby5hZHMsIGEtbGxpd3RpLmFkcywKCWEtbmNlbGZ1LmFkcywgYS1uZ2NlZnUuYWRiLCBhLW5nY2VmdS5hZHMsIGEtbmdjb3R5LmFkYiwgYS1uZ2VsZnUuYWRiLAoJYS1uZ2VsZnUuYWRzLCBhLW5sY2VmdS5hZHMsIGEtbmxjb3R5LmFkcywgYS1ubGVsZnUuYWRzLCBhLW5sbGNlZi5hZHMsCglhLW5sbGN0eS5hZHMsIGEtbmxsZWZ1LmFkcywgYS1uc2NlZnUuYWRzLCBhLW5zY290eS5hZHMsIGEtbnNlbGZ1LmFkcywKCWEtbnVjb3R5LmFkcywgYS1udWRpcmEuYWRiLCBhLW51ZWxmdS5hZHMsIGEtbnVmbHJhLmFkYiwgYS1udW1hdXguYWRzLAoJYS1udW1lcmkuYWRzLCBhLXJlYXRpbS5hZGIsIGEtcmV0aWRlLmFkYiwgYS1yZXRpZGUuYWRzLCBhLXNlcXVpby5hZGIsCglhLXNlcXVpby5hZHMsIGEtc2Z0ZWlvLmFkcywgYS1zZnd0aW8uYWRzLCBhLXNpb2NzdC5hZHMsIGEtc2l0ZWlvLmFkcywKCWEtc2l3dGlvLmFkcywgYS1zc2ljc3QuYWRzLCBhLXNzaXRpby5hZHMsIGEtc3Npd3RpLmFkcywgYS1zdG1hY28uYWRzLAoJYS1zdG9yaW8uYWRiLCBhLXN0cmJvdS5hZGIsIGEtc3RyZml4LmFkYiwgYS1zdHJpbmcuYWRzLCBhLXN0cm1hcC5hZGIsCglhLXN0cnNlYS5hZGIsIGEtc3Ryc3VwLmFkYiwgYS1zdHJ1bmIuYWRzLCBhLXN0c3Rpby5hZGIsIGEtc3R1bmF1LmFkYiwKCWEtc3R1bmF1LmFkcywgYS1zdHdpYm8uYWRiLCBhLXN0d2lmaS5hZGIsIGEtc3R3aWZpLmFkcywgYS1zdHdpbWEuYWRiLAoJYS1zdHdpc2UuYWRiLCBhLXN0d2lzdS5hZGIsIGEtc3V0ZWlvLmFkYiwgYS1zdXRlaW8uYWRzLCBhLXN3dXd0aS5hZGIsCglhLXN3dXd0aS5hZHMsIGEtdGVpb2VkLmFkYiwgYS10aWNvYXUuYWRiLCBhLXRpY29hdS5hZHMsIGEtdGljb2lvLmFkYiwKCWEtdGlkZWF1LmFkYiwgYS10aWRlaW8uYWRiLCBhLXRpZW5hdS5hZGIsIGEtdGllbmlvLmFkYiwgYS10aWZpaW8uYWRiLAoJYS10aWZsaW8uYWRiLCBhLXRpZ2VhdS5hZGIsIGEtdGlnZWF1LmFkcywgYS10aWluaW8uYWRiLCBhLXRpbW9hdS5hZGIsCglhLXRpbW9pby5hZGIsIGEtdGltb2lvLmFkcywgYS10aW9jc3QuYWRzLCBhLXRpdGVzdC5hZGIsIGEtdGl0ZXN0LmFkcywKCWEtd2l0ZWlvLmFkYiwgYS13dGNvYXUuYWRiLCBhLXd0Y29hdS5hZHMsIGEtd3Rjb2lvLmFkYiwgYS13dGNvaW8uYWRzLAoJYS13dGNzdHIuYWRzLCBhLXd0ZGVhdS5hZGIsIGEtd3RkZWlvLmFkYiwgYS13dGVuYXUuYWRiLCBhLXd0ZW5pby5hZGIsCglhLXd0Zmlpby5hZGIsIGEtd3RmbGlvLmFkYiwgYS13dGdlYXUuYWRiLCBhLXd0aW5hdS5hZGIsIGEtd3RpbmlvLmFkYiwKCWEtd3RpbmlvLmFkcywgYS13dG1vYXUuYWRiLCBhLXd0bW9pby5hZGIsIGEtd3R0ZXN0LmFkYiwgY2FsZW5kYXIuYWRzLAoJZGVjLmFkcywgZGVjLWlvLmFkYiwgZGVjLWlvLmFkcywgZGlyZWN0aW8uYWRzLCBlcnJuby5jLCBnLWJ1YnNvci5hZGIsCglnLWJ1YnNvci5hZHMsIGctYnVzb3JhLmFkYiwgZy1idXNvcmEuYWRzLCBnLWJ1c29yZy5hZGIsIGctYnVzb3JnLmFkcywKCWctY2FzdXRpLmFkYiwgZy1jYXN1dGkuYWRzLCBnLWRlYnV0aS5hZHMsIGctaGVhc29yLmFkYiwgZy1oZWFzb3IuYWRzLAoJZy1oZXNvcmEuYWRiLCBnLWhlc29yYS5hZHMsIGctaGVzb3JnLmFkYiwgZy1oZXNvcmcuYWRzLCBnLWh0YWJsZS5hZGIsCglnLWh0YWJsZS5hZHMsIGctaW8uYWRiLCBnLWlvLmFkcywgZy1pb19hdXguYWRiLCBnLWlvX2F1eC5hZHMsCglnLW1lbWR1bS5hZGIsIGctbWVtZHVtLmFkcywgZy1zZXN0aW4uYWRzLCBnLXNpZ25hbC5hZHMsIGctc2lnbmFsLmFkYiwKCWduYXQuYWRzLCBnLXNvdWluZi5hZHMsIGctc3BlY2hlLmFkYiwgZy1zcGVjaGUuYWRzLCBnLXRhYmxlLmFkYiwKCWctdGFibGUuYWRzLCBnLXRocmVhZC5hZGIsIGctdGhyZWFkLmFkcywgaW9leGNlcHQuYWRzLCBpLXZ4d29pby5hZGIsCglpLXZ4d29pby5hZHMsIG1hdGhfbGliLmFkYiwgcy1hc3NlcnQuYWRiLCBzLWFzc2VydC5hZHMsIHMtYXN0aGFuLmFkcywKCXMtYml0b3BzLmFkYiwgcy1iaXRvcHMuYWRzLCBzLWJvYXJvcC5hZHMsIHMtY2Fyc2k4LmFkYiwgcy1jYXJzaTguYWRzLAoJcy1jYXJ1bjguYWRiLCBzLWNhcnVuOC5hZHMsIHMtY2FzaTE2LmFkYiwgcy1jYXNpMTYuYWRzLCBzLWNhc2kzMi5hZGIsCglzLWNhc2kzMi5hZHMsIHMtY2FzaTY0LmFkYiwgcy1jYXNpNjQuYWRzLCBzLWNhc3V0aS5hZGIsIHMtY2FzdXRpLmFkcywKCXMtY2F1bjE2LmFkYiwgcy1jYXVuMTYuYWRzLCBzLWNhdW4zMi5hZGIsIHMtY2F1bjMyLmFkcywgcy1jYXVuNjQuYWRiLAoJcy1jYXVuNjQuYWRzLCBzLWRpcmVpby5hZGIsIHMtZGlyZWlvLmFkcywgc2VxdWVuaW8uYWRzLCBzLWVycnJlcC5hZGIsCglzLWVycnJlcC5hZHMsIHMtZXhuaW50LmFkYiwgcy1leG5pbnQuYWRzLCBzLWV4bmxsZi5hZGIsIHMtZXhubGxmLmFkcywKCXMtZXhubGxpLmFkYiwgcy1leG5sbGkuYWRzLCBzLWV4cGludC5hZGIsIHMtZXhwaW50LmFkcywgcy1leHBsbGkuYWRiLAoJcy1leHBsbGkuYWRzLCBzLWV4cGxsdS5hZGIsIHMtZXhwbGx1LmFkcywgcy1leHBtb2QuYWRiLCBzLWV4cG1vZC5hZHMsCglzLWV4cHVucy5hZGIsIHMtZXhwdW5zLmFkcywgcy1mb3JlLmFkYiwgcy1mb3JlLmFkcywgcy1nZXZlb3AuYWRiLAoJcy1nZXZlb3AuYWRzLCBzLWh0YWJsZS5hZGIsIHMtaHRhYmxlLmFkcywgcy1pbWdiaXUuYWRiLCBzLWltZ2JpdS5hZHMsCglzLWltZ2Jvby5hZGIsIHMtaW1nYm9vLmFkcywgcy1pbWdjaGEuYWRiLCBzLWltZ2NoYS5hZHMsIHMtaW1nZGVjLmFkYiwKCXMtaW1nZGVjLmFkcywgcy1pbWdlbnUuYWRiLCBzLWltZ2VudS5hZHMsIHMtaW1naW50LmFkYiwgcy1pbWdpbnQuYWRzLAoJcy1pbWdsbGIuYWRiLCBzLWltZ2xsYi5hZHMsIHMtaW1nbGxkLmFkYiwgcy1pbWdsbGQuYWRzLCBzLWltZ2xsaS5hZGIsCglzLWltZ2xsaS5hZHMsIHMtaW1nbGx1LmFkYiwgcy1pbWdsbHUuYWRzLCBzLWltZ2xsdy5hZGIsIHMtaW1nbGx3LmFkcywKCXMtaW1ncmVhLmFkcywgcy1pbWd1bnMuYWRiLCBzLWltZ3Vucy5hZHMsIHMtaW1nd2l1LmFkYiwgcy1pbWd3aXUuYWRzCglzLWludGVyci5hZHMsIHMtaW8uYWRiLCBzLW1hbnRpcy5hZGIsIHMtbWFudGlzLmFkcywgcy1vc3ByaW0uYWRzLAoJcy1wYWNrMDMuYWRiLCBzLXBhY2swMy5hZHMsIHMtcGFjazA1LmFkYiwgcy1wYWNrMDUuYWRzLCBzLXBhY2swNi5hZGIsCglzLXBhY2swNi5hZHMsIHMtcGFjazA3LmFkYiwgcy1wYWNrMDcuYWRzLCBzLXBhY2swOS5hZGIsIHMtcGFjazA5LmFkcywKCXMtcGFjazEwLmFkYiwgcy1wYWNrMTAuYWRzLCBzLXBhY2sxMS5hZGIsIHMtcGFjazExLmFkcywgcy1wYWNrMTIuYWRiLAoJcy1wYWNrMTIuYWRzLCBzLXBhY2sxMy5hZGIsIHMtcGFjazEzLmFkcywgcy1wYWNrMTQuYWRiLCBzLXBhY2sxNC5hZHMsCglzLXBhY2sxNS5hZGIsIHMtcGFjazE1LmFkcywgcy1wYWNrMTcuYWRiLCBzLXBhY2sxNy5hZHMsIHMtcGFjazE4LmFkYiwKCXMtcGFjazE4LmFkcywgcy1wYWNrMTkuYWRiLCBzLXBhY2sxOS5hZHMsIHMtcGFjazIwLmFkYiwgcy1wYWNrMjAuYWRzLAoJcy1wYWNrMjEuYWRiLCBzLXBhY2syMS5hZHMsIHMtcGFjazIyLmFkYiwgcy1wYWNrMjIuYWRzLCBzLXBhY2syMy5hZGIsCglzLXBhY2syMy5hZHMsIHMtcGFjazI0LmFkYiwgcy1wYWNrMjQuYWRzLCBzLXBhY2syNS5hZGIsIHMtcGFjazI1LmFkcywKCXMtcGFjazI2LmFkYiwgcy1wYWNrMjYuYWRzLCBzLXBhY2syNy5hZGIsIHMtcGFjazI3LmFkcywgcy1wYWNrMjguYWRiLAoJcy1wYWNrMjguYWRzLCBzLXBhY2syOS5hZGIsIHMtcGFjazI5LmFkcywgcy1wYWNrMzAuYWRiLCBzLXBhY2szMC5hZHMsCglzLXBhY2szMS5hZGIsIHMtcGFjazMxLmFkcywgcy1wYWNrMzMuYWRiLCBzLXBhY2szMy5hZHMsIHMtcGFjazM0LmFkYiwKCXMtcGFjazM0LmFkcywgcy1wYWNrMzUuYWRiLCBzLXBhY2szNS5hZHMsIHMtcGFjazM2LmFkYiwgcy1wYWNrMzYuYWRzLAoJcy1wYWNrMzcuYWRiLCBzLXBhY2szNy5hZHMsIHMtcGFjazM4LmFkYiwgcy1wYWNrMzguYWRzLCBzLXBhY2szOS5hZGIsCglzLXBhY2szOS5hZHMsIHMtcGFjazQwLmFkYiwgcy1wYWNrNDAuYWRzLCBzLXBhY2s0MS5hZGIsIHMtcGFjazQxLmFkcywKCXMtcGFjazQyLmFkYiwgcy1wYWNrNDIuYWRzLCBzLXBhY2s0My5hZGIsIHMtcGFjazQzLmFkcywgcy1wYWNrNDQuYWRiLAoJcy1wYWNrNDQuYWRzLCBzLXBhY2s0NS5hZGIsIHMtcGFjazQ1LmFkcywgcy1wYWNrNDYuYWRiLCBzLXBhY2s0Ni5hZHMsCglzLXBhY2s0Ny5hZGIsIHMtcGFjazQ3LmFkcywgcy1wYWNrNDguYWRiLCBzLXBhY2s0OC5hZHMsIHMtcGFjazQ5LmFkYiwKCXMtcGFjazQ5LmFkcywgcy1wYWNrNTAuYWRiLCBzLXBhY2s1MC5hZHMsIHMtcGFjazUxLmFkYiwgcy1wYWNrNTEuYWRzLAoJcy1wYWNrNTIuYWRiLCBzLXBhY2s1Mi5hZHMsIHMtcGFjazUzLmFkYiwgcy1wYWNrNTMuYWRzLCBzLXBhY2s1NC5hZGIsCglzLXBhY2s1NC5hZHMsIHMtcGFjazU1LmFkYiwgcy1wYWNrNTUuYWRzLCBzLXBhY2s1Ni5hZGIsIHMtcGFjazU2LmFkcywKCXMtcGFjazU3LmFkYiwgcy1wYWNrNTcuYWRzLCBzLXBhY2s1OC5hZGIsIHMtcGFjazU4LmFkcywgcy1wYWNrNTkuYWRiLAoJcy1wYWNrNTkuYWRzLCBzLXBhY2s2MC5hZGIsIHMtcGFjazYwLmFkcywgcy1wYWNrNjEuYWRiLCBzLXBhY2s2MS5hZHMsCglzLXBhY2s2Mi5hZGIsIHMtcGFjazYyLmFkcywgcy1wYWNrNjMuYWRiLCBzLXBhY2s2My5hZHMsIHMtc2NhdmFsLmFkYiwKCXMtc2NhdmFsLmFkcywgcy1zZXF1aW8uYWRiLCBzLXNlcXVpby5hZHMsIHMtc3RhY2hlLmFkYiwgcy1zdGFjaGUuYWRzLAoJcy1zdHJhdHQuYWRiLCBzLXN0cmF0dC5hZHMsIHMtc3RyY29tLmFkYiwgcy1zdHJjb20uYWRzLCBzLXN0cm9wcy5hZGIsCglzLXN0cm9wcy5hZHMsIHMtdGFhc2RlLmFkcywgcy10YWRlY2EuYWRiLCBzLXRhZGVjYS5hZHMsIHMtdGFkZXJ0LmFkYiwKCXMtdGFkZXJ0LmFkcywgcy10YWVuY2EuYWRiLCBzLXRhZW5jYS5hZHMsIHMtdGFwcm9iLmFkYiwgcy10YXByb2IuYWRzLAoJcy10YXJlc3QuYWRiLCBzLXRhcmVzdC5hZHMsIHMtdGFzZGViLmFkYiwgcy10YXNkZWIuYWRzLCBzLXRhc2luaS5hZGIsCglzLXRhc2luaS5hZHMsIHMtdGFza2luLmFkYiwgcy10YXNraW4uYWRzLCBzLXRhc3F1ZS5hZGIsIHMtdGFzcXVlLmFkcywKCXMtdGFzcmVuLmFkcywgcy10YXNyZXMuYWRzLCBzLXRhc3N0YS5hZGIsIHMtdGFzc3RhLmFkcywgcy10YXN1dGkuYWRiLAoJcy10YXN1dGkuYWRzLCBzLXRhdGFhdC5hZGIsIHMtdGF0YWF0LmFkcywgcy10cGlub3AuYWRiLCBzLXRwaW5vcC5hZHMsCglzLXRwb2Jlbi5hZGIsIHMtdHBvYmVuLmFkcywgcy10cG9ib3AuYWRzLCBzLXRwb3JmdC5hZGIsIHMtdHBvc2VuLmFkcywKCXMtdHJhY2VzLmFkYiwgcy10cmFjZXMuYWRzLCBzLXRyYXRhcy5hZGIsIHMtdHJhdGFzLmFkcywgcy12YWxpbnQuYWRzLAoJcy11bnN0eXAuYWRzLCBzLXZlYm9vcC5hZGIsIHMtdmVib29wLmFkcywgcy12ZWN0b3IuYWRzLCBzLXZlcmNvbi5hZGIsCglzLXZlcmNvbi5hZHMsIHMtd2NoY252LmFkYiwgcy13Y2hjbnYuYWRzLCBzLXdjaGppcy5hZGIsIHMtd2NoamlzLmFkcywKCXMtd2Noc3R3LmFkYiwgcy13Y2hzdHcuYWRzLCBzLXdjaHd0cy5hZGIsIHMtd2Nod3RzLmFkcywgcy13aWRib28uYWRiLAoJcy13aWRib28uYWRzLCBzLXdpZGNoYS5hZGIsIHMtd2lkY2hhLmFkcywgcy13aWRlbnUuYWRiLCBzLXdpZGVudS5hZHMsCglzLXdpZGxsaS5hZGIsIHMtd2lkbGxpLmFkcywgcy13aWRsbHUuYWRiLCBzLXdpZGxsdS5hZHMsIHMtd3dkY2hhLmFkcywKCXMtd3dkZW51LmFkYiwgcy13d2R3Y2guYWRzLCB0ZXh0X2lvLmFkcywgcy1zdGNob3AuYWRzLCBzLXN0Y2hvcC5hZGIsCglzLXN0Y2hvcC12eHdvcmtzLmFkYiwgYS1pbnRuYW0tZGFyd2luLmFkcywgcy1vc2ludGUtZGFyd2luLmFkYiwKCXMtb3NpbnRlLWRhcndpbi5hZHMsIHMtdnh3b3JrLXg4Ni5hZHMsIGEtbnVtYXV4LWRhcndpbi5hZHMsCglhLW51bWF1eC1kYXJ3aW4uYWRiLCBhLWNoemxhMS5hZHMsIGEtY2h6bGE5LmFkcywgYS1sZnp0aW8uYWRzLAoJYS1saXp0aW8uYWRzLCBhLWxsZnp0aS5hZHMsIGEtbGxpenRpLmFkcywgYS1zZnp0aW8uYWRzLCBhLXNpenRpby5hZHMsCglhLXNzaXp0aS5hZHMsIGEtc3R6Ym91LmFkYiwgYS1zdHpmaXguYWRiLCBhLXN0emZpeC5hZHMsIGEtc3R6bWFwLmFkYiwKCWEtc3R6c2VhLmFkYiwgYS1zdHpzdXAuYWRiLCBhLXN3dW5hdS5hZGIsIGEtc3d1bmF1LmFkcywgYS1zenV6dGkuYWRiLAoJYS1zenV6dGkuYWRzLCBhLXRpdW5pby5hZHMsIGEtd3d1bmlvLmFkcywgYS16dGNvYXUuYWRiLCBhLXp0Y29hdS5hZHMsCglhLXp0Y29pby5hZGIsIGEtenRjb2lvLmFkcywgYS16dGNzdHIuYWRzLCBhLXp0ZGVhdS5hZGIsIGEtenRkZWlvLmFkYiwKCWEtenRlbmlvLmFkYiwgYS16dGV4aW8uYWRiLCBhLXp0Zmlpby5hZGIsIGEtenRmbGlvLmFkYiwgYS16dGdlYXUuYWRiLAoJYS16dGluYXUuYWRiLCBhLXp0aW5pby5hZGIsIGEtenRpbmlvLmFkcywgYS16dG1vYXUuYWRiLCBhLXp0bW9pby5hZGIsCglhLXp0dGVzdC5hZGIsIGEtenp1bmlvLmFkcywgZy11dGZfMzIuYWRiOiBGaXggaGVhZGVyIHN0eWxlLgoJIkdOVSBBZGEiIHRvIEdOQVQsIHVzZSBwcm9wZXIgY2FzaW5nIGZvciBSVU4tVElNRS4KCjIwMDUtMDYtMTQgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogYS1zeXRhY28uYWRzLCBhLXN5dGFjby5hZGIgKFN1c3BlbnNpb25fT2JqZWN0KTogVGhlc2Ugb2JqZWN0cyBhcmUgbm8KCWxvbmdlciBwcm90ZWN0ZWQgb2JqZWN0cy4gVGhleSBoYXZlIGJlZW4gcmVwbGFjZWQgYnkgbG93ZXItbGV2ZWwKCXN1c3BlbnNpb24gb2JqZWN0cyBtYWRlIHVwIGJ5IGEgbXV0ZXggYW5kIGEgY29uZGl0aW9uIHZhcmlhYmxlIChvcgoJdGhlaXIgZXF1aXZhbGVudCBnaXZlbiBhIHBhcnRpY3VsYXIgT1MpIHBsdXMgc29tZSBpbnRlcm5hbCBkYXRhIHRvCglyZWZsZWN0IHRoZSBzdGF0ZSBvZiB0aGUgc3VzcGVuc2lvbiBvYmplY3QuCgkoSW5pdGlhbGl6ZSwgRmluYWxpemUpOiBBZGQgdGhpcyBpbml0aWFsaXphdGlvbiBwcm9jZWR1cmUgZm9yCglTdXNwZW5zaW9uX09iamVjdCwgd2hpY2ggaXMgYSBjb250cm9sbGVkIHR5cGUuCgkoRmluYWxpemUpOiBBZGQgdGhlIGZpbmFsaXphdGlvbiBwcm9jZWR1cmUgZm9yIFN1c3BlbnNpb25fT2JqZWN0LAoJd2hpY2ggaXMgYSBjb250cm9sbGVkIHR5cGUuCgoJKiBhLXN5dGFjby12eHdvcmtzLmFkcywgYS1zeXRhY28tdnh3b3Jrcy5hZGI6IFJlbW92ZSB0aGlzIHZlcnNpb24gb2YKCUFkYS5TeW5jaHJvbm91c19UYXNrX0NvbnRyb2wgYmVjYXVzZSB0aGVyZSBpcyBubyBsb25nZXIgYSBuZWVkIGZvciBhCglWeFdvcmtzIHNwZWNpZmljIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiBUYXJnZXQgZGVwZW5kZW5jaWVzCgloYXMgYmVlbiBtb3ZlZCB0byBTeXN0ZW0uVGFza19QcmltaXRpdmVzLk9wZXJhdGlvbnMuCgoJKiBzLW9zaW50ZS1taW5ndy5hZHMgKHBDUklUSUNBTF9TRUNUSU9OKTogUmVtb3ZlIHRoaXMgdHlwZSB3aGljaCBpcyBubwoJbG9uZ2VyIG5lZWRlZC4KCShJbml0aWFsaXplQ3JpdGljYWxTZWN0aW9uLCBFbnRlckNyaXRpY2FsU2VjdGlvbiwKCUxlYXZlQ3JpdGljYWxTZWN0aW9uLCBEZWxldGVDcml0aWNhbFNlY3Rpb24pOiBSZXBsYWNlIHRoZSB0eXBlCglwQ3JpdGljYWxTZWN0aW9uIGJ5IGFuIGFub255bW91cyBhY2Nlc3MgdHlwZSBzbyB0aGF0IHdlIGF2b2lkIHByb2JsZW1zCglvZiBhY2Nlc3NpYmlsaXR5IHRvIGxvY2FsIG9iamVjdHMuCgoJKiBzLXRhcHJvcC5hZHMsIHMtdGFwcm9wLXBvc2l4LmFkYiwgcy10YXByb3Atdnh3b3Jrcy5hZGIsCglzLXRhcHJvcC1taW5ndy5hZGIsIHMtdGFwcm9wLXZtcy5hZGIsIHMtdGFwcm9wLXNvbGFyaXMuYWRiLAoJcy10YXByb3Atb3MyLmFkYiwgcy10YXByb3AtZHVtbXkuYWRiLCBzLXRhcHJvcC1ocHV4LWRjZS5hZGIsCglzLXRhcHJvcC1saW51eC5hZGIsIHMtdGFwcm9wLWlyaXguYWRiLCBzLXRhcHJvcC1pcml4LWF0aHJlYWQuYWRiLAoJcy10YXByb3AtdHJ1NjQuYWRiLCBzLXRhcHJvcC1seW54b3MuYWRiIChFbGFib3JhdGlvbiBDb2RlKTogTm8gbG9uZ2VyCglzZXQgdGhlIGVudmlyb25tZW50IHRhc2sgbWFzayBoZXJlLgoJKEN1cnJlbnRfU3RhdGUpOiBBZGQgdGhpcyBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIHN0YXRlIG9mIHRoZQoJc3VzcGVuc2lvbiBvYmplY3QuCgkoU2V0X0ZhbHNlKTogQWRkIHRoaXMgcHJvY2VkdXJlIHRoYXQgc2V0cyB0aGUgc3RhdGUgb2YgdGhlIHN1c3BlbnNpb24KCW9iamVjdCB0byBGYWxzZS4KCShTZXRfVHJ1ZSk6IEFkZCB0aGlzIHByb2NlZHVyZSB0aGF0IHNldHMgdGhlIHN0YXRlIG9mIHRoZSBzdXNwZW5zaW9uCglvYmplY3QgdG8gVHJ1ZSwgcmVsZWFzaW5nIHRoZSB0YXNrIHRoYXQgd2FzIHN1c3BlbmRlZCwgaWYgYW55LgoJKFN1c3BlbmRfVW50aWxfVHJ1ZSk6IEFkZCB0aGlzIHByb2NlZHVyZSB0aGF0IGJsb2NrcyB0aGUgY2FsbGluZyB0YXNrCgl1bnRpbCB0aGUgc3RhdGUgb2YgdGhlIG9iamVjdCBpcyBUcnVlLiBQcm9ncmFtX0Vycm9yIGlzIHJhaXNlZCBpZgoJYW5vdGhlciB0YXNrIGlzIGFscmVhZHkgd2FpdGluZyBvbiB0aGF0IHN1c3BlbnNpb24gb2JqZWN0LgoJKEluaXRpYWxpemUpOiBBZGQgdGhpcyBwcm9jZWR1cmUgZm9yIGluaXRpYWxpemluZyB0aGUgc3VzcGVuc2lvbgoJb2JqZWN0LiBJdCBpbml0aWFsaXplcyB0aGUgbXV0ZXggYW5kIHRoZSBjb25kaXRpb24gdmFyaWFibGUgd2hpY2ggYXJlCgl1c2VkIGZvciBzeW5jaHJvbml6YXRpb24gYW5kIHF1ZXVpbmcsIGFuZCBpdCBzZXRzIHRoZSBpbnRlcm5hbCBzdGF0ZQoJdG8gRmFsc2UuCgkoRmluYWxpemUpOiBBZGQgdGhpcyBwcm9jZWR1cmUgZm9yIGZpbmFsaXppbmcgdGhlIHN1c3BlbnNpb24gb2JqZWN0LAoJZGVzdHJveWluZyB0aGUgbXV0ZXggYW5kIHRoZSBjb25kaXRpb24gdmFyaWFibGUuCgoJKiBzLXRhc3ByaS1wb3NpeC5hZHMsIHMtdGFzcHJpLXZ4d29ya3MuYWRzLCBzLXRhc3ByaS1taW5ndy5hZHMsCglzLXRhc3ByaS12bXMuYWRzLCBzLXRhc3ByaS1zb2xhcmlzLmFkcywgcy10YXNwcmktb3MyLmFkcywKCXMtdGFzcHJpLWR1bW15LmFkcywgcy10YXNwcmktaHB1eC1kY2UuYWRzLCBzLXRhc3ByaS1saW51eC5hZHMsCglzLXRhc3ByaS10cnU2NC5hZHMsIHMtdGFzcHJpLWx5bnhvcy5hZHMgKFN1c3BlbnNpb25fT2JqZWN0KTogTmV3IG9iamVjdAoJd2hpY2ggcHJvdmlkZXMgYSBsb3ctbGV2ZWwgYWJzdHJhY3Rpb24gKHVzaW5nIG9wZXJhdGluZyBzeXN0ZW0KCXByaW1pdGl2ZXMpIGZvciBBZGEuU3luY2hyb25vdXNfVGFza19Db250cm9sLgoJVGhpcyBvYmplY3QgaXMgbWFkZSB1cCBieSBhIG11dGV4IChmb3IgZW5zdXJpbmcgbXV0dWFsIGV4Y2x1c2lvbiksIGEKCWNvbmRpdGlvbiB2YXJpYWJsZSAoZm9yIHF1ZXVpbmcgdGhyZWFkcyB1bnRpbCB0aGUgY29uZGl0aW9uIGlzCglzaWduYWxlZCksIGEgQm9vbGVhbiAoU3RhdGUpIGluZGljYXRpbmcgd2hldGhlciB0aGUgb2JqZWN0IGlzIG9wZW4sCglhbmQgYSBCb29sZWFuIChXYWl0aW5nKSByZWZsZWN0aW5nIHdoZXRoZXIgdGhlcmUgaXMgYSB0YXNrIGFscmVhZHkKCXN1c3BlbmRlZCBvbiB0aGlzIG9iamVjdC4KCgkqIHMtaW50bWFuLmFkcywgcy1pbnRtYW4taXJpeC5hZGIsIHMtaW50bWFuLWlyaXgtYXRocmVhZC5hZGIsCglzLWludG1hbi1kdW1teS5hZGIsIHMtaW50bWFuLXNvbGFyaXMuYWRiLCBzLWludG1hbi12bXMuYWRiLAoJcy1pbnRtYW4tdm1zLmFkcywgcy1pbnRtYW4tbWluZ3cuYWRiLAoJKEluaXRpYWxpemVfSW50ZXJydXB0cyk6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoKCSogcy1pbm1hb3AtcG9zaXguYWRiLCBzLWlubWFvcC12bXMuYWRiLCBzLWlubWFvcC1kdW1teS5hZGIsCgkoU2V0dXBfSW50ZXJydXB0X01hc2spOiBOZXcgcHJvY2VkdXJlLgoKCSogcy1pbnRtYW4tdnh3b3Jrcy5hZHMsIHMtaW50bWFuLXZ4d29ya3MuYWRiOiAgVXBkYXRlIGNvbW1lbnRzLgoKCSogcy1pbm1hb3AuYWRzIChTZXR1cF9JbnRlcnJ1cHRfTWFzayk6IE5ldyBwcm9jZWR1cmUKCgkqIHMtaW50ZXJyLmFkYjogQWRkIGV4cGxpY2l0IGNhbGwgdG8gU2V0dXBfSW50ZXJydXB0X01hc2sgbm93IHRoYXQKCXRoaXMgaXMgbm8gbG9uZ2VyIGRvbmUgaW4gdGhlIGJvZHkgb2Ygcy10YXByb3AKCShTZXJ2ZXJfVGFzayk6IEV4cGxpY2l0ZWx5IHRlc3QgZm9yIFBlbmRpbmdfQWN0aW9uIGluIGNhc2UKCVN5c3RlbS5QYXJhbWV0ZXJzLk5vX0Fib3J0IGlzIFRydWUuCgoJKiBzLXRhYXNkZS5hZGI6IEFkZCBleHBsaWNpdCBjYWxsIHRvIFNldHVwX0ludGVycnVwdF9NYXNrIG5vdyB0aGF0IHRoaXMKCWlzIG5vIGxvbmdlciBkb25lIGluIHRoZSBib2R5IG9mIHMtdGFwcm9wCgoyMDA1LTA2LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHN5c3RlbS11bml4d2FyZS5hZHMsIHN5c3RlbS1saW51eC1pYTY0LmFkcywgc3lzdGVtLWZyZWVic2QteDg2LmFkcywKCXN5c3RlbS1seW54b3MtcHBjLmFkcywgc3lzdGVtLWx5bnhvcy14ODYuYWRzLCBzeXN0ZW0tbGludXgteDg2XzY0LmFkcywKCXN5c3RlbS10cnU2NC5hZHMsIHN5c3RlbS1haXguYWRzLCBzeXN0ZW0tdnh3b3Jrcy1zcGFyY3Y5LmFkcywKCXN5c3RlbS12eHdvcmtzLXhzY2FsZS5hZHMsIHN5c3RlbS1zb2xhcmlzLXg4Ni5hZHMsIHN5c3RlbS1pcml4LW8zMi5hZHMsCglzeXN0ZW0taXJpeC1uMzIuYWRzLCBzeXN0ZW0taHB1eC5hZHMsIHN5c3RlbS12eHdvcmtzLW02OGsuYWRzLAoJc3lzdGVtLWxpbnV4LXg4Ni5hZHMsIHN5c3RlbS12eHdvcmtzLW1pcHMuYWRzLCBzeXN0ZW0tdnh3b3Jrcy1taXBzLmFkcywKCXN5c3RlbS1vczIuYWRzLCBzeXN0ZW0taW50ZXJpeC5hZHMsIHN5c3RlbS1zb2xhcmlzLXNwYXJjLmFkcywKCXN5c3RlbS1zb2xhcmlzLXNwYXJjdjkuYWRzLCBzeXN0ZW0tdm1zLmFkcywgc3lzdGVtLW1pbmd3LmFkcywKCXN5c3RlbS12bXMtemN4LmFkcywgc3lzdGVtLXZ4d29ya3MtcHBjLmFkcywgc3lzdGVtLmFkcywKCXN5c3RlbS1kYXJ3aW4tcHBjLmFkcywgc3lzdGVtLXZ4d29ya3MteDg2LmFkcywgc3lzdGVtLWxpbnV4LXBwYy5hZHMsCglzeXN0ZW0tbGludXgtaHBwYS5hZHMsIHN5c3RlbS12bXNfNjQuYWRzLAoJc3lzdGVtLXZ4d29ya3MtYWxwaGEuYWRzOiBNaW5vciBjb21tZW50IHVwZGF0ZSBmb3IKCUFJLTM2MiAodW5pdCBpcyBQdXJlKS4KCgkqIGEtY2hhaGFuLmFkcywgYS1jaGFoYW4uYWRiOiBNb3ZlIFdpZGVfV2lkZSBmdW5jdGlvbnMgdG8gQ29udmVyc2lvbnMKCUFkZCBwcmFnbWEgUHVyZV8wNSBmb3IgQUktMzYyCglNYWtlIHJlbWFpbmluZyBjb252ZXJzaW9uIGZ1bmN0aW9ucyBvYnNvbGVzY2VudCBpbiBBZGEgOTUKCgkqIGltcHVuaXQuYWRiOiBDaGFuZ2UgYS1zd3VuaGEgdG8gYS1zd3V3aGEgYW5kIGEtc3p1bmhhIHRvIGEtc3p1emhhCglNYWtlIEFkYS5XaWRlX0NoYXJhY3RlcnNbLlVuaWNvZGVdIGF2YWlsYWJsZSBpbiBBZGEgOTUgbW9kZQoJQWRkIGVudHJpZXMgZm9yIGEtd2ljaHVuIGFuZCBhLXpjaHVuaQoJQWRkIGEtd2lkY2hhIGEtemNoYXJhIGZvciBBSS0zOTUKCUFkZCBhLWNoYWNvbiAoQWRhLkNoYXJhY3RlcnMuQ29udmVyc2lvbnMpIHRvIGxpc3Qgb2YgQWRhIDIwMDUgcm91dGluZXMKCgkqIE1ha2VmaWxlLnJ0bDogQ2hhbmdlIGEtc3d1bmhhIHRvIGEtc3d1d2hhIGFuZCBhLXN6dW5oYSB0byBhLXN6dXpoYQoJQWRkIGVudHJpZXMgZm9yIGEtd2ljaHVuLm8gYW5kIGEtemNodW5pLm8KCUVudHJpZXMgZm9yIGEtd2lkY2hhLm8gYW5kIGEtemNoYXJhLm8KCUFkZCBlbnRyeSBmb3IgYS1jaGFjb24ubwoKCSogYS16dGVuYXUuYWRiOiBBZGQgd2l0aCBvZiBBZGEuQ2hhcmFjdGVycy5Db252ZXJzaW9ucwoKCSogYS1jaGFjb24uYWRzLCBhLWNoYWNvbi5hZGI6IE5ldyBmaWxlcy4KCgkqIGEtdGFzaWRlLmFkYiwgYS1leHN0YXQuYWRiLCBhLWV4Y2FjaC5hZGI6IEFkZCB3YXJuaW5ncyBvZmYgdG8gYWxsb3cKCWNhdGVnb3JpemF0aW9uIHZpb2xhdGlvbnMuCgoJKiBhLXN0cm1hcC5hZHM6IEFkZCBwcmFnbWEgUHVyZV8wNSBmb3IgQUktMzYyCgkqIGEtc3RybWFwLmFkczogQWRkIG5vdGUgb24gaW1wbGljaXQgY2F0ZWdvcml6YXRpb24gZm9yIEFJLTM2MgoKCSogYS10Z2RpY28uYWRzLCBhLXRhc2lkZS5hZHM6IEFkZCBwcmFnbWEgUHJlZWxhYm9yYXRlXzA1IGZvciBBSS0zNjIKCgkqIHBhci1wcmFnLmFkYjogRHVtbXkgZW50cnkgZm9yIHByYWdtYSBQZXJzaXN0ZW50X0JTUwoJU2V0IEFkYV9WZXJzaW9uX0V4cGxpY2l0LCBmb3IgaW1wbGVtZW50YXRpb24gb2YgQUktMzYyCglBZGQgcHJvY2Vzc2luZyBmb3IgcHJhZ21hIFB1cmVfMDUgYW5kIFByZWVsYWJvcmF0ZV8wNQoJQWRkIGVudHJ5IGZvciBBc3NlcnRpb25fUG9saWN5IHByYWdtYQoKCSogc2VtLmFkYjogTWFrZSBzdXJlIHByZWRlZmluZWQgdW5pdHMgYXJlIGNvbXBpbGVkIHdpdGggR05BVF9Nb2RlIHRydWUKCXdoZW4gbmVlZGVkIGZvciBwcm9wZXIgcHJvY2Vzc2luZyBvZiBjYXRlZ29yaXphdGlvbiBzdHVmZgoKCSogc2VtX2NhdC5hZGI6CglGb3Igc2V2ZXJhbCBjYXNlcywgbWFrZSBlcnJvcnMgaW4gcHJlZWFsYm9yYXRlIHVuaXRzIHdhcm5pbmdzLAoJaW5zdGVhZCBvZiBlcnJvcnMsIGlmIEdOQVRfTW9kZSBpcyBzZXQuIEZvciBBSS0zNjIuCgoJKiBzZW1fZWxhYi5hZGIgKENoZWNrX0VsYWJfQ2FsbCk6IENhbGwgdG8gbm9uLXN0YXRpYyBzdWJwcm9ncmFtIGluCglwcmVlbGFib3JhdGUgdW5pdCBpcyBub3cgd2FybmluZyBpZiBpbiBHTkFUIG1vZGUKCgkqIHMtc3RvZWxlLmFkczogRG9jdW1lbnQgQUktMzYyIGZvciBwcmFnbWEgcHJlZWxhYm9yYXRlCgoyMDA1LTA2LTE0ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogcy1wYXJhbWUtdm1zLmFkcywgcy1wYXJhbWUtaHB1eC5hZHMsIHMtcGFyYW1lLXZtcy1yZXN0cmljdC5hZHMsCglzLXBhcmFtZS1hZTY1My5hZHMsIHMtcGFyYW1lLmFkcywgcy1wYXJhbWUtdnh3b3Jrcy5hZHM6CglEZWZhdWx0X0V4Y2VwdGlvbl9Nc2dfTWF4X0xlbmd0aDogbmV3IHBhcmFtZXRlci4KCgkqIGEtZXhjZXB0LmFkczogKEV4Y2VwdGlvbl9Nc2dfTWF4X0xlbmd0aCk6IFNldCB0bwoJU3lzdGVtLlBhcmFtZXRlcnMuRGVmYXVsdF9FeGNlcHRpb25fTXNnX01heF9MZW5ndGgKCUFkZCBwcmFnbWEgUHJlZWxhYm9yYXRlXzA1IGZvciBBSS0zNjIKCUFkZCB3YXJuaW5ncyBvZmYgdG8gYWxsb3cgY2F0ZWdvcml6YXRpb24gdmlvbGF0aW9ucyBmb3IgQUktMzYyCgoyMDA1LTA2LTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGduYXRzeW0uYWRiOiBBZGFwdCB0byBtb2RpZmljYXRpb24gb2YgcGFja2FnZSBTeW1ib2xzOiBwcm9jZWR1cmUKCVByb2Nlc3MgaXMgbm93IGluIHBhY2thZ2UgUHJvY2Vzc2luZy4KCgkqIHN5bWJvbHMuYWRzLCBzeW1ib2xzLmFkYjoKCShQcm9jZXNzaW5nKTogTmV3IHBhY2thZ2UsIGNvbnRhaW5pbmcgcHJvY2VkdXJlIFByb2Nlc3MKCgkqIHN5bWJvbHMtdm1zLWFscGhhLmFkYjoKCVJlcGxhY2VkIGJ5IHN5bWJvbHMtdm1zLmFkYiBhbmQgc3ltYm9scy1wcm9jZXNzaW5nLXZtcy1hbHBoYS5hZGIKCgkqIHN5bWJvbHMtdm1zLmFkYiwgc3ltYm9scy1wcm9jZXNzaW5nLXZtcy1hbHBoYS5hZGIsCglzeW1ib2xzLXByb2Nlc3Npbmctdm1zLWlhNjQuYWRiOiBOZXcgZmlsZXMuCgoyMDA1LTA2LTE0ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBtbGliLXRndC1taW5ndy5hZGIgKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IFJlcGxhY2UgdGhlIHByZXZpb3VzCglpbXBsZW1lbnRhdGlvbi4gVGhpcyBuZXcgdmVyc2lvbiBnZW5lcmF0ZXMgdGhlIHByb3BlciBEbGxNYWluIHJvdXRpbmUKCXRvIGluaXRpYWxpemUgdGhlIFNBTC4gVGhlIERsbE1haW4gaXMgZ2VuZXJhdGVkIGluIEFkYSBhbmQgY29tcGlsZWQKCWJlZm9yZSBiZWluZyBhZGRlZCBhcyBvcHRpb24gdG8gdGhlIGxpYnJhcnkgYnVpbGQgY29tbWFuZC4KCjIwMDUtMDYtMTQgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgkgICAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogYWRhaW50LmMgKF9fZ25hdF90b19jYW5vbmljYWxfZmlsZV9zcGVjKTogQ2hlY2sgZm9yIGVycm9yIHJldHVybnMgaW4KCWNhbGwgdG8gZGVjYyR0cmFuc2xhdGVfdm1zLgoJKF9fZ25hdF9sb2NhdGVfcmVndWxhcl9maWxlKTogQ2hlY2sgaWYgdGhlIHBhdGhfdmFsIGNvbnRhaW5zIHF1b3Rlcy4gV2UKCW5lZWQgdG8gcmVtb3ZlIHRob3NlIHF1b3RlcyBiZWZvcmUgY2F0ZW5hdGluZyB0aGUgZmlsZW5hbWUuCgkoX19nbmF0X2xvY2F0ZV9leGVjX29uX3BhdGgpOiBpbXByb3ZlbWVudHMgdG8gdGhlIFdpbjMyIHNlY3Rpb246CgkqIGF2b2lkIGFsbG9jYXRpbmcgdGhlIG1lbW9yeSB0d2ljZSBmb3IgYmV0dGVyIGVmZmljaWVuY3k7CgkqIGFsbG9jYXRlIDMySyBidWZmZXIgZm9yIGVudmlyb25tZW50IGV4cGFuc2lvbiBhcyBzdWdnZXN0ZWQgYnkgTVNETjsKCSogcHJlcGVuZCAiLjsiIHRvIHRoZSBwYXRoIHNvIHRoYXQgY3VycmVudCBkaXJlY3RvcnkgaXMgc2VhcmNoZWQgdG9vLgoKMjAwNS0wNi0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLWV4Y2VwdC5hZGIgKEV4Y2VwdGlvbl9JZGVudGl0eSk6IHJldHVybiBOdWxsX0lkIGZvciBudWxsIG9jY3VycmVuY2UKCWluc3RlYWQgb2YgcmFpc2luZyBDRSAoQUktMjQxKQoJQWRkIHdhcm5pbmdzIG9mZiB0byBhbGxvdyBjYXRlZ29yaXphdGlvbiB2aW9sYXRpb25zIGZvciBBSS0zNjIKCjIwMDUtMDYtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYWxpLXV0aWwuYWRiLCBnbmF0YmluZC5hZGI6IFJlbW92ZSByZWZlcmVuY2VzIHRvCglGb3JjZV9STV9FbGFib3JhdGlvbl9PcmRlci4KCgkqIHN3aXRjaC1iLmFkYjogUmVtb3ZlIHJlY29nbml0aW9uIG9mIC1mIHN3aXRjaAoKMjAwNS0wNi0xNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogYS1zdHp1bmIuYWRiLCBhLXN0d2l1bi5hZGIsIGEtc3RydW5iLmFkYiAoUmVhbGxvY19Gb3JfQ2h1bmspOiBOZXcKCWltcGxlbWVudGF0aW9uIHdoaWNoIGlzIHNsaWdodGx5IG1vcmUgZWZmaWNpZW50LgoKMjAwNS0wNi0xNCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfQWxsb2NhdG9yX0V4cHJlc3Npb24pOiBXaGVuIGFuIGluaXRpYWxpemVkCglhbGxvY2F0b3IncyBkZXNpZ25hdGVkIHR5cGUgaXMgYSBjbGFzcy13aWRlIHR5cGUsIGFuZCBjb21waWxpbmcgZm9yCglBZGEgMjAwNSwgZW1pdCBhIHJ1bi10aW1lIGNoZWNrIHRoYXQgdGhlIGFjY2Vzc2liaWxpdHkgbGV2ZWwgb2YgdGhlCgl0eXBlIGdpdmVuIGluIHRoZSBhbGxvY2F0b3IncyBleHByZXNzaW9uIGlzIG5vdCBkZWVwZXIgdGhhbiB0aGUgbGV2ZWwKCW9mIHRoZSBhbGxvY2F0b3IncyBhY2Nlc3MgdHlwZS4KCgkoVGFnZ2VkX01lbWJlcnNoaXApOiBNb2RpZmllZCB0byBnaXZlcyBzdXBwb3J0IHRvIGFic3RyYWN0IGludGVyZmFjZQoJdHlwZXMuCgoJKiBhLXRhZ3MuYWRzLCBhLXRhZ3MuYWRiICh0eXBlIFR5cGVfU3BlY2lmaWNfRGF0YSk6IEFkZCBjb21wb25lbnQKCUFjY2Vzc19MZXZlbC4KCShEZXNjZW5kYW50X1RhZyk6IE5ldyBwcmVkZWZpbmVkIGZ1bmN0aW9uCgkoSXNfRGVzY2VuZGFudF9BdF9TYW1lX0xldmVsKTogTmV3IHByZWRlZmluZWQgZnVuY3Rpb24KCShHZXRfQWNjZXNzX0xldmVsKTogTmV3IHByaXZhdGUgZnVuY3Rpb24KCShTZXRfQWNjZXNzX0xldmVsKTogTmV3IHByaXZhdGUgcHJvY2VkdXJlCgkoSVdfTWVtYmVyc2hpcCk6IE5ldyBmdW5jdGlvbi4gR2l2ZW4gdGhlIHRhZyBvZiBhbiBvYmplY3QgYW5kIHRoZSB0YWcKCWFzc29jaWF0ZWQgd2l0aCBhbiBpbnRlcmZhY2UsIGV2YWx1YXRlIGlmIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0aGUKCWludGVyZmFjZS4KCShSZWdpc3Rlcl9JbnRlcmZhY2VfVGFnKTogTmV3IHByb2NlZHVyZSB1c2VkIHRvIGluaXRpYWxpemUgdGhlIHRhYmxlIG9mCglpbnRlcmZhY2VzIHVzZWQgYnkgdGhlIElXX01lbWJlcnNoaXAgZnVuY3Rpb24uCgkoU2V0X09mZnNldF9Ub19Ub3ApOiBJbml0aWFsaXplIHRoZSBPZmZzZXRfVG9fVG9wIGZpZWxkIGluIHRoZSBwcm9sb2d1ZQoJb2YgdGhlIGRpc3BhdGNoIHRhYmxlLgoJKEluaGVyaXRfVFNEKTogTW9kaWZpZWQgdG8gY29weSB0aGUgdGFibGUgb2YgYW5jZXN0b3IgdGFncyBwbHVzIHRoZQoJdGFibGUgb2YgaW50ZXJmYWNlcyBvZiB0aGUgcGFyZW50LgoJKEV4cGFuZGVkX05hbWUpOiBSYWlzZSBUYWdfRXJyb3IgaWYgdGhlIHBhc3NlZCB0YWcgZXF1YWxzIE5vX1RhZy4KCShFeHRlcm5hbF9UYWcpOiBSYWlzZSBUYWdfRXJyb3IgaWYgdGhlIHBhc3NlZCB0YWcgZXF1YWxzIE5vX1RhZy4KCShQYXJlbnRfVGFnKTogUmV0dXJuIE5vX1RhZyBpbiB0aGUgY2FzZSBvZiBhIHJvb3QtbGV2ZWwgdGFnZ2VkIHR5cGUsCglhbmQgcmFpc2UgVGFnX0Vycm9yIGlmIHRoZSBwYXNzZWQgdGFnIGVxdWFsaXMgTm9fVGFnLCB0byBjb25mb3JtIHdpdGgKCUFkYSAyMDA1IHNlbWFudGljcyBmb3IgdGhlIG5ldyBwcmVkZWZpbmVkIGZ1bmN0aW9uLgoKCSogZXhwX2F0dHIuYWRiIChFeHBhbmRfTl9BdHRyaWJ1dGUsIGNhc2UgQXR0cmlidXRlX0lucHV0KTogR2VuZXJhdGUKCWNhbGwgdG8gRGVzY2VuZGFudF9UYWcgcmF0aGVyIHRoYW4gSW50ZXJuYWxfVGFnLgoJKEV4cGFuZF9OX0F0dHJpYnV0ZSwgY2FzZSBBdHRyaWJ1dGVfT3V0cHV0KTogRW1pdCBhIGNoZWNrIHRvIGVuc3VyZSB0aGF0Cgl0aGUgYWNjZXNzaWJpbGl0eSBsZXZlbCBvZiB0aGUgYXR0cmlidXRlJ3MgSXRlbSBwYXJhbWV0ZXIgaXMgbm90IGRlZXBlcgoJdGhhbiB0aGUgbGV2ZWwgb2YgdGhlIGF0dHJpYnV0ZSdzIHByZWZpeCB0eXBlLiBUYWdfRXJyb3IgaXMgcmFpc2VkIGlmCgl0aGUgY2hlY2sgZmFpbHMuIFRoZSBjaGVjayBpcyBvbmx5IGVtaXR0ZWQgZm9yIEFkYV8wNS4KCShGaW5kX1N0cmVhbV9TdWJwcm9ncmFtKTogSWYgYSBUU1MgZXhpc3RzIG9uIHRoZSB0eXBlIGl0c2VsZiBmb3IgdGhlCglyZXF1ZXN0ZWQgc3RyZWFtIGF0dHJpYnV0ZSwgdXNlIGl0LgoJKEV4cGFuZF9OX0F0dHJpYnV0ZV9SZWZlcmVuY2UpOiBJZiB0aGUgZGVzaWduYXRlZCB0eXBlIGlzIGFuIGludGVyZmFjZQoJdGhlbiByZXdyaXRlIHRoZSByZWZlcmVuY2VkIG9iamVjdCBhcyBhIGNvbnZlcnNpb24gdG8gZm9yY2UgdGhlCglkaXNwbGFjZW1lbnQgb2YgdGhlIHBvaW50ZXIgdG8gdGhlIHNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZS4KCShFeHBhbmRfTl9BdHRyaWJ1dGVfUmVmZXJlbmNlLCBjYXNlICdDb25zdHJhaW5lZCk6IFJldHVybiBmYWxzZSBpZiB0aGlzCglpcyBhIGRlcmVmZXJlbmNlIG9mIGFuIG9iamVjdCB3aXRoIGEgY29uc3RyYWluZWQgcGFydGlhbCB2aWV3LgoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9OX1JldHVybl9TdGF0ZW1lbnQpOiBXaGVuIGEgZnVuY3Rpb24ncyByZXN1bHQKCXR5cGUgaXMgYSBjbGFzcy13aWRlIHR5cGUsIGVtaXQgYSBydW4tdGltZSBjaGVjayB0aGF0IHRoZSBhY2Nlc3NpYmlsaXR5CglsZXZlbCBvZiB0aGUgcmV0dXJuZWQgb2JqZWN0IGlzIG5vdCBkZWVwZXIgdGhhbiB0aGUgbGV2ZWwgb2YgdGhlCglmdW5jdGlvbidzIG1hc3RlciAob25seSB3aGVuIGNvbXBpbGluZyBmb3IgQWRhIDIwMDUpLgoKCSogZXhwX2Rpc3AuYWRzLCBleHBfZGlzcC5hZGIgKEFkYV9BY3Rpb25zLCBBY3Rpb25fSXNfUHJvYywKCUFjdGlvbl9OYl9BcmcpOiBBZGQgZW50cmllcyBmb3IgbmV3IEdldF9BY2Nlc3NfTGV2ZWwgYW5kCglTZXRfQWNjZXNzX0xldmVsIHJvdXRpbmVzIGluIHRoZXNlIHRhYmxlcy4KCShNYWtlX0RUKTogR2VuZXJhdGUgYSBjYWxsIHRvIHNldCB0aGUgYWNjZXNzaWJpbGl0eSBsZXZlbCBvZiB0aGUKCXRhZ2dlZCB0eXBlIGluIGl0cyBUU0QuCgkoTWFrZV9EVCk6IENvZGUgY2xlYW51cC4gVGhlIGZ1bmN0aW9uYWxpdHkgb2YgZ2VuZXJhdGluZyBhbGwgdGhlCglzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGVzIGhhcyBiZWVuIG1vdmVkIHRvIGZyZWV6ZV9yZWNvcmRfdHlwZS4KCShNYWtlX0Fic3RyYWN0X0ludGVyZmFjZV9EVCk6IE1pbm9yIGNvZGUgY2xlYW51cC4KCShTZXRfQWxsX0RUX1Bvc2l0aW9uKTogQ29kZSBjbGVhbnVwLiBBcyBwYXJ0IG9mIHRoZSBjb2RlIGNsZWFudXAKCXRoaXMgc3VicHJvZ3JhbSBpbXBsZW1lbnRzIGEgbmV3IGFsZ29yaXRobSB0aGF0IHByb3ZpZGVzIHRoZQoJc2FtZSBmdW5jdGlvbmFsaXR5IGFuZCBpdCBpcyBtb3JlIGNsZWFyIGluIGNhc2Ugb2YgcHJpbWl0aXZlcwoJYXNzb2NpYXRlZCB3aXRoIGFic3RyYWN0IGludGVyZmFjZXMuCgkoU2V0X0FsbF9JbnRlcmZhY2VzX0RUQ19FbnRpdHkpOiBSZW1vdmVkLiBBcyBwYXJ0IG9mIHRoZSBjb2RlCgljbGVhbiB1cCwgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhpcyBzdWJwcm9ncmFtIGlzIG5vdyBwcm92aWRlZAoJYnkgU2V0X0FsbF9EVF9Qb3NpdGlvbi4KCShXcml0ZV9EVCk6IE5ldyBzdWJwcm9ncmFtOiBhIGRlYnVnZ2luZyBwcm9jZWR1cmUgZGVzaWduZWQgdG8gYmUgY2FsbGVkCgl3aXRoaW4gZ2RiIHRvIGRpc3BsYXkgdGhlIGRpc3BhdGNoIHRhYmxlcyBhc3NvY2lhdGVkIHdpdGggYSB0YWdnZWQKCXR5cGUuCgkoQ29sbGVjdF9BbGxfSW50ZXJmYWNlcyk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgY29sbGVjdHMgdGhlIHdob2xlIGxpc3QKCW9mIGludGVyZmFjZXMgdGhhdCBhcmUgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBpbXBsZW1lbnRlZCBieSBhIHRhZ2dlZAoJdHlwZS4KCShEZWZhdWx0X1ByaW1fT3BfUG9zaXRpb24pOiBOZXcgc3VicHJvZ3JhbSB0aGF0IHJldHVybnMgdGhlIGZpeGVkCglwb3NpdGlvbiBpbiB0aGUgZGlzcGF0Y2ggdGFibGUgb2YgdGhlIGRlZmF1bHQgcHJpbWl0aXZlIG9wZXJhdGlvbnMuCgkoRXhwYW5kX0ludGVyZmFjZV9BY3R1YWxzKTogTmV3IHN1YnByb2dyYW0gdG8gZ2VuZXJhdGUgY29kZSB0aGF0CglkaXNwbGFjZXMgYWxsIHRoZSBhY3R1YWxzIGNvcnJlc3BvbmRpbmcgdG8gY2xhc3Mtd2lkZSBpbnRlcmZhY2VzIHRvCglyZWZlcmVuY2UgdGhlIGludGVyZmFjZSB0YWcgb2YgdGhlIGFjdHVhbCBvYmplY3QuCgkoRXhwYW5kX0ludGVyZmFjZV9Db252ZXJzaW9uKTogTmV3IHN1YnByb2dyYW0uIFJlZmVyZW5jZSB0aGUgYmFzZSBvZgoJdGhlIG9iamVjdCB0byBnaXZlIGFjY2VzcyB0byB0aGUgaW50ZXJmYWNlIHRhZyBhc3NvY2lhdGVkIHdpdGggdGhlCglzZWNvbmRhcnkgZGlzcGF0Y2ggdGFibGUuCgkoRXhwYW5kX0ludGVyZmFjZV9UaHVuayk6IE5ldyBzdWJwcm9ncmFtIHRoYXQgZ2VuZXJhdGVzIHRoZSBjb2RlIG9mIHRoZQoJdGh1bmsuIFRoaXMgaXMgcmVxdWlyZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCB0aGUgQysgQUJJLgoJKE1ha2VfQWJzdHJhY3RfSW50ZXJmYWNlX0RUKTogTmV3IHN1YnByb2dyYW0gdGhhdCBnZW5lcmF0ZSB0aGUKCWRlY2xhcmF0aW9ucyBmb3IgdGhlIHNlY29uZGFyeSBkaXNwYXRjaCB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIGFuCglhYnN0cmFjdCBpbnRlcmZhY2UuCgkoU2V0X0FsbF9JbnRlcmZhY2VzX0RUQ19FbnRpdHkpOiBOZXcgc3VicHJvZ3JhbSB0aGF0IHNldHMgdGhlIERUQ19FbnRpdHkKCWF0dHJpYnV0ZSBmb3IgZWFjaCBwcmltaXRpdmUgb3BlcmF0aW9uIGNvdmVyaW5nIGludGVyZmFjZSBzdWJwcm9ncmFtcwoJKEV4cGFuZF9EaXNwYXRjaGluZ19DYWxsLCBGaWxsX0RUX0VudHJ5LCBNYWtlX0RULCBTZXRfQWxsX0RUX1Bvc2l0aW9uKToKCVRoZXNlIHN1YnByb2dyYW1zIHdlcmUgdXBncmFkZWQgdG8gZ2l2ZSBzdXBwb3J0IHRvIGFic3RyYWN0IGludGVyZmFjZXMKCgkqIHJ0c2ZpbmQuYWRzICh0eXBlIFJFX0lkKTogQWRkIFJFX0Rlc2NlbmRhbnRfVGFnLAoJUkVfSXNfRGVzY2VuZGFudF9BdF9TYW1lX0xldmVsLCBSRV9HZXRfQWNjZXNzX0xldmVsLCBhbmQKCVJFX1NldF9BY2Nlc3NfTGV2ZWwuCgkoUkVfVW5pdF9UYWJsZSk6IEFkZCBlbnRyaWVzIGZvciBuZXcgQWRhLlRhZ3Mgb3BlcmF0aW9ucy4KCUFkZCBzdXBwb3J0IHRvIGNhbGwgdGhlIGZvbGxvd2lnIG5ldyBydW4tdGltZSBzdWJwcm9ncmFtczoKCUlXX01lbWJlcnNoaXAsIFJlZ2lzdGVyX0ludGVyZmFjZV9UYWcsIGFuZCBTZXRfT2Zmc2V0X1RvX1RvcAoKCSogc2VtX2NoMy5hZGIgKENvbnN0YW50X1JlZGVjbGFyYXRpb24pOiBBbGxvdyBhIGRlZmVycmVkIGNvbnN0YW50IHRvCgltYXRjaCBpdHMgZnVsbCBkZWNsYXJhdGlvbiB3aGVuIGJvdGggaGF2ZSBhbiBhY2Nlc3MgZGVmaW5pdGlvbiB3aXRoCglzdGF0aWNhbGx5IG1hdGNoaW5nIGRlc2lnbmF0ZWQgc3VidHlwZXMuCgkoQW5hbHl6ZV9Db21wb25lbnRfRGVjbGFyYXRpb24pOiBEZWxldGUgY29tbWVudGVkIG91dCBjb2RlIHRoYXQgd2FzCglpbmNvcnJlY3RseSBzZXR0aW5nIHRoZSBzY29wZSBvZiBhbiBhbm9ueW1vdXMgYWNjZXNzIGNvbXBvbmVudCdzIHR5cGUuCgkoUHJvY2Vzc19EaXNjcmltaW5hbnRzKTogU2V0IElzX0xvY2FsX0Fub255bW91c19BY2Nlc3MgZm9yIHRoZSB0eXBlIG9mCglhbiBhY2Nlc3MgZGlzY3JpbWluYW50IHdoZW4gdGhlIGNvbnRhaW5pbmcgdHlwZSBpcyBub25saW1pdGVkLgoJKE1ha2VfSW5jb21wbGV0ZV9UeXBlX0RlY2xhcmF0aW9uKTogQ3JlYXRlIGFuIGluY29tcGxldGUgdHlwZQoJZGVjbGFyYXRpb24gZm9yIGEgcmVjb3JkIHR5cGUgdGhhdCBpbmNsdWRlcyBzZWxmLXJlZmVyZW50aWFsIGFjY2VzcwoJY29tcG9uZW50cy4KCShDaGVja19Bbm9ueW1vdXNfQWNjZXNzX1R5cGVzKTogQmVmb3JlIGZ1bGwgYW5hbHlzaXMgb2YgYSByZWNvcmQgdHlwZQoJZGVjbGFyYXRpb24sIGNyZWF0ZSBhbm9ueW1vdXMgYWNjZXNzIHR5cGVzIGZvciBlYWNoIHNlbGYtcmVmZXJlbnRpYWwKCWFjY2VzcyBjb21wb25lbnQuCgkoQW5hbHl6ZV9Db21wb25lbnRfRGVjbGFyYXRpb24sIEFycmF5X1R5cGVfRGVjbGFyYXRpb24pOiBJbmRpY2F0ZSB0aGF0CglhbiBhY2Nlc3MgY29tcG9uZW50IGluIHRoaXMgY29udGV4dCBpcyBhIExvY2FsX0Fub255bW91c19BY2Nlc3MsIGZvcgoJcHJvcGVyIGFjY2Vzc2liaWxpdHkgY2hlY2tzLgoJKEFjY2Vzc19EZWZpbml0aW9uKTogU2V0IHByb3Blcmx5IHRoZSBzY29wZSBvZiB0aGUgYW5vbnltb3VzIGFjY2VzcyB0eXBlCgljcmVhdGVkIGZvciBhIHN0YW5kLWFsb25lIGFjY2VzcyBvYmplY3QuCgkoRmluZF9UeXBlX09mX09iamVjdCk6IEFuIG9iamVjdCBkZWNsYXJhdGlvbiBtYXkgYmUgZ2l2ZW4gd2l0aCBhbiBhY2Nlc3MKCWRlZmluaXRpb24uCgkoQ29tcGxldGVfU3VicHJvZ3JhbXNfRGVyaXZhdGlvbik6IE5ldyBzdWJwcm9ncmFtIHVzZWQgdG8gY29tcGxldGUKCXR5cGUgZGVyaXZhdGlvbiBvZiBwcml2YXRlIHRhZ2dlZCB0eXBlcyBpbXBsZW1lbnRpbmcgaW50ZXJmYWNlcy4KCUluIHRoaXMgY2FzZSBzb21lIGludGVyZmFjZSBwcmltaXRpdmVzIG1heSBoYXZlIGJlZW4gb3ZlcnJpZGVuCgl3aXRoIHRoZSBwYXJ0aWFsLXZpZXcgYW5kLCBpbnN0ZWFkIG9mIHJlLWNhbGN1bGF0aW5nIHRoZW0sIHRoZXkKCWFyZSBpbmNsdWRlZCBpbiB0aGUgbGlzdCBvZiBwcmltaXRpdmUgb3BlcmF0aW9ucyBvZiB0aGUgZnVsbC12aWV3LgoJKEJ1aWxkX0Rlcml2ZWRfUmVjb3JkX1R5cGUpOiBNb2RpZmllZCB0byBnaXZlIHN1cHBvcnQgdG8gcHJpdmF0ZQoJdHlwZXMgaW1wbGVtZW5pbmcgaW50ZXJmYWNlcy4KCShBY2Nlc3NfRGVmaW5pdGlvbik6IFJlamVjdCBBTEwgb24gYW5vbnltb3VzIGFjY2VzcyB0eXBlcy4KCShCdWlsZF9EZXJpdmVkX1JlY29yZF9UeXBlKTogSW4gdGhlIGNhc2Ugb2YgQWRhIDIwMDUsIGFsbG93IGEgdGFnZ2VkCgl0eXBlIGRlcml2YXRpb24gdG8gb2NjdXIgYXQgYSBkZWVwZXIgYWNjZXNzaWJpbGl0eSBsZXZlbCB0aGFuIHRoZQoJcGFyZW50IHR5cGUuCglGb3IgdGhlIGNhc2Ugb2YgZGVyaXZhdGlvbiB3aXRoaW4gYSBnZW5lcmljIGJvZHkgaG93ZXZlciwgZGlzYWxsb3cgdGhlCglkZXJpdmF0aW9uIGlmIHRoZSBkZXJpdmVkIHR5cGUgaGFzIGFuIGFuY2VzdG9yIHRoYXQgaXMgYSBmb3JtYWwgdHlwZQoJZGVjbGFyZWQgaW4gdGhlIGZvcm1hbCBwYXJ0IG9mIGFuIGVuY2xvc2luZyBnZW5lcmljLgoJKEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uKTogRm9yIHByb3RlY3RlZCBvYmplY3RzLCByZW1vdmUgdGhlIGNoZWNrCgl0aGF0IHRoZXkgY2Fubm90IGNvbnRhaW4gaW50ZXJydXB0IGhhbmRsZXJzIGlmIG5vdCBkZWNsYXJlZCBhdCBsaWJyYXJ5CglsZXZlbC4KCShBZGRfSW50ZXJmYWNlX1RhZ19Db21wb25lbnRzKTogTmV3IHN1YnByb2dyYW0gdG8gYWRkIHRoZSB0YWcgY29tcG9uZW50cwoJY29ycmVzcG9uZGluZyB0byBhbGwgdGhlIGFic3RyYWN0IGludGVyZmFjZSB0eXBlcyBpbXBsZW1lbnRlZCBieSBhCglyZWNvcmQgdHlwZSBvciBhIGRlcml2ZWQgcmVjb3JkIHR5cGUuCgkoQW5hbHl6ZV9Qcml2YXRlX0V4dGVuc2lvbl9EZWNsYXJhdGlvbiwgQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSwKCURlcml2ZWRfVHlwZV9EZWNsYXJhdGlvbiwgRmluZF9UeXBlX05hbWUsIEluaGVyaXRfQ29tcG9uZW50cywKCVByb2Nlc3NfRnVsbF9WaWV3LCBSZWNvcmRfVHlwZV9EZWNsYXJhdGlvbik6IE1vZGlmaWVkIHRvIGdpdmUKCXN1cHBvcnQgdG8gYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzCgkoQ29sbGVjdF9JbnRlcmZhY2VzKTogTmV3IHN1YnByb2dyYW0gdGhhdCBjb2xsZWN0cyB0aGUgbGlzdCBvZgoJaW50ZXJmYWNlcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBpbXBsZW1lbnRlZCBieSB0aGUgYW5jZXN0b3JzCgkoUHJvY2Vzc19GdWxsX1ZpZXcpOiBTZXQgZmxhZyBIYXNfUGFydGlhbF9Db25zdHJhaW5lZF9WaWV3IGFwcHJvcHJpYXRlbHkKCXdoZW4gcGFydGlhbCB2aWV3IGhhcyBubyBkaXNjcmltaW5hbnRzIGFuZCBmdWxsIHZpZXcgaGFzIGRlZmF1bHRzLgoJKENvbnN0cmFpbl9BY2Nlc3MpOiBSZWplY3QgYSBjb25zdHJhaW50IG9uIGEgZ2VuZXJhbCBhY2Nlc3MgdHlwZQoJaWYgdGhlIGRpc2NyaW1pbmFudHMgb2YgdGhlIGRlc2lnbmF0ZWQgdHlwZSBoYXZlIGRlZmF1bHRzLgoJKEFjY2Vzc19TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogQXNzb2NpYXRlIHRoZSBJdHlwZSBub2RlIHdpdGggdGhlIGlubmVyCglmdWxsLXR5cGUgZGVjbGFyYXRpb24gb3Igc3VicHJvZ3JhbSBzcGVjLiBUaGlzIGlzIHJlcXVpcmVkIHRvIGhhbmRsZQoJbmVzdGVkIGFub255bW91cyBkZWNsYXJhdGlvbnMuCgkoQW5hbHl6ZV9Qcml2YXRlX0V4dGVuc2lvbl9EZWNsYXJhdGlvbiwgQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSwKCURlcml2ZWRfVHlwZV9EZWNsYXJhdGlvbiwgRmluZF9UeXBlX05hbWUsIEluaGVyaXRfQ29tcG9uZW50cywKCVByb2Nlc3NfRnVsbF9WaWV3LCBSZWNvcmRfVHlwZV9EZWNsYXJhdGlvbik6IE1vZGlmaWVkIHRvIGdpdmUKCXN1cHBvcnQgdG8gYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzCgkoRGVyaXZlX1N1YnByb2dyYW1zKTogQWRkaXRpb24gb2YgYSBuZXcgZm9ybWFsIHRvIGluZGljYXRlIGlmCgl3ZSBhcmUgaW4gdGhlIGNhc2Ugb2YgYW4gYWJzdGFjdC1pbnRlcmZhY2UgZGVyaXZhdGlvbgoJKEZpbmRfVHlwZV9PZl9TdWJ0eXBlX0luZGljKTogTW92ZWQgZnJvbSB0aGUgYm9keSBvZiB0aGUgcGFja2FnZQoJdG8gdGhlIHNwZWNpZmljYXRpb24gYmVjYXVzZSBpdCBpcyByZXF1aWVkIHRvIGFuYWx5emUgYWxsIHRoZQoJaWRlbnRpZmllcnMgZm91bmQgaW4gYSBsaXN0IG9mIGludGVyZmFjZXMKCgkqIGRlYnVnLmFkYjogQ29tcGxldGUgZG9jdW1lbnRhdGlvbiBvZiBmbGFnICItZ25hdGRaIgoKCSogZXhwX2NoMy5hZGI6IEltcGxlbWVudCBjb25maWcgdmVyc2lvbiBvZiBwZXJzaXN0ZW50X2JzcyBwcmFnbWEKCShDaGVja19TdHJlYW1fQXR0cmlidXRlcyk6IFVzZSBTdHJlYW1fQXR0cmlidXRlX0F2YWlsYWJsZSBpbnN0ZWFkIG9mCgl0ZXN0aW5nIGZvciBUU1MgcHJlc2VuY2UgdG8gcHJvcGVybHkgZW5mb3JjZSB2aXNpYmlsaXR5IHJ1bGVzLgoJKEZyZWV6ZV9SZWNvcmRfVHlwZSk6IENvZGUgY2xlYW51cC4gTW9kaWZpZWQgdG8gY2FsbCB0aGUgc3VicHJvZ3JhbQoJTWFrZV9BYnN0cmFjdF9JbnRlcmZhY2VzX0RUIHRvIGdlbmVyYXRlIHRoZSBzZWNvbmRhcnkgdGFibGVzCglhc3NvY2lhdGVkIHdpdGggYWJzdHJhY3QgaW50ZXJmYWNlcy4KCShCdWlsZF9Jbml0X1Byb2NlZHVyZSk6IE1vZGlmaWVkIHRvIGluaXRpYWxpemUgYWxsIHRoZSB0YWdzCgljb3JyZXNwb25kaW5nLgoJKENvbXBvbmVudF9OZWVkc19TaW1wbGVfSW5pdGlhbGl6YXRpb24pOiBTaW1pbGFyIHRvIG90aGVyIHRhZ3MsCglpbnRlcmZhY2UgdGFncyBkbyBub3QgbmVlZCBpbml0aWFsaXphdGlvbi4KCShGcmVlemVfUmVjb3JkX1R5cGUpOiBNb2RpZmllZCB0byBnaXZlIHN1cHBvcnQgdG8gYWJzdHJhY3QgaW50ZXJmYWNlCgl0eXBlcy4KCShFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBEbyBub3QgZ2VuZXJhdGUgYW4gaW5pdGlhbGl6YXRpb24gZm9yCglhIHNjYWxhciB0ZW1wb3JhcnkgbWFya2VkIGFzIGludGVybmFsLgoKCSogZXhwX2NoNi5hZGIgKEFkZF9TaW1wbGVfQ2FsbF9CeV9Db3B5X0NvZGUpOiBIYW5kbGUgcHJvcGVybHkgYW4KCWluLW91dCBwYXJhbWV0ZXIgdGhhdCBpcyBhIGNvbXBvbmVudCBpbiBhbiBpbml0aWFsaXphdGlvbiBwcm9jZWR1cmUsCgl3aG9zZSBjb25zdHJhaW50IG1pZ2h0IGRlcGVuZCBvbiBkaXNjcmltaW5hbnRzLCBhbmQgdGhhdCBtYXkgYmUKCW1pc2FsaWduZWQgYmVjYXVzZSBvZiBwYWNraW5nIG9yIHJlcHJlc2VudGF0aW9uIGNsYXVzZXMuCgkoSXNfTGVnYWxfQ29weSk6IE5ldyBwcmVkaWNhdGUgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBwb3NzaWJseQoJbWlzYWxpZ25lZCBpbi1vdXQgYWN0dWFsIGNhbiBhY3R1YWxseSBiZSBwYXNzZWQgYnkgY29weS9yZXR1cm4uIFRoaXMKCWlzIGFuIGVycm9yIGluIGNhc2UgdGhlIHR5cGUgaXMgYnlfcmVmZXJlbmNlLCBhbmQgYSB3YXJuaW5nIGlmIHRoaXMgaXMKCXRoZSBjb25zZXF1ZW5jZSBvZiBhIERFQyBpbXBvcnQgcHJhZ21hIG9uIHRoZSBzdWJwcm9ncmFtLgoJKEV4cGFuZF9DYWxsLCBGcmVlemVfU3VicHJvZ3JhbSk6IE1vZGlmaWVkIHRvIGdpdmUgc3VwcG9ydCB0byBhYnN0cmFjdAoJaW50ZXJmYWNlIHR5cGVzCgkoRXhwYW5kX0lubGluZWRfQ2FsbCk6IE1hcmsgdGVtcG9yYXJ5IGdlbmVyYXRlZCBmb3IgdGhlIHJldHVybiB2YWx1ZSBhcwoJaW50ZXJuYWwsIHNvIHRoYXQgbm8gdXNlbGVzcyBzY2FsYXIgbm9ybWFsaXphdGlvbiBpcyBnZW5lcmF0ZWQgZm9yIGl0LgoJKEV4cGFuZF9OX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBTYXZlIHVuYW5hbHl6ZWQgYm9keSBzbyBjYWxscyB0bwoJbnVsbCBwcm9jZWR1cmUgY2FuIGFsd2F5cyBiZSBpbmxpbmVkLgoJKEV4cGFuZF9OX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBJZiB0aGlzIGlzIHRoZSBkZWNsYXJhdGlvbiBvZiBhIG51bGwKCXByb2NlZHVyZSwgZ2VuZXJhdGUgYW4gZXhwbGljaXQgZW1wdHkgYm9keSBmb3IgaXQuCgoJKiBleHBfdXRpbC5hZHMsIGV4cF91dGlsLmFkYiAoRmluZF9JbnRlcmZhY2VfQURUKTogTmV3IHN1YnByb2dyYW0uCglHaXZlbiBhIHR5cGUgaW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcmV0dXJucyB0aGUgY29ycmVzcG9uZGluZwoJYWNjZXNzX2Rpc3BfdGFibGUgdmFsdWUuCgkoRmluZF9JbnRlcmZhY2VfVGFnKTogTmV3IHN1YnByb2dyYW0uIEdpdmVuIGEgdHlwZSBpbXBsZW1lbnRpbmcgYW4KCWludGVyZmFjZSwgcmV0dXJucyB0aGUgcmVjb3JkIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSB0YWcgb2YgdGhlCglpbnRlcmZhY2UuCgkoRmluZF9JbnRlcmZhY2VfVGFnKTogTmV3IG92ZXJsb2FkZWQgc3VicHJvZ3JhbS4gU3Vic2lkaWFyeSB0byB0aGUKCXByZXZpb3VzIG9uZXMgdGhhdCByZXR1cm4gdGhlIGNvcnJlc3BvbmRpbmcgdGFnIGFuZCBhY2Nlc3NfZGlzcF90YWJsZQoJZW50aXRpZXMuCgkoSXNfUHJlZGVmaW5lZF9EaXNwYXRjaGluZ19PcGVyYXRpb24pOiBEZXRlcm1pbmVzIGlmIGEgc3VicHJvZ3JhbQoJaXMgYSBwcmVkZWZpbmVkIHByaW1pdGl2ZSBvcGVyYXRpb24uCgkoRXhwYW5kX1N1YnR5cGVfRnJvbV9FeHByKTogSWYgdGhlIGV4cHJlc3Npb24gaXMgYSBzZWxlY3RlZCBjb21wb25lbnQKCXdpdGhpbiBhbiBpbml0aWFsaXphdGlvbiBwcm9jZWR1cmUsIGNvbXB1dGUgaXRzIGFjdHVhbCBzdWJ0eXBlLCBiZWNhdXNlCgl0aGUgY29tcG9uZW50IG1heSBkZXBlbmQgb24gdGhlIGRpc2NyaW1pbmFudHMgb2YgdGhlIGVuY2xvc2luZyByZWNvcmQuCgoJKiBpLWNwcC5hZHMsIGktY3BwLmFkYjoKCVRoaXMgcGFja2FnZSBoYXMgYmVlbiBsZWZ0IGF2YWlsYWJsZSBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHByZXZpb3VzCgl2ZXJzaW9ucyBvZiB0aGUgZnJvbnRlbmQuIEFzIHBhcnQgb2YgdGhlIG5ldyBsYXlvdXQgdGhpcyBpcyBub3cgYQoJZHVtbXkgcGFja2FnZSB0aGF0IHVzZXMgZGVjbGFyYXRpb25zIGF2YWlsYWJsZSBhdCBhLXRhZ3MuYWRzCgoJKiBwYXItY2gzLmFkYiAoUF9JZGVudGlmaWVyX0RlY2xhcmF0aW9ucyk6IEdpdmUgYW4gZXJyb3IgZm9yIHVzZSBvZgoJImNvbnN0YW50IGFjY2VzcyIgYW5kICJhbGlhc2VkIFtjb25zdGFudF0gYWNjZXNzIiB3aGVuIG5vdCBjb21waWxpbmcKCXdpdGggLWduYXQwNS4KCVN1cHByZXNzIEFkYSAyMDA1IGtleXdvcmQgd2FybmluZyBpZiAtZ25hdHdZIHVzZWQKCShQX0lkZW50aWZpZXJfRGVjbGFyYXRpb25zKTogQWRkIHN1cHBvcnQgZm9yIG9iamVjdCBkZWNsYXJhdGlvbnMgd2l0aAoJYWNjZXNzIGRlZmluaXRpb25zLgoJKFByaXZhdGVfRXh0ZW5zaW9uX0RlY2xhcmF0aW9uKTogQ29tcGxldGUgdGhlIGRvY3VtZW50YXRpb24KCShQX0Rlcml2ZWRfVHlwZV9EZWZfT3JfUHJpdmF0ZV9FeHRfRGVjbCk6IEZpbGwgdGhlIGludGVmYWNlX2xpc3QKCWF0dHJpYnV0ZSBpbiBjYXNlIG9mIHByaXZhdGUgZXh0ZW5zaW9uIGRlY2xhcmF0aW9uCgkoUF9UeXBlX0RlY2xhcmF0aW9uKTogTWFyayBhcyAiYWJzdHJhY3QiIHRoZSB0eXBlIGRlY2xhcmF0aW9ucwoJY29ycmVzcG9uZGluZyB3aXRoIHByb3RlY3RlZCwgc3luY2hyb25pemVkIGFuZCB0YXNrIGludGVyZmFjZXMKCShQX0RlY2xhcmF0aXZlX0l0ZW1zKTogIm5vdCIgYW5kICJvdmVycmlkaW5nIiBhcmUgb3ZlcnJpZGluZyBpbmRpY2F0b3JzCglmb3IgYSBzdWJwcm9ncmFtIG9yIGluc3RhbmNlIGRlY2xhcmF0aW9uLgoKCSogc2VtX2NoMTIuYWRiIChBbmFseXplX1N1YnByb2dyYW1fSW5zdGFudGlhdGlvbik6IFZlcmlmeSB0aGF0IGFuCglpbnN0YW50aWF0aW9uIHRoYXQgaXMgYSBkaXNwYXRjaGluZyBvcGVyYXRpb24gaGFzIGNvbnRyb2xsaW5nIGFjY2VzcwoJcGFyYW1ldGVycyB0aGF0IGFyZSBudWxsIGV4Y2x1ZGluZy4KCVNhdmUgYW5kIHJlc3RvcmUgQWRhX1ZlcnNpb25fRXhwbGljaXQsIGZvciBpbXBsZW1lbnRhdGlvbiBvZiBBSS0zNjIKCShWYWxpZGF0ZV9EZXJpdmVkX1R5cGVfSW5zdGFuY2UpOiBBZGQgY2hlY2sgZm9yIGFic3RyYWN0IGludGVyZmFjZQoJdHlwZXMuCgkoQW5hbHl6ZV9Gb3JtYWxfUGFja2FnZSk6IEVzdGFibGlzaCBJbnN0YW50aWF0aW9uIHNvdXJjZSBmb3IgdGhlIGNvcHkgb2YKCXRoZSBnZW5lcmljIHRoYXQgaXMgY3JlYXRlZCB0byByZXByZXNlbnQgdGhlIGZvcm1hbCBwYWNrYWdlLgoJKEFuYWx5emVfUGFja2FnZV9JbnN0YW50aWF0aW9uKTogSW5zdGFudGlhdGUgYm9keSBpbW1lZGlhdGVseSBpZiB0aGUKCXBhY2thZ2UgaXMgYSBwcmVkZWZpbmVkIHVuaXQgdGhhdCBjb250YWlucyBpbmxpbmVkIHN1YnByb2dyYW1zLCBhbmQKCXdlIGFyZSBjb21waWxpbmcgZm9yIGEgQ29uZmlndXJhYmxlX1J1bl9UaW1lLgoJKEluc3RhbnRpYXRlX0Zvcm1hbF9TdWJwcm9ncmFtKTogSW5kaWNhdGUgdGhhdCBudWxsIGRlZmF1bHQgc3VicHJvZ3JhbQoJSWYgdGhlIHByb2dyYW0gaGFzIGEgbnVsbCBkZWZhdWx0LCBnZW5lcmF0ZSBhbiBlbXB0eSBib2R5IGZvciBpdC4KCgkqIHNlbV9jaDYuYWRiLCBzZW1fY2g5LmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtc19EZWNsYXJhdGlvbik6IFVwZGF0ZQoJZXJyb3IgbWVzc2FnZSBjb25kaXRpb24sIG51bGwgcHJvY2VkdXJlcyBhcmUgY29ycmVjdGx5IGRldGVjdGVkIG5vdy4KCShOZXdfT3ZlcmxvYWRlZF9FbnRpdHkpOiBCeXBhc3MgdHJpdmlhbCBvdmVycmlkaW5nIGluZGljYXRvciBjaGVjawoJZm9yIHN1YnByb2dyYW1zIGluIHRoZSBjb250ZXh0IG9mIHByb3RlY3RlZCB0eXBlcy4gSW5zdGVhZCwgdGhlCglpbmRpY2F0b3IgaXMgZXhhbWluZWQgaW4gU2VtX0NoOSB3aGlsZSBhbmFseXNpbmcgdGhlIHN1YnByb2dyYW0KCWRlY2xhcmF0aW9uLgoJKENoZWNrX092ZXJyaWRpbmdfSW5kaWNhdG9yKTogQ2hlY2sgY29uc2lzdGVuY3kgb2Ygb3ZlcnJpZGluZyBpbmRpY2F0b3IKCW9uIHN1YnByb2dyYW0gc3R1YnMgYXMgd2VsbC4KCShBbmFseXplX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBEaWFnbm9zZSBudWxsIHByb2NlZHVyZXMgZGVjbGFyZWQgYXQKCXRoZSBsaWJyYXJ5IGxldmVsLgoJKEFuYWxpemVfU3VicHJvZ3JhbV9TcGVjaWZpY2F0aW9uKTogV2hlbiBhbmFseXppbmcgYSBzdWJwcm9ncmFtIGluIHdoaWNoCgl0aGUgdHlwZSBvZiB0aGUgZmlyc3QgZm9ybWFsIGlzIGEgY29uY3VycmVudCB0eXBlLCByZXBsYWNlIHRoaXMgdHlwZQoJYnkgdGhlIGNvcnJlc3BvbmRpbmcgcmVjb3JkIHR5cGUuCgkoQW5hbHl6ZV9TdWJwcm9ncmFtX0JvZHkpOiBVbmRvIHRoZSBwcmV2aW91cyB3b3JrLgoJKEFuYWx5emVfUHJvY2VkdXJlX0NhbGwpOiBJZiB0aGUgY2FsbCBoYXMgdGhlIGZvcm0gT2JqZWN0Lk9wLCB0aGUKCWFuYWx5c2lzIG9mIHRoZSBwcmVmaXggZW5kcyB1cCBhbmFseXppbmcgdGhlIGNhbGwgaXRzZWxmLCBhZnRlciB3aGljaAoJd2UgYXJlIGRvbmUuCgkoSGFzX0ludGVyZmFjZV9Gb3JtYWxzKTogTmV3IHN1YnByb2dyYW0gc3Vic2lkaWFyeSB0byBhbmFseXplCglzdWJwcm9ncmFtX3NwZWNpZmljYXRpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgc29tZSBub24KCWNsYXNzLXdpZGUgaW50ZXJmYWNlIHN1YnByb2dyYW0gaXMgZm91bmQKCShOZXdfT3ZlcmxvYWRlZF9FbnRpdHkpOiBNb2RpZmllZCB0byBnaXZlIHN1cHBvcnQgdG8gYWJzdHJhY3QKCWludGVyZmFjZSB0eXBlcwoJKENvbmZvcm1pbmdfVHlwZXMpOiBJbiBBZGEgMjAwNSBtb2RlLCBjb25mb3JtYW5jZSBjaGVja2luZyBvZiBhbm9ueW1vdXMKCWFjY2VzcyB0byBzdWJwcm9ncmFtcyBtdXN0IGJlIHJlY3Vyc2l2ZS4KCShJc19VbmNoZWNrZWRfQ29udmVyc2lvbik6IEltcHJvdmUgdGhlIHRlc3QgdGhhdCByZWNvZ25pemVzCglpbnN0YW50aWF0aW9ucyBvZiBVbmNoZWNrZWRfQ29udmVyc2lvbiwgYW5kIGFsbG93cyB0aGVtIGluIGJvZGllcyB0aGF0CglhcmUgdG8gYmUgaW5saW5lZCBieSB0aGUgZnJvbnQtZW5kLiBXaGVuIHRoZSBib2R5IGNvbWVzIGZyb20gYW4KCWluc3RhbnRpYXRpb24sIGEgcmVmZXJlbmNlIHRvIFVuY2hlY2tlZF9Db252ZXJzaW9uIHdpbGwgYmUgYW4KCUV4cGFuZGVkX05hbWUsIGV2ZW4gdGhvdWdoIHRoZSBib2R5IGhhcyBub3QgYmVlbiBhbmFseXplZCB5ZXQuCglSZXBsYWNlIElzX092ZXJyaWRpbmcgYW5kIE5vdF9PdmVycmlkaW5nIGluIHN1YnByb2dyYW1faW5kaWNhdGlvbiB3aXRoCglNdXN0X092ZXJyaWRlIGFuZCBNdXN0X05vdF9PdmVycmlkZSwgdG8gYmV0dGVyIGV4cHJlc3MgaW50ZW50IG9mIEFJLgoJKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogSWYgYW4gb3ZlcnJpZGluZyBpbmRpY2F0b3IgaXMgZ2l2ZW4sIGNoZWNrCgl0aGF0IGl0IGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgb3ZlcnJpbmRpbmcgc3RhdHVzIG9mIHRoZSBzdWJwcm9ncmFtCglhdCB0aGlzIHBvaW50LgoJKEFuYWx5emVfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IEluZGljYXRlIHRoYXQgYSBudWxsIHByb2NlZHVyZSBpcwoJYWx3YXlzIGlubGluZWQuCglJZiB0aGUgc3VicHJvZ3JhbSBpcyBhIG51bGwgcHJvY2VkdXJlLCBpbmRpY2F0ZSB0aGF0IGl0IGRvZXMgbm90IG5lZWQKCWEgY29tcGxldGlvbi4KCgkqIHNlbV9kaXNwLmFkYiAoQ2hlY2tfQ29udHJvbGxpbmdfVHlwZSk6IEdpdmUgc3VwcG9ydCB0byBlbnRpdGllcwoJYXZhaWxhYmxlIHRocm91Z2ggbGltaXRlZC13aXRoIGNsYXVzZXMuCgkoQ2hlY2tfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogQSBzdHViIGFjdHMgbGlrZSBhIGJvZHksIGFuZCB0aGVyZWZvcmUgaXMKCWFsbG93ZWQgYXMgdGhlIGxhc3QgcHJpbWl0aXZlIG9mIGEgdGFnZ2VkIHR5cGUgaWYgaXQgaGFzIG5vIHByZXZpb3VzCglzcGVjLgoJKE92ZXJyaWRlX0Rpc3BhdGNoaW5nX09wZXJhdGlvbiwgQ2hlY2tfRGlzcGF0Y2hpbmdfT3BlcmF0aW9uKTogTW9kaWZpZWQKCXRvIGdpdmUgc3VwcG9ydCB0byBhYnN0cmFjdCBpbnRlcmZhY2UgdHlwZXMKCgkqIHNlbV9yZXMuYWRiIChWYWxpZF9Db252ZXJzaW9uKTogUGVyZm9ybSBhbiBhY2Nlc3NpYmlsaXR5IGxldmVsIGNoZWNrCglpbiB0aGUgY2FzZSB3aGVyZSB0aGUgdGFyZ2V0IHR5cGUgaXMgYW4gYW5vbnltb3VzIGFjY2VzcyB0eXBlIG9mIGFuCglvYmplY3Qgb3IgY29tcG9uZW50ICh0aGF0IGlzLCB3aGVuIElzX0xvY2FsX0Fub255bW91c19BY2Nlc3MgaXMgdHJ1ZSkuCglQcmV2ZW50IHRoZSBzcGVjaWFsIGNoZWNrcyBmb3IgY29udmVyc2lvbnMgb2YgYWNjZXNzIGRpc2NyaW1pbmFudHMgaW4KCXRoZSBjYXNlIHdoZXJlIHRoZSBkaXNjcmltaW5hbnQgYmVsb25ncyB0byBhIG5vbmxpbWl0ZWQgdHlwZSwgc2luY2UKCXN1Y2ggZGlzY3JpbWluYW50cyBoYXZlIHRoZWlyIGFjY2Vzc2liaWxpdHkgbGV2ZWwgZGVmaW5lZCBpbiB0aGUgc2FtZQoJd2F5IGFzIGEgbm9ybWFsIGNvbXBvbmVudCBvZiBhbiBhbm9ueW1vdXMgYWNjZXNzIHR5cGUuCgkoUmVzb2x2ZV9BbGxvY2F0b3IpOiBXaGVuIGFuIGFsbG9jYXRvcidzIGRlc2lnbmF0ZWQgdHlwZSBpcyBhIGNsYXNzLXdpZGUKCXR5cGUsIGNoZWNrIHRoYXQgdGhlIGFjY2Vzc2liaWxpdHkgbGV2ZWwgb2YgdHlwZSBnaXZlbiBpbiB0aGUKCWFsbG9jYXRvcidzIGV4cHJlc3Npb24gb3Igc3VidHlwZSBpbmRpY2F0aW9uIGlzIG5vdCBzdGF0aWNhbGx5IGRlZXBlcgoJdGhhbiB0aGUgbGV2ZWwgb2YgdGhlIGFsbG9jYXRvcidzIGFjY2VzcyB0eXBlLgoJKENoZWNrX0Rpc2NyaW1pbmFudF9Vc2UpOiBEaWFnbm9zZSBkaXNjcmltaW5hbnQgZ2l2ZW4gYnkgYW4gZXhwYW5kZWQKCW5hbWUgaW4gYSBkaXNjcmltaW5hbnQgY29uc3RyYWludCBvZiBhIHJlY29yZCBjb21wb25lbnQuCgkoUmVzb2x2ZV9FeHBsaWNpdF9EZXJlZmVyZW5jZSk6IERvIG5vdCBjaGVjayB3aGV0aGVyIHRoZSB0eXBlIGlzCglpbmNvbXBsZXRlIHdoZW4gdGhlIGRlcmVmZXJlbmNlIGlzIGEgdXNlIG9mIGFuIGFjY2VzcyBkaXNjcmltaW5hbnQgaW4KCWFuIGluaXRpYWxpemF0aW9uIHByb2NlZHVyZS4KCShSZXNvbHZlX1R5cGVfQ29udmVyc2lvbik6IEhhbmRsZSBjb252ZXJzaW9ucyB0byBhYnN0cmFjdCBpbnRlcmZhY2UKCXR5cGVzLgoJKFZhbGlkX1RhZ2dlZF9Db252ZXJzaW9uKTogVGhlIGNvbnZlcnNpb24gb2YgYSB0YWdnZWQgdHlwZSB0byBhbgoJYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGUgaXMgYWx3YXlzIHZhbGlkLgoJKFZhbGlkX0NvbnZlcnNpb24pOiBNb2RpZmllZCB0byBnaXZlIHN1cHBvcnQgdG8gYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzCgkoUmVzb2x2ZV9BY3R1YWxzKTogRW5hYmxlIGZ1bGwgZXJyb3IgcmVwb3J0aW5nIG9uIHZpZXcgY29udmVyc2lvbnMKCWJldHdlZW4gdW5yZWxhdGVkIGJ5X3JlZmVyZW5jZSBhcnJheSB0eXBlcy4KCVRoZSBydWxlIGZvciB2aWV3IGNvbnZlcnNpb25zIG9mIGFycmF5cyB3aXRoIGFsaWFzZWQgY29tcG9uZW50cyBpcwoJd2Vha2VuZWQgaW4gQWRhIDIwMDUuCglDYWxsIHRvIG9ic29sZXNjZW50IHN1YnByb2dyYW0gaXMgbm93IGNvbnNpZGVyZWQgdG8gYmUgYSB2aW9sYXRpb24gb2YKCXByYWdtYSBSZXN0cmljdGlvbnMgKE5vX09ic29sZXNjZW50X0ZlYXR1cmVzKS4KCShDaGVja19EaXJlY3RfQm9vbGVhbl9PcGVyYXRvcik6IElmIHRoZSBib29sZWFuIG9wZXJhdGlvbiBoYXMgYmVlbgoJY29uc3RhbnQtZm9sZGVkLCB0aGVyZSBpcyBub3RoaW5nIHRvIGNoZWNrLgoJKFJlc29sdmVfQ29tcGFyaXNvbl9PcCwgUmVzb2x2ZV9FcXVhbGl0eV9PcCwgUmVzb2x2ZV9Cb29sZWFuX09wKTogRGVmZXIKCWNoZWNrIG9uIHBvc3NpYmxlIHZpb2xhdGlvbiBvZiByZXN0cmljdGlvbiBOb19EaXJlY3RfQm9vbGVhbl9PcGVyYXRvcnMKCXVudGlsIGFmdGVyIGV4cGFuc2lvbiBvZiBvcGVyYW5kcywgdG8gcHJldmVudCBzcHVyaW91cyBlcnJvcnMgd2hlbgoJb3BlcmF0aW9uIGlzIGNvbnN0YW50LWZvbGRlZC4KCgkqIHNlbV90eXBlLmFkcywgc2VtX3R5cGUuYWRiIChDb3ZlcnMsIEludGVyc2VjdF9UeXBlcywgU3BlY2lmaWNfVHlwZSwKCUhhc19Db21wYXRpYmxlX1R5cGUpOiBNb2RpZmllZCB0byBnaXZlIHN1cHBvcnQgdG8gYWJzdHJhY3QgaW50ZXJmYWNlCgl0eXBlcy4KCShJbnRlcmZhY2VfUHJlc2VudF9Jbl9BbmNlc3Rvcik6IE5ldyBmdW5jdGlvbiB0byB0aGVjayBpZiBzb21lIGFuY2VzdG9yCglvZiBhIGdpdmVuIHR5cGUgaW1wbGVtZW50cyBhIGdpdmVuIGludGVyZmFjZQoKCSogc2VtX2NoNC5hZGIgKEFuYWx5emVfQ2FsbCk6IEhhbmRsZSBwcm9wZXJseSBhbiBpbmRpcmVjdCBjYWxsIHdob3NlCglwcmVmaXggaXMgYSBwYXJhbWV0ZXJsZXNzIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhbiBhY2Nlc3NfdG9fcHJvY2VkdXJlLgoJKFRyYW5zZm9ybV9PYmplY3RfT3BlcmF0aW9uKTogSGFuZGxlIHByb3Blcmx5IGZ1bmN0aW9uIGNhbGxzIG9mIHRoZQoJZm9ybSBPYmouT3AgKFgpLCB3aGljaCBwcmlvciB0byBhbmFseXNpcyBhcHBlYXIgYXMgaW5kZXhlZCBjb21wb25lbnRzLgoJKEFuYWx5emVfT25lX0NhbGwpOiBDb21wbGV0ZSB0aGUgZXJyb3Igbm90aWZpY2F0aW9uIHRvIGhlbHAgbmV3IEFkYQoJMjAwNSB1c2Vycy4KCShBbmFseXplX0FsbG9jYXRvcik6IEZvciBhbiBhbGxvY2F0b3Igd2l0aG91dCBhbiBpbml0aWFsIHZhbHVlLCB3aGVyZQoJdGhlIGRlc2lnbmF0ZWQgdHlwZSBoYXMgYSBjb25zdHJhaW5lZCBwYXJ0aWFsIHZpZXcsIGEgZGlzY3JpbWluYW50Cgljb25zdHJhaW50IGlzIGlsbGVnYWwuCgoyMDA1LTA2LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGEtdGV4dGlvLmFkYiAoU2V0X0NvbCk6IEZpeCB0d28gZXJyb3JzIG5vdGljZWQgcmVjZW50bHksIGhhdmluZyB0bwoJZG8gd2l0aCB0cmVhdG1lbnQgb2YgU2V0X0NvbCB3aGVuIHBvc2l0aW9uZWQgYXQgZW5kIG9mIGxpbmUgY2hhcmFjdGVyLgoKMjAwNS0wNi0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhdHJlZS5hZGI6IChFbGlzdCopOiBQcm90ZWN0IGFnYWluc3QgdW5pbml0aWFsaXplZCBmaWVsZAoKMjAwNS0wNi0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogY2hlY2tzLmFkYiAoSW5zdGFsbF9OdWxsX0V4Y2x1ZGluZ19DaGVjayk6IERvIG5vdCBnZW5lcmF0ZSBjaGVja3MKCWZvciBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlIHRoYXQgcmV0dXJucyBhbiBhY2Nlc3MgdHlwZS4KCShBcHBseV9EaXNjcmltaW5hbnRfQ2hlY2spOiBObyBuZWVkIGZvciBjaGVjayBpZiAoZGVzaWduYXRlZCkgdHlwZSBoYXMKCWNvbnN0cmFpbmVkIHBhcnRpYWwgdmlldy4KCgkoQXBwbHlfRmxvYXRfQ29udmVyc2lvbl9DaGVjayk6IEdlbmVyYXRlIGEgc2hvcnQtY2lyY3VpdCBleHByZXNzaW9uIGZvcgoJYm90aCBib3VuZCBjaGVja3MsIHJhdGhlciB0aGFuIGEgY29uanVuY3Rpb24uCgkoSW5zZXJ0X1ZhbGlkX0NoZWNrKTogSWYgdGhlIGV4cHJlc3Npb24gaXMgYW4gYWN0dWFsIHRoYXQgaXMgYW4gaW5kZXhlZAoJY29tcG9uZW50IG9mIGEgYml0LXBhY2tlZCBhcnJheSwgZm9yY2UgZXhwYW5zaW9uIG9mIHRoZSBwYWNrZWQgZWxlbWVudAoJcmVmZXJlbmNlLCBiZWNhdXNlIGl0IGlzIHNwZWNpZmljYWxseSBpbmhpYml0ZWQgZWxzZXdoZXJlLgoKMjAwNS0wNi0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBjbGVhbi5hZGIgKENsZWFuX1Byb2plY3QpOiBDb3JyZWN0bHkgZGVsZXRlIGV4ZWN1dGFibGUgc3BlY2lmaWVkIGFzCglhYnNvbHV0ZSBwYXRoIG5hbWVzLgoKCSogbWFrZS5hZGIgKEduYXRtYWtlKTogQWxsb3cgcmVsYXRpdmUgZXhlY3V0YWJsZSBwYXRoIG5hbWVzIHdpdGgKCWRpcmVjdG9yeSBpbmZvcm1hdGlvbiBldmVuIHdoZW4gcHJvamVjdCBmaWxlcyBhcmUgdXNlZC4KCShDaGFuZ2VfVG9fT2JqZWN0X0RpcmVjdG9yeSk6IEZhaWwgZ3JhY2VmdWxseSB3aGVuIHVuYWJsZSB0byBjaGFuZ2UKCWN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgdG8gb2JqZWN0IGRpcmVjdG9yeSBvZiBhIHByb2plY3QuCgkoR25hdG1ha2UpOiBSZW1vdmUgZXhjZXB0aW9uIGhhbmRsZXIgdGhhdCBjb3VsZCBubyBsb25nZXIgYmUgZXhlcmNpemVkCgkoQ29tcGlsZV9Tb3VyY2VzLkNvbXBpbGUpOiBVc2UgZGVlcCBjb3BpZXMgb2YgYXJndW1lbnRzLCBhcyBzb21lIG9mIHRoZW0KCW1heSBiZSBkZWFsbG9jYXRlZCBieSBOb3JtYWxpemVfQXJndW1lbnRzLgoJKENvbGxlY3RfQXJndW1lbnRzKTogRWxpbWluYXRlIGVtcHR5IGFyZ3VtZW50cwoKCSogZ25hdGNtZC5hZGIgKEFsbF9Qcm9qZWN0cyk6IE5ldyBCb29sZWFuIGZsYWcsIGluaXRpYWxpemVkIHRvIEZhbHNlLAoJYW5kIHNldCB0byBUcnVlIHdoZW4gLVUgaXMgdXNlZCBmb3IgR05BVCBQUkVUVFkgb3IgR05BVCBNRVRSSUMuCgkoQ2hlY2tfUHJvamVjdCk6IFJldHVybiBGYWxzZSB3aGVuIFByb2plY3QgaXMgTm9fUHJvamVjdC4gUmV0dXJuIFRydWUKCXdoZW4gQWxsX1Byb2plY3RzIGlzIFRydWUuCgkoR05BVENtZCk6IFJlY29nbml6ZSBzd2l0Y2ggLVUgZm9yIEdOQVQgUFJFVFRZIGFuZCBHTkFUIE1FVFJJQyBhbmQgc2V0CglBbGxfUHJvamVjdHMgdG8gVHJ1ZS4KCU1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNS0wNi0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAYWRhY29yZS5jb20+CgkgICAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogZWluZm8uYWRzLCBlaW5mby5hZGIgKElzX0xvY2FsX0Fub255bW91c19BY2Nlc3MpOiBOZXcgZmxhZyBvbgoJYW5vbnltb3VzIGFjY2VzcyB0eXBlcywgdG8gaW5kaWNhdGUgdGhhdCB0aGUgYWNjZXNzaWJpbGl0eSBsZXZlbCBvZgoJdGhlIHR5cGUgaXMgZGV0ZXJtaW5lZCBieSB0aGF0IG9mIHRoZSBlbmNsb3NpbmcgZGVjbGFyYXRpb24uCgkoSGFzX1BlcnNpc3RlbnRfQlNTKTogTmV3IGZsYWcKCShTZXRfSXNfUHJpbWl0aXZlX1dyYXBwZXIpOiBVcGdyYWRlIHRoZSBiYXJyaWVyIHRvIGFsbG93IHRoZSB1c2FnZQoJb2YgdGhpcyBhdHRyaWJ1dGUgd2l0aCBmdW5jdGlvbnMuCgkoSXNfUHJpbWl0aXZlX1dyYXBwZXIpOiBSZW1vdmUgdGhlIGJhcnJpZXIuCgkoSGFzX1NwZWNpZmllZF9TdHJlYW1fSW5wdXQsIEhhc19TcGVjaWZpZWRfU3RyZWFtX091dHB1dCwKCUhhc19TcGVjaWZpZWRfU3RyZWFtX1JlYWQsIEhhc19TcGVjaWZpZWRfU3RyZWFtX1dyaXRlKToKCU5ldyBzdWJwcm9ncmFtcy4KCShTZXRfSGFzX1NwZWNpZmllZF9TdHJlYW1fSW5wdXQsIFNldF9IYXNfU3BlY2lmaWVkX1N0cmVhbV9PdXRwdXQsCglTZXRfSGFzX1NwZWNpZmllZF9TdHJlYW1fUmVhZCwgU2V0X0hhc19TcGVjaWZpZWRfU3RyZWFtX1dyaXRlKToKCU5ldyBzdWJwcm9ncmFtcy4KCShJc19QdXJlX1VuaXRfQWNjZXNzX1R5cGUpOiBOZXcgZmxhZwoJKEFic3RyYWN0X0ludGVyZmFjZXMpOiBDb21wbGV0ZSB0aGUgYXNzZXJ0aW9uIHRvIGNvdmVyIGFsbCB1c2FnZXMuCgkoU2V0X0lzX0ludGVyZmFjZSk6IENvbXBsZXRlIHRoZSBhc3NlcnRpb24gdG8gY292ZXIgYWxsIHVzYWdlcy4KCShJc19QcmltaXRpdmVfV3JhcHBlcik6IE5ldyBhdHRyaWJ1dGUuCgkoSXNfT2Jzb2xlc2NlbnQpOiBOb3cgYXBwbGllcyB0byBhbGwgZW50aXRpZXMgKHRob3VnaCBpdCBpcyBvbmx5IHNldAoJZm9yIHN1YnByb2dyYW1zIGN1cnJlbnRseSkKCU5ldyBmbGFnOiAgSGFzX0NvbnN0cmFpbmVkX1BhcnRpYWxfVmlldywgdG8gaW1wbGVtZW50ZSBBZGEgMjAwNSBBSS0zNjMsCgl3aGljaCBzb2x2ZXMgdmFyaW91cyBwcm9ibGVtcyBjb25jZXJuaW5nIGFjY2VzcyBzdWJ0eXBlcy4KCShIYXNfUGVyc2lzdGVudF9CU1MpOiBOZXcgZmxhZwoJKElzX1ByaW1pdGl2ZV9XcmFwcGVyLCBTZXRfUHJpbWl0aXZlX1dyYXBwZXIpOiBDb2RlIGNsZWFudXAuCglSZW1vdmUgdGhlc2Ugc3VicHJvZ3JhbXMgYmVjYXVzZSB0aGlzIGF0dHJpYnV0ZSBpcyBjdXJyZW50bHkKCW5vdCB1c2VkLgoJTmV3IGVudGl0eSBmbGFnczoKCUhhc19TcGVjaWZpZWRfU3RyZWFtX0lucHV0IChGbGFnMTkwKQoJSGFzX1NwZWNpZmllZF9TdHJlYW1fT3V0cHV0IChGbGFnMTkxKQoJSGFzX1NwZWNpZmllZF9TdHJlYW1fUmVhZCAoRmxhZzE5MikKCUhhc19TcGVjaWZpZWRfU3RyZWFtX1dyaXRlIChGbGFnMTkzKQoJUHJlc2VudCBpbiBhbGwgdHlwZSBhbmQgc3VidHlwZSBlbnRpdGllcy4gU2V0IGZvciBhIGdpdmVuIHZpZXcgaWYgdGhlCgljb3JyZXNwb25kaW5nIHN0cmVhbS1vcmllbnRlZCBhdHRyaWJ1dGUgaGFzIGJlZW4gZGVmaW5lZCBieSBhbgoJYXR0cmlidXRlIGRlZmluaXRpb24gY2xhdXNlLiBXaGVuIHN1Y2ggYSBjbGF1c2Ugb2NjdXJzLCBhIFRTUyBpcyBzZXQKCW9uIHRoZSB1bmRlcmx5aW5nIGZ1bGwgdmlldzsgdGhlIGZsYWdzIGFyZSB1c2VkIHRvIHRyYWNrIHZpc2liaWxpdHkgb2YKCXRoZSBhdHRyaWJ1dGUgZGVmaW5pdGlvbiBjbGF1c2UgZm9yIHBhcnRpYWwgb3IgaW5jb21wbGV0ZSB2aWV3cy4KCShJc19QdXJlX1VuaXRfQWNjZXNzX1R5cGUpOiBOZXcgZmxhZwoJQ2xhcmlmeSB1c2Ugb2YgSXNfSW50ZXJuYWwuCgkoSXNfUHJpbWl0aXZlX1dyYXBwZXIpOiBOZXcgYXR0cmlidXRlIHByZXNlbnQgaW4gcHJpbWl0aXZlIHN1YnByb2dyYW1zCglpbnRlcm5hbGx5IGdlbmVyYXRlZCB0byB3cmFwIHRoZSBpbnZvY2F0aW9uIG9mIHRhc2tzIGFuZCBwcm90ZWN0ZWQKCXR5cGVzIHRoYXQgaW1wbGVtZW50IGludGVyZmFjZXMuCgkoSW1wbGVtZW50YXRpb25fQmFzZV9UeXBlKTogRG9jdW1lbnRhdGlvbiBjb3JyZWN0aW9uCgkoSXNfT2Jzb2xlc2NlbnQpOiBOb3cgYXBwbGllcyB0byBhbGwgZW50aXRpZXMgKHRob3VnaCBpdCBpcyBvbmx5IHNldAoJZm9yIHN1YnByb2dyYW1zIGN1cnJlbnRseSkKCU5ldyBmbGFnOiAgSGFzX0NvbnN0cmFpbmVkX1BhcnRpYWxfVmlldywgdG8gaW1wbGVtZW50IEFkYSAyMDA1IEFJLTM2MywKCXdoaWNoIHNvbHZlcyB2YXJpb3VzIHByb2JsZW1zIGNvbmNlcm5pbmcgYWNjZXNzIHN1YnR5cGVzLgoKCSogZXhwX2NoOS5hZGIgKFR5cGVfQ29uZm9ybWFudF9QYXJhbWV0ZXJzKTogSW50cm9kdWNlIG1vZGUgY29uZm9ybWFuY2UKCWZvciBleGFtaW5lZCBwYXJhbWV0ZXJzLiBJZGVudGlmeSB1bmVxdWFsIHBhcmFtZXRlciBsaXN0IGxlbmd0aHMgYXMKCW5vbi1jb25mb3JtYW50IHBhcmFtZXRlcnMuCgkoT3ZlcnJpZGluZ19Qb3NzaWJsZSk6IERvIG5vdCBjaGVjayBmb3IgIkFsbCIgcXVhbGlmaWVyIGluIGRlY2xhcmF0aW9uCglvZiBjb250cm9sbGluZyBhY2Nlc3MgcGFyYW1ldGVyLCBmb2xsb3dpbmcgcHJlc2NyaXB0aW9uIG9mIEFJLTQwNC4KCShCdWlsZF9FbnRyeV9XcmFwcGVyX1NwZWMsIEJ1aWxkX0VudHJ5X1dyYXBwZXJfQm9keSk6IE5ldyBzdWJwcm9ncmFtcwoJdGhhdCBidWlsZCB0aGUgcHJvY2VkdXJlIGJvZHkgdGhhdCB3cmFwcyBhbiBlbnRyeSBpbnZvY2F0aW9uCgkoQnVpbGRfQ29ycmVzcG9uZGluZ19SZWNvcmQsIEJ1aWxkX1Byb3RlY3RlZF9TdWJfU3BlY2lmaWNhdGlvbiwKCUV4cGFuZF9OX1Byb3RlY3RlZF9Cb2R5LCBFeHBhbmRfTl9Qcm90ZWN0ZWRfVHlwZV9EZWNsYXJhdGlvbiwKCUV4cGFuZF9OX1Rhc2tfQm9keSwgRXhwYW5kX05fVGFza19UeXBlX0RlY2xhcmF0aW9uKTogTW9kaWZpZWQgdG8KCWdpdmUgc3VwcG9ydCB0byBhYnN0cmFjdCBpbnRlcmZhY2UgdHlwZXMKCgkqIGZyZWV6ZS5hZGIgKEZyZWV6ZV9FbnRpdHkpOiBJc3N1ZSBlcnJvciBtZXNzYWdlIGlmCglJc19QdXJlX1VuaXRfQWNjZXNzX1R5cGUgc2V0LCB1bmxlc3Mgd2UgYXJlIGluIEFkYSAyMDA1IG1vZGUgYW5kIHRoZQoJdHlwZSBoYXMgbm8gc3RvcmFnZSBwb29sIChBZGEgMjAwNSkgQUktMzY2LgoJQWxzbyBtb2RpZmllZCB0byBnaXZlIHN1cHBvcnQgdG8gYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzCgkoRnJlZXplX1N1YnByb2dyYW0pOiBJc3N1ZSBhbiBlcnJvciBmb3IgYSBkaXNwYXRjaGluZyBzdWJwcm9ncmFtIHdpdGggYW4KCUlubGluZV9BbHdheXMgcHJhZ21hLgoKCSogcGFyLWNoOS5hZGIgKFBfVGFza19JdGVtcyk6IFJlc2VydmVkIHdvcmRzICJub3QiIG9yICJvdmVycmlkaW5nIiBtYXkKCW5vdyBiZWdpbiBhbiBlbnRyeSBkZWNsYXJhdGlvbi4KCShQX0VudHJ5X09yX1N1YnByb2dyYW1fV2l0aF9JbmRpY2F0b3IpOiBOZXcgcHJvY2VkdXJlIGluCglQX1Byb3RlY3RlZF9PcGVyYXRpb25fRGVjbGFyYXRpb25fT3B0LiBQYXJzZSBhbiBlbnRyeSBkZWNsYXJhdGlvbiBvcgoJYSBzdWJwcm9ncmFtIGRlY2xhcmF0aW9uIHByZWNlZGVkIGJ5IGFuIG92ZXJyaWRpbmcgaW5kaWNhdG9yLgoJKFBfUHJvdGVjdGVkX09wZXJhdGlvbl9EZWNsYXJhdGlvbl9PcHQpOiBBZGQgY2FzZSBmb3IgcGFyc2luZyBlbnRyeQoJZGVjbGFyYXRpb25zIG9yIHN1YnByb2dyYW0gZGVjbGFyYXRpb25zIHByZWNlZGVkIGJ5IHJlc2VydmVkIHdvcmRzCgkibm90IiBvciAib3ZlcnJpZGluZyIuCgkoUF9FbnRyeV9EZWNsYXJhdGlvbik6IFVwZGF0ZSBjb21tZW50LiBQYXJzZSBhbmQgY2hlY2sgb3ZlcnJpZGluZwoJaW5kaWNhdG9yLCBzZXQgc2VtYW50aWMgZmxhZ3Mgb2YgZW50cnkgZGVjbGFyYXRpb25zLgoJKFBfVGFzayk6IE5ldyBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgcHJpdmF0ZSBhcHBsaWVkCgl0byBhIHRhc2sgdHlwZSBkZWNsYXJhdGlvbi4KCShQX1Byb3RlY3RlZCk6IE5ldyBlcnJvciBtZXNzYWdlIGluIGNhc2Ugb2YgcHJpdmF0ZSBhcHBsaWVkCgl0byBhIHRhc2sgdHlwZSBkZWNsYXJhdGlvbi4KCgkqIHNlbV9jaDcuYWRiIChQcmVzZXJ2ZV9GdWxsX0F0dHJpYnV0ZXMpOiBNb2RpZmllZCB0byBoYW5kbGUgdGhlIGNhc2UKCWluIHdoaWNoIHRoZSBmdWxsIHZpZXcgb2YgYSB0eXBlIGltcGxlbWVudGluZyBhbiBpbnRlcmZhY2UgaXMgYQoJY29uY3VycmVudCB0eXBlLgoJKEhhc19PdmVycmlkaW5nX1ByYWdtYSk6IFJlbW92ZSBvYnNvbGV0ZSBpbXBsZW1lbnRhdGlvbiBvZiBBSS0yMTguCglEZWNsYXJlX0luaGVyaXRlZF9Qcml2YXRlX1N1YnByb2dyYW1zKTogSWYgYW4gZXhwbGljaXQgb3BlcmF0aW9uCglvdmVycmlkZXMgYW4gb3BlcmF0aW9uIHRoYXQgaXMgaW5oZXJpdGVkIGluIHRoZSBwcml2YXRlIHBhcnQsIG1hcmsgdGhlCglleHBsaWNpdCBvbmUgYXMgb3ZlcnJpZGluZywgdG8gZW5hYmxlIG92ZXJyaWRpbmcgaW5kaWNhdG9yIGNoZWNrcy4KCShQcmVzZXJ2ZV9GdWxsX0F0dHJpYnV0ZXMpOiBQcm9wYWdhdGUgSXNfVW5jaGVja2VkX1VuaW9uIGF0dHJpYnV0ZSBmcm9tCglmdWxsIHZpZXcgdG8gcGFydGlhbCB2aWV3LCB0byBzaW1wbGlmeSBoYW5kbGluZyBpbiBiYWNrLWVuZC4KCgkqIHNwcmludC5hZGI6IFByaW50IGludGVyZmFjZSBsaXN0cyB3aGVyZSBuZWVkZWQ6IGRlcml2ZWQgdHlwZXMsCglwcm90ZWN0ZWQgdHlwZXMsIHRhc2sgdHlwZXMuCglvdXRwdXQgImlzIG51bGwiIGZvciBudWxsIHByb2NlZHVyZXMuIFBhcnQgb2YgaW1wbGVtZW50YXRpb24gb2YKCgkqIHNlbV9jYXQuYWRiIChWYWxpZGF0ZV9BY2Nlc3NfVHlwZV9EZWNsYXJhdGlvbik6IEltcGxlbWVudCBBSS0zNjYKCXJlbGF4YXRpb24gb2YgcnVsZXMgZm9yIGFjY2VzcyB0eXBlcyBpbiBwdXJlLCBzaGFyZWQgcGFzc2l2ZSBwYXJ0aXRpb25zLgoKCSogZXhwX3N0cm0uYWRiIChCdWlsZF9NdXRhYmxlX1JlY29yZF9SZWFkX1Byb2NlZHVyZSk6IFJlb3JnYW5pemUgdG8KCWZpcnN0IHJlYWQgZGlzY3JpbWluYW50cyBpbnRvIHRlbXBvcmFyeSBvYmplY3RzLCBwZXJmb3JtaW5nIGNoZWNrcyBvbgoJdGhlIHJlYWQgdmFsdWVzLCB0aGVuIHBvc3NpYmx5IHBlcmZvcm1pbmcgZGlzY3JpbWluYW50IGNoZWNrcyBvbiB0aGUKCWFjdHVhbCAoaWYgaXQgaXMgY29uc3RyYWluZWQpLCBhbmQgb25seSBmaW5hbGx5IHJlYWRpbmcgdGhlIGNvbXBvbmVudHMKCWludG8gYSBjb25zdHJhaW5lZCB0ZW1wb3Jhcnkgb2JqZWN0LgoJKEJ1aWxkX0VsZW1lbnRhcnlfSW5wdXRfQ2FsbCk6IEFkanVzdCB0aGUgc3BlY2lmaWMgY2lyY3VpdHJ5IGZvciB0aGUKCWNhc2Ugb2YgcmVhZGluZyBkaXNjcmltaW5hbnRzIG9mIGEgbXV0YWJsZSByZWNvcmQgdHlwZSB0byByZWNvZ25pemUKCXRoZSBuZXcgZm9ybSBvZiB0aGUgY29kZSBnZW5lcmF0ZWQgYnkKCUJ1aWxkX011dGFibGVfUmVjb3JkX1JlYWRfUHJvY2VkdXJlLgoKCSogZXhwX3Rzcy5hZHMsIGV4cF90c3MuYWRiIChNYWtlX0luaXRfUHJvY19OYW1lKTogUmVpbXBsZW1lbnQgaW4gdGVybXMKCW9mIGEgc2ltcGxlIGNhbGwgdG8gTWFrZV9UU1NfTmFtZS4KCShNYWtlX1RTU19OYW1lX0xvY2FsKTogQWRkIHRoZSBUU1MgbmFtZSBhcyB0aGUgbGFzdCB0aGluZyBpbiB0aGUgbmFtZQoJYnVmZmVyLCBpbiBvcmRlciBmb3IgSXNfVFNTIHRvIHdvcmsgY29ycmVjdGx5IG9uIGxvY2FsIFRTUyBuYW1lcy4KCgkqIHNlbV9hdHRyLmFkcywgc2VtX2F0dHIuYWRiIChSZXNvbHZlX0F0dHJpYnV0ZSwgY2FzZSAnQWNjZXNzKTogVXNlIGZsYWcKCUlzX0xvY2FsX0Fub255bW91c19BY2Nlc3MgdG8gY2hlY2sgbGVnYWxpeSBvZiBhdHRyaWJ1dGVzIGluIHRoZQoJY29udGV4dCBvZiAgYWNjZXNzIGNvbXBvbmVudHMgYW5kIHN0YW5kLWFsb25lIGFjY2VzcyBvYmplY3RzLgoJKFN0cmVhbV9BdHRyaWJ1dGVfQXZhaWxhYmxlKTogSW4gQWRhIDk1IG1vZGUsIGEgc3RyZWFtIGF0dHJpYnV0ZSBpcwoJdHJlYXRlZCBhcyBhdmFpbGFibGUgZm9yIGEgbGltaXRlZCBwcml2YXRlIHR5cGUgaWYgdGhlcmUgaXMgYW4KCWF0dHJpYnV0ZV9kZWZpbml0aW9uX2NsYXVzZSB0aGF0IGFwcGxpZXMgdG8gaXRzIGZ1bGwgdmlldywgYnV0IG5vdCBpbgoJb3RoZXIgY2FzZXMgd2hlcmUgdGhlIGF0dHJpYnV0ZSBpcyBhdmFpbGFibGUgZm9yIHRoZSBmdWxsIHZpZXcKCShzcGVjaWZpY2FsbHksIHRoZSBzb2xlIGZhY3QgdGhhdCB0aGUgZnVsbCB2aWV3IGlzIG5vbi1saW1pdGVkIGRvZXMgbm90CgltYWtlIHRoZSBhdHRyaWJ1dGUgYXZhaWxhYmxlIGZvciB0aGUgcGFydGlhbCB2aWV3KS4KCShCdWlsZF9BY2Nlc3NfU3VicHJvZ3JhbV9UeXBlKTogRGlhZ25vc2UgYXR0ZW1wdCB0byBhcHBseSAnYWNjZXNzIHRvIGEKCW5vbi1vdmVybG9hZGVkIGludHJpbnNpYyBzdWJwcm9ncmFtLgoJKENoZWNrX1N0cmVhbV9BdHRyaWJ1dGUpOiBSZWplY3QgYW4gYXR0cmlidXRlIHJlZmVyZW5jZSBmb3IgYW4KCXVuYXZhaWxhYmxlIHN0cmVhbSBhdHRyaWJ1dGUgZXZlbiBpZiB0aGUgcHJlZml4IGlzIG5vdCBhIGxpbWl0ZWQgdHlwZQoJKGNhc2Ugb2YgYSAnSW5wdXQgYXR0cmlidXRlIHJlZmVyZW5jZSBmb3IgYW4gYWJzdHJhY3QsIG5vbi1jbGFzc3dpZGUKCXR5cGUpCgkoU3RyZWFtX0F0dHJpYnV0ZV9BdmFpbGFibGUpOiBOZXcgZnVuY3Rpb24gdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBzdHJlYW0KCWF0dHJpYnV0ZSBpcyBhdmFpbGFibGUgYXQgYSBwbGFjZS4KCShDaGVja19BdHRyaWJ1dGUpOiBVc2UgU3RyZWFtX0F0dHJpYnV0ZV9BdmFpbGFibGUgaW5zdGVhZCBvZiBqdXN0Cgl0ZXN0aW5nIGZvciBUU1MgcHJlc2VuY2Ugb24gdGhlIGltcGxlbWVudGF0aW9uIGJhc2UgdHlwZS4KCShBbmFseXplX0F0dHJpYnV0ZSk6IE1vZGlmaWVkIHRvIGdpdmUgc3VwcG9ydCB0byB0YXNrIGludGVyZmFjZXMuCgkoQW5hbHl6ZV9BY2Nlc3NfQXR0cmlidXRlKTogQWRkIGVycm9yIGNoZWNrIGZvciB1c2Ugb2YgYW4gQWNjZXNzIChvcgoJVW5yZXN0cmljdGVkX0FjY2VzcykgYXR0cmlidXRlIHdpdGggYSBzdWJwcm9ncmFtIG1hcmtlZCBhcwoJSW5saW5lX0Fsd2F5cy4KCShBbmFseXplX0F0dHJpYnV0ZSwgY2FzZSBBdHRyaWJ1dGVfQWRkcmVzcyk6IEFkZCBlcnJvciBjaGVjayBmb3IgdXNlIG9mCglhbiBBZGRyZXNzIGF0dHJpYnV0ZSB3aXRoIGEgc3VicHJvZ3JhbSBtYXJrZWQgYXMgSW5saW5lX0Fsd2F5cy4KCVVwZGF0ZSBFdmFsX0F0dHJpYnV0ZSB0byBoYW5kbGUgbmV3IHZhbHVlIG9mIFdpZHRoIGZyb20gQUktMzk1CgoJKiBzZW1fY2gxMy5hZGIgKEFuYWx5emVfU3RyZWFtX1RTU19EZWZpbml0aW9uKTogTmV3IHN1YnByb2dyYW0uCgkoQW5hbHl6ZV9BdHRyaWJ1dGVfRGVmaW5pdGlvbl9DbGF1c2UsIGNhc2VzIElucHV0LCBPdXRwdXQsIFJlYWQsIFdyaXRlKToKCUZhY3RvciBjb21tb24gY29kZSBhY3Jvc3MgdGhlIHN0cmVhbS1vcmllbnRlZCBhdHRyaWJ1dGUgY2lyY2N1aXRzIGludG8KCWEgbmV3IHN1YnByb2dyYW0sIEFuYWx5emVfU3RyZWFtX1RTU19EZWZpbml0aW9uLiBUaGUgbmV3IHVuaWZvcm0KCXByb2Nlc3NpbmcgaXMgZnVuY3Rpb25hbGx5IGlkZW50aWNhbCB0byB0aGUgcHJldmlvdXMgZHVwbGljYXRlZCBvbmUsCglleGNlcHQgdGhhdCBhbiBleHByZXNzaW9uIHRoYXQgZGVub3RlcyBhbiBhYnN0cmFjdCBzdWJwcm9ncmFtIHdpbGwgbm93CgliZSByZWplY3RlZCwgYXMgbWFuZGF0ZWQgYnkgQUktMTk1IGl0ZW0gNS4KCgkqIHNlbV91dGlsLmFkcywgc2VtX3V0aWwuYWRiIChUeXBlX0FjY2Vzc19MZXZlbCk6IFVzZSBmbGFnCglJc19Mb2NhbF9Bbm9ueW1vdXNfQWNjZXNzIHRvIGFwcGx5IGFjY2Vzc2liaWxpdHkgY2hlY2tzIHRvIGFjY2VzcwoJY29tcG9uZW50cyBhbmQgc3RhbmQtYWxvbmUgYWNjZXNzIG9iamVjdHMuCgkoSGFzX0Rpc2NyaW1pbmFudF9EZXBlbmRlbnRfQ29uc3RyYWludCk6IE1vdmVkIHRvIHNwZWMgZm9yIHVzZQoJZWxzZXdoZXJlLgoJKElzX1BvdGVudGlhbGx5X1BlcnNpc3RlbnRfVHlwZSk6IE5ldyBmdW5jdGlvbgoJKElzX0RlcGVuZGVudF9Db21wb25lbnRfT2ZfTXV0YWJsZV9PYmplY3QpOiBJZiB0aGUgZW5jbG9zaW5nIG9iamVjdCBpcwoJYSBoZWFwLW9iamVjdCB3aG9zZSB0eXBlIGhhcyBhIGNvbnN0cmFpbmVkIHBhcnRpYWwgdmlldywgdGhlIG9iamVjdCBpcwoJdW5jb25zdHJhaW5lZCBhbmQgdGhlIGNvbXBvbmVudCBtYXkgZGVwZW5kIG9uIGEgZGlzY3JpbWluYW50LCBtYWtpbmcgaXRzCglyZW5hbWluZyBpbGxlZ2FsLgoKCSogc2luZm8uYWRzLCBzaW5mby5hZGIKCShNdXN0X05vdF9PdmVycmlkZSk6IEZsYWcgYXBwbGljYWJsZSB0byBOX0VudHJ5X0RlY2xhcmF0aW9uLgoJKE11c3RfT3ZlcnJpZGUpOiBGbGFnIGFwcGxpY2FibGUgdG8gTl9FbnRyeV9EZWNsYXJhdGlvbi4KCUluZGljYXRlIHRoYXQgaW50ZXJmYWNlX2xpc3QgY2FuIGFwcGVhciBpbiBzaW5nbGUgdGFzayBhbmQgc2luZ2xlCglwcm90ZWN0ZWQgZGVjbGFyYXRpb25zLgoJUmVwbGFjZSBJc19PdmVycmlkaW5nIGFuZCBOb3RfT3ZlcnJpZGluZyB3aXRoIE11c3RfT3ZlcnJpZGUgYW5kCglNdXN0X05vdF9PdmVycmlkZSwgdG8gYmV0dGVyIGV4cHJlc3MgaW50ZW50IG9mIEFJLgoJSXNfT3ZlcnJpZGluZywgTm90X092ZXJyaWRpbmc6IEFkYTIwMDUgZmxhZ3MgdGhhdCBpbmRpY2F0ZSB0aGUgcHJlc2VuY2UKCW9mIGFuIG92ZXJyaWRpbmcgaW5kaWNhdG9yIGluIGEgc3VicHJvZ3JhbSBvciBpbnN0YW5jZS4KCUFkYSAyMDA1IChBSS0yNDgpIE51bGxfUHJlc2VudCBjYW4gYXBwZWFyIGluIGEgcHJvY2VkdXJlIHNwZWNpZmljYXRpb24uCglBZGQgdGhlIG92ZXJyaWRpbmcgaW5kaWNhdG9yIFtbbm90XSBvdmVycmlkaW5nXSBjb25zdHJ1Y3QgdG8gdGhlCglmb2xsb3dpbmcgZ3JhbW1hciBwcm9kdWN0aW9uczoKCSBFTlRSWV9ERUNMQVJBVElPTgoJIEdFTkVSSUNfSU5TVEFOVElBVElPTgoJIFNVQlBST0dSQU1fU1BFQ0lGSUNBVElPTgoKCSogcGFyLWNoMTAuYWRiIChQX0NvbXBpbGF0aW9uX1VuaXQpOiBTdWJwcm9ncmFtIGRlY2xhcmF0aW9uIG9yIGJvZHkKCWNhbiBzdGFydCB3aXRoIGFuIG92ZXJyaWRpbmcgaW5kaWNhdG9yLgoKCSogcGFyLWNoNi5hZGIgKFBfU3VicHJvZ3JhbSk6IFJlY29nbml6ZSBvdmVycmlkaW5nIGluZGljYXRvciwgYW5kIHNldAoJZmxhZ3MgYWNjb3JkaW5nbHkgb24gc3Vicm9ncmFtIHNwZWNpZmljYXRpb25zIG9yIGluc3RhbmNlcy4KCgkqIHNlbV9jaDguYWRiOgoJKEFuYWx5emVfU3VicHJvZ3JhbV9SZW5hbWluZyk6IEZvciBhIHJlbmFtaW5nX2FzX2JvZHksIHZlcmlmeSB0aGF0IHRoZQoJb3ZlcnJpZGluZ19pbmRpY2F0b3IsIGlmIHByZXNlbnQsIGlzIGNvbnNpc3RlbnQgd2l0aCBzdGF0dXMgb2Ygc3BlYy4KCUltcHJvdmUgZXJyb3IgbWVzc2FnZSBmb3IgbnVsbC1leGNsdWRpbmcgY2hlY2tzIG9uIGNvbnRyb2xsaW5nIGFjY2VzcwoJcGFyYW1ldGVycy4KCShDaGVja19Jbl9QcmV2aW91c19XaXRoX0NsYXVzZSk6IFByb3RlY3QgdGhlIGZyb250ZW5kIGFnYWluc3QKCXByZXZpb3VzbHkgcmVwb3J0ZWQgY3JpdGljYWwgZXJyb3JzIGluIHRoZSBjb250ZXh0IGNsYXVzZXMuCglTYXZlIGFuZCByZXN0b3JlIEFkYV9WZXJzaW9uX0V4cGxpY2l0LCBmb3IgaW1wbGVtZW50YXRpb24gb2YgQUktMzYyCgkoQW5hbHl6ZV9TdWJwcm9ncmFtX1JlbmFtaW5nKTogSWYgdGhlIG5ldyBlbnRpdHkgaXMgYSBkaXNwYXRjaGluZwoJb3BlcmF0aW9uIHZlcmlmeSB0aGF0IGNvbnRyb2xsaW5nIGZvcm1hbHMgb2YgdGhlIHJlbmFtZWQgZW50aXR5IHRoYXQKCWFyZSBhY2Nlc3MgcGFyYW1ldGVycyBhcmUgZXhwbGljaXRseSBub24tbnVsbC4KCShGaW5kX0V4cGFuZGVkX05hbWUpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbiBwcmVmaXggaXMgYW4gaWxsZWdhbAoJcmVmZXJlbmNlIHRvIGEgcHJpdmF0ZSBjaGlsZCB1bml0LgoKCSogZXhwX2ltZ3YuYWRiLCBzLWltZ3djaC5hZHMsIHMtaW1nd2NoLmFkYiwgcy12YWx3Y2guYWRiLAoJcy12YWx3Y2guYWRzLCBzLXdpZHdjaC5hZGIsIHMtd2lkd2NoLmFkcywgcy13d2RjaGEuYWRiLCBzLXd3ZHdjaC5hZGI6CglSZXdyaXRlIHRvIGNvcnJlc3BvbmQgdG8gbmV3IHdpZGUgY2hhcmFjdGVyIG5hbWVzIGluIEFJLTM5NQoKCSogcGFyLWNoMTIuYWRiIChQX0Zvcm1hbF9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogUmVjb2duaXplIG51bGwKCWRlZmF1bHQgcHJvY2VkdXJlcy4KCjIwMDUtMDYtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGVycm91dC5hZHMsIGVycm91dC5hZGIgKEVycm9yX01zZ19OVyk6IE9ubHkgZW1pdCB3YXJuaW5nIG9uIHVzZXIKCWNvZGUsIG5vdCBvbiB0aGUgYm9kaWVzIG9mIHByZWRlZmluZWQgb3BlcmF0aW9ucywgdG8gY3V0IGRvd24gb24KCXNwdXJpb3VzIG5vaXNlLgoKMjAwNS0wNi0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2FnZ3IuYWRiIChBZ2dyX1NpemVfT0spOiBBbiBhcnJheSB3aXRoIG5vIGNvbXBvbmVudHMgY2FuIGFsd2F5cwoJYmUgZXhwYW5kZWQgaW4gcGxhY2UuIFRoZSBzaXplIGNvbXB1dGF0aW9uIGRvZXMgbm90IHJlcXVpcmUgYQoJc3VidHJhY3Rpb24sIHdoaWNoIHdvdWxkIHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBhIGNvbXBpbGVyIGJ1aWx0IHdpdGgKCWFzc2VydGlvbnMgd2hlbiB0aGUgdXBwZXIgYm91bmQgaXMgSW50ZWdlcidmaXJzdC4KCShGbGF0dGVuKTogRm9yIGFuIGFycmF5IG9mIGNvbXBvc2l0ZSBjb21wb25lbnRzLCB0YWtlIGludG8gYWNjb3VudCB0aGUKCXNpemUgb2YgdGhlIGNvbXBvbmVudHMgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgaXQgaXMgc2FmZSB0byBleHBhbmQgdGhlCglhcnJheSBpbnRvIGEgcHVyZWx5IHBvc2l0aW9uYWwgcmVwcmVzZW50YXRpb24uCgoyMDA1LTA2LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZXhwX2NoMi5hZGIgKFBhcmFtX0VudGl0eSk6IFRha2UgdGhlIGNhc2Ugb2YgYW4gZXhwYW5kZWRfbmFtZQoJZGVub3RpbmcgYSBmb3JtYWwgcGFyYW1ldGVyIGludG8gYWNjb3VudC4KCjIwMDUtMDYtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDcuYWRiIChGaW5kX05vZGVfVG9fQmVfV3JhcHBlZCk6IElmIHRoZSBub2RlIGFwcGVhcnMgd2l0aGluCgl0aGUgZW50cnlfY2FsbCBhbHRlcm5hdGl2ZSBvZiBhIGNvbmRpdGlvbmFsIGVudHJ5IGNhbGwsIHdyYXAgdGhlCgljb25kaXRpb25hbCBlbnRyeSBjYWxsIGl0c2VsZi4KCjIwMDUtMDYtMTQgIE5pY29sYXMgU2V0dG9uICA8c2V0dG9uQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9kYnVnLmFkcywgZXhwX2RidWcuYWRiIChHZXRfVmFyaWFudF9QYXJ0KTogRml4IHRoZSBlbmNvZGluZyBvZgoJdGhlICJzaW1wbGVfY2hvaWNlIiBtZW1iZXIgaW4gYSB2YXJpYW50IHJlY29yZCwgaW4gYWNjb3JkYW5jZSB3aXRoIHRoZQoJZGVzY3JpcHRpb24gaW4gdGhlIHBhY2thZ2Ugc3BlYzogdGhlIGluZm9ybWF0aW9uIG91dHB1dCBmb3IgYSBjb25zdGFudAoJc2hvdWxkIGJlICJTIG51bWJlciIsIG5vdCAiU1MgbnVtYmVyIi4KCShHZXRfRW5jb2RlZF9OYW1lKTogUmV0dXJuIGF0IG9uY2UgaWYgbm90IGdlbmVyYXRpbmcgY29kZS4gQXZvaWRzIG5hbWUKCW92ZXJmbG93IHByb2JsZW0gd2hlbiBjb21waWxpbmcgd2l0aCAtZ25hdGN0LCBmb3IgQVNJUy9nbmF0bWV0cmljcy4KCjIwMDUtMDYtMTQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzdC5hZGIgKEFkZF9SQUNXX1ByaW1pdGl2ZV9EZWNsYXJhdGlvbnNfQW5kX0JvZGllcyk6IEZvciBhbgoJUkFDVyB3aXRob3V0IGFueSBwcmltaXRpdmVzLCBkbyBub3QgZ2VuZXJhdGUgdGhlIGlmIHN0YXRlbWVudCBmb3IKCWRpc3BhdGNoaW5nIGJ5IG5hbWUgaW4gdGhlIFBvbHlPUkIvRFNBIGNhc2UsIGFzIGl0IHdvdWxkIGJlIG1hbGZvcm1lZAoJKGl0IHdvdWxkIGhhdmUgYW4gRWxzaWZfUGFydHMgbGlzdCB0aGF0IGlzIG5vdCBOb19MaXN0LCBidXQgd2l0aCBhCglsZW5ndGggb2YgMCkuCgoyMDA1LTA2LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9pbnRyLmFkYiwgcGFyLWNoNS5hZGI6IE1pbm9yIGZpeCB0byBlcnJvciBtZXNzYWdlIHRleHQKCjIwMDUtMDYtMTQgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBmZS5oOiBBZGQgZW50cnkgZm9yIE9wdC5FeGNlcHRpb25fTG9jYXRpb25zX1N1cHByZXNzZWQgc28gdGhhdCBnaWdpCgljYW4gZGV0ZXJtaW5lIHdoZXRoZXIgcHJhZ21hIFN1cHByZXNzX0V4Y2VwdGlvbl9Mb2NhdGlvbnMgaXMgaW4gZWZmZWN0LgoKCSogdXRpbHMyLmMgKGJ1aWxkX2NhbGxfcmFpc2UpOiBEbyBub3QgcGFzcyB0aGUgZmlsZSBuYW1lIHRvIHRoZQoJZXhjZXB0aW9uIGhhbmRsZXIgaWYgcHJhZ21hIFN1cHByZXNzX0V4Y2VwdGlvbl9Mb2NhdGlvbnMgaXMgaW4gZWZmZWN0LgoJKGJ1aWxkX2FsbG9jYXRvcik6IEFkZCBhbmQgcHJvY2VzcyBhcmcgSUdOT1JFX0lOSVRfVFlQRS4KCjIwMDUtMDYtMTQgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWRhY29yZS5jb20+CgoJKiBnLWRlYnBvby5hZGIgKERlYWxsb2NhdGUsIERlcmVmZXJlbmNlKTogSW1wcm92ZSBvdXRwdXQuCgoyMDA1LTA2LTE0ICBOaWNvbGFzIFJvY2hlICA8cm9jaGVAYWRhY29yZS5jb20+CgoJKiBnLWRpb3BpdC5hZGIgKFdpbGRjYXJkX0l0ZXJhdG9yKTogUmV0dXJuIGRpcmVjdGx5IGlmIFBhdGggaXMgZXF1YWwKCXRvICIiCgkoTmV4dF9MZXZlbCk6IEZpeCBtaW5vciBidWcgaW4gaGFuZGxpbmcgb2YgLi4vZGlyIGNhc2UKCShSZWFkKTogQWRkIGRpciBzZXBhcmF0b3IgdG8gRGlyZWN0b3J5IG5hbWUgc28gdGhhdCAiIiBpcyB1bmRlcnN0b29kIGFzCgkgIi8iCgoyMDA1LTA2LTE0ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBnLWR5bmh0YS5hZHMsIGctZHluaHRhLmFkYiAoUmVzZXQpOiBGcmVlIHRoZSB0YWJsZSBpdHNlbGYgYWZ0ZXIKCXJlbGVhc2luZyB0aGUgaXRlbXMuCgoyMDA1LTA2LTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCSAgICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWRhY29yZS5jb20+CgoJKiBnLW9zX2xpYi5hZHMsIGctb3NfbGliLmFkYiAoTm9uX0Jsb2NraW5nX1NwYXduKTogVHdvIG5ldyB2ZXJzaW9ucwoJd2l0aCBvdXRwdXQgZmlsZSBkZXNjcmlwdG9yIGFuZCB3aXRoIG91dHB1dCBmaWxlIG5hbWUuCgkoRHVwLCBEdXAyKTogTm93IGdsb2JhbCBwcm9jZWR1cmVzIGFzIHRoZXkgYXJlIHVzZWQgYnkgdHdvIHN1YnByb2dyYW1zCgkoQ29weSk6IEFsbG9jYXRlIHRoZSAyMDBLIGJ1ZmZlciBvbiB0aGUgaGVhcCByYXRoZXIgdGhhbiBvbiB0aGUgc3RhY2suCgoyMDA1LTA2LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCVBSIGFkYS82NzE3CgkqIGctc29ja2V0LmFkcywgZy1zb2NrZXQuYWRiIChJbmV0X0FkZHIpOiBTcGVjaWFsIGNhc2UgdGhlIGFsbC1vbmVzCglicm9hZGNhc3QgYWRkcmVzcy4KCShDcmVhdGVfU2VsZWN0b3IpOiBCaW5kIGxpc3RlbmluZyBzb2NrZXQgdXNlZCB0byBjcmVhdGUgdGhlIHNpZ25hbGxpbmcKCXNvY2tldCBwYWlyIHRvIDEyNy4wLjAuMSB0byBsaW1pdCB0aGUgc2NvcGUgZm9yICd0aGVmdCcgb2YgY29ubmVjdGlvbi4KCVNldCBsaXN0ZW4gYmFja2xvZyB0byAxIHRvIGVuc3VyZSB0aGF0IHdlIGRldGVjdCBzb2NrZXQgdGhlZnQgYnkgYQoJZmFpbHVyZSBvZiBvdXIgb3duIGNvbm5lY3QoMikgY2FsbC4KCShDaGVja19TZWxlY3Rvcik6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgc2VsZWN0b3IgbWVjaGFuaXNtLgoJKEJyb2FkY2FzdF9JbmV0X0FkZHIpOiBOZXcgY29uc3RhbnQuCgoyMDA1LTA2LTE0ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBsYXlvdXQuYWRiIChEaXNjcmltaWZ5KTogUmVtb3ZlIHJlc2V0dGluZyBvZiBWdHlwZSB0byB0aGUgdW5kZXJseWluZwoJdHlwZSB3aGljaCB0dXJucyBvdXQgdG8gYmUgYW4gaW5jb21wbGV0ZSBhbmQgaW5jb3JyZWN0IGZpeC4KCShMYXlvdXRfQXJyYXlfVHlwZSk6IFVzZSBVbmRlcmx5aW5nX1R5cGUgd2hlbiBjaGVja2luZyB3aGV0aGVyIHRoZSBzY29wZQoJb2YgdGhlIHR5cGUgaXMgZGVjbGFyZWQgaW4gYSByZWNvcmQgKGZvciBkZXRlcm1pbmF0aW9uIG9mIGluc2VydGlvbgoJdHlwZSkuCgkoU09fUmVmX0Zyb21fRXhwcik6IFRlc3Qgd2hldGhlciBWdHlwZSBkZW5vdGVzIGEgcGFydGlhbCBvciBmdWxsIHZpZXcgb2YKCWEgcHJpdmF0ZSB0eXBlIGFuZCBlbnN1cmUgdGhhdCB0aGUgcHJpbWFyeSBlbnRpdHkgaXMgdXNlZCBmb3IgdGhlIHR5cGUKCW9mIHRoZSBuZXdseSBjcmVhdGVkIGZ1bmN0aW9uJ3MgViBmb3JtYWwgYnkgdGFraW5nIHRoZSBFdHlwZSBvZiB0aGUKCXZpZXcuCgoyMDA1LTA2LTE0ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBsaWItbG9hZC5hZHMsIGxpYi1sb2FkLmFkYiAoTG9hZF9Vbml0KTogQWRkaXRpb24gb2YgYSBuZXcgcGFyYW1ldGVyCgl0aGF0IGluZGljYXRlcyBpZiB3ZSBhcmUgcGFyc2luZyBhIGNvbXBpbGF0aW9uIHVuaXQgZm91bmQgaW4gYQoJbGltaXRlZC13aXRoIGNsYXVzZS4KCUl0IGlzIHVzZSB0byBhdm9pZCB0aGUgY2lyY3VsYXJpdHkgY2hlY2suCgoJKiBwYXIuYWRzLCBwYXIuYWRiIChQYXIpOiBBZGRpdGlvbiBvZiBhIG5ldyBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUgaWYKCXdlIGFyZSBwYXJzaW5nIGEgY29tcGlsYXRpb24gdW5pdCBmb3VuZCBpbiBhIGxpbWl0ZWQtd2l0aCBjbGF1c2UuIFRoaXMKCWlzIHVzZSB0byBhdm9pZCB0aGUgY2lyY3VsYXJpdHkgY2hlY2suCgoJKiBwYXItbG9hZC5hZGIgKExvYWQpOiBJbmRpY2F0ZSBMaWIuTG9hZF9Vbml0IGlmIHdlIGFyZSBsb2FkaW5nIHRoZQoJdW5pdCBhcyBhIGNvbnNlcXVlbmNlIG9mIHBhcnNpbmcgYSBsaW1pdGVkLXdpdGggY2xhdXNlLiBUaGlzIGlzIHVzZWQKCXRvIGF2b2lkIHRoZSBjaXJjdWxhcml0eSBjaGVjay4KCgkqIHNlbV9jaDEwLmFkYjogU3VwcHJlc3MgQWRhIDIwMDUgdW5pdCB3YXJuaW5nIGlmIC1nbmF0d1kgdXNlZAoJKEFuYWx5emVfQ29udGV4dCk6IExpbWl0ZWQtd2l0aCBjbGF1c2VzIGFyZSBub3cgYWxsb3dlZAoJaW4gbW9yZSBjb21waWxhdGlvbiB1bml0cy4KCShBbmFseXplX1N1YnVuaXRfQ29udGV4dCwgQ2hlY2tfUGFyZW50KTogUHJvdGVjdCB0aGUgZnJvbnRlbmQKCWFnYWludHMgcHJldmlvdXNseSByZXBvcnRlZCBjcml0aWNhbCBlcnJvcnMgaW4gY29udGV4dCBjbGF1c2VzCgkoSW5zdGFsbF9MaW1pdGVkX1dpdGhlZF9Vbml0KTogQ29kZSBjbGVhbnVwIHBsdXMgc3RhdGljIGRldGVjdGlvbgoJb2YgdHdvIGZ1cnRoZXIgZXJyb3JzOiByZW5hbWVkIHN1YnByb2dyYW1zIGFuZCByZW5hbWVkIHBhY2thZ2VzCglhcmUgbm90IGFsbG93ZWQgaW4gbGltaXRlZCB3aXRoIGNsYXVzZXMuCgkoSW5zdGFsbF9TaWJsaW5ncyk6IERvIG5vdCBpbnN0YWxsIHByaXZhdGVfd2l0aF9jbGF1c2VzIG9uIHRoZSBwYWNrYWdlCglkZWNsYXJhdGlvbiBmb3IgYSBub24tcHJpdmF0ZSBjaGlsZCB1bml0LgoJKFJlX0luc3RhbGxfUGFyZW50cyk6IFdoZW4gYSBwYXJlbnQgb2YgdGhlIHN1YnVuaXQgaXMgcmVpbnN0YWxsZWQsCglyZXNldCB2aXNpYmlsaXR5IG9mIGNoaWxkIHVuaXRzIHByb3Blcmx5LgoJKEluc3RhbGxfV2l0aGVkX1VuaXQpOiBXaGVuIGEgY2hpbGQgdW5pdCBhcHBlYXJzIGluIGEgd2l0aF9jbGF1c2Ugb2YgaXRzCglwYXJlbnQsIGl0IGlzIGltbWVkaWF0ZWx5IHZpc2libGUuCgoyMDA1LTA2LTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgRW1tYW51ZWwgQnJpb3QgIDxicmlvdEBhZGFjb3JlLmNvbT4KCgkqIGxpYi14cmVmLmFkcywgbGliLXhyZWYuYWRiIChHZW5lcmF0ZV9EZWZpbml0aW9uKTogVHJlYXQgYW55IGVudGl0eQoJZGVjbGFyZWQgd2l0aGluIGFuIGlubGluZWQgYm9keSBhcyByZWZlcmVuY2VkLCB0byBwcmV2ZW50IHNwdXJpb3VzCgl3YXJuaW5ncy4KCShPdXRwdXRfT25lX1JlZik6IElmIGFuIGVudGl0eSByZW5hbWVzIGFuIGFycmF5IGNvbXBvbmVudCwgaW5kaWNhdGUgaW4KCXRoZSBBTEkgZmlsZSB0aGF0IHRoaXMgYWxpYXNlcyAocmVuYW1lcykgdGhlIGFycmF5LiBDYXB0dXJlIGFzIHdlbGwKCWZ1bmN0aW9uIHJlbmFtaW5ncyB0aGF0IHJlbmFtZSBwcmVkZWZpbmVkIG9wZXJhdGlvbnMuCglBZGQgaW5mb3JtYXRpb24gYWJvdXQgZ2VuZXJpYyBwYXJlbnQgZm9yIHBhY2thZ2UgYW5kIHN1YnByb2dyYW0KCWluc3RhbmNlcy4KCShHZXRfVHlwZV9SZWZlcmVuY2UpOiBGb3IgYSBzdWJ0eXBlIHRoYXQgaXMgdGhlIHJlbmFtaW5nIG9mIGFuIGFjdHVhbCBpbgoJYW4gaW5zdGFudGlhdGlvbiwgdXNlIHRoZSBmaXJzdF9zdWJ0eXBlIHRvIGVuc3VyZSB0aGF0IHdlIGRvbid0IGdlbmVyYXRlCgljcm9zcy1yZWZlcmVuY2UgaW5mb3JtYXRpb24gZm9yIGludGVybmFsIHR5cGVzLgoJRm9yIG9iamVjdHMgYW5kIHBhcmFtZXRlcnMgb2YgYSBnZW5lcmljIHByaXZhdGUgdHlwZSwgcmV0YWluIHRoZSAnKicKCWluZGljYXRvciB0byBkaXN0aW5ndWlzaCBzdWNoIGFuIGVudGl0eSBmcm9tIGl0cyB0eXBlLgoKCSogYWxpLmFkcyAoWHJlZl9FbnRpdHlfUmVjb3JkKTogTmV3IGZpZWxkcyBJcmVmX0ZpbGVfTnVtIGFuZCBJcmVmX0xpbmUsCgl0byBzdG9yZSBpbmZvcm1hdGlvbiBhYm91dCBpbnN0YW50aWF0ZWQgZW50aXRpZXMuCgoJKiBhbGkuYWRiIChTY2FuX0FMSSk6IEFkZCBzdXBwb3J0IGZvciBwYXJzaW5nIHRoZSByZWZlcmVuY2UgdG8gdGhlCglnZW5lcmljIHBhcmVudAoKCSogeHJlZl9saWIuYWRiIChTa2lwX1RvX01hdGNoaW5nX0Nsb3NpbmdfQnJhY2tldCk6IE5ldyBzdWJwcm9ncmFtCgkoUGFyc2VfSWRlbnRpZmllcl9JbmZvLCBQYXJzZV9Ub2tlbik6IEFkZCBzdXBwb3J0IGZvciB0aGUgZ2VuZXJpYyBwYXJlbnQKCWluZm9ybWF0aW9uLgoKMjAwNS0wNi0xMCAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCSAgICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgkgICAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCSAgICBKb3NlIFJ1aXogIDxydWl6QGFkYWNvcmUuY29tPgoKCSogTWFrZS1sYW5nLmluOiBBZGQgaW5pdGlhbGl6ZS5vIHdoZW4gbmVlZGVkLgoJUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gUlRfRkxBR1MuCglBZGQgbWlzc2luZyBkZXBlbmRlbmNpZXMgZm9yIHNkZWZhdWx0Lm8KCgkqIGluaXRpYWxpemUuYzogTmV3IGZpbGUuCgoJKiBpbml0LmMgW1ZNU10gRGVjbGFyZSBBREEkIGV4dGVybnMgd2VhayB0byBmaXggYnVpbGQgcHJvYmxlbSBpbiBJVk1TLgoJW1ZNU10gY29uZF9zaWduYWxfdGFibGU6IEZpeCBwcm9ibGVtIGluIGRlY2xhcmF0aW9uLgoJW1ZNU10gX19nbmF0X2Vycm9yX2hhbmRsZXI6IHJld3JpdGUuCglNb3ZlIGFsbCBfX2duYXRfaW5pdGlhbGl6ZSgpIHJvdXRpbmVzIHRvIGluaXRpYWxpemUuYwoJU3BlY2lhbGl6ZSB0aGUgZm9ybWVyICJocHV4IiBzZWN0aW9uIHRvICJocHBhIGhwdXgiLCBhcyB0aGlzIGlzIHdoYXQgdGhlCglzZWN0aW9uIHJlYWxseSBpcyBoZXJlIGZvciBhbmQgd2Ugbm93IGhhdmUgb3RoZXIgaHB1eCBwb3J0cyB0aGF0IG5lZWQKCWRpZmZlcmVudCBjb250ZW50cy4KCShfX2duYXRfYWRqdXN0X2NvbnRleHRfZm9yX3JhaXNlKSBpMzg2LWxpbnV4OiBGaXJzdCB2ZXJzaW9uIG9mIHRoaXMKCWZ1bmN0aW9uIGZvciB0aGlzIHRhcmdldC4gQWRqdXN0IFBDIGJ5IG9uZSBpbiB0aGUgbWFjaGluZSBjb250ZXh0LiBUaGlzCglhZGp1c3RtZW50IHdhcyBwcmV2aW91c2x5IGRvbmUgaW4gdGhlIE1EX0ZBTExCQUNLX0ZSQU1FX1NUQVRFX0ZPUiwgYnV0CglpdCBpcyBtb3JlIHJlbGlhYmxlIHRvIGRvIHRoYXQgaW4gdGhlIHNpZ25hbCBoYW5kbGVyIGl0c2VsZi4KCShfX2duYXRfaW5zdGFsbF9oYW5kbGVyKSBpMzg2LWxpbnV4OiBTZXQgU0FfU0lHSU5GTyBpbiB0aGUgc2lnYWN0aW9uCglmbGFncywgc28gdGhhdCB0aGUgaGFuZGxlciBpcyBwYXNzZWQgdGhlIGNvbnRleHQgc3RydWN0dXJlIHRvIGFkanVzdAoJcHJpb3IgdG8gdGhlIHJhaXNlLgoJKF9fZ25hdF9lcnJvcl9oYW5kbGVyKSBpMzg2LWxpbnV4OiBBZGp1c3QgdGhlIHNpZ25hdHVyZSB0byBtYXRjaCB3aGF0IGEKCVNBX1NJR0lORk8gc2lnYWN0aW9uIHNob3VsZCBsb29rIGxpa2UuIENhbGwKCV9fZ25hdF9hZGp1c3RfY29udGV4dF9mb3JfcmFpc2UgYmVmb3JlIGFjdHVhbGx5IHJhaXNpbmcuIENsZWFudXAgdW51c2VkCglNYWNoaW5lX1N0YXRlX09wZXJhdGlvbnMgc3R1ZmYuCglBZGQgY29uZGl0aW9uYWwgY29kZSBzbyB0aGF0IHRoZSB4ODZfNjQgaXMgYWxzbyBzdXBwb3J0ZWQuCgoyMDA1LTA2LTE0ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBtZGxsLmFkYiAoR2V0X0RsbF9OYW1lKTogTmV3IHJvdXRpbmUgdGhhdCByZXR1cm5zIHRoZSBETEwgbmFtZSBnaXZlbgoJdGhlIGxpYnJhcnkgbmFtZS4KCjIwMDUtMDYtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogb3B0LmFkcywgb3B0LmFkYjogTmV3IGZsYWdzIGZvciBwZXJzaXN0ZW50X2JzcyBtb2RlCglBZGQgQWRhX1ZlcnNpb25fRXhwbGljaXQsIGZvciBpbXBsZW1lbnRhdGlvbiBvZiBBSS0zNjIKCUFkZCBBc3NlcnRpb25zX0VuYWJsZWRfQ29uZmlnIGFuZCBhc3NvY2lhdGVkIGhhbmRsaW5nCglOZWVkZWQgc2luY2Ugc2V0dGluZyBjYW4gYmUgY2hhbmdlZCB3aXRoIEFzc2VydGlvbl9Qb2xpY3kgcHJhZ21hCglBZGQgbmV3IGZsYWcgV2Fybl9Pbl9BZGFfMjAwNV9Db21wYXRpYmlsaXR5CgoJKiBzd2l0Y2gtYy5hZGI6IFJlY29nbml6ZSAtZ25hdHd5L1kKCVNldCBBZGFfVmVyc2lvbl9FeHBsaWNpdCwgZm9yIGltcGxlbWVudGF0aW9uIG9mIEFJLTM2MgoJVGhlIC1nbmF0ZyBzd2l0Y2ggbm93IGluY2x1ZGVzIC1nbmF0eXUKCgkqIHVzYWdlLmFkYjogQWRkIC1nbmF0d3kvWQoJUmVtb3ZlIHdyb25nIGFzdGVyaXNrIG9uIC1nbmF0d1ggbGluZQoJQWRkIGxpbmUgZm9yIC1nbmF0eXUgc3dpdGNoCgoyMDA1LTA2LTE0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIG9zaW50LmFkYiAoQWRkX0RlZmF1bHRfU2VhcmNoX0RpcnMpOiBQdXQgc291cmNlIGFuZCBvYmplY3QKCWRpcmVjdG9yaWVzIG9mIHByb2plY3QgZmlsZXMgYmVmb3JlIGRpcmVjdG9yaWVzIGNvbWluZyBmcm9tCglBREFfSU5DTFVERV9QQVRIIGFuZCBBREFfT0JKRUNUU19QQVRILgoKMjAwNS0wNi0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE1NjEzCgkqIHBhci1jaDIuYWRiIChTY2FuX1ByYWdtYV9Bcmd1bWVudCk6IE5ldyBwcm9jZWR1cmUKCShQX1ByYWdtYSk6IEltcGxlbWVudCBSTSAyLjgoNCkgY2hlY2sgZm9yIG5vIHBvcyBhcmdzIGFmdGVyIG5hbWVkIGFyZ3MKCjIwMDUtMDYtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJlcC5hZGIgKFByZXByb2Nlc3MpOiBJZ25vcmUgZXJyb3Igd2hlbiBzY2FubmluZyB0aGUgZmlyc3QgdG9rZW4gb2YKCWEgbGluZS4KCjIwMDUtMDYtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLW5tc2MuYWRiIChTdWZmaXhfRm9yKTogQ2hhbmdlIGRlZmF1bHQgc3VmZml4IGZvciBDKysgdG8gIi5jcHAiCgkoQ2hlY2tfU3RhbmRfQWxvbmVfTGlicmFyeSk6IElmIHRoZSBzcGVjaWZpZWQgcmVmZXJlbmNlIHN5bWJvbCBmaWxlIGRvZXMKCW5vdCBleGlzdCwgb25seSBpc3N1ZSBhIHdhcm5pbmcgd2hlbiB0aGUgc3ltYm9sIHBvbGljeSBpcyBub3QKCUNvbnRyb2xsZWQuIEFuZCwgd2hlbiBzeW1ib2wgcG9saWN5IGlzIENvbXBsaWFudCwgc2V0IHRoZSBzeW1ib2wKCXBvbGljeSB0byBBdXRvbm9tb3VzLgoKMjAwNS0wNi0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmotcGFydC5hZGIgKFByZV9QYXJzZV9Db250ZXh0X0NsYXVzZSk6IENhbGwgU2V0X0lzX05vdF9MYXN0X0luX0xpc3QKCXdoZW4gdGhlIHByb2plY3QgZmlsZSBpbiBhIHdpdGggY2xhdXNlIGlzIG5vdCB0aGUgbGFzdCBvbmUsIHRoYXQgaXMgdGhlCglwcm9qZWN0IGZpbGUgbmFtZSBpcyBmb2xsb3dlZCBieSBhIGNvbW1hLgoJKiBwcmotcHAuYWRiOiAoRmlyc3RfV2l0aF9Jbl9MaXN0KTogTmV3IEJvb2xlYW4gZ2xvYmFsIHZhcmlhYmxlCgkoUHJpbnQpOiBJc3N1ZSBsaXN0IG9mIHByb2plY3QgZmlsZXMgc2VwYXJhdGVkIGJ5IGNvbW1hcyBpbiB3aXRoIGNsYXVzZXMKCWFjY29yZGluZyB0byB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IElzX05vdF9MYXN0X0luX0xpc3QuCgkqIHByai10cmVlLmFkcywgcHJqLXRyZWUuYWRiOiAoSXNfTm90X0xhc3RfSW5fTGlzdCk6IE5ldyBmdW5jdGlvbgoJKFNldF9Jc19Ob3RfTGFzdF9Jbl9MaXN0KTogTmV3IHByb2NlZHVyZQoKMjAwNS0wNi0xNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHMtYXRhY2NvLmFkczogUHV0IGEgcHJhZ21hIE5vX1N0cmljdF9BbGlhc2luZyBvbiBPYmplY3RfUG9pbnRlci4KCjIwMDUtMDYtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2NuZy5hZGI6IEFkZCBjYWxsIHRvIG5ldyBDaGVja19FT0Ygcm91dGluZQoJKEFjY3VtdWxhdGVfQ2hlY2tzdW0pOiBQcm9wZXJseSBoYW5kbGUgd2lkZSB3aWRlIGNoYXIgPj0gMiAqKiAyNAoJQWRkIHNvbWUgY29tbWVudHMgcmVnYXJkaW5nIHdpZGUgY2hhcmFjdGVyIGhhbmRsaW5nCgoJKiBzdHlsZS5hZHMsIHN0eWxlZy5hZHMsIHN0eWxlZy5hZGI6IEltcGxlbWVudCBuZXcgc3R5bGUgc3dpdGNoIC1nbmF0eXUKCgkqIHN0eWxlc3cuYWRzLCBzdHlsZXN3LmFkYjogSW1wbGVtZW50IG5ldyBzdHlsZSBzd2l0Y2ggLWduYXR5dQoKCSogZy11dGZfMzIuYWRzLCBnLXV0Zl8zMi5hZGIgKElzX1VURl8zMl9Ob25fR3JhcGhpYyk6IE90aGVyX0Zvcm1hdAoJY2hhcmFjdGVycyBhcmUgbm93IGNvbnNpZGVyZWQgZ3JhcGhpYyBjaGFyYWN0ZXJzIGFuZCBoZW5jZSB5aWVsZCBmYWxzZQoJaW4gdGhpcyBjYWxsLgoKCSogbm1ha2UuYWR0OiBNb2RpZnkgaGVhZGVyIHNvIHRoYXQgeG5tYWtlIGRvZXMgbm90IGdlbmVyYXRlIG91dHB1dAoJZmlsZXMgd2l0aCBtdWx0aXBsZSBibGFuayBsaW5lcy4KCgkqIHRyZWVwcnMuYWR0OiBSZW1vdmUgYSBibGFuayBsaW5lIHNvIHRoYXQgb3V0cHV0IGZyb20geHRyZWVwcnMgZG9lcwoJbm90IGhhdmUgYW4gZXh0cmEgYmxhbmsgbGluZQoKMjAwNS0wNi0xNCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogc2VtX2FnZ3IuYWRiIChBZ2dyZWdhdGVfQ29uc3RyYWludF9DaGVja3MpOiBBcHBseSBhIGNvbnZlcnNpb24gdG8gdGhlCglleHByZXNzaW9uIHdoZW4gdGhlIGNvbXBvbmVudCB0eXBlIGlzIGFuIGFub255bW91cyBhY2Nlc3MgdHlwZSB0bwoJZW5zdXJlIHRoYXQgYXBwcm9wcmlhdGUgYWNjZXNzaWJpbGl0eSBjaGVja3MgYXJlIGRvbmUuCgoJKiBzZW1fY2g1LmFkYiAoQW5hbHl6ZV9Bc3NpZ25tZW50KTogQXBwbHkgYSBpbXBsaWNpdCBjb252ZXJzaW9uIHRvIHRoZQoJZXhwcmVzc2lvbiBvZiBhbiBhc3NpZ25tZW50IHdoZW4gdGhlIHRhcmdldCBvYmplY3QgaXMgb2YgYW4gYW5vbnltb3VzCglhY2Nlc3MgdHlwZS4gVGhpcyBlbnN1cmVzIHRoYXQgcmVxdWlyZWQgYWNjZXNzaWJpbGl0eSBjaGVja3MgYXJlIGRvbmUuCgkoT25lX0JvdW5kKTogTW92ZSB0aGUgY2hlY2sgZm9yIHR5cGUgVW5pdmVyc2FsX0ludGVnZXIgdG8KCVByb2Nlc3NfQm91bmRzLgoJKFByb2Nlc3NfQm91bmRzKTogQ2hlY2sgd2hldGhlciB0aGUgdHlwZSBvZiB0aGUgcHJlYW5hbHl6ZWQgcmFuZ2UgaXMKCVVuaXZlcnNhbF9JbnRlZ2VyLCBhbmQgaW4gdGhhdCBjYXNlIHNldCBUeXAgdG8gSW50ZWdlcl9UeXBlIHByaW9yCgl0byBzZXR0aW5nIHRoZSB0eXBlIG9mIHRoZSBvcmlnaW5hbCByYW5nZSBhbmQgdGhlIGNhbGxzIHRvIE9uZV9Cb3VuZC4KCjIwMDUtMDYtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jYXNlLmFkYiAoRXhwYW5kX090aGVyc19DaG9pY2UpOiBJbXByb3ZlIHdhcm5pbmcuCgoyMDA1LTA2LTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fZXZhbC5hZGIgKFN1YnR5cGVzX1N0YXRpY2FsbHlfTWF0Y2gpOiBVc2UgZGlzY3JpbWluYW50Cgljb25zdHJhaW50IG9mIGZ1bGwgdmlldyBpZiBwcmVzZW50LCB3aGVuIG90aGVyIHR5cGUgaXMgZGlzY3JpbWluYXRlZC4KCShFdmFsX1JlbGF0aW9uYWxfT3ApOiBSZWNvZ25pemUgdGVzdHMgb2YgcG9pbnRlciB2YWx1ZXMgYWdhaW5zdCBOdWxsLAoJd2hlbiB0aGUgcG9pbnRlciBpcyBrbm93biB0byBiZSBub24tbnVsbCwgYW5kIGVtaXQgYXBwcm9wcmlhdGUgd2FybmluZy4KCjIwMDUtMDYtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCglQUiBhZGEvMTA2NzEKCSogc2VtX3ByYWcuYWRiOiBJbXBsZW1lbnQgcHJhZ21hIFBlcnNpc3RlbnRfQlNTCglSZW1vdmUgb2Jzb2xldGUgcHJhZ21hIFBlcnNpc3RlbnRfRGF0YSwgUGVyc2lzdGVudF9PYmplY3QKCVNldCBBZGFfVmVyc2lvbl9FeHBsaWNpdCwgZm9yIGltcGxlbWVudGF0aW9uIG9mIEFJLTM2MgoJVGVzdCBBZGFfVmVyc2lvbl9FeHBsaWNpdCBmb3IgUHJlZWxhYm9yYXRlXzA1IGFuZCBQdXJlXzA1CglBZGQgcHJvY2Vzc2luZyBmb3IgcHJhZ21hIFB1cmVfMDUgYW5kIFByZWVsYWJvcmF0ZV8wNQoJQWRkIHByb2Nlc3NpbmcgZm9yIEFzc2VydGlvbl9Qb2xpY3kgcHJhZ21hCglBZGQgcHJhZ21hIGlkZW50aWZpZXJzIGZvciBBc3NlcnQKCShBbmFseXplX1ByYWdtYSwgY2FzZSBBc3NlcnQpOiBDaGVjayBudW1iZXIgb2YgYXJndW1lbnRzCgkoUHJvY2Vzc19JbmxpbmUpOiBBZGRpdGlvbmFsIGd1YXJkIGFnYWluc3QgYW4gaWxsZWdhbCBwcm9ncmFtLCB3aGVyZSB0aGUKCWFyZ3VtZW50IG9mIHRoZSBwcmFnbWEgaXMgdW5kZWZpbmVkLCBhbmQgd2FybmluZ3Mgb24gcmVkdW5kYW50Cgljb25zdHJ1Y3RzIGFyZSBlbmFibGVkLgoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIE9ic29sZXNjZW50KTogQWxsb3cgYW4gb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50CglBZGFfMDUgdG8gdGhpcyBwcmFnbWEsIHNwZWNpZnlpbmcgdGhhdCB0aGUgcHJhZ21hIGlzIG9ubHkgYWN0aXZlIGluCglBZGFfMDUgbW9kZS4KCShDaGVja19BcmdfT3JkZXIpOiBOZXcgcHJvY2VkdXJlCglBZGQgYXBwcm9wcmlhdGUgY2FsbHMgdG8gdGhpcyBwcm9jZWR1cmUgdGhyb3VnaG91dAoJQWxzbyB0aHJvdWdob3V0LCBjaGVjayBlbnRpdHkgbmFtZSBiZWZvcmUgZG9pbmcgYW55IG90aGVyIGNoZWNrcwoKCSogc25hbWVzLmggc25hbWVzLmFkcywgc25hbWVzLmFkYjogQWRkIHByYWdtYSBQZXJzaXN0ZW50X0JTUwoJUmVtb3ZlIG9ic29sZXRlIHByYWdtYSBQZXJzaXN0ZW50X0RhdGEsIFBlcnNpc3RlbnRfT2JqZWN0CglBZGQgZW50cmllcyBmb3IgcHJhZ21hIFB1cmVfMDUgYW5kIFByZWVsYWJvcmF0ZV8wNQoJQWRkIGVudHJpZXMgZm9yIEFzc2VydGlvbl9Qb2xpY3kgcHJhZ21hIGFuZCBhc3NvY2lhdGVkIG5hbWVzCglBZGQgc29tZSBuYW1lcyBmb3IgcHJhZ21hIGFyZ3VtZW50IHByb2Nlc3NpbmcKCgkqIHRidWlsZC5hZHMsIHRidWlsZC5hZGI6IChNYWtlX0xpbmtlcl9TZWN0aW9uX1ByYWdtYSk6IE5ldyBmdW5jdGlvbgoKMjAwNS0wNi0xNCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX3dhcm4uYWRiIChXYXJuX09uX0tub3duX0NvbmRpdGlvbik6IElmIHRoZSBjb25zdGFudCBleHByZXNzaW9uCglhcHBlYXJzIHdpdGhpbiBhIG5lZ2F0aW9uIChlaXRoZXIgZnJvbSBzb3VyY2Ugb3IgYXMgYSByZXdyaXRpbmcgb2YKCWluZXF1YWxpdHkpIGFkanVzdCB0ZXh0IG9mIHdhcm5pbmcgYWNjb3JkaW5nbHkuCgoyMDA1LTA2LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogcy1zdHJ4ZHIuYWRiOiBGb2xsb3cgQUk5NS0wMDEzMgoKMjAwNS0wNi0xNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy10YXNyZW4uYWRiIChFeGNlcHRpb25hbF9Db21wbGV0ZV9SZW5kZXp2b3VzKTogRml4IHJhY2UgY29uZGl0aW9uLgoKMjAwNS0wNi0xNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoJICAgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBzLXRwb3Nlbi5hZGIsIHMtdHBvYm9wLmFkYgoJKEV4Y2VwdGlvbmFsX0NvbXBsZXRlX1JlbmRlenZvdXMpOiBTYXZlIHRoZSBvY2N1cnJlbmNlIGFuZCBub3Qgb25seQoJdGhlIGV4Y2VwdGlvbiBpZC4KCShQT19Eb19Pcl9RdWV1ZSk6IEJlZm9yZSBxdWV1aW5nIGEgdGFzayBvbiBhbiBlbnRyeSBxdWV1ZSB3ZSBjaGVjayB0aGF0Cgl0aGVyZSBpcyBubyB2aW9sYXRpb24gb2YgdGhlIE1heF9FbnRyeV9RdWV1ZV9MZW5ndGggcmVzdHJpY3Rpb24gKGlmIGl0CgloYXMgYmVlbiBzZXQpOyBQcm9ncmFtX0Vycm9yIGlzIHJhaXNlZCBvdGhlcndpc2UuCgkoUmVxdWV1ZV9DYWxsKTogQmVmb3JlIHJlcXVldWluZyB0aGUgdGFzayBvbiB0aGUgdGFyZ2V0IGVudHJ5IHF1ZXVlIHdlCgljaGVjayB0aGF0IHRoZXJlIGlzIG5vIHZpb2xhdGlvbiBvZiB0aGUgTWF4X0VudHJ5X1F1ZXVlX0xlbmd0aAoJcmVzdHJpY3Rpb24gKGlmIGl0IGhhcyBiZWVuIHNldCk7IFByb2dyYW1fRXJyb3IgaXMgcmFpc2VkIG90aGVyd2lzZS4KCjIwMDUtMDYtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc3R5bGVnLmFkYjogRml4IHNldmVyYWwgcmVtYWluaW5nIHByb2JsZW1zIGluIC1nbmF0eXUgc3dpdGNoCglCbGFuayBsaW5lIGNvdW50IG5vdCByZXNldCBhdCBzdGFydAoJU2Nhbm5pbmcgb3V0c2lkZSBzb3VyY2UgYnVmZmVyIGluIHNvbWUgY2FzZXMKCUNvbmZ1c2luZyBtZXNzYWdlIGZvciBibGFua3MgYXQgZW5kIG9mIGZpbGUKCU5vbi1lbXB0eSBibGFuayBsaW5lcyBub3QgcmVjb2duaXplZAoKCSogbm1ha2UuYWR0OiBNb2RpZnkgaGVhZGVyIHNvIHRoYXQgeG5tYWtlIGRvZXMgbm90IGdlbmVyYXRlIG91dHB1dAoJZmlsZXMgd2l0aCBtdWx0aXBsZSBibGFuayBsaW5lcy4KCgkqIHRyZWVwcnMuYWR0OiBSZW1vdmUgYSBibGFuayBsaW5lIHNvIHRoYXQgb3V0cHV0IGZyb20geHRyZWVwcnMgZG9lcwoJbm90IGhhdmUgYW4gZXh0cmEgYmxhbmsgbGluZQoKMjAwNS0wNi0xNCAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWRhY29yZS5jb20+CgoJKiBzdHlsZWctYy5hZGIgKEJvZHlfV2l0aF9Ob19TcGVjKTogUmVtb3ZlICc6JyBmcm9tIHdhcm5pbmcgbWVzc2FnZS4KCjIwMDUtMDYtMTQgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgkgICAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiB2bXNfY29udi5hZHMsIHZtc19jb252LmFkYjogUmVtb3ZlICJMaWJyYXJ5IiBjb21tYW5kLgoJVXBkYXRlIGNvcHlyaWdodC4KCgkqIHZtc19kYXRhLmFkczogQWRkIGVudHJ5IGZvciAtZ25hdHkvWSBbTk9dQURBXzIwMDVfQ09NUEFUSUJJTElUWQoJUmVtb3ZlICJMaWJyYXJ5IiBjb21tYW5kLgoJQ2hhbmdlIGtleXdvcmQgZm9yIHN0eWxlIGNoZWNrIC1nbmF0eWQgZnJvbSBOT0NSTEYgdG8KCURPU19MSU5FX0VORElOR1MuCglSZW1vdmUgdXNlbGVzcyBzZWNvbmQgc3R5bGUgY2hlY2sga2V5d29yZCBOT05FCglSZW1vdmUgaGVscCBkb2N1bWVudGF0aW9uIGZvciBpbmV4aXN0ZW50IHN0eWxlIGNoZWNrIGtleXdvcmQKCVJNX0NPTFVNTl9MQVlPVVQuCglBZGQgaGVscCBkb2N1bWVudGF0aW9uIGZvciBzdHlsZSBjaGVjayBrZXl3b3JkcyBET1NfTElORV9FTkRJTkdTLAoJVU5ORUNFU1NBUllfQkxBTktfTElORVMgYW5kIFhUUkFfUEFSRU5TCglBZGQgVU5ORUNFU1NBUllfQkxBTktfTElORVMgZm9yIC1nbmF0eXUKCUFkZCBxdWFsaWZpZXJzIC9BTExfUFJPSkVDVFMgKC1VKSBmb3IgR05BVCBQUkVUVFkgYW5kIEdOQVQgTUVUUklDCgoJKiB1Z193b3JkczogQWRkIGVudHJ5IGZvciAtZ25hdHkvWSBbTk9dQURBXzIwMDVfQ09NUEFUSUJJTElUWQoKMjAwNS0wNi0xNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtYWtlZ3ByLmFkYiAoQ29tcGlsZV9MaW5rX1dpdGhfR25hdG1ha2UpOiBJbnZva2UgZ25hdG1ha2Ugd2l0aCAtZCBpZgoJZ3BybWFrZSB3YXMgaW52b2tlZCB3aXRoIC1kLgoJKENvbXBpbGVfU291cmNlcyk6IElmIC1kIHdhcyB1c2VkLCBvdXRwdXQgdGhlICJjb21wbGV0ZWQgLi4uIiBtZXNzYWdlCglmb3IgZWFjaCBjb21waWxhdGlvbi4KCShTY2FuX0FyZyk6IFJlY29nbml6ZSBuZXcgc3dpdGNoIC1kCglXaGVuIC1jIGFuZCBhdCBsZWFzdCBvbmUgbWFpbiBpcyBzcGVjaWZpZWQsIHNldAoJVW5pcXVlX0NvbXBpbGUgdG8gVHJ1ZSB0byBndWFyYW50ZWUgdGhhdCBubyBvdGhlciBzb3VyY2VzIHdpbGwgYmUKCWNvbXBpbGVkLgoKMjAwNS0wNi0xNCAgTWF0dGhldyBIZWFuZXkgIDxoZWFuZXlAYWRhY29yZS5jb20+CgoJKiBhLXN3dW5oYS5hZHMsIGEtc3d1bmhhLmFkYjogUmVtb3ZlZC4gUmVwbGFjZWQgYnkgYS1zd3V3aGEuYWRbc2JdCgkqIGEtc3d1d2hhLmFkcywgYS1zd3V3aGEuYWRiOiBOZXcgZmlsZXMKCgkqIGEtc3p1bmhhLmFkcywgYS1zenVuaGEuYWRiOiBSZW1vdmVkLCByZXBsYWNlZCBieSBhLXN6dXpoYS5hZFtzYl0KCSogYS1zenV6aGEuYWRzLCBhLXN6dXpoYS5hZGI6IE5ldyBmaWxlcy4KCgkqIGEtcmJ0Z3NvLmFkYiwgYS1jcmJ0Z28uYWRzLCBhLWNyYnRnby5hZGIsIGEtY3JidGdrLmFkcywKCWEtY3JidGdrLmFkYiwgYS1jcmJsdHIuYWRzLCBhLWNvb3JzZS5hZHMsIGEtY29vcnNlLmFkYiwgYS1jb252ZWMuYWRzLAoJYS1jb252ZWMuYWRiLCBhLWNvaW52ZS5hZHMsIGEtY29pbnZlLmFkYiwgYS1jb2hhdGEuYWRzLCBhLWNvaGFtYS5hZHMsCglhLWNvaGFtYS5hZGIsIGEtY2lvcnNlLmFkcywgYS1jaW9yc2UuYWRiLCBhLWNpaGFtYS5hZHMsIGEtY2loYW1hLmFkYiwKCWEtY2lkbGxpLmFkcywgYS1jaWRsbGkuYWRiLCBhLWNodGdvcC5hZHMsIGEtY2h0Z29wLmFkYiwgYS1jZGxpbGkuYWRzLAoJYS1jZGxpbGkuYWRiLCBhLWNvb3JtdS5hZGIsIGEtY2lvcm11LmFkYiwgYS1jaWhhc2UuYWRiLCBhLWNvaGFzZS5hZGIsCglhLWNvaGFzZS5hZHMsIGEtY2lvcm1hLmFkcywgYS1jb29ybWEuYWRzLCBhLWNpb3JtdS5hZHMsIGEtY29vcm11LmFkcywKCWEtc3d1bmhhLmFkYiwgYS1zdHVuaGEuYWRiLCBhLWNpb3JtYS5hZGIsIGEtY29vcm1hLmFkYiwgYS1zaGNhaW4uYWRzLAoJYS1zaGNhaW4uYWRiLCBhLWNodGdrZS5hZHMsIGEtY2h0Z2tlLmFkYiwgYS1zdHdpaGEuYWRzLCBhLXN0d2loYS5hZGIsCglhLXN0cmhhcy5hZGIsIGEtc3R6aGFzLmFkYjogc3luY2hyb25pemVkIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUKCUFkYSAyMDA1IFJNLgoKMjAwNS0wNi0xMCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCSAgICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoJICAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgkgICAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogZ2lnaS5oOiAoYnVpbGRfYWxsb2NhdG9yKTogQWRkIGFyZyBJR05PUkVfSU5JVF9UWVBFLgoKCSogdHJhbnMuYyAoY2FsbF90b19nbnUpOiBJc3N1ZSBhIHdhcm5pbmcgZm9yIHVzZXJzIG9mIFN0YXJsZXQgd2hlbgoJbWFraW5nIGEgdGVtcG9yYXJ5IGFyb3VuZCBhIHByb2NlZHVyZSBjYWxsIGJlY2F1c2Ugb2Ygbm9uLWFkZHJlc3NhYmxlCglhY3R1YWwgcGFyYW1ldGVyLgoJKHByb2Nlc3NfZnJlZXplX2VudGl0eSk6IElmIGVudGl0eSBpcyBhIHByaXZhdGUgdHlwZSwgY2FwdHVyZSBzaXplCglpbmZvcm1hdGlvbiB0aGF0IG1heSBoYXZlIGJlZW4gY29tcHV0ZWQgZm9yIHRoZSBmdWxsIHZpZXcuCgkodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9BbGxvY2F0b3IpOiBJZiBoYXZlIGluaXRpYWxpemluZyBleHByZXNzaW9uLAoJY2hlY2sgdHlwZSBmb3IgSGFzX0NvbnN0cmFpbmVkX1BhcnRpYWxfVmlldyBhbmQgcGFzcyB0aGF0IHRvCglidWlsZF9hbGxvY2F0b3IuCgkodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9SZXR1cm5fU3RhdGVtZW50KTogUGFzcyBleHRyYSBhcmcgdG8KCWJ1aWxkX2FsbG9jYXRvci4KCgkqIGRlY2wuYyAoYW5ub3RhdGVfdmFsdWUpOiBSZW1vdmUgZWFybHkgcmV0dXJuIGlmIC1nbmF0UiBpcyBub3QKCXNwZWNpZmllZC4KCShnbmF0X3RvX2dudV9maWVsZCk6IERvbid0IG1ha2UgYSBwYWNrYWJsZSB0eXBlIGZvciBhIGNvbXBvbmVudCBjbGF1c2UKCWlmIHRoZSBwb3NpdGlvbiBpcyBieXRlIGFsaWduZWQsIHRoZSBmaWVsZCBpcyBhbGlhc2VkLCBhbmQgdGhlIGNsYXVzZQoJc2l6ZSBpc24ndCBhIG11bHRpcGxlIG9mIHRoZSBwYWNrYWJsZSBhbGlnbm1lbnQuIEl0IHNlcnZlcyBubyB1c2VmdWwKCXB1cnBvc2UgcGFja2luZy13aXNlIGFuZCB3b3VsZCBiZSByZWplY3RlZCBsYXRlciBvbi4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2Ugb2JqZWN0KTogUGFzcyBleHRyYSBhcmcgdG8gYnVpbGRfYWxsb2NhdG9yLgoKCVBSIGFkYS8yMDUxNQoJKGduYXRfdG9fZ251X2VudGl0eSk6IFJlbW92ZSB1c2Ugb2YgbWFjcm8gX1dJTjMyIHdoaWNoIGlzIHdyb25nIGluIHRoZQoJY29udGV4dCBvZiBjcm9zcyBjb21waWxlcnMuIFdlIHVzZSBUQVJHRVRfRExMSU1QT1JUX0RFQ0xfQVRUUklCVVRFUwoJaW5zdGVhZC4KCShjcmVhdGVfY29uY2F0X25hbWUpOiBJZGVtLgoKMjAwNS0wNi0xMCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCSAgICBCZW4gQnJvc2dvbCAgPGJyb3Nnb2xAYWRhY29yZS5jb20+CgkgICAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFkYWNvcmUuY29tPgoJICAgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFkYWNvcmUuY29tPgoJICAgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGduYXRfcm0udGV4aTogQWRkIGRvY3VtZW50YXRpb24gZm9yIHByYWdtYSBQZXJzaXN0ZW50X0JTUwoJRG9jdW1lbnQgc2Vjb25kIGFyZ3VtZW50IChBZGFfMDUpIG9mIHByYWdtYSBPYnNvbGVzY2VudAoJQWRkIG5vdGUgdGhhdCBjYWxsIHRvIHN1YnByb2dyYW0gbWFya2VkIHdpdGggcHJhZ21hIE9ic29sZXNjZW50CglpcyBub3cgY29uc2lkZXJlZCB0byBiZSBhIHZpb2xhdGlvbiBvZiBwcm9ncmFtIFJlc3RyaWN0aW9ucwoJKE5vX09ic29sZXNjZW50X0ZlYXR1cmVzKS4KCShJbXBsZW1lbnRhdGlvbiBEZWZpbmVkIFByYWdtYXMpIDxNYWNoaW5lX0F0dHJpYnV0ZT46IE1ha2UgaXQgY2xlYXIKCXRoYXQgb25seSBtYWNoaW5lLWRlcGVuZGVudCBhdHRyaWJ1dGVzIGFyZSBzdXBwb3J0ZWQuCgoJKiBnbmF0X3Vnbi50ZXhpOgoJQ29tbWVudGVkIG91dCBtZW51IGxpbmVzIGFuZCBlbXB0eSBzZWN0aW9uIGZvciBnbmF0Y2xlYW4gZXhhbXBsZXMKCURvY3VtZW50IC1nbmF0d3kvWQoJRml4IHNvbWUgb3ZlciBsb25nIGxpbmVzCglDbGFyaWZ5IGFuZCBlbmhhbmNlIGRvY3VtZW50YXRpb24gb2YgQURBX1BST0pFQ1RfUEFUSC4KCVJld29yayBzZWN0aW9uIDIuMTEuMigzKSBhYm91dCBsaW5raW5nIHdpdGggYSBub24tR05VIGNvbXBpbGVyLgoJTWVudGlvbiBuZXcgc3dpdGNoIC1mY2FsbGdyYXBoLWluZm8uCglNZW50aW9uIG5ldyBzd2l0Y2ggLWZzdGFjay11c2FnZS4KCUZvciBnbmF0cHAsIHJlcGxhY2UgJy1ub3RhYicgd2l0aCAnLU4nIGFuZCBhZGQgdGhpcyBvcHRpb24gdG8gSW5kZXgKCUNvcnJlY3RlZCBWTVMgZXhhbXBsZS4KCVZNUyBrZXl3b3JkIGZvciBzdHlsZSBjaGVjayAtZ25hdHlkIGlzIERPU19MSU5FX0VORElOR1MsIG5vIE5PQ1JMRgoJTWlub3IgcmVmb3JtYXR0aW5nCglBZGQgZG9jdW1lbnRhdGlvbiBmb3IgLWduYXR5dSBzd2l0Y2ggKHVubmVjZXNzYXJ5IGJsYW5rIGxpbmVzKQoJRG9jdW1lbnQgbmV3IHN3aXRjaCAtVSBmb3IgR05BVCBQUkVUVFkgYW5kIEdOQVQgTUVUUklDCglBZGQgbm90ZSBhYm91dCBTdGRjYWxsIGJlaW5nIGhhbmRsZWQgYXMgQyBjb252ZW50aW9uIG9uIG5vbiBXaW5kb3dzIE9TLgoJUmVtb3ZlIHNvbWUganVuayB0eXBvIGluIGRlc2NyaXB0aW9uIG9mIGduYXRiaW5kIC1TIHN3aXRjaAoJUmVtb3ZlIHJlZmVyZW5jZSB0byBFeHRlbnNpb25zX0FsbG93ZWQgcHJhZ21hCglEb2N1bWVudCB0aGUgbmV3IG9yZGVyIG9mIHRoZSBkaXJlY3RvcmllcyB0byBiZSBzZWFyY2hlZCAoc291cmNlIGFuZAoJb2JqZWN0IGRpcmVjdG9yaWVzIG9mIHByb2plY3QgZmlsZXMgYmVmb3JlIGRpcmVjdG9yaWVzIGluIEFEQV8qX1BBVEgKCWVudmlyb25tZW50IHZhcmlhYmxlcy4KCgkqIGctdHJhc3ltLmFkczogRG9jdW1lbnQgdGhhdCBJUklYIGlzIHN1cHBvcnRlZAoKMjAwNS0wNi0xMCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogTWFrZWZpbGUuaW46IEFkZCBpbml0aWFsaXplLm8gd2hlbiBuZWVkZWQuCglBZGFwdCB0byBuZXcgVk1TIHBhY2thZ2UgYm9keSBTeW1ib2xzIGFuZCBzdWJ1bml0cwoJTm8gc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBhLXN5dGFjbyBpcyBuZWVkZWQgZm9yIFZ4V29ya3MuCgoJKiBhLXdpY2h1bi5hZHMsIGEtd2ljaHVuLmFkYiwgYS16Y2h1bmkuYWRzLCBhLXpjaHVuaS5hZGI6IE5ldyBmaWxlcy4KCSogYS16Y2hhcmEuYWRzLCBhLXdpZGNoYS5hZHM6IE5ldyBmaWxlcy4KCgkqIHN5c3RlbS1ocHV4LWlhNjQuYWRzOiBOZXcgZmlsZS4KCgkqIGktdnh3b3JrLXg4Ni5hZHMsIGktdnh3b3JrLmFkcyAoaW50Q29udGV4dCk6IEFkZCB0aGlzIGZ1bmN0aW9uIHdoaWNoCglpcyBpbXBvcnRlZCBmcm9tIHRoZSBWeFdvcmtzIGtlcm5lbC4KCjIwMDUtMDYtMTQgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZy1zb2xpb3AtbWluZ3cuYWRzLCBnLXNvY2Nvbi12bXMuYWRiLCBhLXN3bXdjby5hZHMsIGV4cF9zbWVtLmFkYiwKCWZtYXAuYWRiLCBhLXN6bXpjby5hZHMsIHMtdHJhZW50LXZtcy5hZGIsIHMtdHJhZW50LXZtcy5hZHMsCglhLWRpcmVpby5hZHMsIGEtZXhjdHJhLmFkcywgYS1leGV4ZGEuYWRiLCBhLWV4ZXh0ci5hZGIsIGEtc3RyZWFtLmFkcywKCXMtcmVzdHJpLmFkcywgcy1yZXN0cmkuYWRiLCBzLXRyYWVudC5hZGIsIHMtdHJhZW50LmFkcywgYS1zbGNhaW4uYWRiLAoJYS1zdHpoYXMuYWRzLCBhLXRpaW5hdS5hZGIsIGNvbXBlcnIuYWRiLCBleHBfY2gxMS5hZGIsIGctYm91YnVmLmFkYiwKCWctY2FsZW5kLmFkYiwgZy1kZWJwb28uYWRzLCBnLW1vcmVleC5hZHMsIGdwcmVwLmFkYiwgZy1yZWdwYXQuYWRzLAoJaS1jZXh0ZW4uYWRzLCBpLW9zMnRoci5hZHMsIG1ha2V1dGwuYWRzLCBtZW1yb290LmFkYiwgbWxpYi1wcmouYWRiLAoJbmFtZXQuYWRiLCBuYW1ldC5hZHMsIHByai1tYWtyLmFkYiwgcHJqLXByb2MuYWRiLCBzZW1fZGlzdC5hZGIsCglzZW1fZWxpbS5hZHMsIHMtdmFsaW50LmFkYiwgcy12YWxsbGkuYWRiLCBzLXZhbGxsaS5hZGIsIHMtdmFsbGxpLmFkcywKCXMtdmFsbGx1LmFkYiwgcy12YWxsbHUuYWRzLCBzLXZhbHJlYS5hZGIsIHMtdmFscmVhLmFkcywgc2NuLmFkYiwKCXMtdGFzaW5mLmFkYiwgdGFyZ3Bhcm0uYWRiLCB1bmFtZS5hZGIsIHVuYW1lLmFkcywgeG5tYWtlLmFkYiwKCXhzaW5mby5hZGIsIGEtZGlyZWN0LmFkczogUmVtb3ZlIGV4dHJhIGJsYW5rIGxpbmVzLiBNaW5vciByZWZvcm1hdHRpbmcuCgoyMDA1LTA2LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogeGVpbmZvLmFkYjogRml4IHR5cG8gaW4gY29tbWVudAoKMjAwNS0wNi0xNCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogcmVwaW5mby5hZHM6IEZpeCB0eXBvIGluIGNvbW1lbnQKCjIwMDUtMDYtMTQgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIHMtZmluaW1wLmFkYiAoUGFyZW50X1RhZyk6IERlbGV0ZSB0aGlzIGltcG9ydGVkIGZ1bmN0aW9uIChmdW5jdGlvbgoJUGFyZW50X1RhZyBpcyBub3cgaW4gdGhlIHZpc2libGUgcGFydCBvZiBBZGEuVGFncykuCgkoR2V0X0RlZXBfQ29udHJvbGxlcik6IENhbGwgQWRhLlRhZ3MuUGFyZW50X1RhZyBkaXJlY3RseSBpbnN0ZWFkIG9mCgl1c2luZyBpbXBvcnRlZCBmdW5jdGlvbi4KCjIwMDUtMDYtMTQgIEJlcm5hcmQgQmFubmVyICA8YmFubmVyQGFkYWNvcmUuY29tPgoKCSogdnhhZGRyMmxpbmUuYWRiOiBBZGQgc3VwcG9ydCBmb3IgV2luZG93cyBob3N0ZWQgeDg2IHZ4d29ya3MuIFNob3VsZAoJYWxzbyBhcHBseSBmb3IgaGFuZGxpbmcgc3VwcG9ydCBmb3IgVnhTaW0gNjUzLgoKMjAwNS0wNi0xNCAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHhzbmFtZXMuYWRiOiBBZGQgYXV0b21hdGljIGdlbmVyYXRpb24gb2Ygc25hbWVzLmguCgoyMDA1LTA2LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZ2VuLXNvY2Nvbi5jOiBBZGQgSVBfTVVMVElDQVNUX0lGIGNvbnN0YW50CglNaW5vciByZWZvcm1hdHRpbmcgYW5kIGFkanVzdG1lbnRzIHRvIHByZXZlbnQgd2FybmluZ3MuCgoyMDA1LTA2LTE0ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBzZWhfaW5pdC5jOiBEbyBub3QgaW5jbHVkZSA8c3lzL3N0YXQuaD4uIFRoaXMgaXMgbm90IG5lZWRlZC4KCjIwMDUtMDYtMDMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCSogdHJhbnMuYyAoZ25hdF9naW1wbGlmeV9leHByKTogQ2FsbAoJcmVjb21wdXRlX3RyZWVfaW52YXJhbnRfZm9yX2FkZHJfZXhwciB3aGVuIHdlIGNoYW5nZQoJdGhlIG9wZXJhbmQgb2YgdGhlIEFERFJfRVhQUi4KCjIwMDUtMDUtMzEgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIG1pc2MuYzogRG9uJ3QgaW5jbHVkZSBlcnJvcnMuaC4KCjIwMDUtMDUtMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHJhaXNlLmMgKGRiKTogQWRkIEFUVFJJQlVURV9QUklOVEZfMi4KCjIwMDUtMDUtMjkgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBjYWwuYywgZGVjbC5jLCBpbml0LmMsIHJhaXNlLmMsIHRyYW5zLmMsIHV0aWxzMi5jOiBGaXgKCWNvbW1lbnQgdHlwb3MuCgkqIGduYXRfcm0udGV4aSwgZ25hdF91Z24udGV4aTogRml4IHR5cG9zLgoKMjAwNS0wNS0xNiAgTmF0aGFuYWVsIE5lcm9kZSA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCglQUiBhZGEvMjAyNzAKCSogTWFrZWZpbGUuaW46IE1ha2UgVEdUX0xJQiBiZWhhdmUgY29ycmVjdGx5LgoKMjAwNS0wNC0yMyAgREogRGVsb3JpZSAgPGRqQHJlZGhhdC5jb20+CgoJKiBtaXNjLmM6IEFkanVzdCB3YXJuaW5nKCkgY2FsbGVycy4KCjIwMDUtMDQtMTYgIExhdXJlbnQgR1VFUkJZICA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8xODg0NwoJKiBhLW51ZGlyYS5hZGIgKFZhbHVlKTogQ2hlY2sgZm9yIHZhbGlkIHN0cmluZy4KCSogYS1udWZscmEuYWRiIChWYWx1ZSk6IExpa2V3aXNlLgoKMjAwNS0wNC0xMSAgUmljaGFyZCBTYW5kaWZvcmQgIDxyc2FuZGlmb0ByZWRoYXQuY29tPgoKCSogbGFuZy5vcHQ6IFJlZmVyIHRvIHRoZSBHQ0MgaW50ZXJuYWxzIGRvY3VtZW50YXRpb24gaW5zdGVhZCBvZiBjLm9wdC4KCjIwMDUtMDQtMTAgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBhZGFpbnQuYywgaW5pdC5jLCB0cmFjZWJhay5jOiBGaXggY29tbWVudCB0eXBvcy4KCSogZ25hdC1zdHlsZS50ZXhpLCBnbmF0X3JtLnRleGksIGduYXRfdWduLnRleGk6IEZpeCB0eXBvcy4KCjIwMDUtMDQtMDcgIExhdXJlbnQgR1VFUkJZICA8bGF1cmVudEBndWVyYnkubmV0PgoJICAgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZS5hbmdsaW5AbnJjLWNucmMuZ2MuY2E+CgoJKiBNYWtlZmlsZS5pbjogQWRkIG1ha2UgaWZlcSBkZWZpbmUgZm9yIGhwcGEgbGludXggdGFza2luZyBzdXBwb3J0LgoJKiBzeXN0ZW0taHB1eC5hZHM6IERlZmluZSBTaWduZWRfWmVyb3MgdG8gYmUgVHJ1ZS4KCSogc3lzdGVtLWxpbnV4LWhwcGEuYWRzLCBzLW9zaW50ZS1saW51eC1ocHBhLmFkczogTmV3IGZpbGVzLgoKMjAwNS0wNC0wMSAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIGFkYWludC5jLCBjYWwuYywgZGVjbC5jLCBnaWdpLmgsIGdtZW0uYywgaW5pdC5jLCBsaW5rLmMsCglyYWlzZS5jLCB0cmFjZWJhay5jLCB0cmFucy5jLCB1dGlsczIuYywgdXRpbHMuYzogRml4IGNvbW1lbnQKCXR5cG9zLgoKMjAwNS0wMy0zMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgoKCSogZGVjbC5jIChnbmF0X3N1YnN0aXR1dGVfaW5fdHlwZSk6IERvbid0IGhhbmRsZSBGSUxFX1RZUEUuCgoyMDA1LTAzLTMwICBBYXJvbiBXLiBMYUZyYW1ib2lzZSAgPGFhcm9uYXZheTYyQGFhcm9ud2wuY29tPgoKCSogYWRhaW50LmMgKF9nbmF0X3NldF9jbG9zZV9vbl9leGVjKTogTWFyayBwYXJhbWV0ZXJzIHVudXNlZC4KCjIwMDUtMDMtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfUmVhbF9MaXRlcmFsKTogR2VuZXJhdGUgd2FybmluZyBpZiBzdGF0aWMKCWZpeGVkLXBvaW50IGV4cHJlc3Npb24gaGFzIHZhbHVlIHRoYXQgaXMgbm90IGEgbXVsdGlwbGUgb2YgdGhlIFNtYWxsCgl2YWx1ZS4KCgkqIG9wdC5hZHMgKFdhcm5fT25fQmFkX0ZpeGVkX1ZhbHVlKTogTmV3IGZsYWcKCgkqIHMtdGFwcm9wLXRydTY0LmFkYiAoUlRfUmVzb2x1dGlvbik6IFJldHVybiBhbiBpbnRlZ2VyIG51bWJlciBvZgoJbmFub3NlY29uZHMuCgoJKiB1Z193b3JkczogQWRkIGVudHJ5IGZvciBbTk9fXUJBRF9GSVhFRF9WQUxVRVMgZm9yIC1nbmF0d2IvLWduYXR3QgoKMjAwNS0wMy0yOSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtbGliLXRndC12bXMtaWE2NC5hZGIsIG1saWItdGd0LXZtcy1hbHBoYS5hZGIKCShCdWlsZF9EeW5hbWljX0xpYnJhcnkuVmVyc2lvbl9TdHJpbmcpOiBSZXR1cm4gdGhlIGVtcHR5IHN0cmluZyB3aGVuCglMaWJfVmVyc2lvbiBpcyBlbXB0eSBvciB3aGVuIHRoZSBzeW1ib2wgcG9saWN5IGlzIG5vdCBBdXRvbm9tb3VzLgoKCSogc3ltYm9scy12bXMtYWxwaGEuYWRiIChGaW5hbGl6ZSk6IEZvciBzeW1ib2wgcG9saWN5IENvbXBsaWFudCwgd2hlbgoJYSBzeW1ib2wgaXMgbm90IGluIHRoZSByZWZlcmVuY2Ugc3ltYm9sIGZpbGUsIGluY3JlYXNlIHRoZSBNYWpvciBJRAoJYW5kIHNldCB0aGUgTWlub3IgSUQgdG8gMC4KCVVzZSBnc21hdGNoPWxlcXVhbCBpbnN0ZWFkIG9mIGdzbWF0Y2g9ZXF1YWwKCjIwMDUtMDMtMjkgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBhZGFpbnQuYyAoX19nbmF0X3RvX2Nhbm9uaWNhbF9maWxlX3NwZWMgW1ZNU10pOiBDaGVjayBmb3IgbG9naWNhbAoJbmFtZSBhbmQgdHJhbnNsYXRlLgoKMjAwNS0wMy0yOSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogYS10YWdzLmFkcywgYS10YWdzLmFkYiAoR2V0X1RTRCk6IFN1YnByb2dyYW0gcmVtb3ZlZC4KCShJbmhlcml0X0RUKTogVGhlIGZpcnN0IGZvcm1hbCBoYXMgYmVlbiByZWRlZmluZWQgYXMgYSBUYWcuCglUaGlzIGFsbG93cyB1cyB0aGUgcmVtb3ZhbCBvZiB0aGUgc3VicHJvZ3JhbSBHZXRfVFNELgoJKFRTRCk6IFJlcGxhY2UgdGhlIGNhbGwgdG8gR2V0X1RTRCBieSB0aGUgYWN0dWFsIGNvZGUuCgoJKiBleHBfZGlzcC5hZHMsIGV4cF9kaXNwLmFkYjogUmVtb3ZlIHN1cHBvcnQgdG8gY2FsbCBHZXRfVFNELgoJKE1ha2VfRFQpOiBVcGdyYWRlIHRoZSBjYWxsIHRvIEluaGVyaXRfVFNEIGFjY29yZGluZyB0byB0aGUKCW5ldyBpbnRlcmZhY2U6IHRoZSBmaXJzdCBmb3JtYWwgaXMgbm93IGEgVGFnLgoKCSogaS1jcHAuYWRzLCBpLWNwcC5hZGIgKENQUF9Jbmhlcml0X0RUKTogVGhlIGZpcnN0IGZvcm1hbCBoYXMgYmVlbgoJcmVkZWZpbmVkIGFzIGEgVGFnLgoJVGhpcyBjaGFuZ2UgYWxsb3dzIHVzIHRvIHJlbW92ZSB0aGUgc3VicHJvZ3JhbSBHZXRfVFNELgoJKENQUF9HZXRfVFNEKTogU3VicHJvZ3JhbSByZW1vdmVkLgoJKFRTRCk6IFJlcGxhY2UgdGhlIGNhbGwgdG8gQ1BQX0dldF9UU0QgYnkgdGhlIGFjdHVhbCBjb2RlLgoKCSogcnRzZmluZC5hZHM6IFJlbW92ZSBzdXBwb3J0IHRvIGNhbGwgdGhlIHJ1bi10aW1lCglzdWJwcm9ncmFtIEdldF9UU0QKCjIwMDUtMDMtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXJydXRpbC5hZGIsIGVycm91dC5hZGI6CglNaW5vciBjb21tZW50IHVwZGF0ZXMgb24gTGluZV9UZXJtaW5hdG9yIHJlZmVyZW5jZXMKCgkqIHBhci1jaDEwLmFkYjogQWRkID8/PyBjb21tZW50IGFib3V0IGxpbmUgdGVybWluYXRvcgoKCSogc3R5bGVnLmFkYiAoQ2hlY2tfTGluZV9UZXJtaW5hdG9yKTogQWRkIGNoZWNrIGZvciBuZXcgc3dpdGNoIC1nbmF0eWQKCShjaGVjayBkb3MgbGluZSB0ZXJtaW5hdG9yKS4KCShDaGVja19MaW5lX01heF9MZW5ndGgpOiBOZXcgcHJvY2VkdXJlLCBzcGxpdCBvZmYgZnJvbSB0aGUgZXhpc3RpbmcKCUNoZWNrX0xpbmVfVGVybWluYXRvciByb3V0aW5lLiBTZXBhcmF0aW5nIHRoaXMgb3V0IGFsbG93cyAtZ25hdHlmIHRvCgliZSBwcm9wZXJseSByZWNvZ25pemVkLgoKCSogc3R5bGVnLmFkYjogQWRkID8/PyBjb21tZW50IGZvciBsaW5lIHRlcm1pbmF0b3IgcmVmZXJlbmNlCgoJKiBzY25nLmFkYiAoQ2hlY2tfRW5kX09mX0xpbmUpOiBGaXggYnVnIG9mIC1nbmF0eWYgYmVpbmcgaWdub3JlZAoJKENoZWNrX0VuZF9PZl9MaW5lKTogQWRkIC1nbmF0eWQgaGFuZGxpbmcgKGNoZWNrIGRvcyBsaW5lIHRlcm1pbmF0b3JzKQoKCSogc3R5bGVnLmFkcyAoQ2hlY2tfTGluZV9UZXJtaW5hdG9yKTogQWRkIGNoZWNrIGZvciBuZXcgc3dpdGNoIC1nbmF0eWQKCShjaGVjayBkb3MgbGluZSB0ZXJtaW5hdG9yKS4KCShDaGVja19MaW5lX01heF9MZW5ndGgpOiBOZXcgcHJvY2VkdXJlLCBzcGxpdCBvZmYgZnJvbSB0aGUgZXhpc3RpbmcKCUNoZWNrX0xpbmVfVGVybWluYXRvciByb3V0aW5lLiBTZXBhcmF0aW5nIHRoaXMgb3V0IGFsbG93cyAtZ25hdHlmIHRvCgliZSBwcm9wZXJseSByZWNvZ25pemVkLgoKCSogc3R5bGVzdy5hZHMsIHN0eWxlc3cuYWRiOgoJQWRkIGhhbmRsaW5nIGZvciBuZXcgLWduYXR5ZCBzd2l0Y2ggKGNoZWNrIGRvcyBsaW5lIHRlcm1pbmF0b3IpCgoJKiBzd2l0Y2gtYy5hZGI6IFJlY29nbml6ZSBuZXcgLWduYXR5ZCBzd2l0Y2ggKGNoZWNrIGRvcyBsaW5lIHRlcm1pbmF0b3IpCglSZWNvZ25pemUgLWduYXR3Yi8tZ25hdHdCIHN3aXRjaGVzCglJbmNsdWRlIFdhcm5fT25fQmFkX0ZpeGVkX1ZhbHVlIGZvciAtZ25hdGcKCgkqIHVzYWdlLmFkYjoKCUFkZCBsaW5lIGZvciBuZXcgLWduYXR5ZCBzd2l0Y2ggKGNoZWNrIGRvcyBsaW5lIHRlcm1pbmF0b3IpCgoJKiB1c2FnZS5hZGI6IEFkZCBsaW5lcyBmb3IgLWduYXR3Yi8tZ25hdHdCCgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBlbnRyeSBmb3IgTk9DUkxGICgtZ25hdHlkKQoKCSogdm1zX2RhdGEuYWRzOiBbTk9fXUJBRF9GSVhFRF9WQUxVRVMgc3lub255bSBmb3IgLWduYXR3Yi8tZ25hdHdCCgoJKiBnbmF0X3Vnbi50ZXhpOiBGaXggb3ZlcmxvbmcgbGluZXMKCURvY3VtZW50IG5ldyAtZ25hdHlkIHN3aXRjaAoJRG9jdW1lbnQgbmV3IC1nbmF0d2IvLWduYXR3QiBzd2l0Y2hlcwoKMjAwNS0wMy0yOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNC5hZGIgKEhhc19VbmNvbnN0cmFpbmVkX1VVX0NvbXBvbmVudCk6IFVzZSB0aGUgYmFzZSB0eXBlIGluCglvcmRlciB0byByZXRyaWV2ZSB0aGUgY29tcG9uZW50IGxpc3Qgb2YgdGhlIHR5cGUsIGJlZm9yZSBleGFtaW5pbmcKCWluZGl2aWR1YWwgY29tcG9uZW50cy4KCgkqIHNlbV90eXBlLmFkYiAoQ292ZXJzKTogVHlwZXMgYXJlIGNvbXBhdGlibGUgaWYgb25lIGlzIHRoZSBiYXNlIHR5cGUKCW9mIHRoZSBvdGhlciwgZXZlbiB0aG91Z2ggdGhlaXIgYmFzZSB0eXBlcyBtaWdodCBkaWZmZXIgd2hlbiBwcml2YXRlCgl2aWV3cyBhcmUgaW52b2x2ZWQuCgoyMDA1LTAzLTI5ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZXhwX2Rpc3QuYWRiIChBZGRfUkFTVF9GZWF0dXJlcywgUG9seU9SQiB2ZXJzaW9uKTogU2V0IHRoZSBGcm9tX0FueSwKCVRvX0FueSBhbmQgVHlwZUNvZGUgVFNTcyBvbiBSQVMgdHlwZXMgZGlyZWN0bHkgdXNpbmcgU2V0X1RTUywgaW5zdGVhZAoJb2YgdXNpbmcgU2V0X1JlbmFtaW5nX1RTUy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIFRTUyBib2RpZXMgYXJlIG5vdAoJYW5hbHl6ZWQgaWYgZXhwYW5zaW9uIGlzIGRpc2FibGVkICh3aGljaCBjb3VsZCBvdGhlcndpc2UgY2F1c2Ugc3B1cmlvdXMKCWVycm9yIG1lc3NhZ2VzIGlmIGV4cGFuc2lvbiBoYXMgYmVlbiBkaXNhYmxlZCBkdWUgdG8gcHJldmlvdXMKCSh1bnJlbGF0ZWQpIGVycm9ycykuCgoJKiBzZW1fcHJhZy5hZGIgKEFuYWx5emVfUHJhZ21hLCBjYXNlIEFzeW5jaHJvbm91cyk6IElmIFJBUyBleHBhbnNpb24KCWlzIGRpc2FibGVkLCB0aGUgZW50aXR5IGRlbm90ZWQgYnkgdGhlIGFyZ3VtZW50IGlzIHRoZSBhY2Nlc3MgdHlwZQoJaXRzZWxmLCBub3QgYW4gdW5kZXJseWluZyByZWNvcmQgdHlwZSwgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBnbyBiYWNrCgl0byB0aGUgQ29ycmVzcG9uZGluZ19SZW1vdGVfVHlwZS4KCjIwMDUtMDMtMjkgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9pbnRyLmFkYiAoRXhwYW5kX0Rpc3BhdGNoaW5nX0NvbnN0cnVjdG9yX0NhbGwpOiBOZXcgcHJvY2VkdXJlIHRvCglleHBhbmQgYSBjYWxsIHRvIGFuIGluc3RhbmNlIG9mCglBZGEuVGFncy5HZW5lcmljX0Rpc3BhdGNoaW5nX0NvbnN0cnVjdG9yIGludG8gYSBkaXNwYXRjaGluZyBjYWxsIHRvIHRoZQoJQ29uc3RydWN0b3IgYWN0dWFsIG9mIHRoZSBpbnN0YW5jZS4gQSBjbGFzcy13aWRlIG1lbWJlcnNoaXAKCWNoZWNrIGlzIGFsc28gZ2VuZXJhdGVkLCB0byBlbnN1cmUgdGhhdCB0aGUgdGFnIHBhc3NlZCB0byB0aGUgaW5zdGFuY2UKCWRlbm90ZXMgYSB0eXBlIGluIHRoZSBjbGFzcy4KCShFeHBhbmRfSW50cmluc2ljX0NhbGwpOiBDYWxsIEV4cGFuZF9EaXNwYXRjaGluZ19Db25zdHJ1Y3RvciBpbiB0aGUgY2FzZQoJb2YgTmFtZV9HZW5lcmljX0Rpc3BhdGNoaW5nX0NvbnN0cnVjdG9yLgoKCSogTWFrZWZpbGUucnRsOiBBZGQgYS10Z2RpY28uYWRzIHRvIHRoZSBsaXN0IG9mIGxpYnJhcnkgdW5pdHMgKG5ldyBBZGEKCTA1IHVuaXQgZm9yIEFJLTI2MC0wMikuCgoJKiBhLXRnZGljby5hZHM6IE5ldyBmaWxlLgoKCSogaW1wdW5pdC5hZGIgKE5vbl9JbXBfRmlsZV9OYW1lc18wNSk6IEFkZCBlbnRyeSAiYS10Z2RpY28iIGZvciBuZXcKCXByZWRlZmluZWQgQWRhIDA1IGdlbmVyaWMgdW5pdCBBZGEuVGFncy5HZW5lcmljX0Rpc3BhdGNoaW5nX0NvbnN0cnVjdG9yLgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYiAoUHJlc2V0X05hbWVzKTogQWRkIGVudHJ5IGZvcgoJR2VuZXJpY19EaXNwYXRjaGluZ19Db25zdHJ1Y3Rvci4KCglQUiBhZGEvMjAzMDAKCSogc2VtX2NoOC5hZGIgKEZpbmRfRGlyZWN0X05hbWUpOiBHbyB0byByb290IHR5cGUgZm9yIGNoZWNrIG9mCgljaGFyYWN0ZXIgdHlwZSBjYXNlcy4KCShBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBBZGQgc3BlY2lhbCBoYW5kbGluZyBmb3IKCXRoZSBjYXNlIG9mIHJlbmFtaW5nIG9mIHN0cmVhbSBhdHRyaWJ1dGVzIHdoZW4gdGhlIHJlbmFtaW5nIGRlbm90ZXMgYQoJZ2VuZXJpYyBmb3JtYWwgc3VicHJvZ3JhbSBhc3NvY2lhdGlvbiBmb3IgYW4gYWJzdHJhY3QgZm9ybWFsIHN1YnByb2dyYW0uCglDaGVjayB0aGF0IHRoZSBhdHRyaWJ1dGUgaXMgYSBwcmltaXRpdmUgc3RyZWFtIGF0dHJpYnV0ZSAoYW5kIG5vdAoJYSBjbGFzcy13aWRlIHN0cmVhbSBhdHRyaWJ1dGUpIGFuZCB0aGVuIHJld3JpdGUgdGhlIGF0dHJpYnV0ZSBuYW1lCglhcyB0aGUgbmFtZSBvZiB0aGUgYXBwcm9wcmlhdGUgY29tcGlsZXItZ2VuZXJhdGVkIHN0cmVhbSBwcmltaXRpdmUuCgoyMDA1LTAzLTI5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF91dGlsLmFkYiAoUmVtb3ZlX1NpZGVfRWZmZWN0cyk6IFByb3Blcmx5IHByb3BhZ2F0ZSBhcmd1bWVudHMgdG8KCXJlY3Vyc2l2ZSBjYWxscy4KCShJc19Qb3NzaWJseV9VbmFsaWduZWRfT2JqZWN0KTogQ29ycmVjdCB0eXBvIHRoYXQKCXJlc3VsdGVkIGluIGluYWNjdXJhdGUgcmVzdWx0IGZvciB1bmFsaWduZWQgc2NhbGFycyB3aXRoaW4gcmVjb3Jkcy4KCjIwMDUtMDMtMjkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGZyZWV6ZS5hZGIgKEZyZWV6ZV9SZWNvcmRfVHlwZSk6IElmIHRoZSB0eXBlIG9mIHRoZSBjb21wb25lbnQgaXMgYW4KCWl0eXBlIHdob3NlIHBhcmVudCBpcyBjb250cm9sbGVkIGFuZCBub3QgeWV0IGZyb3plbiwgZG8gbm90IGNyZWF0ZSBhCglmcmVlemUgbm9kZSBmb3IgdGhlIGl0eXBlIGlmIGV4cGFuc2lvbiBpcyBkaXNhYmxlZC4KCjIwMDUtMDMtMjkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZS5hZGIgKEduYXRtYWtlKTogRG9uJ3QgZmFpbCBpZiB0aGUgbWFpbiBwcm9qZWN0IGZpbGUgaXMgZGVjbGFyZWQKCWFzIGhhdmluZyBubyBBZGEgc291cmNlcy4gRG8gbm90IGRpc3BsYXkgbWVzc2FnZSAibm8gc291cmNlcyB0bwoJY29tcGlsZSIgaW4gcXVpZXQgb3V0cHV0LgoKMjAwNS0wMy0yOSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluIFtWTVNdIChFWFRSQV9HTkFUVE9PTFMpOiBBZGQgdm1zX2hlbHAgYW5kIGduYXQuaGxwIGFzCglleHRyYSB0b29scy4KCjIwMDUtMDMtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoMTIuYWRiIChQX0dlbmVyaWMpOiBHaXZlIGJldHRlciBtc2cgZm9yIGlsbGVnYWwgcHJpdmF0ZSBnZW5lcmljCgljaGlsZC4KCjIwMDUtMDMtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcGFyLWNoMy5hZGIgKFBfVHlwZV9EZWNsYXJhdGlvbik6IEZpeCBiYWQgZXJyb3IgcmVjb3ZlcnkgYWZ0ZXIKCW1pc3NpbmcgVFlQRSBJbXByb3ZlIHRoZSBlcnJvciBtZXNzYWdlIGdlbmVyYXRlZCB3aGVuIGNvbXBpbGluZyBhCglsaW1pdGVkIGludGVyZmFjZSBpbiBBZGE4MyBvciBBZGE5NSBtb2RlLgoKMjAwNS0wMy0yOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBwYXItY2g0LmFkYiAoUF9OYW1lKTogV2hlbiBhIGJhZCBhdHRyaWJ1dGUgaXMgcmV0dXJuZWQsIHJldHVybiBlcnJvciwKCXJhdGhlciB0aGFuIHByb2NlZWQgYWhlYWQgdXNpbmcgYSBqdW5rIGF0dHJpYnV0ZSBuYW1lLgoKMjAwNS0wMy0yOSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBwcmouYWRzLCBwcmouYWRiOiAoUHJvamVjdF9EYXRhKTogQWRkIG5ldyBjb21wb25lbnQgRGlzcGxheV9OYW1lCgoJKiBwcmotcGFydC5hZGIgKFBhcnNlX1NpbmdsZV9Qcm9qZWN0KTogU2V0IHRoZSBsb2NhdGlvbiBvZiBhIHByb2plY3QKCW9uIGl0cyBkZWZpbmluZyBpZGVudGlmaWVyLCByYXRoZXIgdGhhbiBvbiB0aGUgcmVzZXJ2ZWQgd29yZCAicHJvamVjdCIuCgoJKiBwcmotcHJvYy5hZGIgKEV4cHJlc3Npb24pOiBBZGFwdCB0byB0aGUgZmFjdCB0aGF0IGRlZmF1bHQgb2YgZXh0ZXJuYWwKCXJlZmVyZW5jZXMgbWF5IGJlIHN0cmluZyBleHByZXNzaW9ucywgbm90IGFsd2F5cyBsaXRlcmFsIHN0cmluZ3MuCgkoUmVjdXJzaXZlX1Byb2Nlc3MpOiBTZXQgRGlzcGxheV9OYW1lIGVxdWFsIHRvIE5hbWUKCXdoZW4gTG9jYXRpb24gaXMgTm9fTG9jYXRpb24sIHRoYXQgaXMgd2hlbiB0aGVyZSBpcyBubyBhY3R1YWwgZmlsZS4KCUdldCB0aGUgRGlzcGxheV9OYW1lIG9mIHRoZSBwcm9qZWN0IGZyb20gdGhlIHNvdXJjZSwgd2hlbiBpdCBpcyBub3QgYQoJdmlydHVhbCBwcm9qZWN0LgoJKFByb2Nlc3MpOiBVc2UgdGhlIERpc3BsYXlfTmFtZSBpbiBlcnJvciBtZXNzYWdlcwoKCSogcHJqLXN0cnQuYWRiIChFeHRlcm5hbF9SZWZlcmVuY2UpOiBBbGxvdyBkZWZhdWx0IHRvIGJlIHN0cmluZwoJZXhwcmVzc2lvbnMsIG5vdCBvbmx5IGxpdGVyYWwgc3RyaW5ncy4KCjIwMDUtMDMtMjkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcHJqLW5tc2MuYWRiIChDaGVja19TdGFuZF9BbG9uZV9MaWJyYXJ5KTogRG8gbm90IGZvcmJpZCB0aGUgc3ltYm9sCglmaWxlIGFuZCB0aGUgcmVmZXJlbmNlIHN5bWJvbCBmaWxlIHRvIGJlIHRoZSBzYW1lIGZpbGUuCgoyMDA1LTAzLTI5ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogc2VtX2NhdC5hZGIgKFZhbGlkYXRlX1JlbW90ZV9UeXBlc19UeXBlX0NvbnZlcnNpb24pOiBQZXJmb3JtIGNoZWNrIHRvCglmb3JiaWQgY29udmVyc2lvbiBvZiBhIGxvY2FsIGFjY2Vzcy10by1zdWJwcm9ncmFtIHR5cGUgdG8gYSByZW1vdGUgb25lLgoKCSogc2VtX3V0aWwuYWRiIChXcm9uZ19UeXBlKTogRm9yIGEgcmVjb3JkIHR5cGUgdGhhdCBpcyB0aGUgZXhwYW5kZWQKCWVxdWl2YWxlbnQgdHlwZSBmb3IgYSByZW1vdGUgYWNjZXNzLXRvLXN1YnByb2dyYW0gdHlwZSwgZ28gYmFjayB0byB0aGUKCW9yaWdpbmFsIFJBUyBlbnRpdHkgd2hlbiBkaXNwbGF5aW5nIGFuIGVycm9yIG1lc3NhZ2UsIHNvIHRoZSBjYXNpbmcgaXMKCXRoZSBvcmlnaW5hbCBzb3VyY2UgY2FzaW5nLgoKMjAwNS0wMy0yOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMS5hZGIgKEFuYWx5emVfUmFpc2VfU3RhdGVtZW50KTogQ2hhbmdlIG1lc3NhZ2UgZm9yIHdhcm5pbmcKCW9uIHBhcmFtIHVwZGF0ZS4KCjIwMDUtMDMtMjkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IERvIG5vdCBnZW5lcmF0ZSBhbiBhY3R1YWwKCXN1YnR5cGUgaWYgY29kZSBpcyBiZWluZyBwcmUtYW5hbHl6ZWQsIHRvIHByZXZlbnQgdW4tZXhwYW5kZWQKCXJlZmVyZW5jZXMgdG8gcHJvdGVjdGVkIGZvcm1hbHMsIGFtb25nIG90aGVycy4KCShBbmFseXplX0V4cGxpY2l0X0RlcmVmZXJlbmNlKTogSWYgdGhlIG92ZXJsb2FkZWQgcHJlZml4IGluY2x1ZGVzIHNvbWUKCWludGVycHJldGF0aW9uIHRoYXQgY2FuIGJlIGEgY2FsbCwgaW5jbHVkZSB0aGUgcmVzdWx0IG9mIHRoZSBjYWxsIGFzIGEKCXBvc3NpYmxlIGludGVycHJldGF0aW9uIG9mIHRoZSBkZXJlZmVyZW5jZS4KCgkqIHNlbV9jaDUuYWRiIChQcm9jZXNzX0JvdW5kcyk6IERldGVybWluZSB0eXBlIG9mIHJhbmdlIGJ5CglwcmUtYW5hbHl6aW5nIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgcmFuZ2UsIGFuZCB0aGVuIGFuYWx5emUgdGhlIHJhbmdlCgl3aXRoIHRoZSBleHBlY3RlZCB0eXBlLgoKCSogc2VtX3Jlcy5hZGIgKENoZWNrX1BhcmFtZXRlcmxlc3NfQ2FsbCk6IEZvciBhbiBleHBsaWNpdCBkZXJlZmVyZW5jZQoJd2l0aCBhbiBvdmVybG9hZGVkIHByZWZpeCB3aGVyZSBub3QgYWxsIGludGVycHJldGF0aW9ucyB5aWVsZCBhbgoJYWNjZXNzIHRvIHN1YnByb2dyYW0sIGRvIG5vdCByZXdyaXRlIG5vZGUgYXMgYSBjYWxsLgoJKFJlc29sdmVfRXhwbGljaXRfRGVyZWZlcmVuY2UpOiBSZWNvZ25pemUgdGhlIHByZXZpb3VzIGNhc2UgYW5kIHJld3JpdGUKCXRoZSBub2RlIGFzIGEgY2FsbCBvbmNlIHRoZSBjb250ZXh0IGlkZW50aWZpZXMgdGhlIGludGVycHJldGF0aW9uIG9mCgl0aGUgcHJlZml4IHdob3NlIGNhbGwgeWllbGRzIHRoZSBjb250ZXh0IHR5cGUuCgkoVmFsaWRfQ29udmVyc2lvbik6IEZvciB0aGUgY2FzZSBvZiBhIGNvbnZlcnNpb24gYmV0d2VlbgoJbG9jYWwgYWNjZXNzLXRvLXN1YnByb2dyYW0gdHlwZXMsIGNoZWNrIHN1YnR5cGUgY29uZm9ybWFuY2UgdXNpbmcKCUNoZWNrX1N1YnR5cGVfQ29uZm9ybWFudCBpbnN0ZWFkIG9mIFN1YnR5cGVfQ29uZm9ybWFudCwgdG8gaGF2ZSBhIG1vcmUKCWRldGFpbGVkIGVycm9yIG1lc3NhZ2UuCgoyMDA1LTAzLTI5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g2LmFkYiAoU2V0X0Zvcm1hbF9Nb2RlKTogSWYgdGhlIHN1YnR5cGUgaGFzIGEgbm9uX251bGwKCWluZGljYXRvciwgaW5kaWNhdGUgdGhhdCB0aGUgZm9ybWFsIGNhbiBuZXZlciBiZSBudWxsLgoJKFByb2Nlc3NfRm9ybWFscyk6IElmIGEgZm9ybWFsIGhhcyBhIG5vbl9udWxsIGluZGljYXRvciwgaW5zZXJ0IHRoZQoJcmVzdWx0aW5nIHN1YnR5cGUgaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSBlbmNsb3Npbmcgc3VicHJvZ3JhbSBkZWNsLAoJYW5kIG5vdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjb3JyZXNwb25kaW5nIGRlY2xhcmF0aXZlIHBhcnQsIHRvCglwcmV2ZW50IGFjY2VzcyBiZWZvcmUgZWxhYm9yYXRpb24gKEFkYTIwMDUpLgoKMjAwNS0wMy0yOSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCglQUiBhZGEvMTk5NTYKCSogdXRpbHMuYyAoZmluaXNoX3JlY29yZF90eXBlKTogVXNlIHZhcmlhYmxlX3NpemUgd2hlbiBzZXR0aW5nIHNpemVzLgoKMjAwNS0wMy0yOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiB4dHJlZXBycy5hZGIsIHhubWFrZS5hZGI6IFVzZSBTdHJlYW1fSU8gaW5zdGVhZCBvZiBUZXh0X0lPIHRvCglndWFyYW50ZWUgVW5peCBzdHlsZSBsaW5lIHRlcm1pbmF0b3JzIGZvciB0aGUgb3V0cHV0IGZpbGVzLCBldmVuIHdoZW4KCXJ1bm5pbmcgb24gd2luZG93cy4KCjIwMDUtMDMtMjkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS1kaXJlY3QuYWRzLCBhLWRpcmVjdC5hZGIgKFN0YXJ0X1NlYXJjaCk6IEZyZWUgYWxsb2NhdGVkIHNlYXJjaAoJYnVmZmVyIGlmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQuCgoyMDA1LTAzLTI5ICBFZCBGYWxpcyAgPGZhbGlzQGFkYWNvcmUuY29tPgoKCSogY2lvLmM6IFVuZGVmaW5lIHB1dGNoYXIgYW5kIGdldGNoYXIgZm9yIFZUSFJFQURTOiBpbmNvbXBhdGlibGUgd2l0aAoJVnhXb3JrcyA2NTMgMS40CgoyMDA1LTAzLTI5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHNlbV91dGlsLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgkqIGduYXRfcm0udGV4aTogTWlub3IgZWRpdGluZy4KCjIwMDUtMDMtMjkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPEVfVmFyaWFibGU+OiBSZXdvcmsgY29tbWVudC4KCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pIDxOX0lkZW50aWZpZXI+OiBVc2UgY29ycmVjdCBwcmVkaWNhdGVzLgoKMjAwNS0wMy0yNCAgQWFyb24gVy4gTGFGcmFtYm9pc2UgIDxhYXJvbmF2YXk2MkBhYXJvbndsLmNvbT4KCgkqIGFkYWludC5jIChfX2duYXRfcG9ydGFibGVfc3Bhd24pOiBBZGp1c3QgY2FzdC4KCjIwMDUtMDMtMjMgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogbWlzYy5jIChMQU5HX0hPT0tTX1RSVVRIVkFMVUVfQ09OVkVSU0lPTik6IFJlbW92ZS4KCjIwMDUtMDMtMTcgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5oLCBhZGFpbnQuYyAoX19nbmF0X3dhaXRwaWQpOiBNb3ZlZCB0byBleHBlY3QuYyB3aGVyZSBpdCBpcwoJdXNlZC4KCgkqIGV4cGVjdC5jIChfX2duYXRfd2FpdHBpZCk6IE1vdmVkIGhlcmUgZnJvbSBhZGFpbnQuYy4KCVJlaW1wbGVtZW50IHVuZGVyIFdpbjMyIHVzaW5nIFdpbjMyIEFQSS4KCgkoX19nbmF0X2tpbGwpIFtXaW4zMl06IFByb3Blcmx5IGNsb3NlIHRoZSBwcm9jZXNzIGhhbmRsZSBiZWZvcmUgbGVhdmluZwoJdGhpcyByb3V0aW5lLgoKMjAwNS0wMy0xNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGFkYS10cmVlLmg6IChERUNMX1JFTkFNSU5HX0dMT0JBTF9QKTogTmV3IHByZWRpY2F0ZS4KCShERUNMX1JFTkFNRURfT0JKRUNUKTogTmV3IGFjY2Vzc29yIG1hY3JvLgoJKFNFVF9ERUNMX1JFTkFNRURfT0JKRUNUKTogTmV3IHNldHRlciBtYWNyby4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KSA8RV9WYXJpYWJsZT46IFN0YWJpbGl6ZSB0aGUgcmVuYW1lZAoJb2JqZWN0IGluIGFsbCBjYXNlcy4gIEF0dGFjaCB0aGUgcmVuYW1lZCBvYmplY3QgdG8gdGhlIFZBUl9ERUNMLgoJKGduYXRfdG9fZ251X2ZpZWxkKTogRG8gbm90IGxpZnQgdGhlIHJlY29yZCB3cmFwcGVyIGlmIHRoZSBzaXplIG9mIHRoZQoJZmllbGQgaXMgbm90IHByZXNjcmliZWQuCgoJKiBtaXNjLmMgKGduYXRfaGFuZGxlX29wdGlvbik6IEhhbmRsZSAtZ25hdE8gc2VwYXJhdGVseS4KCShnbmF0X3ByaW50X2RlY2wpIDxWQVJfREVDTD46IE5ldyBjYXNlLgoJUHJpbnQgdGhlIERFQ0xfUkVOQU1FRF9PQkpFQ1Qgbm9kZS4KCgkqIGxhbmcub3B0OiAgRGVjbGFyZSBzZXBhcmF0ZSAtZ25hdE8gb3B0aW9uLgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pIDxOX0lkZW50aWZpZXI+OiBJZiB0aGUgb2JqZWN0IGlzIGEgcmVuYW1pbmcKCXBvaW50ZXIsIHJlcGxhY2UgaXQgd2l0aCB0aGUgcmVuYW1lZCBvYmplY3QuCgk8Tl9WYWxpZGF0ZV9VbmNoZWNrZWRfQ29udmVyc2lvbj46IFdhcm4gZm9yIGEgY29udmVyc2lvbiB0byBhIGZhdAoJcG9pbnRlciB0eXBlIGlmIHRoZSBzb3VyY2UgaXMgbm90IGEgZmF0IHBvaW50ZXIgdHlwZSB3aG9zZSB1bmRlcmx5aW5nCglhcnJheSBoYXMgdGhlIHNhbWUgbm9uLXplcm8gYWxpYXMgc2V0IGFzIHRoYXQgb2YgdGhlIGRlc3RpbmF0aW9uIGFycmF5LgoKMjAwNS0wMy0xNyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogYS10YWdzLmFkcywgYS10YWdzLmFkYiAoR2V0X0V4cGFuZGVkX05hbWUpOiBSZW1vdmVkLgoJKEdldF9Jbmhlcml0YW5jZV9EZXB0aCk6IFJlbW92ZWQuCgkoU2V0X0luaGVyaXRhbmNlX0RlcHRoKTogUmVtb3ZlZC4KCgkqIHJ0c2ZpbmQuYWRzLCBleHBfZGlzcC5hZHMsIGV4cF9kaXNwLmFkYjogUmVtb3ZlIHN1cHBvcnQgdG8gY2FsbCB0aGUKCXN1YnByb2dyYW0gR2V0X0V4cGFuZGVkX05hbWUgYmVjYXVzZSBpdCBpcyBub3QgcmVmZXJlbmNlZCBieSB0aGUKCWZyb250ZW5kLgoKCSogaS1jcHAuYWRzLCBpLWNwcC5hZGIgKENQUF9HZXRfRXhwYW5kZWRfTmFtZSk6IFJlbW92ZWQuCgkoQ1BQX0dldF9Jbmhlcml0YW5jZV9EZXB0aCk6IFJlbW92ZWQuCgkoQ1BQX1NldF9Jbmhlcml0YW5jZV9EZXB0aCk6IFJlbW92ZWQuCgoJKiB0YnVpbGQuYWRzLCB0YnVpbGQuYWRiIChNYWtlX0RUX0NvbXBvbmVudCk6IFJlbW92ZWQuCgoyMDA1LTAzLTE3ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGNoZWNrcy5hZGIgKEFwcGx5X0FycmF5X1NpemVfQ2hlY2spOiBDb21wbGV0ZWx5IHJlbW92ZSB0aGlzIGZvciBHQ0MKCTMsIHNpbmNlIHdlIG5vdyBleHBlY3QgR0NDIDMgdG8gZG8gYWxsIHRoZSB3b3JrLgoKMjAwNS0wMy0xNyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoKCSogZWluZm8uYWRiIChGaXJzdF9Qcml2YXRlX0VudGl0eSwgU2V0X0ZpcnN0X1ByaXZhdGVfRW50aXR5KTogQWRkaXRpb24KCW9mIG9uZSBiYXJyaWVyIHRvIGF2b2lkIHdyb25nIHVzYWdlIG9mIHRoaXMgYXR0cmlidXRlLgoKCSogc2VtX2NoMTIuYWRiIChGb3JtYWxfRW50aXR5KTogRml4IGVycm9uZW91cyB1c2FnZSBvZiB0aGUgYXR0cmlidXRlCglGaXJzdF9Qcml2YXRlX0VudGl0eS4KCgkqIHNlbV9jaDcuYWRiIChJbnN0YWxsX1Zpc2libGVfRGVjbGFyYXRpb25zKTogQWRkIGEgYmFycmllciB0byBwcm90ZWN0Cgl0aGUgc3VicHJvZ3JhbSBhZ2FpbnN0IHdyb25nIHVzYWdlLgoJQWRhcHQgdGhlIGNvZGUgdG8gdHJhdmVyc2UgdGhlIGVudGl0aWVzIGluIHRoZQoJc2NvcGUgb2YgYSByZWNvcmRfdHlwZSBiZWNhdXNlIGluIGFkZGl0aW9uIHRvIGl0cyB1c2FnZSByZWdhcmRpbmcKCXBhY2thZ2VzLCB0aGlzIHN1YnByb2dyYW0gaXMgYWxzbyBjYWxsZWQgYnkgRXhwYW5kX05fRnJlZXplX0VudGl0eQoJdG8gaW5zdGFsbCB0aGUgdmlzaWJsZSBkZWNsYXJhdGlvbnMgb2YgdGhlIGVuY2xvc2luZyBzY29wZSBvZiBhCglyZWNvcmRfdHlwZV93aXRoX3ByaXZhdGUgdG8gZXN0YWJsaXNoIHRoZSBwcm9wZXIgdmlzaWJpbGl0eSBiZWZvcmUKCWZyZWV6aW5nIHRoZSBlbnRpdHkgYW5kIHJlbGF0ZWQgc3VicHJvZ3JhbXMuCgoyMDA1LTAzLTE3ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2gyLmFkYiAoSW5fQXNzaWdubWVudF9Db250ZXh0KTogUmVjb2duaXplIHNsaWNlIGFzc2lnbm1lbnRzIHRvCgllbnRyeSBmb3JtYWxzLgoKMjAwNS0wMy0xNyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDMuYWRiIChDaGVja19BdHRyKTogTmV3IHN1YnByb2dyYW0uCgkoQ2hlY2tfU3RyZWFtX0F0dHJpYnV0ZSk6IE1vdmUgdGhlIGNvZGUgZm9yIDEzLjEzLjIoOS8xKSBlbmZvcmNlbWVudAoJaW50byBhIG5ldyBDaGVja19BdHRyIHN1YnByb2dyYW0sIGluIG9yZGVyIHRvIHByb3ZpZGUgYSBtb3JlCglleHBsYW5hdG9yeSBlcnJvciBtZXNzYWdlIChpbmNsdWRpbmcgdGhlIG5hbWUgb2YgdGhlIG1pc3NpbmcgYXR0cmlidXRlKS4KCShTdHJlYW1fT3BlcmF0aW9uX09LKTogUmVuYW1lZCBmcm9tIFN0cmVhbV9PcGVyYXRpb25zX09LLiBUaGlzCglzdWJwcm9ncmFtIGRldGVybWluZXMgd2hldGhlciBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZXhpc3RzIGZvciBhCglnaXZlbiBzdHJlYW0gYXR0cmlidXRlLgoJKE1ha2VfUHJlZGVmaW5lZF9QcmltaXRpdmVfU3BlY3MsIFByZWRlZmluZWRfUHJpbWl0aXZlX0JvZGllcyk6CglEZXRlcm1pbmUgd2hldGhlciB0byBnZW5lcmF0ZSBhIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZm9yIGVhY2ggc3RyZWFtCglhdHRyaWJ1dGUgc2VwYXJhdGVseSwgYXMgdGhpcyBkZXBlbmRzIG9uIHRoZSBzcGVjaWZpYyBhdHRyaWJ1dGUuCgoJKiBleHBfc3RybS5hZGIgKE1ha2VfRmllbGRfQXR0cmlidXRlKTogRm9yIHRoZSBjYXNlIG9mIGFuIGlsbGVnYWwKCWxpbWl0ZWQgZXh0ZW5zaW9uIHdoZXJlIGEgc3RyZWFtIGF0dHJpYnV0ZSBpcyBtaXNzaW5nIGZvciBhIGxpbWl0ZWQKCWNvbXBvbmVudCAod2hpY2ggd2lsbCBoYXZlIGJlZW4gZmxhZ2dlZCBpbiBFeHBfQ2gzLlNlbV9BdHRyKSwgZG8gbm90CglnZW5lcmF0ZSBhIGJvZ3VzIHJlZmVyZW5jZSB0byB0aGUgbWlzc2luZyBhdHRyaWJ1dGUgdG8gcHJldmVudAoJY2FzY2FkZWQgZXJyb3JzLiBJbnN0ZWFkLCBnZW5lcmF0ZSBhIG51bGwgc3RhdGVtZW50LgoKCSogc2VtX2F0dHIuYWRiIChDaGVja19TdHJlYW1fQXR0cmlidXRlKTogQSBzdHJlYW0gYXR0cmlidXRlIGlzCglhdmFpbGFibGUgZm9yIGEgbGltaXRlZCB0eXBlIGlmIGl0IGhhcyBiZWVuIHNwZWNpZmllZCBmb3IgYW4gYW5jZXN0b3IKCW9mIHRoZSB0eXBlLgoKMjAwNS0wMy0xNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9JbmxpbmVkX0NhbGwpOiBoYW5kbGUgdGhlIGNhc2Ugd2hlbiB0aGUgcmVuYW1lZAoJZW50aXR5IGlzIGFuIG9wZXJhdG9yLgoKMjAwNS0wMy0xNyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXN0LmFkYiAoR2V0X1BDU19OYW1lKTogTW92ZSBmcm9tIEV4cF9EaXN0IGJvZHkgdG8gU2VtX0Rpc3QKCXNwZWMsIHRvIG1ha2UgdGhpcyBwcmVkaWNhdGUgYXZhaWxhYmxlIHRvIG90aGVyIHVuaXRzLgoKCSogcnRzZmluZC5hZGIgKENoZWNrX1JQQyk6IFVzZSBTZW1fRGlzdC5HZXRfUENTX05hbWUgaW5zdGVhZCBvZgoJcmVpbXBsZW1lbnRpbmcgaXQuCgoJKiBzZW1fY2g4LmFkYjogRGlzYWJsZSBleHBhbnNpb24gb2YgcmVtb3RlIGFjY2Vzcy10by1zdWJwcm9ncmFtIHR5cGVzCgl3aGVuIG5vIGRpc3RyaWJ1dGlvbiBydW50aW1lIGxpYnJhcnkgaXMgYXZhaWxhYmxlLgoKCSogc2VtX3Jlcy5hZGIsIHNlbV9kaXN0LmFkYjogRGlzYWJsZSBleHBhbnNpb24gb2YgcmVtb3RlCglhY2Nlc3MtdG8tc3VicHJvZ3JhbSB0eXBlcyB3aGVuIG5vIGRpc3RyaWJ1dGlvbiBydW50aW1lIGxpYnJhcnkgaXMKCWF2YWlsYWJsZS4KCShHZXRfUENTX05hbWUpOiBNb3ZlIGZyb20gRXhwX0Rpc3QgYm9keSB0byBTZW1fRGlzdCBzcGVjLCB0byBtYWtlIHRoaXMKCXByZWRpY2F0ZSBhdmFpbGFibGUgdG8gb3RoZXIgdW5pdHMuCgoJKiBzZW1fZGlzdC5hZHMgKEdldF9QQ1NfTmFtZSk6IE1vdmUgZnJvbSBFeHBfRGlzdCBib2R5IHRvIFNlbV9EaXN0CglzcGVjLCB0byBtYWtlIHRoaXMgcHJlZGljYXRlIGF2YWlsYWJsZSB0byBvdGhlciB1bml0cy4KCjIwMDUtMDMtMTcgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZS5hZGIgKEluc2VydF9Qcm9qZWN0X1NvdXJjZXMpOiBNYWtlIHN1cmUgdGhlIFEgaXMgYWx3YXlzCglpbml0aWFsaXplZC4KCgkqIHByai1ubXNjLmFkYiAoQ2hlY2tfQWRhX05hbWluZ19TY2hlbWVfVmFsaWRpdHkpOiBDaGVjayBOYW1pbmcgYWdhaW5zdAoJdGhlIGRlZmF1bHQgZm9yIHRoZSB0cmVlLCBub3QgdGhlIGdsb2JhbCBkZWZhdWx0IG5hbWluZy4KCgkqIHByai1wcm9jLmFkYiAoUmVjdXJzaXZlX1Byb2Nlc3MpOiBObyBuZWVkIHRvIHB1dCB0aGUgZGVmYXVsdCBuYW1pbmcKCWluIHRoZSBwcm9qZWN0IGRhdGEsIGl0J3MgYWxyZWFkeSB0aGVyZS4KCjIwMDUtMDMtMTcgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBNYWtlZmlsZS5pbjogKGlhNjQtaHAtKnZtcyopOiBVc2Ugcy1jcnRsLXZtczY0LmFkcy4KCgkqIDV4Y3J0bC5hZHM6IFJlbmFtZWQgdG8uLi4KCSogcy1jcnRsLXZtczY0LmFkczogLi4udGhpcyBuZXcgZmlsZQoKMjAwNS0wMy0xNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE5NTE5CgkqIG5hbWV0LmFkYiAoQ29weV9PbmVfQ2hhcmFjdGVyKTogU2V0IHByb3BlciB3aWRlIGNoYXJhY3RlciBlbmNvZGluZwoJZm9yIHVwcGVyIGhhbGYgY2hhcmFjdGVyIGlmIHdlIGhhdmUgdXBwZXIgaGFsZiBlbmNvZGluZy4KCjIwMDUtMDMtMTcgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcGFyLmFkYiAoUGFyKTogSW1wcm92ZWQgbXNnIGZvciBhdHRlbXB0IHRvIHJlY29tcGlsZSBwcmVkZWZpbmVkIHVuaXQKCjIwMDUtMDMtMTcgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMy5hZGIgKE5ld19TdHJlYW1fRnVuY3Rpb24sIE5ld19TdHJlYW1fUHJvY2VkdXJlKTogRm9yIGEKCXRhZ2dlZCBsaW1pdGVkIHR5cGUsIHRoZSBUU1MgaXMgYSBuZXdseSBidWlsdCByZW5hbWluZyBkZWNsYXJhdGlvbjoKCWluc2VydCBpdCB1c2luZyBTZXRfVFNTLCBub3QgQ29weV9UU1MuCgoyMDA1LTAzLTE3ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g0LmFkYiAoVHJ5X1ByaW1pdGl2ZV9PcGVyYXRpb24sIENsYXNzX1dpZGVfT3BlcmF0aW9uIGFuZAoJVHJ5X09iamVjdF9PcGVyYXRpb24pOiBBbmFseXplIHRoZSBvYmplY3QgdGhhdCBpcyBhY2Nlc3NpYmxlCgl0aHJvdWdoIHRoZSBwcmVmaXggb2YgdGhlIHN1YnByb2dyYW0gY2FsbCBiZWZvcmUgd2UgYXBwbHkKCXRoZSB0cmFuc2Zvcm1hdGlvbiBvZiB0aGUgb2JqZWN0LW9wZXJhdGlvbiBub3RhdGlvbi4KCjIwMDUtMDMtMTcgIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBzLXRhcHJvYi5hZGIgKEluaXRpYWxpemVfUHJvdGVjdGlvbik6IEluaXRpYWxpemUgdGhlIHByb3RlY3RlZAoJb2JqZWN0J3Mgb3duZXIgdG8gTnVsbF9UYXNrLgoJKExvY2spOiBJZiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGluIGVmZmVjdCBhbmQgdGhlIGNhbGxlciBvZiB0aGlzCglwcm9jZWR1cmUgaXMgYWxyZWFkeSB0aGUgcHJvdGVjdGVkIG9iamVjdCdzIG93bmVyIHRoZW4gUHJvZ3JhbV9FcnJvcgoJaXMgcmFpc2VkLiBJbiBhZGRpdGlvbiB0aGUgcHJvdGVjdGVkIG9iamVjdCdzIG93bmVyIGlzIHVwZGF0ZWQuCgkoTG9ja19SZWFkX09ubHkpOiBJZiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGluIGVmZmVjdCBhbmQgdGhlIGNhbGxlcgoJb2YgdGhpcyBwcm9jZWR1cmUgaXMgYWxyZWFkeSB0aGUgcHJvdGVjdGVkIG9iamVjdCdzIG93bmVyIHRoZW4KCVByb2dyYW1fRXJyb3IgaXMgcmFpc2VkLgoJSW4gYWRkaXRpb24gdGhlIHByb3RlY3RlZCBvYmplY3QncyBvd25lciBpcyB1cGRhdGVkLgoJKFVubG9jayk6IFJlbW92ZSB0aGUgb3duZXJzaGlwIG9mIHRoZSBwcm90ZWN0ZWQgb2JqZWN0LgoKCSogcy10YXByb2IuYWRzIChQcm90ZWN0aW9uKTogQWRkIHRoZSBmaWVsZCBPd25lciwgdXNlZCB0byBzdG9yZSB0aGUKCXByb3RlY3RlZCBvYmplY3QncyBvd25lci4KCVRoaXMgY29tcG9uZW50IGlzIG5lZWRlZCBmb3IgZGV0ZWN0aW5nIG9uZSB0eXBlIG9mIHBvdGVudGlhbGx5IGJsb2NraW5nCglvcGVyYXRpb25zIChleHRlcm5hbCBjYWxscyBvbiBhIHByb3RlY3RlZCBzdWJwcm9ncmFtIHdpdGggdGhlIHNhbWUKCXRhcmdldCBvYmplY3QgYXMgdGhhdCBvZiB0aGUgcHJvdGVjdGVkIGFjdGlvbikuIERvY3VtZW50IHRoZSByZXN0IG9mCgl0aGUgY29tcG9uZW50cy4KCgkqIHMtdHBvc2VuLmFkYiwgcy10cG9iZW4uYWRiIChJbml0aWFsaXplX1Byb3RlY3Rpb25fRW50cmllcyk6CglJbml0aWFsaXplIHRoZSBwcm90ZWN0ZWQgb2JqZWN0J3Mgb3duZXIgdG8gTnVsbF9UYXNrLgoJKExvY2tfUmVhZF9Pbmx5X0VudHJpZXMpOiBJZiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGluIGVmZmVjdCBhbmQgdGhlCgljYWxsZXIgb2YgdGhpcyBwcm9jZWR1cmUgaXMgYWxyZWFkeSB0aGUgcHJvdGVjdGVkIG9iamVjdCdzIG93bmVyIHRoZW4KCVByb2dyYW1fRXJyb3IgaXMgcmFpc2VkLgoJRG8gbm90IHJhaXNlIFByb2dyYW1fRXJyb3Igd2hlbiB0aGlzIHByb2NlZHVyZSBpcyBjYWxsZWQgZnJvbSBhCglwcm90ZWN0ZWQgYWN0aW9uLgoJKFVubG9ja19FbnRyaWVzKTogUmVtb3ZlIHRoZSBvd25lcnNoaXAgb2YgdGhlIHByb3RlY3RlZCBvYmplY3QuCgkoTG9ja19FbnRyaWVzKTogSWYgcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBpbiBlZmZlY3QgYW5kIHRoZSBjYWxsZXIKCW9mIHRoaXMgcHJvY2VkdXJlIGlzIGFscmVhZHkgdGhlIHByb3RlY3RlZCBvYmplY3QncyBvd25lciB0aGVuCglQcm9ncmFtX0Vycm9yIGlzIHJhaXNlZC4KCURvIG5vdCByYWlzZSBQcm9ncmFtX0Vycm9yIHdoZW4gdGhpcyBwcm9jZWR1cmUgaXMgY2FsbGVkIGZyb20KCWEgcHJvdGVjdGVkIGFjdGlvbi4KCgkqIHMtdHBvc2VuLmFkcywgcy10cG9iZW4uYWRzIChQcm90ZWN0aW9uX0VudHJpZXMpOiBBZGQgdGhlIGZpZWxkIE93bmVyLAoJdXNlZCB0byBzdG9yZSB0aGUgcHJvdGVjdGVkIG9iamVjdCdzIG93bmVyLgoKCSogcy10cG9ib3AuYWRiIChQcm90ZWN0ZWRfRW50cnlfQ2FsbCk6IElmIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgaW4KCWVmZmVjdCBhbmQgdGhpcyBwcm9jZWR1cmUgKGEgcG90ZW50aWFsbHkgYmxvY2tpbmcgb3BlcmF0aW9uKSBpcyBjYWxsZWQKCWZyb20gd2hpdGhpbiBhIHByb3RlY3RlZCBhY3Rpb24sIFByb2dyYW1fRXJyb3IgaXMgcmFpc2VkLgoJKFRpbWVkX1Byb3RlY3RlZF9FbnRyeV9DYWxsKTogSWYgcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBpbiBlZmZlY3QKCWFuZCB0aGlzIHByb2NlZHVyZSAoYSBwb3RlbnRpYWxseSBibG9ja2luZyBvcGVyYXRpb24pIGlzIGNhbGxlZCBmcm9tCgl3aGl0aGluIGEgcHJvdGVjdGVkIGFjdGlvbiwgUHJvZ3JhbV9FcnJvciBpcyByYWlzZWQuCgoyMDA1LTAzLTE3ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCSAgICBOaWNvbGFzIFNldHRvbiAgPHNldHRvbkBhZGFjb3JlLmNvbT4KCgkqIG1saWItdGd0LWRhcndpbi5hZGIgKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IFJlbW92ZSB0aGUgIi1maW5pIgoJc3dpdGNoLCBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBsaW5rZXIgb24gRGFyd2luLiBBZGQgJ18nIGJlZm9yZQoJPGxpYnJhcnk+aW5pdCwgYXMgdGhpcyBjaGFyYWN0ZXIgaXMgYWRkZWQgdW5jb25kaXRpb25hbGx5IGJ5IHRoZQoJY29tcGlsZXIuCgkoSXNfQXJjaGl2ZV9FeHQpOiBSZXBsYWNlIHRoZSB3cm9uZyBsaWJyYXJ5IGV4dGVuc2lvbiAiLmR5bGQiIGJ5IHRoZQoJY29ycmVjdCBvbmUgIi5keWxpYiIuIFRoaXMgZml4ZXMgZGV0ZWN0aW9uIG9mIHRoZSBhcmNoaXZlIGZpbGVzIHdoZW4KCWJ1aWxkaW5nIGxpYnJhcnkgcHJvamVjdHMuCgoyMDA1LTAzLTE3ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHN3aXRjaC1tLmFkYiAoTm9ybWFsaXplX0NvbXBpbGVyX1N3aXRjaGVzKTogUmVjb2duaXplIHN3aXRjaGVzCgktZ25hdDgzLCAtZ25hdDk1IGFuZCAtZ25hdDA1LgoKMjAwNS0wMy0xNyAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IERvY3VtZW50IGduYXRtZW0gcmVzdHJpY3Rpb24KCjIwMDUtMDMtMTcgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBzbmFtZXMuYWRiOiBEb2N1bWVudCBuZXcgVFNTIG5hbWVzIGludHJvZHVjZWQgYnkgZXhwX2Rpc3QvZXhwX3RzcwoJY2xlYW51cAoKMjAwNS0wMy0xNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBzLWludGVyci5hZHMsIHMtaW50ZXJyLmFkYiwgc2VtX2NoMy5hZGIsIHByai5hZHMsIHByai5hZGIsCglhLWludGVyci5hZGIsIGEtaW50ZXJyLmFkcywgcy1pbnRlcnItc2lnYWN0aW9uLmFkYiwgcy1pbnRlcnItZHVtbXkuYWRiLAoJcy1pbnRlcnItdm1zLmFkYiwgcy1pbnRlcnItdnh3b3Jrcy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogY2FzaW5nLmFkYjogQ29tbWVudCBpbXByb3ZlbWVudHMKCjIwMDUtMDMtMTcgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGctZXhwZWN0LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwNS0wMy0xNSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoZG9jL2duYXRfdWduX3Vudy5pbmZvLCBkb2MvZ25hdF9ybS5pbmZvKQoJKGRvYy9nbmF0X3Vnbl91bncuZHZpLCBkb2MvZ25hdF9ybS5kdmkpOiBBZGQgZ2NjLXZlcnMudGV4aQoJdG8gZGVwZW5kZW5jaWVzLgoKMjAwNS0wMy0xNSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtbGliLXRndC1kYXJ3aW4uYWRiIChMaWJyYXJ5X0V4aXN0X0ZvciwgTGlicmFyeV9GaWxlX05hbWVfRm9yKToKCUFkZCBuZXcgcGFyYW1ldGVyIEluX1RyZWUgdG8gc3BlY2lmeSB0aGUgcHJvamVjdCB0cmVlOiBuZWVkZWQKCWJ5IHRoZSBwcm9qZWN0IG1hbmFnZXIuIEFkYXB0IHRvIGNoYW5nZXMgaW4gcHJvamVjdCBtYW5hZ2VyCgl1c2luZyBuZXcgcGFyYW1ldGVyIEluX1RyZWUuCgoyMDA1LTAzLTE1ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhL3RyZWVwcnMuYWRzLCBhZGEvZWluZm8uaCwgYWRhL3NpbmZvLmgsCglhZGEvbm1ha2UuYWRiLCBhZGEvbm1ha2UuYWRzKTogVXNlIHVuaXF1ZSBzdWJkaXJlY3RvcmllcyBvZgoJYWRhL2JsZHRvb2xzIHRvIGF2b2lkIG1ha2UgLWpOIGZhaWx1cmVzLgoKMjAwNS0wMy0xNSAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIHRyYW5zLmMgKGduYXRfdG9fZ251KSA8Tl9SZXR1cm5fU3RhdGVtZW50PjogU2V0IGdudV9yZXN1bHQKCXRvIE5VTExfVFJFRSBvbiBlbnRyeS4KCjIwMDUtMDMtMTUgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogc3lzdGVtLXVuaXh3YXJlLmFkcywgc3lzdGVtLWxpbnV4LWlhNjQuYWRzLCBzeXN0ZW0tZnJlZWJzZC14ODYuYWRzLAoJc3lzdGVtLWx5bnhvcy1wcGMuYWRzLCBzeXN0ZW0tbHlueG9zLXg4Ni5hZHMsIHN5c3RlbS1saW51eC14ODZfNjQuYWRzLAoJc3lzdGVtLXRydTY0LmFkcywgc3lzdGVtLWFpeC5hZHMsIHN5c3RlbS12eHdvcmtzLXNwYXJjdjkuYWRzLAoJc3lzdGVtLXZ4d29ya3MteHNjYWxlLmFkcywgc3lzdGVtLXNvbGFyaXMteDg2LmFkcywgc3lzdGVtLWlyaXgtbzMyLmFkcywKCXN5c3RlbS1pcml4LW4zMi5hZHMsIHN5c3RlbS1ocHV4LmFkcywgc3lzdGVtLXZ4d29ya3MtbTY4ay5hZHMsCglzeXN0ZW0tbGludXgteDg2LmFkcywgc3lzdGVtLXZ4d29ya3MtbWlwcy5hZHMsIHN5c3RlbS1vczIuYWRzLAoJc3lzdGVtLWludGVyaXguYWRzLCBzeXN0ZW0tc29sYXJpcy1zcGFyYy5hZHMsCglzeXN0ZW0tc29sYXJpcy1zcGFyY3Y5LmFkcywgc3lzdGVtLXZtcy5hZHMsIHN5c3RlbS1taW5ndy5hZHMsCglzeXN0ZW0tdm1zLXpjeC5hZHMsIHN5c3RlbS12eHdvcmtzLXBwYy5hZHMsIHN5c3RlbS12eHdvcmtzLWFscGhhLmFkcywKCXN5c3RlbS12bXNfNjQuYWRzLCBzeXN0ZW0tZGFyd2luLXBwYy5hZHMsIHN5c3RlbS12eHdvcmtzLXg4Ni5hZHMsCglzeXN0ZW0tbGludXgtcHBjLmFkcywgc3lzdGVtLWxpbnV4LWFscGhhLmFkcywgc3lzdGVtLWxpbnV4LXNwYXJjLmFkcywKCXN5c3RlbS1saW51eC1zMzkwLmFkcywgc3lzdGVtLWxpbnV4LXMzOTB4LmFkczogQWRkIGxpbmUgZGVmaW5pbmcKCUNvbXBpbGVyX1N5c3RlbV9WZXJzaW9uIHRvIGJlIEZhbHNlLgoKCSogb3B0LmFkczogQWRkIG5ldyBmbGFnIE9wdC5BZGRyZXNzX0lzX1ByaXZhdGUKCgkqIHRhcmdwYXJtLmFkcywgdGFyZ3Bhcm0uYWRiOiBTZXQgbmV3IGZsYWcgT3B0LkFkZHJlc3NfSXNfUHJpdmF0ZQoJQWRkIG5ldyBwYXJhbWV0ZXIgQ29tcGlsZXJfU3lzdGVtX1ZlcnNpb24gdG8gYXZvaWQgY2hlY2tpbmcgZm9yCgljb21wbGV0ZW5lc3Mgb2YgcGFyYW1ldGVycyB3aGVuIGNvbXBpbGVyIGlzIGNvbXBpbGluZyBpdHNlbGYuCglBbGxvd3Mgb2xkIHZlcnNpb25zIG9mIEdOQVQgdG8gYmUgY29tcGlsZWQgd2l0aCBuZXcgY29tcGlsZXIuCgoyMDA1LTAzLTE1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogcy1vc2ludGUtdHJ1NjQuYWRzLCBzLW9zaW50ZS10cnU2NC5hZGIgKEdldF9TdGFja19CYXNlKTogTmV3IGZ1bmN0aW9uCgkoSGlkZV9ZZWxsb3dfWm9uZSk6IE5ldyBwcm9jZWR1cmUgdG8gaGlkZSB0aGUgWWVsbG93IFpvbmUgb2YgdGhlCgljYWxsaW5nIHRocmVhZC4KCShTdGFja19CYXNlX0F2YWlsYWJsZSk6IE5ldyBmbGFnLgoJKEdldF9QYWdlX1NpemUpOiBOZXcgb3ZlcmxvYWRlZCBmdW5jdGlvbnMgaW1wb3J0ZWQgZnJvbSBDLgoJKFBST1RfTk9ORSwgUFJPVF9SRUFELCBQUk9UX1dSSVRFLCBQUk9UX0VYRUMsIFBST1RfQUxMLAoJUFJPVF9PTiwgUFJPVF9PRkYpOiBOZXcgY29uc3RhbnRzLgoJKG1wcm90ZWN0KTogTmV3IGZ1bmN0aW9uIGltcG9ydGVkIGZyb20gQy4KCShwdGhyZWFkX3RlYl90KTogTmV3IHJlY29yZCB0eXBlLgoKCSogcy10YXByb3AtdHJ1NjQuYWRiOiAoRW50ZXJfVGFzayk6IEludm9rZSBIaWRlX1llbGxvd19ab25lLgoJKENyZWF0ZV9UYXNrKTogQWNjb3VudCBmb3IgdGhlIFllbGxvdyBab25lIGFuZCB0aGUgZ3VhcmQgcGFnZS4KCjIwMDUtMDMtMTUgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWxpYi10Z3QtdHJ1NjQuYWRiLCBtbGliLXRndC1haXguYWRiLCBtbGliLXRndC1pcml4LmFkYiwKCW1saWItdGd0LWhwdXguYWRiLCBtbGliLXRndC1saW51eC5hZGIsIG1saWItdGd0LXNvbGFyaXMuYWRiLAoJbWxpYi10Z3Qtdm1zLWFscGhhLmFkYiwgbWxpYi10Z3Qtdm1zLWlhNjQuYWRiLCBtbGliLXRndC1taW5ndy5hZGIsCgltbGliLXRndC12eHdvcmtzLmFkYiwgbWxpYi10Z3QtbHlueG9zLmFkYiAoTGlicmFyeV9FeGlzdF9Gb3IsCglMaWJyYXJ5X0ZpbGVfTmFtZV9Gb3IpOiBBZGQgbmV3IHBhcmFtZXRlciBJbl9UcmVlCgl0byBzcGVjaWZ5IHRoZSBwcm9qZWN0IHRyZWU6IG5lZWRlZCBieSB0aGUgcHJvamVjdCBtYW5hZ2VyLgoJQWRhcHQgdG8gY2hhbmdlcyBpbiBwcm9qZWN0IG1hbmFnZXIgdXNpbmcgbmV3IHBhcmFtZXRlciBJbl9UcmVlLgoJUmVtb3ZlIGxvY2FsIGltcG9ydHMsIHVzZSBmdW5jdGlvbnMgaW4gU3lzdGVtLkNSVEwuCgoJKiBtYWtlLmFkYiwgY2xlYW4uYWRiLCBnbmF0Y21kLmFkYiAoUHJvamVjdF9UcmVlKTogTmV3IGNvbnN0YW50IG5lZWRlZAoJdG8gdXNlIHRoZSBwcm9qZWN0IG1hbmFnZXIuCgoJKiBtYWtldXRsLmFkcywgbWFrZXV0bC5hZGIgKExpbmtlcl9PcHRpb25zX1N3aXRjaGVzKTogTmV3IHBhcmFtZXRlcgoJSW5fVHJlZSB0byBkZXNpZ25hdGUgdGhlIHByb2plY3QgdHJlZS4gQWRhcHQgdG8gY2hhbmdlcyBpbiB0aGUgcHJvamVjdAoJbWFuYWdlciwgdXNpbmcgSW5fVHJlZS4KCgkqIG1saWItcHJqLmFkcywgbWxpYi1wcmouYWRiIChCdWlsZF9MaWJyYXJ5LCBDaGVja19MaWJyYXJ5LAoJQ29weV9JbnRlcmZhY2VfU291cmNlcyk6IEFkZCBuZXcgcGFyYW1ldGVyIEluX1RyZWUgdG8gc3BlY2lmeSB0aGUKCXByb2plY3QgdHJlZTogbmVlZGVkIGJ5IHRoZSBwcm9qZWN0IG1hbmFnZXIuCgkoQnVpbGRfTGlicmFyeSk6IENoZWNrIHRoYXQgQXJnJ0xlbmd0aCA+PSA2IGJlZm9yZSBjaGVja2luZyBpZiBpdAoJY29udGFpbnMgIi0tUlRTPS4uLiIuCgoJKiBtbGliLXRndC5hZHMsIG1saWItdGd0LmFkYiAoTGlicmFyeV9FeGlzdF9Gb3IsCglMaWJyYXJ5X0ZpbGVfTmFtZV9Gb3IpOiBBZGQgbmV3IHBhcmFtZXRlciBJbl9UcmVlIHRvIHNwZWNpZnkgdGhlCglwcm9qZWN0IHRyZWU6IG5lZWRlZCBieSB0aGUgcHJvamVjdCBtYW5hZ2VyLgoKCSogcHJqLmFkcywgcHJqLmFkYjogTWFqb3IgbW9kaWZpY2F0aW9ucyB0byBhbGxvdyBzZXZlcmFsIHByb2plY3QgdHJlZXMKCWluIG1lbW9yeSBhdCB0aGUgc2FtZSB0aW1lLgoJQ2hhbmdlIHRhYmxlcyB0byBkeW5hbWljIHRhYmxlcyBhbmQgaGFzaCB0YWJsZXMgdG8gZHluYW1pYyBoYXNoCgl0YWJsZXMuIE1vdmUgdGFibGVzIGFuZCBoYXNoIHRhYmxlcyBmcm9tIFByai5Db20gKGluIHRoZSB2aXNpYmxlIHBhcnQpCglhbmQgUHJqLkVudiAoaW4gdGhlIHByaXZhdGUgcGFydCkuIE1vdmUgc29tZSBjb25zdGFudHMgZnJvbSB0aGUgdmlzaWJsZQoJcGFydCB0byB0aGUgcHJpdmF0ZSBwYXJ0LiBNYWtlIG90aGVyIGNvbnN0YW50cyBkZWZlcnJlZC4KCShQcm9qZWN0X0VtcHR5KTogTWFrZSBpdCBhIHZhcmlhYmxlLCBub3QgYSBmdW5jdGlvbgoJKEVtcHR5X1Byb2plY3QpOiBBZGQgcGFyYW1ldGVyIFRyZWUuIFJldHVybnMgdGhlIGRhdGEgd2l0aCB0aGUgZGVmYXVsdAoJbmFtaW5nIGRhdGEgb2YgdGhlIHByb2plY3QgdHJlZSBUcmVlLgoJKEluaXRpYWxpemUpOiBBZnRlciB1cGRhdGluZyBTdGRfTmFtaW5nX0RhdGEsIGNvcHkgaXRzIHZhbHVlIHRvIHRoZQoJY29tcG9uZW50IE5hbWluZyBvZiBQcm9qZWN0IEVtcHR5LgoJKFJlZ2lzdGVyX0RlZmF1bHRfTmFtaW5nX1NjaGVtZSk6IFVzZSBhbmQgdXBkYXRlIHRoZSBkZWZhdWx0IG5hbWluZwoJY29tcG9uZW50IG9mIHRoZSBwcm9qZWN0IHRyZWUsIGluc3RlYWQgb2YgdGhlIGdsb2JhbCB2YXJpYWJsZQoJU3RkX05hbWluZ19EYXRhLgoJKFN0YW5kYXJkX05hbWluZ19EYXRhKTogQWRkIGRlZmF1bHRlZCBwYXJhbWV0ZXIgVHJlZS4gSWYgcHJvamVjdCB0cmVlCglUcmVlIGlzIG5vdCBkZWZhdWx0ZWQsIHJldHVybiB0aGUgZGVmYXVsdCBuYW1pbmcgZGF0YSBvZiB0aGUgVHJlZS4KCShJbml0aWFsX0J1ZmZlcl9TaXplKTogQ29uc3RhbnQgbW92ZWQgZnJvbSBwcml2YXRlIHBhcnQKCShEZWZhdWx0X0FkYV9TcGVjX1N1ZmZpeF9JZCwgRGVmYXVsdF9BZGFfQm9keV9TdWZmaXhfSWQsIFNsYXNoX0lkKTsgbmV3Cgl2YXJpYWJsZXMgaW5pdGlhbGl6ZWQgaW4gcHJvY2VkdXJlIEluaXRpYWxpemUuCgkoQWRkX1RvX0J1ZmZlcik6IEFkZCB0d28gaW4gb3V0IHBhcmFtZXRlcnMgdG8gcmVwbGFjZSBnbG9iYWwgdmFyaWFibGVzCglCdWZmZXIgYW5kIEJ1ZmZlcl9MYXN0LgoJKERlZmF1bHRfQWRhX1NwZWNfU3VmZml4LCBEZWZhdWx0X0JvZHlfU3BlY19TdWZmaXgsIFNsYXNoKTogTmV3CglmdW5jdGlvbnMuCglBZGFwdCB0byBjaGFuZ2VzIHRvIHVzZSBuZXcgdHlwZSBQcm9qZWN0X1RyZWVfUmVmIGFuZCBkeW5hbWljIHRhYmxlcyBhbmQKCWhhc2ggdGFibGVzLgoJKEluaXRpYWxpemUsIFJlc2V0LCByZWdpc3Rlci1EZWZhdWx0X05hbW5nLVNjaGVtZSk6IEFkZCBhIG5ldyBwYXJhbWV0ZXIKCWZvciB0aGUgcHJvamVjdCB0cmVlLgoJKFByb2plY3RfVHJlZV9EYXRhLCBQcm9qZWN0X1RyZWVfUmVmLCBOb19Qcm9qZWN0KTogRGVjbGFyZSB0eXBlcyBhbmQKCWNvbnN0YW50IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHBhY2thZ2Ugc3BlYywgc28gdGhhdCB0aGV5IGNhbmUgYmUgdXNlZAoJaW4gc3VicHJvZ3JhbXMgYmVmb3JlIHRoZWlyIGZ1bGwgZGVjbGFyYXRpb25zLgoJKFN0YW5kYXJkX05hbWluZ19EYXRhKTogQWRkIGRlZmF1bHRlZCBwYXJhbWV0ZXIgb2YgdHlwZSBQcm9qZWN0X05vZGVfUmVmCgkoRW1wdHlfUHJvamVjdCk6IEFkZCBwYXJhbWV0ZXIgb2YgdHlwZSBQcm9qZWN0X05vZGVfUmVmCgkoUHJpdmF0ZV9Qcm9qZWN0X1RyZWVfRGF0YSk6IEFkZCBjb21wb25lbnQgRGVmYXVsdF9OYW1pbmcgb2YgdHlwZQoJTmFtaW5nX0RhdGEuCgkoQnVmZmVyLCBCdWZmZXJfTGFzdCk6IHJlbW92ZSBnbG9iYWwgdmFyaWFibGVzCgkoQWRkX1RvX0J1ZmZlcik6IEFkZCB0d28gaW4gb3V0IHBhcmFtZXRlcnMgdG8gcmVwbGFjZSBnbG9iYWwgdmFyaWFibGVzCglCdWZmZXIgYW5kIEJ1ZmZlcl9MYXN0LgoJKEN1cnJlbnRfUGFja2FnZXNfVG9fQ2hlY2spOiBSZW1vdmUgZ2xvYmFsIHZhcmlhYmxlCgkoRW1wdHlfTmFtZSk6IE1vdmUgdG8gcHJpdmF0ZSBwYXJ0CgkoTm8tU3ltYm9scyk6IE1ha2UgaXQgYSBjb25zdGFudAoJKFByaXZhdGVfUHJvamVjdF9UcmVlX0RhdGEpOiBOZXcgdHlwZSBmb3IgdGhlIHByaXZhdGUgcGFydCBvZiB0aGUKCXByb2plY3QgdHJlZSBkYXRhLgoJKFByb2plY3RfVHJlZV9EYXRhKTogTmV3IHR5cGUgZm9yIHRoZSBkYXRhIG9mIGEgcHJvamVjdCB0cmVlCgkoUHJvamVjdF9UcmVlX1JlZik6IE5ldyB0eXBlIHRvIGRlc2lnbmF0ZSBhIHByb2plY3QgdHJlZQoJKEluaXRpYWxpemUsIFJlc2V0LCByZWdpc3Rlci1EZWZhdWx0X05hbW5nLVNjaGVtZSk6IEFkZCBhIG5ldyBwYXJhbWV0ZXIKCWZvciB0aGUgcHJvamVjdCB0cmVlLgoKCSogcHJqLWF0dHIuYWRzOiBBZGQgd2l0aCBUYWJsZTsgbmVlZGVkLCBhcyBwYWNrYWdlIFByaiBubyBsb25nZXIKCWltcG9ydHMgcGFja2FnZSBUYWJsZS4KCgkqIHByai1jb20uYWRiOiBSZW1vdmUgZW1wdHksIG5vIGxvbmdlciBuZWVkZWQgYm9keQoKCSogcHJqLWNvbS5hZHM6IE1vdmUgbW9zdCBvZiB0aGUgY29udGVudCBvZiB0aGlzIHBhY2thZ2UgdG8gcGFja2FnZSBQcmouCgoJKiBwcmotZGVjdC5hZHMsIHByai1kZWN0LmFkYiAoUGFyc2UpOiBOZXcgcGFyYW1ldGVycyBJbl9UcmVlIHRvCglkZXNpZ25hdGUgdGhlIHByb2plY3Qgbm9kZSB0cmVlIGFuZCBQYWNrYWdlc19Ub19DaGVjayB0byByZXBsYWNlCglnbG9iYWwgdmFyaWFibGUgQ3VycmVudF9QYWNrYWdlc19Ub19DaGVjay4KCUFkZCBuZXcgcGFyYW1ldGVycyBJbl9UcmVlIGFuZCBQYWNrYWdlc19Ub19DaGVjayB0byBsb2NhbCBzdWJwcm9ncmFtcywKCXdoZW4gbmVlZGVkLiBBZGFwdCB0byBjaGFuZ2VzIGluIHByb2plY3QgbWFuYWdlciB3aXRoIHByb2plY3Qgbm9kZSB0cmVlCglJbl9UcmVlLgoKCSogcHJqLWVudi5hZHMsIHByai1lbnYuYWRiOiBBZGQgbmV3IHBhcmFtZXRlciBJbl9UcmVlIHRvIGRlc2lnbmF0ZSB0aGUKCXByb2plY3QgdHJlZSB0byBtb3N0IHN1YnByb2dyYW1zLiBNb3ZlIHRhYmxlcyBhbmQgaGFzaCB0YWJsZXMgdG8KCXByaXZhdGUgcGFydCBvZiBwYWNrYWdlIFByai4KCUFkYXB0IHRvIGNoYW5nZXMgaW4gcHJvamVjdCBtYW5hZ2VyIHVzaW5nIHByb2plY3QgdHJlZSBJbl9UcmVlLgoKCSogcHJqLW1ha3IuYWRiIChUcmVlKTogTmV3IGNvbnN0YW50IHRvIGRlc2lnbmF0ZSB0aGUgcHJvamVjdCBub2RlIHRyZWUKCUFkYXB0IHRvIGNoYW5nZSBpbiBwcm9qZWN0IG1hbmFnZXIgdXNpbmcgcHJvamVjdCBub2RlIHRyZWUgVHJlZQoKCSogcHJqLW5tc2MuYWRzLCBwcmotbm1zYy5hZGIgKENoZWNrX1N0YW5kX0Fsb25lX0xpYnJhcnkpOiBDb3JyZWN0bHkKCWRpc3BsYXkgdGhlIExpYnJhcnlfU3JjX0RpciBhbmQgdGhlIExpYnJhcnlfRGlyLgoJQWRkIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZSB0byBkZXNpZ25hdGUgdGhlIHByb2plY3Qgbm9kZSB0cmVlIHRvIG1vc3QKCXN1YnByb2dyYW1zLiBBZGFwdCB0byBjaGFuZ2VzIGluIHRoZSBwcm9qZWN0IG1hbmFnZXIsIHVzaW5nIHByb2plY3QgdHJlZQoJSW5fVHJlZS4KCShDaGVja19OYW1pbmdfU2NoZW1lKTogRG8gbm90IGFsdGVyIHRoZSBjYXNpbmcgb24gcGxhdGZvcm1zIHdoZXJlCgl0aGUgY2FzaW5nIG9mIGZpbGUgbmFtZXMgaXMgbm90IHNpZ25pZmljYW50LgoJKENoZWNrKTogQWRkIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZSB0byBkZXNpZ25hdGUgdGhlCgoJKiBwcmotcGFycy5hZHMsIHByai1wYXJzLmFkYiAoUGFyc2UpOiBBZGQgbmV3IHBhcmFtZXRlciBJbl9UcmVlIHRvCglkZXNpZ25hdGUgdGhlIHByb2plY3QgdHJlZS4KCURlY2xhcmUgYSBwcm9qZWN0IG5vZGUgdHJlZSB0byBjYWxsIFByai5QYXJ0LlBhcnNlIGFuZCBQcmouUHJvYy5Qcm9jZXNzCgoJKiBwcmotcGFydC5hZHMsIHByai1wYXJ0LmFkYiAoQnVmZmVyLCBCdWZmZXJfTGFzdCk6IEdsb2JhbCB2YXJpYWJsZXMsCgl0byByZXBsYWNlIHRob3NlIHRoYXQgd2VyZSBpbiB0aGUgcHJpdmF0ZSBwYXJ0IG9mIHBhY2thZ2UgUHJqLgoJQWRkIG5ldyBwYXJhbWV0ZXIgSW5fX1RyZWUgdG8gZGVzaWduYXRlIHRoZSBwcm9qZWN0IG5vZGUgdHJlZSB0byBtb3N0CglzdWJwcm9ncmFtcy4gQWRhcHQgdG8gY2hhbmdlIGluIFByai5UcmVlIHdpdGggcHJvamVjdCBub2RlIHRyZWUgSW5fVHJlZS4KCShQb3N0X1BhcnNlX0NvbnRleHRfQ2xhdXNlKTogV2hlbiBzcGVjaWZ5aW5nIHRoZSBwcm9qZWN0IG5vZGUgb2YgYSB3aXRoCgljbGF1c2UsIGluZGljYXRlIHRoYXQgaXQgaXMgYSBsaW1pdGVkIHdpdGggb25seSBpZiB0aGVyZSBpcyAibGltaXRlZCIKCWluIHRoZSB3aXRoIGNsYXVzZSwgbm90IG5lY2Vzc2FyaWx5IHdoZW4gSW5fTGltaXRlZCBpcyBUcnVlLgoJKFBhcnNlKTogQWRkIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZSB0byBkZXNpZ25hdGUgdGhlIHByb2plY3Qgbm9kZSB0cmVlCgoJKiBwcmotcHAuYWRzLCBwcmotcHAuYWRiIChQcmV0dHlfUHJpbnQpOiBBZGQgbmV3IHBhcmFtZXRlciBJbl9UcmVlIHRvCglkZXNpZ25hdGUgdGhlIHByb2plY3Qgbm9kZSB0cmVlLiBBZGFwdCB0byBjaGFuZ2UgaW4gUHJqLlRyZWUgd2l0aAoJcHJvamVjdCBub2RlIHRyZWUgSW5fVHJlZS4KCgkqIHByai1wcm9jLmFkcywgcHJqLXByb2MuYWRiIChSZWN1cnNpdmVfUHJvY2Vzcyk6IFNwZWNpZnkgdGhlIHByb2plY3QKCXRyZWUgSW5fVHJlZSBpbiB0aGUgY2FsbCB0byBmdW5jdGlvbiBFbXB0eV9Qcm9jZXNzIHRvIGdpdmUgaXRzIGluaXRpYWwKCXZhbHVlIHRvIHRoZSBwcm9qZWN0IGRhdGEgUHJvY2Vzc2VkX0RhdGEuCglBZGQgbmV3IHBhcmFtZXRlcnMgSW5fVHJlZSB0byBkZXNpZ25hdGUgdGhlIHByb2plY3QgdHJlZSBhbmQKCUZyb21fUHJvamVjdF9Ob2RlX1RyZWUgdG8gZGVzaWduYXRlIHRoZSBwcm9qZWN0IG5vZGUgdHJlZSB0byBzZXZlcmFsCglzdWJwcm9ncmFtcy4gQWRhcHQgdG8gY2hhbmdlIGluIHByb2plY3QgbWFuYWdlciB3aXRoIHByb2plY3QgdHJlZQoJSW5fVHJlZSBhbmQgcHJvamVjdCBub2RlIHRyZWUgRnJvbV9Qcm9qZWN0X05vZGVfVHJlZS4KCgkqIHByai1zdHJ0LmFkcywgcHJqLXN0cnQuYWRiIChCdWZmZXIsIEJ1ZmZlcl9MYXN0KTogR2xvYmFsIHZhcmlhYmxlcywKCXRvIHJlcGxhY2UgdGhvc2UgdGhhdCB3ZXJlIGluIHRoZSBwcml2YXRlIHBhcnQgb2YgcGFja2FnZSBQcmouCglBZGQgbmV3IHBhcmFtZXRlciBJbl9UcmVlIHRvIGRlc2lnbmF0ZSB0aGUgcHJvamVjdCBub2RlIHRyZWUgdG8gbW9zdAoJc3VicHJvZ3JhbXMuIEFkYXB0IHRvIGNoYW5nZSBpbiBQcmouVHJlZSB3aXRoIHByb2plY3Qgbm9kZSB0cmVlIEluX1RyZWUuCgoJKiBwcmotdHJlZS5hZHMsIHByai10cmVlLmFkYjogQWRkIG5ldyBwYXJhbWV0ZXIgb2YgdHlwZQoJUHJvamVjdF9Ob2RlX1RyZWVfUmVmIHRvIG1vc3Qgc3VicHJvZ3JhbXMuCglVc2UgdGhpcyBuZXcgcGFyYW1ldGVyIHRvIHN0b3JlIHByb2plY3Qgbm9kZXMgaW4gdGhlIGRlc2lnbmF0ZWQgcHJvamVjdAoJbm9kZSB0cmVlLgoJKFByb2plY3RfTm9kZV9UcmVlX1JlZik6IE5ldyB0eXBlIHRvIGRlc2lnbmF0ZSBhIHByb2plY3Qgbm9kZSB0cmVlCgkoVHJlZV9Qcml2YXRlX1BhcnQpOiBDaGFuZ2UgdGFibGUgdG8gZHluYW1pYyB0YWJsZSBhbmQgaGFzaCB0YWJsZXMgdG8KCWR5bmFtaWMgaGFzaCB0YWJsZXMuCgoJKiBwcmotdXRpbC5hZHMsIHByai11dGlsLmFkYjogQWRkIG5ldyBwYXJhbWV0ZXIgSW5fVHJlZSB0byBkZXNpZ25hdGUKCXRoZSBwcm9qZWN0IHRyZWUgdG8gbW9zdCBzdWJwcm9ncmFtcy4gQWRhcHQgdG8gY2hhbmdlcyBpbiBwcm9qZWN0CgltYW5hZ2VyIHVzaW5nIHByb2plY3QgdHJlZSBJbl9UcmVlLgoKCSogbWFrZWdwci5hZGIgKFByb2plY3RfVHJlZSk6IE5ldyBjb25zdGFudCBuZWVkZWQgdG8gdXNlIHByb2plY3QKCW1hbmFnZXIuCgoyMDA1LTAzLTE1ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogcy1pbnRtYW4tcG9zaXguYWRiIChOb3RpZnlfRXhjZXB0aW9uKTogQWRqdXN0IHNpZ25hdHVyZSwgYXMgaGFuZGxlcgoJZm9yIHNpZ2FjdGlvbnMgd2l0aCBTQV9TSUdJTkZPIHNldC4gQ2FsbAoJX19nbmF0X2FkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSBiZWZvcmUgcmFpc2luZywgdG8gcGVyZm9ybSB0aGUKCXBvdGVudGlhbGx5IHJlcXVpcmVkIGFkanVzdG1lbnRzIHRvIHRoZSBtYWNoaW5lIGNvbnRleHQgZm9yIHRoZSBHQ0MKCXVud2luZGVyLgoKCSogcmFpc2UuaCAoX19nbmF0X2FkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSk6IE5ldyBwcm90b3R5cGUuCgoJKiBpbml0LmMgKF9fZ25hdF9hZGp1c3RfY29udGV4dF9mb3JfcmFpc2UpIEhQVVg6IEluaXRpYWwgcmV2aXNpb24uCglBZGp1c3QgUEMgYnkgb25lIGluIHRoZSBwcm92aWRlZCBtYWNoaW5lIGNvbnRleHQuCgkoX19nbmF0X2luc3RhbGxfaGFuZGxlcikgSFBVWDogU2V0IFNBX1NJR0lORk8gaW4gdGhlIHNpZ2FjdGlvbiBmbGFncywKCXNvIHRoYXQgdGhlIGhhbmRsZXIgaXMgcGFzc2VkIHRoZSBjb250ZXh0IHN0cnVjdHVyZSB0byBhZGp1c3QgcHJpb3IgdG8KCXRoZSByYWlzZS4KCShfX2duYXRfZXJyb3JfaGFuZGxlcikgSFBVWDogQWRqdXN0IHRoZSBzaWduYXR1cmUgdG8gbWF0Y2ggd2hhdCBhbgoJU0FfU0lHSU5GTyBzaWdhY3Rpb24gc2hvdWxkIGxvb2sgbGlrZS4gQ2FsbAoJX19nbmF0X2FkanVzdF9jb250ZXh0X2Zvcl9yYWlzZSBiZWZvcmUgYWN0dWFsbHkgcmFpc2luZy4KCShfX2duYXRfYWRqdXN0X2NvbnRleHRfZm9yX3JhaXNlKTogRGVmYXVsdCBub29wIHRvIGhlbHAgUEMKCWFkanVzdG1lbnRzIGJlZm9yZSByYWlzZSBmcm9tIHNpZ25hbCBoYW5kbGVycy4KCShfX2duYXRfZXJyb3JfaGFuZGxlcik6IEluZGlyZWN0bHkgY2FsbCBhIHByZWRpY2F0ZSBmdW5jdGlvbiB0bwoJZGV0ZXJtaW5lIGlmIGEgY29uZGl0aW9uIHNob3VsZCBiZSByZXNpZ25hbGVkIG9yIG5vdC4KCShfX2duYXRfc2V0X3Jlc2lnbmFsX3ByZWRpY2F0ZSk6IFVzZXIgaW50ZXJmYWNlIHRvIG1vZGlmeSB0aGUgcHJlZGljYXRlLgoJKF9fZ25hdF9kZWZhdWx0X3Jlc2lnbmFsX3ApOiBEZWZhdWx0IEdOQVQgcHJlZGljYXRlLgoKMjAwNS0wMy0xNSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIGFkYWludC5jOiBQcmVmaXggI2luY2x1ZGUgb2YgVk1TIHN5c3RlbSBoZWFkZXIgZmlsZXMgd2l0aCB2bXMvCglbVk1TXSAoSE9TVF9FWEVDVVRBQkxFX1NVRkZJWCwgSE9TVF9PQkpFQ1RfU1VGRklYKTogRGVmaW5lIGZvciBWTVMuCglEbyBub3QgZGVmaW5lIGEgZHVtbXkgZnVuY3Rpb24gImNvbnZlcnRfYWRkcmVzc2VzIiB1bmRlciBEYXJ3aW4sCglub3QgbmVlZGVkLgoKCSogdGItYWx2bXMuYywgZXhwZWN0LmM6IFByZWZpeCAjaW5jbHVkZSBvZiBWTVMgc3lzdGVtIGhlYWRlciBmaWxlcwoJd2l0aCB2bXMvCgoyMDA1LTAzLTE1ICBOaWNvbGFzIFNldHRvbiAgPHNldHRvbkBhZGFjb3JlLmNvbT4KCgkqIHRyYWNlYmFrLmM6IFVuZGVyIERhcndpbiwgdXNlIHRoZSBzYW1lIHVud2luZGluZyBtZWNoYW5pc21zIGFzIHVuZGVyCglQUEMvQUlYLgoKMjAwNS0wMy0xNSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLXJlYXRpbS5hZHMsIGEtcmVhdGltLmFkYjogQWRkIGZ1bmN0aW9ucyBNaW51dGVzIGFuZCBTZWNvbmRzIGZvcgoJQUktMzg2LgoKCSogYS1yZXRpZGUuYWRzOiBNaW5vciBjb21tZW50IGNoYW5nZXMKCjIwMDUtMDMtMTUgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS1zdHp1bmIuYWRiLCBhLXN0enVuYi5hZGIgYS1zdHp1bmIuYWRzLCBhLXN0enVuYi5hZHMsCglhLXN0d2l1bi5hZHMsIGEtc3R3aXVuLmFkYiwgYS1zdHJ1bmIuYWRzLCBhLXN0cnVuYi5hZGI6IE1vdmUKCVJlYWxsb2NfRm9yX0NodW5rIHRvIHByaXZhdGUgcGFydCBvZiBwYWNrYWdlLgoJTmV3IHN1YnByb2dyYW1zIGZvciBBSS0zMDEKCgkqIGEtc3p1enRpLmFkYiwgYS1zdXRlaW8uYWRiLCBhLXN3dXd0aS5hZGI6IEltcHJvdmUgZWZmaWNpZW5jeSBvZgoJR2V0X0xpbmUgcHJvY2VkdXJlLgoJQXZvaWQgdW5uZWNlc3NhcnkgdXNlIG9mIEdldC9TZXRfV2lkZV9TdHJpbmcKCjIwMDUtMDMtMTUgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCVBSIGFkYS8xMzQ3MAoJKiBhLXN0dW5hdS5hZHMsIGEtc3R1bmF1LmFkYjoKCUNoYW5nZSBpbnRlcmZhY2UgdG8gYWxsb3cgZWZmaWNpZW50IChhbmQgY29ycmVjdCkgaW1wbGVtZW50YXRpb24KCVRoZSBwcmV2aW91cyBjaGFuZ2VzIHRvIGFsbG93IGV4dHJhIHNwYWNlIGluIHVuYm91bmRlZCBzdHJpbmdzIGhhZAoJbGVmdCB0aGlzIGludGVyZmFjZSBhIGJpdCBicm9rZW4uCgoJKiBhLXN1dGVpby5hZGI6IEF2b2lkIHVubmVjZXNzYXJ5IHVzZSBvZiBHZXQvU2V0X1N0cmluZwoKCSogZy1zcGlwYXQuYWRzLCBnLXNwaXBhdC5hZGI6IE5ldyBpbnRlcmZhY2UgZm9yIEdldF9TdHJpbmcKCU1pbm9yIHJlZm9ybWF0dGluZyAoZnVuY3Rpb24gc3BlY3MpCgoJKiBnLXNwaXRiby5hZGI6IE5ldyBpbnRlcmZhY2UgZm9yIEdldF9TdHJpbmcKCgkqIGctc3BpdGJvLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBhLXN3dW5hdS5hZHMsIGEtc3d1bmF1LmFkYjogTmV3IGludGVyZmFjZSBmb3IgR2V0X1dpZGVfU3RyaW5nCgoJKiBhLXN6dW5hdS5hZHMsIGEtc3p1bmF1LmFkYjogTmV3IGludGVyZmFjZSBmb3IgR2V0X1dpZGVfV2lkZV9TdHJpbmcKCjIwMDUtMDMtMTUgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCSAgICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoJICAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhdHJlZS5hZHMsIGF0cmVlLmFkYjogQWRkIHN1cHBvcnQgZm9yIEVsaXN0MjQgZmllbGQKCgkqIGF0cmVlLmg6IEZpeCB3cm9uZyBkZWZpbml0aW9uIG9mIEZpZWxkMjcKCUFkZCBzdXBwb3J0IGZvciBFbGlzdDE2IGZpZWxkCglBZGQgc3VwcG9ydCBmb3IgRWxpc3QyNCBmaWVsZAoKCSogZWluZm8uYWRzLCBlaW5mby5hZGIgKEFic3RyYWN0X0ludGVyZmFjZXMsCglTZXRfQWJzdHJhY3RfSW50ZXJmYWNlcyk6IE5ldyBzdWJwcm9ncmFtcy4KCShBYnN0cmFjdF9JbnRlcmZhY2VfQWxpYXMsIFNldF9BYnN0cmFjdF9JbnRlcmZhY2VfQWxpYXMpOiBOZXcKCXN1YnByb2dyYW1zLgoJKEFjY2Vzc19EaXNwX1RhYmxlLCBTZXRfQWNjZXNzX0Rpc3BfVGFibGUpOiBNb2RpZmllZCB0byBoYW5kbGUgYSBsaXN0IG9mCgllbnRpdGllcyByYXRoZXIgdGhhbiBhIHNpbmdsZSBub2RlLgoJKElzX0ludGVyZmFjZSwgU2V0X0lzX0ludGVyZmFjZSk6IE5ldyBzdWJwcm9ncmFtCgkoRmlyc3RfVGFnX0NvbXBvbmVudCk6IE5ldyBzeW50ZXNpemVkIGF0dHJpYnV0ZQoJKE5leHRfVGFnX0NvbXBvbmVudCk6IE5ldyBzeW50aGVzaXplZCBhdHRyaWJ1dGUKCShXcml0ZV9FbnRpdHlfRmxhZ3MpOiBVcGdyYWRlZCB0byB3cml0ZSBJc19JbnRlcmZhY2UKCShXcml0ZV9GaWVsZDI0X05hbWUpOiBVcGdyYWRlZCB0byB3cml0ZSBBYnN0cmFjdF9JbnRlcmZhY2VzCgkoV3JpdGVfRmllbGQyNV9OYW1lKTogVXBncmFkZWQgdG8gd3JpdGUgQWJzdHJhY3RfSW50ZXJmYWNlX0FsaWFzCgkoVGFza19Cb2R5X1Byb2NlZHVyZSk6IE5ldyBzdWJwcm9ncmFtIHRvIHJlYWQgdGhpcyBhdHRyaWJ1dGUuCgkoU2V0X1Rhc2tfQm9keV9Qcm9jZWR1cmUpOiBOZXcgc3VicHJvZ3JhbSB0byBzZXQgdGhpcyBhdHRyaWJ1dGUuCgkoSGFzX0NvbnRyb2xsZWRfQ29tcG9uZW50KTogTm93IGFwcGxpZXMgdG8gYWxsIGVudGl0aWVzLgoJVGhpcyBpcyBvbmx5IGEgZG9jdW1lbnRhdGlvbiBjaGFuZ2UsIHNpbmNlIGl0IGFsd2F5cyB3b3JrZWQgdG8gYXBwbHkKCXRoaXMgdG8gb3RoZXIgdGhhbiBjb21wb3NpdGUgdHlwZXMgKHlpZWxkaW5nIGZhbHNlKSwgYnV0IG5vdyB0aGlzIGlzCglvZmZpY2lhbC4KCVVwZGF0ZSBkb2N1bWVudGF0aW9uIG9uIE11c3RfQmVfQnl0ZV9BbGlnbmVkIGZvciBuZXcgc3BlYwoKCSogdGJ1aWxkLmFkYiwgZXhwX2Rpc3QuYWRiLCBleHBfZGlzcC5hZGIsIGV4cF9jaDMuYWRzLCBleHBfY2gzLmFkYiwKCWV4cF9hdHRyLmFkYiwgZXhwX2FnZ3IuYWRiLCBleHBfY2g0LmFkYiwgZXhwX2NoNS5hZGI6IFVwZ3JhZGUgYWxsIHRoZQoJdXNlcyBvZiB0aGUgQWNjZXNzX0Rpc3BfVGFibGUgYXR0cmlidXRlIHRvIHJlZmVyZW5jZSB0aGUgZmlyc3QgZGlzcGF0Y2gKCXRhYmxlIGFzc29jaWF0ZWQgd2l0aCBhIHRhZ2dlZCB0eXBlLiBBcwoJcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2YgYWJzdHJhY3QgaW50ZXJmYWNlIHR5cGVzLAoJQWNjZXNzX0Rpc3BfVGFibGUgaGFzIGJlZW4gcmVkZWZpbmVkIHRvIGNvbnRhaW4gYSBsaXN0IG9mIGRpc3BhdGNoCgl0YWJsZXMgKHJhdGhlciB0aGFuIGEgc2luZ2xlIGRpc3BhdGNoIHRhYmxlKS4KCVNpbWlsYXJseSwgdXBncmFkZSBhbGwgdGhlIHJlZmVyZW5jZXMgdG8gVGFnX0NvbXBvbmVudCBieSB0aGUKCW5ldyBhdHRyaWJ1dGUgRmlyc3RfVGFnX0NvbXBvbmVudC4KCShGaW5kX0luaGVyaXRlZF9UU1MpOiBNb3ZlZCB0byBleHBfdHNzLgoJQ2xlYW4gdXAgdGVzdCBpbiBFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24gZm9yIGNhc2VzCgl3aGVyZSB3ZSBuZWVkIHRvIGRvIGEgc2VwYXJhdGUgYXNzaWdubWVudCBvZiB0aGUgaW5pdGlhbCB2YWx1ZS4KCShFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBJZiB0aGUgZXhwcmVzc2lvbiBpbiB0aGUKCWRlY2xhcmF0aW9uIG9mIGEgdGFnZ2VkIHR5cGUgaXMgYW4gYWdncmVnYXRlLCBubyBuZWVkIHRvIGdlbmVyYXRlIGFuCglhZGRpdGlvbmFsIHRhZyBhc3NpZ25tZW50LgoJKEZyZWV6ZV9UeXBlKTogTm93IGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIFRydWUgaWYgdGhlIE5fRnJlZXplX0VudGl0eQoJaXMgdG8gYmUgZGVsZXRlZC4KCUJpdCBwYWNrZWQgYXJyYXkgb3BzIGFyZSBvbmx5IGNhbGxlZCBpZiBvcGVyYW5kcyBhcmUga25vd24gdG8gYmUKCWFsaWduZWQuCgkoQ29tcG9uZW50X0VxdWFsaXR5KTogV2hlbiByZXR1cm5pbmcgYW4gTl9SYWlzZV9Qcm9ncmFtX0Vycm9yIHN0YXRlbWVudCwKCWVuc3VyZSB0aGF0IGl0cyBFdHlwZSBpcyBzZXQgdG8gRW1wdHkgdG8gYXZvaWQgY29uZnVzaW5nIEdJR0kgKHdoaWNoCglleHBlY3RzIHRoYXQgb25seSBleHByZXNzaW9ucyBoYXZlIGEgYm9uYSBmaWRlIHR5cGUpLgoJKE1ha2VfVGFnX0N0cmxfQXNzaWdubWVudCk6IFVzZSBCdWlsZF9BY3R1YWxfU3VidHlwZSB0byBjb3JyZWN0bHkKCWRldGVybWluZSB0aGUgYW1vdW50IG9mIGRhdGEgdG8gYmUgY29waWVkLgoKCSogcGFyLmFkYiAoUF9JbnRlcmZhY2VfVHlwZV9EZWZpbml0aW9uKTogTmV3IHN1YnByb2dyYW0gdGhhdCBwYXJzZXMgdGhlCgluZXcgc3ludGF4IHJ1bGUgb2YgQWRhIDIwMDUgaW50ZXJmYWNlcyAoZm9yIEFJLTI1MSBhbmQgQUktMzQ1KToKCSAgICBJTlRFUkZBQ0VfVFlQRV9ERUZJTklUSU9OIDo6PQoJICAgICAgW2xpbWl0ZWQgfCB0YXNrIHwgcHJvdGVjdGVkIHwgc3luY2hyb25pemVkXSBpbnRlcmZhY2UKCQlbQU5EIGludGVyZmFjZV9saXN0XQoKCSogcGFyLWNoMy5hZGIgKFBfVHlwZV9EZWNsYXJhdGlvbik6IE1vZGlmaWVkIHRvIGdpdmUgc3VwcG9ydCB0bwoJaW50ZXJmYWNlcy4KCShQX0Rlcml2ZWRfVHlwZV9EZWZfT3JfUHJpdmF0ZV9FeHRfRGVjbCk6IE1vZGlmaWVkIHRvIGdpdmUgc3VwcG9ydCB0bwoJaW50ZXJmYWNlcy4KCShQX0ludGVyZmFjZV9UeXBlX0RlZmluaXRpb24pOiBOZXcgc3VicHJvZ3JhbSB0aGF0IHBhcnNlcyB0aGUgbmV3CglzeW50YXggcnVsZSBvZiBBZGEgMjAwNSBpbnRlcmZhY2VzCgkoUF9JZGVudGlmaWVyX0RlY2xhcmF0aW9ucyk6IGZpeCB0d28gb2NjdXJyZW5jZXMgb2YgJ1JFTkFNRVMnIGluIGVycm9yCgltZXNzYWdlcyBieSB0aGUgY29ycmVjdCBSRU5BTUVTIChxdW90ZXMgcmVtb3ZlZCkuCgoJKiBzZW1fcHJhZy5hZGI6IFVwZ3JhZGUgYWxsIHRoZSByZWZlcmVuY2VzIHRvIFRhZ19Db21wb25lbnQgYnkgdGhlIG5ldwoJYXR0cmlidXRlIEZpcnN0X1RhZ19Db21wb25lbnQuCgoJKiBzaW5mby5hZHMsIHNpbmZvLmFkYjogUmVtb3ZlIE9LX0Zvcl9TdHJlYW0gZmxhZywgbm90IHVzZWQsIG5vdCBuZWVkZWQKCShJbnRlcmZhY2VfTGlzdCwgU2V0X0ludGVyZmFjZV9MaXN0KTogTmV3IHN1YnByb2dyYW1zLgoJKEludGVyZmFjZV9QcmVzZW50LCBTZXRfSW50ZXJmYWNlX1ByZXNlbnQpOiBOZXcgc3VicHJvZ3JhbXMuCgkoTGltaXRlZF9QcmVzZW50LCBTZXRfTGltaXRlZF9QcmVzZW50KTogQXZhaWxhYmxlIGFsc28gaW4gZGVyaXZlZAoJdHlwZSBkZWZpbml0aW9uIG5vZGVzLgoJKFByb3RlY3RlZF9QcmVzZW50LCBTZXRfUHJvdGVjdGVkX1ByZXNlbnQpOiBBdmFpbGFibGUgYWxzbyBpbgoJcmVjb3JkIHR5cGUgZGVmaW5pdGlvbiBhbmQKCWRlcml2ZWQgdHlwZSBkZWZpbml0aW9uIG5vZGVzLgoJKFN5bmNocm9uaXplZF9QcmVzZW50LCBTZXRfU3luY2hyb25pemVkX1ByZXNlbnQpOiBOZXcgc3VicHJvZ3JhbXMuCgkoVGFza19QcmVzZW50LCBTZXRfVGFza19QcmVzZW50KTogTmV3IHN1YnByb2dyYW0uCgkoVGFza19Cb2R5X1Byb2NlZHVyZSk6IFJlbW92ZWQuCgkoU2V0X1Rhc2tfQm9keV9Qcm9jZWR1cmUpOiBSZW1vdmVkLgoJVGhlc2Ugc3VicHJvZ3JhbSBoYXZlIGJlZW4gcmVtb3ZlZCBiZWNhdXNlIHRoZSBhdHRyaWJ1dGUKCVRhc2tfQm9keV9Qcm9jZWR1cmUgaGFzIGJlZW4gbW92ZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgdGFzayB0eXBlCglvciB0YXNrIHN1YnR5cGUgZW50aXR5IHRvIGxlYXZlIGEgZmllbGQgZnJlZSB0byBzdG9yZSB0aGUgbGlzdAoJb2YgaW50ZXJmYWNlcyBpbXBsZW1lbnRlZCBieSBhIHRhc2sgKGZvciBBSS0zNDUpCglBZGQgRXhwcmVzc2lvbiBmaWVsZCB0byBOX1JhaXNlX1N0YXRlbWVudCBub2RlIGZvciBBZGEgMjAwNSBBSS0zNjEKCShOdWxsX0V4Y2x1c2lvbl9QcmVzZW50KTogQ2hhbmdlIHRvIEZsYWcxMSwgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aAoJZXhwcmVzc2lvbiBmbGFnIERvX1JhbmdlX0NoZWNrCgkoRXhjZXB0aW9uX0p1bmspOiBDaGFuZ2UgdG8gRmxhZzcgdG8gYWNjb21vZGF0ZSBhYm92ZSBjaGFuZ2UKCShCb3hfUHJlc2VudCwgRGVmYXVsdF9OYW1lLCBTcGVjaWZpY2F0aW9uLCBTZXRfQm94X1ByZXNlbnQsCglTZXRfRGVmYXVsdF9OYW1lLCBTZXRfU3BlY2lmaWNhdGlvbik6IEV4cGFuZCB0aGUgZXhwcmVzc2lvbgoJIlggaW4gTl9Gb3JtYWxfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbiIgaW50byB0aGUgY29ycmVzcG9uZGluZwoJdHdvIGNvbXBhcmlzb25zLiBSZXF1aXJlZCB0byB1c2UgdGhlIGNzaW5mbyB0b29sLgoKCSogZXhwX2NoMTEuYWRiIChFeHBhbmRfTl9SYWlzZV9TdGF0ZW1lbnQpOiBEZWFsIHdpdGggY2FzZSB3aGVyZQoJIndpdGggc3RyaW5nIiBnaXZlbi4KCgkqIHNlbV9jaDExLmFkYiAoQW5hbHl6ZV9SYWlzZV9TdGF0ZW1lbnQpOiBIYW5kbGUgY2FzZSB3aGVyZSBzdHJpbmcKCWV4cHJlc3Npb24gZ2l2ZW4uCgoJKiBwYXItY2gxMS5hZGIgKFBfUmFpc2VfU3RhdGVtZW50KTogUmVjb2duaXplIHdpdGggc3RyaW5nIGV4cHJlc3Npb24KCWluIDIwMDUgbW9kZQoKCSogZXhwX2NoOS5hZGIgKEJ1aWxkX1Rhc2tfUHJvY19TcGVjaWZpY2F0aW9uKTogTW9kaWZpZWQgdG8gdXNlIGVudGl0eQoJYXR0cmlidXRlIFRhc2tfQm9keV9Qcm9jZWR1cmUgcmF0aGVyIHRoYW4gdGhlIG9sZCBzZW1hbnRpYyBmaWVsZCB0aGF0Cgl3YXMgYXZhaWxhYmxlIGluIHRoZSB0YXNrX3R5cGVfZGVjbGFyYXRpb24gbm9kZS4KCgkqIHBhci1jaDEyLmFkYiAoUF9Gb3JtYWxfVHlwZV9EZWZpbml0aW9uKTogTW9kaWZpZWQgdG8gaGFuZGxlIGZvcm1hbAoJaW50ZXJmYWNlIHR5cGUgZGVmaW5pdGlvbnMuCgkoUF9Gb3JtYWxfRGVyaXZlZF9UeXBlX0RlZmluaXRpb24pOiBNb2RpZmllZCB0byBoYW5kbGUgdGhlIGxpc3Qgb2YKCWludGVyZmFjZXMuCgoJKiBwYXItY2g5LmFkYiAoUF9UYXNrKTogTW9kaWZpZWQgdG8gaGFuZGxlIHRoZSBsaXN0IG9mIGludGVyZmFjZXMgaW4gYQoJdGFzayB0eXBlIGRlY2xhcmF0aW9uLgoJKFBfUHJvdGVjdGVkKTogTW9kaWZpZWQgdG8gaGFuZGxlIHRoZSBsaXN0IG9mIGludGVyZmFjZXMgaW4gYQoJcHJvdGVjdGVkIHR5cGUgZGVjbGFyYXRpb24uCgoyMDA1LTAzLTE1ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoJICAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogYmluZGdlbi5hZGIgKEdlbl9NYWluX0MpOiBDaGFuZ2UgV0JJIF9fcG9zaXhfZXhpdCB0byBkZWNjJHBvc2l4X2V4aXQKCShHZW5fT3V0cHV0X0ZpbGVfQyk6IExpa2V3aXNlLgoJKEdlbl9NYWluX0MpOiBJc3N1ZSAjaW5jbHVkZSA8c3RkbGliLmg+IHRvIGF2b2lkIHdhcm5pbmcKCjIwMDUtMDMtMTUgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBjaGVja3MuYWRiIChHZXRfRV9GaXJzdF9Pcl9MYXN0KTogV2hlbiB0aGUgZXhwcmVzc2lvbiBiZWluZyByZXRyaWV2ZWQKCWlzIGFuIE5fUmFpc2VfQ29uc3RyYWludF9FcnJvciBub2RlLCBjcmVhdGUgYSBuZXcgY29weSBvZiBpdCB3aXRob3V0Cglnb2luZyB0aHJvdWdoIGEgY2FsbCB0byBEdXBsaWNhdGVfU3ViZXhwci4KCjIwMDUtMDMtMTUgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWRhY29yZS5jb20+CgkgICAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCSAgICBOaWNvbGFzIFNldHRvbiAgPHNldHRvbkBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJUFIgYWRhLzE5OTAwCglQUiBhZGEvMTk0MDgKCVBSIGFkYS8xOTE0MAoJUFIgYWRhLzIwMjU1CgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZmllbGQpOiBSZWplY3QgYWxpYXNlZCBjb21wb25lbnRzIHdpdGggYQoJcmVwcmVzZW50YXRpb24gY2xhdXNlIHRoYXQgcHJlc2NyaWJlcyBhIHNpemUgbm90IGVxdWFsIHRvIHRoZSByb3VuZGVkCglzaXplIG9mIHRoZWlyIHR5cGVzLgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX0NvbXBvbmVudCk6IEFsd2F5cyBsb29rIGF0CglPcmlnaW5hbF9SZWNvcmRfQ29tcG9uZW50IGlmIFByZXNlbnQgYW5kIG5vdCB0aGUgZW50aXR5LgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX1JlY29yZF9TdWJ0eXBlKTogUmV3b3JrIGhhbmRsaW5nIG9mIHN1YnR5cGVzCglvZiB0YWdnZWQgZXh0ZW5zaW9uIHR5cGVzIGJ5IG5vdCBtYWtpbmcgZmllbGQgZm9yIGNvbXBvbmVudHMgdGhhdCBhcmUKCWluc2lkZSB0aGUgcGFyZW50LgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfUmVjb3JkX1R5cGU+OiBGaXggdHlwbyBpbiB0aGUgYWxpZ25tZW50IGZvcm11bGEKCShnbmF0X3RvX2dudV9lbnRpdHkpIDxFX1ZhcmlhYmxlPjogRG8gbm90IGNvbnZlcnQgYWdhaW4gdGhlCglleHByZXNzaW9uIHRvIHRoZSB0eXBlIG9mIHRoZSBvYmplY3Qgd2hlbiB0aGUgb2JqZWN0IGlzIGNvbnN0YW50LgoJUmV2ZXJzZSBkZWZlcl9kZWJ1Z19pbmNvbXBsZXRlX2xpc3QgYmVmb3JlIHRyYXZlcnNpbmcgaXQsIHNvIHRoYXQgdHJlZXMKCWFyZSBwcm9jZXNzZWQgaW4gdGhlIG9yZGVyIGF0IHdoaWNoIHRoZXkgd2VyZSBhZGRlZCB0byB0aGUgbGlzdC4gVGhpcwoJb3JkZXIgaXMgaW1wb3J0YW50IHdoZW4gdXNpbmcgdGhlIHN0YWJzIGRlYnVnIGZvcm1hdC4KCUlmIHdlIGFyZSBkZWZlcnJpbmcgdGhlIG91dHB1dCBvZiBkZWJ1ZyBpbmZvcm1hdGlvbiwgYWxzbyBkZWZlciB0aGlzCglvdXRwdXQgZm9yIGEgZnVuY3Rpb24gcmV0dXJuIHR5cGUuCglXaGVuIGFkZGluZyBmaWVsZHMgdG8gYSByZWNvcmQsIHByZXZlbnQgZW1pdHRpbmcgZGVidWcgaW5mb3JtYXRpb24KCWZvciBpbmNvbXBsZXRlIHJlY29yZHMsIGVtaXQgdGhlIGluZm9ybWF0aW9uIG9ubHkgd2hlbiB0aGUgcmVjb3JkIGlzCgljb21wbGV0ZS4KCShjb21wb25lbnRzX3RvX3JlY29yZCk6IE5ldyBwYXJhbWV0ZXIgZGVmZXJfZGVidWcuCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfQXJyYXlfU3VidHlwZSk6IENhbGwgY29weV9hbGlhc19zZXQuCgkoZ25hdF90b19nbnVfZmllbGRfZGVjbCk6IE5ldyBmdW5jdGlvbi4KCShzdWJzdGl0dXRpb25fbGlzdCwgYW5ub3RhdGVfcmVwKTogQ2FsbCBpdC4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9SZWNvcmRfU3VidHlwZSk6IExpa2V3aXNlLgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX1JlY29yZF9UeXBlKTogTGlrZXdpc2UuCglObyBsb25nZXIgdXBkYXRlIGRpc2NyaW1pbmFudHMgdG8gbm90IGJlIGEgQ09NUE9ORU5UX1JFRi4KCShjb3B5X2FsaWFzX3NldCk6IFN0cmlwIHBhZGRpbmcgZnJvbSBpbnB1dCB0eXBlOyBhbHNvIGhhbmRsZQoJdW5jb25zdHJhaW5lZCBhcnJheXMgcHJvcGVybHkuCgoJKiBnaWdpLmggKHdyaXRlX3JlY29yZF90eXBlX2RlYnVnX2luZm8pOiBOZXcgZnVuY3Rpb24uCglDb252ZXJ0IHRvIHVzZSBBTlNJLXN0eWxlIHByb3RvdHlwZXMuIFJlbW92ZSB1bnVzZWQKCWRlY2xhcmF0aW9ucyBmb3IgZW1pdF9zdGFja19jaGVjaywgZWxhYl9hbGxfZ25hdCBhbmQKCXNldF9zZWNvbmRfZXJyb3JfZW50aXR5LgoJKGduYXRfdG9fZ251X2ZpZWxkX2RlY2wpOiBOZXcgZGVjbC4KCgkqIHV0aWxzLmMgKHdyaXRlX3JlY29yZF90eXBlX2RlYnVnX2luZm8pOiBOZXcgZnVuY3Rpb24uCgkoZmluaXNoX3JlY29yZF90eXBlKTogRGVsZWdhdGUgZ2VuZXJhdGlvbiBvZiBkZWJ1ZyBpbmZvcm1hdGlvbiB0bwoJd3JpdGVfcmVjb3JkX3R5cGVfZGVidWdfaW5mby4KCSh1cGRhdGVfcG9pbnRlcl90byk6IFJlbW92ZSB1bm5lZWRlZCBjYWxscyB0byByZXN0X29mX2RlY2xfY29tcGlsYXRpb24uCgkodXBkYXRlX3BvaW50ZXJfdG8pOiBGaXggcGFzdG8uCgkoY29udmVydCkgPFVOSU9OX1RZUEU+OiBBY2NlcHQgc2xpZ2h0IHR5cGUgdmFyaWF0aW9ucyB3aGVuCgljb252ZXJ0aW5nIHRvIGFuIHVuY2hlY2tlZCB1bmlvbiB0eXBlLgoKCSogZXhwX2NoMTMuYWRiIChFeHBhbmRfTl9GcmVlemVfRW50aXR5KTogSWYgRnJlZXplX1R5cGUgcmV0dXJucyBUcnVlLAoJcmVwbGFjZSB0aGUgTl9GcmVlemVfRW50aXR5IHdpdGggYSBudWxsIHN0YXRlbWVudC4KCgkqIGZyZWV6ZS5hZGIgKEZyZWV6ZV9FeHByZXNzaW9uKTogSWYgdGhlIGZyZWV6ZSBub2RlcyBhcmUgZ2VuZXJhdGVkCgl3aXRoaW4gYSBjb25zdHJhaW5lZCBzdWJjb21wb25lbnQgb2YgYW4gZW5jbG9zaW5nIHJlY29yZCwgcGxhY2UgdGhlCglmcmVlemUgbm9kZXMgaW4gdGhlIHNjb3BlIHN0YWNrIGVudHJ5IGZvciB0aGUgZW5jbG9zaW5nIHJlY29yZC4KCShVbmRlbGF5X1R5cGUpOiBOZXcgU3VicHJvZ3JhbS4KCShTZXRfU21hbGxfU2l6ZSk6IFBhc3MgVCwgdGhlIHR5cGUgdG8gbW9kaWZ5OyBhbGwgY2FsbGVycyBjaGFuZ2VkLgoJKEZyZWV6ZV9FbnRpdHksIEZyZWV6ZV9SZWNvcmRfVHlwZSk6IENoYW5nZSB0aGUgd2F5IHdlIGhhbmRsZSB0eXBlcwoJd2l0aGluIHJlY29yZHM7IGFsbG93IHRoZW0gdG8gaGF2ZSBmcmVlemUgbm9kZXMgaWYgdGhlaXIgYmFzZSB0eXBlcwoJYXJlbid0IGZyb3plbiB5ZXQuCgoJKiBleHBfdXRpbC5hZGIgKFJlbW92ZV9TaWRlX0VmZmVjdHMpOiBQcm9wZXJseSB0ZXN0IGZvcgoJRXhwYW5zaW9uX0RlbGF5ZWQgYW5kIGhhbmRsZSBjYXNlIHdoZW4gaXQncyBpbnNpZGUgYW4KCU5fUXVhbGlmaWVkX0V4cHJlc3Npb24uCgoJKiBzZW1fY2gzLmFkYiAoRGVyaXZlZF9UeXBlX0RlY2xhcmF0aW9uKTogTmV3IHByZWRpY2F0ZQoJQ29tZXNfRnJvbV9HZW5lcmljLCB0byByZWNvZ25pemUgYWNjdXJhdGVseSB0aGF0IHRoZSBwYXJlbnQgdHlwZSBpbiBhCglkZXJpdmVkIHR5cGUgZGVjbGFyYXRpb24gY2FuIGJlIHRyYWNlZCBiYWNrIHRvIGEgZm9ybWFsIHR5cGUsIGJlY2F1c2UKCWl0IGlzIG9uZSBvciBpcyBkZXJpdmVkIGZyb20gb25lLCBvciBiZWNhdXNlIGl0cyBjb21wbGV0aW9uIGlzIGRlcml2ZWQKCWZyb20gb25lLgoJKENvbnN0cmFpbl9Db21wb25lbnRfVHlwZSk6IElmIGNvbXBvbmVudCBjb21lcyBmcm9tIHNvdXJjZSBhbmQgaGFzIG5vCglleHBsaWNpdCBjb25zdHJhaW50LCBubyBuZWVkIHRvIGNvbnN0cmFpbiBpbiBpbiBhIHN1YnR5cGUgb2YgdGhlCgllbmNsb3NpbmcgcmVjb3JkLgoJKENvbnN0cmFpbl9BY2Nlc3MsIENvbnN0cmFpbl9BcnJheSk6IEFsbG93IGl0eXBlcyB0byBiZSBkZWxheWVkLgoJTWlub3IgY2hhbmdlIHRvIHByb3BhZ2F0ZSBJc19BZGFfMjAwNSBmbGFnCgoJKiB0cmFucy5jIChnbmF0X3RvX2dudSwgY2FzZSBOX0FnZ3JlZ2F0ZSk6IFZlcmlmeSB0aGF0CglFeHBhbnNpb25fRGVsYXllZCBpcyBGYWxzZS4KCShhc3NvY190b19jb25zdHJ1Y3Rvcik6IElnbm9yZSBmaWVsZHMgdGhhdCBoYXZlIGEKCUNvcnJlc3BvbmRpbmdfRGlzY3JpbWluYW50LgoJKGduYXRfdG9fZ251KSA8Tl9SZXR1cm5fU3RhdGVtZW50PjogUmVzdHJ1Y3R1cmUuIElmIHRoZQoJZnVuY3Rpb24gcmV0dXJucyAiYnkgdGFyZ2V0IiwgZGVyZWZlcmVuY2UgdGhlIHRhcmdldCBwb2ludGVyIHVzaW5nIHRoZQoJdHlwZSBvZiB0aGUgYWN0dWFsIHJldHVybiB2YWx1ZS4KCTxhbGw+OiBCZSBwcmVwYXJlZCBmb3IgYSBudWxsIGdudV9yZXN1bHQuCgkocHJvY2Vzc2VkX2lubGluZV9zdWJwcm9ncmFtcyk6IENoZWNrIGZsYWdfcmVhbGx5X25vX2lubGluZQoJaW5zdGVhZCBvZiBmbGFnX25vX2lubGluZS4KCShzZXRfc2Vjb25kX2Vycm9yX2VudGl0eSk6IFJlbW92ZSB1bnVzZWQgZnVuY3Rpb24uCgkoZ25hdF90b19nbnUsIGNhc2UgTl9TZWxlY3RlZF9Db21wb25lbnQpOiBDYWxsCglnbmF0X3RvX2dudV9maWVsZF9kZWNsLgoJKGFzc29jX3RvX2NvbnN0cnVjdG9yKTogTGlrZXdpc2UuCgoyMDA1LTAzLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cF9wYWtkLmFkYiAoQ3JlYXRlX1BhY2tlZF9BcnJheV9UeXBlKTogRG8gbm90IHNldAoJTXVzdF9CZV9CeXRlX0FsaWduZWQgZm9yIGNhc2VzIHdoZXJlIHdlIGRvIG5vdCBuZWVkIHRvIHVzZSBhCglTeXN0ZW0uUGFja19ubiB1bml0LgoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9DYWxsKTogQ2FsbCBFeHBhbmRfQWN0dWFscyBmb3IgZnVuY3Rpb25zIGFzIHdlbGwKCWFzIHByb2NlZHVyZXMuCglOZWVkZWQgbm93IHRoYXQgd2UgZG8gc29tZSBwcm9jZXNzaW5nIGZvciBJTiBwYXJhbWV0ZXJzIGFzIHdlbGwuIFRoaXMKCW1heSB3ZWxsIGZpeCBzb21lIHVucmVsYXRlZCBlcnJvcnMuCgkoRXhwYW5kX0NhbGwpOiBIYW5kbGUgY2FzZSBvZiB1bmFsaWduZWQgb2JqZWN0cyAoaW4gcGFydGljdWxhciB0aG9zZQoJdGhhdCBjb21lIGZyb20gcGFja2VkIGFycmF5cykuCgkoRXhwYW5kX0lubGluZWRfQ2FsbCk6IElmIHRoZSBzdWJwcm9ncmFtIGlzIGEgcmVuYW1pbmcgYXMgYm9keSwgYW5kIHRoZQoJcmVuYW1lZCBlbnRpdHkgaXMgYW4gaW5oZXJpdGVkIG9wZXJhdGlvbiwgcmUtZXhwYW5kIHRoZSBjYWxsIHVzaW5nIHRoZQoJb3JpZ2luYWwgb3BlcmF0aW9uLCB3aGljaCBpcyB0aGUgb25lIHRvIGNhbGwuCglEZXRlY3QgYXR0ZW1wdCB0byBpbmxpbmUgcGFyYW1ldGVybGVzcyByZWN1cnNpdmUgc3VicHJvZ3JhbS4KCShSZXByZXNlbnRlZF9Bc19TY2FsYXIpOiBGaXggdG8gd29yayBwcm9wZXJseSB3aXRoIHByaXZhdGUgdHlwZXMKCShJc19Qb3NzaWJseV9VbmFsaWduZWRfT2JqZWN0KTogTWFqb3IgcmV3cml0ZSB0byBnZXQgYSBtdWNoIG1vcmUKCWFjY3VyYXRlIGVzdGltYXRlLiBZaWVsZHMgVHJ1ZSBpbiBmYXIgZmV3ZXIgY2FzZXMgdGhhbiBiZWZvcmUsCglpbXByb3ZpbmcgdGhlIHF1YWxpdHkgb2YgY29kZSB0aGF0IGRlcGVuZHMgb24gdGhpcyB0ZXN0LgoKCSogZXhwX3V0aWwuYWRiIChLaWxsX0RlYWRfQ29kZSk6IEZvciBhIHBhY2thZ2UgZGVjbGFyYXRpb24sIGl0ZXJhdGUKCW92ZXIgYm90aCB2aXNpYmxlIGFuZCBwcml2YXRlIGRlY2xhcmF0aW9ucyB0byByZW1vdmUgdGhlbSBmcm9tIHRyZWUsCglhbmQgbWFyayBzdWJwcm9ncmFtcyBkZWNsYXJlZCBpbiBwYWNrYWdlIGFzIGVsaW1pbmF0ZWQsIHRvIHByZXZlbnQKCXNwdXJpb3VzIHVzZSBpbiBzdWJzZXF1ZW50IGNvbXBpbGF0aW9uIG9mIGdlbmVyaWMgdW5pdHMgaW4gdGhlIGNvbnRleHQuCgoJKiBleHBfdXRpbC5hZHM6IE1pbm9yIGNsZWFudXAgaW4gdmFyaWFibGUgbmFtZXMKCgkqIHNlbV9ldmFsLmFkcywgc2VtX2V2YWwuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCShDb21waWxlX1RpbWVfS25vd25fQm91bmRzKTogTmV3IGZ1bmN0aW9uCgoyMDA1LTAzLTE1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2g3LmFkYiAoQ29udmVydF9WaWV3KTogVXNlIGJhc2UgdHlwZXMgb2YgdW5kZXJseWluZyB0eXBlcyB3aGVuCglkZXRlcm1pbmluZyB3aGV0aGVyIGFuIHVuY2hlY2tlZCBjb252ZXJzaW9uIGlzIG5lZWRlZCBmb3IgdGhlIGFyZ3VtZW50CglvZiBhbiBpbml0aWFsaXphdGlvbiBjYWxsLgoKMjAwNS0wMy0xNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2ludHIuYWRiIChFeHBhbmRfVW5jX0NvbnZlcnNpb24pOiBBcyBhIHRhcmdldCB0eXBlLCB1c2UgdGhlIHR5cGUKCXRoYXQgYXBwZWFycyBpbiB0aGUgaW5zdGFudGlhdGlvbiByYXRoZXIgdGhhbiB0aGUgaW50ZXJuYWwgc3VidHlwZQoJZ2VuZXJhdGVkIGluIHRoZSB3cmFwcGVyIHBhY2thZ2UsIHRvIGF2b2lkIGFub21hbGllcyBpbiBnaWdpIHdoZW4gdGhlCgl0YXJnZXQgaXMgZGVyaXZlZCBmcm9tIGEgcHJpdmF0ZSB0eXBlIHdob3NlIGZ1bGwgdmlldyBpcyBhbiBhY2Nlc3MgdHlwZS4KCjIwMDUtMDMtMTUgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZXhwX3NtZW0uYWRiLCBzZW1fYXR0ci5hZGI6IFJlbW92ZSBPS19Gb3JfU3RyZWFtIGZsYWcsIG5vdCB1c2VkLAoJbm90IG5lZWRlZC4KCUFkZCBkb2N1bWVudGF0aW9uIHRvIHJlcGxhY2UgdGhlIHVzZSBvZiB0aGlzIGZsYWcKCUZpeCBrbHVkZ2UgZm9yIE1heGltdW1fQWxpZ25tZW50IG9uIHg4NiBzbyB0aGF0IGl0IGRvZXMgbm90IGFwcGx5IHRvCgl0aGUgeDg2XzY0LgoKMjAwNS0wMy0xNSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF90c3MuYWRzLCBleHBfdHNzLmFkYiAoRmluZF9Jbmhlcml0ZWRfVFNTKTogTmV3IHN1YnByb2dyYW0sIG1vdmVkCgloZXJlIGZyb20gZXhwX2F0dHIgc28gaXQgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGV4cF9hdHRyIGFuZCBleHBfZGlzdC4KCShUU1NfTmFtZXMpOiBSZW5hbWVkIGZyb20gT0tfVFNTX05hbWVzLiBUaGlzIGFycmF5IGNvbnRhaW5zIHRoZSBsaXN0IG9mCglhbGwgVFNTIG5hbWVzLCBub3QgYSBzdWJzZXQgdGhlcmVvZiwgYW5kIHRoZSBwcmV2aW91cyBuYW1lIGludHJvZHVjZWQKCWFuIHVubmVjZXNzYXJpbHkgY29uZnVzaW9uIHRoYXQgYSBkaXN0aW5jdGlvbiBtaWdodCBleGlzdCBiZXR3ZWVuCgkiT0siIFRTUyBuYW1lcyBhbmQgc29tZSAibm90IE9LIiBUU1MgbmFtZXMuCgoyMDA1LTAzLTE1ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogZ25hdGNob3AuYWRiIChMb2NhdGVfRXhlY3V0YWJsZSk6IE5vcm1hbGl6ZSB0aGUgcG9zc2libHkgVk1TIHN0eWxlCglDb21tYW5kX05hbWUuCgoyMDA1LTAzLTE1ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMjAyMjYKCVBSIGFkYS8yMDM0NAoJKiBpbml0LmMgKF9fZ25hdF9pbml0aWFsaXplKTogRG8gbm90IGNhbGwgX19nbmF0X2luc3RhbGxfU0VIX2hhbmRsZXIoKQoJd2hlbiBJTl9SVFMuIFRoaXMgaXMgdG8gd29yayBhcm91bmQgYSBib290c3RyYXAgcGF0aCBwcm9ibGVtLgoKCSogbWlzYy5jIChnbmF0X3BhcnNlX2ZpbGUpOiBDcmVhdGUgYSBTRUggKFN0cnVjdHVyZWQgRXhjZXB0aW9uIEhhbmRsZXIpCgl0YWJsZSBhbmQgcGFzcyBpdCB0byBfX2duYXRfaW5zdGFsbF9TRUhfaGFuZGxlcigpLgoJKGduYXRfaGFuZGxlX29wdGlvbik6IEFjY2VwdCBPUFRfZlJUU18sIG5vdCBPUFRfZlJUUy4KCgkqIGxhbmcub3B0OiBGaXggc3BlY2lmaWNhdGlvbiBvZiAtZlJUUz0uCgoyMDA1LTAzLTE1ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoJICAgIEJlcm5hcmQgQmFubmVyICA8YmFubmVyQGFkYWNvcmUuY29tPgoJICAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoJICAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCglQUiBhZGEvNjg1MgoJVGhpcyBjaGFuZ2Ugd29ya3MgZmluZSB3aGVuIGduYXRsaWIgaXMgYnVpbHQgZnJvbSB0aGUgZ2NjIGRpcmVjdG9yeSwKCWJ1dCBkb2VzIG5vdCB3b3JrIHdoZW4gdXNpbmcgdGhlIGxpYmFkYSBNYWtlZmlsZSwgc2luY2UgR0NDX0ZPUl9UQVJHRVQKCWlzIG5vdCBwYXNzZWQgdG8gYWRhL01ha2VmaWxlLmluLCBzbyBtb3JlIHdvcmsgaXMgbmVlZGVkIGJ5IGEKCU1ha2VmaWxlL2NvbmZpZ3VyZSBleHBlcnQuCgoJKiBNYWtlZmlsZS5pbihnbmF0bGliKTogVXNlICQoR0NDX0ZPUl9UQVJHRVQpIGZvciBjb21waWxpbmcgbGlicmFyeS4KCXNldCBHTUVNX0xJQiBvbiBpYTY0IGxpbnV4IHRvIGFkZCBvcHRpb25hbCBzdXBwb3J0IGZvciBnbmF0bWVtLgoJU2V0dXAgZ25hdGxpbmsgc3dpdGNoIC1NIGZvciB4ODZfNjQgbGludXgsIGFzIGl0IGlzIGFscmVhZHkgc2V0dXAKCWZvciBMaW51eCB4ODYuCgkoZ25hdGxpYi1zaGFyZWQtZGVmYXVsdCk6IFVzZSBHTkFUTElCQ0ZMQUdTIGFzIHdlbGwuCglSdW4gcmFubGliIG9uIGxpYmdjY3ByZWZpeC5hCglEZWZpbmUgUFJFRklYX09CSlMgZm9yIERhcndpbiwgdG8gYnVpbGQgbGliZ2NjcHJlZml4LgoJKEFEQV9JTkNMVURFX1NSQ1MpOiBTcGxpdCBBZGEgcGFja2FnZXMuCgoyMDA1LTAzLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogQWRkIGctdXRmXzMyIHVuaXQgZm9yIGduYXQgYW5kIGduYXRiaW5kCgoJKiBpbXB1bml0LmFkYjogQWRkIEdOQVQuVVRGXzMyCgoJKiBzY25nLmFkYjogVXNlIGduYXQudXRmXzMyIGluc3RlYWQgb2Ygd2lkZWNoYXIgZm9yIHV0Zl8zMiBzdHVmZgoKCSogd2lkZWNoYXIuYWRzLCB3aWRlY2hhci5hZGI6IFJlbW92ZSByZWR1bmRhbnQgVVRGLTMyIHRhYmxlcyAoc2NuZwoJbm93IHVzZXMgR05BVC5VVEZfMzIpLgoKCSogZy11dGZfMzIuYWRzLCBnLXV0Zl8zMi5hZGI6IFRoaXMgaXMgYSBuZXcgdW5pdCB3aXRoIGZ1bGwKCWNhcGFiaWxpdGllcyBmb3IgY2F0ZWdvcml6aW5nIGNoYXJhY3RlcnMgdXNpbmcgVW5pY29kZSBjYXRlZ29yaWVzCgoyMDA1LTAzLTE1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKEJ1aWxkX0FuY2VzdG9yX05hbWUpOiBJZiB0aGUgYW5jZXN0b3IgaXMgYW4KCWluc3RhbnRpYXRpb24gdGhhdCBoYXMgYmVlbiByZXdyaXR0ZW4gYXMgYSBwYWNrYWdlIGJvZHksIHJldHJpZXZlIHNwZWMKCXRvIGdlbmVyYXRlIHByb3BlciBuYW1lIGZvciBpbXBsaWNpdF93aXRoX2NsYXVzZS4KCShJbnN0YWxsX1BhcmVudHMpOiBSZWNvZ25pemUgYSBwYXJlbnQgdGhhdCBpcyBhbiBpbnN0YW50aWF0aW9uIGJ1dCBoYXMKCWJlZW4gcmV3cml0dGVuIGFzIGEgcGFja2FnZSBkZWNsYXJhdGlvbiBkdXJpbmcgYW5hbHlzaXMuCgoyMDA1LTAzLTE1ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoMTIuYWRiIChJbnN0YW50aWF0ZV9PYmplY3QpOiBJZiB0aGUgYW5hbHlzaXMgb2YgdGhlIGFjdHVhbAoJcGFyYW1ldGVyIHJlcG9ydGVkIHNvbWUgZXJyb3Igd2UgaW1tZWRpYXRlbHkgcmV0dXJuLiBUaGlzIGltcHJvdmVzIHRoZQoJYmVoYXZpb3VyIG9mIHRoZSBmcm9udGVuZCBpbiBjYXNlIG9mIGVycm9ycy4KCShJbnN0YWxsX1BhcmVudCwgUmVtb3ZlX1BhcmVudCk6IEludHJvZHVjZSBuZXcgZmxhZwoJUGFyZW50X1VuaXRfVmlzaWJsZSwgdG8gcHJlc2VydmUgdGhlIHByb3BlciB2aXNpYmlsaXR5IG9mIHRoZSB1bHRpbWF0ZQoJYW5jZXN0b3Igb2YgYSBnZW5lcmljIGNoaWxkIHVuaXQsIHdoZW4gdGhlIGNoaWxkIGlzIGJlaW5nIGluc3RhbnRpYXRlZC4KCShJbmxpbmVfSW5zdGFuY2VfQm9keSk6IElmIHdlIGFyZSBjb21waWxpbmcgdGhlIHByaXZhdGUKCXBhcnQgb3IgdGhlIGJvZHkgb2YgYSBjaGlsZCB1bml0LCByZXN0b3JlIHRoZSBwcm9wZXIgdmlzaWJpbGl0eSBvZiB0aGUKCXBhcmVudHMgYWZ0ZXIgY29tcGlsaW5nIHRoZSBpbnN0YW5jZSBib2R5LgoKMjAwNS0wMy0xNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMTU2MDgKCSogc2VtX3V0aWwuYWRiIChHZXRfVGFza19Cb2R5X1Byb2NlZHVyZSk6IFR5cGUgbWF5IGJlIHRoZSBjb21wbGV0aW9uCglvZiBhIHByaXZhdGUgdHlwZSwgaW4gd2hpY2ggY2FzZSBpdCBpcyB1bmRlcmx5aW5nX3R5cGUgdGhhdCBkZW5vdGVzCgl0aGUgcHJvcGVyIHRhc2suIEFsc28gbW9kaWZpZWQgdG8gdXNlIHRoZSBuZXcgZW50aXR5IGF0dHJpYnV0ZQoJdGhhdCBpcyBkaXJlY3RseSBhdmFpbGFibGUgaW4gdGhlIHRhc2sgdHlwZSBhbmQgdGFzayBzdWJ0eXBlIGVudGl0aWVzCgkoQnVpbGRfQWN0dWFsX1N1YnR5cGVfT2ZfQ29tcG9uZW50KTogSGFuZGxlIHByb3Blcmx5IG11bHRpZGltZW5zaW9uYWwKCWFycmF5cyB3aGVuIG90aGVyIGRpbWVuc2lvbnMgdGhhbiB0aGUgZmlyc3QgYXJlIGNvbnN0cmFpbmVkIGJ5CglkaXNjcmltaW5hbnRzIG9mIGFuIGVuY2xvc2luZyByZWNvcmQuCgkoSW5zZXJ0X0V4cGxpY2l0X0RlcmVmZXJlbmNlKTogSWYgdGhlIHByZWZpeCBpcyBhbiBpbmRleGVkIGNvbXBvbmVudCBvcgoJYSBjb21iaW5hdGlvbiBvZiBpbmRleGVkIGFuZCBzZWxlY3RlZCBjb21wb25lbnRzLCBmaW5kIHVsdGltYXRlIGVudGl0eQoJYW5kIGdlbmVyYXRlIHRoZSBhcHByb3ByaWF0ZSByZWZlcmVuY2UgZm9yIGl0LCB0byBzdXBwcmVzcyBzcHVyaW91cwoJd2FybmluZ3MuCgkoTm90ZV9Qb3NzaWJsZV9Nb2RpZmljYXRpb24pOiBJZiBhbiBlbnRpdHkgbmFtZSBoYXMgbm8gZW50aXR5LCByZXR1cm4uCgkoSXNfVmFyaWFibGUpOiBBIGZ1bmN0aW9uIGNhbGwgbmV2ZXIgZGVub3RlcyBhIHZhcmlhYmxlLgoJKFJlcXVpcmVzX1RyYW5zaWVudF9TY29wZSk6IEZvciByZWNvcmQgdHlwZXMsIHJlY3Vyc2Ugb25seSBvbgoJY29tcG9uZW50cywgbm90IG9uIGludGVybmFsIHN1YnR5cGVzIHRoYXQgbWF5IGhhdmUgYmVlbiBnZW5lcmF0ZWQgZm9yCgljb25zdHJhaW5lZCBjb21wb25lbnRzLgoKMjAwNS0wMy0xNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNC5hZGIgKEFuYWx5emVfQ29uY2F0ZW5hdGlvbik6IERvIG5vdCBjb25zaWRlciBvcGVyYXRvcnMgbWFya2VkCglFbGltaW5hdGVkIGFzIGNhbmRpZGF0ZXMgZm9yIHJlc29sdXRpb24uIEJvdGggZWZmaWNpZW50LCBhbmQgYXZvaWRzCglhbm9tYWxpZXMgd2l0aCBvcGVyYXRvcnMgZGVjbGFyZWQgaW4gZGVsZXRlZCBjb2RlLgoJKFByb2Nlc3NfSW1wbGljaXRfRGVyZWZlcmVuY2VfUHJlZml4KTogVXNlIHRoaXMgcHJvY2VkdXJlIHdoZW5ldmVyCglleHBhbnNpb24gaXMgZGlzYWJsZWQgKGFzIHdoZW4gY29tcGlsaW5nIGEgZ2VuZXJpYykgdG8gcHJldmVudCBzcHVyaW91cwoJd2FybmluZ3Mgb24gcHJlZml4ZXMgb2Ygc2VsZWN0ZWQgY29tcG9uZW50cy4KCjIwMDUtMDMtMTUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDYuYWRiIChJc19Qcml2YXRlX0RlY2xhcmF0aW9uKTogVmVyaWZ5IHRoYXQgdGhlIGRlY2xhcmF0aW9uIGlzCglhdHRhY2hlZCB0byBhIGxpc3QgYmVmb3JlIGNoZWNraW5nIHdoZXRoZXIgaXQgYXBwZWFycyBpbiB0aGUgcHJpdmF0ZQoJZGVjbGFyYXRpb25zIG9mIHRoZSBjdXJyZW50IHBhY2thZ2UuCgkoTWFrZV9JbmVxdWFsaXR5X09wZXJhdG9yKTogSW5zZXJ0IGRlY2xhcmF0aW9uIGluIHByb3BlciBkZWNsYXJhdGl2ZQoJbGlzdCByYXRoZXIgdGhhbiBqdXN0IHNldHRpbmcgdGhlIFBhcmVudCBmaWVsZCwgc28gdGhhdAoJSXNfUHJpdmF0ZV9EZWNsYXJhdGlvbiBjYW4gaGFuZGxlIGl0IHByb3Blcmx5LgoKMjAwNS0wMy0xNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoOC5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9SZW5hbWluZyk6IEluIGEgZ2VuZXJpYywgaWYgdGhpcyBpcwoJYSByZW5hbWluZyBhIGJvZHksIGNoZWNrIHRoYXQgdGhlIHJlbmFtZWQgc3VicHJvZ3JhbSBpbiBub3QgaW50cmluc2ljLgoJKEZpbmRfRGlyZWN0X05hbWUpOiBJZiBzZXZlcmFsIHVzZV92aXNpYmxlIGVudGl0aWVzIGhpZGUKCWVhY2ggb3RoZXIsIGFuZCB0aGUgY29udGV4dCBpcyBhIHByZWRlZmluZWQgZmlsZSBjb21waWxlZCB0aHJvdWdoCglydHNmaW5kLCBrZWVwIG9ubHkgdGhlIGVudGl0eSB0aGF0IGNvbWVzIGZyb20gYSBwcmVkZWZpbmVkIGZpbGUuCgoyMDA1LTAzLTE1ICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoKCSogcy1mYXRnZW4uYWRiIChWYWxpZCk6IEV4dGVuZCBzcGVjaWFsIGV4Y2VwdGlvbnMgdG8gYWNjb3VudCBmb3IgbG9uZwoJbG9uZyBmbG9hdCBwYWRkaW5nIHRvIGFsc28gY292ZXIgQU1ENjQgYW5kIElBNjQuCgoyMDA1LTAzLTE1ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBzLWltZ3djaC5hZGI6IEFkZCB3aXRoIGFuZCB1c2Ugb2YgSW50ZXJmYWNlcy4KCShJbWdfV2lkZV9DaGFyYWN0ZXIpOiBDaGFuZ2UgdHlwZSBvZiBWYWwgdG8gVW5zaWduZWRfMTYuCgkoSW1nX1dpZGVfV2lkZV9DaGFyYWN0ZXIpOiBDaGFuZ2UgdHlwZSBvZiBWYWwgdG8gVW5zaWduZWRfMzIuCgoyMDA1LTAzLTE1ICBNYXR0aGV3IEdpbmdlbGwgIDxnaW5nZWxsQGFkYWNvcmUuY29tPgoKCSogc3lzZGVwLmM6IEltcGxlbWVudCBfX2duYXRfbG9jYWx0aW1lX3IgYXMgY2FsbCB0byBsb2NhbHRpbWVfciBvbiBBSVguCgoyMDA1LTAzLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHVzYWdlLmFkYjogQWRkIG1pc3NpbmcgbGluZXMgZm9yIC1nbmF0OTUgYW5kIC1nbmF0MDUgc3dpdGNoZXMKCgkqIHNlbV9jaDcuYWRiOiBNaW5vciBjaGFuZ2UgdG8gcHJvcGFnYXRlIElzX0FkYV8yMDA1IGZsYWcKCgkqIGktYy5hZGI6IENsYXJpZnkgdGhhdCBBSS0yNTggYmVoYXZpb3IgaXMgYWxzbyBpbnRlbmRlZCBpbiBBZGEgOTUKCjIwMDUtMDMtMTUgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcy1iaXRvcHMuYWRiLCBzLWJpdG9wcy5hZHMsCglzLXRhcHJvcC1vczIuYWRiLCBzLWludG1hbi12bXMuYWRzLCBzLWludG1hbi12eHdvcmtzLmFkcywKCXMtdGFwcm9wLXZ4d29ya3MuYWRiLCBhLWNhbGRlbC5hZHMsIGEtY2FsZW5kLmFkYiwgYS10YXNhdHQuYWRiLAoJdGJ1aWxkLmFkcywgcy1maW5pbXAuYWRiLCBzLWltZ3djaC5hZGIsIHMtaW50bWFuLmFkcywgcy1pbnRtYW4uYWRzLAoJcy1tZW1vcnkuYWRiLCBzLXNvZmxpbi5hZHMsIHMtdGFhc2RlLmFkcywgcy10YXByb2IuYWRiLCBzLXRhcHJvcC5hZHMsCglzLXRhcHJvcC5hZHMsIHMtdGFzaW5pLmFkYiwgcy10YXNpbmkuYWRzLCBzLXRhc2luaS5hZHMsIHMtdGFzaW5pLmFkcywKCXMtdGFza2luLmFkcywgcy10YXNyZW4uYWRiLCBzLXRhc3N0YS5hZGIsIHMtdGFzc3RhLmFkcywgcy10YXNzdGEuYWRzLAoJcy10YXN1dGkuYWRzLCBzLXRhdGFhdC5hZHMsIHMtdGF0YWF0LmFkcywgcy10YXRhYXQuYWRzLCBzLXRhdGFhdC5hZHMsCglzLXRwb2Jlbi5hZGIsIHMtdHBvYmVuLmFkYiwgcy10cG9ib3AuYWRzOiBVcGRhdGUgY29tbWVudHMuIE1pbm9yCglyZWZvcm1hdHRpbmcuCgoyMDA1LTAzLTE1ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoKCSogdXRpbHMyLmMgKGJ1aWxkX2JpbmFyeV9vcCk6IEZpeCB0eXBvLgoKMjAwNS0wMy0xNSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIHMtY3J0bC5hZHMgKHBvcGVuLHBjbG9zZSk6IE5ldyBpbXBvcnRzLgoKMjAwNS0wMy0xNSAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFkYWNvcmUuY29tPgoKCSogY29tcGVyci5hZGIgKENvbXBpbGVyX0Fib3J0KTogcmVtb3ZlIHJlZmVyZW5jZXMgdG8gb2Jzb2xldGUKCXByb2NlZHVyZXMgaW4gdGhlIGJ1ZyBib3hlcyBmb3IgdmFyaW91cyBHTkFUIGJ1aWxkcy4KCjIwMDUtMDMtMTUgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYjogU2F2ZSBhcyBVbml4IHRleHQgZmlsZSwgbm90IGFzIERPUyB0ZXh0IGZpbGUKCjIwMDUtMDMtMTUgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoJICAgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEN5cmlsbGUgQ29tYXIgIDxjb21hckBhZGFjb3JlLmNvbT4KCSAgICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IFJlbW92ZSBleHRlbmRlZCBpbmxpbmUgYXNzZW1ibHkgZXhhbXBsZSwgYXMgaXQgd2FzIGZhcgoJdG9vIHNwZWNpZmljIGFuZCBsb25nLXdpbmRlZCB0byBiZSBhcHByb3ByaWF0ZSBmb3IgdGhlIEdOQVQgVXNlcidzCglHdWlkZS4KCVdhcm4gYWJvdXQgdXNlIG9mIEdDQyBzd2l0Y2hlcyBub3QgZG9jdW1lbnRlZCBpbiB0aGUgR05BVCBVc2VyJ3MgR3VpZGUsCglhcyB0aGVzZSBtYXkgY2F1c2UgZ2VuZXJhdGVkIGNvZGUgdG8gbm90IGNvbmZvcm0gdG8gQWRhIHNlbWFudGljcy4KCVJlbW92ZSBtZW50aW9uIG9mIC1nZHdhcmYtMiBmb3Igc3BhcmM2NCwgc2luY2UgdGhpcyBpcyBub3cgdGhlIGRlZmF1bHQuCglBZGQgZG9jdW1lbnRhdGlvbiBmb3IgLWduYXQ5NSBhbmQgLWduYXQwNSBzd2l0Y2hlcwoJUmVtb3ZlIHBhcmFncmFwaCBkb2N1bWVudGluZyBvYnNvbGV0ZSB3YXkgdG8gcmVmZXIgdG8gdGhpcmQgcGFydHkKCWxpYnJhcmllcy4KCUFkZCBhIGZldyByZWZlcmVuY2VzIHRvIEFkYV8wNSB0aGF0IHdlcmUgbWlzc2luZy4KCVVwZGF0ZSBkb2N1bWVudGF0aW9uIG9uIC1nbmF0Wi8tZ25hdEwuCglEb2N1bWVudCBsaW1pdGF0aW9uIHdoZW4gdXNpbmcgLW02NCB1bmRlciBTb2xhcmlzLgoJQ2hhbmdlIHRoZSAiTmFtZSBDYXNpbmciIHN1YnNlY3Rpb24gb2YgdGhlIHByZXR0eS1wcmludGVyIHNlY3Rpb24KCWFjY29yZGluZyB0byB0aGUgY2hhbmdlcyBpbiB0aGUgZGljdGlvbmFyeSBwcm9jZXNzaW5nLgoKCSogZ25hdF9ybS50ZXhpOiBEb2N1bWVudCB0aGUgQWRhXzA1IHByYWdtYS4KCVNlY3Rpb24gb24gcmVjb3JkIHJlcHJlc2VudGF0aW9uIGNsYXVzZXMgZGVzY3JpYmVzIHRoZSBuZXcgbW9yZQoJcmVsYXhlZCBydWxlcyBhYm91dCBwbGFjZW1lbnQgb2YgbGFyZ2UgcGFja2VkIGJpdCBhcnJheSBjb21wb25lbnRzLgoJQWRkIGRvY3VtZW50YXRpb24gb2YgR05BVC5VVEZfMzIKCjIwMDUtMDMtMTIgIERhbmllbCBCZXJsaW4gPGRiZXJsaW5AZGJlcmxpbi5vcmc+CgoJKiBtaXNjLmMgKGduYXRfcG9zdF9vcHRpb25zKTogVHVybiBvZmYgc3RydWN0dXJhbAoJYWxpYXNpbmcgZm9yIG5vdy4KCjIwMDUtMDMtMDggIExhdXJlbnQgR3VlcmJ5IDxsYXVyZW50QGd1ZXJieS5uZXQ+CgoJKiBzeXN0ZW0tbGludXgtc3BhcmMuYWRzOiBGaXggdHlwbyBpbiBwcmV2aW91cyBjb21taXQuCgoyMDA1LTAzLTA3ICBKYW1lcyBBLiBNb3JyaXNvbiA8cGh5dGhvbkBnY2MuZ251Lm9yZz4KCSAgICBMYXVyZW50IEd1ZXJieSA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8yMDAzNQoJKiBzeXN0ZW0tbGludXgtc3BhcmMuYWRzOiBOZXcuCgkqIE1ha2VmaWxlLmluOiBBZGQgc3BhcmMgbGludXggZW50cnkuCgoyMDA1LTAyLTI3ICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogc2VoX2luaXQuYyAoX19nbmF0X1NFSF9lcnJvcl9oYW5kbGVyKTogTWFyayB0aGlyZCBhbmQgZm91cnRoCglwYXJhbWV0ZXJzIGFzIHVudXNlZC4KCjIwMDUtMDItMjYgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoJUGFydGlhbCBtZXJnZSBmcm9tIGxpYmFkYS1nbmF0dG9vbHMtYnJhbmNoOgoKCTIwMDQtMTItMDIgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoJKiBNYWtlZmlsZS5pbjogTW92ZSBnbmF0dG9vbHN7MSwxcmUsMiwzLDR9IGFuZCBjb3JyZXNwb25kaW5nIGZsYWdzCglpbnRvIGNvZGUgaW4gZ25hdHRvb2xzL01ha2VmaWxlLmluLiAgUmVtb3ZlIGRpcmVjdCBkZXBlbmRlbmNpZXMgb24KCXN0YW1wLXRvb2xzIGJ5IHRvb2xzIGNsYXVzZXMuCgkyMDA0LTEyLTAyICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCSogY29uZmlnLWxhbmcuaW46IEFkZCBnbmF0dG9vbHMgdG8gJGxhbmdfZGlycy4KCjIwMDUtMDItMTMgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGFkYS8xOTk0MgoJKiB1dGlscy5jIChnbmF0X3R5cGVfZm9yX21vZGUpOiBSZXR1cm4gbnVsbCBpbnN0ZWFkIG9mIElDRSBiZWNhdXNlCgl3ZSBhc2tlZCBmb3IgYW4gdW5rbm93biBtb2RlLgoKMjAwNS0wMi0xMiAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHV0aWxzLmMgKGduYXRfdHlwZV9mb3JfbW9kZSk6IFJldHVybiBOVUxMIGZvciBDT01QTEVYIG1vZGVzOwoJdmFsaWRhdGUgU0NBTEFSX0lOVF9NT0RFX1AgYmVmb3JlIGNhbGxpbmcgZ25hdF90eXBlX2Zvcl9zaXplLgoKMjAwNS0wMi0xMCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogaW5pdC5jIChfX2duYXRfaW5pdGlhbGl6ZSk6IE1hcmsgcGFyYW1ldGVyIGFzIHVudXNlZC4KCjIwMDUtMDItMDkgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBnLWV4cGVjdC12bXMuYWRiIChOb25fQmxvY2tpbmdfU3Bhd24pOiBTZXBhcmF0ZSBvdXQuCgkqIGctZW5ibHNwLXZtcy1hbHBoYS5hZGIgZy1lbmJsc3Atdm1zLWlhNjQuYWRiOiBOZXcgc3VidW5pdHMuCgoyMDA1LTAyLTA5ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogZ25hdGNob3AuYWRiIChkdXAsIGR1cDIpLAoJZy1kaXJvcGUuYWRiIChjbG9zZWRpciwgb3BlbmRpciwgcm1kaXIpOiBSZWZlcmVuY2UgdmlhIFN5c3RlbS5DUlRMLgoKCSogZ25hdGxici5hZGIgKG1rZGlyKSwKCW1saWItdGd0LXZtcy1pYTY0LmFkYiAocG9wZW4sIHBsb3NlKTogIEltcG9ydCB3aXRoIGRlY2MkIHByZWZpeC4KCgkqIHMtY3J0bC5hZHMgKGNsb3NkaXIsIGR1cCwgZHVwMiwgb3BlbmRpciwgcm1kaXIpOiBJbXBvcnQuCgoyMDA1LTAyLTA5ICBEb3VnIFJ1cHAgIDxydXBwQGFkYWNvcmUuY29tPgoKCSogcy10cG9wZGUtdm1zLmFkYjogQWRkIHByYWdtYSBXYXJuaW5ncyAoT2ZmKSBmb3IgVGFza19JZCBjb252ZXJzaW9ucy4KCjIwMDUtMDItMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgkgICAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGFkYWNvcmUuY29tPgoJICAgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCSAgICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgkgICAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGctenN0c3BsLmFkczogTmV3IGZpbGUuCgoJKiBhLWNoYWhhbi5hZHMsIGEtY2hhaGFuLmFkYjogQWRkIGRlY2xhcmF0aW9ucyBmcm9tIEFJLTI4NQoKCSogYS1zdHJpbmcuYWRzOiBBZGQgcHJhZ21hIEFkYV8wNSBmb3Igd2lkZV93aWRlX3NwYWNlIHRvIGdldCB3YXJuaW5nIGluCglBZGEgOTUgbW9kZQoJQWRkIGRlZmluaXRpb24gb2YgV2lkZV9XaWRlX1NwYWNlIGZvciBBSS0yODUKCgkqIGltcHVuaXQuYWRzLCBpbXB1bml0LmFkYiwgc2VtX2NoMTAuYWRiOiBDb21wbGV0ZSByZXdyaXRlIGFuZCBuZXcKCWludGVyZmFjZSAodG8gc3VwcG9ydCBBZGEgOTUgYW5kIEFkYSAyMDA1IHVuaXRzKS4KCUFkZCBVbmJvdW5kZWRfSU8gZmlsZXMKCUFkZCBlbnRyaWVzIGZvciBXaWRlX1dpZGUgcGFja2FnZXMgZm9yIEFJLTI4NQoJQWRkIGxpc3Qgb2YgY29udGFpbmVycyBwYWNrYWdlcyB0byBBZGEgMjAwNSB1bml0IGxpc3QKCgkqIGEtc3d1d3RpLmFkcywgYS1zd3V3dGkuYWRiLCBhLXN1dGVpby5hZHMsIGEtc3V0ZWlvLmFkYjogVXBkYXRlcyB0bwoJc3VwcG9ydCBuZXcgVW5ib3VuZGVkX0lPIHBhY2thZ2UgY2xlYW5seS4KCgkqIGctdXRmXzMyLmFkcywgZy11dGZfMzIuYWRiOiBOZXcgZmlsZXMuCgoJKiBNYWtlZmlsZS5ydGw6IEFkZCBlbnRyeSBmb3IgZy11dGZfMzIKCUFkZCBuZXcgZmlsZXMgZm9yIFVuYm91bmRlZF9JTwoJQWRqdXN0IG1ha2UgZmlsZSBmb3IgbmV3IEFJLTI4NSB3aWRlIHdpZGUgcGFja2FnZXMKCUFkZCBBSS0zMDIgY29udGFpbmVycyB0byB0aGUgcnVuIHRpbWUuCgoJKiBhLXN0d2liby5hZGIsIGEtc3R3aWJvLmFkcywgYS1zdHdpc3UuYWRiLCBhLXN0d2lzdS5hZHMsCglhLXN0cmJvdS5hZHMsIGEtc3RyYm91LmFkYiwgYS1zdHJzdXAuYWRzLCBhLXN0cnN1cC5hZGI6IE5ldwoJc3VicHJvZ3JhbXMgZm9yIEFJLTMwMS4KCgkqIGEtc3R3aXVuLmFkYiwgYS1zdHdpdW4uYWRzOiBNaW5vciByZWZvcm1hdHRpbmcuCgoJKiBhLXN0dW5hdS5hZHM6IE1pbm9yIGNvbW1lbnQgY29ycmVjdGlvbgoKCSogcnRzZmluZC5hZHMsIHJ0c2ZpbmQuYWRiOiBBZGQgZGVmaW5pdGlvbnMgZm9yIFdpZGVfV2lkZSBhdHRyaWJ1dGVzCglldGMuCglBbHNvIGV4dGVuZCBUZXh0X0lPX0tsdWRnZSB0byBzdXBwb3J0IFdpZGVfV2lkZV9UZXh0X0lPCgkoQ2hlY2tfUlBDKTogVXBkYXRlIHRvIG1hdGNoIGNoYW5nZXMgaW4gZXhwYW5kZWQgY29kZS4KCUNsZWFuIHVwIHVudXNlZCBlbnRpdHkuCgoJKiBleHBfY2gzLmFkcywgZXhwX2NoMy5hZGI6IEZpeCB2YXJpb3VzIHBsYWNlcyB3aGVyZSBXaWRlX1dpZGVfU3RyaW5nCgl3YXMgbm90IHRha2VuIGludG8gYWNjb3VudC4KCVRoaXMgaW5jbHVkZXMgcHJvcGVyIGluaXRpYWxpemF0aW9uIHdpdGggTm9ybWFsaXplX1NjYWxhcnMuCgkoR2V0X1NpbXBsZV9Jbml0X1ZhbCk6IE1ham9yIHJld3JpdGUgZm9yIGluaXRpYWxpemUgc2NhbGFycyBhbmQKCW5vcm1hbGl6ZSBzY2FsYXJzIGNhc2VzIChwYXJ0aWN1bGFybHkgdGhlIGxhdHRlcikgdG8gZG8gYSBiZXR0ZXIgam9iCglvZiBmaW5kaW5nIGludmFsaWQgcmVwcmVzZW50YXRpb25zLgoKCSogcy1zY2F2YWwuYWRzLCBzLXNjYXZhbC5hZGI6IEFkZCB2YWx1ZXMgZm9yIHplcm8gaW52YWxpZCB2YWx1ZXMKCgkqIHMtc3Ryb3BzLmFkcywgcy1zdHJvcHMuYWRiOiBSZW1vdmUgc3RyaW5nIG5vcm1hbGl6ZSByb3V0aW5lcywgbmV2ZXIKCXVzZWQKCgkqIGV4cF9kaXN0LmFkYjogQWRkIHN1cHBvcnQgZm9yIHdpZGUgd2lkZSBjaGFyYWN0ZXIgdHlwZQoJKEV4cGFuZF9SZWNlaXZpbmdfU3R1YnNfQm9kaWVzKTogRm9yIGEgcGFja2FnZSBkZWNsYXJhdGlvbiB0aGF0IGhhcyBhCglwcml2YXRlIHBhcnQsIGdlbmVyYXRlIHN0dWIgYm9kaWVzIGF0IHRoZSBlbmQgb2YgdGhlIHByaXZhdGUgcGFydCwKCW5vdCB0aGUgdmlzaWJsZSBwYXJ0LgoJKEFkZF9SQUNXX1ByaW1pdGl2ZV9PcGVyYXRpb25zX0FuZF9Cb2RpZXMpOiBBZGQgbGFzdCBtaXNzaW5nIGNvZGUgZm9yCglQb2x5T1JCIHN1cHBvcnQuCgkoQWRkX09ial9SUENfUmVjZWl2ZXJfQ29tcGxldGlvbik6IEFkZCBQQ1Mtc3BlY2lmaWMgc3VicHJvZ3JhbXMgYW5kCglnZW5lcmljIHdyYXBwZXIgdG8gZXhlY3V0ZSBmaW5hbCBwcm9jZXNzaW5nIGFmdGVyIGNvbXBsZXRpbmcgdGhlCglleHBhbnNpb24gb2YgdGhlIFJQQyByZWNlaXZlciBmb3IgYW4gUkFDVy4KCgkqIHNuYW1lcy5oLCBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBBZGQgZGVmaW5pdGlvbnMgZm9yIHdpZGVfd2lkZQoJcGFja2FnZXMgYW5kIGF0dHJpYnV0ZXMuCgkoUHJlc2V0X05hbWVzKTogQWRkaXRpb24gb2YgdGhlIG5ldyByZXNlcnZlZCB3b3JkcyBvZiBBZGEgMjAwNSwKCXRoYXQgaXMgaW50ZXJmYWNlLCBvdmVycmlkaW5nIGFuZCBzeW5jaHJvbml6ZWQuCgkoR2V0X1ByYWdtYV9JZCk6IEdpdmUgc3VwcG9ydCB0byB0aGUgdXNlIG9mIHRoZSBuZXcgcmVzZXJ2ZWQgd29yZAoJImludGVyZmFjZSIgYXMgYSBwcmFnbWEgbmFtZS4KCShJc19QcmFnbWFfTmFtZSk6IEdpdmUgc3VwcG9ydCB0byB0aGUgdXNlIG9mIHRoZSBuZXcgcmVzZXJ2ZWQgd29yZAoJImludGVyZmFjZSIgYXMgYSBwcmFnbWEgbmFtZS4KCShQcmVzZXRfTmFtZXMpOiBBZGQgc3RyZWFtX3NpemUgc3RyaW5nIGZvciB0aGUgU3RyZWFtX1NpemUgQWRhMjAwNQoJYXR0cmlidXRlIGltcGxlbWVudGF0aW9uLgoKCSogZXhwX2F0dHIuYWRiIChFeHBhbmRfQXR0cmlidXRlX1JlZmVyZW5jZSk6IERvIG5vdCBhcHBseSB2YWxpZGl0eQoJY2hlY2tzIHRvIGVudGl0aWVzIHRoYXQgYXJlIG91dHB1dCBwYXJhbWV0ZXJzIG9mIEFzbSBvcGVyYXRpb25zLgoJSGFuZGxlIHRoZSBTdHJlYW1fU2l6ZSBhdHRyaWJ1dGUuCglBZGQgaW1wbGVtZW50YXRpb24gb2YgV2lkZV9XaWRlX1ZhbHVlLCBXaWRlX1dpZGVfSW1hZ2UsIFdpZGVfV2lkZV9XaWR0aAoKCSogZXhwX2ltZ3YuYWRzLCBleHBfaW1ndi5hZGI6IEFkZCBzdXBwb3J0IGZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIHR5cGUKCgkqIHNlbV9hdHRyLmFkYiAoRXZhbF9BdHRyaWJ1dGUpOiBSYWlzZSBjb21waWxlLXRpbWUgY29uc3RyYWludCBlcnJvcgoJZm9yIHNlY29uZCBwYXJhbWV0ZXIgYmVpbmcgMC4wLgoJQWRkIHN1cHBvcnQgZm9yIHdpZGUgd2lkZSBjaGFyYWN0ZXIgdHlwZS4KCShBbmFseXplX0F0dHJpYnV0ZSwgRXZhbF9BdHRyaWJ1dGUpOiBIYW5kbGUgdGhlIFN0cmVhbV9TaXplIGF0dHJpYnV0ZS4KCgkqIHMtdmFsd2NoLmFkYiwgcy12YWx3Y2guYWRzLCBzLWltZ3djaC5hZHMsIHMtaW1nd2NoLmFkYiwKCXMtd2Noc3R3LmFkcywgcy13Y2hzdHcuYWRiLCBzLXdjaHd0cy5hZGIsIHMtd2Nod3RzLmFkcywKCXMtd2lkd2NoLmFkYiwgcy13aWR3Y2guYWRzLCBzLXd3ZGNoYS5hZGIsIHMtd3dkY2hhLmFkcywKCXMtd3dkZW51LmFkYiwgcy13d2RlbnUuYWRzLCBzLXd3ZHdjaC5hZGIsIHMtd3dkd2NoLmFkczogQWRkIHN1cHBvcnQKCWZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIGNhc2VzLgoKCSogY3N0YW5kLmFkYjogQ3JlYXRlIGVudGl0aWVzIGZvciBXaWRlX1dpZGVfQ2hhcmFjdGVyIGFuZAoJV2lkZV9XaWRlX1N0cmluZy4KCgkqIGktYy5hZHMsIGktYy5hZGI6IEZpeCBub3QgcmFpc2luZyBDRSBmb3IgbnVsbCB3aWRlIHN0cmluZ3MgaW4KCWFjY29yZGFuY2Ugd2l0aCBBSS0yNTguCglBZGQgbmV3IGRlY2xhcmF0aW9ucyBmb3IgMTYvMzIgYml0IEMgY2hhcmFjdGVyIHR5cGVzIChQYXJ0IG9mIEFJMjg1KQoKCSogZWluZm8uYWRzLCBlaW5mby5hZGIgKElzX09ic29sZXNjZW50LCBJc19BZGFfMjAwNSk6IE5ldyBmbGFnCgkoT2Jzb2xlc2NlbnRfV2FybmluZyk6IE5ldyBmaWVsZAoJKFJlcF9DbGF1c2UpOiBOZXcgbG9jYWwgc3VicHJvZ3JhbSB1c2VkIHRvIHNoYXJlIGNvZGUuIFJldHVybnMgdGhlIHJlcAoJY2xhdXNlIGZvciB3aGljaCB0aGUgbmFtZSBpcyBnaXZlbiBpbiBwYXJhbWV0ZXIuCgkoSGFzX1N0cmVhbV9TaXplX0NsYXVzZSk6IE5ldyByb3V0aW5lLgoJKFN0cmVhbV9TaXplX0NsYXVzZSk6IElkZW0uIEltcGxlbWVudGF0aW9uIGlzIGJhc2VkIG9uIFJlcF9DbGF1c2UuCgkoQWRkcmVzc19DbGF1c2UpOiBJbXBsZW1lbnRhdGlvbiBpcyBub3cgdXNpbmcgUmVwX0NsYXVzZS4KCShBbGlnbm1lbnRfQ2xhdXNlKTogSWRlbS4KCShTaXplX0NsYXVzZSk6IElkZW0uCgoJKiBsaWIteHJlZi5hZGIgKEdlbmVyYXRlX1JlZmVyZW5jZSk6IFRlc3QgZm9yIHJlZmVyZW5jZSB0byBBZGEgMjAwNQoJZW50aXR5IGluIG5vbi1BZGEgMjAwNSBtb2RlIGFuZCBnZW5lcmF0ZSB3YXJuaW5nLgoKCSogcGFyLXByYWcuYWRiOiBBZGQgaGFuZGxpbmcgb2Ygb25lIGFyZ3VtZW50IGZvcm0gZm9yIHByYWdtYSBBZGFfMDUuCgkoUHJhZyk6IENvZGUgY2xlYW51cC4gUmVtb3ZlIG9sZCBnbmF0IHByYWdtYSAib3ZlcnJpZGluZyIKCgkqIHNlbV9wcmFnLmFkYjogQWRkIGhhbmRsaW5nIG9mIG9uZSBhcmd1bWVudCBmb3JtIGZvciBwcmFnbWEgQWRhXzA1CgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgRWxhYm9yYXRlLCBFbGFib3JhdGVfQWxsKTogRG8gbm90IGRpc2FibGUgd2FybmluZ3MKCW9uIHRoZSBuYW1lZCB1bml0IGlmIHRoZSBwcmFnbWEgaXMgbm90IGluIHRoZSBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsCglzbyB0aGF0IGVsYWJvcmF0aW9uIGNhbGxzIGluIHRoZSBjdXJyZW50IHVuaXQgY2FuIHNldCB1cCBhbiBlbGFib3JhdGlvbgoJZGVwZW5kZW5jeSBvbiB0aGUgbmFtZWQgdW5pdCwgYXMgbmVlZGVkLgoJKEFuYWx5emVfUHJhZ21hLCBjYXNlIE9ic29sZXNjZW50KTogQWxsb3cgcHJhZ21hIHRvIGJlIHVzZWQgZm9yIGxpYnJhcnkKCXN1YnByb2dyYW0gYXMgd2VsbCBhcyBmb3Igc3VicHJvZ3JhbXMgZGVjbGFyZWQgd2l0aGluIGEgcGFja2FnZS4KCShBbmFseXplX1ByYWdtYSwgU2lnX0ZsYWdzKTogQ29kZSBjbGVhbnVwLiBSZW1vdmUgc3VwcG9ydCBmb3IgdGhlIEdOQVQKCXByYWdtYSBvdmVycmlkaW5nLgoKCSoga3J1bmNoLmFkcywga3J1bmNoLmFkYjogQWRkIHNwZWNpYWwgaGFuZGxpbmcgb2YgV2lkZV9XaWRlIChrcnVuY2hlZAoJdG8geikgdG8gYXZvaWQgc29tZSBpbnN0YW5jZXMgb2YgZHVwbGljYXRpb24gZm9yIFdpZGVfV2lkZSBwYWNrYWdlcy4KCgkqIG5hbWV0LmFkcywgbmFtZXQuYWRiOiBJbXBsZW1lbnQgZW5jb2RpbmcgKFdXaGhoaGhoaGgpIGZvciB3aWRlIHdpZGUKCWNoYXJhY3RlcnMuCgoJKiBzY24uYWRiOiBDaGFyX0xpdGVyYWxfVmFsdWUgZmllbGQgaXMgbm93IGEgVWludAoKCSogc2NuZy5hZGI6IFNpZ25pZmljYW50IHJld3JpdGUgdG8gaGFuZGxlIG5ldyBBZGEgMjAwNSBmZWF0dXJlcwoJYWxsb3dpbmcgd2lkZSBhbmQgd2lkZSB3aWRlIGNoYXJhY3RlcnMgaW4gcHJvZ3JhbSB0ZXh0LCBlLmcuIGZvcgoJaWRlbnRpZmllcnMsIGFzIGRlc2NyaWJlZCBpbiBBSS0yODUuCgkoU2V0X1Jlc2VydmVkKTogTmV3IHByb2NlZHVyZSwgbWFrZXMgc2V0dGluZyB1cCBrZXl3b3JkcyBjbGVhbmVyLgoJKEluaXRpYWxpemVfU2Nhbm5lcik6IFJlZ2lzdGVyIHRoZSBuZXcgcmVzZXJ2ZWQgd29yZHMgb2YgQWRhIDIwMDUuCgkoU2Nhbik6IEdpdmUgc3VwcG9ydCB0byB0aGUgbmV3IHJlc2VydmVkIHdvcmRzLgoKCSogcGFyLWNoMi5hZGIgKFBfSWRlbnRpZmllcik6IENvbXBpbGluZyBpbiBBZGE5NSBtb2RlLCBnZW5lcmF0ZSBhCgl3YXJuaW5nIG5vdGlmeWluZyB0aGF0IGludGVyZmFjZSwgb3ZlcnJpZGluZywgYW5kIHN5bmNocm9uaXplZCBhcmUKCW5ldyByZXNlcnZlZCB3b3Jkcy4KCShQX1ByYWdtYSk6IEFsbG93IHRoZSB1c2Ugb2YgdGhlIG5ldyByZXNlcnZlZCB3b3JkICJpbnRlcmZhY2UiIGFzCglhIHByYWdtYSBuYW1lLgoKCSogZ25hdGxzLmFkYiwgZ25hdGJpbmQuYWRiLAoJYWxpLXV0aWwuYWRiLCBiaW5kZS5hZGIsIGFsaS5hZHMsIGFsaS5hZGI6IENvZGUgY2xlYW51cC4gUmVuYW1lCglpZGVudGlmaWVycyBuYW1lZCAiaW50ZXJmYWNlIiB0byAiU0FMX0ludGVyZmFjZSIuCgoJKiBiaW5kZ2VuLmFkYiAoR2VuX01haW5fQWRhKTogQWRkIHN1cHBvcnQgZm9yIHRoZSBuZXcgU0VICgkoU3RydWN0dXJlZCBFeGNlcHRpb24gaGFuZGxpbmcpLgoJKEdlbl9NYWluX0MpOiBJZGVtLgoKCSogYmluZGdlbi5hZGI6CgkoR2VuX01haW5fQWRhKTogU2V0IHRoZSBkZWZhdWx0IGV4aXQgY29kZSBpZiBzcGVjaWZpZWQuCgkoR2VuX01haW5fQyk6IExpa2V3aXNlLgoJUGFydCBvZiAqREMyMC0wMDYuCgkoR2VuX091dHB1dF9GaWxlX0MpOiBSZW1vdmUgcmVkdW5kYW50IG91dHB1dCBvZiBnbmF0X2V4aXRfc3RhdHVzLgoJQ29kZSBjbGVhbnVwLiBSZW5hbWUgaWRlbnRpZmllcnMgbmFtZWQgImludGVyZmFjZSIgdG8gIlNBTF9JbnRlcmZhY2UiCgoJKiBzd2l0Y2gtYi5hZGIsIGJpbmR1c2cuYWRiLCBvcHQuYWRzLCB2bXNfZGF0YS5hZHM6IEFkZCBoYW5kbGluZyBvZgoJbmV3IC1Ybm5uIHN3aXRjaC4KCgkqIG1saWItcHJqLmFkYiwgbWxpYi5hZGI6IENvZGUgY2xlYW51cC4gUmVuYW1lIG9uZSBpZGVudGlmaWVyIHRoYXQKCWhhcyBhIGNvbGxpc2lvbiB3aXRoIHRoZSBuZXcgQWRhIDIwMDUgImludGVyZmFjZSIgcmVzZXJ2ZWQgd29yZC4KCgkqIHBhci1jaDMuYWRiIChQX0RlZmluaW5nX0lkZW50aWZpZXIpOiBDb21waWxpbmcgaW4gQWRhOTUgbW9kZSwKCWdlbmVyYXRlIGEgd2FybmluZyBub3RpZnlpbmcgdGhhdCBpbnRlcmZhY2UsIG92ZXJyaWRpbmcsIGFuZAoJc3luY2hyb25pemVkIGFyZSBuZXcgcmVzZXJ2ZWQgd29yZHMuCgoJKiBzY2Fucy5hZHMgKFRva2VuX1R5cGUpOiBBZGRpdGlvbiBvZiB0aGUgdG9rZW5zIGNvcnJlc3BvbmRpbmcgdG8gdGhlCgluZXcgcmVzZXJ2ZWQgd29yZHMgb2YgQWRhIDIwMDU6IFRva19JbnRlcmZhY2UsIFRva19PdmVycmlkaW5nCglhbmQgVG9rX1N5bmNocm9uaXplZC4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX0FjdHVhbHMpOiBDaGFuZ2UgZXJyb3IgbWVzc2FnZXMgdG8gcmVmZXIgdG8KCSJkaXNwYXRjaGluZyIgcmF0aGVyIHRoYW4gInByaW1pdGl2ZSIgb3BlcmF0aW9ucywgc2luY2UgZGlzcGF0Y2hpbmcKCWNhbGxzIGFyZSBub3cgYWxsb3dlZCB0byBhYnN0cmFjdCBmb3JtYWwgc3VicHJvZ3JhbXMgKHdoaWNoIGFyZSBub3QKCXByaW1pdGl2ZSkuCglDaGFyX0xpdGVyYWxfVmFsdWUgZmllbGQgaXMgbm93IGEgVWludAoJKFJlc29sdmVfU2xpY2UpOiBJZiB0aGUgcHJlZml4IGlzIGFuIGFjY2VzcyB0byBhbiB1bmNvbnN0cmFpbmVkIGFycmF5LAoJY29tcHV0ZSB0aGUgYWN0dWFsIHN1YnR5cGUgb2YgdGhlIGRlc2lnbmF0ZWQgb2JqZWN0IHRvIGltcG9zZSB0aGUgcHJvcGVyCglpbmRleCBjb25zdHJhaW50cy4KCShSZXNvbHZlX1NlbGVjdGVkX0NvbXBvbmVudCk6IERvIG5vdCBpbnNlcnQgYW4gYWNjZXNzIGNoZWNrIGlmIHRoZQoJcHJlZml4IGlzIGFuIGFjY2VzcyB0eXBlOiBzdWNoIGEgbm9kZSBpcyBleHBhbmRlZCBpbnRvIGFuIGV4cGxpY2l0CglkZXJlZmVyZW5jZSwgb24gd2hpY2ggdGhlIGFjY2VzcyBjaGVjayBpcyBwZXJmb3JtZWQgYW55d2F5LiBSZW1vdmVzCglleHBlbnNpdmUgZHVwbGljYXRlIGNoZWNrcy4KCShSZXNvbHZlX0NhbGwpOiBVc2UgbmV3IGZsYWcgSXNfT2Jzb2xlc2NlbnQgYW5kIGZpZWxkCglPYnNvbGVzY2VudF9XYXJuaW5nIHNvIHRoYXQgcHJhZ21hIE9ic29sZXNjZW50IHdvcmtzIG9uIGxpYnJhcnkKCXN1YnByb2dyYW1zLgoJQWRkIHN1cHBvcnQgZm9yIHdpZGUgd2lkZSBjaGFyYWN0ZXIgdHlwZQoJKFJlc29sdmVfQWxsb2NhdG9yKTogUmVwbGFjZSB0aGUgZXJyb3IgbWVzc2FnZSBvbiB3cm9uZyBudWxsLWV4Y2x1c2lvbgoJdmFsdWUgYnkgYSB3YXJuaW5nIG1lc3NhZ2UuCgkoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBJZiB0aGUgbWl4ZWQtbW9kZSBleHByZXNzaW9uIGlzIGludGVycHJldGVkCglhcyBmaXhlZC1wb2ludCwgYW5kIG9uZSBvZiB0aGUgb3BlcmFuZHMgaXMgbm9uLXN0YXRpYyBhbmQgdW5pdmVyc2FsLCBpdAoJY2FuIG9ubHkgYmUgYW4gaWxsZWdhbCBleHBvbmVudGlhdGlvbiBvcGVyYXRpb24sIGluIHdoaWNoIGNhc2UgdGhlcmUgaXMKCW5vIHJlYWwgdmFsdWUgdG8gcmV0cmlldmUuCgoJKiBleHBfc3RybS5hZGI6IEFkZCBzdXBwb3J0IGZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIHR5cGUKCShCdWlsZF9FbGVtZW50YXJ5X0lucHV0X0NhbGwpOiBDb21wdXRlIHRoZSBzaXplIG9mIHRoZSBzdHJlYW0gZWxlbWVudCBieQoJcXVlcnlpbmcgdGhlIHJlcCBjaGFpbiB0byBmaW5kIHRoZSBTdHJlYW1fQXR0cmlidXRlIGF0dHJpYnV0ZSB2YWx1ZS4KCShCdWlsZF9FbGVtZW50YXJ5X1dyaXRlX0NhbGwpOiBEaXR0by4KCgkqIHNlbV9hZ2dyLmFkYjogQ2hhcl9MaXRlcmFsX1ZhbHVlIGZpZWxkIGlzIG5vdyBhIFVpbnQKCUFkZCBzdXBwb3J0IGZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIHR5cGUKCVJlcGxhY2UgdGhlIGVycm9yIG1lc3NhZ2VzIG9uIHdyb25nIG51bGwtZXhjbHVzaW9uIHZhbHVlIGJ5IHdhcm5pbmdzCglhcyBkZXNjcmliZWQgaW4gQWRhIDIwMDUuCgkoUmVzb2x2ZV9FeHRlbnNpb25fQWdncmVnYXRlKTogRG9jdW1lbnQgdGhlIGZhY3QgdGhhdCB0aGUgZXJyb3IKCW1lc3NhZ2Ugb24gY2xhc3Mtd2lkZSBleHByZXNzaW9ucyBpbiBleHRlbnNpb25zIGFnZ3JlZ2F0ZXMuCgoJKiBzZW1fY2FzZS5hZGI6IEFkZCBzdXBwb3J0IGZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIHR5cGUKCgkqIHNlbV9jaDEzLmFkYjogQWRkIHN1cHBvcnQgZm9yIHdpZGUgd2lkZSBjaGFyYWN0ZXIgdHlwZQoJKEFuYWx5emVfQXR0cmlidXRlX0RlZmluaXRpb25fQ2xhdXNlKTogSGFuZGxlIHRoZSBTdHJlYW1fU2l6ZSBhdHRyaWJ1dGUuCgoJKiBzZW1fY2gzLmFkYjogQWRkIHN1cHBvcnQgZm9yIHdpZGUgd2lkZSBjaGFyYWN0ZXIgdHlwZQoJKFByb2Nlc3NfU3VidHlwZSk6IElmIGNvbnN0cmFpbnQgaXMgaWxsZWdhbCBmb3IgdGhlIHR5cGUsIHNldCBFa2luZCBvZgoJbm93LXVzZWxlc3MgSXR5cGUsIHRvIHByZXZlbnQgY2FzY2FkZWQgZXJyb3JzIG9uIGEgY29tcGlsZXIgYnVpbHQKCXdpdGhvdXQgLWduYXRwLgoKCSogc2VtX2NoOC5hZGI6IEFkZCB3aXRoIGFuZCB1c2Ugb2YgU2VtX0Rpc3AuCgkoQW5hbHl6ZV9TdWJwcm9ncmFtX1JlbmFtaW5nKTogUmVwbGFjZSB1bmNsZWFuIHVzZXMgb2YKCUNvcnJlc3BvbmRpbmdfU3BlYyB3aXRoIENvcnJlc3BvbmRpbmdfRm9ybWFsX1NwZWMgKGFuZCBkZWxldGUgc2V0dGluZwoJb2YgQ29ycmVzcG9uZGluZ19TcGVjIHRvIEVtcHR5KS4KCShBdHRyaWJ1dGVfUmVuYW1pbmcpOiBSZXBsYWNlIHVzZSBvZiBDb3JyZXNwb25kaW5nX1NwZWMgd2l0aAoJQ29ycmVzcG9uZGluZ18gRm9ybWFsX1NwZWMgYW5kIHNpbXBsaWZ5IGNvbmRpdGlvbi4KCShVc2VfT25lX1BhY2thZ2UpOiBDaGVjayB0aGF0IHNjb3BlIG9mIGhvbW9ueW0gb2YgaWRlbnRpZmllciBpcyBkZWZpbmVkLAoJYmVmb3JlIGNoZWNraW5nIHdoZXRoZXIgaXQgaXMgYSB3cmFwcGVyIHBhY2thZ2UuCglBZGQgc3VwcG9ydCBmb3Igd2lkZSB3aWRlIGNoYXJhY3RlciB0eXBlCgoJKiBzZW1fZXZhbC5hZGI6IEFkZCBzdXBwb3J0IGZvciB3aWRlIHdpZGUgY2hhcmFjdGVyIHR5cGUuCgkoRXZhbF9Bcml0aG1ldGljX09wKTogQ2hlY2sgZm9yIGNvbXBpbGUgdGltZSBrbm93biBzaWduZWQgaW50ZWdlcgoJb3ZlcmZsb3cgaW4gdGhlIG5vbi1zdGF0aWMgY2FzZS4KCShTdWJ0eXBlc19TdGF0aWNhbGx5X01hdGNoKTogQSBmb3JtYWwgc2NhbGFyIHR5cGUgYW5kIGl0cyBiYXNlIHR5cGUgZG8KCW5vdCBzdGF0aWNhbGx5IG1hdGNoLgoKCSogc2VtX3V0aWwuYWRiIChDb2xsZWN0X1ByaW1pdGl2ZV9PcGVyYXRpb25zKTogTWlub3IgY2hhbmdlIG9mICIvPSIgdG8KCSJub3QgaW4iIGZvciB0ZXN0IG9mIE5fRm9ybWFsX1N1YnByb2dyYW1fRGVjbGFyYXRpb24gKHdoaWNoIGlzIG5vdyBhCglzdWJ0eXBlKS4KCShVbml0X0RlY2xhcmF0aW9uX05vZGUpOiBEaXR0by4KCShJc19WYXJpYWJsZV9QcmVmaXgpOiAgRm9yIHRoZSBjYXNlIG9mIGFuIGluZGV4ZWQgY29tcG9uZW50IHdob3NlIHByZWZpeAoJaGFzIGEgcGFja2VkIGFycmF5IHR5cGUsIHRoZSBwcmVmaXggaGFzIGJlZW4gcmV3cml0dGVuIGludG8gYSB0eXBlCgljb252ZXJzaW9uLiBEZXRlcm1pbmUgdmFyaWFibGUtbmVzcyBmcm9tIHRoZSBjb252ZXJ0ZWQgZXhwcmVzc2lvbi4KCUhhbmRsZSB3aWRlIHdpZGUgY2hhcmFjdGVyIGNhc2VzLgoKCSogc3RhbmQuYWRzOiBBZGQgdHlwZXMgV2lkZV9XaWRlX0NoYXJhY3RlciBhbmQgV2lkZV9XaWRlX1N0cmluZwoKCSogc3RyaW5ndC5hZHMsIHN0cmluZ3QuYWRiOiBIYW5kbGUgZnVsbCBVVEYtMzIgcmFuZ2UuCglSZW1vdmUgWyIwQSJdIGZyb20gY29tbWVudCwgc2luY2UgaXQgY2FuIGxvb2sgbGlrZSBhIGxpbmUgdGVybWluYXRvci4KCUN1cnJlbnRseSB3ZSBkb24ndCBwZXJtaXQgdGhpcywgYnV0IHRoaXMgaXMgdW5kZXIgZGlzY3Vzc2lvbiBieSB0aGUKCUFSRywgYW5kIGl0IGlzIGVhc3kgZW5vdWdoIHRvIHVzZSBhIGRpZmZlcmVudCBleGFtcGxlLgoKCSogcy13Y2hjb24uYWRzLCBzLXdjaGNudi5hZHMsIHMtd2NoY252LmFkYjogQWRkIG5ldyBzdWJwcm9ncmFtcyBmb3IKCWhhbmRsaW5nIFVURi0zMiBlbmNvZGluZyBmb3Igd2lkZSB3aWRlIGNoYXJhY3Rlci4KCUltcGxlbWVudCBuZXcgYnJhY2tldHMgY29kaW5nIFsiaGhoaGhoaGgiXQoJQWRkIFVURi04IGVuY29kaW5ncyBmb3IgZnVsbCBVVEYtMzIgcmFuZ2UKCgkqIHR0eXBlcy5hZHM6IEFkZCBkZWZpbml0aW9uIG9mIFN0YW5kYXJkX1dpZGVfV2lkZV9DaGFyYWN0ZXJfU2l6ZQoKCSogdHlwZXMuaCwgdHlwZXMuYWRzLCB0eXBlcy5hZGI6IFdpZGVfV2lkZV9DaGFyYWN0ZXIgbm93IGhhcyBmdWxsIDMxCgliaXQgcmFuZ2UgQWRkIGZ1bGwgVVRGLTMyIHN1cHBvcnQuCgkoUlRfRXhjZXB0aW9uX0NvZGUpOiBBZGRpdGlvbiBvZiBDRV9OdWxsX05vdF9BbGxvd2VkOyB1c2VkIHRvCglub3RpZnkgdGhhdCBjb25zdHJhaW50IGVycm9yIHdpbGwgYmUgcmFpc2VkIGF0IHJ1bi10aW1lCgliZWNhdXNlIGEgbnVsbCB2YWx1ZSBpcyBhc3NpZ25lZCB0byBhIG51bGwtZXhjbHVkaW5nIG9iamVjdC4KCVJlbW92ZSBzb21lIG9ic29sZXRlIGRlY2xhcmF0aW9ucyBhbmQgbWFrZSBDaGFyX0NvZGUKCXVuc2lnbmVkLgoKCSogYS1leGNlcHQuYWRiIChSY2hlY2tfMzApOiBOZXcgc3VicHJvZ3JhbS4gQWRkaXRpb24gb2YgdGhlIG1lc3NhZ2UKCWNvcnJlc3BvbmRpbmcgdG8gQ0VfTnVsbF9Ob3RfQWxsb3dlZCwgYW5kIGFkanVzdCB0aGUgb3V0cHV0IG9mIGFsbCB0aGUKCVJjaGVjayBzdWJwcm9ncmFtcy4KCgkqIGNoZWNrcy5hZGIgKENoZWNrX051bGxfTm90X0FsbG93ZWQpOiBSZXBsYWNlIHRoZSBlcnJvciBtZXNzYWdlIG9uCgl3cm9uZyBudWxsLWV4Y2x1c2lvbiB2YWx1ZSBieSBhIHdhcm5pbmcgbWVzc2FnZS4KCShFbmFibGVfUmFuZ2VfQ2hlY2spOiBEbyByYW5nZSBjaGVjayBpZiB0aGUgcHJlZml4IGlzIGFuCglleHBsaWNpdCBkZXJlZmVyZW5jZSB3aG9zZSBkZXNpZ25hdGVkIG9iamVjdCBpcyBhbiB1bmNvbnN0cmFpbmVkIGFycmF5LgoJQ3VycmVudCBhbGdvcml0aG0gZm9yIHJlbW92aW5nIGR1cGxpY2F0ZSBjaGVja3MgaXMgb3Zlci1lYWdlciBpbiB0aGlzCgljYXNlLgoKCSogc2VtX2NoNS5hZGIgKEFuYWx5emVfQXNzaWdubWVudCk6IFJlcGxhY2UgdGhlIGVycm9yIG1lc3NhZ2VzIG9uIHdyb25nCgludWxsLWV4Y2x1c2lvbiB2YWx1ZSBieSBhIHdhcm5pbmcgbWVzc2FnZQoKCSogYXRyZWUuaCwgYXRyZWUuYWRzLCBhdHJlZS5hZGI6IFJlbW92ZSBDaGFyX0NvZGUgZmllbGQgc3VwcG9ydAoJY29tcGxldGVseS4gQWRkIHN1cHBvcnQgZm9yIFVpbnQyIGZpZWxkCgoJc2VtX2NoMi5hZGIsIGV4cF9jaDExLmFkYiwgZXhwX2RidWcuYWRiLAoJZXhwX3ByYWcuYWRiOiBDaGFyX0xpdGVyYWxfVmFsdWUgZmllbGQgaXMgbm93IGEgVWludC4KCgkqIGV4cF91dGlsLmFkYiAoSW5zZXJ0X0FjdGlvbnMpOiBSZXBsYWNlCglOX0Zvcm1hbF9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uIGJ5CglOX0Zvcm1hbF97QWJzdHJhY3R8Q29uY3JldGV9X1N1YnByb2dyYW1fRGVjbGFyYXRpb24uCglDaGFyX0xpdGVyYWxfVmFsdWUgZmllbGQgaXMgbm93IGEgVWludC4KCgkqIHNpbmZvLmFkcywgc2luZm8uYWRiIChDb3JyZXNwb25kaW5nX0Zvcm1hbF9TcGVjKTogTmV3IGZ1bmN0aW9uCglkZWZpbmVkIGZvciBzdWJwcm9ncmFtIHJlbmFtaW5nIGRlY2xhcmF0aW9ucy4gV2hlbiBzZXQsIHRoZSBmaWVsZAoJaW5kaWNhdGVzIHRoZSBkZWZpbmluZyBlbnRpdHkgb2YgYSBjb3JyZXNwb25kaW5nIGZvcm1hbCBzdWJwcm9ncmFtCgl3aGVuIHRoZSByZW5hbWluZyBjb3JyZXNwb25kcyB0byBhIGZvcm1hbCBzdWJwcm9ncmFtIGFzc29jaWF0aW9uIGluIGFuCglpbnN0YW50aWF0aW9uLgoJKFNldF9Db3JyZXNwb25kaW5nX0Zvcm1hbF9TcGVjKTogTmV3IHByb2NlZHVyZSB0byByZXR1cm4KCUNvcnJlc3BvbmRpbmdfRm9ybWFsX1NwZWMgZmllbGQuCglNaW5vciBjaGFuZ2VzIG9mICI9IiB0byAiaW4iIGluIHRlc3RzIG9mIE5fRm9ybWFsX1N1YnByb2dyYW1fRGVjbGFyYXRpb24KCSh3aGljaCBpcyBub3cgYSBzdWJ0eXBlKS4KCUNoYXJfTGl0ZXJhbF9WYWx1ZSBmaWVsZCBpcyBub3cgYSBVaW50CgoJKiBleHBfZGlzcC5hZHMsIGV4cF9kaXNwLmFkYiAoTWFrZV9EVCk6IEdlbmVyYXRlIGNvZGUgdGhhdCBtb3ZlcyB0aGUKCXBvaW50ZXIgdG8gdGhlIGJhc2Ugb2YgdGhlIGRpc3BhdGNoIHRhYmxlLgoJTWlub3IgY2hhbmdlcyB0byBjb21tZW50cy4KCShDb250cm9sbGluZ19UeXBlKTogTmV3IGZ1bmN0aW9uIGZvciBkZXRlcm1pbmluZyB0aGUgdGFnZ2VkIHR5cGUKCWFzc29jaWF0ZWQgd2l0aCBhIHRhZ2dlZCBwcmltaXRpdmUgc3VicHJvZ3JhbS4KCShFeHBhbmRfRGlzcGF0Y2hpbmdfQ2FsbCk6IEFkZCBzdXBwb3J0IGZvciBhIGNvbnRyb2xsaW5nIGFjdHVhbCB0aGF0IGlzCglkaXJlY3RseSBhIHZhbHVlIG9mIHR5cGUgQWRhLlRhZyByYXRoZXIgdGhhbiBhIHRhZ2dlZCBvYmplY3QuCgoJKiBpLWNwcC5hZHMsIGktY3BwLmFkYiwgYS10YWdzLmFkcywgYS10YWdzLmFkYjogVXBkYXRlIGRvY3VtZW50YXRpb24KCWRlc2NyaWJpbmcgdGhlIG5ldyBsYXlvdXQuCgkoRGlzcGF0Y2hfVGFibGUpOiBUaGUgZXhwYW5kZXIgY29tcHV0ZXMgdGhlIGFjdHVhbCBhcnJheSBzaXplLCBhbGxvY2F0ZXMKCXRoZSBEaXNwYXRjaF9UYWJsZSByZWNvcmQgYWNjb3JkaW5nbHksIGFuZCBnZW5lcmF0ZXMgY29kZSB0aGF0IGRpc3BsYWNlcwoJdGhlIGJhc2Ugb2YgdGhlIHJlY29yZCBhZnRlciB0aGUgVHlwZWluZm9fUHRyIGNvbXBvbmVudC4gVGhlIGFjY2VzcyB0bwoJdGhlc2UgY29tcG9uZW50cyBpcyBkb25lIGJ5IG1lYW5zIG9mIGxvY2FsIGZ1bmN0aW9ucy4KCShPZmZzZXRfVG9fVG9wKTogTmV3IGZ1bmN0aW9uLgoJKFR5cGVpbmZvX1B0cik6IE5ldyBmdW5jdGlvbi4KCShHZXRfVFNEKTogTW9kaWZpZWQgdG8gYWNjZXNzIHRoZSBuZXcgcG9zaXRpb24gb2YgdGhlIFRTRC4KCShTZXRfVFNEKTogTW9kaWZpZWQgdG8gc2F2ZSB0aGUgVFNEIGluIGl0cyBuZXcgcG9zaXRpb24uCgoJKiBwYXItY2gxMi5hZGIgKFBfRm9ybWFsX1N1YnByb2dyYW1fRGVjbGFyYXRpb24pOiBBZGQgcGFyc2luZyBmb3IgdGhlCgljYXNlIG9mIGZvcm1hbCBhYnN0cmFjdCBzdWJwcm9ncmFtcy4gQWRkIGNoZWNrIGFuZCBtZXNzYWdlIGZvciAtZ25hdDA1LgoJVXBkYXRlIGNvbW1lbnRzLgoKCSogc2VtX2NoMTIuYWRiOiBBZGQgd2l0aCBhbmQgdXNlIGZvciBTZW1fRGlzcC4KCShBbmFseXplX0Fzc29jaWF0aW9ucyk6IE1pbm9yIGNoYW5nZSBmcm9tICI9IiB0byAiaW4iIGZvciB1c2Ugb2YKCU5fRm9ybWFsX1N1YnR5cGVfRGVjbGFyYXRpb24gKHdoaWNoIGlzIG5vdyBhIHN1YnR5cGUpLgoJKFNldF9BbmFseXplZF9Gb3JtYWwpOiBNaW5vciBjaGFuZ2VzIGZyb20gIj0iIHRvICJpbiIgZm9yIHVzZXMgb2YKCU5fRm9ybWFsX1N1YnR5cGVfRGVjbGFyYXRpb24gKHdoaWNoIGlzIG5vdyBhIHN1YnR5cGUpLgoJKEFuYWx5emVfRm9ybWFsX1N1YnByb2dyYW0pOiBBZGQgaGFuZGxpbmcgZm9yCglOX0Zvcm1hbF9BYnN0cmFjdF9TdWJwcm9ncmFtLCBtYXJraW5nIHRoZSBmb3JtYWwgYXMgYWJzdHJhY3QgYW5kCglkaXNwYXRjaGluZywgc2V0dGluZyB0aGUgY29udHJvbGxpbmcgc3RhdHVzIG9mIHRoZSBmb3JtYWwgcGFyYW1ldGVycwoJYW5kIHJlc3VsdCwgYW5kIGlzc3VpbmcgYW4gZXJyb3IgaWYgdGhlcmUgaXMgbm8gY29udHJvbGxpbmcgdHlwZSBmb3IKCXRoZSBmb3JtYWwgc3VicHJvZ3JhbS4KCShJbnN0YW50aWF0ZV9Gb3JtYWxfU3VicHJvZ3JhbSk6IFJhdGhlciB0aGFuIHNldHRpbmcgQ29ycmVzcG9uZGluZ19TcGVjLAoJd2hpY2ggaXMgYW4gdW5jbGVhbiB1c2Ugb2YgdGhhdCBmaWVsZCwgd2Ugc2V0IHRoZSBuZXcgZmllbGQKCUNvcnJlc3BvbmRpbmdfRm9ybWFsX1NwZWMgdG8gbWFrZSB0aGUgZm9ybWFsIHN1YnByb2dyYW0gYXZhaWxhYmxlIHRvCglwcm9jZXNzaW5nIGluIEFuYWx5emVfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbi4KCShBbmFseXplX0Zvcm1hbF97RGlzY3JldGUsIERlY2ltYWxfRml4ZWRfUG9pbnQsIEZpeGVkX1BvaW50LAoJRmxvYXRpbmdfUG9pbnQsIE1vZHVsYXJfSW50ZWdlciwgU2lnbmVkX0ludGVnZXJ9X1R5cGU6IE1ha2UgZm9ybWFsIHR5cGUKCUNvbnN0cmFpbmVkLCBzbyB0aGF0IGl0IGlzIGlzIGRvZXMgbm90IHN0YXRpY2FsbHkgbWF0Y2ggaXRzIGFub255bW91cwoJYmFzZSB0eXBlLgoKCSogc2VtX2NoNi5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9TcGVjaWZpY2F0aW9uKTogSW5jbHVkZSB0ZXN0IGZvcgoJYWJzdHJhY3QgZm9ybWFsIHN1YnByb2dyYW1zIGluIGVycm9yIGNoZWNrIGZvciBmdW5jdGlvbnMgcmV0dXJuaW5nCglhYnN0cmFjdCB0eXBlcy4gU2V0IHNjb3BlIG9mIG5ldyBkZXNpZ25hdG9yIGZvcgoJYSBwYXJhbWV0ZXJsZXNzIHN1YnByb2dyYW0sIHNvIHRoYXQgaXQgaXMgYXZhaWxhYmxlIHdoZW4gY2hlY2tpbmcgdGhlCglib2R5IGZvciBuZXN0ZWQgc3VicHJvZ3JhbXMsIGJlZm9yZSBmdWxsIGFuYWx5c2lzIG9mIHNhaWQgYm9keS4KCShBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IFdhcm4gb24gaW5saW5pbmcgYm9kaWVzIHdpdGggbmVzdGVkCglzdWJwcm9ncmFtIG9ubHkgaWYgaW5uZXIgb25lIGNvbWVzIGZyb20gc291cmNlLgoJKEFuYWx5emVfRnVuY3Rpb25fQ2FsbCk6IElmIHRoZSBjYWxsIGlzIGdpdmVuIGluIG9iamVjdCBub3RhdGlvbiwgdGhlCglhbmFseXNpcyBvZiB0aGUgbmFtZSByZXdyaXRlcyB0aGUgbm9kZSBhbmQgYW5hbHl6ZXMgaXQgd2l0aCB0aGUgcHJvcGVyCglhcmd1bWVudCBsaXN0LiBBZnRlciBhbmFseXppbmcgdGhlIG5hbWUsIGlmIHRoZSBjYWxsIGhhcyBiZWVuIHJld3JpdHRlbgoJYW5kIHRoZSByZXN1bHQgdHlwZSBpcyBzZXQsIG5vIGZ1cnRoZXIgYW5hbHlzaXMgaXMgbmVlZGVkLgoJKEFuYWx5emVfUmV0dXJuX1R5cGUpOiBTdWJzaWRpYXJ5IHRvIFByb2Nlc3NfRm9ybWFsczogYW5hbHl6ZSBzdWJ0eXBlCgltYXJrIGluIGZ1bmN0aW9uIHNwZWNpZmljYXRpb24sIGluIGEgY29udGV4dCB3aGVyZSB0aGUgZm9ybWFscyBhcmUKCXZpc2libGUgYW5kIGhpZGUgb3V0ZXIgaG9tb2dyYXBocy4KCgkqIHNlbV9kaXNwLmFkYiAoQ2hlY2tfQ29udHJvbGxpbmdfVHlwZSk6IFJlbGF4IHRoZSBjaGVjayBmb3Igc2FtZSBzY29wZQoJYXMgdGhlIHRhZ2dlZCB0eXBlIGZvciB0aGUgY2FzZXMgb2YgYWJzdHJhY3QgZm9ybWFsIHN1YnByb2dyYW1zIGFuZAoJcmVuYW1pbmdzIG9mIHRob3NlLiAgQ2xlYW4gdXAgc3BlYyBjb21tZW50cy4KCShDaGVja19EaXNwYXRjaGluZ19Db250ZXh0KTogQWRkIGVycm9yIG1lc3NhZ2UgdG8gaW5kaWNhdGUgImFic3RyYWN0Cglwcm9jZWR1cmUiLCBjb3ZlcmluZyB0aGUgY2FzZSBvZiBhIGNhbGwgdG8gYSBmb3JtYWwgYWJzdHJhY3QgcHJvY2VkdXJlCgl0aGF0IGhhcyBzdGF0aWNhbGx5IHRhZ2dlZCBvcGVyYW5kcy4KCShDaGVja19EaXNwYXRjaGluZ19DYWxsKTogQ2hlY2sgZm9yIHRoZSBjYXNlIG9mIGFuIGFjdHVhbCBnaXZlbiBieQoJYSB0YWctaW5kZXRlcm1pbmF0ZSBmdW5jdGlvbiBjYWxsIHdob3NlIHR5cGUgaXMgYW4gYW5jZXN0b3Igb2YgdGhlCgljb250YWluaW5nIGNhbGwncyBhc3NvY2lhdGVkIHRhZ2dlZCB0eXBlLiBUaGlzIHNpdHVhdGlvbiBjYW4gb2NjdXIKCWZvciBpbmhlcml0ZWQgcHJpbWl0aXZlcyB3aXRoIGZ1bmN0aW9uIGRlZmF1bHRzLiBJbiB0aGlzIGNhc2Ugd2UKCXVzZSB0aGUgdGFnZ2VkIHR5cGUncyB0YWcgZGlyZWN0bHkgYXMgdGhlIGNvbnRyb2xsaW5nIGFyZ3VtZW50IGZvcgoJdGhlIGNhbGxzLgoJKEV4cGFuZF9DYWxsKTogTmFtZSBjaGFuZ2Ugb24gY2FsbCB0byBFeHBhbmRfRGlzcGF0Y2hfQ2FsbC4KCgkqIHNwcmludC5hZGIgKFNwcmludF9Ob2RlX0FjdHVhbCk6IFNwbGl0CglOX0Zvcm1hbF9TdWJwcm9ncmFtX0RlY2xhcmF0aW9uIGludG8gdHdvIGFsdGVybmF0aXZlcyBmb3IgdGhlIG5ldwoJY2FzZXMgTl9Gb3JtYWxfQWJzdHJhY3RfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbiBhbmQKCU5fRm9ybWFsX0NvbmNyZXRlX1N1YnByb2dyYW1fRGVjbGFyYXRpb24uCglDaGFyX0xpdGVyYWxfVmFsdWUgZmllbGQgaXMgbm93IGEgVWludC4KCgkqIHRyYW5zLmM6IEdldCByaWQgb2YganVuayBVaW50MiByZWZlcmVuY2UuCglDaGFyX0xpdGVyYWxfVmFsdWUgZmllbGQgaXMgbm93IGEgVWludC4KCShnbmF0X3RvX2dudSwgY2FzZSBOX0FnZ3JlZ2F0ZSk6IENoZWNrIFRZUEVfVU5DSEVDS0VEX1VOSU9OX1AuCgkoZ2lnaSk6IENvcnJlY3QgdGhpcmQgYXJnIHRvIGdpbXBsaWZ5X2JvZHkuCgoJKiBhZGEtdHJlZS5oOiAoVFlQRV9VTkNIRUNLRURfVU5JT05fUCk6IE5ldyBmbGFnLgoJKFRZUEVfTEFOR19GTEFHXzApOiBDaGVjayBmb3IgcmVjb3JkIG9yIHVuaW9uLgoKCSogdHJlZXByLmFkYjogQ2hhcl9MaXRlcmFsX1ZhbHVlIGZpZWxkIGlzIG5vdyBhIFVpbnQKCgkqIHVpbnRwLmgsIHVpbnRwLmFkcywgdWludHAuYWRiOiBBZGQgbmV3IHJvdXRpbmVzIFVJX1RvX0NDIGFuZAoJVUlfRnJvbV9DQy4KCgkqIHdpZGVjaGFyLmFkcywgd2lkZWNoYXIuYWRiIChJc19VVEZfMzJfTm9uX0dyYXBoaWMpOiBOZXcgZnVuY3Rpb24KCUFkZCBmdWxsIFVURi0zMiBzdXBwb3J0CglDaGFyX0NvZGUgaXMgbm93IDMyIGJpdHMKCgkqIHNpbnB1dC5hZHMsIHNpbnB1dC5hZGIgKFNraXBfTGluZV9UZXJtaW5hdG9ycyk6IEV4dGVuZCB0byBkZWFsIHdpdGgKCXdpZGUgY2hhcmFjdGVyIFVURl8zMiBsaW5lIHRlcm1pbmF0b3JzLgoJSW5pdGlhbGl6ZSBNYWluX1NvdXJjZV9GaWxlIHRvIGF2b2lkIGVycm9yIHdoZW4gbm8gbWFpbgoJc291cmNlIGlzIGxvYWRlZC4KCgkqIGVycm91dC5hZGIgKEZpbmFsaXplKTogRG8gbm90IGNoZWNrIE51bV9TUmVmX1ByYWdtYXMKCShNYWluX1NvdXJjZV9GaWxlKSB3aGVuIG5vIG1haW4gc291cmNlIGhhcyBiZWVuIGxvYWRlZCwgdG8gYXZvaWQKCXBvdGVudGlhbCBjcmFzaC4KCjIwMDUtMDItMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYS1zdHJ1bmIuYWRzLCBhLXN0cnVuYi5hZGI6IEFkZCBtaXNzaW5nIHByYWdtYSBBZGFfMDUgc3RhdGVtZW50cwoJRml4IG5hbWUgb2YgU2V0IHJvdXRpbmUKCgkqIGEtc3RyZml4LmFkcywgYS1zdHJmaXguYWRiOiBBZGQgbmV3IGluZGV4IGZ1bmN0aW9ucyBmcm9tIEFJLTMwMSB0bwoJZml4ZWQgcGFja2FnZXMuCgoJKiBhLXN0d2lzZS5hZHMsIGEtc3R3aXNlLmFkYiwgYS1zdHdpZmkuYWRzLCBhLXN0d2lmaS5hZGIsCglhLXN0cnNlYS5hZHMsIGEtc3Ryc2VhLmFkYjogQWRkIG5ldyBpbmRleCBmdW5jdGlvbnMgZnJvbSBBSS0zMDEgdG8KCWZpeGVkIHBhY2thZ2VzCgoJKiBhLXdpdGVpby5hZHMsIGEtd2l0ZWlvLmFkYiwgYS10ZXh0aW8uYWRzLCBhLXRleHRpby5hZGI6IE5ldyBmdW5jdGlvbgoJZm9ybXMgb2YgR2V0X0xpbmUgc3VicHJvZ3JhbXMgZm9yIEFJLTMwMS4KCgkqIGEtd3Rjb2F1LmFkYiwgYS13dGNvYXUuYWRzLCBhLXd0Y29pby5hZGIsIGEtd3Rjb2lvLmFkcywKCWEtd3RlZGl0LmFkYiwgYS13dGVkaXQuYWRiLCBhLXd0ZWRpdC5hZHMsIGEtd3R0ZXN0LmFkYiwKCWEtd3R0ZXN0LmFkcywgYS1zdHJtYXAuYWRzLCBhLXN0cm1hcC5hZGIsIGEtc3R3aW1hLmFkYiwKCWEtc3R3aW1hLmFkczogTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwNS0wMi0wOSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogYWRhaW50LmMsIGFkYWludC5oCglbVk1TXSAodG9fcHRyMzIpOiBOZXcgZnVuY3Rpb24uCgkoTUFZQkVfVE9fUFRSMzIpOiBOZXcgbWFjcm8uCgkoX19nbmF0X3BvcnRhYmxlX3NwYXduLF9fZ25hdF9wb3J0YWJsZV9ub19ibG9ja19zcGF3bik6IEFkanVzdCBhcmd2Cglmb3IgcG9pbnRlciBzaXplLgoJW1ZNU10gKGRlc2NyaXB0b3JfcywgaWxlX3MpOiBVc2UgX19jaGFyX3B0cjMyIGZvciBhZHIgZmllbGQuCglbVk1TXSAoI2RlZmluZSBmb3JrKCkpOiBSZW1vdmUgc2luY2UgdW5uZWNjZXNzYXJ5LgoJKF9fZ25hdF9zZXRfY2xvc2Vfb25fZXhlYyk6IE5ldyByb3V0aW5lIHRvIHN1cHBvcnQKCUdOQVQuT1NfTGliLlNldF9DbG9zZV9Pbl9FeGVjLgoKCSogZy1leHBlY3QuYWRiIChTZXRfVXBfQ29tbXVuaWNhdGlvbnMpOiBNYXJrIHRoZSBwaXBlIGRlc2NyaXB0b3JzIGZvcgoJdGhlIHBhcmVudCBzaWRlIGFzIGNsb3NlLW9uLWV4ZWMgc28gdGhhdCB0aGV5IGFyZSBub3QgaW5oZXJpdGVkIGJ5IHRoZQoJY2hpbGQuCgoJKiBnLW9zX2xpYi5hZHMsIGctb3NfbGliLmFkYiAoU2V0X0Nsb3NlX09uX0V4ZWMpOiBOZXcgc3VicHJvZ3JhbSB0bwoJc2V0IG9yIGNsZWFyIHRoZSBGRF9DTE9FWEVDIGZsYWcgb24gYSBmaWxlIGRlc2NyaXB0b3IuCgoyMDA1LTAyLTA5ICBFcmljIEJvdGNhem91ICA8ZWJvdGNhem91QGFkYWNvcmUuY29tPgoJICAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJUFIgYWRhLzE5Mzg2CgkqIGRlY2wuYzoKCShnbmF0X3RvX2dudV9maWVsZCk6IERvIG5vdCBuZWNlc3NhcmlseSBpbnZva2UgbWFrZV9wYWNrYWJsZV90eXBlCglvbiB0aGUgZmllbGQgaWYgUHJhZ21hIENvbXBvbmVudF9BbGlnbm1lbnQgKFN0b3JhZ2VfVW5pdCkuCgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIG9iamVjdCk6IERvIG5vdCB0cmVhdCBhIHJlbmFtaW5nIHRoYXQgaGFzCglzaWRlLWVmZmVjdHMgYXMgaWYgaXQgd2VyZSBhIGNvbnN0YW50OyBhbHNvIG1ha2UgU0FWRV9FWFBSIHRvIHByb3RlY3QKCXNpZGUtZWZmZWN0cy4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9SZWNvcmRfU3VidHlwZSk6IElmIGhhdmUgX1BhcmVudCwgbWFrZSBhCglVTklPTl9UWVBFLgoJKG1ha2VfZHVtbXlfdHlwZSk6IFNldCBUWVBFX1VOQ0hFQ0tFRF9VTklPTl9QLgoJKGNvbXBvbmVudHNfdG9fcmVjb3JkKTogVGVzdCBpdC4KCUZpeCBpbXByb3BlciB1c2FnZSBvZiBSRUZFUkVOQ0VfQ0xBU1NfUC4KCgkqIHV0aWxzMi5jIChidWlsZF9iaW5hcnlfb3AsIGNhc2UgTU9ESUZZX0VYUFJQKTogVHJlYXQgVU5JT05fVFlQRSBhcwoJUkVDT1JEX1RZUEUuCgoJKiB1dGlsczIuYzogTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogdXRpbHMuYyAoY29udmVydCwgY2FzZSBVTklPTl9UWVBFKTogQ2hlY2sgVFlQRV9VTkNIRUNLRURfVU5JT047CgloYW5kbGUgb3RoZXIgY2FzZXMgbGlrZSBSRUNPUkRfVFlQRS4KCgkqIHV0aWxzLmMgKGduYXRfcHVzaGRlY2wpOiBTZXQgVFJFRV9OT19XQVJOSU5HLgoKMjAwNS0wMi0wOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2FnZ3IuYWRiIChHZW5fQXNzaWduKTogSWYgdGhlIGV4cHJlc3Npb24gaXMgYW4gYWdncmVnYXRlIGZvciBhCgljb21wb25lbnQgb2YgYW4gYXJyYXkgb2YgYXJyYXlzIGluIGFuIGFzc2lnbm1lbnQgY29udGV4dCwgYW5kIHRoZQoJYWdncmVnYXRlIGhhcyBjb21wb25lbnQgYXNzb2NpYXRpb25zIHRoYXQgcmVxdWlyZSBzbGlkaW5nIG9uCglhc3NpZ25tZW50LCBmb3JjZSByZWFuYWx5c2lzIG9mIHRoZSBhZ2dyZWdhdGUgdG8gZ2VuZXJhdGUgYSB0ZW1wb3JhcnkKCWJlZm9yZSB0aGUgYXNzaWdubWVudC4KCShNdXN0X1NsaWRlKTogTWFrZSBnbG9iYWwgdG8gdGhlIHBhY2thZ2UsIGZvciB1c2UgaW4gR2VuX0Fzc2lnbi4KCjIwMDUtMDItMDkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfQ29tcG9zaXRlX0VxdWFsaXR5KTogSWYgYSBjb21wb25lbnQgaXMgYW4KCXVuY2hlY2tlZCB1bmlvbiB3aXRoIG5vIGluZmVyYWJsZSBkaXNjcmltaW5hbnRzLCByZXR1cm4gYQoJUmFpc2VfUHJvZ3JhbV9FcnJvciBub2RlLCByYXRoZXIgdGhhbiBpbnNlcnRpbmcgaXQgYXQgdGhlIHBvaW50IHRoZQoJdHlwZSBpcyBmcm96ZW4uCgkoRXhwYW5kX1JlY29yZF9FcXVhbGl0eSwgQ29tcG9uZW50X0VxdWFsaXR5KTogSGFuZGxlIHByb3Blcmx5IHRoZSBjYXNlCgl3aGVyZSBzb21lIHN1YmNvbXBvbmVudCBpcyBhbiB1bmNoZWNrZWQgdW5pb24gd2hvc2UgZ2VuZXJhdGVkIGVxdWFsaXR5Cgljb2RlIHJhaXNlcyBwcm9ncmFtIGVycm9yLgoKMjAwNS0wMi0wOSAgRG91ZyBSdXBwICA8cnVwcEBhZGFjb3JlLmNvbT4KCgkqIGduYXRibC5jOiBbVk1TXSAoX1BPU0lYX0VYSVQpOiBEZWZpbmUuCglbVk1TXSAoI2RlZmluZSBleGl0IGhhY2spOiBSZW1vdmUuCgoyMDA1LTAyLTA5ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgkgICAgQXJuYXVkIENoYXJsZXQgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBpbml0LmMgKF9fZ25hdF9pbml0aWFsaXplKTogQWRkIGEgbmV3IHBhcmFtZXRlciBlaCB3aGljaCBjb250YWlucyB0aGUKCWFkZHJlc3Mgb2YgdGhlIGV4Y2VwdGlvbiByZWdpc3RyYXRpb24uIFRoZSBXaW4zMiB2ZXJzaW9uIG9mIHRoaXMKCXJvdXRpbmUgY2FsbHMgX19nbmF0X2luc3RhbGxfU0VIX2hhbmRsZXIoKSB0byBpbml0aWFsaXplIHRoZSBTRUgKCShTdHJ1Y3R1cmVkIEV4Y2VwdGlvbiBIYW5kbGluZykgaGFuZGxlci4KCShfX2duYXRfZXJyb3JfaGFuZGxlcikgW1dpbjMyXTogUmVtb3ZlZC4gTm90IG5lZWRlZCBhcyB3ZSB1c2UKCVNFSCAoU3RydWN0dXJlZCBFeGNlcHRpb24gSGFuZGxpbmcpIG5vdy4KCShfX2duYXRfaW5zdGFsbF9oYW5kbGVyKSBbV2luMzJdOiBOb3RoaW5nIHRvIGRvIG5vdyBhcyB3ZSB1c2UgU0VILgoJKF9fZ25hdF9pbml0aWFsaXplIGZvciBwcGMtdnh3b3Jrcyk6IEFkanVzdCBjb21tZW50cyBhbmQgdGhlCglwcmVwcm9jZXNzb3IgY29uZGl0aW9uIHByb3RlY3RpbmcgdGhlIGNhbGwgdG8gdGhlIGV4dHJhIGVoIHNldHVwCglzdWJwcm9ncmFtLCB3aGljaCBpcyBvbmx5IGF2YWlsYWJsZSBmb3IgdGhlIHBwYyB0YXJnZXQuCgkoX19nbmF0X2NsZWFyX2V4Y2VwdGlvbl9jb3VudCk6IHJlcGxhY2VkIHJlZmVyZW5jZSB0bwoJdmFyaWFibGUgdGFza0lkQ3VycmVudCBieSBjYWxsIHRvIHRhc2tJZFNlbGYoKSwgY2xlYW5lci4KCgkqIHNlaF9pbml0LmM6IE5ldyBmaWxlLgoKCSogTWFrZS1sYW5nLmluOiAoR05BVF9BREFfT0JKUyk6IEFkZCBzZWhfaW5pdC5vLgoJKEdOQVRCSU5EX09CSlMpOiBJZGVtLgoKCSogbWlzYy5jIChnbmF0X3BhcnNlX2ZpbGUpOiBVcGRhdGUgY2FsbCB0byBfX2duYXRfaW5pdGlhbGl6ZS4gVGhpcwoJcm91dGluZSB0YWtlcyBhIG5ldyBwYXJhbWV0ZXIgKGEgcG9pbnRlciB0byB0aGUgZXhjZXB0aW9uIHJlZ2lzdHJhdGlvbgoJZm9yIHRoZSBTRUggKFN0cnVjdHVyZWQgRXhjZXB0aW9uIEhhbmRsaW5nKSBzdXBwb3J0LgoKCSogcmFpc2UuaDogKF9fZ25hdF9pbnN0YWxsX1NFSF9oYW5kbGVyKTogTmV3IHByb3RvdHlwZS4KCVVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLgoKCSogcy10YXNzdGEuYWRiIChUYXNrX1dyYXBwZXIpOiBEZWNsYXJlIHRoZSBleGNlcHRpb24gcmVnaXN0cmF0aW9uCglyZWNvcmQgYW5kIGluaXRpYWxpemUgaXQgYnkgY2FsbGluZyBfX2duYXRfaW5zdGFsbF9TRUhfaGFuZGxlci4KCjIwMDUtMDItMDkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZS5hZGIgKEduYXRtYWtlKTogRG8gbm90IGZhaWwgd2hlbiB0aGUgbWFpbiBwcm9qZWN0IGhhcyBubyBvYmplY3QKCWRpcmVjdG9yeS4KCjIwMDUtMDItMDkgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBNYWtlZmlsZS5pbiBbVk1TXSAoTE4sTE5fUyk6IERlZmluZSBhcyBjcCAtcAoJUmVuYW1lIHMtYXN0aGFuLXZtcy5hZGIgdG8gcy1hc3RoYW4tdm1zLWFscGhhLmFkYi4KCVtWTVNdOiBBZGQgdHJhbnNsYXRpb25zIGZvciBnLWVuYmxzcC5hZGIuCgoJKiBzLWFzdGhhbi12bXMuYWRiOiBSZW1vdmVkLgoJKiBzLWFzdGhhbi12bXMtYWxwaGEuYWRiOiBBZGRlZC4KCjIwMDUtMDItMDkgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluIChMSUJHTkFUX1NSQ1MpOiBBZGQgc2VoX2luaXQuYy4KCShMSUJHTkFUX09CSlMpOiBBZGQgc2VoX2luaXQuby4KCjIwMDUtMDItMDkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMTY1OTIKCSogTWFrZWZpbGUuaW46IExpbmsgYWxsIGduYXQgdG9vbHMgd2l0aCAtc3RhdGljLWxpYmdjYywgc2luY2UKCS1zaGFyZWQtbGliZ2NjIGlzIG5vdyB1c2VkIGJ5IGRlZmF1bHQgb24gc29tZSBzeXN0ZW1zIChlLmcuIGxpbnV4IHdpdGgKCXJlY2VudCBiaW51dGlscykuCglSZW1vdmUgcmVmZXJlbmNlcyB0byBNYWtlZmlsZS5wcm9sb2cvZ2VuZXJpYywgbm8gbG9uZ2VyIHVzZWQuCgoyMDA1LTAyLTA5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHByai1tYWtyLmFkYiAoUHJvY2Vzc19EaXJlY3RvcnkpOiBQdXQgZmlsZSBuYW1lIGluIGNhbm9uaWNhbCBjYXNlCgliZWZvcmUgbWF0Y2hpbmcgYWdhaW5zdCB0aGUgcGF0dGVybnMuCglJZiBnbmF0bmFtZSBoYXMgYmVlbiBpbnZva2VkIGFzIDxwcmVmaXg+LWduYXRuYW1lCgl0aGVuIGludm9rZSB0aGUgY29tcGlsZXIgYXMgPHByZWZpeD4tZ2NjLCBub3QganVzdCAiZ2NjIi4KCjIwMDUtMDItMDkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IENyZWF0ZSBBY3R1YWxfU3VidHlwZSBldmVuCgl3aXRoIGV4cGFuc2lvbiBkaXNhYmxlZC4gVGhlIGFjdHVhbCBzdWJ0eXBlIGlzIG5lZWRlZCBhbW9uZyBvdGhlcgoJcGxhY2VzIHdoZW4gdGhlIHNlbGVjdGVkIGNvbXBvbmVudCBhcHBlYXJzIGluIHRoZSBjb250ZXh0IG9mIGEgbG9vcAoJYm91bmQsIGFuZCBkZW5vdGVzIGEgcGFja2VkIGFycmF5LgoJKE9wZXJhdG9yX0NoZWNrKTogQWx3YXlzIHVzZSB0aGUgZmlyc3Qgc3VidHlwZSBpbiB0aGUKCWVycm9yIG1lc3NhZ2UsIHRvIGF2b2lkIHRoZSBhcHBlYXJhbmNlIG9mIGludGVybmFsIGJhc2UgdHlwZXMuCgkoVHJhbnNmb3JtX09iamVjdF9PcGVyYXRpb24pOiBDb3B5IGVhY2ggYWN0dWFsIGluIGZ1bGwKCXRvIHRoZSBwYXJhbWV0ZXIgYXNzb2NpYXRpb25zIG9mIHRoZSBjb25zdHJ1Y3RlZCBjYWxsLCByYXRoZXIgdGhhbgoJdXNpbmcgdGhlIHNoYWxsb3cgY29weSBtZWNoYW5pc20gb2YgTmV3X0NvcHlfTGlzdC4gVGhpcyBlbnN1cmVzIHRoYXQKCXRoZSBjaGFpbmluZyBvZiBuYW1lZCBhc3NvY2lhdGlvbnMgaXMgZG9uZSBwcm9wZXJseS4KCShDb21wbGV0ZV9PYmplY3RfT3BlcmF0aW9uKTogUmV3cml0ZSBub2RlLCByYXRoZXIgdGhhbgoJcmVwbGFjaW5nIGl0LCBzbyB0aGF0IHdlIGNhbiB0cmFjZSBiYWNrIHRvIHRoZSBvcmlnaW5hbCBzZWxlY3RlZAoJY29tcG9uZW50LgoKCSogc2VtX2VsYWIuYWRiIChTZXRfRWxhYm9yYXRpb25fQ29uc3RyYWludCk6IEZvciBpbml0aWFsaXphdGlvbiBjYWxscywKCWFuZCBjYWxscyB0aGF0IHVzZSBvYmplY3Qgbm90YXRpb24sIGlmIHRoZSBjYWxsZWQgZnVuY3Rpb24gaXMgbm90CglkZWNsYXJlZCAgaW4gYSB3aXRoZWQgdW5pdCwgcGxhY2UgdGhlIGVsYWJvcmF0aW9uIGNvbnN0cmFpbnQgb24gdGhlCgl1bml0IGluIHRoZSBjb250ZXh0IHRoYXQgbWFrZXMgdGhlIGZ1bmN0aW9uIGFjY2Vzc2libGUuCgkoQ2hlY2tfRWxhYl9TdWJ0eXBlX0RlY2xhcmF0aW9uKTogQ2hlY2sgd2hldGhlciBhIHN1YnR5cGUgZGVjbGFyYXRpb24KCWltcG9zZXMgYW4gZWxhYm9yYXRpb24gY29uc3RyYWludCBiZXR3ZWVuIHR3byBwYWNrYWdlcy4KCjIwMDUtMDItMDkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDcuYWRiIChVbmluc3RhbGxfRGVjbGFyYXRpb25zKTogRXhjaGFuZ2UgZnVsbCBhbmQgcHJpdmF0ZQoJdmlld3Mgb2YgYSBwcml2YXRlIHR5cGUgYWZ0ZXIgaGFuZGxpbmcgaXRzIHByaXZhdGUgZGVwZW5kZW50cywgdG8KCW1haW50YWluIHByb3BlciBzdGFjayBkaXNjaXBsaW5lIGJldHdlZW4gZW50cnkgYW5kIGV4aXQgZnJvbSB0aGUKCXBhY2thZ2UuCgoyMDA1LTAyLTA5ICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWRhY29yZS5jb20+CgoJKiBzLWZpbmltcC5hZGI6IChGaW5hbGl6ZV9MaXN0KTogT3B0aW1pemUgaW4gdGhlIG5vLWFib3J0IGNhc2UuCglNaW5vciByZWZvcm1hdHRpbmcuCgoyMDA1LTAyLTA5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLXRwb3JmdC5hZGIgKFJlZ2lzdGVyX0ZvcmVpZ25fVGhyZWFkKTogSW5pdGlhbGl6ZSBUYXNrX0ltYWdlW19MZW5dCglmaWVsZHMgZm9yIGZvcmVpZ24gdGhyZWFkcy4KCjIwMDUtMDItMDkgIERvdWcgUnVwcCAgPHJ1cHBAYWRhY29yZS5jb20+CgoJKiBzLXZhZmxvcC5hZGI6IEFkZCBwcmFnbWEgV2FybmluZ3MgKE9mZikgdG8gZWxpbWluYXRlIGluZmluaXRlCglyZWN1cnNpb24gd2FybmluZ3Mgd2hlbiBjb21waWxlZCB3aXRoIC1nbmF0ZG0uCgoyMDA1LTAyLTA5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHVzYWdlLmFkYjogQWRkIGxpbmUgZm9yIHN3aXRjaCAtZ25hdDA1IChhbGxvdyBBZGEgMjAwNSBleHRlbnNpb25zKQoJU2xpZ2h0IGZpeCB0byBkb2N1bWVudGF0aW9uIG9mIC1nbmF0eSB3aXRoIG5vIHBhcmFtZXRlcnMKCgkqIHhyX3RhYmxzLmFkczogQWRkID8/PyBjb21tZW50IGZvciBtaXNzaW5nIG92ZXJhbGwgY29tbWVudAoKCSogeHNpbmZvLmFkYjogTWFrZSBkZWZhdWx0IGZpbGUgbmFtZSBiZSBzaW5mby5oLCBzaW5jZSB0aGlzIGlzIHdoYXQKCXdlIG5vdyB1c2UgYnkgZGVmYXVsdC4KCgkqIHhzbmFtZXMuYWRiOiBBZGp1c3QgZW5kIG9mIGZpbGUgdGVzdCB0byBsb29rIGZvciBmaXZlIHNwYWNlIGZvbGxvd2VkCglieSAnIycgaW5zdGVhZCBvZiBzaXggc3BhY2VzLiBUaGUgZm9ybWF0IG9mIHhzbmFtZXMuYWRiIHdhcyBtb2RpZmllZAoJaW4gdGhlIGxhc3QgdXBkYXRlLgoKCSogYS1udW1lcmkuYWRzOiBBZGQgcmVmZXJlbmNlIHRvIEFJLTM4OCBmb3IgZ3JlZWsgbGV0dGVyIHBpCglpZGVudGlmaWVyLgoKCSogY2xlYW4uYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuCgoJKiBnbmF0MWRydi5hZGIsIGduYXRmaW5kLmFkYiwgZ25hdGxpbmsuYWRiLCBnbmF0bWVtLmFkYiwKCWduYXRuYW1lLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglBZGQgMjAwNSB0byBjb3B5cmlnaHQgb3V0cHV0IHdoZW4gdXRpbGl0eSBpcyBydW4KCgkqIGNzZXRzLmFkYjogRWxpbWluYXRlIG9ic29sZXRlIGNvbW1lbnQKCgkqIGRlYnVnLmFkYiwgZy1zb2NrZXQuYWRzLCBpLWNvYm9sLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nIHRocm91Z2hvdXQKCVVwZGF0ZSBjb21tZW50cy4KCgkqIHNlbV9ldmFsLmFkcyAoRXZhbF9JbnRlZ2VyX0xpdGVyYWwpOiBEbyBub3QgaW5saW5lIHRoaXMsIG5vdCB1c2VmdWwuCgoyMDA1LTAyLTA5ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IEFkZCB0byB0aGUgZ25hdHBwIHNlY3Rpb24gdGhlIHBhcmFncmFwaCBkZXNjcmliaW5nCgl0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGNvbXBhY3QgYW5kIGluY29tcGFjdCBsYXlvdXQgYW5kIGFkZCB0aGUgcmVjb3JkCglyZXByZXNlbnRhdGlvbiBjbGF1c2UgdG8gdGhlIGV4YW1wbGUgaWxsdXN0cmF0aW5nIGRpZmZlcmVudCBsYXlvdXRzLgoJQWRkIHRoZSBkZXNjcmlwdGlvbiBvZiAnLUE1JyBnbmF0cHAgb3B0aW9uICgiYWxpZ24gJ0FUJyBrZXl3b3JkcyBpbgoJY29tcG9uZW50IGNsYXVzZXMiKS4KCjIwMDUtMDItMDkgIEZsb3JpYW4gVmlsbG9pbmcgIDx2aWxsb2luZ0BhZGFjb3JlLmNvbT4KCgkqIGduYXRfdWduLnRleGk6IEZpeCB0eXBvcy4KCVVzZSBAY29tbWFuZCB0byBkaXNwbGF5ICdnY2MnLCAnZ25hdGJpbmQnLCBldGMuIGluc3RlZCBvZiBAY29kZSBvcgoJQGZpbGUuCglNYWtlIHByb3BlciB1c2Ugb2YgQHJlZiwgQHhyZWYgYW5kIEBweHJlZiB0byBhdm9pZCBkdXBsaWNhdGlvbiBvZiAic2VlIgoJaW4gdGhlIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLgoKMjAwNS0wMi0wOSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogZ25hdF91Z24udGV4aTogUmVtb3ZlIGFsbCBtZW50aW9ucyBvZiBGU1UgdGhyZWFkcywgd2hpY2ggYXJlIG5vCglsb25nZXIgc3VwcG9ydGVkLgoJVXBkYXRlIGxpbmtlciB3cmFwcGVyIHdoZW4gbGlua2luZyB3aXRoIG5vbiBHTlUgQysrLgoKMjAwNS0wMi0wOSAgUGFzY2FsIE9icnkgIDxvYnJ5QGFkYWNvcmUuY29tPgoKCSogZ25hdF91Z24udGV4aToKCURvY3VtZW50IHRoZSBwcm9jZWR1cmUgdG8gZGVidWcgdGhlIERsbE1haW4gcm91dGluZSBvbiBXaW5kb3dzLgoJQWRkIG5vdGUgYWJvdXQgLWZ1bndpbmQtdGFibGVzIGFuZCBtaXhlZCBBZGEgYW5kIEMvQysrIHByb2dyYW1taW5nIGluCglaQ1ggbW9kZS4KCURvY3VtZW50IG5ldyBCSU5EIHF1YWxpZmVyIC9SRVRVUk5fQ09ERVM9Vk1TLgoKMjAwNS0wMi0wOSAgQmVuIEJyb3Nnb2wgIDxicm9zZ29sQGFkYWNvcmUuY29tPgoKCSogZ25hdF91Z24udGV4aTogV29yZHNtaXRoaW5nIG9mICJHTkFUIGFuZCBMaWJyYXJpZXMiIGNoYXB0ZXIKCUVkaXRlZCBnbmF0bWV0cmljIGNoYXB0ZXIKCjIwMDUtMDItMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZ25hdF9ybS50ZXhpOgoJQ2hhbmdlcyB0byBkb2N1bWVudCBuZXcgd2lkZSB3aWRlIGNoYXJhY3RlciBzdXBwb3J0CglGb3IgQUktMjg1CglVcGRhdGUgZG9jdW1lbnRhdGlvbiBvbiBOb3JtYWxpemVfU2NhbGFycyBhbmQgSW5pdGlhbGl6ZV9TY2FsYXJzCgoyMDA1LTAyLTA5ICBQYXNjYWwgT2JyeSAgPG9icnlAYWRhY29yZS5jb20+CgoJKiBzLXRhcHJvcC1taW5ndy5hZGIsIHMtc29mbGluLmFkczogTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwNS0wMi0wOSAgSm9zZSBSdWl6ICA8cnVpekBhZGFjb3JlLmNvbT4KCgkqIHMtb3NpbnRlLXZ4d29ya3MuYWRzICh0YXNrUHJpb3JpdHlHZXQpOiBBZGQgdGhpcyBmdW5jdGlvbiAoaW1wb3J0ZWQKCWZyb20gdGhlIFZ4V29ya3Mga2VybmVsKSB0aGF0IGlzIG5lZWRlZCBmb3IgZ2V0dGluZyB0aGUgYWN0aXZlCglwcmlvcml0eSBvZiB0aGUgZGlmZmVyZW50IHRhc2tzLgoKCSogcy1hdGFjY28uYWRzLCBzLWF0YWNjby5hZGIgKE5vdGhpbmcpOiBSZW1vdmUgdGhpcyBkdW1teSBwcm9jZWR1cmUuCglVc2UgYSBwcmFnbWEgRWxhYm9yYXRlX0JvZHkgaW4gdGhlIHNwZWMgZmlsZSBpbnN0ZWFkLgoJTm90aWNlZCBieSBjb2RlIHJlYWRpbmcuCgoyMDA1LTAyLTA5ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFkYWNvcmUuY29tPgoKCSogZXhwX3V0aWwuYWRzOiBNaW5vciBjb3JyZWN0aW9uIGluIGNvbW1lbnQuCgoyMDA1LTAyLTA5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLXRhcHJvcC5hZHMgKEluaXRpYWxpemUpOiBVcGRhdGUgY29tbWVudHMuIFJlbW92ZSBwcmFnbWEgSW5saW5lLAoJc2luY2UgdGhpcyBwcm9jZWR1cmUgaXMgbm93IHRvbyBjb21wbGV4IHRvIGJlIHdvcnRoIGlubGluaW5nLgoKMjAwNS0wMi0wOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHV0aWxzLmMgKGduYXRfZGVmaW5lX2J1aWx0aW4pOiBSZW1vdmUuCgkoZ25hdF9pbnN0YWxsX2J1aWx0aW5zKTogVXNlIGJ1aWxkX2NvbW1vbl9idWlsdGluX25vZGVzLgoKMjAwNS0wMi0wOSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogYS1yYnRnc28uYWRiLCBhLWNyYnRnby5hZHMsIGEtY3JidGdvLmFkYiwgYS1jcmJ0Z2suYWRzLAoJYS1jcmJ0Z2suYWRiLCBhLWNyYmx0ci5hZHMsIGEtY29wcm51LmFkcywgYS1jb3BybnUuYWRiLAoJYS1jb29yc2UuYWRzLCBhLWNvb3JzZS5hZGIsIGEtY29udmVjLmFkcywgYS1jb252ZWMuYWRiLAoJYS1jb250YWkuYWRzLCBhLWNvaW52ZS5hZHMsIGEtY29pbnZlLmFkYiwgYS1jb2hhdGEuYWRzLAoJYS1jb2hhbWEuYWRzLCBhLWNvaGFtYS5hZGIsIGEtY2lvcnNlLmFkcywgYS1jaW9yc2UuYWRiLAoJYS1jaWhhbWEuYWRzLCBhLWNpaGFtYS5hZGIsIGEtY2lkbGxpLmFkcywgYS1jaWRsbGkuYWRiLAoJYS1jaHRnb3AuYWRzLCBhLWNodGdvcC5hZGIsIGEtY2djYXNvLmFkcywgYS1jZ2Nhc28uYWRiLAoJYS1jZ2Fyc28uYWRzLCBhLWNnYXJzby5hZGIsIGEtY2RsaWxpLmFkcywgYS1jZGxpbGkuYWRiLAoJYS1jZ2Fhc28uYWRiLCBhLWNvb3JtdS5hZGIsIGEtY2lvcm11LmFkYiwgYS1jaWhhc2UuYWRiLAoJYS1jaWhhc2UuYWRzLCBhLWNvaGFzZS5hZGIsIGEtY29oYXNlLmFkcywgYS1jaW9ybWEuYWRzLAoJYS1jb29ybWEuYWRzLCBhLXN3dW5oYS5hZHMsIGEtc3R1bmhhLmFkcywgYS1jaW9ybXUuYWRzLAoJYS1jb29ybXUuYWRzLCBhLXJidGdzby5hZHMsIGEtc3d1bmhhLmFkYiwgYS1zdHVuaGEuYWRiLAoJYS1jZ2Fhc28uYWRzLCBhLWNpb3JtYS5hZGIsIGEtY29vcm1hLmFkYiwgYS1zZWNhaW4uYWRiLAoJYS1zZWNhaW4uYWRzLCBhLXNsY2Fpbi5hZHMsIGEtc2xjYWluLmFkYiwgYS1zaGNhaW4uYWRzLAoJYS1zaGNhaW4uYWRiLCBhLWNodGdrZS5hZHMsIGEtY2h0Z2tlLmFkYiwgYS1zdHdpaGEuYWRzLAoJYS1zdHdpaGEuYWRiLCBhLXN0cmhhcy5hZHMsIGEtc3RyaGFzLmFkYiwgYS1jaHpsYTEuYWRzLAoJYS1jaHpsYTkuYWRzLCBhLWxmenRpby5hZHMsIGEtbGl6dGlvLmFkcywgYS1sbGZ6dGkuYWRzLAoJYS1sbGl6dGkuYWRzLCBhLXNmenRpby5hZHMsIGEtc2l6dGlvLmFkcywgYS1zc2l6dGkuYWRzLAoJYS1zdHpib3UuYWRiLCBhLXN0emJvdS5hZHMsIGEtc3R6Zml4LmFkYiwgYS1zdHpmaXguYWRzLAoJYS1zdHpoYXMuYWRiLCBhLXN0emhhcy5hZHMsIGEtc3R6bWFwLmFkYiwgYS1zdHptYXAuYWRzLAoJYS1zdHpzZWEuYWRiLCBhLXN0enNlYS5hZHMsIGEtc3R6c3VwLmFkYiwgYS1zdHpzdXAuYWRzLAoJYS1zdHp1bmIuYWRiLCBhLXN0enVuYi5hZHMsIGEtc3d1bmF1LmFkYiwgYS1zd3VuYXUuYWRzLAoJYS1zem16Y28uYWRzLCBhLXN6dW5hdS5hZGIsIGEtc3p1bmF1LmFkcywgYS1zenVuaGEuYWRiLAoJYS1zenVuaGEuYWRzLCBhLXN6dXp0aS5hZGIsIGEtc3p1enRpLmFkcywgYS10aXVuaW8uYWRzLAoJYS13d3VuaW8uYWRzLCBhLXp0Y29hdS5hZGIsIGEtenRjb2F1LmFkcywgYS16dGNvaW8uYWRiLAoJYS16dGNvaW8uYWRzLCBhLXp0Y3N0ci5hZGIsIGEtenRjc3RyLmFkcywgYS16dGRlYXUuYWRiLAoJYS16dGRlYXUuYWRzLCBhLXp0ZGVpby5hZGIsIGEtenRkZWlvLmFkcywgYS16dGVkaXQuYWRiLAoJYS16dGVkaXQuYWRzLCBhLXp0ZW5hdS5hZGIsIGEtenRlbmF1LmFkcywgYS16dGVuaW8uYWRiLAoJYS16dGVuaW8uYWRzLCBhLXp0ZXhpby5hZGIsIGEtenRleGlvLmFkcywgYS16dGZpaW8uYWRiLAoJYS16dGZpaW8uYWRzLCBhLXp0ZmxhdS5hZGIsIGEtenRmbGF1LmFkcywgYS16dGZsaW8uYWRiLAoJYS16dGZsaW8uYWRzLCBhLXp0Z2VhdS5hZGIsIGEtenRnZWF1LmFkcywgYS16dGluYXUuYWRiLAoJYS16dGluYXUuYWRzLCBhLXp0aW5pby5hZGIsIGEtenRpbmlvLmFkcywgYS16dG1vYXUuYWRiLAoJYS16dG1vYXUuYWRzLCBhLXp0bW9pby5hZGIsIGEtenRtb2lvLmFkcywgYS16dHRlc3QuYWRiLAoJYS16dHRlc3QuYWRzLCBhLXp6dW5pby5hZHM6IE5ldyBmaWxlcy4gUGFydCBvZiBuZXcgQWRhIDIwMDUKCWxpYnJhcnkuCgoyMDA1LTAxLTI3ICBMYXVyZW50IEdVRVJCWSA8bGF1cmVudEBndWVyYnkubmV0PgoKCSogTWFrZWZpbGUuaW46IEZpeCBhLWludG5hbS5hZHMgZnJvbSBwcmV2aW91cyBjb21taXQsCglhZGQgMjAwNSB0byBjb3B5cmlnaHQuCgkqIGEtaW50bWFuLXJ0ZW1zLmFkczogUmVuYW1lZCB0by4uLgoJKiBhLWludG5hbS1ydGVtcy5hZHM6CgoyMDA1LTAxLTI3ICBMYXVyZW50IEdVRVJCWSA8bGF1cmVudEBndWVyYnkubmV0PgoKCSogTWFrZWZpbGUuaW46IFJlbmFtZSBHTkFUIFJURU1TIHNwZWNpZmljIGZpbGVzLgoJKiA1cnRwb3BzcC5hZGIsIDRyaW50bmFtLmFkcywgNXJvc2ludGUuYWRiLAoJNXJvc2ludGUuYWRzLCA1cnBhcmFtZS5hZGI6IFJlcGxhY2VkIGJ5IGZpbGVzIGJlbG93LgoJKiBzLXRwb3BzcC1ydGVtcy5hZGIsIGEtaW50bWFuLXJ0ZW1zLmFkcywgcy1vc2ludGUtcnRlbXMuYWRiLAoJcy1vc2ludGUtcnRlbXMuYWRzLCBzLXBhcmFtZS1ydGVtcy5hZGI6IFJlcGxhY2UgZmlsZXMgYWJvdmUuCgoyMDA1LTAxLTI3ICBKb2VsIFNoZXJyaWxsIDxqb2VsLnNoZXJyaWxsQG9hcmNvcnAuY29tPgoJICAgIExhdXJlbnQgR1VFUkJZIDxsYXVyZW50QGd1ZXJieS5uZXQ+CgoJUFIgYWRhLzE5NDg4CgkqIDVyb3NpbnRlLmFkczogQWRkIE5vX0tleSBjb25zdGFudC4KCSogNXJ0cG9wc3AuYWRiOiBJbml0aWFsaXplIEFUQ0JfS2V5IHdpdGggTm9fS2V5IGFuZCBmaXggc3R5bGUuCgkqIGdzb2NrZXQuaDogRG8gbm90IGluY2x1ZGUgPHN5cy9zb2NrZXQuaD4gd2l0aCBSVEVNUyBlaXRoZXIuCgoyMDA1LTAxLTI2ICBMYXVyZW50IEdVRVJCWSA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8xOTQxNAoJKiBpLWNvYm9sLmFkYiAoVmFsaWRfTnVtZXJpYyk6IEhhbmRsZSB6ZXJvIGxlbmd0aCBjYXNlLgoKMjAwNS0wMS0yMCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChhbHBoYS1saW51eCwgTElCR05BVF9UQVJHRVRfUEFJUlMpOiBVc2UKCWEtaW50bmFtLWxpbnV4LmFkcyBhbmQgc3lzdGVtLWxpbnV4LWFscGhhLmFkcy4KCSogYS1pbnRuYW0tbGludXgtYWxwaGEuYWRzOiBSZW1vdmUgZmlsZS4KCSogcy1vc2ludGUtbGludXgtYWxwaGEuYWRzIChTSUdVTlVTRUQsIFNJR1NUS0ZMVCwgU0lHTE9TVCk6IE5ldy4KCSogc3lzdGVtLWxpbnV4LWFscGhhLmFkczogTmV3IGZpbGUuCgoyMDA1LTAxLTE4ICBKYWt1YiBKZWxpbmVrICA8amFrdWJAcmVkaGF0LmNvbT4KCglQUiBhZGEvMTM0NzAKCSogYS1zdHVuYXUuYWRiIChHZXRfU3RyaW5nKTogRG9uJ3QgcmV0dXJuIFUuUmVmZXJlbmNlLCBidXQgUmV0IHRoYXQgaXMKCXNldCB0byB0aGUgbmV3IHN0cmluZy4KCjIwMDUtMDEtMTggIFRvb24gTW9lbmUgIDx0b29uQG1vZW5lLmluZGl2Lm5sdXVnLm5sPgoKCSogc3lzdGVtLWxpbnV4LXBwYy5hZHM6IFNldCBaQ1hfQnlfRGVmYXVsdCBhbmQgR0NDX1pDWF9TdXBwb3J0Cgl0byBUcnVlLgoKMjAwNS0wMS0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChMSUJHTkFUX1RBUkdFVF9QQUlSUywgVE9PTFNfVEFSR0VUX1BBSVJTLCBNSVNDTElCLAoJVEhSRUFEU0xJQiwgR05BVExJQl9TSEFSRUQsIFBSRUZJWF9PQkpTLCBMSUJSQVJZX1ZFUlNJT04pOiBTcGVjaWFsaXplCglmb3IgYWxwaGEtbGludXguCgkqIHMtb3NpbnRlLWxpbnV4LWFscGhhLmFkcywgYS1pbnRuYW0tbGludXgtYWxwaGEuYWRzOiBOZXcgZmlsZXMuCgoyMDA1LTAxLTE0ICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCgkqIHN5c3RlbS1kYXJ3aW4tcHBjLmFkcyAoWkNYX0J5X0RlZmF1bHQpOiBDaGFuZ2UgdG8gVHJ1ZS4KCShHQ0NfWkNYX1N1cHBvcnQpOiBMaWtld2lzZS4KCjIwMDUtMDEtMTEgIEJhc3RpYW4gQmxhbmsgIDx3YWxkaUBkZWJpYW4ub3JnPgoKCSogc3lzdGVtLWxpbnV4LXMzOTAuYWRzOiBEZWZpbmUgUHJlYWxsb2NhdGVkX1N0YWNrcy4KCSogc3lzdGVtLWxpbnV4LXMzOTB4LmFkczogTGlrZXdpc2UuCgoyMDA1LTAxLTA0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBGaXggdGV4aSBlcnJvcnMgd2l0aCBudWxsIHZhcmlhYmxlcy4KCjIwMDUtMDEtMDMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBnZW4tc29jY29uLmM6IE5ldyB1dGlsaXR5IHByb2dyYW0gdG8gZ2VuZXJhdGUgZy1zb2Njb24uYWRzCglhdXRvbWF0aWNhbGx5LgoKCSogc29ja2V0LmMsIGdzb2NrZXQuaDogU3BsaXQgaW5jbHVzaW9uIG9mIHN5c3RlbSBoZWFkZXIgZmlsZXMgaW50byBhCglnc29ja2V0LmggZmlsZSBzZXBhcmF0ZWQgZnJvbSBzb2NrZXQuYywgdG8gYWxsb3cgcmV1c2UgaW4gZ2VuLXNvY2Nvbi5jLgoKCSogZy1zb2Njb24uYWRzLCBnLXNvY2Nvbi11bml4d2FyZS5hZHMsIGctc29jY29uLXRydTY0LmFkcywKCWctc29jY29uLWFpeC5hZHMsIGctc29jY29uLWlyaXguYWRzLCBnLXNvY2Nvbi1ocHV4LmFkcywKCWctc29jY29uLWludGVyaXguYWRzLCBnLXNvY2Nvbi1zb2xhcmlzLmFkcywgZy1zb2Njb24tbWluZ3cuYWRzLAoJZy1zb2Njb24tdnh3b3Jrcy5hZHMsIGctc29jY29uLWZyZWVic2QuYWRzOiBOb3RlIHRoYXQgdGhlc2UgZmlsZXMKCXNob3VsZCBub3QgYmUgZWRpdGVkIGJ5IGhhbmQgYW55bW9yZSwgYnV0IHNob3VsZCBiZSByZWdlbmVyYXRlZCB1c2luZwoJZ2VuLXNvY2Nvbi4KCjIwMDUtMDEtMDMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoJICAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHMtYXRhY2NvLmFkcywgYS1kaXJlaW8uYWRiOiBQcm90ZWN0IHVzZSBvZiAnQ29uc3RyYWluZWQgYnkgd2FybmluZ3MKCW9uL29mZiwgc2luY2UgdGhpcyBpcyBhbiBvYnNvbGVzY2VudCBmZWF0dXJlLCBmb3Igd2hpY2ggd2Ugbm93IGdlbmVyYXRlCglhIHdhcm5pbmcuCgoJKiBzZW1fYXR0ci5hZGIgKEFuYWx5emVfQXR0cmlidXRlLCBjYXNlIENvbnN0cmFpbmVkKTogSXNzdWUgd2FybmluZyBpZgoJd2FybmluZyBtb2RlIGlzIHNldCBhbmQgb2Jzb2xlc2NlbnQgdXNhZ2Ugb2YgdGhpcyBhdHRyaWJ1dGUgb2NjdXJzLgoJKFJlc29sdmVfQWNjZXNzLCBjYXNlICdBY2Nlc3MpOiBOb3RlIHRoYXQgR05BVCB1c2VzIHRoZSBjb250ZXh0IHR5cGUgdG8KCWRpc2FtYmlndWF0ZSBvdmVybG9hZGVkIHByZWZpeGVzLCBpbiBhY2NvcmRhbmNlIHdpdGggQUktMjM1LiBHTkFUIGNvZGUKCXByZWRhdGVzLCBhbmQgcGFydGx5IG1vdGl2YXRlcywgdGhlIGFkb3B0aW9uIG9mIHRoZSBBSS4KCUltcGxlbWVudCBuZXcgQWRhIDIwMDUgYXR0cmlidXRlIE1vZAoKCSogZXhwX2F0dHIuYWRiIChFeHBhbmRfTl9BdHRyaWJ1dGVfUmVmZXJlbmNlKTogSW1wbGVtZW50IEFkYSAyMDA1CglhdHRyaWJ1dGUgTW9kLgoKCSogcGFyLWNoNC5hZGIgKFBfTmFtZSk6IEluIEFkYSAyMDA1IG1vZGUsIHJlY29nbml6ZSBuZXcgYXR0cmlidXRlIE1vZAoKCSogc25hbWVzLmgsIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IEFkZCBlbnRyeSBmb3IgTm9fRGVwZW5kZW5jZSBmb3IKCXByYWdtYSByZXN0cmljdGlvbnMuCglOZXcgZW50cnkgZm9yIEFkYSAyMDA1IGF0dHJpYnV0ZSBNb2QuCgoJKiBwYXItcHJhZy5hZGI6CglBZGQgcmVjb2duaXRpb24gb2YgbmV3IHByYWdtYSBSZXN0cmljdGlvbnMgTm9fRGVwZW5kZW5jZQoJUmVjb2duaXplIHJlc3RyaWN0aW9uIE5vX09ic29sZXNjZW50X0ZlYXR1cmVzIGF0IHBhcnNlIHRpbWUKCgkqIGJjaGVjay5hZGI6IEFkZCBjaXJjdWl0cnkgZm9yIGNoZWNraW5nIGZvciBjb25zaXN0ZW5jeSBvZgoJTm9fRGVwZW5kZW5jZSByZXN0cmljdGlvbnMuCgoJKiBsaWItd3JpdC5hZHMsIGxpYi13cml0LmFkYjogT3V0cHV0IG5ldyBSIGxpbmVzIGZvciBOb19EZXBlbmRlbmNlCglyZXN0cmljdGlvbnMuCgoJKiByZXN0cmljdC5hZHMsIHJlc3RyaWN0LmFkYjogQWRkIHN1YnByb2dyYW1zIHRvIGRlYWwgd2l0aAoJTm9fRGVwZW5kZW5jZSByZXN0cmljdGlvbnMuCgoJKiBydHNmaW5kLmFkYjogQ2hlY2sgdGhhdCBpbXBsaWNpdCB3aXRoJ3MgZG8gbm90IHZpb2xhdGUgTm9fRGVwZW5kZW5jZQoJcmVzdHJpY3Rpb25zLgoKCSogc2VtX2NoMy5hZGIsIHNlbV9jaDExLmFkYiwgc2VtX2NoMTMuYWRiLCBsaWIteHJlZi5hZGIsCglzZW1fYXR0ci5hZGI6IEFkZCBjaGVjayBmb3IgbmV3IHJlc3RyaWN0aW9uIE5vX09ic29sZXNjZW50X0ZlYXR1cmVzCgoJKiBzY24uYWRzLCBwcmotZXJyLmFkcywgcHJqLWVyci5hZGIsIGFsaS11dGlsLmFkYiwgZ3ByZXAuYWRiOiBBZGQgbmV3CglkdW1teSBwYXJhbWV0ZXIgdG8gc2NuZyBpbnN0YW50aWF0aW9uLgoJTmVlZGVkIGZvciBuZXcgcmVzdHJpY3Rpb24gTm9fT2Jzb2xlc2NlbnRfRmVhdHVyZXMKCgkqIHNjbi5hZGI6IChPYnNvbGVzY2VudF9DaGVjayk6IE5ldyBwcm9jZWR1cmUKCU5lZWRlZCBmb3IgbmV3IHJlc3RyaWN0aW9uIE5vX09ic29sZXNjZW50X0ZlYXR1cmVzCgoJKiBzY25nLmFkcywgc2NuZy5hZGI6IEFsd2F5cyBhbGxvdyB3aWRlIGNoYXJhY3RlcnMgaW4gQWRhIDIwMDUgbW9kZSwgYXMKCXNwZWNpZmllZCBieSBBSS0yODUsIG5lZWRlZCBmb3IgaW1wbGVtZW50YXRpb24gb2YgQUktMzg4IChhZGRpbmcgZ3JlZWsKCXBpIHRvIEFkYS5OdW1lcmljcykuCglBZGQgbmV3IGdlbmVyaWMgZm9ybWFsIHRvIHNjbmcsIG5lZWRlZCBmb3IgbmV3IHJlc3RyaWN0aW9uCglOb19PYnNvbGVzY2VudF9GZWF0dXJlcy4KCgkqIHMtcmlkZW50LmFkczogQWRkIG5ldyByZXN0cmljdGlvbiBOb19PYnNvbGVzY2VudF9GZWF0dXJlcy4KCgkqIGFsaS5hZHMsIGFsaS5hZGI6IEFkanVzdG1lbnRzIGZvciByZWFkaW5nIG5ldyBOb19EZXBlbmRlbmNlCglyZXN0cmljdGlvbnMgbGluZXMuCgkoU2Nhbl9BTEkpOiBXaGVuIGZpbmRpbmcgYW4gdW5leHBlY3RlZCBjaGFyYWN0ZXIgb24gYW4gUiBsaW5lLCByYWlzZQoJZXhjZXB0aW9uIEJhZF9SX0xpbmUsIGluc3RlYWQgb2YgY2FsbGluZyBGYXRhbF9FcnJvciwgc28gdGhhdCwgd2hlbgoJSWdub3JlX0Vycm9ycyBpcyBUcnVlLCBkZWZhdWx0IHJlc3RyaWN0aW9ucyBhcmUgc2V0IGFuZCBzY2FubmluZyBvZiB0aGUKCUFMSSBmaWxlIGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGxpbmUuIEFsc28sIHdoZW4gQmFkX1JfTGluZSBpcyByYWlzZWQKCWFuZCBJZ25vcmVfRXJyb3JzIGlzIFRydWUsIHNraXAgdG8gdGhlIGVuZCBvZiBsZSBsaW5lLgoKCSogc2VtX2NoMTAuYWRiOiBDaGVjayB0aGF0IGV4cGxpY2l0IHdpdGgncyBkbyBub3QgdmlvbGF0ZQoJTm9fRGVwZW5kZW5jZSByZXN0cmljdGlvbnMuCgkoSW5zdGFsbF9XaXRoZWRfVW5pdCk6IEFkZCBjb2RlIHRvIGltcGxlbWVudCBBSS0zNzcgYW5kIGRpYWdub3NlCglpbGxlZ2FsIGNvbnRleHQgY2xhdXNlcyBjb250YWluaW5nIGNoaWxkIHVuaXRzIG9mIGluc3RhbmNlLgoKCSogc2VtX3ByYWcuYWRiOiBQcm9jZXNzaW5nIGFuZCBjaGVja2luZyBmb3IgbmV3IE5vX0RlcGVuZGVuY2UKCXJlc3RyaWN0aW9ucy4KCShBbmFseXplX1ByYWdtYSwgY2FzZSBQc2VjdF9PYmplY3QpOiBDYWxsIENoZWNrX0FyZ19Jc19FeHRlcm5hbF9OYW1lIHRvCglhbmFseXplIGFuZCBjaGVjayB0aGUgRXh0ZXJuYWwgYXJndW1lbnQuCgoJKiBhLW51bWVyaS5hZHM6IEFkZCBncmVlayBsZXR0ZXIgcGkgYXMgYWx0ZXJuYXRpdmUgc3BlbGxpbmcgb2YgUGkKCjIwMDUtMDEtMDMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogYXRyZWUuYWRiOiBBZGQgYSBmaWZ0aCBjb21wb25lbnQgdG8gZW50aXRpZXMKCVRoaXMgYWxsb3dzIHVzIHRvIGFkZCAzMiBmbGFncyBhbmQgZm91ciBuZXcgZmllbGRzCgoJKiBhdHJlZS5hZHM6IEFkZCBhIGZpZnRoIGNvbXBvbmVudCB0byBlbnRpdGllcwoJVGhpcyBhbGxvd3MgdXMgdG8gYWRkIDMyIGZsYWdzIGFuZCBmb3VyIG5ldyBmaWVsZHMKCgkqIGVpbmZvLmFkcywgZWluZm8uYWRiOiBEb2N1bWVudCBuZXcgZmllbGRzIGFuZCBuZXcgZmxhZ3Mgbm93IGF2YWlsYWJsZQoJQWRkIHJvdXRpbmVzIGZvciBwcmludGluZyBuZXcgZmllbGRzCgoJKiB0cmVlcHIuYWRiOiBDYWxsIHJvdXRpbmVzIHRvIHByaW50IG91dCBhZGRpdGlvbmFsIGZpZWxkcyBpZiBwcmVzZW50CgoyMDA1LTAxLTAzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBibGQuYWRzLCBibGQuYWRiLCBibGQtaW8uYWRzLCBibGQtaW8uYWRiLCBncHJjbWQuYWRiLAoJZ3ByMm1ha2UuYWRzLCBncHIybWFrZS5hZGI6IFJlbW92ZSBncHIybWFrZSwgcmVwbGFjZWQgYnkgZ3BybWFrZS4KCgkqIE1ha2VmaWxlLmluOiBBZGQgc3VwcG9ydCB0byBidWlsZCBzaGFyZWQgQWRhIGxpYnJhcmllcyBvbiBzb2xhcmlzIHg4NgoJUmVtb3ZlIGdwcjJtYWtlLCByZXBsYWNlZCBieSBncHJtYWtlLgoJUmVtb3ZlIHJlZmVyZW5jZXMgdG8gZ25hdG1lbSBhbmQgbGliYWRkcjJsaW5lLgoJQWRkIGluZGVwc3cuYWRiPGluZGVwc3ctbGludXguYWRiIHRvIFRPT0xTX1RBUkdFVF9QQUlSUyBmb3IgSUE2NCBsaW51eC4KCShnbmF0bGliLXNoYXJlZC1kYXJ3aW4pOiBBZGQgIi1mbm8tY29tbW9uIiB0byBHTkFUTElCQ0ZMQUdTLgoJQWRkIHN1cHBvcnQgZm9yIHNwZWNpYWxpemVkIHZlcnNpb24gb2YgQWRhLk51bWVyaWNzLkF1eCBmb3IgRGFyd2luOiB1c2UKCWEtbnVtYXV4LWRhcndpbi5hZHMgYW5kIGEtbnVtYXV4LWRhcndpbi5hZGIKCUVuYWJsZSBtbGliLXRndC1seW54b3MuYWRiIG9uIGx5bnhvcy4KCgkqIE1ha2UtbGFuZy5pbjogUmVtb3ZlIHJ1bGVzIGZvciBncHIybWFrZS4KCVdoZW4gZ2VuZXJhdGluZyBzZGVmYXVsdC5hZGIsIGRvIG5vdCBjYWxsIFJlbG9jYXRlX1BhdGgKCW9uIFMzIGZvciBmdW5jdGlvbiBUYXJnZXRfTmFtZSwgYXMgaXQgaXMgbm90IGEgcGF0aC4KCVJlbW92ZSByZWZlcmVuY2VzIHRvIGduYXRtZW0gYW5kIGxpYmFkZHIybGluZS4KCgkqIGEtbnVtYXV4LWRhcndpbi5hZHMsIGEtbnVtYXV4LWRhcndpbi5hZGIsIGctc29jY29uLWRhcndpbi5hZHM6IE5ldwoJZmlsZXMuCgoyMDA1LTAxLTAzICBTYW11ZWwgVGFyZGlldSAgPHRhcmRpZXVAYWRhY29yZS5jb20+CgoJKiBjaGVja3MuYWRiIChBcHBseV9BbGlnbm1lbnRfQ2hlY2spOiBHZW5lcmF0ZSBhIHdhcm5pbmcgaWYgYW4gb2JqZWN0CglhZGRyZXNzIGlzIGluY29tcGF0aWJsZSB3aXRoIGl0cyBiYXNlIHR5cGUgYWxpZ25tZW50IGNvbnN0cmFpbnRzIHdoZW4KCXRoaXMgY2FuIGJlIGRlY2lkZWQgc3RhdGljYWxseS4KCjIwMDUtMDEtMDMgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgoJKiBkZWNsLmMgKGNvbXBhdGlibGVfc2lnbmF0dXJlc19wKTogTmV3IGZ1bmN0aW9uLiBUaGUgaW50ZW5kZWQgcHVycG9zZQoJaXMgdG8gY2hlY2sgaWYgdHdvIGZ1bmN0aW9uIHNpZ25hdHVyZXMgZm9yIGEgY2FsbC1zaXRlIGFuZCBhIGNhbGxlZSBhcmUKCWNvbXBhdGlibGUgZW5vdWdoIGZvciB0aGUgY2FsbCB0byBiZSB2YWxpZC4gVGhlIHVuZGVybHlpbmcgcHVycG9zZSBpcwoJdG8gY2hlY2sgaWYgYSBjYWxsIHRvIGEgbWFwcGVkIGJ1aWx0aW4gaXMgdXNpbmcgdGhlIHJpZ2h0IGludGVyZmFjZS4KCVRoZSBjdXJyZW50IGNvZGUgYWN0dWFsbHkgZG9lcyBub3QgY2hlY2sgYW50eWhpbmcgLSB0aGlzIGEgcGxhY2Vob2xkZXIKCWZvciBmdXR1cmUgcmVmaW5lbWVudHMuCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9TdWJwcm9ncmFtX0NhbGw+OiBBZGQgcHJlbGltaW5hcnkgYml0cyB0byBoYW5kbGUKCWJ1aWx0aW4gY2FsbHMgZm9yIGNvbnZlbnRpb24gSW50cmluc2ljLgoKCSogZ2lnaS5oIChidWlsdGluX2RlY2xfZm9yKTogRGVjbGFyZSAobmV3IGZ1bmN0aW9uKS4KCgkqIHV0aWxzLmMgKGduYXRfaW5zdGFsbF9idWlsdGlucyk6IEluc3RhbGwgdGhlIHRhcmdldCBzcGVjaWZpYyBidWlsdGlucy4KCShidWlsdGluX2RlY2xfZm9yKTogTmV3IGZ1bmN0aW9uLCBwcm92aWRlIGEgZHVtbXkgYm9keSBmb3Igbm93LgoKMjAwNS0wMS0wMyAgR2VlcnQgQm9zY2ggIDxib3NjaEBhZGFjb3JlLmNvbT4KCgkqIGV2YWxfZmF0LmFkYjogKEVwc19Nb2RlbCxFcHNfRGVub3JtKTogUmVtb3ZlLCBubyBsb25nZXIgdXNlZC4KCShTdWNjKTogUmUtaW1wbGVtZW50IHVzaW5nIFNjYWxpbmcsIEV4cG9uZW50IGFuZCBDZWlsaW5nIGF0dHJpYnV0ZXMuCgkoUHJlZCk6IEltcGxlbWVudCBpbiB0ZXJtcyBvZiBTdWNjLgoKCSogdHJhbnMuYyAoY29udmVydF93aXRoX2NoZWNrKTogUmVpbXBsZW1lbnQgY29udmVyc2lvbiBvZiBmbG9hdCB0bwoJaW50ZWdlci4KCjIwMDUtMDEtMDMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoUGFja2VkX0FycmF5X0FnZ3JlZ2F0ZV9IYW5kbGVkKTogVGhlIHZhbHVlcyBvZiB0aGUKCWJvdW5kcyBjYW4gYmUgbmVnYXRpdmUsIGFuZCBtdXN0IGJlIGRlY2xhcmVkIEludCwgbm90IE5hdC4KCgkqIHNlbV9lbGltLmFkYiAoTGluZV9OdW1fTWF0Y2gpOiBDb3JyZWN0IHdyb25nIGNvZGUgd2hlbiBpbmRleCBpbiBhbgoJYXJyYXkgaXMgY2hlY2tlZCBhZnRlciB1c2luZyB0aGUgaW5kZXggaW4gdGhlIGFycmF5LgoKCSogbWFrZWdwci5hZGIgKEFkZF9Td2l0Y2hlcyk6IENoZWNrIGlmIHRoZXJlIGlzIGEgcGFja2FnZSBmb3IgdGhlCglwcm9jZXNzb3IuIElmIHRoZXJlIGlzIG5vIHBhY2thZ2UsIGRvIG5vdCBsb29rIGZvciBzd2l0Y2hlcy4KCjIwMDUtMDEtMDMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDMuYWRiIChTdHJlYW1fT3BlcmF0aW9uc19PSyk6IFByZWRpY2F0ZSB0byBkZXRlcm1pbmUgd2hlbiB0aGUKCWdlbmVyYXRpb24gb2YgcHJlZGVmaW5lZCBzdHJlYW0gb3BlcmF0aW9ucyAoc3BlY3MgYW5kIGJvZGllcykgc2hvdWxkCglwcm9jZWVkLiBVbmRlciB2YXJpb3VzIHJlc3RyaWN0aW9ucyB0aGVzZSBzdWJwcm9ncmFtcyBtdXN0IG5vdCBiZQoJZ2VuZXJhdGVkLgoKMjAwNS0wMS0wMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXN0LmFkYjoKCURlY2xhcmUgc3VicHJvZ3JhbSBpbmRleCBpbiBCdWlsZF9SUENfUmVjZWl2ZXJfQm9keSwgdG8gcmVkdWNlIHRoZQoJYW1vdW50IG9mIFBDUy1zcGVjaWZpYyBjb2RlIGluIFJBQ1cgc3R1YnMgZ2VuZXJhdGlvbi4KCShDb3B5X1NwZWNpZmljYXRpb24pOiBTZXQgRXR5cGUgb24gY29waWVkIGZvcm1hbCBwYXJhbWV0ZXIgZW50aXRpZXMsIGFzCgl0aGlzIGluZm9ybWF0aW9uIGlzIG5lZWRlZCBmb3IgUG9seU9SQiBzdHVicyBnZW5lcmF0aW9uLgoJKFBvbHlPUkJfU3VwcG9ydC5CdWlsZF9TdWJwcm9ncmFtX1JlY2VpdmluZ19TdHVicyk6IFJlbW92ZSB1bnVzZWQKCXZhcmlhYmxlIER5bmFtaWNfQXN5bmMuCgkoQnVpbGRfU3VicHJvZ3JhbV9SZWNlaXZpbmdfU3R1YnMpOiBNYWtlIFBDUy1zcGVjaWZpYwoJKEJ1aWxkX1JQQ19SZWNlaXZlcl9TcGVjaWZpY2F0aW9uKTogTWFrZSBnZW5lcmljIGFnYWluLCBhcyByZWNlbnQKCWNoYW5nZXMgaGF2ZSBhbGxvd2VkIFJQQyByZWNlaXZlcnMgdG8gaGF2ZSB0aGUgc2FtZSBwcm9maWxlIGZvciBib3RoCgl2YXJpYW50cyBvZiB0aGUgUENTLgoJUmVvcmdhbmlzZSBSUEMgcmVjZWl2ZXIgZ2VuZXJhdGlvbiB0byByZWR1Y2UgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUKCXN0cnVjdHVyZSBvZiBHQVJMSUMgYW5kIFBvbHlPUkIgUlBDIHJlY2VpdmVycy4KCShBZGRfUmVjZWl2aW5nX1N0dWJzX1RvX0RlY2xhcmF0aW9ucyk6IE1ha2UgdGhpcyBzdWJwcm9ncmFtCglQQ1Mtc3BlY2lmaWMuCglTaW1wbGlmeSBlbGFib3JhdGlvbiBjb2RlIGZvciBSQ0kgcGFja2FnZXMuCgoJKiBzLXBhcmludC5hZHMsIHMtcGFyaW50LmFkYiwgcnRzZmluZC5hZHM6IFJlb3JnYW5pc2UgUlBDIHJlY2VpdmVyCglnZW5lcmF0aW9uIHRvIHJlZHVjZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBzdHJ1Y3R1cmUgb2YgR0FSTElDIGFuZAoJUG9seU9SQiBSUEMgcmVjZWl2ZXJzLgoKCSogcy1zdHJhdHQuYWRiOiBGaXggdHlwbyBpbiBjb21tZW50LgoKMjAwNS0wMS0wMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDcuYWRzIChNYWtlX0ZpbmFsX0NhbGwpOiBSZXdyaXRlIGNvbW1lbnQgKHdhcyBpbmNvcnJlY3RseQoJY29waWVkIGZyb20gTWFrZV9Jbml0X0NhbGwpLgoKCSogZXhwX3N0cm0uYWRiIChCdWlsZF9NdXRhYmxlX1JlY29yZF9SZWFkX1Byb2NlZHVyZSk6IERvIGNvbXBvbmVudAoJcmVhZHMgYW5kIGFzc2lnbm1lbnRzIG9uIGEgdGVtcG9yYXJ5IHZhcmlhYmxlIGRlY2xhcmVkIHdpdGggYXBwcm9wcmlhdGUKCWRpc2NyaW1pbmFudHMuCgoyMDA1LTAxLTAzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGktYy5hZGIgKFRvX0MpOiBSYWlzZSBDRSBpZiBzdHJpbmcgaXMgbnVsbCBhbmQgQXBwZW5kX051bGwKCjIwMDUtMDEtMDMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogaS1jc3RyaW4uYWRiIChVcGRhdGUpOiBEbyBub3QgYXBwZW5kIGEgbnVsbCBpbiBmb3JtIGNhbGxlZCB3aXRoIGEKCVN0cmluZy4gVGhpcyBhdm9pZHMgdW5pbnRlbmRlZCBiZWhhdmlvci4KCjIwMDUtMDEtMDMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMTc1MjcKCSogaW5pdC5jOiBGaXggd2FybmluZ3Mgb24gRnJlZSBCU0Qgc2VjdGlvbi4KCjIwMDUtMDEtMDMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhZGFjb3JlLmNvbT4KCglQUiBhZGEvMTY5NDkKCSogc2luZm8uYWRzOiBGaXggb2Jzb2xldGUgcmVmZXJlbmNlIHRvIHhzaW5mby5zcHQgKHJlcGxhY2VkIGJ5Cgl4c2luZm8uYWRiKS4KCjIwMDUtMDEtMDMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZS5hZGIgKENvbGxlY3RfQXJndW1lbnRzX0FuZF9Db21waWxlKTogRG8gbm90IGF0dGVtcHQgdG8gYnVpbGQKCWxpYnJhcmllcyB3aGVuIFVuaXF1ZV9Db21waWxlIGlzIFRydWUgKC11IHN3aXRjaCkuCgkoR25hdG1ha2UpOiBkaXR0by4KCjIwMDUtMDEtMDMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogbmFtZXQuYWRiIChHZXRfRGVjb2RlZF9OYW1lX1dpdGhfQnJhY2tldHMpOiBGaXggY2FzZSBvZiBub3QgYWxsb3dpbmcKCXVwcGVyIGNhc2UgbGV0dGVyIG9yIHVuZGVyc2NvcmUgYWZ0ZXIgVywgYXMgYWxsb3dlZCBieSBzcGVjLgoKMjAwNS0wMS0wMyAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogcy1vc2ludGUtZGFyd2luLmFkcywgcy1vc2ludGUtZGFyd2luLmFkYjogQ2xlYW4gdXAKCWRhcndpbiBwb3J0IGJ5IHVzaW5nIHByb3BlciB0eXBlIGRlZmluaXRpb25zIGZyb20gaGVhZGVyIGZpbGVzLgoJVXNlIFNJR1RFUk0gaW5zdGVhZCBvZiBTSUdBQlJUIGZvciBTSUdBREFBQk9SVC4KCjIwMDUtMDEtMDMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogcGFyLmFkYjogRW5oYW5jZSBlcnJvciBtZXNzYWdlIGhhbmRsaW5nIGZvciBjb25maWd1cmF0aW9uIGZpbGUKCXByYWdtYXMuCgoyMDA1LTAxLTAzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIHMtYXJpdDY0LmFkYiAoRG91YmxlX0RpdmlkZSk6IFB1dCBiYWNrIGNoYW5nZXMgdGhhdCBnb3QgYWNjaWRlbnRhbGx5CglyZW1vdmVkIGR1cmluZyB0aGUgcHJldmlvdXMgdXBkYXRlICh0ZXN0IHByb3Blcmx5IGZvciBjYXNlIG9mIGRpdmlkaW5nCglsYXJnZXN0IG5lZ2F0aXZlIG51bWJlciBieSAtMSwgd2hpY2ggZ2VuZXJhdGVzIG92ZXJmbG93KS4KCjIwMDUtMDEtMDMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCSAgICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhZGFjb3JlLmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoQW5hbHl6ZV9QYWNrYWdlX0luc3RhbnRpYXRpb24pOiBDcmVhdGUgYSBzZXBhcmF0ZSBub2RlCgl0byB1c2UgYXMgdGhlIGRlZmluaW5nIGlkZW50aWZpZXIgZm9yIGEgZm9ybWFsIHBhY2thZ2UuCgkoUmVtb3ZlX1BhcmVudCk6IElmIHRoZSBpbnN0YW5jZSB0YWtlcyBwbGFjZSB3aXRoaW4gKGFuIGluc3RhbmNlIG9mKQoJYSBzaWJsaW5nLCBwcmVzZXJ2ZSBwcml2YXRlIGRlY2xhcmF0aW9ucyBvZiBjb21tb24gcGFyZW50LgoKMjAwNS0wMS0wMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogc2VtX2NoNC5hZGIgKEhhc19GaXhlZF9PcCk6IE5ldyBwcmVkaWNhdGUgaW4gQ2hlY2tfQXJpdGhtZXRpY19QYWlyLAoJdG8gZGV0ZXJtaW5lIHdoZXRoZXIgb25lIG9mIHRoZSBvcGVyYW5kcyBpcyBhIGZpeGVkLXBvaW50IHR5cGUgZm9yCgl3aGljaCBhIHVzZXItZGVmaW5lZCBtdWx0aXBsaWNhdGlvbiBvciBkaXZpc2lvbiBvcGVyYXRpb24gbWlnaHQgYmUKCWRlZmluZWQuCgoJKiBzZW1fcmVzLmFkYiAoVmFsaWRfQ29udmVyc2lvbik6IFRoZSBsZWdhbGl0eSBydWxlcyBmb3IgY29udmVyc2lvbnMKCW9mIGFjY2VzcyB0eXBlcyBhcmUgc3ltbWV0cmljIGluIEFkYSAyMDA1OiBlaXRoZXIgZGVzaWduYXRlZCB0eXBlIGNhbgoJYmUgdW5jb25zdHJhaW5lZC4KCjIwMDUtMDEtMDMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogcy1maWxlaW8uYWRiIChUZW1wX0ZpbGVfUmVjb3JkKTogQ2hhbmdlIGxlbmd0aCBvZiBzdHJpbmcgY29tcG9uZW50CglOYW1lIGZyb20gTF90bXBuYW0gKyAxIHRvIG1heF9wYXRoX2xlbiArIDEuCgoyMDA1LTAxLTAzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBzLXRhc2luaS5hZHMsIHMtdGFzaW5pLmFkYiAoVW5kZWZlcl9BYm9ydGlvbik6IEhhbmRsZSBjYXNlIG9mCglTZWxmX0lkLkRlZmVycmFsX0xldmVsID0gMC4KCShEb19QZW5kaW5nX0FjdGlvbik6IE1vdmUgdGhpcyBmdW5jdGlvbiB0byB0aGUgc3BlYy4KCgkqIHMtdGFzcmVuLmFkYiAoU2VsZWN0aXZlX1dhaXQgW1Rlcm1pbmF0ZV9TZWxlY3RlZF0pOiBDYWxsCglEb19QZW5kaW5nX0FjdGlvbiBleHBsaWNpdGVseSB3aGVuIG5lZWRlZCwgaW4gY2FzZSB3ZSdyZSB1c2luZwoJTm9fQWJvcnQgcmVzdHJpY3Rpb25zLgoKCSogcy10YXNzdGEuYWRiIChDcmVhdGVfVGFzayk6IElmIEFib3J0IGlzIG5vdCBhbGxvd2VkLCByZXNldCB0aGUKCWRlZmVycmFsIGxldmVsIHNpbmNlIGl0IHdpbGwgbm90IGdldCBjaGFuZ2VkIGJ5IHRoZSBnZW5lcmF0ZWQgY29kZS4KCUtlZXBpbmcgYSBkZWZhdWx0IHZhbHVlIG9mIDEgd291bGQgcHJldmVudCBzb21lIG9wZXJhdGlvbnMgKGUuZy4KCXNlbGVjdCBvciBkZWxheSkgdG8gcHJvY2VlZCBzdWNjZXNzZnVsbHkuCgoyMDA1LTAxLTAzICBCZW4gQnJvc2dvbCAgPGJyb3Nnb2xAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFkYWNvcmUuY29tPgoKCSogdWdfd29yZHMsIGduYXRfdWduLnRleGk6IEFkZGVkIGFscGhhLWl2bXMgdHJhbnNpdGlvbmluZyBzZWN0aW9uIHRvCglwb3J0aW5nIGd1aWRlIGNoYXB0ZXIgKHZtcyB2ZXJzaW9uKS4KCVJldmlzZWQgZG9jIHRpdGxlIChyZW1vdmVkICJmb3IgbmF0aXZlIHBsYXRmb3JtcyIpIGFuZCBzdWJ0aXRsZS4KCUFkZCBkaXNjdXNzaW9uIG9uIHdhcm5pbmcgZmxhZyBmb3Igb2Jzb2xlc2NlbnQgZmVhdHVyZXMuIEZpcnN0IHdlCglub3RlIHRoYXQgaXQgYXBwbGllcyB0byBvYnNvbGV0ZSBHTkFUIGZlYXR1cmVzLCB3aGljaCB3YXMgcHJldmlvdXNseQoJb21pdHRlZC4gU2Vjb25kIHdlIGNvbnRyYXN0IHRoZSBiZWhhdmlvciB3aXRoIHRoYXQgb2YgdGhlIG5ldwoJQWRhIDIwMDUgQUktMzY4IHJlc3RyaWN0aW9uIE5vX09ic29sZXNjZW50X0ZlYXR1cmVzLgoJUHJlbGltaW5hcnkgcmV3cml0aW5nIG9mIEdOQVQgJiBsaWJyYXJpZXMgY2hhcHRlciBpbiBvcmRlciB0byB0YWtlCglpbnRvIGFjY291bnQgZGVmYXVsdCBwcm9qZWN0IGxvY2F0aW9ucyAmIG5ldyBwcm9qZWN0IG1hbmFnZXIKCWNhcGFiaWxpdGllcy4KCjIwMDUtMDEtMDMgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogY3N0YW5kLmFkYiAoQ3JlYXRlX09wZXJhdG9ycyk6IENsZWFuIHVwIGZvcm1hdCBhbmQgZG9jdW1lbnRhdGlvbiBvZgoJdW5hcnkgYW5kIGJpbmFyeSBvcGVyYXRvciByZXN1bHQgdGFibGVzLiBObyBjaGFuZ2UgaW4gY29kZSwganVzdAoJcmVmb3JtYXR0aW5nIGFuZCBhZGRpdGlvbiBvZiBjb21tZW50cy4KCgkqIGVycm91dC5hZHMsIGduYXRmaW5kLmFkYiwgcy1tYWNjb2QuYWRzLCBzZW0uYWRiLAoJc2VtX2NoMi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogYXRyZWUuYWRzLCBlbGlzdHMuYWRzLCBsaWIuYWRzLCBuYW1ldC5hZHMsIG5saXN0cy5hZHMsIHJlcGluZm8uYWRzLAoJc2lucHV0LmFkcywgc3RyaW5ndC5hZHMsIHVpbnRwLmFkcywgdXJlYWxwLmFkczogTWlub3IgY2xhcmlmaWNhdGlvbiB0bwoJY29tbWVudHMgZm9yIFRyZWVfUmVhZCBhbmQgVHJlZV9Xcml0ZS4KCjIwMDUtMDEtMDMgIFBhc2NhbCBPYnJ5ICA8b2JyeUBhZGFjb3JlLmNvbT4KCgkqIGV4cF9hdHRyLmFkczogTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwNS0wMS0wMyAgUm9tYWluIEJlcnJlbmRvbm5lciAgPGJlcnJlbmRvQGFkYWNvcmUuY29tPgoKCSogY29tcGVyci5hZGIgKENvbXBpbGVyX0Fib3J0KTogQWRkIHNwZWNpYWxpemVkIG1lc3NhZ2UgZm9yIEdBUAoJdmVyc2lvbnMuCgoyMDA1LTAxLTAzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfcGFrZC5hZGIgKENyZWF0ZV9QYWNrZWRfQXJyYXlfVHlwZSk6IEFkZCBhIGd1YXJkIHRvIGNoZWNrCgl3aGV0aGVyIHRoZSBhbmNlc3RvciB0eXBlIGlzIHByaXZhdGUsIGFzIG1heSBiZSB0aGUgY2FzZSB3aXRoIG5lc3RlZAoJaW5zdGFudGlhdGlvbnMuCgoyMDA0LTEyLTMwICBTb2hhaWwgU29tYW5pIDxzb2hhaWxAc29oYWlsc29tYW5pLmNvbT4KCglQUiBhZGEvMTkxMjgKCSogdHJhbnMuYyAoZ25hdF90b19nbnUpOiBGaXggdHlwbzogVXNlIGNvcnJlY3QgcmV0dXJuIHZhcmlhYmxlLgoKMjAwNC0xMi0yMyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBsaWJlcnR5c3VyZi5mcj4KCgkqIHRyYW5zLmMgKEF0dHJpYnV0ZV90b19nbnUpOiBBZGp1c3QgY2FsbCB0byBnZXRfaW5uZXJfcmVmZXJlbmNlLgoJKiB1dGlsczIuYyAoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCjIwMDQtMTItMjIgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmFucy5jIChtYXJrX3Zpc2l0ZWQpOiBTZXQgVFlQRV9TSVpFU19HSU1QTElGSUVELgoKMjAwNC0xMi0xOSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyYW5zLmMgKGdpZ2kpOiBVcGRhdGUgZ2ltcGxpZnlfYm9keSBjYWxsLgoKMjAwNC0xMi0wOSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGRlY2wuYyAoZ25hdF9zdWJzdGl0dXRlX2luX3R5cGUpOiBSZW1vdmUgU0VUX1RZUEUgY2FzZS4KCjIwMDQtMTItMDcgIEVkIEZhbGlzICA8ZmFsaXNAYWRhY29yZS5jb20+CgoJKiBzLWludG1hbi12eHdvcmtzLmFkYiAoTm90aWZ5X0V4Y2VwdGlvbik6IHJlbW92ZWQgdXNlbGVzcyBjaGVjayBmb3IKCWN1cnJlbnQgdGFzayBiZWluZyBzdXNwZW5kZWQuCgoJKiBpbml0LmMgKF9fZ25hdF9jbGVhcl9leGNlcHRpb24pOiBhZGRlZCB0byByZXNldCBWeFdvcmtzIGV4Y2VwdGlvbgoJY291bnQuCgkoX19nbmF0X21hcF9zaWduYWwpOiByZW1vdmVkIHRlc3QgZm9yIGN1cnJlbnQgdGFzayBiZWluZyBzdXNwZW5kZWQuCgoyMDA0LTEyLTA3ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBhLWV4ZXhwci5hZGIgKE90aGVyc19WYWx1ZSwgQWxsX090aGVyc19WYWx1ZSk6IENoYW5nZSBpbml0aWFsIHZhbHVlcwoJZnJvbSAxNiNCRUVGIyB0byAxNiM3RkZGIyB0byBhdm9pZCBleGNlZWRpbmcgSW50ZWdlcidMYXN0IG9uIDE2LWJpdAoJdGFyZ2V0cyAoc3VjaCBhcyBBQU1QKS4KCjIwMDQtMTItMDcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGF0cmVlLmFkYiAoVmlzaXRfSXR5cGUpOiBDcmVhdGUgYSBuZXcgbmFtZSBmb3IgdGhlIGdlbmVyYXRlZCBpdHlwZSwKCWJlY2F1c2UgdGhlIGJhY2stZW5kIG1heSBvdGhlcndpc2UgdHJlYXQgaXQgYXMgYSByZWRlZmluaXRpb24gb2YgdGhlCglvbGQgc3ltYm9sLgoKMjAwNC0xMi0wNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGJhY2tfZW5kLmFkYiAoU2Nhbl9CYWNrX0VuZF9Td2l0Y2hlcyk6IEFjY2VwdCAtLXBhcmFtLgoKCSogbGFuZy1zcGVjcy5oOiBBY2NlcHQgLS1wYXJhbS4KCjIwMDQtMTItMDcgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZS5hZGIgKENoZWNrX01haW5zLCBTd2l0Y2hlc19PZik6IEFkYXB0IHRvIG5hbWUgY2hhbmdlcyBpbgoJcGFja2FnZSBQcmogKEN1cnJlbnRfU3BlY19TdWZmaXggPT4gQWRhX1NwZWNfU3VmZml4LAoJQ3VycmVudF9Cb2R5X1N1ZmZpeCA9PiBBZGFfQm9keV9TdWZmaXgpLgoJVGFrZSBpbnRvIGFjY291bnQgRXh0ZXJuYWxseV9CdWlsdCBhdHRyaWJ1dGUuCgoJKiBjbGVhbi5hZGIgKEluX0V4dGVuc2lvbl9DaGFpbik6IEFsd2F5cyByZXR1cm4gRmFsc2Ugd2hlbiBvbmUgb2YgdGhlCglwYXJhbWV0ZXIgaXMgTm9fUHJvamVjdC4KCShDbGVhbl9Qcm9qZWN0KTogQWRhcHQgdG8gY2hhbmdlcyBpbiBwYWNrYWdlIFByaiAoTGFuZ19BZGEgPT4KCUFkYV9MYW5ndWFnZV9JbmRleCkuCgkoR25hdGNsZWFuKTogQWRhcHQgdG8gY2hhbmdlIGluIHBhY2thZ2UgUHJqLlBhcnMgKG5vIHBhcmFtZXRlcgoJUHJvY2Vzc19MYW5ndWFnZXMgZm9yIHByb2NlZHVyZSBQYXJzZSkuCgoJKiBnbmF0Y21kLmFkYiAoQ2FyZ19Td2l0Y2hlcyk6IE5ldyB0YWJsZS4KCShHTkFUQ21kKTogUHV0IGFsbCBzd2l0Y2hlcyBmb2xsb3dpbmcgLWNhcmdzIGluIHRoZSBDYXJnX1N3aXRjaGVzIHRhYmxlLgoJQWRhcHQgdG8gbmFtZSBjaGFuZ2VzIGluIHBhY2thZ2UgUHJqIChDdXJyZW50X1NwZWNfU3VmZml4ID0+CglBZGFfU3BlY19TdWZmaXgsIEN1cnJlbnRfQm9keV9TdWZmaXggPT4gQWRhX0JvZHlfU3VmZml4KS4KCgkqIG1saWItcHJqLmFkYjogQWRhcHQgdG8gY2hhbmdlcyBpbiBwYWNrYWdlcyBQcmogYW5kIFByai5Db206IHR5cGUKCUhlYWRlcl9OdW0gYW5kIGZ1bmN0aW9uIEhhc2ggYXJlIG5vdyBkZWNsYXJlZCBpbiBwYWNrYWdlIFByaiwKCW5vdCBQcmouQ29tLgoKCSogcHJqLmFkYiAoU3VmZml4X09mKTogTmV3IGZ1bmN0aW9uLgoJKFNldCAoU3VmZml4KSk6IE5ldyBwcm9jZWR1cmUuCgkoSGFzaCk6IE9uZSBmdW5jdGlvbiBtb3ZlZCBmcm9tIFByai5Db20KCShJc19QcmVzZW50LCBMYW5ndWFnZV9Qcm9jZXNzaW5nX0RhdGFfT2YpOiBOZXcgZnVuY3Rpb25zCgkoU2V0KTogVHdvIG5ldyBwcm9jZWR1cmVzCgkoQWRkX0xhbmd1YWdlX05hbWUsIERpc3BsYXlfTGFuZ3VhZ2VfTmFtZSk6IE5ldyBwcm9jZWR1cmVzCgoJKiBwcmouYWRzOiAoU3VmZml4X09mKTogTmV3IGZ1bmN0aW9uCgkoU2V0IChTdWZmaXgpKTogTmV3IHByb2NlZHVyZQoJQWRkIHNldmVyYWwgdHlwZXMgYW5kIHRhYmxlcyBmb3IgbXVsdGktbGFuZ3VhZ2Ugc3VwcG9ydC4KCShIZWFkZXJfTnVtKTogVHlwZSBtb3ZlZCBmcm9tIFByai5Db20KCShIYXNoKTogVHdvIGZ1bmN0aW9ucyBtb3ZlZCBmcm9tIFByai5Db20KCShJc19QcmVzZW50LCBMYW5ndWFnZV9Qcm9jZXNzaW5nX0RhdGFfT2YpOiBOZXcgZnVuY3Rpb25zCgkoU2V0KTogVHdvIG5ldyBwcm9jZWR1cmVzCgkoQWRkX0xhbmd1YWdlX05hbWUsIERpc3BsYXlfTGFuZ3VhZ2VfTmFtZSk6IE5ldyBwcm9jZWR1cmVzCgkoTmFtaW5nKTogQ29tcG9uZW50IG5hbWUgY2hhbmdlczoKCUN1cnJlbnRfU3BlY19TdWZmaXggPT4gQWRhX1NwZWNfU3VmZml4LAoJQ3VycmVudF9Cb2R5X1N1ZmZpeCA9PiBBZGFfQm9keV9TdWZmaXguIEFkZCBuZXcgY29tcG9uZW50czoKCUltcGxfU3VmZml4ZXMsIFN1cHBfU3VmZml4ZXMuCgkoUHJvamVjdF9EYXRhKTogTmV3IGNvbXBvbmVudHM6IEV4dGVybmFsbHlfQnVpbHQsIFN1cHBfTGFuZ3VhZ2VzLAoJRmlyc3RfTGFuZ3VhZ2VfUHJvY2Vzc2luZywgU3VwcF9MYW5ndWFnZV9Qcm9jZXNzaW5nLCBEZWZhdWx0X0xpbmtlciwKCURlZmF1bHRfTGlua2VyX1BhdGguCgoJKiBwcmotYXR0ci5hZGI6IEFkZCBuZXcgYXR0cmlidXRlcyBBZGFfUm9vdHMgYW5kIEV4dGVybmFsbHlfQnVpbHQgYW5kCgluZXcgcGFja2FnZSBMYW5ndWFnZV9Qcm9jZXNzaW5nIHdpdGggaXRzIGF0dHJpYnV0ZXMgKENvbXBpbGVyX0RyaXZlciwKCUNvbXBpbGVyX0tpbmQsIERlcGVuZGVuY3lfT3B0aW9uLCBDb21wdXRlX0RlcGVuZGVuY3ksIEluY2x1ZGVfT3B0aW9uLAoJQmluZGVyX0RyaXZlciwgRGVmYXVsdF9MaW5rZXIpLgoKCSogcHJqLWNvbS5hZHMsIHByai1jb20uYWRiIChIYXNoKTogRnVuY3Rpb24gbW92ZWQgdG8gcGFja2FnZSBQcmouCgkoSGVhZGVyX051bSk6IFR5cGUgbW92ZWQgdG8gcGFja2FnZSBQcmoKCgkqIHByai1lbnYuYWRiOiBBZGFwdCB0byBuYW1lIGNoYW5nZXMgaW4gcGFja2FnZSBQcmoKCShDdXJyZW50X1NwZWNfU3VmZml4ID0+IEFkYV9TcGVjX1N1ZmZpeCwKCUN1cnJlbnRfQm9keV9TdWZmaXggPT4gQWRhX0JvZHlfU3VmZml4KS4KCgkqIHByai1leHQuYWRiOiBBZGQgdGhlIGRlZmF1bHQgcHJvamVjdCBkaXIgKDxwcmVmaXg+L2xvZy9nbmF0KSBieQoJZGVmYXVsdCB0byB0aGUgcHJvamVjdCBwYXRoLCBleGNlcHQgdGhlICItIiBpcyBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzCglpbiBlbnYgdmFyIEFEQV9QUk9KRUNUX1BBVEguCgkoQ3VycmVudF9Qcm9qZWN0X1BhdGgpOiBHbG9iYWwgdmFyaWFibGUsIHJlcGxhY2luZyBQcm9qZWN0X1BhdGgKCXRoYXQgd2FzIGluIHRoZSBib2R5IG9mIFByai5QYXJ0LgoJKFByb2plY3RfUGF0aCk6IE5ldyBmdW5jdGlvbgoJKFNldF9Qcm9qZWN0X1BhdGgpOiBOZXcgcHJvY2VkdXJlCglJbml0aWFsaXplIEN1cnJlbnRfUHJvamVjdF9QYXRoIGR1cmluZyBlbGFib3JhdGlvbiBvZiB0aGUgcGFja2FnZQoJUmVtb3ZlIGRlcGVuZGVuY3kgb24gUHJqLkNvbSwgbm8gbG9uZ2VyIG5lZWRlZAoKCSogcHJqLWV4dC5hZHMgKFByb2plY3RfUGF0aCk6IE5ldyBmdW5jdGlvbgoJKFNldF9Qcm9qZWN0X1BhdGgpOiBOZXcgcHJvY2VkdXJlCgoJKiBwcmotbm1zYy5hZGIgKEJvZHlfU3VmZml4X09mKTogTmV3IGZ1bmN0aW9uLiBSZXR1cm5zIC48bGFuZz4gd2hlbiBubwoJc3VmZml4IGlzIGRlZmluZWQgZm9yIGxhbmd1YWdlIDxsYW5nPi4KCShGaW5kX1NvdXJjZXMsIFJlY29yZF9PdGhlcl9Tb3VyY2VzKTogVXNlIEJvZHlfU3VmZml4X09mLCBpbnN0ZWFkIG9mCglhY2Nlc3NpbmcgZGlyZWN0bHkgdGhlIGNvbXBvbmVudHMgb2YgTmFtaW5nLgoJKExvb2tfRm9yX1NvdXJjZXMpOiBVc2UgU2V0IChTdWZmaXgpIHRvIHNldCB0aGUgc3VmZml4IG9mIGEgbGFuZ3VhZ2UuCglSZW9yZ2FuaXNlIG9mIHRoaXMgcGFja2FnZS4KCUJyZWFrIHByb2NlZHVyZSBDaGVjayBpbiBzZXZlcmFsIHByb2NlZHVyZXMuCgoJKiBwcmotbm1zYy5hZHM6IFJlcGxhY2UgYWxsIHByb2NlZHVyZXMgKEFkYV9DaGVjaywKCU90aGVyX0xhbmd1YWdlc19DaGVjayBhbmQgTGFuZ3VhZ2VfSW5kZXBlbmRlbnRfQ2hlY2spIHdpdGggYSBzaW5nbGUKCXByb2NlZHVyZSBDaGVjay4KCgkqIHByai1wYXJzLmFkcywgcHJqLXBhcnMuYWRiIChQYXJzZSk6IFJlbW92ZSBwYXJhbWV0ZXIKCVByb2Nlc3NfTGFuZ3VhZ2VzLCBubyBsb25nZXIgbmVlZGVkLgoKCSogcHJqLXBhcnQuYWRiIChQcm9qZWN0X1BhdGgpOiBNb3ZlIHRvIHRoZSBib2R5IG9mIFByai5FeHQgYXMKCUN1cnJlbnRfUHJvamVjdF9QYXRoLgoJUmVtb3ZlIGVsYWJvcmF0aW9uIGNvZGUsIG1vdmVkIHRvIHRoZSBib2R5IG9mIFByai5FeHQKCVVzZSBuZXcgZnVuY3Rpb24gUHJqLkV4dC5Qcm9qZWN0X1BhdGggaW5zdGVhZCBvZiBvbGQgdmFyaWFibGUKCVByb2plY3RfUGF0aC4KCShQb3N0X1BhcnNlX0NvbnRleHRfQ2xhdXNlKTogR2V0IFJlc29sdmVkX1BhdGggYXMgYSBjYXNlLXNlbnNpdGl2ZSBwYXRoLgoJV2hlbiBjb21wYXJpbmcgd2l0aCBwcm9qZWN0IHBhdGhzIG9uIHRoZSBzdGFjaywgZmlyc3QgcHV0IHRoZSByZXNvbHZlZAoJcGF0aCBpbiBjYW5vbmljYWwgY2FzZS4KCShQYXJzZV9TaW5nbGVfUHJvamVjdCk6IFNldCB0aGUgcGF0aCBuYW1lIG9mIHRoZSBwcm9qZWN0IGZpbGUgaW4gdGhlCgl0cmVlIHRvIHRoZSBub3JtYWxpemVkIHBhdGguCgoJKiBwcmotcHJvYy5hZHMsIHByai1wcm9jLmFkYiAoQ2hlY2ssIFJlY3Vyc2l2ZV9DaGVjaywgUHJvY2Vzcyk6IFJlbW92ZQoJcGFyYW1ldGVyIFByb2Nlc3NfTGFuZ3VhZ2VzLCBubyBsb25nZXIgbmVlZGVkLgoJKFJlY3Vyc2l2ZV9DaGVjayk6IENhbGwgUHJqLk5tc2MuQ2hlY2ssIGluc3RlYWQgb2YgQWRhX0NoZWNrIGFuZAoJT3RoZXJfTGFuZ3VhZ2VzX0NoZWNrLgoKCSogcHJqLXRyZWUuYWRzIChQcm9qZWN0X05hbWVfQW5kX05vZGUpOiBOZXcgY29tcG9uZW50IENhbm9uaWNhbF9QYXRoCgl0byBzdG9yZSB0aGUgcmVzb2x2ZWQgY2Fub25pY2FsIHBhdGggb2YgdGhlIHByb2plY3QgZmlsZS4KCVJlbW92ZSBkZXBlbmRlbmN5IHRvIFByai5Db20sIG5vIGxvbmdlciBuZWVkZWQKCgkqIHByai11dGlsLmFkYjogQWRhcHQgdG8gbmFtZSBjaGFuZ2VzIGluIHBhY2thZ2UgUHJqCgkoQ3VycmVudF9TcGVjX1N1ZmZpeCA9PiBBZGFfU3BlY19TdWZmaXgsIEN1cnJlbnRfQm9keV9TdWZmaXggPT4KCUFkYV9Cb2R5X1N1ZmZpeCkuCgoJKiBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBOZXcgc3RhbmRhcmQgbmFtZXM6IEFkYV9Sb290cywgQmluZGVyX0RyaXZlciwKCUNvbXBpbGVyX0RyaXZlciwgQ29tcGlsZXJfS2luZCwgQ29tcHV0ZV9EZXBlbmRlbmN5LCBEZWZhdWx0X0xpbmtlciwKCUV4dGVybmFsbHlfQnVpbHQsIEluY2x1ZGVfT3B0aW9uLCBMYW5ndWFnZV9Qcm9jZXNzaW5nLgoKCSogbWFrZWdwci5hZGI6IE51bWVyb3VzIGNoYW5nZXMgZHVlIHRvIGNoYW5nZXMgaW4gcGFja2FnZXMKCVByaiBhbmQgUHJqLk5tc2MuCgoJKiBnbmF0bHMuYWRiOiBBZGQgdGhlIGRlZmF1bHQgcHJvamVjdCBkaXIgKDxwcmVmaXg+L2xvZy9nbmF0KSBieQoJZGVmYXVsdCB0byB0aGUgcHJvamVjdCBwYXRoLCBleGNlcHQgd2hlICItIiBpcyBvbmUgb2YgdGhlIGRpcmVjdG9yaWVzCglpbiBlbnYgdmFyIEFEQV9QUk9KRUNUX1BBVEguCgkoR25hdGxzKTogSW4gdmVyYm9zZSBtb2RlLCBhZGQgdGhlIG5ldyBzZWN0aW9uICJQcm9qZWN0IFNlYXJjaCBQYXRoOiIKCjIwMDQtMTItMDcgIFJvYmVydCBEZXdhciAgPGRld2FyQGFkYWNvcmUuY29tPgoKCSogZGVidWcuYWRiOiBEb2N1bWVudCB0aGF0IC1nbmF0ZEEgYXV0b21hdGljYWxseSBzZXRzIC1nbmF0UjNtCgoJKiBnbmF0MWRydi5hZGIgKEduYXQxZHJ2KTogSWYgZGVidWcgZmxhZyBBIHNldCwgdGhlbiBhdXRvbWF0aWNhbGx5CglzZXQgLWduYXRSM20gbW9kZS4KCgkqIHJlcGluZm8uYWRiIChMaXN0X1JlcF9JbmZvKTogUmVtb3ZlIHNwZWNpYWwgaGFuZGxpbmcgb2YgLWduYXRkQQoJZmxhZy4gTm8gbG9uZ2VyIG5lZWRlZCBub3cgdGhhdCB3ZSBoYW5kbGUgdGhpcyBpbiBnbmF0MWRydi5hZGIuCgoJKiByZXBpbmZvLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA0LTEyLTA3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoJICAgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWRhY29yZS5jb20+CgkgICAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhZGFjb3JlLmNvbT4KCgkqIGRlY2wuYyAobWF5YmVfcGFkX3R5cGUpOiBVc2UgVFlQRV9TSVpFX1VOSVQgb2YgdGhlIGlucHV0IHR5cGUgZm9yCglUWVBFX1NJWkVfVU5JVCBvZiByZXN1bHQgdHlwZSBpZiBTSVpFIGlzIG5vdCBzcGVjaWZpZWQuCgkobWFrZV9hbGlnbmluZ190eXBlKTogUGFzcyAtMSBhcyBBRERSRVNTQUJMRSB0byBwcmV2ZW50IHRoZSBjcmVhdGlvbgoJb2YgYSBiaXRmaWVsZCwgd2hpY2ggd2Uga25vdyBpcyB1c2VsZXNzIGFuZCBjYXVzZXMgdHJvdWJsZSBiZWNhdXNlIG9mCglhbGlnbm1lbnQgaW1wbGljYXRpb25zLgoKCSogdXRpbHMuYyAoY3JlYXRlX3Zhcl9kZWNsKTogU2V0IERFQ0xfQ09NTU9OIGFnYWluIG9uIHRhcmdldHMgd2l0aG91dAoJQlNTIHNlY3Rpb25zLgoJKHByb2Nlc3NfYXR0cmlidXRlcyk6IENsZWFyIERFQ0xfQ09NTU9OIGFnYWluIHdoZW4gYSBzZWN0aW9uIGF0dHJpYnV0ZQoJaXMgcHJlc2VudC4KCShmaW5pc2hfcmVjb3JkX3R5cGUpOiBJbmRlcGVuZGVudGx5IHRyYWNrIGlmIFJFQ09SRF9UWVBFIGhhcyBTSVpFIGFuZC9vcgoJU0laRV9VTklUIGFscmVhZHkgc2V0IGFuZCB1c2UgdG8gY29tcHV0ZSBmaW5hbCBTSVpFIGFuZCBTSVpFX1VOSVQuCgkoY3JlYXRlX2ZpZWxkX2RlY2wpOiBTcGVjaWFsIGNhc2UgQUREUkVTU0FCTEUgbmVnYXRpdmUgdG8gbWVhbgoJIm5vIGJpdGZpZWxkIGNyZWF0aW9uIiwgdG8gYmUgdXNlZCBieSBtYWtlX2FsaWduaW5nX3R5cGUuIERvbid0CglyZXN0cmljdCBiaXRmaWVsZCBjcmVhdGlvbiB0byAhQUREUkVTU0FCTEUgYW55IG1vcmUsIGFzIHNvbWUgQkxLbW9kZQoJZmllbGRzIGNsYWltZWQgYWRkcmVzc2FibGUgc3RpbGwgaGF2ZSB0byBiZSBiaXRmaWVsZHMuIFVzZQoJdmFsdWVfZmFjdG9yX3AgaW5zdGVhZCBvZiBhIHJhdyBiaW5vcCBjb25zdHJ1Y3Rpb24gdG8gY2hlY2sgZm9yIHRoZQoJcG9zaXRpb24ncyBhbGlnbm1lbnQuCgoyMDA0LTEyLTA3ICBHZWVydCBCb3NjaCAgPGJvc2NoQGFkYWNvcmUuY29tPgoKCSogZXZhbF9mYXQuYWRiOiBSZXZlcnQgcHJldmlvdXMgY2hhbmdlLgoKMjAwNC0xMi0wNyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fSW5kZXhlZF9Db21wb25lbnQpOiBGb3IgYW4gaW5kZXhlZCBjb21wb25lbnQKCXdpdGggYW4gaW1wbGljaXQgZGVyZWZlcmVuY2UgYXMgaXRzIHByZWZpeCwgdXNlCglJbnNlcnRfRXhwbGljaXRfRGVyZWZlcmVuY2UgaW5zdGVhZCBvZiBtZXJlbHkgcmV3cml0aW5nIHRoZSBwcmVmaXggaW50bwoJYW4gZXhwbGljaXQgZGVyZWZlcmVuY2UuIFRoaXMgZW5zdXJlcyB0aGF0IGEgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbAoJcHJlZml4IGlzIGdlbmVyYXRlZCwgaWYgYXBwcm9wcmlhdGUuCgoJKiBzZW1fdXRpbC5hZGIgKEluc2VydF9FeHBsaWNpdF9EZXJlZmVyZW5jZSk6IFdoZW4gYW4gaW1wbGljaXQKCWRlcmVmZXJlbmNlIGlzIHJld3JpdHRlbiB0byBhbiBleHBsaWNpdCBvbmUsIGdlbmVyYXRlIGEgcmVmZXJlbmNlIHRvCgl0aGUgZW50aXR5IGRlbm90ZWQgYnkgaXRzIHByZWZpeCB1c2luZyB0aGUgb3JpZ2luYWwgcHJlZml4IG5vZGUsIHNvCgl0aGUgZGVyZWZlcmVuY2UgY2FuIGJlIHByb3Blcmx5IHJlY29yZGVkIGFzIGEgcmVhZCBvZiB0aGUgZGVub3RlZAoJYWNjZXNzIHZhbHVlLCBpZiBhcHByb3ByaWF0ZS4KCgkqIHNlbV93YXJuLmFkYiAoT3V0cHV0X1VucmVmZXJlbmNlZF9NZXNzYWdlcyk6IERvIG5vdCBhYnN0YWluIGZyb20KCWVtaXR0aW5nICdhc3NpZ25lZCBidXQgbmV2ZXIgcmVhZCcgd2FybmluZyBvbiBhIHZhcmlhYmxlIG9uIHRoZSBiYXNpcwoJdGhhdCBpdCBoYXMgYW4gYWNjZXNzIHR5cGUuCgkoQ2hlY2tfUmVmZXJlbmNlcyk6IEVtaXQgdW5yZWZlcmVuY2VkIHdhcm5pbmcgd2hlbiB0aGUgc2NvcGUgaXMgYQoJc3VicHJvZ3JhbSBib2R5LgoKMjAwNC0xMi0wNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9DYWxsKTogQWRkIGNvbW1lbnQgb24gaGFuZGxpbmcgb2YgYmFjayBlbmQKCWludHJpbnNpYwoKCSogZXhwX2ludHIuYWRiIChFeHBhbmRfSW50cmluc2ljX0NhbGwpOiBJZ25vcmUgdW5yZWNvZ25pemVkIGludHJpbnNpYywKCWxlYXZpbmcgY2FsbCB1bmNoYW5nZWQuCglUaGlzIGRlYWxzIHdpdGggdGhlIGNhc2Ugd2hlcmUgdGhlIHByYWdtYSBJbXBvcnQgc3BlY2lmaWVkCglhbiBleHRlcm5hbCBuYW1lLCB0byBiZSBoYW5kbGVkIGJ5IHRoZSBiYWNrIGVuZC4KCgkqIHNlbV9wcmFnLmFkYiAoUHJvY2Vzc19JbXBvcnRfT3JfSW50ZXJmYWNlKTogRG8gbm90IGNoZWNrIHZhbGlkaXR5IG9mCglzdWJwcm9ncmFtIHdoaWNoIGlzIEltcG9ydGVkIHdpdGggY29udmVudGlvbiBJbnRyaW5zaWMgaWYgYW4KCUV4dGVybmFsX05hbWUgYXJndW1lbnQgaXMgc3BlY2lmaWVkLgoJKFByb2Nlc3NfSW1wb3J0X09yX0ludGVyZmFjZSk6IFByb3Blcmx5IGRpYWdub3NlIGxpbmsgbmFtZSBhcmd1bWVudC4KCShJbmxpbmluZ19Ob3RfUG9zc2libGUpOiBOZXcgbmFtZSBmb3IgQ2Fubm90X0lubGluZSwgdG8gYXZvaWQgY29uZnVzaW9uCgl3aXRoIFNlbV9DaDYuQ2Fubm90X0lubGluZS4KCShQcm9jZXNzX0lubGluZSk6IFByb3ZpZGUgc2VwYXJhdGUgd2FybmluZyBmb3IgaW5hcHBsaWNhYmxlIGlubGluZQoJcHJhZ21hLgoJKENhbm5vdF9JbmxpbmUpOiBSZWplY3Qgc3VicHJvZ3JhbXMgdGhhdCBoYXZlIGFuIGF0X2VuZCBoYW5kbGVyLCBzbyB0aGF0Cgl0cmVhdG1lbnQgaXMgdW5pZm9ybSBvbiBkaWZmZXJlbnQgdGFyZ2V0cy4KCjIwMDQtMTItMDcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDcuYWRiIChFeHBhbmRfQ2xlYW51cF9BY3Rpb25zKTogSWYgc3RhdGVtZW50IHNlcXVlbmNlIG9mCgljb25zdHJ1Y3QgaXMgcmV3cml0dGVuLCBwcmVzZXJ2ZSBlbmQgbGFiZWwgdG8gcGVybWl0IHNvdXJjZSBuYXZpZ2F0aW9uLgoKMjAwNC0xMi0wNyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGV4cF9kaXN0LmFkYiAoU3BlY2lmaWNfQnVpbGRfR2VuZXJhbF9DYWxsaW5nX1N0dWJzLAoJU3BlY2lmaWNfQnVpbGRfU3R1Yl9UYXJnZXQpOiBOZXcgc3VicHJvZ3JhbXMuCgkoQnVpbGRfU3VicHJvZ3JhbV9DYWxsaW5nX1N0dWJzKTogTWFrZSB0aGlzIHByb2NlZHVyZSBpbmRlcGVuZGVudCBmcm9tCgl0aGUgUENTIGltcGxlbWVudGF0aW9uIHVzZWQsIHVzaW5nIHRoZSBhYm92ZSBQQ1MtY3VzdG9taXplZCBzdWJwcm9ncmFtcy4KCU1pbm9yIHJlZm9ybWF0dGluZy4KCShQb2x5T1JCX1N1cHBvcnQuSGVscGVycyk6IE5ldyBzdWJ1bml0IGNvbnRhaW5pbmcgc3VwcG9ydGluZyBzdWJwcm9ncmFtcwoJZm9yIGdlbmVyYXRpb24gb2YgRFNBIGNvZGUgdGFyZ2V0ZWQgdG8gdGhlIFBvbHlPUkIgUENTLgoJKEFkZF9TdHViX1R5cGUpOiBSZXdyaXRlIHRvIGlzb2xhdGUgdGhlIHBhcnRzIHRoYXQgYXJlIHNwZWNpZmljIHRvIG9uZQoJaW1wbGVtZW50YXRpb24gb2YgdGhlIHBhcnRpdGlvbiBjb21tdW5pY2F0aW9uIHN1YnN5c3RlbSBpbiBhbmNpbGxhcnkKCXN1YnByb2dyYW1zLgoJKFNwZWNpZmljX0J1aWxkX1N0dWJfVHlwZSwgR0FSTElDX1N1cHBvcnQuQnVpbGRfU3R1Yl9UeXBlLAoJUG9seU9SQl9TdXBwb3J0LkJ1aWxkX1N0dWJfVHlwZSk6IE5ldyBzdWJyb2dyYW1zIGNvbnRhaW5pbmcgdGhlCglQQ1Mtc3BlY2lmaWMgcGFydCBvZiBBZGRfU3R1Yl9UeXBlLgoJKEluc2VydF9QYXJ0aXRpb25fQ2hlY2spOiBVc2UgcnVudGltZSBsaWJyYXJ5IGZ1bmN0aW9uIHRvIHBlcmZvcm0KCUUuNCgxOSkgY2hlY2suCgoJKiBydHNmaW5kLmFkczogTmV3IGVudGl0eSBTeXN0ZW0uUG9seU9SQl9JbnRlcmZhY2UuTWFrZV9SZWYKCShSRV9TYW1lX1BhcnRpdGlvbik6IE5ldyBlbnRpdHksIGZyb20gcy1wYXJpbnQuCgoJKiBzLXBhcmludC5hZHMsIHMtcGFyaW50LmFkYiAoU2FtZV9QYXJ0aXRpb24pOiBOZXcgc3VicHJvZ3JhbS4KCjIwMDQtMTItMDcgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BhZGFjb3JlLmNvbT4KCgkqIGduYXRtZW0uYWRiLCBnbmF0bmFtZS5hZGIsIGduYXRzeW0uYWRiLCBncHJjbWQuYWRiLCB2bXNfY29udi5hZGI6CglPdXRwdXQgdGhlIGNvcHlyaWdodCBtZXNzYWdlIG9uIGEgc2VwYXJhdGUgbGluZSBmcm9tIHRoZSB2ZXJzaW9uCgltZXNzYWdlLgoKMjAwNC0xMi0wNyAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAYWRhY29yZS5jb20+CgoJKiBnLW9zX2xpYi5hZGIgKFNwYXduKTogRXhwbGljaXRseSBpbml0aWFsaXplIFNhdmVkX0Vycm9yIHRvIGF2b2lkIGEKCWNvbXBpbGUtdGltZSB3YXJuaW5nLgoKMjAwNC0xMi0wNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBnLXJlZ3BhdC5hZGI6IChNYXRjaCk6IENoYW5nZSBhIG1pc3VzZSBvZiBvciB0byBvciBlbHNlCgoyMDA0LTEyLTA3ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBsaWIteHJlZi5hZGI6CgkoR2VuZXJhdGVfUmVmZXJlbmNlKTogSGFuZGxlIHByb3Blcmx5IGEgcmVmZXJlbmNlIHRvIGFuIGVudHJ5IGZvcm1hbCwKCSB3aGVuIGFuIGFjY2VwdCBzdGF0ZW1lbnQgaGFzIGEgcHJhZ21hIFVucmVmZXJlbmNlZCBmb3IgaXQuCgoJKiBzZW1fY2g5LmFkYiAoQW5hbHl6ZV9BY2NlcHRfU3RhdGVtZW50KTogUmVzZXQgdGhlIElzX1JlZmVyZW5jZWQgZmxhZwoJYW5kIHRoZSBIYXNfUHJhZ21hX1VucmVmZXJlbmNlZCBmbGFnIGZvciBlYWNoIGZvcm1hbCBiZWZvcmUgYW5hbHl6aW5nCgl0aGUgYm9keSwgdG8gZW5zdXJlIHRoYXQgd2FybmluZ3MgYXJlIHByb3Blcmx5IGVtaXR0ZWQgZm9yIGVhY2ggYWNjZXB0CglzdGF0ZW1lbnQgb2YgYSBnaXZlbiB0YXNrIGVudHJ5LgoKMjAwNC0xMi0wNyAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhZGFjb3JlLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgc3VwcG9ydCBmb3IgZm9yZWlnbiB0aHJlYWRzIG9uIFZNUy4KCjIwMDQtMTItMDcgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBtaXNjLmMgKGduYXRfdHlwZXNfY29tcGF0aWJsZV9wLCBMQU5HX0hPT0tTX1RZUEVTX0NPTVBBVElCTEVfUCk6CglSZW1vdmUuCgkoTEFOR19IT09LU19SRURVQ0VfQklUX0ZJRUxEX09QRVJBVElPTlMpOiBOZXcuCgoJKiBhZGFpbnQuaDogKF9fZ25hdF9kdXAsIF9fZ25hdF9kdXAyKTogQWRkIG1pc3NpbmcgZGVjbHMuCgoJKiB0cmFucy5jIChFeGNlcHRpb25fSGFuZGxlcl90b19nbnVfc2psaik6IEFsc28gaGFuZGxlIHJlbmFtZWQKCWV4Y2VwdGlvbi4KCShjYWxsX3RvX2dudSk6IENvbnZlcnQgdG8gYWN0dWFsIERFQ0xfQVJHX1RZUEUsIG5vdCB2YXJpYW50IG9mIGl0LgoKMjAwNC0xMi0wNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBubGlzdHMuYWRiIChQcmVwZW5kX0RlYnVnKTogUmVtb3ZlIHBhcmFtZXRlcnMgYW5kIG5lc3Qgd2l0aGluCglQcmVwZW5kLgoJKFJlbW92ZV9OZXh0X0RlYnVnKTogU2FtZSBmaXgKCgkqIG5saXN0cy5hZHM6IENvcnJlY3QgYmFkIGNvbW1lbnRzIGZvciBQcmV2IGFuZCBQcmV2X05vbl9QcmFnbWEgKHdlIGRvCgltYWludGFpbiBiYWNrIHBvaW50ZXJzIG5vdywgdGhvdWdoIHdlIGRpZCBub3QgdXNlZCB0bywgYW5kIGNvbW1lbnRzCgl3ZXJlIG91dCBvZiBkYXRlKS4KCShQcmVwZW5kKTogUmVtb3ZlIHByYWdtYSBJbmxpbmUuCgkoUmVtb3ZlX05leHQpOiBTYW1lIGNsZWFudXAKCjIwMDQtMTItMDcgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g0LmFkYiAoUHJvY2Vzc19JbXBsaWNpdF9EZXJlZmVyZW5jZV9QcmVmaXgpOiBOZXcgc3VicHJvZ3JhbQoJdXNlZCB0byByZWNvcmQgYW4gaW1wbGljaXQgZGVyZWZlcmVuY2UgYXMgYSByZWFkIG9wZXJhdGlvbiBvbiBpdHMKCXByZWZpeCB3aGVuIG9wZXJhdGluZyB1bmRlciAtZ25hdGMuIE5lY2Vzc2FyeSB0byBhdm9pZCBzcHVyaW91cwoJJ3ZhcmlhYmxlIGFzc2lnbmVkIGJ1dCBuZXZlciByZWFkJyB3YXJuaW5ncyBpbiB0aGF0IG1vZGUuCgkoUHJvY2Vzc19JbmRleGVkX0NvbXBvbmVudCwgQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBXaGVuIHRoZSBwcmVmaXgKCWlzIGEgbm9uLW92ZXJsb2FkZWQgaW1wbGljaXQgZGVyZWZlcmVuY2UsIGNhbGwgdGhlIGFib3ZlIHN1YnByb2dyYW0gdG8KCWVuc3VyZSBwcm9wZXIgcmVjb3JkaW5nIG9mIHJlZmVyZW5jZXMuCgoyMDA0LTEyLTA3ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g1LmFkYiAoT25lX0JvdW5kKTogUmVtb3ZlIGNhbGwgdG8gUmVzb2x2ZSwgYXMgdGhlIGJvdW5kIG5lZWRzCgl0byBiZSByZXNvbHZlZCBsYXRlciBhcyBwYXJ0IG9mIEFuYWx5emVfSXRlcmF0aW9uX1NjaGVtZSdzIGNhbGwgdG8KCU1ha2VfSW5kZXguCgoyMDA0LTEyLTA3ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBzZW1fY2g4LmFkYiAoRmluZF9UeXBlKTogSWYgbm9kZSBpcyBhIHJlZmVyZW5jZSB0byAnQmFzZSBhbmQgdGhlCglwcmVmaXggaXMgbm90IGEgc2NhbGFyIHR5cGUsIHBsYWNlIGVycm9yIG1lc3NhZ2Ugb24gcHJlZml4LCBub3Qgb24KCXR5cGUgZW50aXR5LgoKMjAwNC0xMi0wNyAgQmVybmFyZCBCYW5uZXIgIDxiYW5uZXJAYWRhY29yZS5jb20+CgoJKiB2eGFkZHIybGluZS5hZGI6IEFkZCBzdXBwb3J0IGZvciB4ODYgdnh3b3JrcwoKMjAwNC0xMi0wNyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhZGFjb3JlLmNvbT4KCgkqIGctc29ja2V0LmFkcyAoR2V0X0hvc3RfQnlfQWRkcmVzcywgR2V0X0hvc3RfQnlfTmFtZSk6IENsYXJpZnkKCWRvY3VtZW50YXRpb24gb2YgdGhlIGJlaGF2aW91ciBvZiB0aGVzZSBmdW5jdGlvbnMgd2hlbiBwYXNzZWQgYW4gSVAKCWFkZHJlc3MgdGhhdCBoYXMgbm8gcmVjb3JkIGluIHRoZSBzeXN0ZW0gaG9zdHMgZGF0YWJhc2UgYW5kIG5vIHJldmVyc2UKCXJlY29yZCBpbiB0aGUgRE5TLgoKCSogY3N0YW5kLmFkYiwgYS10YWdzLmFkczogRml4IHR5cG9zIGluIGNvbW1lbnQuCgoyMDA0LTEyLTA3ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGV4cF9jaDIuYWRiLCBleHBfY2gzLmFkYiwgZXhwX2NoNS5hZGIsIGV4cF9jaDguYWRiLAoJZXhwX2NoOS5hZGIsIGV4cF9wYWtkLmFkYiwgaW50ZXJmYWMuYWRzLCBzZW1fY2g2LmFkYiwKCXNlbV9jaDcuYWRiLCBzZW1fY2gxMC5hZGIsIHNlbV9jaDEzLmFkYiwgc2VtX2NoMy5hZGIsCglzLXBvb3Npei5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogbWFrZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJQWRkIHNvbWUgPz8/IGNvbW1lbnRzIGFza2luZyBmb3IgbW9yZSBjb21tZW50cwoKCSogcy1wb29zaXouYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCUFkZCBjb21tZW50cyBvbiBhbGlnbm1lbnQgcmVxdWlyZW1lbnQKCgkqIHNpbmZvLmFkczogUmVtb3ZlIG9ic29sZXRlIGNvbW1lbnQgYW5kIGZpeCB0eXBvLgoKMjAwNC0xMi0wNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgkgICAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBVcGRhdGUgdGhlIHNlY3Rpb24gIlRoZSBHTkFUIERyaXZlciBhbmQgUHJvamVjdAoJRmlsZXMiIHdpdGggdGhlIG5ldyB0b29sIGFuZCBwYWNrYWdlIG5hbWVzLgoJUmVmb3JtYXR0aW5nIHRvIHN1cHByZXNzIG1vc3Qgb2YgdGhlIHdhcm5pbmdzIGZvciBsaW5lIHRvbyBsb25nCglEb2N1bWVudCB0aGUgbmV3IHNlY3Rpb24gIlByb2plY3QgU2VhcmNoIFBhdGg6IiBpbiB0aGUgb3V0cHV0IG9mCglnbmF0bHMgLXYuCglBZGQgZ25hdG1ldHJpYyBzZWN0aW9uCgoyMDA0LTEyLTA3ICBWaW5jZW50IENlbGllciAgPGNlbGllckBhZGFjb3JlLmNvbT4KCgkqIHZtc19kYXRhLmFkczogQ29ycmVjdCBHTkFUIE1FVFJJQyBxdWFsaWZpZXJzOiAtSS0sIC1JZGlyIGFuZAoJLWduYXRlYz0gYXJlIG5vdCBkaXJlY3Qgc3dpdGNoZXMgb2YgZ25hdG1ldHJpYy4gQ2hhbmdlZCAtZWlzIHRvIC1lcHMKCWFuZCAtZWl0IHRvIC1lcHQuIEFkZGVkIHF1YWxpZmllcgoJL0VMRU1FTlRfTUVUUklDUz1DT05TVFJVQ1RfTkVTVElOR19NQVggZm9yIG5ldyBzd2l0Y2ggLWVjLgoKMjAwNC0xMS0yNyAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhL3RyYW5zLm8pOiBEZXBlbmQgb24gJChFWFBSX0gpLgoKMjAwNC0xMS0yNSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogZy1zb2N0aGktbWluZ3cuYWRzLCBnLXNvY3RoaS12bXMuYWRzOiBSZW1vdmUgQ19SZWFkIGFuZCBDX1dyaXRlIGZyb20KCWludGVybmFsIGltcGxlbWVudGF0aW9uIHVuaXQgR05BVC5Tb2NrZXRzLlRoaW4sCglhcyB0aGVpciB1c2FnZSBmb3Igc29ja2V0cyBpcyBub24tcG9ydGFibGUgKHVzaW5nIHRoZSByZWFkIGFuZCB3cml0ZQoJZnVuY3Rpb25zIGZyb20gdGhlIHN5c3RlbSBydW50aW1lIGxpYnJhcnkgaXMgZmluZSBvbiBVTklYIGJ1dCB3b24ndAoJd29yayB1bmRlciBXaW5kb3dzKS4KCgkqIG1pbmd3MzIuaDogVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgoyMDA0LTExLTI1ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWRhY29yZS5jb20+CgoJKiBhZGEtdHJlZS5oOiBNaW5vciByZWZvcm1hdHRpbmcgb2YgcHJldmlvdXMgY2hhbmdlIHRvIGF2b2lkIGxpbmVzCglsb25nZXIgdGhhbiA3OSBjaGFyYWN0ZXJzLgoKMjAwNC0xMS0yNSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhZGFjb3JlLmNvbT4KCgkqIHRiLWdjYy5jOiBHQ0MgaW5mcmFzdHJ1Y3R1cmUgYmFzZWQgaW1wbGVtZW50YXRpb24gb2YKCV9fZ25hdF9iYWNrdHJhY2UuCgoyMDA0LTExLTI0ICBTdGV2ZW4gQm9zc2NoZXIgIDxzdGV2ZW5iQHN1c2UuZGU+CgoJKiBtaXNjLmMgKGduYXRfcG9zdF9vcHRpb25zKTogRG9uJ3QgY2xlYXIKCWZsYWdfaW5saW5lX2Z1bmN0aW9ucy4KCjIwMDQtMTEtMjIgIEFuZHJldyBQaW5za2kgIDxwaW5za2lhQHBoeXNpY3MudWMuZWR1PgoKCVBSIGFkYS8xNzk4NgoJKiBhZGEtdHJlZS5oIChsYW5nX3RyZWVfbm9kZSk6IFNldCBjaGFpbl9uZXh0IHRvIGJlIHRoZSBjaGFpbiBvZiB0aGUKCXRyZWUuCgoyMDA0LTExLTIxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBzdHlsZXN3LmFkYjogQ2hhbmdlIFN0eWxlX0NoZWNrX1N1YnByb2dyYW1fT3JkZXIgdG8KCVN0eWxlX0NoZWNrX09yZGVyX1N1YnByb2dyYW1zLgoKMjAwNC0xMS0xOCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFkYWNvcmUuY29tPgoKCSogYWRhaW50LmgsIGFkYWludC5jCgkoX19nbmF0X3BvcnRhYmxlX3NwYXduKTogRml4IGNhc3Qgb2Ygc3Bhd252cCB0aGlyZCBwYXJhbWV0ZXIKCXRvIGF2b2lkIHdhcm5pbmdzLgoJQWRkIGFsc28gYSBjYXN0IHRvIGtpbGwgYW5vdGhlciB3YXJuaW5nLgoJKHdpbjMyX25vX2Jsb2NrX3NwYXduKTogSW5pdGlhbGl6ZSBDcmVhdGVQcm9jZXNzJ3MgZHdDcmVhdGlvbkZsYWdzCglwYXJhbWV0ZXIgd2l0aCB0aGUgcHJpb3JpdHkgY2xhc3Mgb2YgdGhlIHBhcmVudCBwcm9jZXNzIGluc3RlYWQgb2YKCWFsd2F5cyB1c2luZyB0aGUgTk9STUFMX1BSSU9SSVRZX0NMQVNTLgoJKF9fZ25hdF9kdXApOiBOZXcgZnVuY3Rpb24uCgkoX19nbmF0X2R1cDIpOiBOZXcgZnVuY3Rpb24uCgkoX19nbmF0X2lzX3N5bWJvbGljX2xpbmspOiBFbmFibGUgdGhlIGVmZmVjdGl2ZSBib2R5IG9mIHRoaXMKCWZ1bmN0aW9uIHdoZW4gX19BUFBMRV9fIGlzIGRlZmluZWQuCgoJKiBnLW9zX2xpYi5hZHMsIGctb3NfbGliLmFkYiAoU3Bhd24pOiBUd28gbmV3IHByb2NlZHVyZXMuCglVcGRhdGUgY29tbWVudHMuCgoyMDA0LTExLTE4ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFkYWNvcmUuY29tPgoKCSogYS1leGV4cHIuYWRiIChPdGhlcnNfVmFsdWUsIEFsbF9PdGhlcnNfVmFsdWUpOiBOZXcgdmFyaWFibGVzLCB0aGUKCWFkZHJlc3Mgb2Ygd2hpY2ggbWF5IGJlIHVzZWQgdG8gcmVwcmVzZW50ICJvdGhlcnMiIGFuZCAiYWxsIG90aGVycyIKCWNob2ljZXMgaW4gZXhjZXB0aW9uIHRhYmxlcywgaW5zdGVhZCBvZiB0aGUgY3VycmVudCBoYXJjb2RlZAoJKHZvaWQgKikwIGFuZCAodm9pZCAqKTEuCgkoU2V0dXBfRXhjZXB0aW9uKTogRG8gbm90aGluZyBpbiB0aGUgR05BVCBTSkxKIGNhc2UuCgoJKiBnaWdpLmggKG90aGVyc19kZWNsLCBhbGxfb3RoZXJzX2RlY2wpOiBOZXcgZGVjbHMgcmVwcmVzZW50aW5nIHRoZQoJbmV3IE90aGVyc19WYWx1ZSBhbmQgQWxsX090aGVyc19WYWx1ZSBvYmplY3RzLgoJKHN0cnVjdCBhdHRyaWIpOiBSZW5hbWUgImFyZyIgY29tcG9uZW50IGFzICJhcmdzIiwgc2luY2UgR0NDIGV4cGVjdHMgYQoJbGlzdCBvZiBhcmd1bWVudHMgaW4gdGhlcmUuCgoJKiByYWlzZS5jIChHTkFUX09USEVSUywgR05BVF9BTExfT1RIRVJTKTogQXJlIG5vdyB0aGUgYWRkcmVzcyBvZiB0aGUKCWNvcnJlc3BvbmRpbmcgb2JqZWN0cyBleHBvcnRlZCBieSBhLWV4ZXhwciwgaW5zdGVhZCBvZiBoYXJkY29kZWQgZHVtbXkKCWFkZHJlc3Nlcy4KCgkqIHRyYW5zLmMgKEV4Y2VwdGlvbl9IYW5kbGVyX3RvX2dudV96Y3gpOiBVc2UgdGhlIGFkZHJlc3Mgb2YKCW90aGVyc19kZWNsIGFuZCBhbGxfb3RoZXJzX2RlY2wgaW5zdGVhZCBvZiBoYXJkY29kZWQgZHVtbXkgYWRkcmVzc2VzCgl0byByZXByZXNlbnQgIm90aGVycyIgYW5kICJhbGwgb3RoZXJzIiBjaG9pY2VzLCB3aGljaCBpcyBjbGVhbmVyIGFuZAoJbW9yZSBmbGV4aWJsZSB3aXRoIHJlc3BlY3QgdG8gdGhlIHBvc3NpYmxlIGVoIHBvaW50ZXIgZW5jb2RpbmcgcG9saWNpZXMuCgoJKiB1dGlscy5jIChpbml0X2dpZ2lfZGVjbHMpOiBJbml0aWFsaXplIG90aGVyc19kZWNsIGFuZCBhbGxfb3RoZXJzX2RlY2wuCgkocHJvY2Vzc19hdHRyaWJ1dGVzKTogQWNjb3VudCBmb3IgdGhlIG5hbWluZyBjaGFuZ2Ugb2YgdGhlICJhcmdzIgoJYXR0cmlidXRlIGxpc3QgZW50cnkgY29tcG9uZW50LgoKCSogZGVjbC5jIChidWlsZF9hdHRyX2xpc3QpOiBSZW5hbWUgaW50byBwcmVwZW5kX2F0dHJpYnV0ZXMgdG8gYWxsb3cKCWN1bXVsYXRpbmcgYXR0cmlidXRlcyBmb3IgZGlmZmVyZW50IGVudGl0aWVzIGludG8gYSBzaW5nbGUgbGlzdC4KCShnbmF0X3RvX2dudV9lbnRpdHkpOiBVc2UgcHJlcGVuZF9hdHRyaWJ1dGVzIHRvIGJ1aWxkIHRoZSBsaXN0IG9mCglhdHRyaWJ1dGVzIGZvciB0aGUgY3VycmVudCBlbnRpdHkgYW5kIHByb3BhZ2F0ZSBmaXJzdCBzdWJ0eXBlCglhdHRyaWJ1dGVzIHRvIG90aGVyIHN1YnR5cGVzLgoJPEVfUHJvY2VkdXJlPjogQXR0cmlidXRlIGFyZ3VtZW50cyBhcmUgYXR0ci0+YXJncyBhbmQgbm90CglhdHRyLT5hcmcgYW55IG1vcmUuCgkoYnVpbGRfYXR0cl9saXN0KTogRGl0dG8uIE1ha2UgYXR0ci0+YXJncyBhIFRSRUVfTElTVCB3aGVuIHRoZXJlIGlzIGFuCglhcmd1bWVudCBwcm92aWRlZCwgYXMgdGhpcyBpcyB3aGF0IEdDQyBleHBlY3RzLiBVc2UgTlVMTF9UUkVFIGluc3RlYWQKCW9mIDAgZm9yIHRyZWVzLgoKMjAwNC0xMS0xOCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBhLXN0bWFjby5hZHMsIGV4cF91dGlsLmFkcywgZXhwX3V0aWwuYWRiLCBpLWNwcC5hZHMsIGktY3BwLmFkYjoKCU1pbm9yIHJlZm9ybWF0dGluZyB0aHJvdWdvdXQgKGluY2x1ZGluZyBuZXcgZnVuY3Rpb24gc3BlY3MpCglBZGQgPz8/IGNvbW1lbnRzIGFza2luZyBmb3IgY2xhcmlmaWNhdGlvbi4KCjIwMDQtMTEtMTggIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBidXRpbC5hZHMsIGJ1dGlsLmFkYiwgYmluZGdlbi5hZGIgKEdldF9Vbml0X05hbWVfU3RyaW5nKTogUmVtb3ZlCglpbmNvbXBsZXRlIGR1cGxpY2F0ZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIHN1YnByb2dyYW0gZnJvbSBidXRpbC4KCjIwMDQtMTEtMTggIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWRhY29yZS5jb20+CgoJKiBleHBfZGlzdC5hZGIgKEJ1aWxkX1JQQ19SZWNlaXZlcl9Cb2R5KTogTmV3IHN1YnByb2dyYW0uIFRoaXMKCXByb2NlZHVyZXMgZmFjdG9ycyB0aGUgY29tbW9uIHByb2Nlc3NpbmcgZm9yIGJ1aWxkaW5nIGFuIFJQQyByZWNlaXZlcgoJZm9yIGFuIFJDSSBwYWNrYWdlIG9yIGFuIFJBQ1cgdHlwZS4KCVN0eWxpc3RpYyBjbGVhbnVwOiBjaGFuZ2UgJy89IEVtcHR5JyB0byAnUHJlc2VudCAoKSc7IG1vdmUgYm9keSBvZgoJQnVpbGRfUmVtb3RlX1N1YnByb2dyYW1fUHJveHlfVHlwZSBpbnRvIHByb3BlciBhbHBoYWJldGljYWwgb3JkZXIuCgkoR2V0X1BDU19OYW1lKTogTmV3IHN1YnByb2dyYW0uIFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIFBDUyBjdXJyZW50bHkKCWluIHVzZS4KCShTcGVjaWZpY19BZGRfUkFDV19GZWF0dXJlcyk6IE5ldyBzdWJwcm9ncmFtLiBQQ1Mtc3BlY2lmaWMgcGFydCBvZgoJQWRkX1JBQ1dfRmVhdHVyZXMuCgkoU3BlY2lmaWNfQWRkX1JBU1RfRmVhdHVyZXMpOiBOZXcgc3VicHJvZ3JhbS4gUENTLXNwZWNpZmljIHBhcnQgb2YKCUFkZF9SQVNUX0ZlYXR1cmVzLgoJKEFzc2lnbl9TdWJwcm9ncmFtX0lkZW50aWZpZXIpOiBOZXcgc3VicHJvZ3JhbS4gUHJvdmlzaW9uIGZvciBhc3NpZ25pbmcKCWRpc3RyaWJ1dGlvbiBzdWJwcm9ncmFtIGlkZW50aWZpZXJzIHRoYXQgYXJlIGVpdGhlciBzdWJwcm9ncmFtIG51bWJlcnMKCW9yIHN0cmluZ3MuCgkoR2V0X1N1YnByb2dyYW1fSWRzKTogTmV3IHN1YnByb2dyYW0uIFJldHJpZXZlIGJvdGggdGhlIG51bWVyaWMgYW5kCglzdHJpbmcgZGlzdHJpYnV0aW9uIGlkZW50aWZpZXJzIGFzc2lnbmVkIHRvIGEgZ2l2ZW4gc3VicHJvZ3JhbS4KCShHZXRfU3VicHJvZ3JhbV9JZCk6IFJlaW1wbGVtZW50IGluIHRlcm1zIG9mIEdldF9TdWJwcm9ncmFtX0lkcy4KCShBZGRfUkFTX0RlcmVmZXJlbmNlX1RTUyk6IEFkZCBjb21tZW50cy4KCShCdWlsZF9HZW5lcmFsX0NhbGxpbmdfU3R1YnMpOiBOb3RlIHRoYXQgdGhlIFJBQ1dfVHlwZSBmb3JtYWwgcGFyYW1ldGVyCglpcyBub3QgcmVmZXJlbmNlZCB5ZXQgYmVjYXVzZSBpdCB3aWxsIGJlIHVzZWQgYnkgdGhlIFBvbHlPUkIgRFNBCglpbXBsZW1lbnRhdGlvbi4KCShJbnNlcnRfUGFydGl0aW9uX0NoZWNrKTogUmVtb3ZlIGZvc3NpbGUgY29kZS4KCShGaXJzdF9SQ0lfU3VicHJvZ3JhbV9JZCk6IERvY3VtZW50IHRoaXMgY29uc3RhbnQuCgkoQWRkX1JBU19BY2Nlc3NfVFNTKTogQ29ycmVjdCB0aGUgc2V0dGluZyBvZiB0aGUgRXR5cGUgb2YgdGhlCglSQVNfQWNjZXNzIFRTUy4KCShHZXRfUGtnX05hbWVfU3RyaW5nKTogUmVtb3ZlIHN1YnByb2dyYW0uIFVzYWdlIG9jY3VycmVuY2VzIGFyZQoJcmVwbGFjZWQgd2l0aCBjYWxscyB0byBHZXRfTGlicmFyeV9Vbml0X05hbWVfU3RyaW5nLiBQcmV2aW91c2x5IHRoZXJlCgl3ZXJlIHNldmVyYWwgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNvZGUgaW4gZGlmZmVyZW50IGxvY2F0aW9ucyBpbiB0aGUKCWNvbXBpbGVyOyB0aGlzIGNoZWNraW4gY29tcGxldGVzIHRoZSByZXBsYWNlbWVudCBvZiBhbGwgb2YgdGhlc2UKCWluc3RhbmNlcyB3aXRoIGNhbGxzIHRvIGEgY29tbW9uIHN1YnByb2dyYW0uCglNaW5vciByZWZvcm1hdHRpbmcuCgoJKiBzZW1fZGlzdC5hZGI6IFJlbW92ZSBjb21tZW50IG5vdGluZyB0aGF0IFJQQyByZWNlaXZlciBnZW5lcmF0aW9uCglzaG91bGQgYmUgZGlzYWJsZWQgZm9yIFJBQ1dzIHRoYXQgaW1wbGVtZW50IFJBU3MuCgkoUHJvY2Vzc19QYXJ0aXRpb25fSWQpOiBVc2UgbmV3IHN1YnByb2dyYW0gR2V0X0xpYnJhcnlfVW5pdF9OYW1lX1N0cmluZy4KCgkqIHNlbV91dGlsLmFkcywgc2VtX3V0aWwuYWRiIChIYXNfU3RyZWFtKTogTmV3IGZ1bmN0aW9uCgkoR2V0X0xpYnJhcnlfVW5pdF9OYW1lX1N0cmluZyk6IE5ldyBzdWJwcm9ncmFtIHRvIHJldHJpZXZlIHRoZSBmdWxseQoJcXVhbGlmaWVkIG5hbWUgb2YgYSBsaWJyYXJ5IHVuaXQgaW50byB0aGUgbmFtZSBidWZmZXIuCgkoTm90ZV9Qb3NzaWJsZV9Nb2RpZmljYXRpb24pOiBHZW5lcmF0ZSBhIHJlZmVyZW5jZSBvbmx5CglpZiB0aGUgY29udGV4dCBjb21lcyBmcm9tIHNvdXJjZS4KCgkqIHNuYW1lcy5hZHMgKFBDU19OYW1lcyk6IE5ldyBzdWJ0eXBlIGNvcnJlc3BvbmRpbmcgdG8gbmFtZXMgb2YKCXN1cHBvcnRlZCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIFBhcnRpdGlvbiBDb21tdW5pY2F0aW9uIFN1YnN5c3RlbQoJKFBDUykgKGkuZS4gdGhlIHJ1bnRpbWUgbGlicmFyeSBzdXBwb3J0IG1vZHVsZXMgZm9yIHRoZSBkaXN0cmlidXRlZAoJc3lzdGVtcyBhbm5leCkuCgoyMDA0LTExLTE4ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCSAgICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYjogUmVtb3ZlIElzX1BzZWN0ZWQgZmxhZywgbm8gbG9uZ2VyIHVzZWQKCShIYXNfUmVwX1ByYWdtYSk6IE5ldyBmdW5jdGlvbgoJKEhhc19BdHRyaWJ1dGVfRGVmaW5pdGlvbl9DbGF1c2UpOiBOZXcgZnVuY3Rpb24KCShSZWNvcmRfUmVwX1ByYWdtYSk6IE1vdmVkIGhlcmUgZnJvbSBzZW1fY2gxMy5hZGIKCShHZXRfUmVwX1ByYWdtYSk6IFJlbW92ZSBqdW5rIGtsdWRnZSBmb3IgU3RyZWFtX0NvbnZlcnQgcHJhZ21hCgoJKiBzZW1fY2gxMy5hZHMsIHNlbV9jaDEzLmFkYiAoUmVjb3JkX1JlcF9QcmFnbWEpOiBNb3ZlZCB0byBlaW5mby5hZGIKCgkqIGV4cF9wcmFnLmFkYjogKEV4cGFuZF9QcmFnbWFfQ29tbW9uX09iamVjdCk6IE5ldyBwcm9jZWR1cmUKCShFeHBhbmRfUHJhZ21hX1BzZWN0X09iamVjdCk6IE5ldyBwcm9jZWR1cmUKCVRoZXNlIHByb2NlZHVyZXMgY29udGFpbiB0aGUgcmV2aXNlZCBhbmQgY2xlYW5lZCB1cCBwcm9jZXNzaW5nIGZvcgoJdGhlc2UgdHdvIHByYWdtYXMuIFRoaXMgcHJvY2Vzc2luZyB3YXMgZm9ybWVybHkgaW4gU2VtX1ByYWcsIGJ1dAoJaXMgbW9yZSBhcHByb3ByaWF0ZWx5IG1vdmVkIGhlcmUuIFRoZSBjbGVhbnVwIGludm9sdmVzIG1ha2luZyBzdXJlCgl0aGF0IHRoZSBwcmFnbWFzIGFyZSBwcm9wZXJseSBhdHRhY2hlZCB0byB0aGUgdHJlZSwgYW5kIHRoYXQgbm8KCW5vZGVzIGFyZSBpbXByb3Blcmx5IHNoYXJlZC4KCgkqIHNlbV9wcmFnLmFkYjogTW92ZSBleHBhbnNpb24gb2YgQ29tbW9uX09iamVjdCBhbmQgUHNlY3RfT2JqZWN0CglwcmFnbWFzIHRvIEV4cF9QcmFnLCB3aGljaCBpcyBtb3JlIGFwcHJvcHJpYXRlLgoJQXR0YWNoIHRoZXNlIHR3byBwcmFnbWFzIHRvIHRoZSBSZXBfSXRlbSBjaGFpbiBVc2UgUmVwX0l0ZW0gY2hhaW4gdG8KCWNoZWNrIGZvciBkdXBsaWNhdGVzIFJlbW92ZSB1c2Ugb2YgSXNfUHNlY3RlZCBmbGFnLCBubyBsb25nZXIgbmVlZGVkLgoJVXNlIG5ldyBNYWtlX1N0cmluZ19MaXRlcmFsIGZ1bmN0aW9uIHdpdGggc3RyaW5nLgoKCSogZXhwX2F0dHIuYWRiIChFeHBhbmRfRnB0X0F0dHJpYnV0ZSk6IFRoZSBmbG9hdGluZy1wb2ludCBhdHRyaWJ1dGVzCgl0aGF0IGFyZSBmdW5jdGlvbnMgcmV0dXJuIHVuaXZlcnNhbCB2YWx1ZXMsIHRoYXQgaGF2ZSB0byBiZSBjb252ZXJ0ZWQKCXRvIHRoZSBjb250ZXh0IHR5cGUuCglVc2UgbmV3IE1ha2VfU3RyaW5nX0xpdGVyYWwgZnVuY3Rpb24gd2l0aCBzdHJpbmcuCgkoR2V0X1N0cmVhbV9Db252ZXJ0X1ByYWdtYSk6IE5ldyBmdW5jdGlvbiwgcmVwbGFjZXMgdGhlIHVzZSBvZgoJR2V0X1JlcF9QcmFnbWEsIHdoaWNoIGhhZCB0byBiZSBrbHVkZ2VkIHRvIHdvcmsgaW4gdGhpcyBjYXNlLgoKCSogZnJlZXplLmFkYjogVXNlIG5ldyBIYXNfUmVwX1ByYWdtYSBmdW5jdGlvbgoKCSogZXhwX2ludHIuYWRiLCBleHBfY2gzLmFkYiwgc2VtX2F0dHIuYWRiOiBVc2UgbmV3IE1ha2VfU3RyaW5nX0xpdGVyYWwKCWZ1bmN0aW9uIHdpdGggc3RyaW5nLgoJVXNlIG5ldyBIYXNfUmVwX1ByYWdtYSBmdW5jdGlvbi4KCgkqIHRidWlsZC5hZHMsIHRidWlsZC5hZGIgKE1ha2VfU3RyaW5nX0xpdGVyYWwpOiBOZXcgZnVuY3Rpb24sIHRha2VzCglzdHJpbmcgYXJndW1lbnQuCgoyMDA0LTExLTE4ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBhZGFjb3JlLmNvbT4KCgkqIGVycm91dC5hZHMsIGVycm91dC5hZGI6IChGaXJzdF9TbG9jKTogTmV3IGZ1bmN0aW9uCgoJKiBwYXItY2g1LmFkYiAoUF9Db25kaXRpb24pOiBDaGVjayBmb3IgcmVkdW5kYW50IHBhcmVucyBpcyBub3cgYSBzdHlsZQoJY2hlY2sgKC1nbmF0eXgpIGluc3RlYWQgb2YgYmVpbmcgaW5jbHVkZWQgYXMgYSByZWR1bmRhbnQgY29uc3RydWN0Cgl3YXJuaW5nLgoKCSogc2VtX2NoNi5hZGI6IENoYW5nZSBuYW1lIFN0eWxlX0NoZWNrX1N1YnByb2dyYW1fT3JkZXIgdG8KCVN0eWxlX0NoZWNrX09yZGVyX1N1YnByb2dyYW1zLgoKCSogc3R5bGUuYWRzLCBzdHlsZWcuYWRzLCBzdHlsZWcuYWRiLCBzdHlsZWctYy5hZGIsIHN0eWxlc3cuYWRzLAoJc3R5bGVzdy5hZGI6IEFkZCBTdHlsZV9DaGVja19YdHJhX1BhcmVucwoKCSogdXNhZ2UuYWRiOiBBZGQgbGluZSBmb3IgLWduYXR5eCAoY2hlY2sgZXh0cmEgcGFyZW5zKQoKCSogdm1zX2RhdGEuYWRzOiBBZGQgZW50cnkgZm9yIFNUWUxFX0NIRUNLUz1YVFJBX1BBUkVOUyA9PiAtZ25hdHl4CgoyMDA0LTExLTE4ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgkgICAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fU2VsZWN0ZWRfQ29tcG9uZW50KTogSWYgdGhlIGNvbXBvbmVudCBpcyB0aGUKCWRpc2NyaW1pbmFudCBvZiBhIGNvbnN0cmFpbmVkIHN1YnR5cGUsIGFuYWx5emUgdGhlIGNvcHkgb2YgdGhlCgljb3JyZXNwb25kaW5nIGNvbnN0cmFpbnQsIGJlY2F1c2UgaW4gc29tZSBjYXNlcyBpdCBtYXkgYmUgb25seQoJcGFydGlhbGx5IGFuYWx5emVkLgoJUmVtb3ZlcyBsb25nLWxpdmVkID8/PyBjb21tZW50cy4KCgkqIGV4cF9jaDcuYWRiIChFc3RhYmxpc2hfVHJhbnNpZW50X1Njb3BlKTogUmVtb3ZlIGNvbXBsZXggY29kZSB0aGF0CgloYW5kbGVkIGNvbnRyb2xsZWQgb3Igc2Vjb25kYXJ5LXN0YWNrIGV4cHJlc3Npb25zIHdpdGhpbiB0aGUKCWl0ZXJhdGlvbl9zY2hlbWUgb2YgYSBsb29wLgoKCSogc2VtX2NoNS5hZGIgKEFuYWx5emVfSXRlcmF0aW9uX1NjaGVtZSk6IEJ1aWxkIGEgYmxvY2sgdG8gZXZhbHVhdGUKCWJvdW5kcyB0aGF0IG1heSBjb250YWluIGZ1bmN0aW9ucyBjYWxscywgdG8gcHJldmVudCBtZW1vcnkgbGVha3Mgd2hlbgoJdGhlIGJvdW5kIGNvbnRhaW5zIGEgY2FsbCB0byBhIGZ1bmN0aW9uIHRoYXQgdXNlcyB0aGUgc2Vjb25kYXJ5IHN0YWNrLgoJKENoZWNrX0NvbXBsZXhfQm91bmRzKTogU3Vic2lkaWFyeSBvZiBBbmFseXplX0l0ZXJhdGlvbl9TY2hlbWUsIHRvCglnZW5lcmF0ZSB0ZW1wb3JhcmllcyBmb3IgbG9vcCBib3VuZHMgdGhhdCBtaWdodCBjb250YWluIGZ1bmN0aW9uIGNhbGxzCgl0aGF0IHJlcXVpcmUgc2Vjb25kYXJ5IHN0YWNrIGFuZC9vciBmaW5hbGl6YXRpb24gYWN0aW9ucy4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX0luZGV4ZWRfQ29tcG9uZW50X0Zvcm0pOiBJZiB0aGUgcHJlZml4IGlzIGEKCXNlbGVjdGVkIGNvbXBvbmVudCBhbmQgdGhlIHNlbGVjdG9yIGlzIG92ZXJsb2FkYWJsZSAobm90IGp1c3QgYQoJZnVuY3Rpb24pIHRyZWF0IGFzIGZ1bmN0aW9uIGNhbGwsIEFuYWx5emVfQ2FsbCB3aWxsIGRpc2FtYmlndWF0ZSBpZgoJbmVjZXNzYXJ5LgoJKEFuYWx5emVfU2VsZWN0ZWRfQ29tcG9uZW50KTogRG8gbm90IGdlbmVyYXRlIGFuIGFjdHVhbCBzdWJ0eXBlIGZvciB0aGUKCXNlbGVjdGVkIGNvbXBvbmVudCBpZiBleHBhbnNpb24gaXMgZGlzYWJsZWQuIFRoZSBhY3R1YWwgc3VidHlwZSBpcyBvbmx5CgluZWVkZWQgZm9yIGNvbnN0cmFpbnQgY2hlY2tzLgoJKEFuYWx5emVfQWxsb2NhdG9yKTogSWYgcmVzdHJpY3Rpb24gTm9fU3RyZWFtcyBpcyBzZXQsIHRoZW4gZG8KCW5vdCBwZXJtaXQgb2JqZWN0cyB0byBiZSBkZWNsYXJlZCBvZiBhIHN0cmVhbSB0eXBlLCBvciBvZiBhCgljb21wb3NpdGUgdHlwZSBjb250YWluaW5nIGEgc3RyZWFtLgoKCSogcmVzdHJpY3QuYWRzOiBSZW1vdmUgdGhlIGEtc3RyZWFtIGVudHJ5IGZyb20gVW5pdF9BcnJheSwgc2luY2UKCU5vX1N0cmVhbXMgbm8gbG9uZ2VyIHByb2hpYml0cyB3aXRoJ2luZyB0aGlzIHBhY2thZ2UuCgoJKiBzZW1fY2gzLmFkYiAoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IElmIHRoZSBwYXJlbnQgdHlwZSBoYXMKCWRpc2NyaW1pbmFudHMsIGJ1dCB0aGUgcGFyZW50IGJhc2UgaGFzIHVua25vd24gZGlzY3JpbWluYW50cywgdGhlcmUgaXMKCW5vIGRpc2NyaW1pbmFudCBjb25zdHJhaW50IHRvIGluaGVyaXQuIFN1Y2ggYSBkaXNjcmVwYW5jeSBjYW4gYXJpc2UKCXdoZW4gdGhlIGFjdHVhbCBmb3IgYSBmb3JtYWwgdHlwZSB3aXRoIHVua25vd24gZGlzY3JpbWluYW50cyBpcyBhCglzaW1pbGFyIHByaXZhdGUgdHlwZSB3aG9zZSBmdWxsIHZpZXcgaGFzIGRpc2NyaW1pbmFudHMuCgkoQW5hbHl6ZV9PYmplY3RfRGVjbGFyYXRpb24pOiBJZiByZXN0cmljdGlvbiBOb19TdHJlYW1zIGlzIHNldCwgdGhlbgoJZG8gbm90IHBlcm1pdCBvYmplY3RzIHRvIGJlIGRlY2xhcmVkIG9mIGEgc3RyZWFtIHR5cGUsIG9yIG9mIGEKCWNvbXBvc2l0ZSB0eXBlIGNvbnRhaW5pbmcgYSBzdHJlYW0uCgoyMDA0LTExLTE4ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAYWRhY29yZS5jb20+CgoJKiBleHBfZGJ1Zy5hZHM6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIHRvIHJlZmxlY3Qgc2ltcGxlciBlbmNvZGluZyBmb3IKCXByb3RlY3RlZCBvcGVyYXRpb25zLgoKCSogZXhwX2NoOS5hZGIgKEJ1aWxkX1NlbGVjdGVkX05hbWUpOiBEbyBub3QgaW5jbHVkZSAiUFQiIHN1ZmZpeCBpbgoJZ2VuZXJhdGVkIG5hbWUsIGl0IGNvbXBsaWNhdGVzIGRlY29kaW5nIGluIGdkYiBhbmQgaGluZGVycyBkZWJ1Z2dpbmcKCW9mIHByb3RlY3RlZCBvcGVyYXRpb25zLgoJKEJ1aWxkX0JhcnJpZXJfRnVuY3Rpb25fU3BlY2lmaWNhdGlvbik6IFNldCB0aGUgTmVlZHNfRGVidWdfSW5mbwoJZmxhZyBmb3IgdGhlIHByb3RlY3RlZCBlbnRyeSBiYXJyaWVyIGZ1bmN0aW9uLgoJKEJ1aWxkX1Byb3RlY3RlZF9FbnRyeV9TcGVjaWZpY2F0aW9uKTogU2V0IHRoZSBOZWVkc19EZWJ1Z19JbmZvCglmbGFnIGZvciB0aGUgcHJvdGVjdGVkIGVudHJ5IGZ1bmN0aW9uLgoKMjAwNC0xMS0xOCAgTmljb2xhcyBTZXR0b24gIDxzZXR0b25AYWRhY29yZS5jb20+CgoJKiBleHBlY3QuYzogRGVmaW5lIF9fdW5peF9fIHdoZW4gX19BUFBMRV9fIGlzIGRlZmluZWQuCgoJKiBNYWtlZmlsZS5pbjogSW5mb3JtIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUgR01FTV9MSUIgaW4gdGhlCglEYXJ3aW4tc3BlY2lmaWMgc2VjdGlvbi4KCgkqIGxhbmctc3BlY3MuaDogQ2hhbmdlIHRoZSBwbGFjZW1lbnQgb2YgdGhlICUxIG1hcmtlci4KCVdvcmtzIGFyb3VuZCB0aGUgZmFjdCB0aGF0IGdjYyBhZGRzIC1mUElDIGJ5IGRlZmF1bHQgdW5kZXIgRGFyd2luLgoKMjAwNC0xMS0xOCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGFkYWNvcmUuY29tPgoKCSogZXhwX3Bha2QuYWRiIChDb252ZXJ0X1RvX1BBVF9UeXBlKTogQWZ0ZXIgcmVwbGFjaW5nIHRoZSBvcmlnaW5hbAoJdHlwZSBvZiB0aGUgb2JqZWN0IHdpdGggdGhlIHBhY2tlZCBhcnJheSB0eXBlLCBzZXQgdGhlIEFuYWx5emVkIGZsYWcKCW9uIHRoZSBvYmplY3QgaWYgaXQgaXMgYW4gZW50aXR5IG9yIHNpbXBsZSBpbmRleGVkIGNvbXBvbmVudCwgdG8gYXZvaWQKCXNwdXJpb3VzIHR5cGUgZXJyb3JzLgoKMjAwNC0xMS0xOCAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGFkYWNvcmUuY29tPgoKCSogZ25hdDFkcnYuYWRiLCBnbmF0YmluZC5hZGIsIGduYXRjaG9wLmFkYiwgZ25hdGZpbmQuYWRiLCBnbmF0bGluay5hZGIsCglnbmF0bHMuYWRiLCBnbmF0eHJlZi5hZGIsIGdwcmVwLmFkYjogT3V0cHV0IHRoZSBjb3B5cmlnaHQgbWVzc2FnZSBvbiBhCglzZXBhcmF0ZSBsaW5lIGZyb20gdGhlIHZlcnNpb24gbWVzc2FnZS4KCjIwMDQtMTEtMTggIEVkIEZhbGlzICA8ZmFsaXNAYWRhY29yZS5jb20+CgoJKiBpbml0LmMgKF9fZ25hdF9tYXBfc2lnbmFsKTogbWFwIFNJR1NFR1YgdG8gU3RvcmFnZV9FcnJvciBmb3IgQUU2NTMKCXZ0aHJlYWRzLgoJKGluaXRfZmxvYXQpOiBFbGltaW5hdGUgaW5pdGlhbGl6YXRpb24gb2YgZmxvYXRpbmcgcG9pbnQgc3RhdHVzIGZvcgoJQUU2NTMuIFRoZSBpbnN0cnVjdGlvbnMgaGF2ZSBubyBlZmZlY3QgZm9yIHZUaHJlYWRzLgoKMjAwNC0xMS0xOCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAYWRhY29yZS5jb20+CgoJKiBtYWtlLmFkYiAoR25hdG1ha2UpOiBJbnZva2UgZ25hdGxpbmsgd2l0aCAtc2hhcmVkLWxpYmdjYyB3aGVuCglnbmF0YmluZCBpcyBpbnZva2VkIHdpdGggLXNoYXJlZC4KCjIwMDQtMTEtMTggIEpvc2UgUnVpeiAgPHJ1aXpAYWRhY29yZS5jb20+CgoJKiBzLXRwb3Nlbi5hZGIgKExvY2tfRW50cnkpOiBSZW1vdmUgdGhlIGNvZGUgZm9yIHJhaXNpbmcgUHJvZ3JhbV9FcnJvcgoJZm9yIERldGVjdF9CbG9ja2luZyB3aGljaCBpcyByZWR1bmRhbnQgd2l0aCB0aGUgY2hlY2sgZG9uZSB3aXRoaW4gdGhlCglwcm9jZWR1cmUgUHJvdGVjdGVkX1NpbmdsZV9FbnRyeV9DYWxsLgoJKExvY2tfUmVhZF9Pbmx5X0VudHJ5KTogUmVtb3ZlIHRoZSBjb2RlIGZvciByYWlzaW5nIFByb2dyYW1fRXJyb3IgZm9yCglEZXRlY3RfQmxvY2tpbmcgd2hpY2ggaXMgcmVkdW5kYW50IHdpdGggdGhlIGNoZWNrIGRvbmUgd2l0aGluIHRoZQoJcHJvY2VkdXJlIFByb3RlY3RlZF9TaW5nbGVfRW50cnlfQ2FsbC4KCjIwMDQtMTEtMTggIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGFkYWNvcmUuY29tPgoKCSogbWFrZWdwci5hZGIgKENvbXBpbGUpOiBQdXQgdGhlIGNvbXBpbGluZyBzd2l0Y2hlcyAoaW4gcGFja2FnZQoJQ29tcGlsZXIgYW5kIG9uIHRoZSBjb21tYW5kIGxpbmUpIGltbWVkaWF0ZWx5IGFmdGVyICItYyIsIGluc3RlYWQgb2YKCWF0IHRoZSBlbmQgb2YgdGhlIGNvbW1hbmQgbGluZSBpbnZvY2F0aW9uIG9mIHRoZSBjb21waWxlciwgd2hlbgoJY29tcGlsaW5nIGEgbm9uLUFkYSBmaWxlLgoJKEJ1aWxkX0dsb2JhbF9BcmNoaXZlKTogV2hlbiB0aGVyZSBpcyBubyBuZWVkIHRvIHJlYnVpbGQgdGhlIGFyY2hpdmUsCglzZXQgR2xvYmFsX0FyY2hpdmVfRXhpc3RzLCBzbyB0aGF0IHRoZSBhcmNoaXZlIGlzIHBhc3NlZCB0byB0aGUgbGlua2VyCglpZiBvbmUgaXMgbmVlZGVkLgoKMjAwNC0xMS0xOCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAYWRhY29yZS5jb20+CgkgICAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWRhY29yZS5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOgoJUmVtb3ZlIGV4dHJhIHBhcmVuIGNoZWNrIGZyb20gbGlzdCBvZiBjaGVja3MgZm9yIHJlZHVuZGFudCBjb25zdHJ1Y3RzCglBZGQgZG9jdW1lbnRhdGlvbiBvZiBuZXcgLWduYXR5eCBzdHlsZSBjaGVjayAoY2hlY2sgZXh0cmEgcGFyZW5zKQoJUmVtb3ZlIHBhcmFncmFwaCBhYm91dCBnbmF0ZWxpbSBkZWJ1ZyBvcHRpb25zLgoKCSogZ25hdF9ybS50ZXhpOiBEb2N1bWVudCB0aGF0IEFkYS5TdHJlYW1zIG5vdyBmb3JiaWRzIGNyZWF0aW5nIHN0cmVhbQoJb2JqZWN0cyByYXRoZXIgdGhhbiBmb3JiaWRkaW5nIGRlcGVuZGVuY2llcyBvbiB0aGUgcGFja2FnZSBBZGEuU3RyZWFtcy4KCgkqIHNpbmZvLmFkczogQWRkID8/PyBub3RlIHRoYXQgd2Ugc2hvdWxkIGRvY3VtZW50IHByYWdtYXMgcGFzc2VkIHRvCgliYWNrIGVuZC4KCgkqIGctZXhwZWN0LmFkczogRml4IGEgZmV3IHR5cG9zIGluIHRoZSBjb21tZW50cy4KCjIwMDQtMTEtMDkgIEpvc2VwaCBTLiBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgoKCSogbWlzYy5jIChnbmF0X2hhbmRsZV9vcHRpb24pOiBVc2UgJTwgYW5kICU+IGZvciBxdW90aW5nIGluCgl3YXJuaW5nIG1lc3NhZ2UuCgoyMDA0LTExLTA4ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGEtbnVtYXV4LXg4Ni5hZGIgKFRhbik6IEZpeCBmZGl2cCBzeW50YXguCgoyMDA0LTExLTA3ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtZ25hdGxpYik6IFJlbW92ZSBzcHVyaW91cyBoeXBoZW4uCgoyMDA0LTExLTAyICBBbmRyZXcgUGluc2tpICA8cGluc2tpYUBwaHlzaWNzLnVjLmVkdT4KCglQUiBhZGEvMTgyMjgKCSogTWFrZWZpbGUuaW4gKGRhcndpbik6IFNldCBzb2V4dCB0byAuZHlsaWIuCgoyMDA0LTEwLTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCSAgICBUaG9tYXMgUXVpbm90ICAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZy1zb2N0aGktdm1zLmFkYiwgZy1zb2N0aGktbWluZ3cuYWRiLCBnLXNvY3RoaS12eHdvcmtzLmFkczoKCShDX1dyaXRldik6IENoYW5nZSBNU0dfRm9yY2VkX0ZsYWdzIHRvIENvbnN0YW50cy5NU0dfRm9yY2VkX0ZsYWdzIGFzCgl0aGVyZSBpcyBubyB1c2Ugb2YgR05BVC5Tb2NrZXRzLkNvbnN0YW50cy4KCVJlbW92ZSByZW1haW5pbmcgcHJhZ21hIEltcG9ydCBmb3IgQ19Xcml0ZQoJUmVtb3ZlIENfUmVhZCBhbmQgQ19Xcml0ZSBmcm9tIGludGVybmFsIGltcGxlbWVudGF0aW9uIHVuaXQKCUdOQVQuU29ja2V0cy5UaGluLCBhcyB0aGVpciB1c2FnZSBmb3Igc29ja2V0cyBpcyBub24tcG9ydGFibGUgKHVzaW5nCgl0aGUgcmVhZCBhbmQgd3JpdGUgZnVuY3Rpb25zIGZyb20gdGhlIHN5c3RlbSBydW50aW1lIGxpYnJhcnkgaXMgZmluZQoJb24gVU5JWCBidXQgd29uJ3Qgd29yayB1bmRlciBXaW5kb3dzKS4KCgkqIGctc29ja2V0LmFkYjogKEFib3J0X1NlbGVjdG9yKTogVXNlIENfU2VuZCBpbnN0ZWFkIG9mIENfV3JpdGUuCgkoQ2hlY2tfU2VsZWN0b3IpOiBVc2UgQ19SZWN2IGluc3RlYWQgb2YgQ19SZWFkLgoJU2VsZWN0b3JzIGFyZSB0aGUgR05BVC5Tb2NrZXRzIGFic3RyYWN0aW9uIHRvIHBlcmZvcm0gYSBzZWxlY3QoKQoJY2FsbCBvbiBhIHNldCBvZiBkZXNjcmlwdG9ycy4gVG8gYWxsb3cgYWJvcnRpb24gb2YgYW4gb25nb2luZwoJc2VsZWN0IG9wZXJhdGlvbiwgc29tZSBkYXRhIGlzIHdyaXR0ZW4gdG8gYSBkZWRpY2F0ZWQgc29ja2V0IHRoYXQKCWlzIGFsd2F5cyBtb25pdG9yZWQuCglVbmRlciBXaW5kb3dzLCB0aGUgd3JpdGUgYW5kIHJlYWQgbGlicmFyeSBmdW5jdGlvbnMgY2Fubm90IG9wZXJhdGUKCW9uIHNvY2tldHMsIHNvIHdlIG5lZWQgdG8gdXNlIHNlbmQgYW5kIHJlY3YgaW5zdGVhZCwgd2hpY2ggaXMgcG9ydGFibGUKCWFjcm9zcyBhbGwgc3VwcG9ydGVkIHBsYXRmb3Jtcy4KCgkqIGctc29jdGhpLmFkczogUmVtb3ZlIENfUmVhZCBhbmQgQ19Xcml0ZSBmcm9tIGludGVybmFsIGltcGxlbWVudGF0aW9uCgl1bml0IEdOQVQuU29ja2V0cy5UaGluLCBhcyB0aGVpciB1c2FnZSBmb3Igc29ja2V0cyBpcyBub24tcG9ydGFibGUKCSh1c2luZyB0aGUgcmVhZCBhbmQgd3JpdGUgZnVuY3Rpb25zIGZyb20gdGhlIHN5c3RlbSBydW50aW1lIGxpYnJhcnkgaXMKCWZpbmUgb24gVU5JWCBidXQgd29uJ3Qgd29yayB1bmRlciBXaW5kb3dzKS4KCjIwMDQtMTAtMjYgIE5pY29sYXMgU2V0dG9uICA8c2V0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiBtbGliLXRndC1kYXJ3aW4uYWRiOiBOZXcgZmlsZS4KCgkqIG1saWItdGd0LXRydTY0LmFkYiwgbWxpYi10Z3QtYWl4LmFkYiwgbWxpYi10Z3QtaXJpeC5hZGIsCgltbGliLXRndC1ocHV4LmFkYiwgbWxpYi10Z3QtbGludXguYWRiLCBtbGliLXRndC1zb2xhcmlzLmFkYiwKCW1saWItdGd0LXZtcy1hbHBoYS5hZGIsIG1saWItdGd0LXZtcy1pYTY0LmFkYiwKCW1saWItdGd0LW1pbmd3LmFkYiwgbWxpYi10Z3Qtdnh3b3Jrcy5hZGIgKEFyY2hpdmVfSW5kZXhlcl9PcHRpb25zKTogTmV3CglzdWJwcm9ncmFtIGJvZHkuCgoJKiBNYWtlZmlsZS5pbjogQWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXMgdW5kZXIgRGFyd2luLgoJKEVYVFJBX0dOQVRSVExfTk9OVEFTS0lOR19PQkpTLCBwcGMtdnh3b3Jrcyk6IEFkZCBzLXZ4d2V4Yy5vLCBjb250YWluaW5nCgl0aGUgbG93IGxldmVsIEVIIGluaXQgc3VicHJvZ3JhbSB0byBiZSBjYWxsZWQgZnJvbSBfX2duYXRfaW5pdGlhbGl6ZS4KCgkqIG1saWItdGd0LmFkcywgbWxpYi10Z3QuYWRiIChBcmNoaXZlX0luZGV4ZXJfT3B0aW9ucyk6IE5ldyBzdWJwcm9ncmFtLAoJaW5kaWNhdGVzIHdoaWNoIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYXJjaGl2ZSBpbmRleGVyLgoKCSogbWxpYi11dGwuYWRiOiBBZGQgc3VwcG9ydCBmb3IgY2FsbGluZyByYW5saWIgd2l0aCBhZGRpdGlvbmFsCglvcHRpb25zLiBUaGlzIGlzIG5lZWRlZCBmb3IgaW5zdGFuY2UgdW5kZXIgTWFjIE9TIFguCgkoUmFubGliX09wdGlvbnMpOiBOZXcgZ2xvYmFsIHZhcmlhYmxlLCB1c2VkIHRvIHN0b3JlIHRoZSBwb3RlbnRpYWwKCW9wdGlvbnMgdG8gcGFzcyB0byByYW5saWIuCgkoQXIpOiBVc2UgUmFubGliX09wdGlvbnMgd2hlbiBzcGF3bmluZyByYW5saWIuCgkoSW5pdGlhbGl6ZSk6IFNldCB0aGUgdmFsdWUgb2YgcmFubGliIG9wdGlvbi4KCjIwMDQtMTAtMjYgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIHMtcGFyYW1lLWxpbnV4LmFkYiAoTWluaW11bV9TdGFja19TaXplKTogQWRqdXN0IHRvIHJldHVybiAxMksKCWluc3RlYWQgb2YgOEssIHRvIHJlZmxlY3QgdGhlIHJlYWwgcG90ZW50aWFsIG5lZWRzIGZvciBzdGFjay1jaGVja2luZwoJaW4gdGhlIFpDWCBjYXNlLgoKMjAwNC0xMC0yNiAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogcy1wYXJhbWUtbWluZ3cuYWRiIChEZWZhdWx0X1N0YWNrX1NpemUpOiBBZGQgc29tZSBjb21tZW50cy4KCgkqIHMtdGFwcm9wLW1pbmd3LmFkYiAoQ3JlYXRlX1Rhc2spOiBTZXQgaW5pdGlhbCBzdGFjayBzaXplIHRvIDEwMjQuIE9uCglXaW5kb3dzIG9ubHkgdGhlIGluaXRpYWwgdGhyZWFkIHN0YWNrIHNpemUgY2FuIGJlIHNldCBzbyBpdCBpcyBnb29kIHRvCglzdGFydCB3ZSBhIGxvdyBzdGFjayBzaXplLgoJVGhlIE9TIHdpbGwgYWRqdXN0IHRoZSBzaXplIGFzIG5lZWRlZC4KCjIwMDQtMTAtMjYgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCSAgICBOaWNvbGFzIFNldHRvbiAgPHNldHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogZXhwZWN0LmMsIGFkYWludC5jLCBsaW5rLmMsIHN5c2RlcC5jICh1bml4IHNlY3Rpb25zKTogR3VhcmQgd2l0aAoJIl9fdW5peF9fIiBpbnN0ZWFkIG9mICJ1bml4Ii4KCVRoZSBsYXR0ZXIgaXMgaW1wbGljaXRseSBkZWZpbmVkIGJ5IGdjYzMuMiBidXQgbm90IGJ5IGdjYyA+PSAzLjQsIHNvIHRoZQoJc2VjdGlvbnMgd2VyZSBqdXN0IG1pc3Rha2VubHkgaWdub3JlZC4gVGhlIGZvcm1lciBpcwoJaW1wbGljaXRlbHkgZGVmaW5lZCBieSBnY2MyLjgsIGdjYzMuMiBhbmQgZ2NjMy40LgoJVXBkYXRlICNpZmRlZiBwcmVwcm9jZXNzb3IgbWFjcm8gdG8gZGV0ZWN0IHRoZSBzeW1ib2wgX19ocHV4X18gaW5zdGVhZAoJb2YgaHB1eC4gVGhpcyBwcmV2ZW50cyBhbiB1bndhbnRlZCBkZWZpbml0aW9uIG9mIHRoZSBzeW1ib2wKCWNvbnZlcnRfYWRkcmVzc2VzIGluIGFkYWludC5vLgoKMjAwNC0xMC0yNiAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGduYXQuY29tPgoKCSogYS1leGV4cHIuYWRiIChTZXR1cF9LZXkpOiBDaGFuZ2UgaW5pdGlhbCB2YWx1ZSB0byAxNiNERUFEIywgZm9yCgljb21wYXRpYmlsaXR5IHdpdGggdHlwZSBVbndpbmRfV29yZCBvbiAxNi1iaXQgdGFyZ2V0cyBzdWNoIGFzIEFBTVAuCgoyMDA0LTEwLTI2ICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWN0LWV1cm9wZS5mcj4KCgkqIGEtZmlsaWNvLmFkcywgYS1maWxpY28uYWRiOiBmaXggaW5jb3JyZWN0IGhlYWRlci4KCjIwMDQtMTAtMjYgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIGEtc3RzdGlvLmFkczogRml4IHR5cG8gaW4gaWRlbnRpZmllcgoKMjAwNC0xMC0yNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX2NoNC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDQtMTAtMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGNoZWNrcy5hZGIgKEV4cHJfS25vd25fVmFsaWQpOiBJZiBmbG9hdGluZy1wb2ludCB2YWxpZGl0eSBjaGVja3MgYXJlCgllbmFibGVkLCBjaGVjayB0aGUgcmVzdWx0IG9mIHVuYXJ5IGFuZCBiaW5hcnkgb3BlcmF0aW9ucyB3aGVuIHRoZQoJZXhwcmVzc2lvbiBpcyB0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIGFuIGFzc2lnbm1lbnQuCgoyMDA0LTEwLTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGNsZWFuLmFkYiAoRGVsZXRlKTogRG8gbm90IG91dHB1dCB3YXJuaW5ncyB3aGVuIGluIHF1aWV0IG91dHB1dCBhbmQKCW5vdCBpbiB2ZXJib3NlIG1vZGUuCgkoRm9yY2VfRGVsZXRpb25zKTogTmV3IEJvb2xlYW4gZmxhZywgZGVmYXVsdGVkIHRvIEZhbHNlCgkoRGVsZXRlKTogT25seSBkZWxldGUgYSBmaWxlIGlmIGl0IGlzIHdyaXRhYmxlLCBhbmQgd2hlbgoJRm9yY2VfRGVsZXRpb25zIGlzIFRydWUuCgkoUGFyc2VfQ21kX0xpbmUpOiBOZXcgc3dpdGNoIC1mOiBzZXQgRm9yY2VfRGVsZXRpb25zIHRvIFRydWUKCShVc2FnZSk6IExpbmUgZm9yIG5ldyBzd2l0Y2ggLWYKCShDbGVhbl9EaXJlY3RvcnkpOiBVc2UgR05BVC5PU19MaWIuU2V0X1dyaXRhYmxlIGluc3RlYWQgb2Ygcm9sbGluZyBvdXIKCW93bi4KCjIwMDQtMTAtMjYgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZmllbGQpOiBVc2UgdGhlIHR5cGUgb2YgdGhlIGlubmVyIG9iamVjdCBmb3IgYQoJSk0gdHlwZSBvbmx5IGlmIGl0cyBzaXplIG1hdGNoZXMgdGhhdCBvZiB0aGUgd3JhcHBlci4gIFdoZW4gYSBzaXplIGlzCglwcmVzY3JpYmVkIGFuZCB0aGUgZmllbGQgaXMgbm90IGFsaWFzZWQsIHJlbW92ZSB0aGUgd3JhcHBlciBvZiBhIEpNCgl0eXBlIG9ubHkgaWYgdGhlIHNpemUgaXMgbm90IGdyZWF0ZXIgdGhhbiB0aGF0IG9mIHRoZSBwYWNrZWQgYXJyYXkuCgkoZ25hdF90b19nbnVfZW50aXR5KTogQ2hhbmdlIHRoZSBleHRlbnNpb24gb2YgcGFja2VkIGFycmF5IHdyYXBwZXJzCglmcm9tIExKTSB0byBKTS4KCjIwMDQtMTAtMjYgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBldmFsX2ZhdC5hZGIgKEVwc19Nb2RlbCxFcHNfRGVub3JtKTogUmVtb3ZlLCBubyBsb25nZXIgdXNlZC4KCShTdWNjKTogUmUtaW1wbGVtZW50IHVzaW5nIFNjYWxpbmcsIEV4cG9uZW50IGFuZCBDZWlsaW5nIGF0dHJpYnV0ZXMuCgkoUHJlZCk6IEltcGxlbWVudCBpbiB0ZXJtcyBvZiBTdWNjLgoKMjAwNC0xMC0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2FnZ3IuYWRiIChTYWZlX0NvbXBvbmVudCk6IEFuIGFnZ3JlZ2F0ZSBjb21wb25lbnQgdGhhdCBpcyBhbgoJdW5jaGVja2VkIGNvbnZlcnNpb24gaXMgc2FmZSBmb3IgaW4tcGxhY2UgdXNlIGlmIHRoZSBleHByZXNzaW9uIG9mIHRoZQoJY29udmVyc2lvbiBpcyBzYWZlLgoJKEV4cGFuZF9BcnJheV9BZ2dyZWdhdGUpOiBBbiBhZ2dyZWdhdGUgdGhhdCBpbml0aWFsaXplcyBhbiBhbGxvY2F0b3IgbWF5CgliZSBleHBhbmRhYmxlIGluIHBsYWNlIGV2ZW4gaWYgdGhlIGFnZ3JlZ2F0ZSBkb2VzIG5vdCBjb21lIGZyb20gc291cmNlLgoJKENvbnZlcnRfQXJyYXlfQWdncl9Jbl9BbGxvY2F0b3IpOiBOZXcgcHJvY2VkdXJlIHRvIGluaXRpYWxpemUgdGhlCglkZXNpZ25hdGVkIG9iamVjdCBvZiBhbiBhbGxvY2F0b3IgaW4gcGxhY2UsIHJhdGhlciB0aGFuIGJ1aWxkaW5nIGl0CglmaXJzdCBvbiB0aGUgc3RhY2suIFRoZSBwcmV2aW91cyBzY2hlbWUgZm9yY2VzIGEgZnVsbCBjb3B5IG9mIHRoZSBhcnJheSwKCWFuZCBtYXkgYmUgYWx0b2dldGhlciB1bnN1c2FibGUgaWYgdGhlIHNpemUgb2YgdGhlIGFycmF5IGlzIHRvbyBsYXJnZQoJZm9yIHN0YWNrIGFsbG9jYXRpb24uCgoyMDA0LTEwLTI2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9PcF9FcSk6IE1ha2Ugc3VyZSB3ZSBleHBhbmQgYSBsb29wIGZvciBhcnJheQoJY29tcGFyZXMgaWYgdGhlIGNvbXBvbmVudCBpcyBhdG9taWMuCgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX0Fzc2lnbl9BcnJheSk6IE1ha2Ugc3VyZSB3ZSBleHBhbmQgYSBsb29wIGZvcgoJYXJyYXkgYXNzaWdubWVudCBpZiB0aGUgY29tcG9uZW50IHR5cGUgaXMgYXRvbWljLgoKMjAwNC0xMC0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoJICAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQWN0dWFscyk6IElmIHRoZSBhY3R1YWwgZm9yIGFuIGluLW91dCBwYXJhbWV0ZXIKCWlzIGFsaWFzZWQgYW5kIGlzIGEgYnlfcmVmZXJlbmNlIHR5cGUsIGRvIG5vdCBwYXNzIGJ5IGNvcHkuCgkoRXhwYW5kX05fRnVuY3Rpb25fQ2FsbCkgPFJoc19PZl9Bc3NpZ25fT3JfRGVjbD46IE5ldyBmdW5jdGlvbiB0bwoJZGV0ZWN0IHdoZXRoZXIgdGhlIGNhbGwgaXMgaW4gdGhlIHJpZ2h0IHNpZGUgb2YgYW4gYXNzaWdubWVudCBvcgoJdGhlIGV4cHJlc3Npb24gb2YgYW4gb2JqZWN0IGRlY2xhcmF0aW9uLiAgUmVjdXJzZSBvbiBjb21wb25lbnQKCWFzc29jaWF0aW9uIHdpdGhpbiBhZ2dyZWdhdGVzLgoJQ2FsbCBpdCBpbiB0aGUgY29uZGl0aW9uIHRoYXQgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB0ZW1wb3JhcnkgaXMKCW5lY2Vzc2FyeSBmb3IgY29ycmVjdCBzdGFjay1jaGVja2luZy4KCjIwMDQtMTAtMjYgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGV4cF9kaXN0LmFkYiAoQnVpbGRfR2VuZXJhbF9DYWxsaW5nX1N0dWJzKTogTmV3IGZvcm1hbCBwYXJhbWV0ZXIKCVJBQ1dfVHlwZSwgdXNlZCBpbiB0aGUgUG9seU9SQiB2ZXJzaW9uLgoJUmVuYW1lIFJDSV9JbmZvIHRvIFJDSV9Mb2NhdG9yLCBmb3IgY29uc2lzdGVuY3kgYmV0d2VlbiB0aGUgUG9seU9SQgoJdmVyc2lvbiBhbmQgdGhlIEdBUkxJQyB2ZXJzaW9uLgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYiwgcy1wYXJpbnQuYWRzLCBzLXBhcmludC5hZGI6CglSZW5hbWUgUkNJX0luZm8gdG8gUkNJX0xvY2F0b3IgZm9yIGJldHRlciBjb25zaXN0ZW5jeSBiZXR3ZWVuIHRoZQoJR0FSTElDIGFuZCBQb2x5T1JCIHZlcnNpb25zIG9mIHRoZSBkaXN0cmlidXRlZCBzeXN0ZW1zIGFubmV4LgoJKERTQV9JbXBsZW1lbnRhdGlvbl9OYW1lKTogVGhpcyBlbnVtZXJhdGlvbiBsaXN0cyB0aGUgcG9zc2libGUKCWltcGxlbWVudGF0aW9ucyBvZiB0aGUgUGFydGl0aW9uIENvbW11bmljYXRpb24gU3Vic3lzdGVtIGZvciB0aGUKCURpc3RyaWJ1dGVkIFN5c3RlbXMgQW5uZXggKERTQSkuIFRoZSB0aHJlZSBhdmFpbGFibGUgaW1wbGVtZW50YXRpb25zCglhcmUgdGhlIGR1bW15IHN0dWIgaW1wbGVtZW50YXRpb24gKE5vX0RTQSksIGFuZCB0d28gdmVyc2lvbnMgYmFzZWQgb24KCXR3byBkaWZmZXJlbnQgZGlzdHJpYnV0aW9uIHJ1bnRpbWUgbGlicmFyaWVzOiBHQVJMSUMgYW5kIFBvbHlPUkIuIEJvdGgKCXRoZSBHQVJMSUMgUENTIGFuZCB0aGUgUG9seU9SQiBQQ1MgYXJlIHBhcnQgb2YgdGhlIEdMQURFIGRpc3RyaWJ1dGlvbgoJdGVjaG5vbG9neS4KCUNoYW5nZSB0aGUgbGl0ZXJhbCBHTEFERV9EU0EgdG8gR0FSTElDX0RTQSB0byBhY2N1cmF0ZWx5IGRlc2NyaWJlCgl0aGF0IG9yZ2FuaXphdGlvbi4KCgkqIHJ0c2ZpbmQuYWRzOiBSZW5hbWUgUkNJX0luZm8gdG8gUkNJX0xvY2F0b3IgZm9yIGJldHRlciBjb25zaXN0ZW5jeQoJYmV0d2VlbiB0aGUgR0FSTElDIGFuZCBQb2x5T1JCIHZlcnNpb25zIG9mIHRoZSBkaXN0cmlidXRlZCBzeXN0ZW1zCglhbm5leC4KCVJlbW92ZSBSRV9VbmJvdW5kZWRfUmVjbGFpbV9Qb29sIHNpbmNlIGl0IGlzIHVudXNlZC4KCjIwMDQtMTAtMjYgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BnbmF0LmNvbT4KCgkqIGduYXQxZHJ2LmFkYjogU3VwcHJlc3MgY2FsbGluZyB0aGUgYmFjayBlbmQgd2hlbgoJRnJvbnRlbmRfTGF5b3V0X09uX1RhcmdldCBpcyB0cnVlLgoKMjAwNC0xMC0yNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZy1vc19saWIuYWRzLCBnLW9zX2xpYi5hZGIgKFNldF9FeGVjdXRhYmxlLCBTZXRfV3JpdGFibGUsCglTZXRfUmVhZF9Pbmx5KTogTmV3IHN1YnByb2dyYW1zLgoJVGhlc2UgbmV3IHJvdXRpbmVzIGFsbG93IHRoZSB1c2VyIHRvIHNldCBvciB1bnNldCB0aGUgT3duZXIgZXhlY3V0ZQoJYW5kIE93bmVyIHdyaXRlIHBlcm1pc3Npb24gZmxhZ3Mgb24gYSBmaWxlLgoKCSogbWFrZWdwci5hZGIsIG1saWIuYWRiLCBtbGliLXByai5hZGI6IFVzZQoJR05BVC5PU19MaWIuU2V0X0V4ZWN1dGFibGUgaW5zdGVhZCBvZiByb2xsaW5nIG91ciBvd24uCgoyMDA0LTEwLTI2ICBNYXR0aGV3IEdpbmdlbGwgIDxnaW5nZWxsQGduYXQuY29tPgoKCSogaS1jcHAuYWRzLCBpLWNwcC5hZGI6IENoYW5nZSBsYXlvdXQgb2YgVlRhYmxlIGZvciBuZXcgQysrIEFCSS4KCjIwMDQtMTAtMjYgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIGluaXQuYyAoX19nbmF0X2Vycm9yX2hhbmRsZXIpIFtXaW4zMl06IEluc3RlYWQgb2YgdHJ5aW5nIHRvIHJlYWQgdGhlCgltZW1vcnkgYmVmb3JlIHRoZSBmYXVsdGluZyBwYWdlIHdlIHByb3Blcmx5IHRlc3QgdGhlIHByb2Nlc3MgcmVhZAoJYWNjZXNzIGZvciB0aGlzIGFkZHJlc3MgdXNpbmcgYXBwcm9wcmlhdGUgV2luMzIgcm91dGluZS4KCShIUFVYIHNlY3Rpb25zKTogZ3VhcmQgd2l0aCAiX19ocHV4X18iIGluc3RlYWQgb2YgImhwdXgiLgoKMjAwNC0xMC0yNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBsaWIteHJlZi5hZGIgKEdlbmVyYXRlX1JlZmVyZW5jZSk6IERvbid0IGNvbXBsYWluIGFib3V0IHJlZmVyZW5jZSB0bwoJZW50cnkgcGFyYW1ldGVyIGlmIHByYWdtYSBVbnJlZmVyZW5jZWQgc2V0LCBzaW5jZSB3ZSBkbyBub3QgcHJvcGVybHkKCWhhbmRsZSB0aGUgY2FzZSBvZiBtdWx0aXBsZSBwYXJhbWV0ZXJzLgoKMjAwNC0xMC0yNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotZW52LmFkYjogKENvbnRhaW5zX0FMSV9GaWxlcyk6IE5ldyBCb29sZWFuIGZ1bmN0aW9uCgkoQWRhX09iamVjdHNfUGF0aC5BZGQpOiBGb3IgYSBsaWJyYXJ5IHByb2plY3QsIGFkZCB0byB0aGUgb2JqZWN0IHBhdGgKCXRoZSBsaWJyYXJ5IGRpcmVjdG9yeSBvbmx5IGlmIHRoZXJlIGlzIG5vIG9iamVjdCBkaXJlY3Rvcnkgb3IgaWYgdGhlCglsaWJyYXJ5IGRpcmVjdG9yeSBjb250YWlucyBBTEkgZmlsZXMuCgkoU2V0X0FkYV9QYXRocy5BZGQuUmVjdXJzaXZlX0FkZCk6IERpdHRvCgoyMDA0LTEwLTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai1ubXNjLmFkYiAoTGFuZ3VhZ2VfSW5kZXBlbmRlbnRfQ2hlY2spOiBEbyBub3QgZm9yYmlkIHZpcnR1YWwKCWV4dGVuc2lvbiBvZiBsaWJyYXJ5IHByb2plY3RzLgoKCSogcHJqLXBhcnQuYWRiOiBJZiBlbnYgdmFyIEFEQV9QUk9KRUNUX1BBVEggaXMgbm90IGRlZmluZWQsIHByb2plY3QKCXBhdGggZGVmYXVsdHMgdG8gIi46PHByZWZpeD4vbGliL2duYXQiLgoJKFBhcnNlKTogRm9yIGFuIGV4dGVuZGluZyBhbGwgcHJvamVjdCwgYWxsb3cgZGlyZWN0IGltcG9ydCBvZiBhIHByb2plY3QKCXRoYXQgaXMgdmlydHVhbGx5IGV4dGVuZGVkLgoKCSogcHJqLXByb2MuYWRiIChJbXBvcnRlZF9Pcl9FeHRlbmRlZF9Qcm9qZWN0X0Zyb20pOiBJZiBhIHByb2plY3Qgd2l0aAoJdGhlIHNwZWNpZmllZCBuYW1lIGlzIGRpcmVjdGx5IGltcG9ydGVkLCByZXR1cm4gaXRzIElELiBPdGhlcndpc2UsIGlmCglhbiBleHRlbnNpb24gb2YgdGhpcyBwcm9qZWN0IGlzIGltcG9ydGVkLCByZXR1cm4gdGhlIElEIG9mIHRoZQoJZXh0ZW5zaW9uLgoKMjAwNC0xMC0yNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzLWFyaXQ2NC5hZGI6IChMZTMpOiBOZXcgZnVuY3Rpb24sIHVzZWQgYnkgU2NhbGVkX0RpdmlkZQoJKFN1YjMpOiBOZXcgcHJvY2VkdXJlLCB1c2VkIGJ5IFNjYWxlZF9EaXZpZGUKCShTY2FsZWRfRGl2aWRlKTogU3Vic3RhbnRpYWwgcmV3cml0ZSwgYXZvaWQgZHVwbGljYXRlZCBjb2RlLCBhbmQgYWxzbwoJY29ycmVjdCBtb3JlIHRoYW4gb25lIGluc3RhbmNlIG9mIGZhaWx1cmUgdG8gcHJvcGFnYXRlIGNhcnJpZXMKCWNvcnJlY3RseS4KCShEb3VibGVfRGl2aWRlKTogSGFuZGxlIG92ZXJmbG93IGNhc2Ugb2YgbGFyZ2VzdCBuZWdhdGl2ZSBudW1iZXIKCWRpdmlkZWQgYnkgbWludXMgb25lLgoKCSogcy1hcml0NjQuYWRzIChEb3VibGVfRGl2aWRlKTogRG9jdW1lbnQgdGhhdCBvdmVyZmxvdyBjYW4gb2NjdXIgaW4KCXRoZSBjYXNlIG9mIGEgcXVvdGllbnQgdmFsdWUgb3V0IG9mIHJhbmdlLgoJRml4IGNvbW1lbnRzLgoKMjAwNC0xMC0yNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzLWJpdG9wcy5hZGIgKEJpdF9FcSk6IFJlbW92ZSByZWR1bmRhbnQgY2hlY2suCgoJKiBzLWJpdG9wcy5hZHM6IE1pbm9yIGNvbW1lbnQgdXBkYXRlcwoJQ2hhbmdlIHNvbWUgb2NjdXJyZW5jZXMgb2YgQWRkcmVzcyB0byBTeXN0ZW0uQWRkcmVzcwoKCSogcy1jYXJzaTguYWRzOiBGaXggbWlub3IgY3V0LWFuZC1wYXN0ZSBlcnJvciBpbiBjb21tZW50cwoKMjAwNC0xMC0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2F0dHIuYWRiIChSZXNvbHZlX0F0dHJpYnV0ZSwgY2FzZSAnQWNjZXNzKTogQXBwbHkgcHJvcGVyCglhY2Nlc3NpYmlsaXR5IGNoZWNrIHRvIHByZWZpeCB0aGF0IGlzIGEgcHJvdGVjdGVkIG9wZXJhdGlvbi4KCjIwMDQtMTAtMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDEwLmFkYiAoT3B0aW9uYWxfU3VidW5pdCk6IElmIGZpbGUgb2YgZXhwZWN0ZWQgc3VidW5pdCBpcwoJZW1wdHksIHBvc3QgbWVzc2FnZSBvbiBzdHViLgoKMjAwNC0xMC0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoJICAgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoSW5fTWFpbl9Db250ZXh0KTogUHJlZGljYXRlIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZQoJY3VycmVudCBpbnN0YW5jZSBhcHBlYXJzIHdpdGhpbiBhIHVuaXQgdGhhdCBpcyBkaXJlY3RseSBpbiB0aGUgY29udGV4dAoJb2YgdGhlIG1haW4gdW5pdC4KCVVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGJvZHkgb2YgdGhlIGluc3RhbmNlIHNob3VsZCBiZSBhbmFseXplZAoJaW1tZWRpYXRlbHkgYWZ0ZXIgaXRzIHNwZWMsIHRvIG1ha2UgaXRzIHN1YnByb2dyYW0gYm9kaWVzIGF2YWlsYWJsZQoJZm9yIGZyb250LWVuZCBpbmxpbmluZy4KCShBbmFseXplX0Zvcm1hbF9BcnJheV9UeXBlKTogQ2xlYW51cCBjb25kaXRpb24gdGhhdCBjaGVja3MgdGhhdCByYW5nZQoJY29uc3RyYWludCBpcyBub3QgYWxsb3dlZCBvbiB0aGUgY29tcG9uZW50IHR5cGUgKEFBUk0gMTIuNS4zKDMpKQoKMjAwNC0xMC0yNiAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fY2gxMy5hZGIgKEFuYWx5emVfQXR0cmlidXRlX0RlZmluaXRpb25fQ2xhdXNlLCBjYXNlCgknU3RvcmFnZV9Qb29sKTogZW5oYW5jZSwgZG9jdW1lbnQgJiBsaW1pdCBkZXRlY3Rpb24gb2Ygbm9uLXNoYXJhYmxlCglpbnRlcm5hbCBwb29scy4KCgkqIGltcHVuaXQuYWRiOiBNYWtlIFN5c3RlbS5Qb29sX0dsb2JhbCBhbmQgU3lzdGVtLlBvb2xfTG9jYWwgdmlzaWJsZS4KCgkqIHMtcG9vZ2xvLmFkczogQWRkIG1vcmUgZG9jdW1lbnRhdGlvbiBub3cgdGhhdCB0aGlzIHBvb2wgaXMgcHJvcGVybHkKCWRvY3VtZW50ZWQuCgoyMDA0LTEwLTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoQ29tcGxldGVfUHJpdmF0ZV9TdWJ0eXBlKTogSWYgdGhlIGZ1bGwgdmlldyBpcyBhIHRhc2sKCW9yIHByb3RlY3RlZCB0eXBlIHdpdGggZGlzY3JpbWluYW50cywgZG8gbm90IGNvbnN0cmFpbiB0aGUKCWNvcnJlc3BvbmRpbmcgcmVjb3JkIHR5cGUgaWYgdGhlIHN1YnR5cGUgZGVjbGFyYXRpb24gaGFzIG5vCglkaXNjcmltaW5hbnQgY29uc3RyYWludHMuIFRoaXMgY2FuIGJlIHRoZSBjYXNlIGluIHNvdXJjZSBjb2RlLCBvciBpbgoJdGhlIHN1YnR5cGUgZGVjbGFyYXRpb24gY3JlYXRlZCB0byByZW5hbWUgYW4gYWN0dWFsIHR5cGUgd2l0aGluIGFuCglpbnN0YW50aWF0aW9uLgoKMjAwNC0xMC0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoNi5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9Cb2R5KTogSWYgYm9keSBpcyBhIHN1YnVuaXQgZm9yIGEKCWRpZmZlcmVudCBraW5kIG9mIHN0dWIgKHBvc3NpYmx5IHdyb25nIG5hbWUgZm9yIGZpbGUpLCBkbyBub3QgY2hlY2sKCWZvciBjb25mb3JtYW5jZS4KCShVc2VzX1NlY29uZGFyeV9TdGFjayk6IE5ldyBzdWJzaWRpYXJ5IHRvIEJ1aWxkX0JvZHlfVG9fSW5saW5lLiBJZiBib2R5CglpbmNsdWRlcyBjYWxsIHRvIHNvbWUgZnVuY3Rpb24gdGhhdCByZXR1cm5zIGFuIHVuY29uc3RyYWluZWQgdHlwZSwgZG8KCW5vdCBpbmxpbmUuCgoyMDA0LTEwLTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fZWxhYi5hZGIgKENoZWNrX0VsYWJfQ2FsbCk6IERvIG5vdCBjaGVjayBhIGNhbGwgdGhhdCBkb2VzIG5vdAoJYXBwZWFyIGluIHRoZSBjb2RlIGZvciB0aGUgbWFpbiB1bml0LiBEZXBlbmRlbmNpZXMgYW1vbmcgdW5pdHMgaW4gdGhlCgljb250ZXh0IG9mIHRoZSBtYWluIHVuaXQgYXJlIGVzdGFibGlzaGVkIHdoZW4gdGhvc2Ugb3RoZXIgdW5pdHMgYXJlCgljb21waWxlZC4gT3RoZXJ3aXNlIHNwdXJpb3VzIGVsYWJvcmF0aW9uIGNvbnN0cmFpbnRzIGNhbiBnZW5lcmF0ZQoJaW5jb3JyZWN0IGVsYWJvcmF0aW9uIGNpcmN1bGFyaXRpZXMuCgoyMDA0LTEwLTI2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgkgICAgRWQgU2Nob25iZXJnICAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV91dGlsLmFkYiAoSXNfQWxpYXNlZF9WaWV3KTogRGVmZW5kIGFnYWluc3QgdGhlIGNhc2Ugd2hlcmUgdGhpcwoJc3VicHJvZ3JhbSBpcyBjYWxsZWQgd2l0aCBhIHBhcmFtZXRlciB0aGF0IGlzIG5vdCBhbiBvYmplY3QgbmFtZS4gVGhpcwoJc2l0dWF0aW9uIGFyaXNlcyBmb3Igc29tZSBjYXNlcyBvZiBpbGxlZ2FsIGNvZGUsIHdoaWNoIGlzIGRpYWdub3NlZAoJbGF0ZXIsIGFuZCBpbiB0aGlzIGNhc2UgaXQgaXMgd3JvbmcgdG8gY2FsbCBJc19BbGlhc2VkLCBhcyB0aGF0IG1pZ2h0CgljYXVzZSBhIGNvbXBpbGVyIGNyYXNoLgoJKEV4cGxhaW5fTGltaXRlZF9UeXBlKTogUmVmaW5lIHByZXZpb3VzIGZpeCB0byBpbmNsdWRlCglpbmhlcml0ZWQgY29tcG9uZW50cyBvZiBkZXJpdmVkIHR5cGVzLCB0byBwcm92aWRlIGNvbXBsZXRlIGluZm9ybWF0aW9uLgoKCSogZXhwX2NoOS5hZGIgKFNldF9Qcml2YWxzKTogU2V0IHRoZSBFa2luZCBvZiB0aGUgYWN0dWFsIG9iamVjdCB0aGF0CglpcyB0aGUgcHJpdmFsIGZvciBhIHByb3RlY3RlZCBvYmplY3QuCglJdCBpcyBuZWNlc3NhcnkgdG8gbWFyayB0aGlzIGVudGl0eSBhcyBhIHZhcmlhYmxlLCBpbiBhZGRpdGlvbiB0bwoJZmxhZ2dpbmcgaXQgYXMgQWxpYXNlZCwgYmVjYXVzZSBTZW1fVXRpbC5Jc19BbGlhc2VkX1ZpZXcgaGFzIGJlZW4KCW1vZGlmaWVkIHRvIGF2b2lkIGNoZWNraW5nIHRoZSBBbGlhc2VkIGZsYWcgb24gZW50aXRpZXMgdGhhdCBhcmUgbm90CglvYmplY3RzLiAoQ2hlY2tpbmcgdGhhdCBmbGFnIGZvciBub24tb2JqZWN0cyBpcyBlcnJvbmVvdXMgYW5kIGNvdWxkCglsZWFkIHRvIGEgY29tcGlsZXIgY3Jhc2gpLgoKMjAwNC0xMC0yNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzLWZhdGdlbi5hZGIgKFByZWQpOiBGaXggcmVkdW5kYW50IHRlc3QgZm9yIFggPiAwLjAsIHNpbmNlIGlmCglYX0ZyYWMgPSAwLjUsIHRoZW4gd2Uga25vdyB0aGF0IHRoZSBudW1iZXIgWCBtdXN0IGJlIHBvc2l0aXZlLgoJKFN1Y2MpOiBSZW1vdmUgdGhlIHNhbWUgcmVkdW5kYW50IHRlc3QsIGFuZCBhbHNvIGZpeCB0aGUgcHJpbWFyeSB0ZXN0Cgl0byB0ZXN0IGZvciBYX0ZyYWMgPSAtMC41ICh1c2VkIHRvIGJlIDAuNSkgd2hpY2ggaXMgY2xlYXJseSB3cm9uZy4KCU1pbm9yIHJlZm9ybWF0dGluZwoJKERlY29tcG9zZSk6IEFkZCBmdWxsZXIgY29tbWVudHMgdG8gc3BlYwoKMjAwNC0xMC0yNiAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogdHJhY2ViYWsuYyAoSVNfQkFEX1BUUik6IFVzZSBJc0JhZENvZGVQdHIgb24gV2luMzIgdG8gY2hlY2sgZm9yIHB0cgoJdmFsaWRpdHkgKHByb2Nlc3MgbXVzdCBoYXZlIHJlYWQgYWNjZXNzKS4gU2V0IHRvIDAgaW4gYWxsIG90aGVyIGNhc2VzLgoJKFNUT1BfRlJBTUUpOiBOb3cgY2hlY2sgZm9yIHB0ciB2YWxpZGl0eSB0byBhdm9pZCBhIHNlZ21lbnRhdGlvbgoJdmlvbGF0aW9uIG9uIFdpbjMyLgoJKFZBTElEX1NUQUNLX0ZSQU1FKTogQ2hlY2sgZm9yIHB0ciB2YWxpZGl0eSBvbiBXaW4zMiB0byBhdm9pZCBhCglzZWdtZW50YXRpb24gdmlvbGF0aW9uLgoKMjAwNC0xMC0yNiAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhY3QtZXVyb3BlLmZyPgoKCSogdHJhbnMuYyAoY2FsbF90b19nbnUpOiBGb3IgYW4gKGluLSlvdXQgcGFyYW1ldGVyIHBhc3NlZCBieSByZWZlcmVuY2UKCXdob3NlIHR5cGUgaXMgYSBjb25zdHJ1Y3RlZCBzdWJ0eXBlIG9mIGFuIGFsaWFzZWQgb2JqZWN0IHdpdGggYW4KCXVuY29uc3RyYWluZWQgbm9taW5hbCBzdWJ0eXBlLCBjb252ZXJ0IHRoZSBhY3R1YWwgdG8gdGhlIGNvbnN0cnVjdGVkCglzdWJ0eXBlIGJlZm9yZSB0YWtpbmcgaXRzIGFkZHJlc3MuCgoyMDA0LTEwLTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGEtZGlydmFsLmFkcywgYS1kaXJ2YWwuYWRiLCBhLWRpcnZhbC12bXMuYWRiLCBhLWRpcnZhbC1taW5ndy5hZGIKCShJc19QYXRoX05hbWVfQ2FzZV9TZW5zaXRpdmUpOiBOZXcgZnVuY3Rpb24KCgkqIGEtZGlyZWN0LmFkYiAoVG9fTG93ZXJfSWZfQ2FzZV9JbnNlbnNpdGl2ZSk6IE5ldyBwcm9jZWR1cmUKCShCYXNlX05hbWUsIFNpbXBsZV9OYW1lLCBDdXJyZW50X0RpcmVjdG9yeSwgQ29tcG9zZSwKCUNvbnRhaW5pbmdfRGlyZWN0b3J5LCBGdWxsX05hbWUpOiBDYWxsIFRvX0xvd2VyX0lmX0Nhc2VfSW5zZW5zaXRpdmUgb24KCXRoZSByZXN1bHQuCgoyMDA0LTEwLTI2ICBDeXJpbGxlIENvbWFyICAgIDxjb21hckBhY3QtZXVyb3BlLmZyPgoJICAgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWN0LWV1cm9wZS5mcj4KCSAgICBWaW5jZW50IENlbGllciAgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBHZW5lcmFsaXplICJmaW5kaW5nIG1lbW9yeSBwcm9ibGVtcyIgc2VjdGlvbiBpbnRvIGEKCSJtZW1vcnkgbWFuYWdlbWVudCBpc3N1ZXMiIHNlY3Rpb24gYW5kIGRvY3VtZW50IHNvbWUgb2YgdGhlIHVzZWZ1bAoJbWVtb3J5IHBvb2xzIHByb3ZpZGVkIGFzIHBhcnQgb2YgdGhlIEdOQVQgbGlicmFyeS4KCVJlbW92ZSAidmlydHVhbCIgZnJvbSBkZWNsYXJhdGlvbiBvZiBBOjptZXRob2QyIGluCgl0aGUgc2ltcGxlIGV4YW1wbGUgb2YgQWRhL0MrKyBtaXhlZCBzeXN0ZW0uCglMaWJyYXJ5IFByb2plY3RzIG1heSBiZSB2aXJ0dWFsbHkgZXh0ZW5kZWQ6IHRoZWlyIHZpcnR1YWwgZXh0ZW5zaW9ucwoJYXJlIG5vdCBMaWJyYXJ5IFByb2plY3RzLgoJQWRkZWQgc2VjdGlvbiBvbiBleHRlbmRpbmcgcHJvamVjdCBoaWVyYXJjaGllcy4KCjIwMDQtMTAtMTkgIEFhcm9uIFcuIExhRnJhbWJvaXNlICA8YWFyb25hdmF5NjJAYWFyb253bC5jb20+CgoJKiBhZGFpbnQuYyAoX19nbmF0X2dldF9saWJyYXJpZXNfZnJvbV9yZWdpc3RyeSk6IENhc3QgdmFsdWUKCXRvIExQQllURS4KCShfX2duYXRfcG9ydGFibGVfc3Bhd24pOiBSZW1vdmUgY29uc3QuCgoJKiBtaW5ndzMyLmggKE1BWFBBVEhMRU4pOiBDaGVjayBmb3IgcHJldmlvdXMgZGVmaW5pdGlvbi4KCjIwMDQtMTAtMTcgIE1hdHRoaWFzIEtsb3NlICA8ZG9rb0BkZWJpYW4ub3JnPgoKCSogZ25hdHZzbi5hZHM6IFNldCBnbmF0IGxpYnJhcnkgdmVyc2lvbiB0byA0LjAuCgoyMDA0LTEwLTA1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1saWItdGd0LmFkczogKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IE5ldyBwYXJhbWV0ZXIgT3B0aW9uc18yCgoyMDA0LTEwLTA0ICBMYXVyZW50IEdVRVJCWSA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8xNTE1NgoJKiBNYWtlZmlsZS5pbjogRGVmaW5lIGFuZCB1c2UgUkFOTElCX0ZMQUdTLgoKMjAwNC0xMC0wNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogdHJhY2ViYWsuYzogQWx3YXlzIHNldCBMT1dFU1RfQUREUiB0byAwIG9uIFdpbjMyIChhcyBkb25lIG9uIGFsbAoJb3RoZXIgeDg2IHBsYXRmb3JtcykuCgoyMDA0LTEwLTA0ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBzLXRhc3N0YS5hZGIgKFRhc2tfV3JhcHBlcik6IE1ha2UgaXQgQ29udmVudGlvbiBDLCB3aGljaCBtYWtlcyBzZW5zZQoJaW4gZ2VuZXJhbCBhbmQgdHJpZ2dlcnMgc3RhY2sgYWxpZ25tZW50IGFkanVzdG1lbnQgZm9yIHRocmVhZCBlbnRyeQoJcG9pbnRzIG9uIHRhcmdldHMgd2hlcmUgdGhpcyBpcyBuZWNlc3NhcnkuCgoyMDA0LTEwLTA0ICBCZXJuYXJkIEJhbm5lciAgPGJhbm5lckBnbmF0LmNvbT4KCglQUiBhZGEvMTM4OTcKCSogTWFrZWZpbGUuaW46IEFkZCBzZWN0aW9uIGZvciBwb3dlcnBjIGxpbnV4CglBZGQgdmFyaWFudCBpLXZ4d29yay14ODYuYWRzCgoJKiBpLXZ4d29yay14ODYuYWRzLCBzeXN0ZW0tbGludXgtcHBjLmFkczogTmV3IGZpbGVzLgoKMjAwNC0xMC0wNCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogaW5pdC5jIChfX2duYXRfaW5pdGlhbGl6ZSk6IENhbGwgYW4gQWRhIHN1YnByb2dyYW0gdG8gcGVyZm9ybSB0aGUKCXRhYmxlIHJlZ2lzdHJhdGlvbiBjYWxscyB3aGVuIG5lZWQgYmUuIEVuc3VyZXMgbm8gcmVmZXJlbmNlIHRvIHRoZSBjcnQKCWN0b3JzIHN5bWJvbCBhcmUgaXNzdWVkIGluIHRoZSBTSkxKIGNhc2UsIHdoaWNoIGF2b2lkcyBwb3NzaWJsZQoJdW5kZWZpbmVkIHN5bWJvbCBlcnJvcnMgaW4gdGhlIGNhc2Ugb2YgbW9kdWxlcyB0byBiZSBzdGF0aWNhbGx5IGxpbmtlZAoJd2l0aCB0aGUga2VybmVsLgoKMjAwNC0xMC0wNCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogc2VtX2NoNC5hZGIgKFRyeV9PYmplY3RfT3BlcmF0aW9uKTogUmVmb3JtYXQgdGhlIGNvZGUgdG8gZXhwYW5kCglpbi1saW5lIHRoZSBjb2RlIGNvcnJlc3BvbmRpbmcgdG8gc3VicHJvZ3JhbSBBbmFseXplX0FjdHVhbHMuIEluCglhZGRpdGlvbiwgYW5hbHl6ZSB0aGUgYWN0dWFscyBvbmx5IGluIGNhc2Ugb2Ygc3VicHJvZ3JhbSBjYWxsLgoKMjAwNC0xMC0wNCAgRWQgRmFsaXMgIDxmYWxpc0BnbmF0LmNvbT4KCgkqIHMtdnh3b3JrLXg4Ni5hZHM6IChGUF9DT05URVhUKTogRGVmaW5lZCB0byBiZSBjb3JyZWN0IHNpemUKCjIwMDQtMTAtMDQgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBnLWRpcm9wZS5hZHMgKEJhc2VfTmFtZSk6IENsYXJpZnkgdGhlIG1lYW5pbmcgb2YgdGhlIFN1ZmZpeCBwYXJhbWV0ZXIKCWluIHRoZSBkb2N1bWVudGF0aW9uLgoKMjAwNC0xMC0wNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fY2g1LmFkYiAoVW5ibG9ja2VkX0V4aXRfQ291bnQpOiBOb3cgdXNlZCBmb3IgYmxvY2tzIGFzIHdlbGwgYXMKCUlGIGFuZCBDQVNFLgoJKEFuYWx5emVfQmxvY2tfU3RhdGVtZW50KTogQWRkIGNpcmN1aXRyeSB0byBkZXRlY3QgZm9sbG93aW5nIGRlYWQgY29kZQoJKENoZWNrX1VucmVhY2hhYmxlX0NvZGUpOiBIYW5kbGUgY2FzZSBvZiBibG9jayBleGl0CgoyMDA0LTEwLTA0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGctc3BpcGF0LmFkYjogKFhNYXRjaCk6IEF2b2lkIHdhcm5pbmcgZm9yIExvZ2ljX0Vycm9yIGNhbGwKCShYTWF0Y2hEKTogQXZvaWQgd2FybmluZyBmb3IgTG9naWNfRXJyb3IgY2FsbAoKMjAwNC0xMC0wNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBleHBfY2g0LmFkYiAoSXNfUHJvY2VkdXJlX0FjdHVhbCk6IENvcnJlY3Qgc28gdGhhdCB0aGlzIGRvZXMgbm90Cgljb25zaWRlciBleHByZXNzaW9ucyBidXJpZWQgd2l0aGluIGEgcHJvY2VkdXJlIGFjdHVhbCB0byBiZSBhbiBhY3R1YWwuCglUaGlzIGNhdXNlZCBzb21lIGJsb3d1cHMgd2l0aCB1c2VzIG9mIHBhY2tlZCBzbGljZXMgd2l0aGluIGEgcHJvY2VkdXJlCglhY3R1YWwuCgoyMDA0LTEwLTA0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGV4cF9jaDMuYWRiIChOZWVkc19TaW1wbGVfSW5pdGlhbGl6YXRpb24pOiBNb2R1bGFyIHBhY2tlZCBhcnJheXMgbm8KCWxvbmdlciBuZWVkIHRvIGJlIGluaXRpYWxpemVkIHRvIHplcm8uCgkoR2V0X1NpbXBsZV9Jbml0X1ZhbCk6IE1vZHVsYXIgcGFja2VkIGFycmF5cyBubyBsb25nZXIgbmVlZCB0byBiZQoJaW5pdGlhbGl6ZWQgdG8gemVyby4KCgkqIGNoZWNrcy5hZGIgKEV4cHJfS25vd25fVmFsaWQpOiBQYWNrZWQgYXJyYXlzIGFyZSBub3cgYWx3YXlzCgljb25zaWRlcmVkIHZhbGlkLCBldmVuIGlmIHRoZSByZXByZXNlbnRhdGlvbiBpcyBtb2R1bGFyLiBUaGF0J3MgY29ycmVjdAoJbm93IHRoYXQgd2Ugbm8gbG9uZ2VyIGluaXRpYWxpemUgcGFja2VkIG1vZHVsYXIgYXJyYXlzIHRvIHplcm8uCgoJKiBleHBfZGJ1Zy5hZHM6IENsYXJpZnkgZG9jdW1lbnRhdGlvbiBvbiBoYW5kbGluZyBvZiBQQUQgYW5kIEpNCglzdWZmaXhlcy4gVGhlc2UgYXJlIG5vdyBkb2N1bWVudGVkIGFzIHRoZSBvbmx5IGNhc2VzIGluIHdoaWNoIHRoZQoJZGVidWdnZXIgaWdub3JlcyBvdXRlciByZWNvcmRzLgoJUHJldmlvdXNseSwgdGhlIHNwZWMgYWxsb3dlZCBhcmJpdHJhcnkgc3VmZml4ZXMgZm9yIHRoaXMgcHVycG9zZS4KCUNoYW5nZSBuYW1lIG9mIExKTSB0byBKTSBmb3IgcGFja2VkIGFycmF5IHBhZCByZWNvcmRzCglDcmVhdGUgc2VwYXJhdGUgc2VjdGlvbiBvbiBwYWNrZWQgYXJyYXkgaGFuZGxpbmcsIGFuZCBhZGQgYSB3aG9sZSBuZXcKCXNldCBvZiBjb21tZW50cyB0byB0aGlzIHNlY3Rpb24gZGVzY3JpYmluZyB0aGUgc2l0dWF0aW9uIHdpdGggcGFja2VkCgltb2R1bGFyIHR5cGVzIGFuZCBqdXN0aWZpY2F0aW9uIHJlcXVpcmVtZW50cyBkZXBlbmRpbmcgb24gZW5kaWFubmVzcy4KCjIwMDQtMTAtMDQgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogYS1leGNlcHQuYWRiOiBBZGQgYSBjb21tZW50IGZvciBsYXN0IGNoYW5nZQoKCSogZWluZm8uYWRzOiBNaW5vciBzcGVsbGluZyBjb3JyZWN0aW9uIGluIGNvbW1lbnQKCgkqIGV4cF9wYWtkLmFkYiwgZ25hdGRsbC5hZGIsIHByai1hdHRyLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzZW1fY2gxMS5hZGI6IEZpeCBhIGNhc2Ugb2YgdXNpbmcgfCBpbnN0ZWFkIG9mIFwgZm9yIGNvbnRpbnVhdGlvbgoJbWVzc2FnZXMuCgoJKiBzZW1fdXRpbC5hZHM6IE1pbm9yIGNvbW1lbnQgdXBkYXRlCgoyMDA0LTEwLTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2g2LmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtX0JvZHkpOiBEbyBub3QgdHJlYXQgSW5saW5lIGFzCglJbmxpbmVfQWx3YXlzIHdoZW4gaW4gQ29uZmlndXJhYmxlX1J1bl9UaW1lIG1vZGUuCgoJKiBzZW1fcHJhZy5hZGIgKFByb2Nlc3NfQ29udmVudGlvbik6IElmIGVudGl0eSBpcyBhbiBpbmhlcml0ZWQKCXN1YnByb2dyYW0sIGFwcGx5IGNvbnZlbnRpb24gdG8gcGFyZW50IHN1YnByb2dyYW0gaWYgaW4gc2FtZSBzY29wZS4KCShBbmFseXplX1ByYWdtYSwgY2FzZSBJbmxpbmUpOiBEbyBub3QgdHJlYXQgSW5saW5lIGFzIElubGluZV9BbHdheXMKCXdoZW4gaW4gQ29uZmlndXJhYmxlX1J1bl9UaW1lIG1vZGUuCgoyMDA0LTEwLTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IFNldCBGaXJzdC9MYXN0IGVudGl0eSBvZgoJY2xhc3Nfd2lkZSB0eXBlIGFmdGVyIGNvbXBvbmVudCBsaXN0IGhhcyBiZWVuIGluaGVyaXRlZC4KCjIwMDQtMTAtMDQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoQ2hlY2tfR2VuZXJpY19BY3R1YWxzKTogTmV3IHByZWRpY2F0ZQoJRGVub3Rlc19QcmV2aW91c19BY3R1YWwsIHRvIGhhbmRsZSBwcm9wZXJseSB0aGUgY2FzZSBvZiBhIHByaXZhdGUKCWFjdHVhbCB0aGF0IGlzIGFsc28gdGhlIGNvbXBvbmVudCB0eXBlIG9mIGEgc3Vic2VxdWVudCBhcnJheSBhY3R1YWwuCglUaGUgdmlzaWJpbGl0eSBzdGF0dXMgb2YgdGhlIGZpcnN0IGFjdHVhbCBpcyBub3QgYWZmZWN0ZWQgd2hlbiB0aGUKCXNlY29uZCBpcyBpbnN0YWxsZWQuCgkoUHJvY2Vzc19OZXN0ZWRfRm9ybWFsKTogU3Vic2lkaWFyeSBvZiBJbnN0YW50aWF0ZV9Gb3JtYWxfUGFja2FnZSwgdG8KCW1ha2UgZnVsbHkgcmVjdXJzaXZlIHRoZSB0cmVhdG1lbnQgb2YgZm9ybWFscyBvZiBwYWNrYWdlcyBkZWNsYXJlZAoJd2l0aCBhIGJveC4KCShSZXN0b3JlX05lc3RlZF9Gb3JtYWwpOiBTdWJzaWRpYXJ5IG9mIFJlc3RvcmVfUHJpdmF0ZV9WaWV3cywgdG8gdW5kbwoJdGhlIGFib3ZlIG9uIGV4aXQgZnJvbSBhbiBpbnN0YW50aWF0aW9uLgoJKERlbm90ZXNfRm9ybWFsX1BhY2thZ2UpOiBXaGVuIGNhbGxlZCBmcm9tIFJlc3RvcmVfUHJpdmF0ZV9WaWV3cywgaWdub3JlCgljdXJyZW50IGluc3RhbnRpYXRpb24gd2hpY2ggaXMgbm93IGNvbXBsZXRlLgoJKEFuYWx5emVfUGFja2FnZV9JbnN0YW50aWF0aW9uKTogTm8gaW5zdGFudGlhdGVkIGJvZHkgaXMgbmVlZGVkIGlmIHRoZQoJbWFpbiB1bml0IGlzIGdlbmVyaWMuIEVmZmljaWVudCwgYW5kIGF2b2lkIGFub21hbGllcyB3aGVuIGEgaW5zdGFuY2UKCWFwcGVhcnMgaW4gYSBwYWNrYWdlIGFjY2Vzc2VkIHRocm91Z2ggcnRzZmluZC4KCjIwMDQtMTAtMDQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfTl9GdW5jdGlvbl9DYWxsKTogSWYgc3RhY2sgY2hlY2tpbmcgaXMgZW5hYmxlZCwKCWRvIG5vdCBnZW5lcmF0ZSBhIGRlY2xhcmF0aW9uIGZvciBhIHRlbXBvcmFyeSBpZiB0aGUgY2FsbCBpcyBwYXJ0IG9mIGEKCWxpYnJhcnktbGV2ZWwgaW5zdGFudGlhdGlvbi4KCjIwMDQtMTAtMDQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV91dGlsLmFkYiAoRXhwbGFpbl9MaW1pdGVkX1R5cGUpOiBJZ25vcmUgaW50ZXJuYWwgY29tcG9uZW50cyB3aGVuCglzZWFyY2hpbmcgZm9yIGEgbGltaXRlZCBjb21wb25lbnQgdG8gZmxhZy4KCgkqIGV4cF9hdHRyLmFkYiAoRnJlZXplX1N0cmVhbV9TdWJwcm9ncmFtKTogU3Vic2lkaWFyeSBwcm9jZWR1cmUgdG8KCWV4cGFuc2lvbiBvZiBJbnB1dCwgdG8gYWNjb3VudCBmb3IgdGhlIGZhY3QgdGhhdCB0aGUgaW1wbGljaXQgY2FsbAoJZ2VuZXJhdGVkIGJ5IHRoZSBhdHRyaWJ1dGUgcmVmZXJlbmNlIG11c3QgZnJlZXplIHRoZSB1c2VyLWRlZmluZWQKCXN0cmVhbSBzdWJwcm9ncmFtLiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgdG8gJ0lucHV0LCBiZWNhdXNlIGl0IGNhbgoJYXBwZWFyIGluIGFuIG9iamVjdCBkZWNsYXJhdGlvbiwgcHJpb3IgdG8gdGhlIGJvZHkgb2YgdGhlIHN1YnByb2dyYW0uCgoJKiBzZW1fY2gxMy5hZGIgKFJlcF9JdGVtX1Rvb19MYXRlKTogTWFrZSB0aGUgZXJyb3Igbm9uLXNlcmlvdXMsIHNvIHRoYXQKCWV4cGFuc2lvbiBjYW4gcHJvY2VlZCBhbmQgZnVydGhlciBlcnJvcnMgdW5jb3ZlcmVkLgoJKE1pbm9yIGNsZWFuIHVwKTogRml4IGNhc2VzIG9mIHVzaW5nIHwgaW5zdGVhZCBvZiBcIGZvciBjb250aW51YXRpb24KCW1lc3NhZ2VzLgoKMjAwNC0xMC0wNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGN1aW50cC5jLCBkZWNsLmMsIHV0aWxzMi5jOiBVc2UgZ2NjX2Fzc2VydCBhbmQgZ2NjX3VucmVhY2hhYmxlLgoKCSogdHJhbnMuYyAoYXNzb2NfdG9fY29uc3RydWN0b3IpOiBGaXggdW51c2VkIHZhciB3YXJuaW5nIGlmIG5vIGNoZWNraW5nLgoJKGduYXRfZ2ltcGxpZnlfZXhwciwgY2FzZSBBRERSX0VYUFIpOiBGaXggZXJyb3IgaW4gbGFzdCBjaGFuZ2UuCglVc2UgZ2NjX2Fzc2VydCBhbmQgZ2NjX3VucmVhY2hhYmxlLgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHksIGNhc2Ugb2JqZWN0KTogQ2hlY2sgYW5kIHByb2Nlc3MgYQoJc3BlY2lmaWVkIGFsaWdubWVudCBiZWZvcmUgdmFsaWRhdGluZyBzaXplLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfTW9kdWxhcl9JbnRlZ2VyX1N1YnR5cGU+OiBDcmVhdGUgYQoJc3RyaXBwZWQtZG93biBkZWNsYXJhdGlvbiBmb3IgdGhlIHR5cGUgb2YgdGhlIGlubmVyIGZpZWxkIHdoZW4gbWFraW5nCglhIEpNIHR5cGUuCgoJKiB1dGlscy5jIChmaW5pc2hfcmVjb3JkX3R5cGUpOiBEbyBub3QgY29tcHV0ZSB0aGUgc2l6ZSBpbiB1bml0cwoJaW5jcmVtZW50YWxseS4gSW5zdGVhZCBjb21wdXRlIGl0IG9uY2UgZm9yIHRoZSByZXAgY2xhdXNlIGNhc2UuCglVc2UgZ2NjX2Fzc2VydCBhbmQgZ2NjX3VucmVhY2hhYmxlLgoKMjAwNC0xMC0wNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBhLWRpcnZhbC1taW5ndy5hZGIgKEludmFsaWRfQ2hhcmFjdGVyKTogQWRkICdcJyBhcyBpbnZhbGlkIGNoYXJhY3RlcgoJaW4gZmlsZSBuYW1lLgoJKElzX1ZhbGlkX1BhdGhfTmFtZSk6IFRha2UgJy8nIGFzIGEgZGlyZWN0b3J5IHNlcGFyYXRvci4KCjIwMDQtMTAtMDQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogcHJqLXBhcnQuYWRiIChQYXJzZV9TaW5nbGVfUHJvamVjdCk6IENhbGwgSXNfRXh0ZW5kaW5nX0FsbAoJKEV4dGVuZGVkX1Byb2plY3QpIG9ubHkgaWYgRXh0ZW5kZWRfUHJvamVjdCBpcyBkZWZpbmVkLCB0byBhdm9pZAoJYXNzZXJ0aW9uIGVycm9yLgoJKFBvc3RfUGFyc2VfQ29udGV4dF9DbGF1c2UpOiBBbHdheXMgY2FsbCBTZXRfUGF0aF9OYW1lX09mIHdpdGggYQoJcmVzb2x2ZWQgcGF0aC4KCShQYXJzZV9TaW5nbGVfUHJvamVjdCk6IERpdHRvLgoKCSogcHJqLWVudi5hZGIgKFNldF9BZGFfUGF0aHMuQWRkLlJlY3Vyc2l2ZV9BZGQpOiBEbyBub3QgY2FsbAoJQWRkX1RvX1Byb2plY3RfUGF0aCBmb3IgdmlydHVhbCBwcm9qZWN0cy4KCjIwMDQtMTAtMDQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWxpYi10Z3QtdHJ1NjQuYWRiLCBtbGliLXRndC1haXguYWRiLCBtbGliLXRndC1pcml4LmFkYiwKCW1saWItdGd0LWhwdXguYWRiLCBtbGliLXRndC1saW51eC5hZGIsIG1saWItdGd0LXNvbGFyaXMuYWRiLAoJbWxpYi10Z3Qtdm1zLWFscGhhLmFkYiwgbWxpYi10Z3Qtdm1zLWlhNjQuYWRiLCBtbGliLXRndC1taW5ndy5hZGIsCgltbGliLXRndC12eHdvcmtzLmFkYiwgbWxpYi10Z3QuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBOZXcKCXBhcmFtZXRlciBPcHRpb25zXzIuCgoJKiBtbGliLXByai5hZHMsIG1saWItcHJqLmFkYiAoQnVpbGRfTGlicmFyeSk6IENhbGwKCUJ1aWxkX0R5bmFtaWNfTGlicmFyeSB3aXRoIGFuIGVtcHR5IE9wdGlvbnNfMi4KCgkqIG1saWItdXRsLmFkcywgbWxpYi11dGwuYWRiIChHY2MpOiBQYXJhbWV0ZXIgT3B0aW9uc18yIGhhcyBubwoJZGVmYXVsdCBhbnltb3JlLgoKCSogbWFrZWdwci5hZGIgKEdldF9JbXBvcnRlZF9EaXJlY3Rvcmllcy5hZGQpOiBSZW1vdmUgdHJhaWxpbmcKCWRpcmVjdG9yeSBzZXBhcmF0b3IsIGlmIGFueS4KCShHcHJtYWtlKTogRG8gbm90IGFsbG93IG1haW5zIG9uIHRoZSBjb21tYW5kIGxpbmUgZm9yIGxpYnJhcnkgcHJvamVjdHMuCglEbyBub3QgYXR0ZW1wdCB0byBsaW5rIHdoZW4gdGhlIHByb2plY3QgaXMgYSBsaWJyYXJ5IHByb2plY3QuCgkoTGlicmFyeV9PcHRzKTogTmV3IHRhYmxlIHRvIHN0b3JlIExpYnJhcnlfT3B0aW9ucy4KCShCdWlsZF9MaWJyYXJ5KTogSWYgTGlicmFyeV9PcHRpb25zIGlzIHNwZWNpZmllZCwgcGFzcyB0aGVzZSBvcHRpb25zCgl3aGVuIGJ1aWxkaW5nIGEgc2hhcmVkIGxpYnJhcnkuCgoyMDA0LTEwLTA0ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBzLXRwb3Nlbi5hZGIgKFNlcnZpY2VfRW50cnkpOiBUaGUgb2JqZWN0IG11c3QgYmUgYWx3YXlzIHVubG9ja2VkIGF0Cgl0aGUgZW5kIG9mIHRoaXMgcHJvY2VkdXJlIG5vdyB0aGF0IHRoZSB1bmxvY2sgb3BlcmF0aW9uIHdhcyBpbnNlcnRlZAoJYnkgdGhlIGV4cGFuZGVyLgoKMjAwNC0xMC0wNCAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogdGFyZ3Bhcm0uYWRzLCB0YXJncGFybS5hZGIgKFRhcmdwYXJtX1RhZ3MpOiBBZGQgUEFTIHZhbHVlCgljb3JyZXNwb25kaW5nIHRvIHRoZSBQcmVhbGxvY2F0ZWRfU3RhY2tzIGZsYWdzIGluIFN5c3RlbS4KCShHZXRfVGFyZ2V0X1BhcmFtZXRlcnMpOiBJbmNsdWRpbmcgdGhlIHByb2Nlc3NpbmcgZm9yCglQcmVhbGxvY2F0ZWRfU3RhY2tzLgoKCSogc3lzdGVtLmFkcywgc3lzdGVtLXZ4d29ya3MteDg2LmFkcywgc3lzdGVtLWRhcndpbi1wcGMuYWRzLAoJc3lzdGVtLXZtc182NC5hZHMsIHN5c3RlbS11bml4d2FyZS5hZHMsIHN5c3RlbS1saW51eC1pYTY0LmFkcywKCXN5c3RlbS1mcmVlYnNkLXg4Ni5hZHMsIHN5c3RlbS1seW54b3MtcHBjLmFkcywgc3lzdGVtLWx5bnhvcy14ODYuYWRzLAoJc3lzdGVtLWxpbnV4LXg4Nl82NC5hZHMsIHN5c3RlbS10cnU2NC5hZHMsIHN5c3RlbS1haXguYWRzLAoJc3lzdGVtLXZ4d29ya3Mtc3BhcmN2OS5hZHMsIHN5c3RlbS12eHdvcmtzLXhzY2FsZS5hZHMsCglzeXN0ZW0tc29sYXJpcy14ODYuYWRzLCBzeXN0ZW0taXJpeC1vMzIuYWRzLCBzeXN0ZW0taXJpeC1uMzIuYWRzLAoJc3lzdGVtLWhwdXguYWRzLCBzeXN0ZW0tdnh3b3Jrcy1tNjhrLmFkcywgc3lzdGVtLWxpbnV4LXg4Ni5hZHMsCglzeXN0ZW0tdnh3b3Jrcy1taXBzLmFkcywgc3lzdGVtLW9zMi5hZHMsIHN5c3RlbS1pbnRlcml4LmFkcywKCXN5c3RlbS1zb2xhcmlzLXNwYXJjLmFkcywgc3lzdGVtLXNvbGFyaXMtc3BhcmN2OS5hZHMsIHN5c3RlbS12bXMuYWRzLAoJc3lzdGVtLW1pbmd3LmFkcywgc3lzdGVtLXZtcy16Y3guYWRzLCBzeXN0ZW0tdnh3b3Jrcy1wcGMuYWRzLAoJc3lzdGVtLXZ4d29ya3MtYWxwaGEuYWRzOiBBZGQgdGhlIGZsYWcgUHJlYWxsb2NhdGVkX1N0YWNrcywgdGhhdCBpcwoJdXNlZCB0byBzaWduYWwgd2hldGhlciB0aGUgY29tcGlsZXIgY3JlYXRlcyB0aGUgcmVxdWlyZWQgc3RhY2tzIGFuZAoJZGVzY3JpcHRvcnMgZm9yIHRoZSBkaWZmZXJlbnQgdGFza3MgKHdoZW4gVHJ1ZSkgb3IgaXQgaXMgZG9uZSBieSB0aGUKCXVuZGVybHlpbmcgb3BlcmF0aW5nIHN5c3RlbSBhdCBydW4gdGltZSAod2hlbiBGYWxzZSkuCglJdCBpcyBpbml0aWFsbHkgc2V0IHRvIEZhbHNlIGluIGFsbCB0YXJnZXRzLgoKCSogZXhwX2NoOS5hZGIgKEV4cGFuZF9OX1Rhc2tfVHlwZV9EZWNsYXJhdGlvbik6IENyZWF0ZSB0aGUgdGFzayBzdGFjawoJaWYgaXQgaXMgc3VwcG9ydGVkIGJ5IHRoZSB0YXJnZXQuCgkoTWFrZV9UYXNrX0NyZWF0ZV9DYWxsKTogUGFzcyB0aGUgc3RhY2sgYWRkcmVzcyBpZiBpdCBoYXMgYmVlbgoJcHJldmlvdXNseSBjcmVhdGVkLiBPdGhlcndpc2UgcGFzcyBhIE51bGxfQWRkcmVzcy4KCgkqIHNuYW1lcy5hZGI6IEFkZCBfc3RhY2suCgoJKiBzbmFtZXMuYWRzOiBBZGQgTmFtZV91U3RhY2suIFJlcXVpcmVkIHRvIGFsbG93IHRoZSBleHBhbmRlciB0bwoJc3RhdGljYWxseSBhbGxvY2F0ZWQgdGFzayBzdGFja3MuCgoJKiBzLXRhcmVzdC5hZHMsIHMtdGFyZXN0LmFkYiAoQ3JlYXRlX1Jlc3RyaWN0ZWRfVGFzayk6IEFkZAoJU3RhY2tfQWRkcmVzcyBhcmd1bWVudC4KCUNoZWNrIHRoYXQgaXRzIHZhbHVlIGlzIGVxdWFsIHRvIE51bGxfQWRkcmVzcyBiZWNhdXNlIHRoaXMgdGFyZ2V0IGRvZXMKCW5vdCBzdXBwb3J0IHRoZSBzdGF0aWMgc3RhY2sgYWxsb2NhdGlvbi4KCjIwMDQtMTAtMDQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHVzYWdlLmFkYjogQ2hhbmdlICJwcmFnbWEgaW5saW5lIiB0byAicHJhZ21hIElubGluZSIgaW4gaW5mb3JtYXRpb24KCWFuZCBlcnJvciBtZXNzYWdlcwoKMjAwNC0xMC0wNCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZXhwX2Rpc3QuYWRiOiBTcGxpdCBkZWNsYXJhdGlvbiBvZiBhc3luY2hyb25vdXMgZmxhZyBvdXQgb2YKCUFkZF9SQUNXX1JlYWRfQXR0cmlidXRlLgoJTWlub3IgcmVmb3JtYXR0aW5nIGZvciBiZXR0ZXIgYWxpZ25tZW50IHdpdGggUG9seU9SQiB2ZXJzaW9uLgoJU3RvcmUgdGhlIGVudGl0eSBmb3IgdGhlIGFzeW5jaHJvbm91cyBmbGFnIG9mIGFuIFJBQ1csIHJhdGhlciB0aGFuIHRoZQoJZXhwcmVzc2lvbiwgaW4gdGhlIGFzeW5jaHJvbm91cyBmbGFncyB0YWJsZS4gVGhpcyB3aWxsIGFsbG93IHRoaXMgZmxhZwoJdG8gYmUgdXNlZCBpbiBvdGhlciBzdWJwcm9ncmFtcyBiZXNpZGUgQWRkX1JBQ1dfUmVhZF9BdHRyaWJ1dGUuCgoyMDA0LTEwLTA0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBnLXNvY2tldC5hZHMsIGctc29ja2V0LmFkYiwgZy1zb2N0aGkuYWRiLCBzb2NrZXQuYywKCWctc29jY29uLWFpeC5hZHMsIGctc29jY29uLWlyaXguYWRzLCBnLXNvY2Nvbi1ocHV4LmFkcywKCWctc29jY29uLWludGVyaXguYWRzLCBnLXNvY2Nvbi1zb2xhcmlzLmFkcywgZy1zb2Njb24tdm1zLmFkYiwKCWctc29jY29uLW1pbmd3LmFkcywgZy1zb2Njb24tdnh3b3Jrcy5hZHMsIGctc29jY29uLWZyZWVic2QuYWRzLAoJZy1zb2Njb24uYWRzLCBnLXNvY2Nvbi11bml4d2FyZS5hZHMsIGctc29jY29uLXRydTY0LmFkczogIEFkZCBuZXcKCXNvY2tldHMgY29uc3RhbnQgTVNHX05PU0lHTkFMIChMaW51eC1zcGVjaWZpYykuCglBZGQgbmV3IHNvY2tldHMgY29uc3RhbnQgTVNHX0ZvcmNlZF9GbGFncywgbGlzdCBvZiBmbGFncyB0byBiZSBzZXQgb24KCWFsbCBTZW5kIG9wZXJhdGlvbnMuCglGb3IgTGludXgsIHNldCBNU0dfTk9TSUdOQUwgb24gYWxsIHNlbmQgb3BlcmF0aW9ucyB0byBwcmV2ZW50IHRoZW0KCWZyb20gdHJpZ2VycmluZyBTSUdQSVBFLgoJUmVuYW1lIGNvbXBvbmVudHMgdG8gYXZvaWQgY2xhc2ggd2l0aCBBZGEgMjAwNSBwb3NzaWJsZSByZXNlcnZlZAoJd29yZCAnaW50ZXJmYWNlJy4KCShDaGVja19TZWxlY3Rvcik6IFdoZW4gdGhlIHNlbGVjdCBzeXN0ZW0gY2FsbCByZXR1cm5zIHdpdGggYW4gZXJyb3IKCWNvbmRpdGlvbiwgcHJvcGFnYXRlIFNvY2tldF9FcnJvciB0byB0aGUgY2FsbGVyLgoKMjAwNC0xMC0wMSAgSmFuIEh1Ymlja2EgIDxqaEBzdXNlLmN6PgoKCSogbWlzYy5jIChnbmF0X2V4cGFuZF9ib2R5KTogVXBkYXRlIGNhbGwgb2YgdHJlZV9yZXN0X29mX2NvbXBpbGF0aW9uLgoKMjAwNC0wOS0yMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJUFIgYWRhLzE3NTQwCgkqIHNlbV9wcmFnLmFkYiAoUHJvY2Vzc19JbXBvcnRfT3JfSW50ZXJmYWNlKTogRG9uJ3Qgc2V0IElzX1B1YmxpYyBoZXJlLAoJaW5zdGVhZCBkbyB0aGlzIGF0IGZyZWV6ZSB0aW1lICh3ZSB3b24ndCBkbyBpdCBpZiB0aGVyZSBpcyBhbiBhZGRyZXNzCgljbGF1c2UpLgoJQ2hhbmdlICJwcmFnbWEgaW5saW5lIiB0byAicHJhZ21hIElubGluZSIgaW4gaW5mb3JtYXRpb24gYW5kIGVycm9yCgltZXNzYWdlcy4KCU1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIGZyZWV6ZS5hZGIgKENoZWNrX0FkZHJlc3NfQ2xhdXNlKTogUmVtb3ZlIHByZXZpb3VzIGNoYW5nZSwgbm90IHRoZQoJcmlnaHQgd2F5IG9mIGRvaW5nIHRoaW5ncyBhZnRlciBhbGwuCgkoRnJlZXplX0VudGl0eSk6IEZvciBvYmplY3QsIHNldCBJc19QdWJsaWMgZm9yIGltcG9ydGVkIGVudGl0aWVzCgl1bmxlc3MgdGhlcmUgaXMgYW4gYWRkcmVzcyBjbGF1c2UgcHJlc2VudC4KCjIwMDQtMDktMjEgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KSA8RV9HZW5lcmFsX0FjY2Vzc19UeXBlPjogQ2hlY2sgZm9yIGEKCWR1bW15IGRlc2lnbmF0ZWQgdHlwZSB2aWEgVFlQRV9NT0RFIGluc3RlYWQgb2YgQ09NUExFVEVfVFlQRV9QLiBUaGlzCgllbnN1cmVzIHByb3BlciBoYW5kbGluZyBvZiB0eXBlcyB3aXRoIHJlcCBjbGF1c2VzLCB3aGljaCBtaWdodCBoYXZlCgl0aGVpciBUWVBFX1NJWkUgc2V0IGFscmVhZHkuCgoyMDA0LTA5LTIxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfdHlwZSwgY2FzZSBFX01vZHVsYXJfSW50ZWdlcl9UeXBlKTogV3JhcCBtb2R1bGFyCglwYWNrZWQgYXJyYXkgdHlwZXMgaW4gYm90aCBsaXR0bGUtIGFuZCBiaWctZW5kaWFuIGNhc2VzLiBUaGlzIGNoYW5nZQoJZW5zdXJlcyB0aGF0IHdlIG5vIGxvbmdlciBjb3VudCBvbiB0aGUgdW51c2VkIGJpdHMgYmVpbmcgaW5pdGlhbGl6ZWQKCWZvciBzdWNoIHR5cGVzIChhbmQgaW4gcGFydGljdWxhciBlbnN1cmVzIHRoYXQgZXF1YWxpdHkgdGVzdGluZyB3aWxsCglvbmx5IHJlYWQgdGhlIHJlbGV2YW50IGJpdHMpLgoJQ2hhbmdlIG5hbWUgVFlQRV9MRUZUX0pVU1RJRklFRF9NT0RVTEFSX1AgdG8gVFlQRV9KVVNUSUZJRURfTU9EVUxBUl9QCglUaGVzZSBjaGFuZ2VzIG1lYW4gdGhhdCB3ZSBubyBsb25nZXIgbmVlZCB0byBpbml0aWFsaXplIHNtYWxsIHBhY2tlZAoJYXJyYXlzLgoJKGduYXRfdG9fZ251X2VudGl0eSkgPEVfUmVjb3JkX1N1YnR5cGU+OiBBcHBseSB0aGUgc2FtZQoJb3B0aW1pemF0aW9uIHRvIGFuIExKTSBmaWVsZCBhcyB0byBpdHMgcGFyZW50IGZpZWxkLgoKCSogYWRhLXRyZWUuaCwgdHJhbnMuYywgdXRpbHMuYywgdXRpbHMyLmM6CglDaGFuZ2UgbmFtZSBUWVBFX0xFRlRfSlVTVElGSUVEX01PRFVMQVJfUCB0byBUWVBFX0pVU1RJRklFRF9NT0RVTEFSX1AKCjIwMDQtMDktMjAgIEphbiBIdWJpY2thICA8amhAc3VzZS5jej4KCgkqIHV0aWxzLmMgKGduYXRfZmluYWxpemUpOiBSZW1vdmUuCgkoZW5kX3N1YnByb2dfYm9keSk6IERpcmVjdGx5IGNhbGwgY2dyYXBoX2ZpbmFsaXplX2Z1bmN0aW9uOwoJZG8gbm90IGxvd2VyIHRoZSBuZXN0ZWQgZnVuY3Rpb25zLgoKMjAwNC0wOS0yMCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJUFIgYWRhLzE3NTQwCgkqIGZyZWV6ZS5hZGIgKENoZWNrX0FkZHJlc3NfQ2xhdXNlKTogUmVzZXQgSXNfSW1wb3J0ZWQgYW5kIElzX1B1YmxpYwoJaWYgYW4gYWRkcmVzcyBjbGF1c2UgaXMgcHJlc2VudCwgc2luY2UgdGhhdCBtZWFucyB0aGF0IHRoZSBJbXBvcnQKCXNob3VsZCBiZSBpZ25vcmVkLgoKMjAwNC0wOS0yMCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiA1dHN5c3RlbS5hZHM6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoKMjAwNC0wOS0xNyAgSmVmZnJleSBELiBPbGRoYW0gIDxvbGRoYW1AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYWRhLXRyZWUuZGVmOiBVc2UgdHJlZV9jb2RlX2NsYXNzIGVudW1lcmF0aW9uIGNvbnN0YW50cwoJaW5zdGVhZCBvZiBjb2RlIGxldHRlcnMuCgkqIGFkYS10cmVlLmgsIGRlY2wuYywgbWlzYy5jLCB0cmFucy5jLCB1dGlscy5jLCB1dGlsczIuYzoKCVVwZGF0ZSBmb3IgbmV3IHRyZWUtY2xhc3MgZW51bWVyYXRpb24gY29uc3RhbnRzLgoKMjAwNC0wOS0xNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotYXR0ci1wbS5hZHMsIHByai1hdHRyLXBtLmFkYjogTmV3IGZpbGVzLCB0byBzcGxpdCBzb21lIHByaXZhdGUKCWNhcGFiaWxpdGllcyBvZiB0aGUgZ2VuZXJhbCBwcm9qZWN0IG1hbmFnZXIuCgoyMDA0LTA5LTA5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGEtZGlyZWN0LmFkczogQWRkIHByYWdtYSBBZGFfMDUKCShEaXJlY3RvcnlfRW50cnlfVHlwZSk6IEdpdmUgZGVmYXVsdCB2YWx1ZSB0byBjb21wb25lbnQgS2luZCB0byBhdm9pZAoJbm90IGluaXRpYWxpemVkIHdhcm5pbmdzLgoKCSogYS1kaXJlY3QuYWRiIChDdXJyZW50X0RpcmVjdG9yeSk6IFJlbW92ZSBkaXJlY3Rvcnkgc2VwYXJhdG9yIGF0IHRoZQoJZW5kLgoJKERlbGV0ZV9EaXJlY3RvcnksIERlbGV0ZV9UcmVlKTogUmFpc2UgTmFtZV9FcnJvciBpZiBEaXJlY3RvcnkgaXMgbm90CglhbiBleGlzdGluZyBkaXJlY3RvcnkuCgkoRmV0Y2hfTmV4dF9FbnRyeSk6IEdpdmUgZGVmYXVsdCB2YWx1ZSB0byB2YXJpYWJsZSBLaW5kIHRvIGF2b2lkIHdhcm5pbmcKCShTaXplIChTdHJpbmcpKTogRnVuY3Rpb24gQ19TaXplIHJldHVybnMgTG9uZ19JbnRlZ2VyLCBub3QgRmlsZV9TaXplLgoJQ29udmVydCB0aGUgcmVzdWx0IHRvIEZpbGVfU2l6ZS4KCgkqIHByai5hZHM6IChQcm9qZWN0X0Vycm9yKTogTmV3IGV4Y2VwdGlvbgoKCSogcHJqLWF0dHIuYWRiOiBFeGNlcHQgaW4gcHJvY2VkdXJlIEluaXRpYWxpemUsIEZhaWwgY29tZXMgZnJvbQoJUHJqLkNvbSwgbm90IGZyb20gT3NpbnQuCgkoQXR0cnMsIFBhY2thZ2VfQXR0cmlidXRlcyk6IFRhYmxlcyBtb3ZlZCB0byBwcml2YXRlIHBhcnQgb2Ygc3BlYwoJKEFkZF9BdHRyaWJ1dGUsIEFkZF9Vbmtub3duX1BhY2thZ2UpOiBNb3ZlZCB0byBuZXcgY2hpbGQgcGFja2FnZQoJUHJqLkF0dHIuUE0uCgkoUmVnaXN0ZXJfTmV3X1BhY2thZ2UgKE5hbWUsIEF0dHJpYnV0ZXMpLCBSZWdpc3Rlcl9OZXdfQXR0cmlidXRlKTogUmFpc2UKCVByai5Qcm9qZWN0X0Vycm9yIGFmdGVyIGNhbGwgdG8gRmFpbC4KCShSZWdpc3Rlcl9OZXdfUGFja2FnZSAoTmFtZSwgSWQpKTogU2V0IElkIHRvIEVtcHR5X1BhY2thZ2UgYWZ0ZXIgY2FsbGluZwoJRmFpbC4gQ2hlY2sgdGhhdCBwYWNrYWdlIG5hbWUgaXMgbm90IGFscmVhZHkgaW4gdXNlLgoKCSogcHJqLWF0dHIuYWRzOiBDb21tZW50IHVwZGF0ZXMgdG8gaW5kaWNhdGUgdGhhdCBhbGwgc3VicHJvZ3JhbXMgbWF5IGJlCgl1c2VkIGJ5IHRvb2xzLCBub3Qgb25seSBieSB0aGUgcHJvamVjdCBtYW5hZ2VyLCBhbmQgdG8gaW5kaWNhdGUgdGhhdAoJZXhjZXB0aW9uIFByai5QcmpfRXJyb3IgbWF5IGJlIHJhaXNlZCBpbiBjYXNlIG9mIHByb2JsZW0uCgkoQWRkX1Vua25vd25fUGFja2FnZSwgQWRkX0F0dHJpYnV0ZSk6IE1vdmVkIHRvIG5ldyBjaGlsZCBwYWNrYWdlCglQcmouQXR0ci5QTS4KCShBdHRycywgUGFja2FnZV9BdHRyaWJ1dGVzKTogVGFibGUgaW5zdGFudGlhdGlvbnMgbW92ZWQgZnJvbSB0aGUgYm9keSB0bwoJdGhlIHByaXZhdGUgcGFydCB0byBiZSBhY2Nlc3NpYmxlIGZyb20gUHJqLkF0dHIuUE0gYm9keS4KCgkqIHByai1kZWN0LmFkYiAoUGFyc2VfUGFja2FnZV9EZWNsYXJhdGlvbik6IENhbGwgQWRkX1Vua25vd25fUGFja2FnZQoJZnJvbSBuZXcgcGFja2FnZSBQcmouQXR0ci5QTS4KCShQYXJzZV9BdHRyaWJ1dGVfRGVjbGFyYXRpb24pOiBDYWxsIEFkZF9BdHRyaWJ1dGUgZnJvbSBuZXcgcGFja2FnZQoJUHJqLkF0dHIuUE0uCgoJKiBNYWtlZmlsZS5pbjogQWRkIHByai1hdHRyLXBtLm8gdG8gZ25hdG1ha2Ugb2JqZWN0IGxpc3QKCgkqIGduYXRiaW5kLmFkYiAoR25hdGJpbmQpOiBDb3JyZWN0IHdhcm5pbmcgbWVzc2FnZSAoRWxhYm9yYXRpb25fQ2hlY2sKCWluc3RlYWQgb2YgRWxhYm9yYXRpb25fQ2hlY2tzKS4KCgkqIGEtY2FsZW5kLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA0LTA5LTA5ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZ2lnaS5oIChtYXliZV9wYWRfdHlwZSk6IE5ldyBkZWNsYXJhdGlvbi4KCShjcmVhdGVfc3VicHJvZ190eXBlKTogTmV3IGFyZyBSRVRVUk5TX0JZX1RBUkdFVF9QVFIuCgoJKiBhZGEtdHJlZS5oOiAoVFlQRV9SRVRVUk5TX0JZX1RBUkdFVF9QVFJfUCk6IE5ldyBtYWNyby4KCgkqIGN1aW50cC5jOiBDb252ZXJ0IHRvIHVzZSBidWlsZE4uCgoJKiBkZWNsLmMgKG1heWJlX3BhZF90eXBlKTogTm8gbG9uZ2VyIHN0YXRpYy4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9GdW5jdGlvbik6IEhhbmRsZSBjYXNlIG9mIHJldHVybmluZyBieQoJdGFyZ2V0IHBvaW50ZXIuCglDb252ZXJ0IHRvIHVzZSBidWlsZE4uCgoJKiB0cmFucy5jIChjYWxsX3RvX2dudSk6IEFkZCBhcmcgR05VX1RBUkdFVDsgc3VwcG9ydAoJVFlQRV9SRVRVUk5TX0JZX1RBUkdFVF9QVFJfUC4gIEFsbCBjYWxsZXJzIGNoYW5nZWQuCgkoZ25hdF90b19nbnUsIGNhc2UgTl9Bc3NpZ25tZW50X1N0YXRlbWVudCk6IENhbGwgY2FsbF90b19nbnUgaWYgY2FsbCBvbgoJUkhTLgoJKGduYXRfdG9fZ251LCBjYXNlIE5fUmV0dXJuKTogSGFuZGxlIFRZUEVfUkVUVVJOX0JZX1RBUkdFVF9QVFJfUC4KCShnbmF0X2dpbXBsaWZ5X2V4cHIsIGNhc2UgQUREUl9FWFBSKTogTmV3IGNhc2UuCglDb252ZXJ0IHRvIHVzZSBidWlsZE4uCgoJKiB1dGlsczIuYyAoZ25hdF9idWlsZF9jb25zdHJ1Y3Rvcik6IEFsc28gc2V0IFRSRUVfSU5WQVJJQU5UIGFuZAoJVFJFRV9SRUFET05MWSBmb3IgY29uc3QuCglDb252ZXJ0IHRvIHVzZSBidWlsZE4uCgoJKiB1dGlscy5jIChjcmVhdGVfc3VicHJvZ190eXBlKTogTmV3IG9wZXJhbmQgUkVUVVJOU19CWV9UQVJHRVRfUFRSLgoJKGNyZWF0ZV92YXJfZGVjbCk6IFJlZmluZSB3aGVuIFRSRUVfU1RBVElDIGlzIHNldC4KCUNvbnZlcnQgdG8gdXNlIGJ1aWxkTi4KCjIwMDQtMDktMDkgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BnbmF0LmNvbT4KCgkqIGduYXRfdWduLnRleGk6IERlbGV0ZSB0ZXh0IHJlbGF0aW5nIHRvIGNoZWNraW5nIG9mIGFsaSBhbmQgb2JqZWN0Cgljb25zaXN0ZW5jeS4KCgkqIGEtZXhjZXB0LmFkYiAoUmNoZWNrXyopOiBBZGQgcHJhZ21hcyBOb19SZXR1cm4gZm9yIGVhY2ggb2YgdGhlc2UKCXJvdXRpbmVzLgoKMjAwNC0wOS0wOSAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdF91Z24udGV4aTogQWRkIERldGVjdF9CbG9ja2luZyB0byB0aGUgbGlzdCBvZiBjb25maWd1cmF0aW9uCglwcmFnbWFzIHJlY29nbml6ZWQgYnkgR05BVC4KCgkqIGduYXRfcm0udGV4aTogRG9jdW1lbnQgcHJhZ21hIERldGVjdF9CbG9ja2luZy4KCgkqIHMtc29saXRhLmFkYiAoVGltZWRfRGVsYXlfVCk6IFdoZW4gcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUsCglyYWlzZSBQcm9ncmFtX0Vycm9yIGlmIGNhbGxlZCBmcm9tIGEgcHJvdGVjdGVkIG9wZXJhdGlvbi4KCgkqIHMtdGFwcm9iLmFkYiAoTG9jayk6IFdoZW4gcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUgaW5jcmVhc2UKCXRoZSBwcm90ZWN0ZWQgYWN0aW9uIG5lc3RpbmcgbGV2ZWwuCgkoTG9ja19SZWFkX09ubHkpOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlIGluY3JlYXNlIHRoZQoJcHJvdGVjdGVkIGFjdGlvbiBuZXN0aW5nIGxldmVsLgoJKFVubG9jayk6IFdoZW4gcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUgZGVjcmVhc2UgdGhlIHByb3RlY3RlZAoJYWN0aW9uIG5lc3RpbmcgbGV2ZWwuCgoJKiBzLXRhc2tpbi5hZGIgKEluaXRpYWxpemVfQVRDQik6IEluaXRpYWxpemUgdG8gMCB0aGUKCVByb3RlY3RlZF9BY3Rpb25fTmVzdGluZy4KCgkqIHMtdGFza2luLmFkczogQWRkaW5nIHRoZSBmaWVsZCBQcm90ZWN0ZWRfQWN0aW9uX05lc3RpbmcgdG8gdGhlCglDb21tb25fQVRDQiByZWNvcmQuIEl0IGNvbnRhaW5zIHRoZSBkeW5hbWljIGxldmVsIG9mIHByb3RlY3RlZCBhY3Rpb24KCW5lc3RpbmcgZm9yIGVhY2ggdGFzay4gSXQgaXMgbmVlZGVkIGZvciBjaGVja2luZyB3aGV0aGVyIHBvdGVudGlhbGx5CglibG9ja2luZyBvcGVyYXRpb25zIGFyZSBjYWxsZWQgZnJvbSBwcm90ZWN0ZWQgb3BlcmF0aW9ucy4KCShEZXRlY3RfQmxvY2tpbmcpOiBBZGRpbmcgYSBCb29sZWFuIGNvbnN0YW50IHJlZmxlY3Rpbmcgd2hldGhlciBwcmFnbWEKCURldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUgb3Igbm90IGluIHRoZSBwYXJ0aXRpb24uCgoJKiBzLXRhc3Jlbi5hZGIgKENhbGxfU2ltcGxlKTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSwKCXJhaXNlIFByb2dyYW1fRXJyb3IgaWYgY2FsbGVkIGZyb20gYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLgoJKFRhc2tfRW50cnlfQ2FsbCk6IFdoZW4gcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUsIHJhaXNlCglQcm9ncmFtX0Vycm9yIGlmIGNhbGxlZCBmcm9tIGEgcHJvdGVjdGVkIG9wZXJhdGlvbi4KCShUaW1lZF9UYXNrX0VudHJ5X0NhbGwpOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlLCByYWlzZQoJUHJvZ3JhbV9FcnJvciBpZiBjYWxsZWQgZnJvbSBhIHByb3RlY3RlZCBvcGVyYXRpb24uCgoJKiBzLXRhc3N0YS5hZGIgKEFib3J0X1Rhc2tzKTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSwKCXJhaXNlIFByb2dyYW1fRXJyb3IgaWYgY2FsbGVkIGZyb20gYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLgoKCSogcy10cG9iZW4uYWRiIChMb2NrX0VudHJpZXMpOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlLAoJcmFpc2UgUHJvZ3JhbV9FcnJvciBpZiBjYWxsZWQgZnJvbSBhIHByb3RlY3RlZCBvcGVyYXRpb24sIGFuZCBpbmNyZWFzZQoJdGhlIHByb3RlY3RlZCBhY3Rpb24gbmVzdGluZyBsZXZlbC4KCShMb2NrX1JlYWRfT25seV9FbnRyaWVzKTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSwgcmFpc2UKCVByb2dyYW1fRXJyb3IgaWYgY2FsbGVkIGZyb20gYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLCBhbmQgaW5jcmVhc2UgdGhlCglwcm90ZWN0ZWQgYWN0aW9uIG5lc3RpbmcgbGV2ZWwuCgkoVW5sb2NrX0VudHJpZXMpOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlIGRlY3JlYXNlIHRoZQoJcHJvdGVjdGVkIGFjdGlvbiBuZXN0aW5nIGxldmVsLgoKCSogcy10cG9zZW4uYWRiIChMb2NrX0VudHJ5KTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSwKCXJhaXNlIFByb2dyYW1fRXJyb3IgaWYgY2FsbGVkIGZyb20gYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLCBhbmQgaW5jcmVhc2UKCXRoZSBwcm90ZWN0ZWQgYWN0aW9uIG5lc3RpbmcgbGV2ZWwuCgkoTG9ja19SZWFkX09ubHlfRW50cnkpOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlLCByYWlzZQoJUHJvZ3JhbV9FcnJvciBpZiBjYWxsZWQgZnJvbSBhIHByb3RlY3RlZCBvcGVyYXRpb24sIGFuZCBpbmNyZWFzZSB0aGUKCXByb3RlY3RlZCBhY3Rpb24gbmVzdGluZyBsZXZlbC4KCShQcm90ZWN0ZWRfU2luZ2xlX0VudHJ5X0NhbGwpOiBXaGVuIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlLAoJcmFpc2UgUHJvZ3JhbV9FcnJvciBpZiBjYWxsZWQgZnJvbSBhIHByb3RlY3RlZCBvcGVyYXRpb24uCgkoVGltZWRfUHJvdGVjdGVkX1NpbmdsZV9FbnRyeV9DYWxsKTogV2hlbiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzCglhY3RpdmUsIHJhaXNlIFByb2dyYW1fRXJyb3IgaWYgY2FsbGVkIGZyb20gYSBwcm90ZWN0ZWQgb3BlcmF0aW9uLgoJKFVubG9ja19FbnRyeSk6IFdoZW4gcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUgZGVjcmVhc2UgdGhlCglwcm90ZWN0ZWQgYWN0aW9uIG5lc3RpbmcgbGV2ZWwuCgoJKiBzZW1fdXRpbC5hZGIgKENoZWNrX1BvdGVudGlhbGx5X0Jsb2NraW5nX09wZXJhdGlvbik6IFJlbW92ZSB0aGUKCWluc2VydGlvbiBvZiB0aGUgc3RhdGVtZW50IHJhaXNpbmcgUHJvZ3JhbV9FcnJvci4gVGhlIHJ1biB0aW1lCgljb250YWlucyB0aGUgcmVxdWlyZWQgbWFjaGluZXJ5IGZvciBoYW5kbGluZyB0aGF0LgoKCSogc2VtX3V0aWwuYWRzOiBDaGFuZ2UgY29tbWVudCBhc3NvY2lhdGVkIHRvIHByb2NlZHVyZQoJQ2hlY2tfUG90ZW50aWFsbHlfQmxvY2tpbmdfT3BlcmF0aW9uLgoJVGhpcyBwcm9jZWR1cmUgZG9lcyBub3QgaW5zZXJ0IGEgY2FsbCBmb3IgcmFpc2luZyB0aGUgZXhjZXB0aW9uIGJlY2F1c2UKCXRoYXQgaXMgY3VycmVudGx5IGRvbmUgYnkgdGhlIHJ1biB0aW1lLgoKCSogcmFpc2UuaCAoX19nbmF0X3NldF9nbG9iYWxzKTogUGFzcyB0aGUgZGV0ZWN0X2Jsb2NraW5nIHBhcmFtZXRlci4KCgkqIGluaXQuYzogQWRkIHRoZSBnbG9iYWwgdmFyaWFibGUgX19nbF9kZXRlY3RfYmxvY2tpbmcgdGhhdCBpbmRpY2F0ZXMKCXdoZXRoZXIgcHJhZ21hIERldGVjdF9CbG9ja2luZyBpcyBhY3RpdmUgKDEpIG9yIG5vdCAoMCkuIE5lZWRlZCBmb3IKCW1ha2luZyB0aGUgcHJhZ21hIGF2YWlsYWJsZSBhdCBydW4gdGltZS4KCShfX2duYXRfc2V0X2dsb2JhbHMpOiBQYXNzIGFuZCB1cGRhdGUgdGhlIGRldGVjdF9ibG9ja2luZyBwYXJhbWV0ZXIuCgoJKiBsaWItd3JpdC5hZGIgKFdyaXRlX0FMSSk6IFNldCB0aGUgREIgZmxhZyBpbiB0aGUgYWxpIGZpbGUgaWYKCXByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlLgoKCSogbGliLXdyaXQuYWRzOiBEb2N1bWVudCB0aGUgRGV0ZWN0X0Jsb2NraW5nIGZsYWcgKERCKSBpbiBhbGkgZmlsZXMuCgoJKiBhbGkuYWRiIChTY2FuX0FMSSk6IFNldCB0aGUgRGV0ZWN0X0Jsb2NraW5nIHZhbHVlIHRvIHRydWUgaWYgdGhlIGZsYWcKCURCIGlzIGZvdW5kIGluIHRoZSBhbGkgZmlsZS4gQW55IHVuaXQgY29tcGlsZWQgd2l0aCBwcmFnbWEKCURldGVjdF9CbG9ja2luZyBhY3RpdmUgZm9yY2VzIGl0cyBlZmZlY3QgaW4gdGhlIHdob2xlIHBhcnRpdGlvbi4KCgkqIGEtcmV0aWRlLmFkYiAoRGVsYXlfVW50aWwpOiBSYWlzZSBQcm9ncmFtX0Vycm9yIGlmIHByYWdtYQoJRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSBhbmQgZGVsYXkgaXMgY2FsbGVkIGZyb20gYSBwcm90ZWN0ZWQKCW9wZXJhdGlvbi4KCgkqIGJpbmRnZW4uYWRiIChHZW5fQWRhaW5pdF9BZGEpOiBXaGVuIGdlbmVyYXRpbmcgdGhlIGNhbGwgdG8KCV9fZ25hdF9zZXRfZ2xvYmFscywgcGFzcyAxIGFzIERldGVjdF9CbG9ja2luZyBwYXJhbWV0ZXIgaWYgcHJhZ21hCglEZXRlY3RfQmxvY2tpbmcgaXMgYWN0aXZlICgwIG90aGVyd2lzZSkuCgkoR2VuX0FkYWluaXRfQyk6IFdoZW4gZ2VuZXJhdGluZyB0aGUgY2FsbCB0byBfX2duYXRfc2V0X2dsb2JhbHMsIHBhc3MgMQoJYXMgRGV0ZWN0X0Jsb2NraW5nIHBhcmFtZXRlciBpZiBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZSAoMAoJb3RoZXJ3aXNlKS4KCjIwMDQtMDktMDkgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRfcm0udGV4aTogUmVuYW1lIEdOQVQuUGVyZmVjdF9IYXNoLkdlbmVyYXRvcnMgdG8KCUdOQVQuUGVyZmVjdF9IYXNoX0dlbmVyYXRvcnMsIGFuZCByZW1vdmUgdGhlIGVtcHR5IEdOQVQuUGVyZmVjdF9IYXNoCglwYWNrYWdlLgoKCSogcy1wYXJpbnQuYWRzLCBzLXBhcmludC5hZGIgKEdldF9SQVNfSW5mbyk6IE5ldyBzdWJwcm9ncmFtLgoJKFJlZ2lzdGVyX1JlY2VpdmluZ19TdHViKTogQWRkIFN1YnBfSW5mbyBmb3JtYWwgcGFyYW1ldGVyLgoJVXBkYXRlIEFQSSBpbiBwbGFjZWhvbGRlciBpbXBsZW1ldGF0aW9uIG9mIHMtcGFyaW50IHRvIHJlZmxlY3QgY2hhbmdlcwoJaW4gZGlzdHJpYnV0aW9uIHJ1bnRpbWUgbGlicmFyeS4KCgkqIHNlbV9jaDMuYWRiIChFeHBhbmRfRGVyaXZlZF9SZWNvcmQpOiBSZW5hbWUgdG8KCUV4cGFuZF9SZWNvcmRfRXh0ZW5zaW9uLgoKCSogc2VtX2Rpc3AuYWRiIChDaGVja19Db250cm9sbGluZ19Gb3JtYWxzKTogSW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvcgoJcHJpbWl0aXZlIG9wZXJhdGlvbnMgb2YgcG90ZW50aWFsbHkgZGlzdHJpYnV0ZWQgb2JqZWN0IHR5cGVzIHRoYXQgaGF2ZQoJbm9uLWNvbnRyb2xsaW5nIGFub255bW91cyBhY2Nlc3MgZm9ybWFscy4KCgkqIHNlbV9kaXN0LmFkcywgc2VtX2Rpc3QuYWRiIChCdWlsZF9SQVNfUHJpbWl0aXZlX1NwZWNpZmljYXRpb24pOiBOZXcKCXN1YnByb2dyYW0uCglOZXcgaW1wbGVtZW50YXRpb24gb2YgZXhwYW5zaW9uIGZvciByZW1vdGUgYWNjZXNzLXRvLXN1YnByb2dyYW0gdHlwZXMsCgliYXNlZCBvbiB0aGUgUkFDVyBpbmZyYXN0cnVjdHVyZS4KCVRoaXMgdmVyc2lvbiBvZiBzZW1fZGlzdCBpcyBjb21wYXRpYmxlIHdpdGggUG9seU9SQi9EU0EgYXMgd2VsbCBhcwoJR0xBREUuCgoJKiBzZW1fcHJhZy5hZGIgKEFuYWx5emVfUHJhZ21hLCBjYXNlIFByYWdtYV9Bc3luY2hyb25vdXMpOiBGb3IgYSBwcmFnbWEKCUFzeW5jaHJyb25vdXMgdGhhdCBhcHBsaWVzIHRvIGEgcmVtb3RlIGFjY2Vzcy10by1zdWJwcm9ncmFtIHR5cGUsIG1hcmsKCXRoZSB1bmRlcmx5aW5nIFJBQ1cgdHlwZSBhcyBhc3luY2hyb25vdXMuCgoJKiBsaW5rLmM6IEZyZWVCU0QgdXNlcyBHTlUgbGQ6IHNldCBfX2duYXRfb2JqbGlzdF9maWxlX3N1cHBvcnRlZCBhbmQKCSBfX2duYXRfdXNpbmdfZ251X2xpbmtlciB0byAxLgoKCSogTWFrZWZpbGUucnRsLCBpbXB1bml0LmFkYiwgZy1wZXJoYXMuYWRzLCBnLXBlaGFnZS5hZHMsCglnLXBlaGFnZS5hZGI6IFJlbmFtZSBHTkFULlBlcmZlY3RfSGFzaC5HZW5lcmF0b3JzIHRvCglHTkFULlBlcmZlY3RfSGFzaF9HZW5lcmF0b3JzLCBhbmQgcmVtb3ZlIHRoZSBlbXB0eQoJR05BVC5QZXJmZWN0X0hhc2ggcGFja2FnZS4KCgkqIGF0cmVlLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBleHBfY2gzLmFkYiAoRXhwYW5kX0Rlcml2ZWRfUmVjb3JkKTogUmVuYW1lIHRvCglFeHBhbmRfUmVjb3JkX0V4dGVuc2lvbi4KCShCdWlsZF9SZWNvcmRfSW5pdF9Qcm9jLkJ1aWxkX0Fzc2lnbm1lbnQpOiBUaGUgZGVmYXVsdCBleHByZXNzaW9uIGluCglhIGNvbXBvbmVudCBkZWNsYXJhdGlvbiBtdXN0IHJlbWFpbiBhdHRhY2hlZCBhdCB0aGF0IHBvaW50IGluIHRoZQoJdHJlZSBzbyBOZXdfQ29weV9UcmVlIGNvcGllcyBpdCBpZiB0aGUgZW5jbG9zaW5nIHJlY29yZCB0eXBlIGlzIGRlcml2ZWQuCglJdCBpcyB0aGVyZWZvcmUgbmVjZXNzYXJ5IHRvIHRha2UgYSBjb3B5IG9mIHRoZSBleHByZXNzaW9uIHdoZW4gYnVpbGRpbmcKCXRoZSBjb3JyZXNwb25kaW5nIGFzc2lnbm1lbnQgc3RhdGVtZW50IGluIHRoZSBpbml0IHByb2MuCglBcyBhIHNpZGUgZWZmZWN0LCBpbiB0aGUgY2FzZSBvZiBhIGRlcml2ZWQgcmVjb3JkIHR5cGUsIHdlIG5vdyBzZWUgdGhlCglvcmlnaW5hbCBleHByZXNzaW9uLCB3aXRob3V0IGFueSByZXdyaXRpbmcgdGhhdCBjb3VsZCBoYXZlIG9jY3VycmVkCglkdXJpbmcgZXhwYW5zaW9uIG9mIHRoZSBhbmNlc3RvciB0eXBlJ3MgaW5pdCBwcm9jLCBhbmQgd2UgZG8gbm90IG5lZWQKCXRvIGdvIGJhY2sgdG8gT3JpZ2luYWxfTm9kZS4KCgkqIGV4cF9jaDMuYWRzIChFeHBhbmRfRGVyaXZlZF9SZWNvcmQpOiBSZW5hbWUgdG8KCUV4cGFuZF9SZWNvcmRfRXh0ZW5zaW9uLgoKCSogZXhwX2Rpc3QuYWRzLCBleHBfZGlzdC5hZGIgKFVuZGVybHlpbmdfUkFDV19UeXBlKTogTmV3IHN1YnByb2dyYW0uCglSZXR1cm5zIHRoZSBSQUNXIHR5cGUgdXNlZCB0byBpbXBsZW1lbnQgYSByZW1vdGUgYWNjZXNzLXRvLXN1YnByb2dyYW0KCXR5cGUuCgkoQWRkX1JBU19Qcm94eV9BbmRfQW5hbHl6ZSwgQnVpbGRfUmVtb3RlX1N1YnByb2dyYW1fUHJveHlfVHlwZSk6CglOZXcgc3VicHJvZ3JhbXMuIFVzZWQgdG8gY3JlYXRlIGEgcHJveHkgdGFnZ2VkIG9iamVjdCBmb3IgYSByZW1vdGUKCXN1YnByb2dyYW0uIFRoZSBwcm94eSBvYmplY3QgaXMgdXNlZCBhcyB0aGUgZGVzaWduYXRlZCBvYmplY3QKCWZvciBSQVMgdmFsdWVzIG9uIHRoZSBzYW1lIHBhcnRpdGlvbiAodW5sZXNzIEFsbF9DYWxsc19SZW1vdGUgYXBwbGllcykuCgkoQnVpbGRfR2V0X1VuaXF1ZV9SUF9DYWxsKTogTmV3IHN1YnByb2dyYW0uIEJ1aWxkIGEgY2FsbCB0bwoJU3lzdGVtLlBhcnRpdGlvbl9JbnRlcmZhY2UuR2V0X1VuaXF1ZV9SZW1vdGVfUG9pbnRlci4KCShBZGRfUkFTX0FjY2Vzc19UU1MsIEFkZF9SQVNfRGVyZWZlcmVuY2VfVFNTKToKCVJlbmFtZWQgZnJvbSBBZGRfUkFTXypfQXR0cmlidXRlLgoJKEFkZF9SZWNlaXZpbmdfU3R1YnNfVG9fRGVjbGFyYXRpb25zKTogR2VuZXJhdGUgYSB0YWJsZSBvZiBsb2NhbAoJc3VicHJvZ3JhbXMuCglOZXcgaW1wbGVtZW50YXRpb24gb2YgZXhwYW5zaW9uIGZvciByZW1vdGUgYWNjZXNzLXRvLXN1YnByb2dyYW0gdHlwZXMsCgliYXNlZCBvbiB0aGUgUkFDVyBpbmZyYXN0cnVjdHVyZS4KCgkqIGV4cF9kaXN0LmFkcyAoQ29weV9TcGVjaWZpY2F0aW9uKTogVXBkYXRlIGNvbW1lbnQgdG8gbm90ZSB0aGF0IHRoaXMKCWZ1bmN0aW9uIGNhbiBjb3B5IHRoZSBzcGVjaWZpY2F0aW9uIGZyb20gZWl0aGVyIGEgc3VicHJvZ3JhbQoJc3BlY2lmaWNhdGlvbiBvciBhbiBhY2Nlc3MtdG8tc3VicHJvZ3JhbSB0eXBlIGRlZmluaXRpb24uCgoyMDA0LTA5LTA5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fdHlwZS5hZGIgKERpc2FtYmlndWF0ZSk6IEhhbmRsZSBwcm9wZXJseSBhbiBhY2NpZGVudGFsIGFtYmlndWl0eQoJaW4gYW4gaW5zdGFuY2UsIGJldHdlZW4gYW4gZXhwbGljaXQgc3VicHJvZ3JhbSBhbiBvbmUgaW5oZXJpdGVkIGZyb20gYQoJdHlwZSBkZXJpdmVkIGZyb20gYW4gYWN0dWFsLgoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9OX1N1YnByb2dyYW1fQm9keSk6IElmIHBvbGxpbmcgaXMgZW5hYmxlZCwgZG8gbm90CglhZGQgYSBwb2xsaW5nIGNhbGwgaWYgdGhlIHN1YnByb2dyYW0gaXMgdG8gYmUgaW5saW5lZCBieSB0aGUgYmFjay1lbmQsCgl0byBhdm9pZCByZXBlYXRlZCBjYWxscyB3aXRoIG11bHRpcGxlIGlubGluaW5ncy4KCgkqIGNoZWNrcy5hZGIgKEFwcGx5X0FsaWdubWVudF9DaGVjayk6IElmIHRoZSBleHByZXNzaW9uIGluIHRoZSBhZGRyZXNzCgljbGF1c2UgaXMgYSBjYWxsIHdob3NlIG5hbWUgaXMgbm90IGEgc3RhdGljIGVudGl0eSAoZS5nLiBhIGRpc3BhdGNoaW5nCgljYWxsKSwgdHJlYXQgYXMgZHluYW1pYy4KCjIwMDQtMDktMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogZy10cmFzeW0uYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGV4cF9jaDMuYWRiIChDb21wb25lbnRfTmVlZHNfU2ltcGxlX0luaXRpYWxpemF0aW9uKTogRG9uJ3QgZXhjZXB0CglwYWNrZWQgYXJyYXlzLCBzaW5jZSB1bnVzZWQgYml0cyBhcmUgZXhwZWN0ZWQgdG8gYmUgemVybyBmb3IgYQoJY29tcGFyaXNvbi4KCjIwMDQtMDktMDkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgkqIGV4cF9wYWtkLmFkczogRml4IGFuIGluYWN1cnJhY3kgYW5kIGEgY291cGxlIG9mIHR5cG9zIGluIHRoZSBoZWFkCgljb21tZW50LgoKMjAwNC0wOS0wOSAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogbWRsbC5hZHMsIG1kbGwuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBOZXcgcGFyYW1ldGVyIE1hcF9GaWxlIHRvCgllbmFibGUgbWFwIGZpbGUgZ2VuZXJhdGlvbi4gQWRkIHRoZSByaWdodCBvcHRpb24gdG8gZ2VuZXJhdGUgdGhlIG1hcAoJZmlsZSBpZiBNYXBfRmlsZSBpcyBzZXQgdG8gVHJ1ZS4KCgkqIGduYXRkbGwuYWRiIChHZW5fTWFwX0ZpbGUpOiBOZXcgdmFyaWFibGUuCgkoU3ludGF4KTogQWRkIGluZm8gYWJvdXQgbmV3IC1tIChNYXBfRmlsZSkgb3B0aW9uLgoJKFBhcnNlX0NvbW1hbmRfTGluZSk6IEFkZCBzdXBwb3J0IGZvciAtbSBvcHRpb24uCgkoZ25hdGRsbCk6IFBhc3MgR2VuX01hcF9GaWxlIHRvIEJ1aWxkX0R5bmFtaWNfTGlicmFyeSBjYWxscy4KCU1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDQtMDktMDkgIExhdXJlbnQgUGF1dGV0ICA8cGF1dGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0bHMuYWRiOiBBZGQgYSB2ZXJ5IHZlcmJvc2UgbW9kZSAtVi4gU3VjaCBtb2RlIGlzIHJlcXVpcmVkIGJ5IHRoZQoJbmV3IGduYXRkaXN0IGltcGxlbWVudGF0aW9uLgoJRGVmaW5lIGEgc3VicGFja2FnZSBpc29sYXRpbmcgdGhlIG91dHB1dCByb3V0aW5lcyBzcGVjaWZpYyB0byB0aGlzCgl2ZXJib3NlIG1vZGUuCgoyMDA0LTA5LTA5ICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLnJ0bDogKEdOQVRSVExfTk9OVEFTS0lOR19PQkpTKTogQWRkIGctZHluaHRhLgoKCSogZ25hdF91Z24udGV4aSAoTWFpbiBTdWJwcm9ncmFtcyk6IEZpeCB0eXBvLiBEZWR1Y2VkLCBub3QgZGVkdWN0ZWQuCgoyMDA0LTA5LTA5ICBDeXJpbGxlIENvbWFyICA8Y29tYXJAYWN0LWV1cm9wZS5mcj4KCgkqIG9wdC5hZGIgKFNldF9PcHRfQ29uZmlnX1N3aXRjaGVzKTogVXNlIEFkYV9WZXJzaW9uX1J1bnRpbWUgdG8gY29tcGlsZQoJaW50ZXJuYWwgdW5pdC4KCgkqIG9wdC5hZHM6IEFkZCBBZGFfVmVyc2lvbl9SdW50aW1lIGNvbnN0YW50IHVzZWQgdG8gZGVjaWRlIHdoaWNoCgl2ZXJzaW9uIG9mIHRoZSBsYW5ndWFnZSBpcyB1c2VkIHRvIGNvbXBpbGUgdGhlIHJ1biB0aW1lLgoKMjAwNC0wOS0wOSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fdXRpbC5hZGIgKFJlcXVpcmVzX1RyYW5zaWVudF9TY29wZSk6IFJlLWVuYWJsZSBoYW5kbGluZwoJb2YgdmFyaWFibGUgbGVuZ3RoIHRlbXBvcmFyaWVzIGZvciBmdW5jdGlvbiByZXR1cm4gbm93IHRoYXQgdGhlCgliYWNrLWVuZCBhbmQgZ2lnaSBzdXBwb3J0IGl0LgoKMjAwNC0wOS0wMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIG1pc2MuYyAoZ25hdF9wcmludF90eXBlKTogVXNlIFRZUEVfUk1fU0laRV9OVU0uCgoJKiB0cmFucy5jIChzdHJ1Y3Qgc3RtdF9ncm91cCk6IERlbGV0ZSBmaWVsZCBHTE9CQUwuCgkoZ25hdF9pbml0X3N0bXRfZ3JvdXApOiBEbyBub3QgaW5pdGlhbGl6ZSBpdC4KCShjYWxsX3RvX2dudSk6IFVzZSBzYXZlX2V4cHIsIG5vdCBwcm90ZWN0X211bHRpcGxlX2V2YWwuCgkoRXhjZXB0aW9uX0hhbmRsZXJfdG9fZ251X3NqbGopOiBDYWxsIGJ1aWxkX2ludF9jc3QsIG5vdCBidWlsZF9pbnRfMgoJKGduYXRfdG9fZ251LCBjYXNlIE5fQ2hhcmFjdGVyX0xpdGVyYWwsIE5fU3RyaW5nX0xpdGVyYWwpOiBMaWtld2lzZS4KCShnbmF0X3RvX2dudSwgY2FzZSBOX0NvbXBpbGF0aW9uX1VuaXQpOiBEbyBub3Qgc2V0IEdMT0JBTCBpbiBzdG10IGdyb3VwLgoJKHN0YXJ0X3N0bXRfZ3JvdXApOiBMaWtld2lzZS4KCShhZGRfc3RtdCwgYWRkX2RlY2xfZXhwcik6IFJld29yayBoYW5kbGluZyBvZiBnbG9iYWwgREVDTF9FWFBScy4KCgkqIHV0aWxzMi5jIChnZ2MuaCk6IEluY2x1ZGUuCgkoYnVpbGRfY2FsbF9yYWlzZSk6IENhbGwgYnVpbGRfaW50X2NzdCwgbm90IGJ1aWxkX2ludF8yLgoKCSogdXRpbHMuYyAoZ25hdF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEZpeCBhcmcgdG8KCWJ1aWxkX2NvbW1vbl90cmVlX25vZGVzLgoJKGNyZWF0ZV9zdWJwcm9nX3R5cGUpOiBEbyBub3QgdXNlIFNFVF9UWVBFX0NJX0NPX0xJU1QuCgkoZ25hdF9kZWZpbmVfYnVpbHRpbik6IFNldCBidWlsdF9pbl9kZWNscy4KCShpbml0X2dpZ2lfZGVjbHMpOiBDYWxsIGJ1aWxkX2ludF9jc3QsIG5vdCBidWlsZF9pbnRfMi4KCgkqIGFkYS10cmVlLmggKHN0cnVjdCBsYW5nX2RlY2wsIHN0cnVjdCBsYW5nX3R5cGUpOiBGaWVsZCBpcyB0eXBlIHRyZWUuCgkoR0VUX1RZUEVfTEFOR19TUEVDSUZJQywgU0VUX1RZUEVfTEFOR19TUEVDSUZJQyk6IE5ldyBtYWNyb3MuCgkoR0VUX0RFQ0xfTEFOR19TUEVDSUZJQywgU0VUX0RFQ0xfTEFOR19TUEVDSUZJQyk6IExpa2V3aXNlLgoJKFRZUEVfQ0lfQ09fTElTVCwgU0VUX1RZUEVfQ0lfQ09fTElTVCwgVFlQRV9NT0RVTEUsCglTRVRfVFlQRV9NT0RVTEUpOiBVc2UgdGhlbS4KCShUWVBFX0lOREVYX1RZUEUsIFNFVF9UWVBFX0lOREVYX1RZUEUsIFRZUEVfRElHSVRTX1ZBTFVFKTogTGlrZXdpc2UuCgkoU0VUX1RZUEVfRElHSVRTX1ZBTFVFLCBUWVBFX1VOQ09OU1RSQUlORURfQVJSQVkpOiBMaWtld2lzZS4KCShTRVRfVFlQRV9VTkNPTlNUUkFJTkVEX0FSUkFZLCBUWVBFX0FEQV9TSVpFLAoJU0VUX1RZUEVfQURBX1NJWkUpOiBMaWtld2lzZS4KCShUWVBFX0FDVFVBTF9CT1VORFMsIFNFVF9UWVBFX0FDVFVBTF9CT1VORFMpOiBMaWtld2lzZS4KCShERUNMX0NPTlNUX0NPUlJFU1BPTkRJTkdfVkFSLAoJU0VUX0RFQ0xfQ09OU1RfQ09SUkVTUE9ORElOR19WQVIpOiBMaWtld2lzZS4KCShERUNMX09SSUdJTkFMX0ZJRUxELCBTRVRfREVDTF9PUklHSU5BTF9GSUVMRCk6IExpa2V3aXNlLgoJKFRZUEVfUk1fU0laRV9JTlQsIFRZUEVfUk1fU0laRV9FTlVNLCBTRVRfVFlQRV9STV9TSVpFX0VOVU0pOiBEZWxldGVkLgoJKFRZUEVfUk1fU0laRV9OVU0pOiBOZXcgbWFjcm8uCgkoVFlQRV9STV9TSVpFKTogTW9kaWZpZWQgdG8gdXNlIGFib3ZlLgoKCSogY3VpbnRwLmM6IChidWlsZF9jc3RfZnJvbV9pbnQpOiBOZXcgZnVuY3Rpb24uCgkoVUlfVG9fZ251KTogVXNlIGl0LgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpOiBVc2UgVFlQRV9STV9TSVpFX05VTS4KCShtYWtlX3R5cGVfZnJvbV9zaXplKTogQXZvaWQgY2hhbmdpbmcgVFlQRV9VTlNJR05FRCBvZiBhIHR5cGUuCgkoZ25hdF9zdWJzdGl0dXRlX2luX3R5cGUsIGNhc2UgQVJSQVlfVFlQRSk6IElmIG9sZCBoYWQgYQoJTUlOX0VYUFIgZm9yIHRoZSBzaXplLCBjb3B5IGl0IGludG8gbmV3LgoKMjAwNC0wOS0wMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX0NhbGwpOiBQcm9wZXJseSBoYW5kbGUgdmFsaWRpdHkgY2hlY2tzIGZvcgoJcGFja2VkIGluZGV4ZWQgY29tcG9uZW50IHdoZXJlIGFycmF5IGlzIGFuIElOIE9VVCBmb3JtYWwuIFRoaXMKCWdlbmVyYXRlZCBnYXJiYWdlIGNvZGUgcHJldmlvdXNseS4KCgkqIGduYXRfdWduLnRleGk6IERvY3VtZW50IC1mdmVyYm9zZS1hc20KCgkqIGduYXQtc3R5bGUudGV4aTogTWlub3IgdXBkYXRlcyAobm90ZSB0aGF0IGJvb2xlYW4gY29uc3RhbnRzIGFuZAoJdmFyaWFibGVzIGFyZSBqb2luZWQgd2l0aCBBTkQvT1IgcmF0aGVyIHRoYW4gc2hvcnQgY2lyY3VpdCBmb3JtcykuCgoyMDA0LTA5LTAxICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfdXRpbC5hZGIgKFNhZmVfVW5jaGVja2VkX1R5cGVfQ29udmVyc2lvbik6IENvbnZlcnNpb24gaXMgc2FmZSBpZgoJaXQgaXMgYW4gdXB3YXJkIGNvbnZlcnNpb24gb2YgYW4gdW50YWdnZWQgdHlwZSB3aXRoIG5vIHJlcHJlc2VudGF0aW9uCgljaGFuZ2UuCgoyMDA0LTA5LTAxICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBydHNmaW5kLmFkczogTW92ZSBSQ0lfU3VicF9JbmZvIGFuZCBSQ0lfU3VicF9JbmZvX0FycmF5IHRvCglTeXN0ZW0uUGFydGl0aW9uX0ludGVyZmFjZS4KCgkqIGNoZWNrcy5hZGIgKEFwcGx5X0FjY2Vzc19DaGVja3MpOiBEbyBub3QgZ2VuZXJhdGUgY2hlY2tzIHdoZW4KCWV4cGFuZGVyIGlzIG5vdCBhY3RpdmUgKGJ1dCBjaGVjayBmb3IgdW5zZXQgcmVmZXJlbmNlIHRvIHByZWZpeCBvZgoJZGVyZWZlcmVuY2UpLgoKCSogc2VtX3ByYWcuYWRiIChBbmFseXplX1ByYWdtYSwgY2FzZSBQcmFnbWFfRGVidWcpOiBVbmlmb3JtbHkgcmV3cml0ZQoJcHJhZ21hIERlYnVnIGFzIGFuIGlmIHN0YXRlbWVudCB3aXRoIGEgY29uc3RhbnQgY29uZGl0aW9uLCBmb3IKCWNvbnNpc3RlbnQgdHJlYXRtZW50IG9mIGVudGl0eSByZWZlcmVuY2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlCgllbmNsb3NlZCBwcm9jZWR1cmUgY2FsbC4KCjIwMDQtMDktMDEgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogYmluZGdlbi5hZGI6IChTZXRfRUFfTGFzdCk6IE5ldyBwcm9jZWR1cmUKCShHZW5fRXhjZXB0aW9uX1RhYmxlX0FkYSwgR2VuX0V4Y2VwdGlvbl9UYWJsZV9DKTogVXNlIG5ldyBwcm9jZWR1cmUKCVNldF9FQV9MYXN0LgoJKEdlbl9BZGFmaW5hbF9BZGEpOiBJZiBubyBmaW5hbGl6YXRpb24sIGFkYWZpbmFsIGRvZXMgbm90aGluZwoJKEdlbl9PdXRwdXRfRmlsZV9BZGEpOiBBbHdheXMgY2FsbCBHZW5fQWRhZmluYWxfQWRhLCBzbyB0aGF0IFNBTCBjYW4gYmUKCWxpbmtlZCB3aXRob3V0IGVycm9ycy4KCShHZW5fRXhjZXB0aW9uX1RhYmxlX0FkYSk6IENvcnJlY3QgYnVncyB3aGVuIGdlbmVyYXRpbmcgY29kZSBmb3IgYXJyYXlzCglTVCBhbmQgRUEuCgkoR2VuX0V4Y2VwdGlvbl9UYWJsZV9DKTogQ29ycmVjdCBzYW1lIGJ1Z3MKCgkqIHZtc19kYXRhLmFkczogQWRkIG5ldyBxdWFsaWZpZXIgL1ZFUkJPU0VfQVNNIHRvIEdDQ19Td2l0Y2hlcwoKCSogZy1vc19saWIuYWRiIChOb3JtYWxpemVfUGF0aG5hbWUuR2V0X0RpcmVjdG9yeSk6IFdoZW4gRGlyIGlzIGVtcHR5LAoJb24gV2luZG93cywgbWFrZSBzdXJlIHRoYXQgdGhlIGRyaXZlIGxldHRlciBpcyBpbiB1cHBlciBjYXNlLgoKCSogZy1vc19saWIuYWRzIChOb3JtYWxpemVfUGF0aG5hbWUpOiBBZGQgYSBjb21tZW50IHRvIGluZGljYXRlIHRoYXQgb24KCVdpbmRvd3MsIHdoZW4gdGhlIGRyaXZlIGxldHRlciBpcyBhZGRlZCBhbmQgQ2FzZV9TZW5zaXRpdmUgaXMgVHJ1ZSwgdGhlCglkcml2ZSBsZXR0ZXIgaXMgZm9yY2VkIHRvIHVwcGVyIGNhc2UuCgoJKiBtbGliLXRndC1pcml4LmFkYiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogVHJhbnNmZXIgYWxsIC1seHh4IG9wdGlvbnMKCXRvIE9wdGlvbnNfMiBmb3IgdGhlIGNhbGwgdG8gTUxpYi5VdGwuR2NjLgoKCSogYmxkLmFkYiAoUHV0X0luY2x1ZGVfUHJvamVjdCk6IFVzZSAnLycsIG5vdCAnXCcgb24gV2luZG93cyBhcwoJZGlyZWN0b3J5IHNlcGFyYXRvciB3aGVuIGRlZmluaW5nIEJBU0VfRElSLgoKMjAwNC0wOS0wMSAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogZ3ByY21kLmFkYiAoRXh0ZW5kKTogRG8gbm90IG91dHB1dCB0cmFpbGluZyBkaXJlY3Rvcnkgc2VwYXJhdG9yLiBUaGlzCglpcyBub3QgbmVlZGVkIGFuZCBpdCBjb25mdXNlcyBXaW5kb3dzIEdOVS9tYWtlIHdoaWNoIGRvZXMgbm90IHJlcG9ydAoJZGlyZWN0b3J5IHRlcm1pbmF0ZWQgYnkgYSBzbGFzaCBhcyBhIGRpcmVjdG9yeS4KCShncHJjbWQpOiBJZGVtIGZvciAicHdkIiBpbnRlcm5hbCBjb21tYW5kLgoKCSogTWFrZWZpbGUuZ2VuZXJpYzogVXNlIF9fR1BSQ09MT05fXyBpbnN0ZWFkIG9mIHBpcGUgY2hhcmFjdGVyIGluCgl0YXJnZXQgbmFtZXMgcmV3cml0ZSB0byBmaXggcmVncmVzc2lvbnMgd2l0aCByZWNlbnQgdmVyc2lvbiBvZgoJR05VL21ha2UuIFN0YXJ0aW5nIHdpdGggR05VL21ha2UgMy44MCB0aGUgcGlwZSBjaGFyYWN0ZXIgd2FzIG5vdAoJaGFuZGxlZCBwcm9wZXJseSBhbnltb3JlLgoKMjAwNC0wOS0wMSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIE1ha2UtbGFuZy5pbiAoRVhUUkFfR05BVEJJTkRfT0JKUyk6IFJldmVydCBsYXN0IGNoYW5nZS4KCSogcmFpc2UuYyBbIUlOX1JUU106IFVuZGVmIGFib3J0LgoKMjAwNC0wOC0yNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHV0aWxzMi5jIChidWlsZF9hbGxvY2F0b3IpOiBVc2Ugc3NpemVfaW50LgoKCSogdXRpbHMuYyAoZ25hdF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkYSBoYXMgYSBzaWduZWQgc2l6ZXR5cGUuCgoyMDA0LTA4LTI3ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogTWFrZS1sYW5nLmluIChFWFRSQV9HTkFUQklORF9PQkpTKTogQWRkIGVycm9ycy5vLgoKMjAwNC0wOC0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCSAgICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWRhLXRyZWUuaCAoVFlQRV9STV9TSVpFX0lOVCk6IFVzZSBUWVBFX0xBTkdfU0xPVF8xLgoKMjAwNC0wOC0yNSAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGN1aW50cC5jIChVSV9Ub19nbnUpOiBBZGp1c3QgYnVpbGRfaW50X2NzdCBjYWxscy4KCSogdHJhbnMuYyAoRXhjZXB0aW9uX0hhbmRsZXJfdG9fZ251X3NqbGosIGduYXRfdG9fZ251KTogTGlrZXdpc2UuCgkqIHV0aWxzLmMgKGluaXRfZ2lnaV9kZWNscyk6IExpa2V3aXNlLgoJKiB1dGlsczIuYyAoYnVpbGRfY2FsbF9yYWlzZSwgYnVpbGRfYWxsb2NhdG9yKTogTGlrZXdpc2UuCgoyMDA0LTA4LTI0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdXRpbHMuYyAoZ25hdF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IEFkanVzdAoJYnVpbGRfY29tbW9uX3RyZWVfbm9kZXMgY2FsbC4KCjIwMDQtMDgtMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB1dGlsczIuYyAoYnVpbGRfYWxsb2NhdG9yKTogVXNlIGJ1aWxkX2ludF9jc3QgZm9yIG5lZ2F0aXZlCglzaXplIHR5cGVzLgoKMjAwNC0wOC0xOCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIG1pc2MuYyAoTEFOR19IT09LU19IT05PUl9SRUFET05MWSk6IFJlbW92ZS4KCjIwMDQtMDgtMTYgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjdWludHAuYyAoVUlfVG9fZ251KTogQmUgbW9yZSBjb25zZXJ2YXRpdmUgd2l0aCBidWlsZF9pbnRfY3N0CgljYWxsLnMKCSogdHJhbnMuYyAoRXhjZXB0aW9uX0hhbmRsZXJfdG9fZ251X3NqbGopOiBMaWtld2lzZS4KCShnbmF0X3RvX2dudSk6IExpa2V3aXNlLgoKMjAwNC0wOC0xNiAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogYWRhaW50LmMgKF9fZ25hdF9wcmpfYWRkX29ial9maWxlcyk6IFNldCB0byAwIG9ubHkgb24gV2luMzIgZm9yIEdDQwoJYmFja2VuZCBwcmlvciB0byBHQ0MgMy40LiBXaXRoIEdDQyAzLjQgd2UgYXJlIHVzaW5nIHRoZSBHQ0MncyBzaGFyZWQKCW9wdGlvbiBhbmQgbm90IG1kbGwgYW55bW9yZS4gVXBkYXRlIGNvbW1lbnQuCgoyMDA0LTA4LTE2ICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBibGQuYWRiIChQdXRfSW5jbHVkZV9Qcm9qZWN0KTogUHJvcGVybHkgaGFuZGxlIGRpcmVjdG9yeSBzZXBhcmF0b3JzCglvbiBXaW5kb3dzLgoKMjAwNC0wOC0xNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoNC5hZGIgKFRyeV9PYmplY3RfT3BlcmF0aW9uKTogUmVzdHJ1Y3R1cmUgY29kZS4gT3B0aW1pemUgYnkKCWRlY3JlYXNpbmcgdGhlIG51bWJlciBvZiBhbGxvY2F0ZWQganVuayBub2RlcyB3aGlsZSBzZWFyY2hpbmcgZm9yIHRoZQoJYXBwcm9wcmlhdGUgc3VicHJvZ3JhbS4KCjIwMDQtMDgtMTUgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBjdWludHAuYyAoVUlfVG9fZ251KTogVXNlIGJ1aWxkX2ludF9jc3QuLgoJKiB0cmFucy5jIChFeGNlcHRpb25fSGFuZGxlcl90b19nbnVfc2psaiwgZ25hdF90b19nbnUpOiBMaWtld2lzZS4KCSogdXRpbHMuYyAoaW5pdF9naWdpX2RlY2xzKTogTGlrZXdpc2UuCgkqIHV0aWxzMi5jIChidWlsZF9jYWxsX3JhaXNlKTogTGlrZXdpc2UuCgoyMDA0LTA4LTEzICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPEVfVmFyaWFibGU+OiBXaGVuIGJ1aWxkaW5nIGFuIGFsbG9jYXRvcgoJZm9yIGEgZ2xvYmFsIGFsaWFzZWQgb2JqZWN0IHdpdGggYSB2YXJpYWJsZSBzaXplIGFuZCBhbiB1bmNvbnN0cmFpbmVkCglub21pbmFsIHN1YnR5cGUsIHByZXRlbmQgdGhlcmUgaXMgbm8gaW5pdGlhbGl6ZXIgaWYgdGhlIG9uZSB3ZSBoYXZlIGlzCglpbmNvbXBsZXRlLCBhbmQgYXZvaWQgcmVmZXJlbmNpbmcgYW4gaW5leGlzdGFudCBjb21wb25lbnQgaW4gdGhlcmUuIFRoZQoJcGFydCB3ZSBoYXZlIHdpbGwgYmUgcmVidWlsdCBhbnl3YXkgYW5kIHRoZSByZWZlcmVuY2UgbWF5IGNvbmZ1c2UKCWZ1cnRoZXIgb3BlcmF0aW9ucy4KCjIwMDQtMDgtMTMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGVpbmZvLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBsaWItd3JpdC5hZGIgKE91dHB1dF9NYWluX1Byb2dyYW1fTGluZSk6IERvIG5vdCBzZXQgcGFyYW1ldGVyCglyZXN0cmljdGlvbnMgaW4gdGhlIEFMSSBpZiB3ZSBvbmx5IHdhbnQgdG8gd2FybiBhYm91dCB2aW9sYXRpb25zLgoKMjAwNC0wOC0xMyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBhbGkuYWRiIChTY2FuX0FMSSk6IEluaXRpYWxpemUgY29tcG9uZW50IEJvZHlfTmVlZGVkX0Zvcl9TQUwgdG8gRmFsc2UKCXdoZW4gY3JlYXRpbmcgYSBuZXcgVW5pdF9SZWNvcmQgaW4gdGFibGUgVW5pdHMuCgoJKiBnbmF0bHMuYWRiIChPdXRwdXRfVW5pdCk6IEluIHZlcmJvc2UgbW9kZSwgb3V0cHV0IHRoZSByZXN0cmljdGlvbnMKCXRoYXQgYXJlIHZpb2xhdGVkLCBpZiBhbnkuCgoJKiBwcmotbm1zYy5hZGIgKEFkYV9DaGVjay5HZXRfUGF0aF9OYW1lc19BbmRfUmVjb3JkX1NvdXJjZXMpOiBEbyBub3QKCWFkZCBkaXJlY3Rvcnkgc2VwYXJhdG9yIGlmIHBhdGggYWxyZWFkeSBlbmRzIHdpdGggYSBkaXJlY3Rvcnkgc2VwYXJhdG9yLgoKMjAwNC0wOC0xMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogcnRzZmluZC5hZGIgKEVudGl0eV9Ob3RfRGVmaW5lZCk6IElmIHRoZSBlcnJvciBvY3VycnMgaW4gYSBwcmVkZWZpbmVkCgl1bml0LCB0aGlzIGlzIGFuIGF0dGVtcHQgdG8gaW5saW5lIGEgY29uc3RydWN0IHRoYXQgaXMgbm90IGF2YWlsYWJsZSBpbgoJdGhlIGN1cnJlbnQgcmVzdHJpY3RlZCBtb2RlLCBzbyBhYm9ydCByYXRoZXIgdGhhbiB0cnlpbmcgdG8gY29udGludWUuCgoJKiBzZW1fY2gzLmFkYiAoQnVpbGRfVW5kZXJseWluZ19GdWxsX1ZpZXcpOiBJZiB0aGUgbmV3IHR5cGUgaGFzCglkaXNjcmltaW5hbnRzIHRoYXQgcmVuYW1lIHRob3NlIG9mIHRoZSBwYXJlbnQsIHJlY292ZXIgbmFtZXMgb2YKCW9yaWdpbmFsIGRpc2NyaW1pbmFudHMgZm9yIHRoZSBjb25zdHJhaW50IG9uIHRoZSBmdWxsIHZpZXcgb2YgdGhlCglwYXJlbnQuCgkoQ29tcGxldGVfUHJpdmF0ZV9TdWJ0eXBlKTogRG8gbm90IGNyZWF0ZSBhIHN1YnR5cGUgZGVjbGFyYXRpb24gaWYgdGhlCglzdWJ0eXBlIGlzIGFuIGl0eXBlLgoKCSogZ25hdF9ybS50ZXhpOiBBZGRlZCBzZWN0aW9uIG9uIGltcGxlbWVudGF0aW9uIG9mIGRpc2NyaW1pbmF0ZWQKCXJlY29yZHMgd2l0aCBkZWZhdWx0IHZhbHVlcyBmb3IgZGlzY3JpbWluYW50cy4KCjIwMDQtMDgtMTMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTU2MDEKCSogc2VtX3Jlcy5hZGIgKE1ha2VfQ2FsbF9JbnRvX09wZXJhdG9yKTogSGFuZGxlIHByb3Blcmx5IHRoZSBjYXNlIHdoZXJlCgl0aGUgc2Vjb25kIG9wZXJhbmQgaXMgb3ZlcmxvYWRlZC4KCjIwMDQtMDgtMTAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB1dGlscy5jIChnbmF0X2luc3RhbGxfYnVpbHRpbnMpOiBSZW1vdmUgX19idWlsdGluX3N0YWNrX2FsbG9jLAoJYWRkIF9fYnVpbHRpbl9hbGxvY2EuCgoyMDA0LTA4LTEwICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29uZmlnLWxhbmcuaW4gKGJvb3RfbGFuZ3VhZ2UpOiBZZXMuCgoyMDA0LTA4LTA5ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBnLXNvY2tldC5hZGIgKEFib3J0X1NlbGVjdG9yKTogSW5pdGlhbGl6ZSBCdWYgdG8gcHJldmVudCB2YWxncmluZAoJZnJvbSBjb21wbGFpbmluZyBvbiBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCByZWZlcmVuY2UuCglDaGFuZ2UgY2FsbHMgdG8gR05BVC5Tb2NrZXRzLlRoaW4uSXNfU29ja2V0X0luX1NldCB0byBhY2NvdW50IGZvcgoJbmV3IHNwZWNpZmljYXRpb24gYW5kIHRlc3QgZXhwbGljaXRseSBmb3Igbm9uLXplcm8gcmV0dXJuIHZhbHVlLgoKCSogZy1zb2N0aGkuYWRzIChJc19Tb2NrZXRfSW5fU2V0KTogRGVjbGFyZSBpbXBvcnRlZCBmdW5jdGlvbiBhcwoJcmV0dXJuaW5nIEMuaW50LCB0byBhdm9pZCB1c2luZyBhIGRlcml2ZWQgYm9vbGVhbiB0eXBlLgoKCSogZXhwX2NoNS5hZGIgKE1ha2VfVGFnX0N0cmxfQXNzaWdubWVudHMpOiBVc2UKCUR1cGxpY2F0ZV9TdWJleHByX05vX0NoZWNrcyBpbiBwcmVmZXJlbmNlIHRvIGRpcmVjdCB1c2Ugb2YKCVJlbW92ZV9TaWRlX0VmZmVjdHMgYW5kIE5ld19Db3B5X1RyZWUuCglDbGVhciBDb21lc19Gcm9tX1NvdXJjZSBvbiBwcmVmaXggb2YgJ1NpemUgYXR0cmlidXRlIHJlZmVyZW5jZS4KCgkqIGctc29jdGhpLmFkYiwgZy1zb2N0aGktdm1zLmFkYiwgZy1zb2N0aGktbWluZ3cuYWRiLAoJZy1zb2N0aGktdnh3b3Jrcy5hZGI6IENoYW5nZSBjYWxscyB0bwoJR05BVC5Tb2NrZXRzLlRoaW4uSXNfU29ja2V0X0luX1NldCB0byBhY2NvdW50IGZvciBuZXcgc3BlY2lmaWNhdGlvbgoJYW5kIHRlc3QgZXhwbGljaXRseSBmb3Igbm9uLXplcm8gcmV0dXJuIHZhbHVlLgoKCSogZy1zb2N0aGktdm1zLmFkcywgZy1zb2N0aGktbWluZ3cuYWRzLCBnLXNvY3RoaS12eHdvcmtzLmFkczoKCShJc19Tb2NrZXRfSW5fU2V0KTogRGVjbGFyZSBpbXBvcnRlZCBmdW5jdGlvbiBhcyByZXR1cm5pbmcgQy5pbnQsIHRvCglhdm9pZCB1c2luZyBhIGRlcml2ZWQgYm9vbGVhbiB0eXBlLgoKMjAwNC0wOC0wOSAgQWxiZXJ0IExlZSAgPGxlZUBnbmF0LmNvbT4KCgkqIHN5c3RlbS1pcml4LW4zMi5hZHM6IFJlZmluZSB0YXNraW5nIHByaW9yaXR5IGNvbnN0YW50cyBmb3IgSVJJWC4KCjIwMDQtMDgtMDkgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIGduYXRfdWduLnRleGk6IERvY3VtZW50IG5ldyB3YXkgdG8gYnVpbGQgRExMcyBvbiBXaW5kb3dzIHVzaW5nCglHQ0MncyAtc2hhcmVkIG9wdGlvbi4KCgkqIG1saWItdGd0LW1pbmd3LmFkYiAoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogUGFzcyBHQ0MncyBvcHRpb25zIGludG8KCU9wdGlvbnNfMiBwYXJhbWV0ZXIgKG9wdGlvbnMgcHV0IGFmdGVyIG9iamVjdCBmaWxlcykuCgoyMDA0LTA4LTA5ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSkgPEVfQXJyYXlfU3VidHlwZT46IEFkanVzdCBjb25kaXRpb24gdG8KCWlnbm9yZSBvdmVyZmxvd3Mgb24gbG93IGFuZCBoaWdoIGJvdW5kcyBvZiBhbiBpbmRleCB0byBhbHNvIGFjY291bnQgZm9yCglkaWZmZXJlbmNlcyBpbiBzaWduZWRuZXNzIGJldHdlZW4gc2l6ZXR5cGUgYW5kIGdudV9pbmRleF9zdWJ0eXBlLgoJVGhlc2UgYXJlIGFzIGxlZ2l0aW1hdGUgYXMgdGhlIG9uZXMgY2F1c2VkIGJ5IGEgbG93ZXIgVFlQRV9QUkVDSVNJT04KCW9uIHNpemV0eXBlLgoKMjAwNC0wOC0wOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzLXNvbGl0YS5hZHMsIHMtc29saXRhLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBnbmF0X3JtLnRleGk6IEFkZCBkb2N1bWVudGF0aW9uIGZvciBwcmFnbWEgUHJvZmlsZSAoUmVzdHJpY3RlZCkKCU1vdmUgcHJhZ21hIFJlc3RyaWN0ZWRfUnVuX1RpbWUsIE5vX1J1bl9UaW1lLCBSYXZlbnNjYXIgdG8gbmV3CglvYnNvbGVzY2VudCBzZWN0aW9uCglBZGQgbm90ZSB0aGF0IE5vX0ltcGxpY2l0X0NvbmRpdGlvbmFscyBkb2VzIG5vdCBzdXBwcmVzcwoJcnVuIHRpbWUgY29uc3RyYWludCBjaGVja3MuCgoJKiB2bXNfY29udi5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcy1zZWNzdGEuYWRiOiBVc2UgU1NfUHRyIGluc3RlYWQgb2YgTWFya19JZCBhcyBzdGFjayBwb2ludGVyIChjbGVhbnVwCglhbmQgbmVjZXNzYXJ5IGZvciBmb2xsb3dpbmcgY2hhbmdlKS4KCShNYXJrKTogUmV0dXJuIG5ldyBmb3JtYXQgTWFya19JZCBjb250YWluaW5nIHNlYyBzdGFjayBhZGRyZXNzCgkoUmVsZWFzZSk6IFVzZSBzZWMgc3RhY2sgYWRkcmVzcyBmcm9tIE1hcmtfSWQgYXZvaWRpbmcgU2VsZiBjYWxsCgoJKiBzLXNlY3N0YS5hZHM6IERlZmluZSBTU19QdHIgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIE1hcmtfSWQgYXMgc3RhY2sKCXBvaW50ZXIgKGNsZWFudXAgYW5kIG5lY2Vzc2FyeSBmb3IgZm9sbG93aW5nIGNoYW5nZSkuCglEZWZpbmUgTWFya19JZCBhcyByZWNvcmQgY29udGFpbmluZyBhZGRyZXNzIG9mIHNlY29uZGFyeSBzdGFjaywgdGhhdCB3YXkKCVJlbGVhc2UgZG9lcyBub3QgbmVlZCB0byBmaW5kIHRoZSBzdGFjayBhZ2FpbiwgZGVjcmVhc2luZyB0aGUgbnVtYmVyIG9mCgljYWxscyB0byBTZWxmIGFuZCBpbXByb3ZpbmcgZWZmaWNpZW5jeS4KCgkqIHNlbV91dGlsLmFkczogQWRkIGEgPz8/IGNvbW1lbnQgZm9yIElzX0xvY2FsX1ZhcmlhYmxlX1JlZmVyZW5jZQoKCSogc2VtX2NoNS5hZGIgKEFuYWx5emVfQ2FzZV9TdGF0ZW1lbnQpOiBBZGQgY2lyY3VpdHJ5IHRvIHRyYWNrIHZhbHVlIG9mCgljYXNlIHZhcmlhYmxlIGludG8gdGhlIGluZGl2aWR1YWwgY2FzZSBicmFuY2hlcyB3aGVuIHBvc3NpYmxlLgoKCSogc2VtX2NoMTEuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHByai5hZHM6IENvcnJlY3Qgc3BlbGxpbmcgb2Ygc3VmZml4cwoKCSogcHJqLW5tc2MuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCUNvcnJlY3Qgc3BlbGxpbmcgc3VmZml4cyB0aHJvdWdob3V0IChhbHNvIGluIGlkZW50aWZpZXJzKQoKCSogZnJlZXplLmFkYjogTWlub3Igc3BlbGxpbmcgY29ycmVjdGlvbgoKCSogZXhwX2NoMi5hZGI6IENsZWFudXBzIHRvIGhhbmRsaW5nIG9mIEN1cnJlbnRfVmFsdWUKCShubyBmdW5jdGlvbmFsIGVmZmVjdCkuCgoJKiBibGQuYWRiOiBDb3JyZWN0IHNwZWxsaW5nIG9mIHN1ZmZpeHMKCgkqIGVpbmZvLmFkYiAoRW5jbG9zaW5nX0R5bmFtaWNfU2NvcGUpOiBEZWZlbmQgYWdhaW5zdCBqdW5rIGFyZ3VtZW50CgoyMDA0LTA4LTA5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzE1NDA4CgkqIHNlbV9jaDcuYWRiIChJbnN0YWxsX1ByaXZhdGVfRGVjbGFyYXRpb25zKTogSW4gdGhlIGJvZHkgb2YgdGhlCglwYWNrYWdlIG9yIG9mIGEgY2hpbGQsIHByaXZhdGUgZW50aXRpZXMgYXJlIGJvdGggaW1tZWRpYXRlbHlfdmlzaWJsZQoJYW5kIG5vdCBoaWRkZW4uCgoyMDA0LTA4LTA5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fZXZhbC5hZGIgKEV2YWxfSW50ZWdlcl9MaXRlcmFsKTogSWYgdGhlIGNvbnRleHQgaXMgQW55X0ludGVnZXIsCgl0aGVyZSBhcmUgbm8gcmFuZ2UgY2hlY2tzIG9uIHRoZSB2YWx1ZSBvZiB0aGUgbGl0ZXJhbC4KCgkqIGV4cF9jaDcuYWRiIChJbnNlcnRfQWN0aW9uc19Jbl9TY29wZV9Bcm91bmQpOiBJZiB0aGUgbm9kZSBiZWluZwoJd3JhcHBlZCBpcyB0aGUgdHJpZ2dlcmluZyBhbHRlcm5hdGl2ZSBvZiBhbiBhc3luY2hyb25vdXMgc2VsZWN0LCBhY3Rpb24KCXN0YXRlbWVudHMgbXVzdGJlIGluc2VydGVkIGJlZm9yZSB0aGUgc2VsZWN0IGl0c2VsZi4KCgkqIHNlbV9hdHRyLmFkYiAoQW5hbHl6ZV9BdHRyaWJ1dGUsIGNhc2UgJ1NpemUpOiBIYW5kbGUgcHJvcGVybHkgdGhlCgljYXNlIHdoZXJlIHRoZSBwcmVmaXggaXMgYSBwcm90ZWN0ZWQgZnVuY3Rpb24gY2FsbC4KCShSZXNvbHZlX0F0dHJpYnV0ZSwgY2FzZSAnQWNjZXNzKTogVGhlIGF0dHJpYnV0ZSByZWZlcmVuY2Ugb24gYQoJc3VicHJvZ3JhbSBpcyBsZWdhbCBpbiBhIGdlbmVyaWMgYm9keSBpZiB0aGUgc3VicHJvZ3JhbSBpcyBkZWNsYXJlZAoJZWxzZXdoZXJlLgoKMjAwNC0wOC0wOSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtYWtlZ3ByLmFkYiAoQnVpbGRfTGlicmFyeSk6IExpbmsgd2l0aCBnKysgaWYgQysrIGlzIG9uZSBvZiB0aGUKCWxhbmd1YWdlcywgb3RoZXJ3aXNlIGJ1aWxkaW5nIHRoZSBsaWJyYXJ5IG1heSBmYWlsIHdpdGggdW5yZXNvbHZlZAoJc3ltYm9scy4KCShDb21waWxlX1NvdXJjZXMpOiBEbyBub3QgYnVpbGQgbGlicmFyaWVzIGlmIC1jIHN3aXRjaCBpcyB1c2VkCgoJKiBnbmF0bGluay5hZGIgKFByb2Nlc3NfQXJncyk6IE5ldyBzd2l0Y2hlcyAtTSBhbmQgLU1tYXAKCShXcml0ZV9Vc2FnZSk6IElmIG1hcCBmaWxlIGNyZWF0aW9uIGlzIHN1cHBvcnRlZCwgb3V0cHV0IG5ldyBzd2l0Y2hlcwoJLU0gYW5kIC1NbWFwLgoJKEduYXRsaW5rKTogV2hlbiAtTSBpcyBzcGVjaWZpZWQsIGFkZCB0aGUgbmVjZXNzYXJ5IHN3aXRjaChlcykgdG8gdGhlCglnY2MgY2FsbCwgd2hlbiBzdXBwb3J0ZWQuCgoJKiBNYWtlZmlsZS5pbjogQWRkZWQgaW5kZXBzdy5vIHRvIHRoZSBvYmplY3QgbGlzdCBmb3IgZ25hdGxpbmsKCVNwZWNpZmllZCB0aGUgQUlYLCBHTlUvTGludXggYW5kIFdpbmRvd3MgdmVyc2lvbnMgb2YgaW5kZXBzdy5hZGIKCgkqIGluZGVwc3ctYWl4LmFkYiwgaW5kZXBzdy1saW51eC5hZGIsIGluZGVwc3ctbWluZ3cuYWRiLAoJaW5kZXBzdy5hZGIsIGluZGVwc3cuYWRzOiBOZXcgZmlsZXMuCgoyMDA0LTA4LTA5ICBCZXJuYXJkIEJhbm5lciAgPGJhbm5lckBnbmF0LmNvbT4KCgkqIHN5c3RlbS12eHdvcmtzLXg4Ni5hZHMsIHMtdnh3b3JrLXg4Ni5hZHM6IE5ldyBmaWxlcy4KCgkqIE1ha2VmaWxlLmluOiBhZGQgc2VjdGlvbiBmb3Igdnh3b3JrcyB4ODYKCjIwMDQtMDgtMDkgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAZ25hdC5jb20+CgoJKiBleHBfY2gzLmFkYiAoQnVpbGRfSW5pdF9TdGF0ZW1lbnRzKTogQWRkIGV4dHJhIGNvbmRpdGlvbiB0byBkZWFsIHdpdGgKCXBlci1vYmplY3QgY29uc3RyYWluZWQgY29tcG9uZW50cyB3aGVyZSB0aGUgZGlzY3JpbWluYW50IGlzIG9mIGFuCglBY2Nlc3MgdHlwZS4KCShCdWlsZF9SZWNvcmRfSW5pdF9Qcm9jKTogQWRkIGNvbmRpdGlvbiB0byBwcmV2ZW50IHRoZSBpbmhlcml0YW5jZSBvZgoJdGhlIHBhcmVudCBpbml0aWFsaXphdGlvbiBwcm9jZWR1cmUgZm9yIGRlcml2ZWQgVW5jaGVja2VkX1VuaW9ucy4KCUluc3RlYWQsIGRlcml2ZWQgVW5jaGVja2VkX1VuaW9ucyBidWlsZCB0aGVpciBvd24gaW5pdGlhbGl6YXRpb24KCXByb2NlZHVyZS4KCShCdWlsZF9WYXJpYW50X1JlY29yZF9FcXVhbGl0eSk6IEltcGxlbWVudCBVbmNoZWNrZWRfVW5pb24gZXF1YWxpdHkuCglDaGVjayB0aGUgYm9keSBvZiB0aGUgc3VicHJvZ3JhbSBmb3IgZGV0YWlscy4KCShGcmVlemVfUmVjb3JkX1R5cGUpOiBQcmV2ZW50IHRoZSBpbmhlcml0YW5jZSBvZiBkaXNjcmltaW5hbnQgY2hlY2tpbmcKCWZ1bmN0aW9ucyBmb3IgZGVyaXZlZCBVbmNoZWNrZWRfVW5pb24gdHlwZXMgYnkgaW50cm9kdWNpbmcgYSBjb25kaXRpb24uCglBbGxvdyB0aGUgY3JlYXRpb24gb2YgVFNTIGVxdWFsaXR5IGZ1bmN0aW9ucyBmb3IgVW5jaGVja2VkX1VuaW9ucy4KCShNYWtlX0VxX0Nhc2UpOiBSZW5hbWUgZm9ybWFsIHBhcmFtZXRlciBOb2RlIHRvIEUgaW4gZnVuY3Rpb24gc2lnbmF0dXJlLgoJQWRkIGZvcm1hbCBwYXJhbWV0ZXIgRGlzY3IgdG8gZnVuY3Rpb24gc2lnbmF0dXJlLiBEaXNjciBpcyB1c2VkIHRvCgljb250cm9sIHRoZSBnZW5lcmF0ZWQgY2FzZSBzdGF0ZW1lbnQgZm9yIFVuY2hlY2tlZF9VbmlvbiB0eXBlcy4KCShNYWtlX0VxX0lmKTogUmVuYW1lIGZvcm1hbCBwYXJhbWV0ZXIgTm9kZSB0byBFIGluIGZ1bmN0aW9uIHNpZ25hdHVyZS4KCgkqIGV4cF9jaDQuYWRiIChCdWlsZF9FcXVhbGl0eV9DYWxsKTogSW1wbGVtZW50IGVxdWFsaXR5IGNhbGxzIGZvcgoJVW5jaGVja2VkX1VuaW9ucy4KCUNoZWNrIHRoZSBib2R5IG9mIHRoZSBzdWJwcm9ncmFtIGZvciBkZXRhaWxzLgoJKEV4cGFuZF9Db21wb3NpdGVfRXF1YWxpdHkpOiBBdWdtZW50IGNvbXBvc2l0ZSB0eXBlIGVxdWFsaXR5IHRvIGluY2x1ZGUKCWNvcnJlY3QgaGFuZGxpbmcgb2YgVW5jaGVja2VkX1VuaW9uIGNvbXBvbmVudHMuCgkoRXhwYW5kX05fSW4pOiBBZGQgY29uZGl0aW9uIHRvIGRldGVjdCBpbGxlZ2FsIG1lbWJlcnNoaXAgdGVzdHMgd2hlbiB0aGUKCXN1YnR5cGUgbWFyayBpcyBhIGNvbnN0cmFpbmVkIFVuY2hlY2tlZF9VbmlvbiBhbmQgdGhlIGV4cHJlc3Npb24gbGFja3MKCWluZmVyYWJsZSBkaXNjcmltaW5hbnRzLCBhbmQgYnVpbGQgYSBSYWlzZV9Qcm9ncmFtX0Vycm9yIG5vZGUuCgkoRXhwYW5kX05fT3BfRXEpOiBBZGQgZnVuY3Rpb24gSGFzX1VuY29uc3RyYWluZWRfVVVfQ29tcG9uZW50LiBVc2VkCgl0byBkZXRlY3QgdHlwZXMgdGhhdCBjb250YWluIGNvbXBvbmVudHMgb2YgdW5jb25zdHJhaW5lZCBVbmNoZWNrZWRfVW5pb24KCXN1YnR5cGUuIEFkZCBjb25kaXRpb24gdG8gZGV0ZWN0IGVxdWFsaXR5IGJldHdlZW4gdHlwZXMgdGhhdCBoYXZlIGFuCgl1bmNvbnN0cmFpbmVkIFVuY2hlY2tlZF9VbmlvbiBjb21wb25lbnQsIGFuZCBidWlsZCBhIFJhaXNlX1Byb2dyYW1fRXJyb3IKCW5vZGUuIEFkZCBjb25kaXRpb24gdG8gZGV0ZWN0IGVxdWFsaXR5IGJldHdlZW4gVW5jaGVja2VkX1VuaW9uIHR5cGVzCgl0aGF0IGxhY2sgaW5mZXJhYmxlIGRpc2NyaW1pbmFudHMsIGFuZCBidWlsZCBhIFJhaXNlX1Byb2dyYW1fRXJyb3Igbm9kZS4KCU90aGVyd2lzZSBidWlsZCBhIFRTUyBlcXVhbGl0eSBmdW5jdGlvbiBjYWxsLgoJKEV4cGFuZF9OX1R5cGVfQ29udmVyc2lvbik6IEFkZCBjb25kaXRpb24gdG8gZGV0ZWN0IGlsbGVnYWwgY29udmVyc2lvbnMKCWZyb20gYSBkZXJpdmVkIFVuY2hlY2tlZF9VbmlvbiB0byBhbiB1bmNvbnN0cmFpbmVkIG5vbi1VbmNoZWNrZWRfVW5pb24KCXdpdGggdGhlIG9wZXJhbmQgbGFja2luZyBpbmZlcmFibGUgZGlzY3JpbWluYW50cywgYW5kIGJ1aWxkIGEgUmFpc2VfCglQcm9ncmFtX0Vycm9yIG5vZGUuCgkoRXhwYW5kX1JlY29yZF9FcXVhbGl0eSk6IFJlbW92ZSBndWFyZCB0aGF0IHByZXZlbnRzIFVuY2hlY2tlZF9VbmlvbgoJY29tcG9zaXRlIGVxdWFsaXR5LgoJKEhhc19JbmZlcmFibGVfRGlzY3JpbWluYW50cyk6IEltcGxlbWVudCBuZXcgcHJlZGljYXRlIGZvciBvYmplY3RzIGFuZAoJZXhwcmVzc2lvbnMgb2YgVW5jaGVja2VkX1VuaW9uIHR5cGUuIENoZWNrIHRoZSBib2R5IG9mIHN1YnByb2dyYW0gZm9yCglkZXRhaWxzLgoJKEhhc19VbmNvbnN0cmFpbmVkX1VVX0NvbXBvbmVudHMpOiBBZGQgZnVuY3Rpb24KCUNvbXBvbmVudF9Jc19VbmNvbnN0cmFpbmVkX1VVLiBJdCBpcyB1c2VkIHRvIGRldGVjdCB3aGV0aGVyIGEgc2luZ2xlCgljb21wb25lbnQgaXMgb2YgYW4gdW5jb25zdHJhaW5lZCBVbmNoZWNrZWRfVW5pb24gc3VidHlwZS4gQWRkIGZ1bmN0aW9uCglWYXJpYW50X0lzX1VuY29uc3RyYWluZWRfVVUuIEl0IGlzIHVzZWQgdG8gZGV0ZWN0IHdoZXRoZXIgYSBzaW5nbGUKCWNvbXBvbmVudCBpbnNpZGUgYSB2YXJpYW50IGlzIG9mIGFuIHVuY29uc3RyYWluZWQgVW5jaGVja2VkX1VuaW9uIHR5cGUuCgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX0Fzc2lnbl9SZWNvcmQpOiBBZGQgY29uZGl0aW9uIHRvIGNvcHkgdGhlCglpbmZlcnJlZCBkaXNjcmltaW5hbnQgdmFsdWVzLiBBZGQgY29uZGl0aW9uIHRvIGdlbmVyYXRlIGEgY2FzZQoJc3RhdGVtZW50IHdpdGggYW4gaW5mZXJyZWQgZGlzY3JpbWluYW50IGFzIHRoZSBzd2l0Y2guCgkoTWFrZV9Db21wb25lbnRfTGlzdF9Bc3NpZ24pOiBJbnRyb2R1Y2UgYSBCb29sZWFuIGZsYWcgdGhhdCBkZXRlcm1pbmVzCgl0aGUgYmVoYXZpb3VyIG9mIHRoZSBzdWJwcm9ncmFtIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBVbmNoZWNrZWRfVW5pb24uCglBZGQgY29uZGl0aW9uIHRvIHRyaWdnZXIgdGhlIHVzYWdlIG9mIHRoZSBpbmZlcnJlZCBkaXNjcmltaW5hbnQgdmFsdWUKCWFzIHRoZSBnZW5lcmF0ZWQgY2FzZSBzdGF0ZW1lbnQgc3dpdGNoLgoJKE1ha2VfRmllbGRfQXNzaWduKTogSW50cm9kdWNlIGEgQm9vbGVhbiBmbGFnIHRoYXQgZGV0ZXJtaW5lcyB0aGUKCWJlaGF2aW91ciBvZiB0aGUgc3VicHJvZ3JhbSBpbiB0aGUgcHJlc2VuY2Ugb2YgYW4gVW5jaGVja2VkX1VuaW9uLiBBZGQKCWNvbmRpdGlvbiB0byB0cmlnZ2VyIHRoZSB1c2FnZSBvZiB0aGUgaW5mZXJyZWQgZGlzY3JpbWluYW50IHZhbHVlIGFzCgl0aGUgcmlnaHQtaGFuZCBzaWRlIG9mIHRoZSBnZW5lcmF0ZWQgYXNzaWdubWVudC4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IEFkZCBjb25kaXRpb24gdG8gc2tpcCBleHRyYSBhY3R1YWwKCXBhcmFtZXRlciBnZW5lcmF0aW9uIHdoZW4gZGVhbGluZyB3aXRoIFVuY2hlY2tlZF9VbmlvbnMuCgoJKiBjaGVja3MuYWRiIChBcHBseV9EaXNjcmltaW5hbnRfQ2hlY2spOiBEbyBub3QgYXBwbHkgZGlzY3JpbWluYW50CgljaGVja3MgZm9yIFVuY2hlY2tlZF9VbmlvbnMuCgoJKiBlaW5mby5hZHM6IFVwZGF0ZSBjb21tZW50IG9uIHVzYWdlIG9mIGZsYWcgSGFzX1Blcl9PYmplY3RfQ29uc3RyYWludAoKCSogZXhwX2F0dHIuYWRiIChFeHBhbmRfTl9BdHRyaWJ1dGVfUmVmZXJlbmNlKTogUHJvZHVjZQoJUmFpc2VfUHJvZ3JhbV9FcnJvciBub2RlcyBmb3IgdGhlIGV4ZWN1dGlvbiBvZiBSZWFkIGFuZCBXcml0ZQoJYXR0cmlidXRlcyBvZiBVbmNoZWNrZWRfVW5pb24gdHlwZXMgYW5kIHRoZSBleGVjdXRpb24gb2YgSW5wdXQgYW5kCglPdXRwdXQgYXR0cmlidXRlcyBvZiBVbmNoZWNrZWRfVW5pb24gdHlwZXMgdGhhdCBsYWNrIGRlZmF1bHQKCWRpc2NyaW1pbmFudCB2YWx1ZXMuCgoJKiBzZW1fcHJhZy5hZGIgKEFuYWx5emVfUHJhZ21hKTogUmVtb2RlbCB0aGUgYW5hbHlzaXMgb2YgcHJhZ21hCglVbmNoZWNrZWRfVW5pb24uIEFkZCBwcm9jZWR1cmUgQ2hlY2tfQ29tcG9uZW50LiBJdCBpcyB1c2VkIHRvIGluc3BlY3QKCXBlci1vYmplY3QgY29uc3RyYWluZWQgY29tcG9uZW50cyBvZiBVbmNoZWNrZWRfVW5pb25zIGZvciBiZWluZwoJVW5jaGVja2VkX1VuaW9ucyB0aGVtc2VsdmVzLiBBZGQgcHJvY2VkdXJlIENoZWNrX1ZhcmlhbnQuIEl0IGlzIHVzZWQgdG8KCWNoZWNrIGluZGl2aWR1YWwgY29tcG9uZW50cyB3aXRoaW5nIGEgdmFyaWFudC4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX0NvbXBhcmlzb25fT3ApOiBSZW1vdmUgZ3VhcmQgdGhhdCBwcmV2ZW50cwoJY29tcGFyaXNvbiBvZiBVbmNoZWNrZWRfVW5pb25zLgoJKFJlc29sdmVfRXF1YWxpdHlfT1ApOiBSZW1vdmUgZ3VhcmQgdGhhdCBwcmV2ZW50cyBlcXVhbGl0eSBiZXR3ZWVuCglVbmNoZWNrZWRfVW5pb25zLgoKCSogc2VtX3V0aWwuYWRiIChCdWlsZF9Db21wb25lbnRfU3VidHlwZSk6IEFkZCBndWFyZCB0byBwcmV2ZW50IGNyZWF0aW9uCglvZiBjb21wb25lbnQgc3VidHlwZXMgZm9yIFVuY2hlY2tlZF9VbmlvbiBjb21wb25lbnRzLgoJKEdldF9BY3R1YWxfU3VidHlwZSk6IEFkZCBjb25kaXRpb24gdGhhdCByZXR1cnMgdGhlIFVuY2hlY2tlZF9VbmlvbiB0eXBlCglzaW5jZSBpdCBpcyB0aGUgYWN0dWFsIHN1YnR5cGUuCgoJKiBzZW1fY2gxMi5hZGIgKEluc3RhbnRpYXRlX1R5cGUpOiBBZGQgY29uZGl0aW9uIHRvIGRldGVjdCB0aGUgY29ycmVjdAoJcGFzcyBvZiBVbmNoZWNrZWRfVW5pb24gc3VidHlwZXMgYXMgZ2VuZXJpYyBhY3R1YWxzIHRvIGZvcm1hbCB0eXBlcwoJdGhhdCBsYWNrIGtub3duX2Rpc2NyaW1pbmFudF9wYXJ0cyBvciB0aGF0IGFyZSBkZXJpdmVkIFVuY2hlY2tlZF9VbmlvbgoJdHlwZXMsIGFuZCBkbyBub3RoaW5nLiBJbiBhbnkgb3RoZXIgY2FzZSwgcHJvZHVjZSBhbiBlcnJvciBtZXNzYWdlLgoKCSogc2VtX2NoMy5hZGIgKEFuYWx5emVfQ29tcG9uZW50X0RlY2xhcmF0aW9uKTogQWRkIGZ1bmN0aW9uCglDb250YWluc19QT0MuIEl0IGRldGVybWluZXMgd2hldGhlciBhIGNvbnN0cmFpbnQgdXNlcyB0aGUgZGlzY3JpbWluYW50CglvZiBhbiBlbmNsb3NpbmcgcmVjb3JkIHR5cGUuCglBZGQgY29uZGl0aW9uIHRvIGRldGVjdCBwZXItb2JqZWN0IGNvbnN0cmFpbmVkIGNvbXBvbmVudCBhbmQgc2V0IHRoZQoJYXBwcm9wcmlhdGUgZmxhZy4KCShEZXJpdmVkX1R5cGVfRGVjbGFyYXRpb24pOiBSZW1vdmUgZ3VhcmQgdGhhdCBwcmV2ZW50cyBkZXJpdmF0aW9uIGZyb20KCVVuY2hlY2tlZF9VbmlvbiB0eXBlcy4KCShQcm9jZXNzX1N1YnR5cGUpOiBSZW1vdmUgcXVhcmQgdGhhdCBwcmV2ZW50cyB0aGUgY3JlYXRpb24gb2YgVW5jaGVja2VkXwoJVW5pb24gc3VidHlwZXMuCgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBDb3JyZWN0IHRoZSBkZXRlY3Rpb24gb2YKCXJlZmVyZW5jZXMgdG8gVW5jaGVja2VkX1VuaW9uIGRpc2NyaW1pbmFudHMuCgoJKiBzZW1fY2g2LmFkYiAoQ3JlYXRlX0V4dHJhX0Zvcm1hbHMpOiBBZGQgY29uZGl0aW9uIHRvIHNraXAgZXh0cmEKCWZvcm1hbCBnZW5lcmF0aW9uIHdoZW4gZGVhbGluZyB3aXRoIFVuY2hlY2tlZF9VbmlvbnMuCgkoU2V0X0FjdHVhbF9TdWJ0eXBlcyk6IEFkZCBjb25kaXRpb24gdG8gcHJldmVudCBnZW5lcmF0aW9uIG9mIGFjdHVhbAoJc3VidHlwZXMgZm9yIFVuY2hlY2tlZF9VbmlvbnMuCgoJKiBzZW1fY2g3LmFkYiAoQW5hbHl6ZV9QYWNrYWdlX1NwZWNpZmljYXRpb24pOiBBZGQgcHJvY2VkdXJlCglJbnNwZWN0X1VuY2hlY2tlZF9Vbmlvbl9Db21wbGV0aW9uLiBJdCBpcyB1c2VkIHRvIGRldGVjdCBpbmNvcnJlY3QKCWNvbXBsZXRpb25zIG9mIGRpc2NyaW1pbmF0ZWQgcGFydGlhbCB2aWV3cyBieSBVbmNoZWNrZWRfVW5pb25zIGFuZAoJcHJvZHVjZSBhbiBlcnJvciBtZXNzYWdlLgoKMjAwNC0wOC0wOSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyYW5zLmMgKHN0cnVjdCBzdG10X2dyb3VwKTogTmV3IGZpZWxkLCBHTE9CQUwuCgkoZ2xvYmFsX3N0bXRfZ3JvdXAsIGdudV9lbGFiX3Byb2NfZGVjbCwgYnVpbGRfdW5pdF9lbGFiKTogRGVsZXRlZC4KCShzdHJ1Y3QgZWxhYl9pbmZvKTogTmV3IHN0cnVjdC4KCShlbGFiX2luZm9fbGlzdCwgZ251X2VsYWJfcHJvY19zdGFjayk6IE5ldyB2YXJpYWJsZXMuCgkoQ29tcGlsYXRpb25fVW5pdF90b19nbnUpOiBOZXcgcHJvY2VkdXJlLgoJKGdpZ2kpOiBDYWxsIGl0IGFuZCBhbHNvIGhhbmRsZSBlbGFib3JhdGlvbiBwcm9jcyB3ZSd2ZSBzYXZlZC4KCShnbmF0X2luaXRfc3RtdF9ncm91cCk6IERvbid0IHNldCBnbG9iYWxfc3RtdF9ncm91cDsgaW5zdGVhZCBpbml0aWFsaXplCglnbG9iYWwgZmllbGQgZnJvbSBwYXJlbnQuCgkoZ25hdF90b19nbnUpOiBHZXQgZGVjbCBmcm9tIGdudV9lbGFiX3Byb2Nfc3RhY2suCgkoZ25hdF90b19nbnUsIGNhc2UgTl9Db21waWxhdGlvbl9Vbml0KTogQ2FsbCBDb21waWxhdGlvbl9Vbml0X3RvX2dudS4KCShzdGFydF9zdG10X2dyb3VwKTogSW5pdGlhbGl6ZSBnbG9iYWwgZmllbGQgZnJvbSBwYXJlbnQuCgkoYWRkX2RlY2xfZXhwcik6IFNldCB0byBnbG9iYWwgZm9yIGN1cnJlbnQgc3RhdGVtZW50IGdyb3VwLgoJKGduYXRfZ2ltcGxpZnlfZXhwciwgY2FzZSBOVUxMX0VYUFIpOiBBZGQgb3BlcmFuZCAwIHRvIHByZSBsaXN0LCBub3QKCXBvc3QuCgoJKiB1dGlscy5jIChnbG9iYWxfYmluZGluZ3NfcCk6IFRydWUgd2hlbiBubyBjdXJyZW50X2Z1bmN0aW9uX2RlY2w7IG5vCglsb25nZXIgY2hlY2sgY3VycmVudF9iaW5kaW5nX2xldmVsLgoKMjAwNC0wOC0wOSAgQmVuIEJyb3Nnb2wgIDxicm9zZ29sQGduYXQuY29tPgoKCSogeGduYXR1Z24uYWRiOiBBZGRlZCBsb2dpYyB0byBkZWFsIHdpdGggQGlmc2V0L0BpZmNsZWFyIGZvciBlZGl0aW9uCgljaG9pY2UuCgoJKiBnbmF0X3JtLnRleGksIGduYXRfdWduLnRleGk6IEFkZGVkIGVkaXRpb24gY29uZGl0aW9uYWxpemF0aW9uIGxvZ2ljLgoKMjAwNC0wOC0wNiAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIHV0aWxzLmMgKGduYXRfZGVmaW5lX2J1aWx0aW4pOiBSZW1vdmUgc2Vjb25kIHBhcmFtZXRlciBvZgoJbWFrZV9kZWNsX3J0bC4KCShiZWdpbl9zdWJwcm9nX2JvZHkpOiBMaWtld2lzZS4KCjIwMDQtMDctMjYgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX3V0aWwuYWRiIChSZXF1aXJlc19UcmFuc2llbnRfU2NvcGUpOiBUZW1wb3JhcmlseSBkaXNhYmxlCglvcHRpbWl6YXRpb24sIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIHRyZWUtc3NhIGJhY2stZW5kLgoKMjAwNC0wNy0yNiAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogcy1tYXN0b3AtaXJpeC5hZGI6IFVwZGF0ZSBjb21tZW50cy4KCgkqIGEtZXhjZXB0LmFkYiAoRXhjZXB0aW9uX0luZm9ybWF0aW9uKTogUmFpc2UgQ29uc3RyYWludF9FcnJvciBpZgoJZXhjZXB0aW9uIElkIGlzIE51bGxfSWQuCglUaGlzIGlzIHJlcXVpcmVkIGJlaGF2aW9yLCB3aGljaCBpcyBtb3JlIHJlbGlhYmx5IGFuZCBjbGVhcmx5IGNoZWNrZWQKCWF0IHRoZSB0b3AgbGV2ZWwgaW50ZXJmYWNlIGxldmVsLgoKMjAwNC0wNy0yNiAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogZXhwX2FnZ3IuYWRiIChCdWlsZF9BcnJheV9BZ2dyX0NvZGUpOiBEbyBub3QgYnVpbGQgdGhlIGluaXRpYWxpemF0aW9uCgljYWxsIGlmIGEgY29tcG9uZW50IGhhcyBubyBkZWZhdWx0X2V4cHJlc3Npb24gYW5kIHRoZSBib3ggaXMgdXNlZC4KCgkqIHNlbV9hZ2dyLmFkYiAoUmVzb2x2ZV9BcnJheV9BZ2dyZWdhdGUpOiBJZiBhIGNvbXBvbmVudCBoYXMgbm8KCWRlZmF1bHRfZXhwcmVzc2lvbiBhbmQgeW91IHVzZSBib3gsIGl0IGJlaGF2ZXMgYXMgaWYgeW91IGhhZCBkZWNsYXJlZCBhCglzdGFuZC1hbG9uZSBvYmplY3QuCgkoUmVzb2x2ZV9SZWNvcmRfQWdncmVnYXRlKTogSWYgYSBjb21wb25lbnQgaGFzIG5vIGRlZmF1bHRfZXhwcmVzc2lvbiBhbmQKCXlvdSB1c2UgYm94LCBpdCBiZWhhdmVzIGFzIGlmIHlvdSBoYWQgZGVjbGFyZWQgYSBzdGFuZC1hbG9uZSBvYmplY3QuCgoJKiBzZW1fY2gxMC5hZGIgKEluc3RhbGxfU2libGluZ3MpOiBEbyBub3QgbWFrZSB2aXNpYmxlIHRoZSBwcml2YXRlCgllbnRpdGllcyBvZiBwcml2YXRlLXdpdGggc2libGluZ3MuCgoyMDA0LTA3LTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoQnVpbGRfVW5kZXJseWluZ19GdWxsX1ZpZXcpOiBJZiB0aGlzIGlzIHRoZSBmdWxsIHZpZXcKCWZvciBhIGNvbXBvbmVudCBvZiBhbiBpdHlwZSwgc2V0IHRoZSBwYXJlbnQgcG9pbnRlciBmb3IgYW5hbHlzaXMsCgl0aGVyZSBpcyBubyBsaXN0IGluIHdoaWNoIHRvIGluc2VydCBpdC4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlKTogQ2FsbCBSZXdyaXRlX1JlbmFtZWRfT3BlcmF0b3Igb25seSBmb3IKCWJvbmEtZmlkZSByZW5hbWluZ3MsIG5vdCBmb3IgaW5oZXJpdGVkIG9wZXJhdGlvbnMuCgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX0FsbG9jYXRvcl9FeHByZXNzaW9uKTogSWYgdGhlIGFsbG9jYXRvciBpcyBhbgoJYWN0dWFsIGZvciBhIGZvcm1hbCB0aGF0IGlzIGFuIGFjY2VzcyBwYXJhbWV0ZXIsIGNyZWF0ZSBsb2NhbAoJZmluYWxpemF0aW9uIGxpc3QgZXZlbiBpZiB0aGUgZXhwcmVzc2lvbiBpcyBub3QgYW4gYWdncmVnYXRlLgoKMjAwNC0wNy0yNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCVBSIGFkYS8xNjIxMwoJKiBzZW1fY2g4LmFkYiAoQXR0cmlidXRlX1JlbmFtaW5nLCBDaGVja19MaWJyYXJ5X0xldmVsX1JlbmFtaW5nKToKCURpYWdub3NlIHByb3Blcmx5IGlsbGVnYWwgc3VicHJvZ3JhbSByZW5hbWluZ3MgdGhhdCBhcmUgbGlicmFyeSB1bml0cy4KCjIwMDQtMDctMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTU1ODgKCSogc2VtX3V0aWwuYWRiIChJc19PS19WYXJpYWJsZV9Gb3JfT3V0X0Zvcm1hbCk6IElmIGFjdHVhbCBpcyBhIHR5cGUKCWNvbnZlcnNpb24gcmV3cml0dGVuIGFzIGFuIHVuY2hlY2tlZCBjb252ZXJzaW9uLCBjaGVjayB0aGF0IG9yaWdpbmFsCglleHByZXNzaW9uIGlzIGEgdmFyaWFibGUuCgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fVHlwZV9Db252ZXJzaW9uKTogSWYgcmV3cml0aW5nIGFzIGFuCgl1bmNoZWNrZWRfY29udmVyc2lvbiwgY3JlYXRlIG5ldyBub2RlIHJhdGhlciB0aGFuIHJld3JpdGluZyBpbiBwbGFjZSwKCXRvIHByZXNlcnZlIG9yaWdpbmFsIGNvbnN0cnVjdC4KCjIwMDQtMDctMjYgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBnaWdpLmggKGduYXRfZXhwYW5kX2JvZHkpOiBEZWxldGVkLgoKCSogTWFrZS1sYW5nLmluOiAodHJhbnMubyk6IERlcGVuZHMgb24gZnVuY3Rpb24uaC4KCgkqIG1pc2MuYzogKGduYXRfZXhwYW5kX2JvZHkpOiBNb3ZlZCB0byBoZXJlLgoKCSogdHJhbnMuYyAoZ25hdF9leHBhbmRfYm9keV8xKTogRGVsZXRlZC4KCShnbmF0X2V4cGFuZF9ib2R5KTogTW92ZWQgZnJvbSBoZXJlLgoJKGduYXRfdG9fZ251KTogTl9JbXBsaWNpdF9MYWJlbF9EZWNsYXJhdGlvbiBmb3JjZXMgYmVpbmcgaW4gZWxhYiBwcm9jLgoJKGFkZF9zdG10KTogQ2hlY2sgZm9yIG1hcmtlZCB2aXNpdGVkIHdpdGggZ2xvYmFsX2JpbmRpbmdzX3AuCgkoZ25hdF9naW1wbGlmeV9leHByLCBjYXNlIENPTVBPTkVOVF9SRUYpOiBOZXcgY2FzZS4KCShnbmF0X2dpbXBsaWZ5X2V4cHIsIGNhc2UgTlVMTF9FWFBSKTogU2V0IFRSRUVfTk9fV0FSTklORyBmb3IgdGVtcC4KCgkqIHV0aWxzMi5jIChidWlsZF9iaW5hcnlfb3AsIGNhc2UgTU9ESUZZX0VYUFIpOiBQdXQgTEhTIGluIGEKCVZJRVdfQ09OVkVSVF9FWFBSIGlmIG5vdCBvcGVyYXRpb24gdHlwZS4KCgkqIHV0aWxzLmMgKHVwZGF0ZV9wb2ludGVyX3RvKTogU2V0IERFQ0xfT1JJR0lOQUxfRklFTEQgZm9yCglmYXQgcG9pbnRlci4KCgkqIGRlY2wuYywgY3VpbnRwLmMsIGdpZ2kuaCwgbWlzYy5jLCB0cmFucy5jLCB1dGlscy5jLCB1dGlsczIuYzogTWlub3IKCWNoYW5nZXM6IHJlZm9ybWF0dGluZyBvZiBuZWdhdGlvbiBvcGVyYXRvcnMsIHJlbW92aW5nIHVubmVlZGVkCglpbmVxdWFsaXR5IGNvbXBhcmlzb24gd2l0aCB6ZXJvLCBjb252ZXJ0aW5nIGVxdWFsaXR5IGNvbXBhcmlzb25zIHdpdGgKCXplcm8gdG8gbmVnYXRpb25zLCBjaGFuZ2luZyBpbnQvMC8xIHRvIGJvb2wvZmFsc2UvdHJ1ZSwgcmVwbGFjZSBjYWxscwoJdG8gZ2lnaV9hYm9ydCB3aXRoIGFib3J0LCBhbmQgdmFyaW91cyBvdGhlciBzaW1pbGFyIGNoYW5nZXMuCgoyMDA0LTA3LTI2ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGduYXRjbWQuYWRiIChHTkFUQ21kKTogQWRkIHByb2Nlc3NpbmcgZm9yIG5ldyBidWlsdC1pbiBjb21tYW5kCgkic2V0dXAiLgoKCSogbWFrZS5hZGIgKEduYXRtYWtlKTogRmFpbCB3aGVuIGEgbGlicmFyeSBpcyBub3QgcHJlc2VudCBhbmQgdGhlcmUgaXMKCW5vIG9iamVjdCBkaXJlY3RvcnkuCgoJKiBtbGliLXByai5hZGIgKENoZWNrX0xpYnJhcnkpOiBObyBuZWVkIHRvIGNoZWNrIGlmIHRoZSBsaWJyYXJ5IG5lZWRzCgl0byBiZSByZWJ1aWx0IGlmIHRoZXJlIGlzIG5vIG9iamVjdCBkaXJlY3RvcnksIGhlbmNlIG5vIG9iamVjdCBmaWxlcwoJdG8gYnVpbGQgdGhlIGxpYnJhcnkuCgoJKiBvcHQuYWRzIChTZXR1cF9Qcm9qZWN0cyk6IE5ldyBCb29sZWFuIGZsYWcuCgoJKiBwcmotbm1zYy5hZGIgKExvY2F0ZV9EaXJlY3RvcnkpOiBOZXcgcGFyYW1ldGVyIFByb2plY3QsIEtpbmQgYW5kCglMb2NhdGlvbi4KCUNyZWF0ZSBkaXJlY3Rvcnkgd2hlbiBLaW5kIC89ICIiIGFuZCBpbiAiZ25hdCBzZXR1cCIuIFJlcG9ydCBlcnJvciBpZgoJZGlyZWN0b3J5IGNhbm5vdCBiZSBjcmVhdGVkLgoJKEFkYV9DaGVjayk6IENyZWF0ZSBsaWJyYXJ5IGludGVyZmFjZSBjb3B5IGRpciBpZiBpdCBkb2VzIG5vdCBleGlzdAoJYW5kIHdlIGFyZSBpbiAiZ25hdCBzZXR1cCIuCgkoRmluZF9Tb3VyY2VzKTogTm8gZXJyb3IgaWYgaW4gImduYXQgc2V0dXAiIGFuZCBubyBBZGEgc291cmNlcyB3ZXJlCglmb3VuZC4KCShMYW5ndWFnZV9JbmRlcGVuZGVudF9DaGVjayk6IENyZWF0ZSBvYmplY3QgZGlyZWN0b3J5LCBleGVjIGRpcmVjdG9yeQoJYW5kL29yIGxpYnJhcnkgZGlyZWN0b3J5IGlmIHRoZXkgZG8gbm90IGV4aXN0IGFuZCB3ZSBhcmUgaW4KCSJnbmF0IHNldHVwIi4KCgkqIHZtc19jb252LmFkczogKENvbW1hbmRfVHlwZSk6IE5ldyBjb21tYW5kIFNldHVwLgoKCSogdm1zX2NvbnYuYWRiIChJbml0aWFsaXplKTogQWRkIFNldHVwIGNvbXBvbmVudCBvZiBDYW1tYW5kX0xpc3QuCgoJKiB2bXNfZGF0YS5hZHM6IEFkZCBxdWFsaWZpZXJzL3N3aXRjaGVzIGZvciBuZXcgYnVpbHQtaW4gY29tbWFuZAoJInNldHVwIi4KCjIwMDQtMDctMjUgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB1dGlscy5jIChjcmVhdGVfc3VicHJvZ19kZWNsKTogU2V0IERFQ0xfQVJUSUZJQ0lBTCBhbmQKCURFQ0xfSUdOT1JFRF9QIG9uIFJFU1VMVF9ERUNMLgoKMjAwNC0wNy0yMCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogYS1lbGNoaGEuYWRiIChMYXN0X0NoYW5jZV9IYW5kbGVyKTogUmVtb3ZlIHRoZSBib2d1cyBidWZmZXIgZHluYW1pYwoJYWxsb2NhdGlvbiBhbmQgcG90ZW50aWFsbHkgb3ZlcmZsb3dpbmcgdXBkYXRlIHdpdGgKCVRhaWxvcmVkX0V4Y2VwdGlvbl9JbmZvcm1hdGlvbi4gVXNlIHRoZSBzZWMtc3RhY2sgZnJlZSBwcm9jZWR1cmFsCglpbnRlcmZhY2UgdG8gb3V0cHV0IEV4Y2VwdGlvbl9JbmZvcm1hdGlvbiBpbnN0ZWFkLgoKCSogYS1leGNlcHQuYWRiIChUb19TdGRlcnIpOiBOZXcgc3VicHJvZ3JhbSBmb3IgY2hhcmFjdGVyLCBhbmQgc3RyaW5nCgl2ZXJzaW9uIG1vdmVkIGZyb20gYS1leGV4dHIgdG8gYmUgdmlzaWJsZSBmcm9tIG90aGVyIHNlcGFyYXRlIHVuaXRzLgoJKFRhaWxvcmVkX0V4Y2VwdGlvbl9JbmZvcm1hdGlvbik6IFJlbW92ZSB0aGUgcHJvY2VkdXJhbCB2ZXJzaW9uLAoJcHJldmlvdXNseSB1c2VkIGJ5IHRoZSBkZWZhdWx0IExhc3RfQ2hhbmNlX0hhbmRsZXIgYW5kIG5vdCBhbnkgbW9yZS4KCUFkanVzdCB2YXJpb3VzIGNvbW1lbnRzLgoKCSogYS1leGV4ZGEuYWRiOiBHZW5lcmFsaXplIHRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gcHJvY2VkdXJhbAoJaW50ZXJmYWNlLCB0byBtaW5pbWl6ZSB0aGUgdXNlIG9mIHNlY29uZGFyeSBzdGFjayBhbmQgdGhlIG5lZWQgZm9yCglsb2NhbCBidWZmZXJzIHdoZW4gdGhlIGluZm8gaXMgdG8gYmUgb3V0cHV0IHRvIHN0ZGVycjoKCShBZGRyZXNzX0ltYWdlKTogUmVtb3ZlZC4KCShBcHBlbmRfSW5mb19DaGFyYWN0ZXIpOiBOZXcgc3VicHJvZ3JhbSwgY2hlY2tpbmcgZm9yIG92ZXJmbG93cyBhbmQKCW91dHB1dGluZyB0byBzdGRlcnIgaWYgYnVmZmVyIHRvIGZpbGwgaXMgb2YgbGVuZ3RoIDAuCgkoQXBwZW5kX0luZm9fU3RyaW5nKTogT3V0cHV0IHRvIHN0ZGVyciBpZiBidWZmZXIgdG8gZmlsbCBpcyBvZiBsZW5ndGggMC4KCShBcHBlbmRfSW5mb19BZGRyZXNzLCBBcHBlbmRfSW5mb19FeGNlcHRpb25fTmFtZSwKCUFwcGVuZF9JbmZvX0V4Y2VwdGlvbl9NZXNzYWdlLCBBcHBlbmRfSW5mb19CYXNpY19FeGNlcHRpb25fSW5mb3JtYXRpb24sCglBcHBlbmRfSW5mb19CYXNpY19FeGNlcHRpb25fVHJhY2ViYWNrLAoJQXBwZW5kX0luZm9fRXhjZXB0aW9uX0luZm9ybWF0aW9uKTogTmV3IHN1YnByb2dyYW1zLgoJKEFwcGVuZF9JbmZvX05hdCwgQXBwZW5kX0luZm9fTkwpOiBVc2UgQXBwZW5kX0luZm9fQ2hhcmFjdGVyLgoJKEJhc2ljX0V4Y2VwdGlvbl9JbmZvX01heGxlbmd0aCwgQmFzaWNfRXhjZXB0aW9uX1RiYWNrX01heGxlbmd0aCwKCUV4Y2VwdGlvbl9JbmZvX01heGxlbmd0aCwgRXhjZXB0aW9uX05hbWVfTGVuZ3RoLAoJRXhjZXB0aW9uX01lc3NhZ2VfTGVuZ3RoKTogTmV3IHN1YnByb2dyYW1zLgoJKEV4Y2VwdGlvbl9JbmZvcm1hdGlvbik6IFVzZSBBcHBlbmRfSW5mb19FeGNlcHRpb25fSW5mb3JtYXRpb24uCgkoVGFpbG9yZWRfRXhjZXB0aW9uX0luZm9ybWF0aW9uKTogVXNlCglBcHBlbmRfSW5mb19CYXNpY19FeGNlcHRpb25fSW5mb3JtYXRpb24uCglFeHBvcnQgc2VydmljZXMgZm9yIHRoZSBkZWZhdWx0IExhc3RfQ2hhbmNlX0hhbmRsZXIuCgoJKiBhLWV4ZXh0ci5hZGIgKFRvX1N0ZGVycik6IFJlbW92ZS4gTm93IGluIGEtZXhjZXB0IHRvIGJlIHVzYWJsZSBieQoJb3RoZXIgc2VwYXJhdGUgdW5pdHMuCgoyMDA0LTA3LTIwICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGNsZWFuLmFkYiwgbWxpYi11dGwuYWRiLCBvc2ludC5hZGIsIG1ha2VncHIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuCgoyMDA0LTA3LTIwICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBmcmVlemUuYWRiIChGcmVlemVfRW50aXR5KTogSWYgZW50aXR5IGlzIGEgZGlzY3JpbWluYXRlZCByZWNvcmQgdHlwZSwKCWVtaXQgaXR5cGUgcmVmZXJlbmNlcyBmb3IgdGhlIGRlc2lnbmF0ZWQgdHlwZXMgb2YgY29tcG9uZW50IHR5cGVzIHRoYXQKCWFyZSBkZWNsYXJlZCBvdXRzaWRlIG9mIHRoZSBmdWxsIHJlY29yZCBkZWNsYXJhdGlvbiwgYW5kIHRoYXQgbWF5CglkZW5vdGUgYSBwYXJ0aWFsIHZpZXcgb2YgdGhhdCByZWNvcmQgdHlwZS4KCjIwMDQtMDctMjAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTU2MDcKCSogc2VtX2NoMy5hZGIgKEJ1aWxkX0Rpc2NyaW1pbmF0ZWRfU3VidHlwZSk6IERvIG5vdCBhdHRhY2ggYSBzdWJ0eXBlCgl3aGljaCBpcyB0aGUgZGVzaWduYXRlZCB0eXBlIGluIGFuIGFjY2VzcyBjb21wb25lbnQgZGVjbGFyYXRpb24sIHRvIHRoZQoJbGlzdCBvZiBpbmNvbXBsZXRlIGRlcGVuZGVudHMgb2YgdGhlIHBhcmVudCB0eXBlLCB0byBhdm9pZCBlbGFib3JhdGlvbgoJaXNzdWVzIHdpdGggb3V0LW9mLXNjb3BlIHN1YnR5cGVzLgoJKENvbXBsZXRlX1ByaXZhdGVfU3VidHlwZSk6IFJlY29tcHV0ZSBIYXNfVW5rbm93bl9EaXNjcmltaW5hbnRzIGZyb20gdGhlCglmdWxsIHZpZXcgb2YgdGhlIHBhcmVudC4KCjIwMDQtMDctMjAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTU2MTAKCSogc2VtX2NoOC5hZGIgKEZpbmRfRXhwYW5kZWRfTmFtZSk6IElmIG5hbWUgaXMgb3ZlcmxvYWRlZCwgcmVqZWN0CgllbnRpdGllcyB0aGF0IGFyZSBoaWRkZW4sIHN1Y2ggYXMgcmVmZXJlbmNlcyB0byBnZW5lcmljIGFjdHVhbHMKCW91dHNpZGUgYW4gaW5zdGFuY2UuCgoyMDA0LTA3LTIwICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBzZW1fY2g0LmFkYiAoVHJ5X09iamVjdF9PcGVyYXRpb24pOiBOZXcgc3VicHJvZ3JhbSB0aGF0IGdpdmVzCglzdXBwb3J0IHRvIHRoZSBuZXcgbm90YXRpb24uCgkoQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBBZGQgY2FsbCB0byBUcnlfT2JqZWN0X09wZXJhdGlvbi4KCjIwMDQtMDctMjAgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIHMtdGFwcm9iLmFkYjogQWRkaW5nIHRoZSBlbGFib3JhdGlvbiBjb2RlIHJlcXVpcmVkIGZvciBpbml0aWFsaXppbmcKCXRoZSB0YXNraW5nIHNvZnQgbGlua3MgdGhhdCBhcmUgY29tbW9uIHRvIHRoZSBmdWxsIGFuZCB0aGUgcmVzdHJpY3RlZAoJcnVuIHRpbWVzLgoKCSogcy10YXJlc3QuYWRiIChJbml0X1JUUyk6IFRhc2tpbmcgc29mdCBsaW5rcyB0aGF0IGFyZSBzaGFyZWQgd2l0aCB0aGUKCXJlc3RyaWN0ZWQgcnVuIHRpbWUgaGFzIGJlZW4gbW92ZWQgdG8gdGhlIHBhY2thZ2UKCVN5c3RlbS5Tb2Z0X0xpbmtzLlRhc2tpbmcuCgoJKiBzLXRhc2luaS5hZGIgKEluaXRfUlRTKTogVGFza2luZyBzb2Z0IGxpbmtzIHRoYXQgYXJlIHNoYXJlZCB3aXRoIHRoZQoJcmVzdHJpY3RlZCBydW4gdGltZSBoYXMgYmVlbiBtb3ZlZCB0byB0aGUgcGFja2FnZQoJU3lzdGVtLlNvZnRfTGlua3MuVGFza2luZy4KCgkqIE1ha2VmaWxlLnJ0bDogQWRkIGVudHJ5IGZvciBzLXNvbGl0YS5vIGluIHJ1bi10aW1lIGxpYnJhcnkgbGlzdC4KCgkqIHMtc29saXRhLmFkcywgcy1zb2xpdGEuYWRiOiBOZXcgZmlsZXMuCgoyMDA0LTA3LTIwICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJhbnMuYyAoSWRlbnRpZmllcl90b19nbnUsIFByYWdtYV90b19nbnUsIEF0dHJpYnV0ZV90b19nbnUsCglDYXNlX1N0YXRlbWVudF90b19nbnUpOiBTcGxpdCBvZmYgZnJvbSBnbmF0X3RvX2dudS4KCShMb29wX1N0YXRlbWVudF90b19nbnUsIFN1YnByb2dyYW1fQm9keV90b19nbnUsIGNhbGxfdG9fZ251LAoJSGFuZGxlZF9TZXF1ZW5jZV9PZl9TdGF0ZW1lbnRzX3RvX2dudSwgRXhjZXB0aW9uX0hhbmRsZXJfdG9fZ251X3NqbGosCglFeGNlcHRpb25fSGFuZGxlcl90b19nbnVfemN4KTogTGlrZXdpc2UuCgoyMDA0LTA3LTE3ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGdpZ2kuaCAoYnVpbHRpbl9mdW5jdGlvbik6IERlY2xhcmUuCgoyMDA0LTA3LTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIG1ha2VncHIuYWRiLCBzLXNlY3N0YS5hZHMsIHNlbV9jaDMuYWRiLCBzZW1fY2FzZS5hZGI6IE1pbm9yCglyZWZvcm1hdHRpbmcKCgkqIGduYXRfdWduLnRleGk6IEFkZCBpbnN0YW50aWF0aW9uIG9mIGRpcmVjdF9pbyBvciBzZXF1ZW50aWFsX2lvIHdpdGgKCWFjY2VzcyB2YWx1ZXMgYXMgYW4gZXhhbXBsZSBvZiBhIHdhcm5pbmcuCgoJKiBnbmF0X3JtLnRleGk6IERvY3VtZW50IG5ldyBhdHRyaWJ1dGUgSGFzX0FjY2Vzc19WYWx1ZXMKCgkqIGduYXQtc3R5bGUudGV4aTogRG9jdW1lbnQgdGhhdCBib3ggY29tbWVudHMgYmVsb25nIG9uIG5lc3RlZAoJc3VicHJvZ3JhbXMKCgkqIHNlbV91dGlsLmFkcyAoSGFzX0FjY2Vzc19WYWx1ZXMpOiBJbXByb3ZlZCBkb2N1bWVudGF0aW9uCgoJKiBzLWZpbmltcC5hZHMsIHMtZmluaW1wLmFkYjogRml4IHNwZWxsaW5nIGVycm9yIGluIGNvbW1lbnQKCgkqIHNlbV9wcmFnLmFkYiAoQ2hlY2tfRHVwbGljYXRlZF9FeHBvcnRfTmFtZSk6IE5ldyBwcm9jZWR1cmUKCShQcm9jZXNzX0ludGVyZmFjZV9OYW1lKTogQ2FsbCB0byB0aGlzIG5ldyBwcm9jZWR1cmUKCShTZXRfRXh0ZW5kZWRfSW1wb3J0X0V4cG9ydF9FeHRlcm5hbF9OYW1lKTogQ2FsbCB0byB0aGlzIG5ldyBwcm9jZWR1cmUKCgkqIHMtbWFzdG9wLXg4Ni5hZGIsIDlkcnBjLmFkYjogRml4IHNwZWxsaW5nIGVycm9yIGluIGNvbW1lbnQKCgkqIGEtZGlyZWlvLmFkcywgYS1zZXF1aW8uYWRzOiBXYXJuIGlmIEVsZW1lbnRfVHlwZSBoYXMgYWNjZXNzIHZhbHVlcwoKCSogZWluZm8uYWRzOiBNaW5vciBjb21tZW50IHR5cG8gZml4ZWQKCjIwMDQtMDctMTUgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIHNuYW1lcy5hZGI6IEFkZCBfYXRjYi4KCgkqIHNuYW1lcy5hZHM6IEFkZCBOYW1lX3VBVENCLgoKCSogcy10YXJlc3QuYWRiIChDcmVhdGVfUmVzdHJpY3RlZF9UYXNrKTogQVRDQnMgYXJlIGFsd2F5cyBwcmVhbGxvY2F0ZWQKCShpbiB0aGUgZXhwYW5kZWQgY29kZSkgd2hlbiB1c2luZyB0aGUgcmVzdHJpY3RlZCBydW4gdGltZS4KCgkqIHMtdGFyZXN0LmFkcyAoQ3JlYXRlX1Jlc3RyaWN0ZWRfVGFzayk6IENyZWF0ZWRfVGFzayB0cmFuc2Zvcm1lZCBpbnRvCglhIGluIHBhcmFtZXRlciBpbiBvcmRlciB0byBhbGxvdyBBVENCcyB0byBiZSBwcmVhbGxvY2F0ZWQgKGluIHRoZQoJZXhwYW5kZWQgY29kZSkuCgoJKiBzLXRhc2tpbi5hZGIgKEluaXRpYWxpemVfQVRDQik6IFQgY29udmVydGVkIGludG8gYSBpbiBwYXJhbWV0ZXIgaW4KCW9yZGVyIHRvIGFsbG93IEFUQ0JzIHRvIGJlIHByZWFsbG9jYXRlZC4gSW4gY2FzZSBvZiBlcnJvciwgdGhlIEFUQ0IgaXMKCWRlYWxsb2NhdGVkIGluIFN5c3RlbS5UYXNraW5nLlN0YWdlcy4KCgkqIHMtdGFza2luLmFkcyAoSW5pdGlhbGl6ZV9BVENCKTogVCBjb252ZXJ0ZWQgaW50byBhIGluIHBhcmFtZXRlciBpbgoJb3JkZXIgdG8gYWxsb3cgQVRDQnMgdG8gYmUgcHJlYWxsb2NhdGVkLgoKCSogcy10YXNzdGEuYWRiIChDcmVhdGVfVGFzayk6IEluIGNhc2Ugb2YgZXJyb3IgdGhlIEFUQ0IgaXMgZGVhbGxvY2F0ZWQKCWhlcmUuIEl0IHdhcyBwcmV2aW91c2x5IGRvbmUgaW4gSW5pdGlhbGl6ZV9BVENCLgoKCSogcnRzZmluZC5hZHM6IE1ha2UgdGhlIEFkYV9UYXNrX0NvbnRyb2xfQmxvY2sgdmlzaWJsZS4KCgkqIGV4cF9jaDkuYWRiOiBQcmVhbGxvY2F0ZSB0aGUgQWRhX1Rhc2tfQ29udHJvbF9CbG9jayB3aGVuIHVzaW5nIHRoZQoJUmVzdHJpY3RlZCBydW4gdGltZS4KCgkqIGV4cF9jaDMuYWRiOiBXaGVuIHVzaW5nIHRoZSBSZXN0cmljdGVkIHJ1biB0aW1lLCBwYXNzIHRoZQoJcHJlYWxsb2NhdGVkIEFkYV9UYXNrX0NvbnRyb2xfQmxvY2sgd2hlbiBjcmVhdGluZyBhIHRhc2suCgoyMDA0LTA3LTE1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fdXRpbC5hZGIgKE5vcm1hbGl6ZV9BY3R1YWxzKTogSWYgdGhlcmUgYXJlIG5vIGFjdHVhbHMgb24gYQoJZnVuY3Rpb24gY2FsbCB0aGF0IGlzIGl0c2VsZiBhbiBhY3R1YWwgaW4gYW4gZW5jbG9zaW5nIGNhbGwsIGRpYWdub3NlCglwcm9ibGVtIGhlcmUgcmF0aGVyIHRoYW4gYXNzdW1pbmcgdGhhdCByZXNvbHV0aW9uIHdpbGwgY2F0Y2ggaXQuCgoJKiBzZW1fY2g3LmFkYiAoQW5hbHl6ZV9QYWNrYWdlX1NwZWNpZmljYXRpb24pOiBJZiB0aGUgc3BlY2lmaWNhdGlvbiBpcwoJdGhlIGxvY2FsIGNvcHkgb2YgYSBnZW5lcmljIHVuaXQgZm9yIGEgZm9ybWFsIHBhY2thZ2UsIGFuZCB0aGUgZ2VuZXJpYwoJaXMgYSBjaGlsZCB1bml0LCBpbnN0YWxsIHByaXZhdGUgcGFydCBvZiBhbmNlc3RvcnMgYmVmb3JlIGNvbXBpbGluZwoJcHJpdmF0ZSBwYXJ0IG9mIHNwZWMuCgoJKiBzZW1fY2F0LmFkYiAoVmFsaWRhdGVfQ2F0ZWdvcml6YXRpb25fRGVwZW5kZW5jeSk6IFNpbXBsaWZ5IGNvZGUgdG8KCXVzZSBzY29wZSBlbnRpdGllcyByYXRoZXIgdGhhbiB0cmVlIHN0cnVjdHVyZXMsIHRvIGhhbmRsZSBwcm9wZXJseQoJcGFyZW50IHVuaXRzIHRoYXQgYXJlIGluc3RhbmNlcyByZXdyaXR0ZW4gYXMgYm9kaWVzIGZvciBpbmxpbmluZwoJcHVycG9zZXMuCgoJKiBzZW1fY2gxMC5hZGIgKEdldF9QYXJlbnRfRW50aXR5LCBJbXBsaWNpdF9XaXRoX09uX1BhcmVudCwKCVJlbW92ZV9QYXJlbnRzKTogSGFuZGxlIHByb3Blcmx5IGEgcGFyZW50IHVuaXQgdGhhdCBpcyBhbgoJaW5zdGFudGlhdGlvbiwgd2hlbiB0aGUgdW5pdCBoYXMgYmVlbiByZXdyaXR0ZW4gYXMgYSBib2R5IGZvciBpbmxpbmluZwoJcHVycG9zZXMuCgoJKiBwYXIuYWRiIChHb3RvX0xpc3QpOiBHbG9iYWwgdmFyaWFibGUgdG8gY29sbGVjdCBnb3RvIHN0YXRlbWVudHMgaW4gYQoJZ2l2ZW4gdW5pdCwgZm9yIHVzZSBpbiBkZXRlY3RpbmcgbmF0dXJhbCBsb29wcy4KCgkqIHBhci1jaDUuYWRiIChQX0dvdG9fU3RhdGVtZW50KTogQWRkIGdvdG8gdG8gZ2xvYmFsIEdvdG9fTGlzdCwgZm9yCgl1c2UgaW4gZGV0ZWN0aW5nIG5hdHVyYWwgbG9vcHMuCgoJKiBwYXItbGFibC5hZGIgKEZpbmRfTmF0dXJhbF9Mb29wcyk6IFJlY29nbml6ZSBsb29wcyBjcmVhdGUgYnkKCWJhY2t3YXJkcyBnb3RvJ3MsIGFuZCByZXdyaXRlIGFzIGEgaW5maW5pdGUgbG9vcCwgdG8gaW1wcm92ZSBsb2NhbGl0eQoJb2YgdGVtcG9yYXJpZXMuCgoJKiBleHBfdXRpbC5hZGIgKEZvcmNlX0V2YWx1YXRpb24pOiBSZWNvZ25pemUgYSBsZWZ0LWhhbmQgc2lkZQoJc3ViY29tcG9uZW50IHRoYXQgaW5jbHVkZXMgYW4gaW5kZXhlZCByZWZlcmVuY2UsIHRvIHByZXZlbnQgdGhlCglnZW5lcmF0aW9uIG9mIGNvcGllcyB0aGF0IHdvdWxkIG1pc2NvbXBpbGUgdGhlIGRlc2lyZWQgYXNzaWdubWVudAoJc3RhdGVtZW50LgoJKEJ1aWxkX1Rhc2tfSW1hZ2VfRGVjbHMpOiBBZGQgYSBudW1lcmljIHN1ZmZpeCB0bwoJZ2VuZXJhdGVkIG5hbWUgZm9yIHN0cmluZyB2YXJpYWJsZSwgdG8gYXZvaWQgc3B1cmlvdXMgY29uZmxpY3RzIHdpdGgKCXRoZSBuYW1lIG9mIHRoZSB0eXBlIG9mIGEgc2luZ2xlIHByb3RlY3RlZCBvYmplY3QuCgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX0FycmF5X0VxdWFsaXR5KTogSWYgaW5kaWNlcyBhcmUgZGlzdGluY3QsIHVzZSBhCglsb29wIHdpdGggYW4gZXhwbGljaXQgZXhpdCBzdGF0ZW1lbnQsIHRvIGF2b2lkIGdlbmVyYXRpbmcgYW4KCW91dC1vZi1yYW5nZSB2YWx1ZSB3aXRoICdTdWNjIGxlYWRpbmcgdG8gc3B1cmlvdXMgY29uc3RyYWludF9lcnJvcnMKCXdoZW4gY29tcGlsaW5nIHdpdGggLWduYXRWby4KCjIwMDQtMDctMTUgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX1NsaWNlKTogQWx3YXlzIGNhbGwgQW5hbHl6ZSBvbiB0aGUgcHJlZml4OiBpdAoJbWlnaHQgbm90IGJlIGFuYWx5emVkIHlldCwgZXZlbiBpZiBpdHMgRXR5cGUgaXMgYWxyZWFkeSBzZXQgKGNhc2Ugb2YgYW4KCXVuY2hlY2tlZCBjb252ZXJzaW9uIGJ1aWx0IHVzaW5nIFVuY2hlY2tlZF9Db252ZXJ0X1RvLCBmb3IgZXhhbXBsZSkuCglJZiB0aGUgcHJlZml4IGhhcyBhbHJlYWR5IGJlZW4gYW5hbHl6ZWQsIHRoaXMgd2lsbCBiZSBhIG5vcCBhbnl3YXkuCgoJKiBleHBfY2g1LmFkYiAoTWFrZV9UYWdfQ3RybF9Bc3NpZ25tZW50KTogRm9yIGFuIGFzc2lnbm1lbnQgb2YgYQoJY29udHJvbGxlciB0eXBlLCBvciBhbiBhc3NpZ25tZW50IG9mIGEgcmVjb3JkIHR5cGUgd2l0aCBjb250cm9sbGVkCgljb21wb25lbnRzLCBjb3B5IG9ubHkgdXNlciBkYXRhLCBhbmQgbGVhdmUgdGhlIGZpbmFsaXphdGlvbiBjaGFpbgoJcG9pbnRlcnMgdW50b3VjaGVkLgoKMjAwNC0wNy0xNSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtYWtlLmFkYiAoQ29sbGVjdF9Bcmd1bWVudHMpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbiBhdHRlbXB0aW5nCgl0byBjb21waWxlIGEgc291cmNlIG5vdCBwYXJ0IG9mIGFueSBwcm9qZWN0LCB3aGVuIC14IGlzIG5vdCB1c2VkLgoKCSogcHJqLmFkczogKERlZmluZWRfVmFyaWFibGVfS2luZCk6IE5ldyBzdWJ0eXBlCgoJKiBwcmotYXR0ci5hZGIgKFJlZ2lzdGVyX05ld19QYWNrYWdlKTogVHdvIG5ldyBwcm9jZWR1cmVzIHRvIHJlZ2lzdGVyCglhIHBhY2thZ2Ugd2l0aCBvciB3aXRob3V0IGl0cyBhdHRyaWJ1dGVzLgoJKFJlZ2lzdGVyX05ld19BdHRyaWJ1dGUpOiBNZXcgcHJvY2VkdXJlIHRvIHJlZ2lzdGVyIGEgbmV3IGF0dHJpYnV0ZSBpbiBhCglwYWNrYWdlLgoJTmV3IGF0dHJpYnV0ZSBvcmllbnRlZCBzdWJwcm9ncmFtczogQXR0cmlidXRlX05vZGVfSWRfT2YsCglBdHRyaWJ1dGVfS2luZF9PZiwgU2V0X0F0dHJpYnV0ZV9LaW5kX09mLCBBdHRyaWJ1dGVfTmFtZV9PZiwKCVZhcmlhYmxlX0tpbmRfT2YsIFNldF9WYXJpYWJsZV9LaW5kX09mLCBPcHRpb25hbF9JbmRleF9PZiwKCU5leHRfQXR0cmlidXRlLgoJTmV3IHBhY2thZ2Ugb3JpZW50ZWQgc3VicHJvZ3JhbXM6IFBhY2thZ2VfTm9kZV9JZF9PZiwKCUFkZF9Vbmtub3duX1BhY2thZ2UsIEZpcnN0X0F0dHJpYnV0ZV9PZiwgQWRkX0F0dHJpYnV0ZS4KCgkqIHByai1hdHRyLmFkcyAoQXR0cmlidXRlX05vZGVfSWQpOiBOb3cgYSBwcml2YXRlLCBzZWxmIGluaXRpYWxpemVkCgl0eXBlLgoJKFBhY2thZ2VfTm9kZV9JZCk6IE5vdyBhIHByaXZhdGUsIHNlbGYgaW5pdGlhbGl6ZWQgdHlwZQoJKFJlZ2lzdGVyX05ld19QYWNrYWdlKTogTmV3IHByb2NlZHVyZSB0byByZWdpc3RlciBhIHBhY2thZ2Ugd2l0aCBpdHMKCWF0dHJpYnV0ZXMuCglOZXcgYXR0cmlidXRlIG9yaWVudGVkIHN1YnByb2dyYW1zOiBBdHRyaWJ1dGVfTm9kZV9JZF9PZiwKCUF0dHJpYnV0ZV9LaW5kX09mLCBTZXRfQXR0cmlidXRlX0tpbmRfT2YsIEF0dHJpYnV0ZV9OYW1lX09mLAoJVmFyaWFibGVfS2luZF9PZiwgU2V0X1ZhcmlhYmxlX0tpbmRfT2YsIE9wdGlvbmFsX0luZGV4X09mLAoJTmV4dF9BdHRyaWJ1dGUuCglOZXcgcGFja2FnZSBvcmllbnRlZCBzdWJwcm9ncmFtczogUGFja2FnZV9Ob2RlX0lkX09mLAoJQWRkX1Vua25vd25fUGFja2FnZSwgRmlyc3RfQXR0cmlidXRlX09mLCBBZGRfQXR0cmlidXRlLgoKCSogcHJqLWRlY3QuYWRiIChQYXJzZV9BdHRyaWJ1dGVfRGVjbGFyYXRpb24sCglQYXJzZV9QYWNrYWdlX0RlY2xhcmF0aW9uKTogQWRhcHQgdG8gbmV3IHNwZWMgb2YgUHJqLkF0dHIuCgoJKiBwcmotbWFrci5hZGIgKE1ha2UpOiBQYXJzZSBleGlzdGluZyBwcm9qZWN0IGZpbGUgYmVmb3JlIGNyZWF0aW5nCglvdGhlciBmaWxlcy4gRmFpbCBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHBhcnNpbmcuCgoJKiBwcmotcHJvYy5hZGIgKEFkZF9BdHRyaWJ1dGVzLCBQcm9jZXNzX0RlY2xhcmF0aXZlX0l0ZW1zKTogQWRhcHQgdG8KCW5ldyBzcGVjIG9mIFByai5BdHRyLgoKCSogcHJqLXN0cnQuYWRiIChBdHRyaWJ1dGVfUmVmZXJlbmNlLCBQYXJzZV9WYXJpYWJsZV9SZWZlcmVuY2UpOiBBZGFwdAoJdG8gbmV3IHNwZWMgb2YgUHJqLkF0dHIuCgoyMDA0LTA3LTE1ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdXRpbHMyLmM6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDA0LTA3LTE0ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJhbnMuYyAoYWRkX2RlY2xfZXhwcik6IENsZWFyIFRSRUVfUkVBRE9OTFkgaWYgY2xlYXIgREVDTF9JTklUSUFMLgoJKiB1dGlscy5jICh1bmNoZWNrZWRfY29udmVydCk6IERvbid0IGRvIHR3byBWSUVXX0NPTlZFUlRfRVhQUnMuCgoyMDA0LTA3LTE0ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogdHJhbnMuYyAoZ25hdF9pbml0X3N0bXRfZ3JvdXApOiBSZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb24uCgoyMDA0LTA3LTEzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jOiAoZ25hdF90b19nbnVfZW50aXR5LCBvYmplY3QgY2FzZSk6IENvbnZlcnQgaW5pdGlhbGl6ZXIgdG8KCW9iamVjdCB0eXBlLgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX1JlY29yZF9TdWJ0eXBlKTogUHJvcGVybHkgc2V0CglUWVBFX1NUVUJfREVDTC4KCgkqIG1pc2MuYyAoZ25hdF90eXBlc19jb21wYXRpYmxlX3ApOiBOZXcgZnVuY3Rpb24uCgkoTEFOR19IT09LU19UWVBFU19DT01QQVRJQkxFX1ApOiBOZXcgaG9vaywgdG8gdXNlIGl0LgoJKExBTkdfSE9PS1NfVFlQRV9NQVhfU0laRSwgZ25hdF90eXBlX21heF9zaXplKTogTmV3LgoKCSogdHJhbnMuYyAoZ2lnaSk6IE1vdmUgcHJvY2Vzc2luZyBvZiBtYWluIE5fQ29tcGlsYXRpb25fVW5pdCBoZXJlLgoJKGduYXRfdG9fZ251LCBjYXNlIE5fQ29tcGlsYXRpb25fVW5pdCk6IEp1c3QgaGFuZGxlIG5lc3RlZCBjYXNlIGhlcmUuCgkoYWRkX3N0bXQpOiBGb3JjZSB3YWxraW5nIG9mIHNpemVzIGFuZCBERUNMX0lOSVRJQUwgZm9yIERFQ0xfRVhQUi4KCShtYXJrX3Zpc2l0ZWQpOiBEb24ndCBtYXJrIGR1bW15IHR5cGUuCgkodHJlZV90cmFuc2Zvcm0gPE5fUHJvY2VkdXJlX0NhbGxfU3RhdGVtZW50Pik6IFVubGVzcyB0aGlzIGlzIGFuIEluCglwYXJhbWV0ZXIsIHdlIG11c3QgcmVtb3ZlIGFueSBMSk0gYnVpbGRpbmcgZnJvbSBHTlVfTkFNRS4KCShnbmF0X3RvX2dudSwgY2FzZSBOX1N0cmluZ19MaXRlcmFsKTogRmlsbCBpbiBpbmRpY2VzIGluIENPTlNUUlVDVE9SLgoJKHBvc190b19jb25zdHJ1Y3Rvcik6IFVzZSBpbnRfY29uc3RfYmlub3AuCgkoZ25hdF90b19nbnUsIGNhc2UgTl9JZGVudGlmaWVyKTogRG9uJ3QgcmVmZXJlbmNlIERFQ0xfSU5JVElBTCBvZgoJUEFSTV9ERUNMLgoKCSogdXRpbHMuYyAoZ25hdF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IG1ha2UgdHdvICJ2b2lkIiBkZWNscy4KCShnbmF0X3B1c2hsZXZlbCk6IFNldCBUUkVFX1VTRSBvbiBCTE9DSyBub2RlLgoJKGduYXRfaW5zdGFsbF9idWlsdGlucyk6IEFkZCBfX2J1aWx0aW5fbWVtc2V0LgoKMjAwNC0wNy0xMyAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkgPEVfVmFyaWFibGU+KTogSWYgd2UgYXJlIG1ha2luZyBhIHBvaW50ZXIKCWZvciBhIHJlbmFtaW5nLCBzdGFiaWxpemUgdGhlIGluaXRpYWxpemF0aW9uIGV4cHJlc3Npb24gaWYgd2UgYXJlIGF0IGEKCWxvY2FsIGxldmVsLiAgQXQgdGhlIGxvY2FsIGxldmVsLCB1c2VzIG9mIHRoZSByZW5hbWluZyBtYXkgYmUgcGVyZm9ybWVkCglieSBhIGRpcmVjdCBkZXJlZmVyZW5jZSBvZiB0aGUgaW5pdGlhbGl6aW5nIGV4cHJlc3Npb24sIGFuZCB3ZSBkb24ndAoJd2FudCBwb3NzaWJsZSB2YXJpYWJsZXMgdGhlcmUgdG8gYmUgZXZhbHVhdGVkIGZvciBldmVyeSB1c2UuCgoJKiB0cmFucy5jIChnbmF0X3N0YWJpbGl6ZV9yZWZlcmVuY2UsIGduYXRfc3RhYmlsaXplX3JlZmVyZW5jZV8xKToKCVByb3BhZ2F0ZSBUUkVFX1NJREVfRUZGRUNUUyBhbmQgVFJFRV9USElTX1ZPTEFUSUxFIHRvIGF2b2lkIGxvb3NpbmcKCXRoZW0gb24gdGhlIHdheS4gIEFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgd2UgbWF5IGludHJvZHVjZSBzaWRlCgllZmZlY3RzIGluIHRoZSBwcm9jZXNzLgoKMjAwNC0wNy0xMyAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIG1pc2MuYyAoZGVmYXVsdF9wYXNzX2J5X3JlZik6IFVzZSBwYXNzX2J5X3JlZmVyZW5jZS4KCjIwMDQtMDctMTEgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogbWlzYy5jIChMQU5HX0hPT0tTX0NMRUFSX0JJTkRJTkdfU1RBQ0ssIExBTkdfSE9PS1NfUFVTSExFVkVMLAoJTEFOR19IT09LU19QT1BMRVZFTCwgTEFOR19IT09LU19TRVRfQkxPQ0spOiBSZW1vdmUuCgoyMDA0LTA3LTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJhbnMuYyAoZ25hdF90b19nbnUgPE5fSGFuZGxlZF9TZXF1ZW5jZV9PZl9TdGF0ZW1lbnRzPik6IFVwZGF0ZQoJY29tbWVudGFyeS4KCjIwMDQtMDctMDYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogdm1zX2NvbnYuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcuCglBbHBoYWJldGljYWwgb3JkZXIgZm9yIGVudW1lcmF0ZWQgdmFsdWVzIG9mIHR5cGUgQ29tbWFuZF9UeXBlLCB0byBoYXZlCgl0aGUgY29tbWFuZCBpbiBhbHBoYWJldGljYWwgb3JkZXIgZm9yIHRoZSB1c2FnZS4KCgkqIHZtc19jb252LmFkYiAoUHJvY2Vzc19Bcmd1bWVudCk6IFNldCBLZWVwX1RlbXBvcmFyeV9GaWxlcyB0byBUcnVlIGZvcgoJdGhlIHNwZWNpYWwgcXVhbGlmaWVyIC9LRUVQX1RFTVBPUkFSWV9GSUxFUyAobWluaW11bSA2IGNoYXJhY3RlcnMpLgoKCSogZ25hdF91Z24udGV4aTogRG9jdW1lbnQgbmV3IHN3aXRjaCAtZG4gZm9yIHRoZSBHTkFUIGRyaXZlci4KCgkqIG1ha2VncHIuYWRiIChHbG9iYWxfQXJjaGl2ZV9FeGlzdHMpOiBOZXcgZ2xvYmFsIEJvb2xlYW4gdmFyaWFibGUKCShBZGRfQXJjaGl2ZV9QYXRoKTogT25seSBhZGQgdGhlIGdsb2JhbCBhcmNoaXZlIGlmIHRoZXJlIGlzIG9uZS4KCShCdWlsZF9HbG9iYWxfQXJjaGl2ZSk6IFNldCBHbG9iYWxfQXJjaGl2ZV9FeGlzdHMgZGVwZW5kaW5nIGlmIHRoZXJlIGlzCglvciBub3QgYW55IG9iamVjdCBmaWxlIHRvIHB1dCBpbiB0aGUgZ2xvYmFsIGFyY2hpdmUsIGFuZCBkb24ndCBidWlsZAoJYSBnbG9iYWwgYXJjaGl2ZSBpZiB0aGVyZSBpcyBub25lLgoJKFhfU3dpdGNoZXMpOiBOZXcgdGFibGUKCShDb21waWxlX0xpbmtfV2l0aF9HbmF0bWFrZSk6IFBhc3MgdG8gZ25hdG1ha2UgdGhlIC1YIHN3aXRjaGVzIHN0b3JlZAoJaW4gdGhlIFhfU3dpdGNoZXMgdGFibGUsIGlmIGFueS4KCShJbml0aWFsaXplKTogTWFrZSBzdXJlIHRoZSBYX1N3aXRjaGVzIHRhYmxlIGlzIGVtcHR5CgkoU2Nhbl9BcmcpOiBSZWNvcmQgLVggc3dpdGNoZXMgaW4gdGFibGUgWF9Td2l0Y2hlcwoKCSogb3B0LmFkcyAoS2VlcF9UZW1wb3JhcnlfRmlsZXMpOiBOZXcgQm9vbGVhbiBmbGFnLCBkZWZhdWx0ZWQgdG8gRmFsc2UuCgoJKiBtYWtlLmFkYjogTWlub3IgY29tbWVudCBmaXgKCgkqIGduYXRuYW1lLmFkYiAoR25hdG5hbWUpOiBXaGVuIG5vdCBvbiBWTVMsIGFuZCBnbmF0bmFtZSBoYXMgYmVlbgoJaW52b2tlZCB3aXRoIGRpcmVjdG9yeSBpbmZvcm1hdGlvbiwgYWRkIHRoZSBkaXJlY3RvcnkgaW4gZnJvbnQgb2YgdGhlCglwYXRoLgoKCSogZ25hdGNob3AuYWRiIChHbmF0Y2hvcCk6IFdoZW4gbm90IG9uIFZNUywgYW5kIGduYXRjaG9wIGhhcyBiZWVuCglpbnZva2VkIHdpdGggZGlyZWN0b3J5IGluZm9ybWF0aW9uLCBhZGQgdGhlIGRpcmVjdG9yeSBpbiBmcm9udCBvZiB0aGUKCXBhdGguCgoJKiBnbmF0Y21kLmFkYiAoRGVsZXRlX1RlbXBfQ29uZmlnX0ZpbGVzKTogT25seSBkZWxldGUgdGVtcG9yYXJ5IGZpbGVzCgl3aGVuIEtlZXBfVGVtcG9yYXJ5X0ZpbGVzIGlzIEZhbHNlLgoJKEdOQVRDbWQpOiBXaGVuIG5vdCBvbiBWTVMsIGFuZCB0aGUgR05BVCBkcml2ZXIgaGFzIGJlZW4gaW52b2tlZCB3aXRoCglkaXJlY3RvcnkgaW5mb3JtYXRpb24sIGFkZCB0aGUgZGlyZWN0b3J5IGluIGZyb250IG9mIHRoZSBwYXRoLgoJV2hlbiBub3Qgb24gVk1TLCBoYW5kbGUgbmV3IHN3aXRjaCAtZG4gYmVmb3JlIHRoZSBjb21tYW5kIHRvIHNldAoJS2VlcF9UZW1wb3JhcnlfRmlsZXMgdG8gVHJ1ZS4KCShOb25fVk1TX1VzYWdlKTogVXNlIGxvd2VyIGNhc2UgZm9yIHRoZSBub24gVk1TIHVzYWdlOiB0aGlzIGlzIHZhbGlkCglldmVyeXdoZXJlLgoKCSogZ25hdGxpbmsuYWRiIChHbmF0bGluayk6IFdoZW4gbm90IG9uIFZNUywgYW5kIGduYXRsaW5rIGhhcyBiZWVuCglpbnZva2VkIHdpdGggZGlyZWN0b3J5IGluZm9ybWF0aW9uLCBhZGQgdGhlIGRpcmVjdG9yeSBpbiBmcm9udCBvZiB0aGUKCXBhdGguCgoyMDA0LTA3LTA2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiIChOYW1lX1N0dWIpOiBOZXcgbmFtZSBmb3IgdGhlIGRpc3RyaWJ1dGVkCglzeXN0ZW1zIGFubmV4LgoKCSogcnRzZmluZC5hZHM6IE5ldyBSVEUgVENfT2JqZWN0LCBmb3IgRFNBL1BvbHlPUkIuCglOZXcgUlRFcyBSQVNfUHJveHlfVHlwZSBhbmQgUkFTX1Byb3h5X1R5cGVfQWNjZXNzLCBmb3IgRFNBLgoKCSogZy1zb2NrZXQuYWRiIChUb19UaW1ldmFsKTogRml4IGluY29ycmVjdCBjb252ZXJzaW9uIG9mCglTZWxlY3Rvcl9EdXJhdGlvbiB0byBUaW1ldmFsIGZvciB0aGUgY2FzZSBvZiAwLjAuCgoJKiBleHBfdXRpbC5hZHMgKEV2b2x2ZV9Pcl9FbHNlKTogRml4IG92ZXJlbnRodXNpYXN0aWMgY29weS9wYXN0ZSBvZgoJZG9jdW1lbnRhdGlvbiBmcm9tIEV2b2x2ZV9BbmRfVGhlbi4KCjIwMDQtMDctMDYgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIHMtdGFwcm9wLXRydTY0LmFkYiwgcy10YXByb3Atb3MyLmFkYiwKCXMtdGFwcm9wLW1pbmd3LmFkYiwgcy10YXByb3AtcG9zaXguYWRiOiBVcGRhdGUgY29tbWVudC4KCjIwMDQtMDctMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcy1vc2ludGUtaHB1eC5hZHMsIHMtb3NpbnRlLWZyZWVic2QuYWRzLAoJcy1vc2ludGUtbHlueG9zLmFkcywgcy10YXByb3AtbHlueG9zLmFkYiwgcy1vc2ludGUtdHJ1NjQuYWRzLAoJcy1vc2ludGUtYWl4LmFkcywgcy1vc2ludGUtaXJpeC5hZHMsIHMtdGFwcm9wLWlyaXguYWRiLAoJcy1pbnRlcnItc2lnYWN0aW9uLmFkYiwgcy10YXByb3AtaXJpeC1hdGhyZWFkLmFkYiwKCXMtb3NpbnRlLWhwdXgtZGNlLmFkYiwgcy10YXByb3AtaHB1eC1kY2UuYWRiLAoJcy10YXByb3AtbGludXguYWRiLCBzLXRhcHJvcC1kdW1teS5hZGIsIHMtdGFwcm9wLXNvbGFyaXMuYWRiLAoJcy1pbnRlcnItdm1zLmFkYiwgcy1vc2ludGUtdm1zLmFkcywgcy10YXByb3Atdm1zLmFkYiwKCXMtb3NpbnRlLXZ4d29ya3MuYWRzLCBzLW9zcHJpbS12eHdvcmtzLmFkYiwgYS1udW1hdXgteDg2LmFkYiwKCWEtZXhjZXB0LmFkYiwgYS1leGV4cHIuYWRiLCBhLWludHNpZy5hZGIsIGEtdGFncy5hZGIsCglhLXRhZ3MuYWRzLCBiaW5kZ2VuLmFkcywgY2hlY2tzLmFkYiwgY2hlY2tzLmFkYiwKCWNzZXRzLmFkcywgZWluZm8uYWRzLCBlaW5mby5hZHMsIGVsaXN0cy5hZGIsIGV4cF9jaDQuYWRiLAoJZXhwX2NoNy5hZGIsIGV4cF9kaXN0LmFkYiwgZXhwX3V0aWwuYWRiLCBmcmVlemUuYWRiLAoJZy1keW5odGEuYWRiLCBnbmF0bWVtLmFkYiwgZy1yZWdleHAuYWRiLCBpbmxpbmUuYWRiLAoJaS1vczJ0aHIuYWRzLCBvc2ludC5hZGIsIHByai5hZGIsIHNjbmcuYWRiLCBzZW1fY2F0LmFkYiwKCXNlbV9jaDEwLmFkYiwgc2VtX2NoMTIuYWRiLCBzZW1fY2g0LmFkYiwgc2VtX2NoNy5hZGIsCglzZW1fY2g4LmFkYiwgc2VtX2Rpc3AuYWRiLCBzZW1fcHJhZy5hZGIsIHNlbV9yZXMuYWRiLAoJc2VtX3R5cGUuYWRiLCBzZW1fdHlwZS5hZHMsIHNlbV93YXJuLmFkYiwgcy1maWNvYmwuYWRzLAoJcy1maW5pbXAuYWRiLCBzLWh0YWJsZS5hZGIsIHNpbmZvLmFkcywgc2lucHV0LWwuYWRzLAoJcy1pbnRlcnIuYWRiLCBzLWludGVyci5hZHMsIHNwcmludC5hZGIsIHMtdGFyZXN0LmFkYiwKCXMtdGFzaW5pLmFkcywgcy10YXNraW4uYWRzLCBzLXRhc2tpbi5hZHMsIHVuYW1lLmFkYiwKCXZtc19kYXRhLmFkczogTWlub3IgcmVmb3JtYXR0aW5nLAoJRml4IGJhZCBib3ggY29tbWVudCBmb3JtYXQuCgoJKiBnbmF0X3JtLnRleGk6IEZpeCBtaW5vciBncmFtbWF0aWNhbCBlcnJvcgoKCSogc2VtX2F0dHIuYWRiLCBleHBfYXR0ci5hZGI6IE5ldyBhdHRyaWJ1dGUgSGFzX0FjY2Vzc19WYWx1ZXMKCgkqIHNlbV91dGlsLmFkcywgc2VtX3V0aWwuYWRiIChSZXF1aXJlc19UcmFuc2llbnRfU2NvcGUpOiBBbGxvdyBtYW55Cgltb3JlIGNhc2VzIG9mIGRpc2NyaW1pbmF0ZWQgcmVjb3JkcyB0byBiZSByZWNvZ25pemVkIGFzIG5vdCBuZWVkaW5nIGEKCXNlY29uZGFyeSBzdGFjay4KCShIYXNfQWNjZXNzX1ZhbHVlcyk6IE5ldyBmdW5jdGlvbi4KCgkqIHNuYW1lcy5oLCBzbmFtZXMuYWRiLCBzbmFtZXMuYWRzOiBOZXcgYXR0cmlidXRlIEhhc19BY2Nlc3NfVmFsdWVzCgoJKiBjc3RhbmQuYWRiLCBsYXlvdXQuYWRzLCBsYXlvdXQuYWRiLCBzZW1fY2gxMy5hZHM6IENoYW5nZSBuYW1lCglTZXRfUHJpbV9BbGlnbm1lbnQgdG8gU2V0X0VsZW1fQWxpZ25tZW50IChtb3JlIGFjY3VyYXRlIGNvcnJlc3BvbmRlbmNlCgl3aXRoIExSTSB0ZXJtaW5vbG9neSkuCglDaGFuZ2UgdGVybWlub2xvZ3kgaW4gY29tbWVudHMgcHJpbWl0aXZlIHR5cGUgPT4gZWxlbWVudGFyeSB0eXBlLgoKMjAwNC0wNy0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCVBSIGFkYS8xNTYwMgoJKiBzZW1fY2g3LmFkYiAoVW5pdF9SZXF1aXJlc19Cb2R5KTogRm9yIGEgZ2VuZXJpYyBwYWNrYWdlLCB0aGUgZm9ybWFsCglwYXJhbWV0ZXJzIGRvIG5vdCBpbXBvc2UgYW55IHJlcXVpcmVtZW50cyBvbiB0aGUgcHJlc2VuY2Ugb2YgYSBib2R5LgoKMjAwNC0wNy0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCVBSIGFkYS8xNTU5MwoJKiBzZW1fY2gxMi5hZGIgKEFuYWx5emVfUGFja2FnZV9JbnN0YW50aWF0aW9uKTogSWYgdGhlIGdlbmVyaWMgaXMgbm90IGEKCWNvbXBpbGF0aW9uIHVuaXQgYW5kIGlzIGluIGFuIG9wZW4gc2NvcGUgYXQgdGhlIHBvaW50IG9mIGluc3RhbnRpYXRpb24sCglhc3N1bWUgdGhhdCBhIGJvZHkgbWF5IGJlIHByZXNlbnQgbGF0ZXIuCgoyMDA0LTA3LTA2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gxMy5hZGIgKEFuYWx5emVfQXR0cmlidXRlX0RlZmluaXRpb25fQ2xhdXNlLCBjYXNlICdTaXplKToKCUltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHNwZWNpZmllZCBzaXplIGlzIG5vdCBzdXBwb3J0ZWQuCgoJKiBzZW1fY2g2LmFkYiAoTWF5YmVfUHJpbWl0aXZlX09wZXJhdGlvbik6IEEgbGlicmFyeS1sZXZlbCBzdWJwcm9ncmFtCglpcyBuZXZlciBhIHByaW1pdGl2ZSBvcGVyYXRpb24uCgoyMDA0LTA3LTA1ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogYWRhLXRyZWUuaCAoVFlQRV9MRUZUX0pVU1RJRklFRF9NT0RVTEFSX1ApOiBVc2UKCVJFQ09SRF9PUl9VTklPTl9DSEVDSy4KCShUWVBFX0NPTlRBSU5TX1RFTVBMQVRFX1ApOiBMaWtld2lzZS4KCjIwMDQtMDctMDQgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW4gKGRvYy9nbmF0X3Vnbl91bncudGV4aSk6IEVsaW1pbmF0ZSBleHBsaWNpdAoJZGVwZW5kZW5jeSBvbiB4Z25hdHVnbiwgaW5zdGVhZCBidWlsZCBpdCB2aWEgYSBzdWJtYWtlLgoJKEFEQV9JTkZPRklMRVMpOiBBZGQgZG9jL2duYXRfdWduX3Vudy50ZXhpLgoKMjAwNC0wNy0wNCAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHV0aWxzMi5jIChnbmF0X21hcmtfYWRkcmVzc2FibGUpOiBEb24ndCBwdXRfdmFyX2ludG9fc3RhY2suCgoyMDA0LTA3LTAxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJhbnMuYyAoZ25hdF9zdGFiaWxpemVfcmVmZXJlbmNlKTogRG9uJ3QgaGFuZGxlIFJUTF9FWFBSLgoJKiB1dGlscy5jIChtYXhfc2l6ZSk6IExpa2V3aXNlLgoKMjAwNC0wNi0yOCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYzogUmVtb3ZlIGNhbGxzIHRvIGFkZF9kZWNsX2V4cHIsIHB1c2hkZWNsLCByZXN0X29mX2NvbXBpbGF0aW9uLAoJYW5kIHJlc3Rfb2ZfdHlwZV9jb21waWxhdGlvbjsgYWRkIGFyZyB0byBjcmVhdGVfKl9kZWNsLgoJKGFubm90YXRlX2RlY2xfd2l0aF9ub2RlKTogRGVsZXRlZC4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9BcnJheV9UeXBlKTogU2V0IGxvY2F0aW9uIG9mIGZpZWxkcy4KCSogZ2lnaS5oIChnZXRfZGVjbHMsIGJsb2NrX2hhc192YXJzLCBwdXNoZGVjbCk6IERlbGV0ZWQuCgkoZ2V0X2N1cnJlbnRfYmxvY2tfY29udGV4dCwgZ25hdF9wdXNoZGVjbCk6IE5ldyBkZWNsYXJhdGlvbnMuCgkoZ25hdF9pbml0X3N0bXRfZ3JvdXApOiBMaWtld2lzZS4KCShjcmVhdGVfdmFyX2RlY2wsIGNyZWF0ZV90eXBlX2RlY2wsIGNyZWF0ZV9zdWJwcm9nX2RlY2wpOiBBZGQgbmV3IGFyZy4KCSogbWlzYy5jIChMQU5HX0hPT0tTX0NMRUFSX0JJTkRJTkdfU1RBQ0spOiBEZWxldGVkLgoJKExBTkdfSE9PS1NfR0VUREVDTFMsIExBTkdfSE9PS1NfUFVTSERFQ0wpOiBEZWxldGVkLgoJKGduYXRfaW5pdCk6IENhbGwgZ25hdF9pbml0X3N0bXRfZ3JvdXAuCgkqIHRyYW5zLmMgKGdsb2JhbF9zdG10X2dyb3VwLCBnbnVfZWxhYl9wcm9jX2RlY2wpOiBOZXcgdmFyaWFibGVzLgoJKGdudV9wZW5kaW5nX2VsYWJvcmF0aW9uX2xpc3QpOiBEZWxldGVkLgoJKG1hcmtfdmlzaXRlZCwgbWFya191bnZpc2l0ZWQsIGduYXRfaW5pdF9zdG10X2dyb3VwKTogTmV3IGZ1bmN0aW9ucy4KCShnaWdpKTogUmVhcnJhbmdlIGluaXRpYWxpemF0aW9uIGNhbGxzIGFuZCBtb3ZlIHNvbWUgdG8gbGFzdCBhYm92ZS4KCShnbmF0X3RvX2dudSk6IElmIHN0YXRlbWVudCBhbmQgbm90IGluIHByb2NlZHVyZSwgZ28gaW50byBlbGFiIHByb2MuCglEZWxldGUgY2FsbHMgdG8gYWRkX2RlY2xfZXhwcjsgYWRkIGFyZyB0byBjcmVhdGVfKl9kZWNsLgoJKGduYXRfdG9fZ251LCBjYXNlIE5fTG9vcCk6IFJlY2FsY3VsYXRlIHNpZGUgZWZmZWN0cyBvbiBDT05EX0VYUFIuCgkoZ25hdF90b19nbnUsIGNhc2UgTl9TdWJwcm9ncmFtX0JvZHkpOiBNb3ZlIHNvbWUgY29kZSB0bwoJYmVnaW5fc3VicHJvZ19ib2R5IGFuZCBjYWxsIGl0LgoJRG9uJ3QgcHVzaCBhbmQgcG9wIGdnYyBjb250ZXh0LgoJKGduYXRfdG9fZ251LCBjYXNlIE5fQ29tcGlsYXRpb25fVW5pdCk6IFJld29yayB0byBzdXBwb3J0IGVsYWIgcHJvYy4KCShhZGRfc3RtdCk6IFJlbW92ZSBoYW5kbGluZyBvZiBERUNMX0VYUFIgZnJvbSBoZXJlLgoJSWYgbm90IGluIGZ1bmN0aW9uLCBtYXJrIHZpc2l0ZWQuCgkoYWRkX2RlY2xfZXhwcik6IFB1dCBnbG9iYWwgYXQgdG9wIGxldmVsLgoJQ2hlY2sgZm9yIGNhc2VzIG9mIERFQ0xfSU5JVElBTCB3ZSBoYXZlIHRvIGhhbmRsZSBoZXJlLgoJKHByb2Nlc3NfdHlwZSk6IEFkZCBleHRyYSBhcmcgdG8gY3JlYXRlX3R5cGVfZGVjbC4KCShidWlsZF91bml0X2VsYWIpOiBSZXdvcmsgdG8ganVzdCBnaW1wbGlmeS4KCSogdXRpbHMuYyAocGVuZGluZ19lbGFib3JhdGlvbnMsIGVsaXN0X3N0YWNrLCBnZXRkZWNscyk6IERlbGV0ZWQuCgkoYmxvY2tfaGFzX3ZhcnMsIG1hcmtfdmlzaXRlZCwgYWRkX3BlbmRpbmdfZWxhYm9yYXRpb25zKTogTGlrZXdpc2UuCgkoZ2V0X3BlbmRpbmdfZWxhYm9yYXRpb25zLCBwZW5kaW5nX2VsYWJvcmF0aW9uc19wKTogTGlrZXdpc2UuCgkocHVzaF9wZW5kaW5nX2VsYWJvcmF0aW9ucywgcG9wX3BlbmRpbmdfZWxhYm9yYXRpb25zKTogTGlrZXdpc2UuCgkoZ2V0X2VsYWJvcmF0aW9uX2xvY2F0aW9uLCBpbnNlcnRfZWxhYm9yYXRpb25fbGlzdCk6IExpa2V3aXNlLgoJKGduYXRfYmluZGluZ19sZXZlbCk6IFJlbmFtZWQgZnJvbSBhZGFfYmluZGluZ19sZXZlbC4KCShpbml0X2duYXRfdG9fZ251KTogRG9uJ3QgY2xlYXIgcGVuZGluZ19lbGFib3JhdGlvbnMuCgkoZ2xvYmFsX2JpbmRpbmdzX3ApOiBUcmVhdCBhcyBnbG9iYWwgaWYgbm8gY3VycmVudF9iaW5kaW5nX2xldmVsLgoJKHNldF9jdXJyZW50X2Jsb2NrX2NvbnRleHQpOiBOZXcgZnVuY3Rpb24uCgkoZ25hdF9wdXNoZGVjbCk6IFJlbmFtZWQgZnJvbSBwdXNoZGVjbDsgbWFqb3IgcmV3b3JrLgoJQWxsIGNhbGxlcnMgY2hhbmdlZC4KCShjcmVhdGVfdHlwZV9kZWNsLCBjcmVhdGVfdmFyX2RlY2wsIGNyZWF0ZV9zdWJwcm9nX2RlY2wpOiBBZGQgbmV3IGFyZy4KCShmaW5pc2hfcmVjb3JkX3R5cGUpOiBDYWxsIGNhbGwgcHVzaGRlY2wgZm9yIHN0dWIgZGVjbC4KCShmdW5jdGlvbl9uZXN0aW5nX2RlcHRoKTogRGVsZXRlZC4KCShiZWdpbl9zdWJwcm9nX2JvZHkpOiBEZWxldGUgb2Jzb2xldGUgY29kZS4KCSogdXRpbHMyLmMgKGJ1aWxkX2NhbGxfYWxsb2NfZGVhbGxvYyk6IEFkZCBuZXcgYXJnIHRvIGNyZWF0ZV92YXJfZGVjbC4KCjIwMDQtMDYtMjggIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogbWxpYi10Z3QtdHJ1NjQuYWRiLCBtbGliLXRndC1haXguYWRiLCBtbGliLXRndC1pcml4LmFkYiwKCW1saWItdGd0LWlyaXguYWRiLCBtbGliLXRndC1ocHV4LmFkYiwgbWxpYi10Z3QtbGludXguYWRiLAoJbWxpYi10Z3QtbGludXguYWRiLCBtbGliLXRndC1zb2xhcmlzLmFkYiwgbWxpYi10Z3Qtc29sYXJpcy5hZGIsCgltbGliLXRndC12bXMtYWxwaGEuYWRiLCBtbGliLXRndC12bXMtYWxwaGEuYWRiLCBtbGliLXRndC12bXMtaWE2NC5hZGIsCglhLXN0cm1hcC5hZGIsIGEtc3RybWFwLmFkcywgY2xlYW4uYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGV4cF91dGlsLmFkYiAoSXNfUG9zc2libHlfVW5hbGlnbmVkX1NsaWNlKTogQ29tcGxldGVseSByZXdyaXR0ZW4sIHRvCglkZWFsIHdpdGggcHJvYmxlbSBvZiBpbmVmZmljaWVudCBzbGljZXMgb24gbWFjaGluZXMgd2l0aCBzdHJpY3QKCWFsaWdubWVudCwgd2hlbiB0aGUgc2xpY2UgaXMgYSBjb21wb25lbnQgb2YgYSBjb21wb3NpdGUuCgoJKiBjaGVja3MuYWRiIChBcHBseV9BcnJheV9TaXplX0NoZWNrKTogRG8gbm90IHNwZWNpYWwgY2FzZSA2NC1iaXQKCW1hY2hpbmVzLCB3ZSBuZWVkIHRoZSBjaGVjayB0aGVyZSBhcyB3ZWxsLgoKMjAwNC0wNi0yOCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9Bc3NpZ25fQXJyYXkpOiBVc2UgY29ycmVjdCBjb25kaXRpb24gdG8KCWRldGVybWluZSBzYWZlIGNvcHlpbmcgZGlyZWN0aW9uIGZvciBvdmVybGFwcGluZyBzbGljZSBhc3NpZ25tZW50cwoJd2hlbiBjb21wb25lbnQgaXMgY29udHJvbGxlZC4KCgkqIHNlbV9jaDEyLmFkYiAoSW5zdGFudGlhdGVfRm9ybWFsX1BhY2thZ2UpOiBJbXBsaWNpdCBvcGVyYXRpb25zIG9mIGEKCWZvcm1hbCBkZXJpdmVkIHR5cGUgaW4gdGhlIGFjdHVhbCBmb3IgYSBmb3JtYWwgcGFja2FnZSBhcmUgdmlzaWJsZSBpbgoJdGhlIGVuY2xvc2luZyBpbnN0YW5jZS4KCjIwMDQtMDYtMjggIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTU2MDAKCSogc2VtX3V0aWwuYWRiIChUcmFjZV9Db21wb25lbnRzKTogRGlhZ25vc2UgcHJvcGVybHkgYW4gaWxsZWdhbAoJY2lyY3VsYXJpdHkgaW52b2x2aW5nIGEgcHJpdmF0ZSB0eXBlIHdob3NlIGNvbXBsZXRpb24gaW5jbHVkZXMgYQoJc2VsZi1yZWZlcmVudGlhbCBjb21wb25lbnQuCgkoRW50ZXJfTmFtZSk6IFVzZSBJc19Jbmhlcml0ZWRfT3BlcmF0aW9uIHRvIGRpc3Rpbmd1aXNoIGEgc291cmNlCglyZW5hbWluZyBvciBhbiBpbnN0YW50aWF0aW9uIGZyb20gYW4gaW1wbGljaXQgZGVyaXZlZCBvcGVyYXRpb24uCgoyMDA0LTA2LTI4ICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBtbGliLXRndC1taW5ndy5hZGI6IChMaWJyYXJ5X0V4aXN0c19Gb3IpOiBSZW1vdmUgImxpYiIgcHJlZml4IGZyb20KCURMTC4KCShMaWJyYXJ5X0ZpbGVfTmFtZV9Gb3IpOiBJZGVtLgoKMjAwNC0wNi0yOCAgTWF0dGhldyBHaW5nZWxsICA8Z2luZ2VsbEBnbmF0LmNvbT4KCgkqIGctdHJhY2ViLmFkczogQWRkIGV4cGxhbmF0b3J5IG5vdGUgb24gdGhlIGZvcm1hdCBvZiBhZGRyZXNzZXMKCWV4cGVjdGVkIGJ5IGFkZHIybGluZS4KCjIwMDQtMDYtMjggIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW46IEZvcmNlIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBvbiBzLXRhc2RlYi5hZGIsCglhLWV4Y2VwdC5hZGIgYW5kIHMtYXNzZXJ0LmFkYiBuZWVkZWQgYnkgdGhlIGRlYnVnZ2VyLgoKMjAwNC0wNi0yOCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtYWtlLmFkYiAoQ29sbGVjdF9Bcmd1bWVudHNfQW5kX0NvbXBpbGUpOiBDaGFuZ2UgRmxhZzEgdG8KCU5lZWRfVG9fQnVpbGRfTGliLgoJKEduYXRtYWtlKTogRGl0dG8uCgoJKiBtbGliLXByai5hZGIgKENoZWNrX0xpYnJhcnkpOiBSZXBsYWNlIEZsYWcxIHdpdGggTmVlZF9Ub19CdWlsZF9MaWIKCgkqIHByai5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJKFByb2plY3RfRW1wdHkpOiBDaGFuZ2UgRmxhZzEgdG8gTmVlZF9Ub19CdWlsZF9MaWIuIFJlbW92ZSBGbGFnMi4KCgkqIHByai5hZHM6IENvbW1lbnQgdXBkYXRlcwoJTWlub3IgcmVmb3JtYXR0aW5nCgkoUHJvamVjdF9EYXRhKTogQ2hhbmdlIEZsYWcxIHRvIE5lZWRfVG9fQnVpbGRfTGliLgoJUmVtb3ZlIEZsYWcyOiBub3QgdXNlZC4KCgkqIHByai1kZWN0LmFkYiAoUGFyc2VfRGVjbGFyYXRpdmVfSXRlbXMpOiBBY2NlcHQgIm51bGwiIGFzIGEKCWRlY2xhcmF0aW9uLgoKCSogZ25hdF91Z24udGV4aTogUHV0IGEgIm51bGw7IiBkZWNsYXJhdGlvbiBpbiBvbmUgcHJvamVjdCBmaWxlIGV4YW1wbGUKCgkqIGduYXRfcm0udGV4aTogRG9jdW1lbnQgRW1wdHkgZGVjbGFyYXRpb25zICJudWxsOyIuCgoJKiBtYWtlZ3ByLmFkYiAoQ29tcGlsZV9MaW5rX1dpdGhfR25hdG1ha2UpOiBQdXQgdGhlIGdsb2JhbCBhcmNoaXZlcyBpbgoJZnJvbnQgb2YgdGhlIGxpbmtlciBvcHRpb25zLgoJKExpbmtfRm9yZWlnbik6IFB1dCB0aGUgZ2xvYmFsIGFyY2hpdmVzIGFuZCB0aGUgbGlicmFyaWVzIGluIGZyb250IG9mCgl0aGUgbGlua2VyIG9wdGlvbnMuCgoyMDA0LTA2LTI4ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBydHNmaW5kLmFkYjogKEdldF9Vbml0X05hbWUpOiBGaXggdHlwbyBpbiBjb21tZW50CgkoUlRVX0xvYWRlZCk6IENvZGUgY2xlYW51cAoJKFNldF9SVFVfTG9hZGVkKTogTmV3IHByb2NlZHVyZSB0byByZWdpc3RlciBhcyAqbG9hZGVkKiBleHBsaWNpdGx5Cgl3aXRoZWQgcHJlZGVmaW5lZCB1bml0cy4KCgkqIHJ0c2ZpbmQuYWRzIChTZXRfUlRVX0xvYWRlZCk6IE5ldyBwcm9jZWR1cmUgdG8gcmVnaXN0ZXIgYXMgKmxvYWRlZCoKCWV4cGxpY2l0bHkgd2l0aGVkIHByZWRlZmluZWQgdW5pdHMuCglGaXggdHlwbyBpbiBjb21tZW50CgoJKiBzZW1fY2gxMC5hZGIgKEFuYWx5emVfQ29tcGlsYXRpb25fVW5pdCk6IFJlZ2lzdGVyIGFzICpsb2FkZWQqCglleHBsaWNpdGx5IHdpdGhlZCBwcmVkZWZpbmVkIHVuaXRzLgoKMjAwNC0wNi0yNiAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFkYS10cmVlLmRlZiAoREVDTF9TVE1UKTogRGVsZXRlZC4KCSogYWRhLXRyZWUuaCAoSVNfQURBX1NUTVQpOiBOb3cgdGVzdCBhZ2FpbnN0IFNUTVRfU1RNVC4KCShERUNMX1NUTVRfVkFSKTogRGVsZXRlZC4KCSogZGVjbC5jOiBhZGRfZGVjbF9zdG10IG5vdyBhZGRfZGVjbF9leHByLgoJKiBnaWdpLmg6IExpa2V3aXNlLgoJKiB0cmFucy5jOiBMaWtld2lzZS4KCShnbmF0X2dpbXBsaWZ5X3R5cGVfc2l6ZXMsIGduYXRfZ2ltcGxpZnlfb25lX3NpemVwb3MpOiBEZWxldGVkLgoJKGduYXRfdG9fZ251LCBjYXNlIE5fU3VicHJvZ3JhbV9Cb2R5KTogU2V0IGNmdW4tPmZ1bmN0aW9uX2VuZF9sb2N1cy4KCShhZGRfc3RtdCk6IE9ubHkgaGFuZGxlIHBhZGRlZCB0eXBlIGhlcmUuCgkoYWRkX3N0bXRfd2l0aF9ub2RlKTogQWxsb3cgZ25hdF9ub2RlIHRvIG5vdCBiZSBwcmVzZW50LgoJKGduYXRfZ2ltcGxpZnlfc3RtdCwgY2FzZSBVU0VfU1RNVCk6IFNldCAqU1RNVF9QIHRvIG51bGwuCgkoZ25hdF9naW1wbGlmeV9zdG10LCBjYXNlIERFQ0xfU1RNVCk6IERlbGV0ZWQuCgkoZ25hdF9zdGFiaWxpemVfcmVmZXJlbmNlXzEpOiBJZiBDT01QT05FTlRfUkVGIG9mIGZhdCBwb2ludGVyLAoJbWFrZSBhIFNBVkVfRVhQUiBmb3IgdGhlIGVudGlyZSBmYXQgcG9pbnRlci4KCSogdXRpbHMuYyAocHVzaGRlY2wpOiBXYWxrIGEgREVDTF9FWFBSIGluIGdsb2JhbCBjYXNlLgoJKGNyZWF0ZV9pbmRleF90eXBlKTogTWFrZSBhIERFQ0xfRVhQUi4KCShlbmRfc3VicHJvZ19ib2R5KTogRG9uJ3QgY2FsbCBhbGxvY2F0ZV9zdHJ1Y3RfZnVuY3Rpb24gaGVyZSBidXQKCWRvIGNsZWFyIGNmdW4uCgoyMDA0LTA2LTI1ICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBtYWtlZ3ByLmFkYiAoQnVpbGRfTGlicmFyeSk6IFJlbW92ZSBwYXJhbWV0ZXIgTGliX0FkZHJlc3MgYW5kCglSZWxvY2F0YWJsZSBmcm9tIEJ1aWxkX0R5bmFtaWNfTGlicmFyeSBjYWxsLgoKCSogZ25hdF91Z24udGV4aTogQ2hhbmdlIGRvY3VtZW50YXRpb24gYWJvdXQgTGlicmFyeV9LaW5kLiBEeW5hbWljIGFuZAoJUmVsb2NhdGFibGUgYXJlIG5vdyBzeW5vbnltLgoKCSogTWFrZWZpbGUuaW46IFVzZSBzLXBhcmFtZS1taW5ndy5hZGIgb24gTWluZ1cgcGxhdGZvcm0uCgoJKiBtbGliLXByai5hZGIgKEJ1aWxkX0xpYnJhcnkpOiBSZW1vdmUgRExMX0FkZHJlc3MgY29uc3RhbnQgZGVmaW5pdGlvbi4KCVJlbW92ZSBwYXJhbWV0ZXIgTGliX0FkZHJlc3MgYW5kIFJlbG9jYXRhYmxlIGZyb20gQnVpbGRfRHluYW1pY19MaWJyYXJ5CgljYWxsLgoKCSogbWxpYi10Z3QuYWRzLCBtbGliLXRndC5hZGIgKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IFJlbW92ZSBwYXJhbWV0ZXIKCUxpYl9BZGRyZXNzIGFuZCBSZWxvY2F0YWJsZS4KCShEZWZhdWx0X0RMTF9BZGRyZXNzKTogUmVtb3ZlZC4KCgkqIG1saWItdGd0LXRydTY0LmFkYiwgbWxpYi10Z3QtYWl4LmFkYiwgbWxpYi10Z3QtaXJpeC5hZGIsCgltbGliLXRndC1ocHV4LmFkYiwgbWxpYi10Z3QtbGludXguYWRiLCBtbGliLXRndC1zb2xhcmlzLmFkYiwKCW1saWItdGd0LXZtcy1hbHBoYS5hZGIsIG1saWItdGd0LXZtcy1pYTY0LmFkYiwgbWxpYi10Z3Qtdnh3b3Jrcy5hZGI6CgkoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogUmVtb3ZlIHBhcmFtZXRlciBMaWJfQWRkcmVzcyBhbmQgUmVsb2NhdGFibGUuCgkoRGVmYXVsdF9ETExfQWRkcmVzcyk6IFJlbW92ZWQuCgoJKiBtbGliLXRndC1taW5ndy5hZGI6IERpdHRvLgoJKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IERvIG5vdCBhZGQgImxpYiIgcHJlZml4IHRvIHRoZSBETEwgbmFtZS4KCgkqIHMtdGFwcm9wLW1pbmd3LmFkYiAoQ3JlYXRlX1Rhc2spOiBVc2UgQWRqdXN0X1N0b3JhZ2VfU2l6ZSB0byBjb21wdXRlCgl0aGUgaW5pdGlhbCB0aHJlYWQgc3RhY2sgc2l6ZS4KCgkqIGEtc3RybWFwLmFkczogTW92ZSBwYWNrYWdlIEwgdG8gcHJpdmF0ZSBwYXJ0IGFzIGl0IGlzIG5vdCB1c2VkIGluCgl0aGUgc3BlYy4gRm91bmQgd2hpbGUgcmVhZGluZyBjb2RlLgoKMjAwNC0wNi0yNSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogdHJhY2ViYWsuYzogSW50cm9kdWNlIHN1cHBvcnQgZm9yIGEgR0NDIGluZnJhc3RydWN0dXJlIGJhc2VkCglpbXBsZW1lbnRhdGlvbiBvZiBfX2duYXRfYmFja3RyYWNlLgoKCSogcmFpc2UuYzogRG9uJ3QgcmVseSBvbiBhIEMgbWFwcGluZyBvZiB0aGUgR05BVF9HQ0NfRXhjZXB0aW9uIHJlY29yZAoJYW55IG1vcmUuIFVzZSBhY2Nlc3NvcnMgaW5zdGVhZC4gVGhpcyBlYXNlcyBtYWludGVuYW5jZSBhbmQgcmVsYXhlcwoJc29tZSBhbGlnbm1lbnQgY29uc3RyYWludHMuCgkoX0dOQVRfRXhjZXB0aW9uIHN0cnVjdHVyZSk6IFJlbW92ZSB0aGUgQWRhIHNwZWNpZmljIGZpZWxkcwoJKEVJRF9Gb3IsIEFkanVzdF9OX0NsZWFudXBzX0Zvcik6IE5ldyBhY2Nlc3NvcnMsIGV4cG9ydGVkIGJ5CglhLWV4ZXhwci5hZGIuCgkoaXNfaGFuZGxlZF9ieSwgX19nbmF0X2VoX3BlcnNvbmFsaXR5KTogUmVwbGFjZSBjb21wb25lbnQgcmVmZXJlbmNlcyB0bwoJZXhjZXB0aW9uIHN0cnVjdHVyZSBieSB1c2Ugb2YgdGhlIG5ldyBhY2Nlc3NvcnMuCgoJKiBpbml0LmMgKF9fZ25hdF9pbml0aWFsaXplKTogQWRqdXN0IGNvbW1lbnRzIHRvIG1hdGNoIHRoZSBqdXN0CglyZXZlcnRlZCBtZWFuaW5nIG9mIHRoZSAtc3RhdGljIGxpbmstdGltZSBvcHRpb24uCgoJKiBhZGFpbnQuYyAoY29udmVydF9hZGRyZXNzZXMpOiBBcnJhbmdlIG5vdCB0byBkZWZpbmUgYSBzdHViIGZvcgoJbWlwcy1pcml4IGFueSBtb3JlLCBhcyB3ZSBub3cgd2FudCB0byByZWx5IG9uIGEgcmVhbCB2ZXJzaW9uIGZyb20gYQoJcmVjZW50IGxpYmFkZHIybGluZS4KCgkqIGEtZXhleHByLmFkYjogUHJvdmlkZSBuZXcgYWNjZXNzb3JzIHRvIGEgR05BVF9HQ0Mgb2NjdXJyZW5jZSwgc28gdGhhdAoJdGhlIHBlcnNvbmFsaXR5IHJvdXRpbmUgY2FuIHVzZSB0aGVtIGFuZCBub3QgaGF2ZSB0byByZWx5IG9uIGEgQwoJY291bnRlcnBhcnQgb2YgdGhlIHJlY29yZCBhbnltb3JlLiBUaGlzIHNpbXBsaWZpZXMgbWFpbnRlbmFuY2UgYW5kCglyZWxheGVzIHRoZSBjb25zdHJhaW50IG9mIGhhdmluZyBTdGFuZGFyZCdNYXhpbXVtX0FsaWdubWVudCBtYXRjaAoJQklHR0VTVF9BTElHTk1FTlQuCglVcGRhdGUgY29tbWVudHMsIGFuZCBhZGQgYSBzZWN0aW9uIG9uIHRoZSBjb21tb24gaGVhZGVyIGFsaWdubWVudCBpc3N1ZS4KCjIwMDQtMDYtMjUgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBhLW5nZWxmdS5hZGIgKFRhbmgpOiBVc2UgZnVsbCAyMCBkaWdpdCBwcmVjaXNpb24gZm9yIGNvbnN0YW50cyBpbgoJcG9seW5vbWlhbCBhcHByb3hpbWF0aW9uLiBGaXhlcyBpbmNvbnNpc3RlbmN5IHdpdGggQ29keS9XYWl0ZSBhbGdvcml0aG0uCgoyMDA0LTA2LTI1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGduYXRfcm0udGV4aTogRml4IHNlY3Rpb24gb24gY29tcG9uZW50IGNsYXVzZXMgdG8gaW5kaWNhdGUgdGhhdCB0aGUKCXJlc3RyaWN0aW9uIG9uIGJ5dGUgYm91bmRhcnkgcGxhY2VtZW50IHN0aWxsIGFwcGxpZXMgZm9yIGJpdCBwYWNrZWQKCWFycmF5cy4KCUFkZCBjb21tZW50IG9uIHN0YWNrIHVzYWdlIGZyb20gSW5pdGlhbGl6ZV9TY2FsYXJzCgoJKiBnbmF0X3Vnbi50ZXhpOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgLWduYXR5TG5ubgoKCSogc3R5bGVzdy5hZHMsIHN0eWxlc3cuYWRiOiBJbXBsZW1lbnQgbmV3IC1nbmF0eUxubm4gb3B0aW9uIGZvcgoJbGltaXRpbmcgbmVzdGluZyBsZXZlbC4KCgkqIHVzYWdlLmFkYjogQWRkIGxpbmUgZm9yIC1nbmF0eUxubm4gc3dpdGNoCgoJKiBnLWRlYnBvby5hZHMsIHh0cmVlcHJzLmFkYiwgc2lucHV0LmFkcywgc2VtX2NoMTMuYWRzLAoJc2VtX2NoMTMuYWRiLCBleHBfYWdnci5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc2VtX3ByYWcuYWRiIChQcm9jZXNzX0F0b21pY19TaGFyZWRfVm9sYXRpbGUpOiBTZXQgSXNfQXRvbWljIG9uIGJhc2UKCXR5cGUgYXMgd2VsbCBhcyBvbiB0aGUgc3VidHlwZS4gVGhpcyBjb3JyZWN0cyBhIHByb2JsZW0gaW4gZnJlZXplIGluCglzZXR0aW5nIGFsaWdubWVudHMgb2YgYXRvbWljIHR5cGVzLgoKCSogc2VtX2V2YWwuYWRzOiBNaW5vciBjb21tZW50IHR5cG8gZml4ZWQKCgkqIHBhci11dGlsLmFkYiAoUHVzaF9TY29wZV9TdGFjayk6IENoZWNrIGZvciB2aW9sYXRpb24gb2YgbWF4IG5lc3RpbmcKCWxldmVsLiAgTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogZm5hbWUuYWRiIChJc19QcmVkZWZpbmVkX0ZpbGVfTmFtZSk6IFJlcXVpcmUgYSBsZXR0ZXIgYWZ0ZXIgdGhlCgltaW51cyBzaWduLiBUaGlzIG1lYW5zIHRoYXQgZmlsZSBuYW1lcyBsaWtlIGEtLWIuYWRiIHdpbGwgbm90IGJlCgljb25zaWRlcmVkIHByZWRlZmluZWQuCgoJKiBmcmVlemUuYWRiOiBQcm9wYWdhdGUgbmV3IGZsYWcgTXVzdF9CZV9Pbl9CeXRlX0JvdW5kYXJ5IHRvIGNvbnRhaW5pbmcKCXJlY29yZCBUZXN0IG5ldyBmbGFnIGFuZCBnaXZlIGRpYWdub3N0aWMgZm9yIGJhZCBjb21wb25lbnQgY2xhdXNlLgoJKEZyZWV6ZV9FbnRpdHkpOiBTZXQgYWxpZ25tZW50IG9mIGFycmF5IGZyb20gY29tcG9uZW50IGFsaWdubWVudCBpbgoJY2FzZXMgd2hlcmUgdGhpcyBpcyBzYWZlIHRvIGRvLgoKCSogZXhwX3Bha2QuYWRiOiBTZXQgbmV3IGZsYWcgTXVzdF9CZV9Pbl9CeXRlX0JvdW5kYXJ5IGZvciBsYXJnZSBwYWNrZWQKCWFycmF5cy4KCgkqIGNzdGFuZC5hZGI6IChDcmVhdGVfU3RhbmRhcmQpOiBTZXQgYWxpZ25tZW50IG9mIFN0cmluZyB0byAxCgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYjogSW50cm9kdWNlIG5ldyBmbGFnIE11c3RfQmVfT25fQnl0ZV9Cb3VuZGFyeQoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9BcnJheV9FcXVhbGl0eSk6IEltcHJvdmUgZWZmaWNpZW5jeSBvZiBnZW5lcmF0ZWQKCWNvZGUgaW4gdGhlIGNvbW1vbiBjb25zdHJhaW5lZCBhcnJheSBjYXNlcy4KCgkqIGEtc3RvcmlvLmFkYjogQ2hhbmdlIGltcGxlbWVudGF0aW9uIHRvIGF2b2lkIHBvc3NpYmxlIGFsaWdubWVudAoJcHJvYmxlbXMgb24gbWFjaGluZXMgcmVxdWlyaW5nIHN0cmljdCBhbGlnbm1lbnQgKGRhdGEgc2hvdWxkIGJlIG1vdmVkCglhcyB0eXBlIEJ1ZmZlciwgbm90IHR5cGUgRWxtdCkuCgoJKiBjaGVja3MuYWRiIChBcHBseV9BcnJheV9TaXplX0NoZWNrKTogSW1wcm92ZSB0aGVzZSBjaGVja3MgYnkKCWtpbGxpbmcgdGhlIG92ZXJmbG93IGNoZWNrcyB3aGljaCB3ZSByZWFsbHkgZG8gbm90IG5lZWQgKDY0LWJpdHMgaXMKCWVub3VnaCkuCgoyMDA0LTA2LTI1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1ha2VncHIuYWRiIChJc19JbmNsdWRlZF9Jbl9HbG9iYWxfQXJjaGl2ZSk6IE5ldyBCb29sZWFuIGZ1bmN0aW9uCgkoQWRkX0FyY2hpdmVzLlJlY3Vyc2l2ZV9BZGRfQXJjaGl2ZXMpOiBDYWxsIEFkZF9BcmNoaXZlX1BhdGgKCWluY29uZGl0aW9uYWxseSBmb3IgdGhlIG1haW4gcHJvamVjdC4KCShSZWN1cnNpdmVfQWRkX0FyY2hpdmVzLkFkZF9BcmNoaXZlX1BhdGgpOiBOZXcgcHJvY2VkdXJlCgkoTGlua19FeGVjdXRhYmxlcy5DaGVja19UaW1lX1N0YW1wcyk6IE5ldyBwcm9jZWR1cmUKCShMaW5rX0V4ZWN1dGFibGVzLkxpbmtfRm9yZWlnbik6IE5ldyBwcm9jZWR1cmUKCUNoYW5nZXMgbWFkZSB0byByZWR1Y2UgbmVzdGluZyBsZXZlbCBvZiB0aGlzIHBhY2thZ2UKCShDaGVjayk6IE5ldyBwcm9jZWR1cmUKCShBZGRfU3dpdGNoZXMpOiBXaGVuIG5vdCBpbiBxdWlldCBvdXRwdXQsIGNoZWNrIHRoYXQgYSBzd2l0Y2ggaXMgbm90Cgl0aGUgY29uY2F0ZW5hdGlvbiBvZiBzZXZlcmFsIHZhbGlkIHN3aXRjaGVzLiBJZiBpdCBpcywgaXNzdWUgYSB3YXJuaW5nLgoJKEJ1aWxkX0dsb2JhbF9BcmNoaXZlKTogSWYgdGhlIGdsb2JhbCBhcmNoaXZlIGlzIHJlYnVpbHQsIGxpbmtpbmcgbmVlZAoJdG8gYmUgZG9uZS4KCShDb21waWxlX1NvdXJjZXMpOiBSZWJ1aWxkaW5nIGEgbGlicmFyeSBhcmNoaXZlIGRvZXMgbm90IGltcGx5CglyZWJ1aWxkaW5nIHRoZSBnbG9iYWwgYXJjaGl2ZS4KCShCdWlsZF9HbG9iYWxfQXJjaGl2ZSk6IE5ldyBwcm9jZWR1cmUKCShCdWlsZF9MaWJyYXJ5KTogTmV3IG5hbWUgZm9yIEJ1aWxkX0FyY2hpdmUsIG5vdyBvbmx5IGZvciBsaWJyYXJ5Cglwcm9qZWN0CgkoQ2hlY2tfQXJjaGl2ZV9CdWlsZGVyKTogTmV3IHByb2NlZHVyZQoJKENyZWF0ZV9HbG9iYWxfQXJjaGl2ZV9EZXBlbmRlbmN5X0ZpbGUpOiBOZXcgcHJvY2VkdXJlCgkoR3BybWFrZSk6IENhbGwgQnVpbGRfR2xvYmFsX0FyY2hpdmUgYmVmb3JlIGxpbmtpbmcKCSogbWFrZWdwci5hZGI6IFVzZSBPdGhlcl9Tb3VyY2VzX1ByZXNlbnQgaW5zdGVhZCBvZiBTb3VyY2VzX1ByZXNlbnQKCXRocm91Z2hvdXQuCgkoU2Nhbl9BcmcpOiBEaXNwbGF5IHRoZSBDb3B5cmlnaHQgbm90aWNlIHdoZW4gLXYgaXMgdXNlZAoKCSogZ25hdF91Z24udGV4aTogRG9jdW1lbnQgbmV3IHN3aXRjaCAtZmlsZXM9IChWTVMgcXVhbGlmaWVyIC9GSUxFUz0pCglmb3IgZ25hdGxzLgoKCSogdm1zX2RhdGEuYWRzOiBBZGQgcXVhbGlmaWVyIC9NQVhfTkVTVElORz1ubm4gKC1nbmF0eUxubm4pIGZvciBHTkFUCglDT01QSUxFLgoJQWRkIG5ldyBHTkFUIExJU1QgcXVhbGlmaWVyIC9GSUxFUz0KCUFkZGVkIHF1YWxpZmllciAvRElSRUNUT1JZPSB0byBHTkFUIE1FVFJJQwoJQWRkZWQgcXVhbGlmaWVyIC9GSUxFUz0gdG8gR05BVCBNRVRSSUMKCUFkZGVkIHF1YWxpZmllciAvRklMRVMgdG8gR05BVCBQUkVUVFkKCgkqIHN3aXRjaC5hZGIgKElzX0Zyb250X0VuZF9Td2l0Y2gpOiBSZWZpbmUgdGhlIHRlc3QgZm9yIC0tUlRTIG9yIC1mUlRTLAoJdG8gdGFrZSBpbnRvIGFjY291bnQgYm90aCB2ZXJzaW9ucyBvZiB0aGUgc3dpdGNoLgoKCSogc3dpdGNoLWMuYWRiIChTY2FuX0Zyb250X0VuZF9Td2l0Y2hlcyk6IE5ldyBzd2l0Y2ggLWduYXRlei4gU2hvdWxkCglhbHdheXMgYmUgdGhlIGxhc3Qgc3dpdGNoIHRvIHRoZSBnY2MgZHJpdmVyLiBEaXNhYmxlIHN3aXRjaCBzdG9yaW5nIHNvCgl0aGF0IHN3aXRjaGVzIGF1dG9tYXRpY2FsbHkgYWRkZWQgYnkgdGhlIGdjYyBkcml2ZXIgYXJlIG5vdCBwdXQgaW4gdGhlCglBTEkgZmlsZS4KCgkqIHByai5hZGIgKFByb2plY3RfRW1wdHkpOiBUYWtlIGludG8gYWNjb3VudCBjaGFuZ2VzIGluIGNvbXBvbmVudHMgb2YKCVByb2plY3RfRGF0YS4KCgkqIHByai5hZHMgKExhbmd1YWdlc19Qcm9jZXNzZWQpOiBOZXcgZW51bWFyYXRpb24gdmFsdWUgQWxsX0xhbmd1YWdlcy4KCgkqIHByai5hZHMgKFByb2plY3RfRGF0YSk6IFJlbW92ZSBjb21wb25lbnQgTGliX0VsYWJvcmF0aW9uOiBuZXZlcgoJdXNlZC4gU3BsaXQgQm9vbGVhbiBjb21wb25lbnQgQWRhX1NvdXJjZXNfUHJlc2VudCBpbiB0d28gQm9vbGVhbgoJY29tcG9uZW50cyBBZGFfU291cmNlc19QcmVzZW50IGFuZCBPdGhlcl9Tb3VyY2VzX1ByZXNlbnQuCglNaW5vciByZWZvcm1hdHRpbmcKCgkqIHByai1lbnYuYWRiIChGb3JfQWxsX1NvdXJjZV9EaXJzLkFkZCk6IFVzZSBBZGFfU291cmNlc19QcmVzZW50CglpbnN0ZWFkIG9mIFNvdXJjZXNfUHJlc2VudC4KCShTZXRfQWRhX1BhdGhzLkFkZC5SZWN1cnNpdmVfQWRkKTogRGl0dG8KCgkqIHByai1ubXNjLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgkoQ2hlY2tfQWRhX05hbWluZ19TY2hlbWUpOiBOZXcgbmFtZSBvZiBwcm9jZWR1cmUgQ2hlY2tfTmFtaW5nX1NjaGVtZQoJKENoZWNrX0FkYV9OYW1pbmdfU2NoZW1lX1ZhbGlkaXR5KTogTmV3IG5hbWUgb2YgcHJldmlvdXMgcHJvY2VkdXJlCglDaGVja19BZGFfTmFtaW5nX1NjaGVtZS4KCUNoYW5nZSBTb3VyY2VzX1ByZXNlbnQgdG8gQWRhX1NvdXJjZXNfUHJlc2VudCBvciBPdGhlcl9Tb3VyY2VzX1ByZXNlbnQKCXRocm91Z2hvdXQuCgoJKiBwcmotcGFydC5hZGIgKFBvc3RfUGFyc2VfQ29udGV4dF9DbGF1c2UpOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIKCUluX0xpbWl0ZWQuCglNYWtlIHN1cmUgdGhhdCBhbGwgY3ljbGVzIHdoZXJlIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSAibGltaXRlZCB3aXRoIgoJYXJlIGRldGVjdGVkLgoJKFBhcnNlX1NpbmdsZV9Qcm9qZWN0KTogTmV3IEJvb2xlYW4gcGFyYW1ldGVyIEluX0xpbWl0ZWQKCgkqIHByai1wcm9jLmFkYiAoUmVjdXJzaXZlX0NoZWNrKTogV2hlbiBQcm9jZXNzX0xhbmd1YWdlcyBpcwoJQWxsX0xhbmd1YWdlcywgY2FsbCBmaXJzdCBQcmouTm1zYy5BZGFfQ2hlY2ssIHRoZW4KCVByai5ObXNjLk90aGVyX0xhbmd1YWdlc19DaGVjay4KCgkqIHByai1wcm9jLmFkYiAoUHJvY2Vzcyk6IFVzZSBBZGFfU291cmNlc19QcmVzZW50IG9yCglPdGhlcl9Tb3VyY2VzX1ByZXNlbnQgKGluc3RlYWQgb2YgU291cmNlc19QcmVzZW50KSBkZXBlbmRpbmcgb24KCVByb2Nlc3NfTGFuZ3VhZ2VzLgoKCSogbGFuZy1zcGVjcy5oOiBLZWVwIC1nIGFuZCAtbSBzd2l0Y2hlcyBpbiB0aGUgc2FtZSBvcmRlciwgYW5kIGFzIHRoZQoJbGFzdCBzd2l0Y2hlcy4KCgkqIGxpYi5hZGIgKFN3aXRjaF9TdG9yaW5nX0VuYWJsZWQpOiBOZXcgZ2xvYmFsIEJvb2xlYW4gZmxhZwoJKERpc2FibGVfU3dpdGNoX1N0b3JpbmcpOiBOZXcgcHJvY2VkdXJlLiBTZXQgU3dpdGNoX1N0b3JpbmdfRW5hYmxlZCB0bwoJRmFsc2UuCgkoU3RvcmVfQ29tcGlsYXRpb25fU3dpdGNoKTogRG8gbm90aGluZyBpZiBTd2l0Y2hfU3RvcmluZ19FbmFibGVkIGlzCglGYWxzZS4KCgkqIGxpYi5hZHMgKERpc2FibGVfU3dpdGNoX1N0b3JpbmcpOiBOZXcgcHJvY2VkdXJlLgoKCSogbWFrZS5hZGI6IE1vZGlmaWNhdGlvbnMgdG8gcmVkdWNlIG5lc3RpbmcgbGV2ZWwgb2YgdGhpcyBwYWNrYWdlLgoJKENoZWNrX1N0YW5kYXJkX0xpYnJhcnkpOiBOZXcgcHJvY2VkdXJlCgkoR25hdG1ha2UuQ2hlY2tfTWFpbnMpOiBOZXcgcHJvY2VkdXJlCgkoR25hdG1ha2UuQ3JlYXRlX0JpbmRlcl9NYXBwaW5nX0ZpbGUpOiBOZXcgcHJvY2VkdXJlCgkoQ29tcGlsZV9Tb3VyY2VzLkNvbXBpbGUpOiBBZGQgc3dpdGNoIC1nbmF0ZXogYXMgdGhlIGxhc3Qgb3B0aW9uCgkoRGlzcGxheSk6IE5ldmVyIGRpc3BsYXkgLWduYXRlegoKCSogTWFrZWZpbGUuZ2VuZXJpYzoKCVdoZW4gdXNpbmcgJChNQUlOX09CSkVDVCksIGFsd2F5cyB1c2UgJChPQkpfRElSKS8kKE1BSU5fT0JKRUNUKQoKCSogZ25hdGNtZC5hZGIgKENoZWNrX1Byb2plY3QpOiBOZXcgZnVuY3Rpb24KCShQcm9jZXNzX0xpbmspOiBOZXcgcHJvY2VkdXJlIHRvIHJlZHVjZSBuZXN0aW5nIGRlcHRoCgkoQ2hlY2tfRmlsZXMpOiBOZXcgcHJvY2VkdXJlIHRvIHJlZHVjZSB0aGUgbmVzdGluZyBkZXB0aC4KCUZvciBHTkFUIE1FVFJJQywgaW5jbHVkZSB0aGUgaW5oZXJpdGVkIHNvdXJjZXMgaW4gZXh0ZW5kaW5nIHByb2plY3RzLgoJKEdOQVRDbWQpOiBXaGVuIEdOQVQgTFMgaXMgaW52b2tlZCB3aXRoIGEgcHJvamVjdCBmaWxlIGFuZCBubyBmaWxlcywKCWFkZCB0aGUgbGlzdCBvZiBmaWxlcyBmcm9tIHRoZSBzb3VyY2VzIG9mIHRoZSBwcm9qZWN0IGZpbGUuIElmIHRoaXMgbGlzdAoJaXMgdG9vIGxvbmcsIHB1dCBpdCBpbiBhIHRlbXAgdGV4dCBmaWxlcyBhbmQgdXNlIHN3aXRjaCAtZmlsZXM9CgkoRGVsZXRlX1RlbXBfQ29uZmlnX0ZpbGVzKTogRGVsZXRlIHRoZSB0ZW1wIHRleHQgZmlsZSB0aGF0IGNvbnRhaW5zCglhIGxpc3Qgb2Ygc291cmNlIGZvciBnbmF0cHAgb3IgZ25hdG1ldHJpYywgaWYgb25lIGhhcyBiZWVuIGNyZWF0ZWQuCgkoR05BVENtZCk6IEZvciBHTkFUIE1FVFJJQyBhbmQgR05BVCBQUkVUVFksIGlmIHRoZSBudW1iZXIgb2Ygc291cmNlcwoJaW4gdGhlIHByb2plY3QgZmlsZSBpcyB0b28gbGFyZ2UsIGNyZWF0ZSBhIHRlbXBvcmFyeSB0ZXh0IGZpbGUgdGhhdAoJbGlzdCB0aGVtIGFuZCBwYXNzIGl0IHRvIHRoZSB0b29sIHdpdGggIi1maWxlcz08dGVtcCB0ZXh0IGZpbGU+Ii4KCShHTkFUQ21kKTogRm9yIEdOQVQgTUVUUklDIGFkZCAiLWQ9PGFiamVjdCBkaXI+IiBhcyB0aGUgZmlyc3Qgc3dpdGNoCgoJKiBnbmF0bGluay5hZGIgKEduYXRsaW5rKTogRG8gbm90IGNvbXBpbGUgd2l0aCAtLVJUUz0gd2hlbiB0aGUKCWdlbmVyYXRlZCBmaWxlIGlzIGluIG5vdCBpbiBBZGEuCgoJKiBnbmF0bHMuYWRiOiBSZW1vdmUgYWxsIHBhcmFtZXRlcnMgQW5kX1NhdmUgdGhhdCBhcmUgbm8gbG9uZ2VyIHVzZWQuCgkoU2Nhbl9Mc19BcmcpOiBBZGQgcHJvY2Vzc2luZyBmb3IgLWZpbGVzPQoJKFVzYWdlKTogQWRkIGxpbmUgZm9yIC1maWxlcz0KCgkqIGctb3NfbGliLmFkYiAoT25fV2luZG93cyk6IE5ldyBnbG9iYWwgY29uc3RhbnQgQm9vbGVhbiBmbGFnCgkoTm9ybWFsaXplX1BhdGhuYW1lKTogV2hlbiBvbiBXaW5kb3dzIGFuZCB0aGUgcGF0aCBzdGFydHMgd2l0aCBhCglkaXJlY3Rvcnkgc2VwYXJhdG9yLCBtYWtlIHN1cmUgdGhhdCB0aGUgcmVzdWx0aW5nIHBhdGggd2lsbCBzdGFydCB3aXRoCglhIGRyaXZlIGxldHRlci4KCgkqIGNsZWFuLmFkYiAoQ2xlYW5fQXJjaGl2ZSk6IE5ldyBwcm9jZWR1cmUKCShDbGVhbl9Qcm9qZWN0KTogV2hlbiB0aGVyZSBpcyBub24tQWRhIGNvZGUsIGRlbGV0ZSB0aGUgZ2xvYmFsIGFyY2hpdmUsCgl0aGUgYXJjaGl2ZSBkZXBlbmRlbmN5IGZpbGVzLCB0aGUgb2JqZWN0IGZpbGVzIGFuZCB0aGVpciBkZXBlbmRlbmN5CglmaWxlcywgaWYgdGhleSBleGlzdC4KCShHbmF0Y2xlYW4pOiBDYWxsIFByai5QYXJzLlBhcnNlIGZvciBBbGxfTGFuZ3VhZ2VzLCBub3QgZm9yIEFkYSBvbmx5LgoKMjAwNC0wNi0yNSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc2luZm8uYWRzOiBGaXggdHlwbyBpbiBjb21tZW50LgoKCSogc2VtX2Rpc3QuYWRiIChQcm9jZXNzX1JlbW90ZV9BU1RfQXR0cmlidXRlKTogU2ltcGxpZnkgY29kZSB0aGF0IHVzZXMKCXRoZSBUU1MgZm9yIHJlbW90ZSBhY2Nlc3MtdG8tc3VicHJvZ3JhbSB0eXBlcywgc2luY2UgdGhlc2UgVFNTIGFyZQoJYWx3YXlzIHByZXNlbnQgb25jZSB0aGUgdHlwZSBoYXMgYmVlbiBhbmFseXplZC4KCShSQVNfRV9EZXJlZmVyZW5jZSk6IFNhbWUuCgoJKiBzZW1fYXR0ci5hZGIgKEFuYWx5emVfQXR0cmlidXRlKTogV2hlbiBhbmFseXNpcyBvZiBhbiBhdHRyaWJ1dGUKCXJlZmVyZW5jZSByYWlzZXMgQmFkX0F0dHJpYnV0ZSwgbWFyayB0aGUgcmVmZXJlbmNlIGFzIGFuYWx5emVkIHNvIHRoZQoJbm9kZSAoYW5kIGFueSBjaGlsZHJlbiByZXN1bHRpbmcgZnJvbSByZXdyaXRlcyB0aGF0IGNvdWxkIGhhdmUgb2NjdXJyZWQKCWR1cmluZyB0aGUgYW5hbHlzaXMgdGhhdCB1bHRpbWF0ZWx5IGZhaWxlZCkgaXMgbm90IGFuYWx5emVkIGFnYWluLgoKCSogZXhwX2NoNy5hZHMgKEZpbmRfRmluYWxfTGlzdCk6IEZpeCBtaXNhbGlnbmVkIGNvbW1lbnQuCgoJKiBleHBfZGlzdC5hZGI6IE1pbm9yIGNvbW1lbnQgZml4LgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX0FsbG9jYXRvcik6IEZvciBhbiBhbGxvY2F0b3Igd2hvc2UgZXhwZWN0ZWQKCXR5cGUgaXMgYW4gYW5vbnltb3VzIGFjY2VzcyB0eXBlLCBubyB1bmNoZWNrZWQgZGVhbGxvY2F0aW9uIG9mIHRoZQoJYWxsb2NhdGVkIG9iamVjdCBjYW4gb2NjdXIuIElmIHRoZSBvYmplY3QgaXMgY29udHJvbGxlZCwgYXR0YWNoIGl0IHdpdGgKCWEgY291bnQgb2YgMS4gVGhpcyBhbGxvd3MgYXR0YWNobWVudCB0byB0aGUgR2xvYmFsX0ZpbmFsX0xpc3QsIGlmCglubyBvdGhlciByZWxldmFudCBsaXN0IGlzIGF2YWlsYWJsZS4KCShHZXRfQWxsb2NhdG9yX0ZpbmFsX0xpc3QpOiBGb3IgYW4gYW5vbnltb3VzIGFjY2VzcyB0eXBlIHRoYXQgaXMKCXRoZSB0eXBlIG9mIGEgZGlzY3JpbWluYW50IG9yIHJlY29yZCBjb21wb25lbnQsIHRoZSBjb3JyZXNwb25kaW5nCglmaW5hbGlzYXRpb24gbGlzdCBpcyB0aGUgb25lIG9mIHRoZSBzY29wZSBvZiB0aGUgdHlwZS4KCjIwMDQtMDYtMjUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiIChSZXBsYWNlX1R5cGUpOiBXaGVuIGNvbXB1dGluZyB0aGUgc2lnbmF0dXJlIG9mIGFuCglpbmhlcml0ZWQgc3VicHJvZ3JhbSwgdXNlIHRoZSBmaXJzdCBzdWJ0eXBlIGlmIHRoZSBkZXJpdmVkIHR5cGUKCWRlY2xhcmF0aW9uIGhhcyBubyBjb25zdHJhaW50LgoKCSogZXhwX2NoNi5hZGIgKEFkZF9DYWxsX0J5X0NvcHlfQ29kZSk6IENoZWNrIHRoYXQgZm9ybWFsIGlzIGFuIGFycmF5CgliZWZvcmUgYXBwbHlpbmcgcHJldmlvdXMgb3B0aW1pemF0aW9uLiBNaW5vciBjb2RlIGNsZWFudXAuCgoJKiBleHBfdXRpbC5hZGIgKElzX1Bvc3NpYmx5X1VuYWxpZ25lZF9TbGljZSk6IElmIHRoZSBjb21wb25lbnQgaXMKCXBsYWNlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIGFuIHVucGFja2VkIHJlY29yZCB3aXRob3V0IGV4cGxpY2l0CglhbGlnbm1lbnQsIGEgc2xpY2Ugb2YgaXQgd2lsbCBiZSBhbGlnbmVkIGFuZCBkb2VzIG5vdCBuZWVkIGEgY29weSB3aGVuCgl1c2VkIGFzIGFuIGFjdHVhbC4KCjIwMDQtMDYtMjUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTU1OTEKCVBSIGFkYS8xNTU5MgoJKiBzZW1fY2g4LmFkYiAoQXR0cmlidXRlX1JlbmFtaW5nKTogUmVqZWN0IHJlbmFtaW5nIGlmIHRoZSBhdHRyaWJ1dGUKCXJlZmVyZW5jZSBpcyB3cml0dGVuIHdpdGggZXhwcmVzc2lvbnMgbWltaWNraW5nIHBhcmFtZXRlcnMuCgoyMDA0LTA2LTI1ICBIcmlzdGlhbiBLaXJ0Y2hldiAgPGtpcnRjaGV2QGduYXQuY29tPgoKCVBSIGFkYS8xNTU4OQoJKiBzZW1fY2gzLmFkYiAoQnVpbGRfRGVyaXZlZF9SZWNvcmRfVHlwZSk6IEFkZCBhZGRpdGlvbmFsIGNoZWNrIHRvCglTVEVQIDJhLiBUaGUgY29uc3RyYWludHMgb2YgYSBmdWxsIHR5cGUgZGVjbGFyYXRpb24gb2YgYSBkZXJpdmVkIHJlY29yZAoJdHlwZSBhcmUgY2hlY2tlZCBmb3IgY29uZm9ybWFuY2Ugd2l0aCB0aG9zZSBkZWNsYXJlZCBpbiB0aGUKCWNvcnJlc3BvbmRpbmcgcHJpdmF0ZSBleHRlbnNpb24gZGVjbGFyYXRpb24uIFRoZSBtZXNzYWdlCgkibm90IGNvbmZvcm1hbnQgd2l0aCBwcmV2aW91cyBkZWNsYXJhdGlvbiIgaXMgZW1pdHRlZCBpZiBhbiBlcnJvciBpcwoJZGV0ZWN0ZWQuCgoyMDA0LTA2LTI1ICBWYXNpbGl5IEZvZmFub3YgIDxmb2Zhbm92QGFjdC1ldXJvcGUuZnI+CgoJKiBnLXRyYWNlYi5hZHM6IERvY3VtZW50IHRoZSBuZWVkIGZvciAtRSBiaW5kZXIgc3dpdGNoIGluIHRoZSBzcGVjLgoKCSogZy10cmFzeW0uYWRzOiBEb2N1bWVudCB0aGUgbmVlZCBmb3IgLUUgYmluZGVyIHN3aXRjaCBpbiB0aGUgc3BlYy4KCjIwMDQtMDYtMjUgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV9wcmFnLmFkYjogQWRkIGhhbmRsaW5nIG9mIHByYWdtYSBEZXRlY3RfQmxvY2tpbmcuCgoJKiBzbmFtZXMuaCwgc25hbWVzLmFkcywgc25hbWVzLmFkYjogQWRkIGVudHJ5IGZvciBwcmFnbWEKCURldGVjdF9CbG9ja2luZy4KCgkqIHMtcmlkZW50LmFkczogQ2hhbmdlIHJlZmVyZW5jZSB0byBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nLgoKCSogdGFyZ3Bhcm0uYWRzLCB0YXJncGFybS5hZGI6IEFsbG93IHByYWdtYSBEZXRlY3RfQmxvY2tpbmcgaW4KCXN5c3RlbS5hZHMuCgoJKiBvcHQuYWRzIChEZXRlY3RfQmxvY2tpbmcpOiBOZXcgQm9vbGVhbiB2YXJpYWJsZSAoZGVmYXVsdGVkIHRvIEZhbHNlKQoJdG8gaW5kaWNhdGUgd2hldGhlciBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nIGlzIGFjdGl2ZS4KCgkqIHBhci1wcmFnLmFkYjogQWRkIGVudHJ5IGZvciBwcmFnbWEgRGV0ZWN0X0Jsb2NraW5nLgoKCSogcnRzZmluZC5hZGIgKFJUVV9Mb2FkZWQpOiBGaXggdGhlIHRlbXBvcmFyeSBrbHVkZ2UgdG8gZ2V0IHBhc3QgYnVnCglvZiBub3QgaGFuZGxpbmcgV0lUSC4KCU5vdGUgdGhhdCB0aGlzIHJlcGxhY2VzIHRoZSBwcmV2aW91cyB1cGRhdGUgd2hpY2ggd2FzIGluY29ycmVjdC4KCjIwMDQtMDYtMjUgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHNlbV9jaDEwLmFkYiAoUmVfSW5zdGFsbF9Vc2VfQ2xhdXNlcyk6IEZvcmNlIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlCgl1c2UtY2xhdXNlcyB0byBoYXZlIGEgY2xlYW4gZW52aXJvbm1lbnQuCgoJKiBzZW1fY2g4LmFkYiAoSW5zdGFsbF9Vc2VfQ2xhdXNlcyk6IEFkZGl0aW9uIG9mIGEgbmV3IGZvcm1hbCB0byBmb3JjZQoJdGhlIGluc3RhbGxhdGlvbiBvZiB0aGUgdXNlLWNsYXVzZXMgdG8gc3RhYmxpc2ggYSBjbGVhbiBlbnZpcm9ubWVudCBpbgoJY2FzZSBvZiBjb21waWxhdGlvbiBvZiBhIHNlcGFyYXRlIHVuaXQ7IG90aGVyd2lzZSB0aGUgY2FsbCB0bwoJdXNlX29uZV9wYWNrYWdlIGlzIHByb3RlY3RlZCBieSB0aGUgYmFycmllciBBcHBsaWNhYmxlX1VzZS4KCgkqIHNlbV9jaDguYWRzIChJbnN0YWxsX1VzZV9DbGF1c2VzKTogQWRkaXRpb24gb2YgYSBuZXcgZm9ybWFsIHRvIGZvcmNlCgl0aGUgaW5zdGFsbGF0aW9uIG9mIHRoZSB1c2UtY2xhdXNlcyB0byBzdGFibGlzaCBhIGNsZWFuIGVudmlyb25tZW50IGluCgljYXNlIG9mIGNvbXBpbGF0aW9uIG9mIGEgc2VwYXJhdGUgdW5pdC4KCShFbmRfVXNlX0NsYXVzZXMpOiBNaW5vciBjb21tZW50IGNsZWFudXAuCgoyMDA0LTA2LTI1ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdF91Z24udGV4aTogQWRkIGRlc2NyaXB0aW9uIG9mIHRoZSBnbmF0cHAgJ2ZpbGVzJyBzd2l0Y2gKCjIwMDQtMDYtMjMgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmFucy5jIChnbmF0X2dpbXBsaWZ5X3N0bXQpOiBVcGRhdGUgZ2ltcGxpZnlfdHlwZV9zaXplcyBjYWxsLgoKMjAwNC0wNi0yMCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAoZWxhYm9yYXRlX2V4cHJlc3Npb24sIGVsYWJvcmF0ZV9leHByZXNzaW9uXzEpOiBBcmd1bWVudHMKCW5vdyBib29sIGluc3RlYWQgb2YgaW50LgoJKGduYXRfdG9fZ251X2VudGl0eSwgZWxhYm9yYXRlX2V4cHJlc3Npb25fMSk6IE5ldyBhcmcgdG8gQ09NUE9ORU5UX1JFRi4KCSogdHJhbnMuYyAoZ251X3N3aXRjaF9sYWJlbF9zdGFjayk6IE5ldyBmdW5jdGlvbi4KCShnbmF0X3RvX2dudSwgTl9PYmplY3RfUmVuYW1pbmdfRGVjbGFyYXRpb24pOiBSZXN1bHQgaXMgd2hhdCB0aGUKCWVsYWJvcmF0aW9uIG9mIHJlbmFtZWQgZW50aXR5IHJldHVybnMuCgkoZ25hdF90b19nbnUsIGNhc2UgTl9DYXNlX1N0YXRlbWVudCk6IEFkZCBicmFuY2hlcyB0byBlbmQgbGFiZWwuCgkoYWRkX2RlY2xfc3RtdCk6IERvbid0IGFkZCBUWVBFX0RFQ0wgZm9yIFVOQ09OU1RSQUlORURfQVJSQVlfVFlQRS4KCShnbmF0X2dpbXBsaWZ5X3N0bXQpOiBVc2UgYWxsb2Nfc3RtdF9saXN0LCBub3QgYnVpbGRfZW1wdHlfc3RtdC4KCShnbmF0X2dpbXBsaWZ5X3N0bXQsIGNhc2UgREVDTF9TVE1UKTogZ2ltcGxpZnkgREVDTF9TSVpFIGFuZAoJREVDTF9TSVpFX1VOSVQgYW5kIHNpbXBsaWZ5IHZhcmlhYmxlLXNpemVkIGNhc2UuCgkoZ25hdF9naW1wbGlmeV90eXBlX3NpemVzLCBnbmF0X2dpbXBsaWZ5X29uZV9zaXplcG9zKTogRGVsZXRlZC4KCUNhbGxlcnMgY2hhbmdlcyB0byBjYWxsIGdpbXBsaWZ5X3R5cGVfc2l6ZXMgYW5kIGdpbXBsaWZ5X29uZV9zaXplcG9zLgoJKGduYXRfc3RhYmlsaXplX3JlZmVyZW5jZSk6IEFkZCBhcmcgdG8gQ09NUE9ORU5UX1JFRi4KCShidWlsZF91bml0X2VsYWIpOiBEaXNhYmxlIGZvciBub3cuCgkqIHV0aWxzLmMgKG1hcmtfdmlzaXRlZCk6IE5ldyBmdW5jdGlvbi4KCShwdXNoZGVjbCk6IFdhbGsgdHJlZSB0byBjYWxsIGl0IGZvciBnbG9iYWwgZGVjbC4KCSh1cGRhdGVfcG9pbnRlcl90byk6IFVwZGF0ZSBhbGwgdmFyaWFudHMgb2YgcG9pbnRlciBhbmQgcmVmIHR5cGVzLgoJQWRkIGFyZyB0byBDT01QT05FTlRfUkVGLgoJKGNvbnZlcnQpOiBMaWtld2lzZS4KCU1vdmUgY2hlY2sgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiB2YXJpYW50cyBsb3dlciBkb3duLgoJKiB1dGlsczIuYyAoYnVpbGRfc2ltcGxlX2NvbXBvbmVudF9yZWYpOiBBZGQgYXJnIHRvIENPTVBPTkVOVF9SRUYuCgkoYnVpbGRfYWxsb2NhdG9yKTogRG9uJ3QgZm9yY2UgdHlwZSBvZiBNT0RJRllfRVhQUi4KCShnbmF0X21hcmtfYWRkcmVzc2FibGUsIGNhc2UgVkFSX0RFQ0wpOiBVbmNvbmRpdGlvbmFsbHkgY2FsbAoJcHV0X3Zhcl9pbnRvX3N0YWNrLgoKMjAwNC0wNi0xNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFkYS10cmVlLmRlZiAoTE9PUF9TVE1ULCBFWElUX1NUTVQpOiBVcGRhdGUgZG9jdW1lbnRhdGlvbi4KCSogYWRhLXRyZWUuaCAoRVhJVF9TVE1UX0xBQkVMKTogUmVuYW1lZCBmcm9tIEVYSVRfU1RNVF9MT09QLgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSk6IEFsc28gc2V0IGZvcmNlX2dsb2JhbCBmb3IgaW1wb3J0ZWQKCXN1YnByb2dyYW1zLgoJKiB0cmFucy5jIChnbnVfbG9vcF9sYWJlbF9zdGFjayk6IFJlbmFtZWQgZnJvbSBnbnVfbG9vcF9zdG10X3N0YWNrOwoJYWxsIGNhbGxlcnMgY2hhbmdlZC4KCShnbmF0X3RvX2dudSwgY2FzZSBOX0xvb3BfU3RhdGVtZW50LCBjYXNlIE5fRXhpdF9TdGF0ZW1lbnQpOiBDaGFuZ2UKCXRoZSB3YXkgdGhhdCBFWElUX1NUTVQgZmluZHMgdGhlIGxvb3AgbGFiZWwuCgkoZ25hdF9naW1wbGlmeV9zdG10LCBjYXNlIExPT1BfU1RNVCwgRVhJVF9TVE1UKTogTGlrZXdpc2UuCgkoZ25hdF9naW1wbGlmeV9zdG10LCBjYXNlIERFQ0xfU1RNVCk6IEhhbmRsZSB2YXJpYWJsZS1zaXplZCBkZWNscyBoZXJlLgoJKGFkZF9zdG10KTogVXNlIGFubm90YXRlX3dpdGhfbG9jdXMgaW5zdGVkIG9mIHNldHRpbmcgZGlyZWN0bHkuCgkocG9zX3RvX2NvbnN0cnVjdCk6IFNldCBUUkVFX1BVUlBPU0Ugb2YgZWFjaCBlbnRyeSB0byBpbmRleC4KCShnbmF0X3N0YWJpbGl6ZV9yZWZlcmVuY2UsIGNhc2UgQVJSQVlfUkFOR0VfUkVGKTogTWVyZ2Ugd2l0aCBBUlJBWV9SRUYuCgkqIHV0aWxzLmMgKGduYXRfaW5zdGFsbF9idWlsdGlucyk6IEluc3RhbGwgX19idWlsdGluX21lbWNtcC4KCShidWlsZF92bXNfZGVzY3JpcHRvcik6IEFkZCBleHRyYSBhcmdzIHRvIEFSUkFZX1JFRi4KCShjb252ZXJ0KTogVXNlIFZJRVdfQ09OVkVSVF9FWFBSIGJldHdlZW4gYWdncmVnYXRlIHR5cGVzLgoJKiB1dGlsczIuYyAoZ25hdF90cnV0aHZhbHVlX2NvbnZlcnNpb24sIGNhc2UgSU5URUdFUl9DU1QsIFJFQUxfQ1NUKToKCU5ldyBjYXNlcy4KCShidWlsZF9iaW5hcnlfb3ApOiBEb24ndCBtYWtlIGV4cGxpY2l0IENPTlZFUlRfRVhQUi4KCUFkZCBleHRyYSByZ3MgdG8gQVJSQVlfUkVGLgoKMjAwNC0wNi0xNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogZ25hdF91Z24udGV4aTogRG9jdW1lbnQgcmVsb2NhdGFibGUgdnMuIGR5bmFtaWMgTGlicmFyeV9LaW5kIG9uCglXaW5kb3dzLiAgRml4IG1pbm9yIHR5cG8uCgoJKiBtbGliLXRndC1taW5ndy5hZGI6IE5ldyBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUgR0NDIC1zaGFyZWQgb3B0aW9uCgl3aGljaCBpcyBub3cgc3VwcG9ydGVkIG9uIFdpbmRvd3MuIFdpdGggdGhpcyBpbXBsZW1lbnRhdGlvbiB1c2luZyB0aGUKCUxpYnJhcnkgUHJvamVjdCBmZWF0dXJlIGlzIG5vIGRpZmZlcmVudCBvbiBXaW5kb3dzIHRoYW4gb24gVU5JWC4KCjIwMDQtMDYtMTQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWFrZWdwci5hZGIgKENvbXBpbGVfU291cmNlcyk6IE5vdGhpbmcgdG8gZG8gd2hlbiB0aGVyZSBhcmUgbm8KCW5vbi1BZGEgc291cmNlcy4KCgkqIG1saWItdGd0LXZ4d29ya3MuYWRiIChMaWJyYXJ5X0V4aXN0c19Gb3IpOiBSZW1vdmUgaW5jb3JyZWN0IGNvbW1lbnQKCgkqIHByai1wYXJ0LmFkYiAoUGFyc2VfU2luZ2xlX1Byb2plY3QpOiBXaGVuIGEgZHVwbGljYXRlIHByb2plY3QgbmFtZSBpcwoJZm91bmQsIHNob3cgdGhlIHByb2plY3QgbmFtZSBhbmQgdGhlIHBhdGggb2YgdGhlIHByZXZpb3VzbHkgcGFyc2VkCglwcm9qZWN0IGZpbGUuCgoyMDA0LTA2LTE0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYiAoQWRkX0NhbGxfQnlfQ29weV9Db2RlKTogRm9yIGFuIG91dC1wYXJhbWV0ZXIgdGhhdCBpcyBhbgoJYXJyYXksIGF2b2lkIGNvcHlpbmcgdGhlIGFjdHVhbCBiZWZvcmUgdGhlIGNhbGwuCgoyMDA0LTA2LTE0ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBnLWRlYnBvby5hZGI6IFJlbW92ZSBhbGlnbm1lbnQgYXNzdW1wdGlvbnMgZnJvbSBHTkFULkRlYnVnX1Bvb2xzLgoJSW5zdGVhZCwgYWxsb2NhdGUgbWVtb3J5IG9uIHdvcnN0LWNhc2UgYWxpZ25tZW50IGFzc3VtcHRpb25zLCBhbmQgdGhlbgoJcmV0dXJuIGFuIGFsaWduZWQgYWRkcmVzcyB3aXRoaW4gdGhlIGFsbG9jYXRlZCB6b25lLgoKMjAwNC0wNi0xNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBiaW5kZ2VuLmFkYiAoR2VuX0FkYWluaXRfQWRhKTogRG8gbm90IGdlbmVyYXRlIGV4dGVybmFsIHJlZmVyZW5jZXMgdG8KCWVsYWIgZW50aXRpZXMgaW4gcHJlZGVmaW5lZCB1bml0cyBpbiBOb19SdW5fVGltZV9Nb2RlLgoJKEdlbl9BZGFpbml0X0MpOiBTYW1lIGZpeAoJKEdlbl9FbGFiX0NhbGxzX0FkYSk6IERvIG5vdCBnZW5lcmF0ZSBjYWxscyB0byBlbGFib3JhdGUgcHJlZGVmaW5lZAoJdW5pdHMgaW4gTm9fUnVuX1RpbWVfTW9kZQoJKEdlbl9FbGFiX0NhbGxzX0MpOiBTYW1lIGZpeAoKCSogc3ltYm9scy12bXMtYWxwaGEuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGctZGVicG9vLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBsaWIuYWRiIChJbl9TYW1lX0V4dGVuZGVkX1VuaXQpOiBWZXJzaW9uIHdvcmtpbmcgb24gbm9kZSBpZCdzCgoJKiBsaWIuYWRzIChJbl9TYW1lX0V4dGVuZGVkX1VuaXQpOiBWZXJzaW9uIHdvcmtpbmcgb24gbm9kZSBpZCdzCgoJKiBsaWIteHJlZi5hZGI6IE1pbm9yIGNsZWFudXAsIHVzZSBuZXcgdmVyc2lvbiBvZiBJbl9TYW1lX0V4dGVuZGVkX1VuaXQKCXdvcmtpbmcgb24gbm9kZXMuCgoJKiBtYWtlLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBwYXItY2gxMi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcGFyLXByYWcuYWRiOiBBZGQgZHVtbXkgZW50cnkgZm9yIHByYWdtYSBQcm9maWxlX1dhcm5pbmdzCgoJKiBwcmotc3RydC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcmVzdHJpY3QuYWRzLCByZXN0cmljdC5hZGI6IFJlZG8gaGFuZGxpbmcgb2YgcHJvZmlsZSByZXN0cmljdGlvbnMgdG8KCWJlIG1vcmUgZ2VuZXJhbC4KCgkqIHNlbV9hdHRyLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzZW1fY2g3LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzZW1fZWxhYi5hZGIgKENoZWNrX0FfQ2FsbCk6IERlYWwgd2l0aCBwcm9ibGVtIG9mIGNhbGxpbmcgaW5pdCBwcm9jCglmb3IgdHlwZSBpbiB0aGUgc2FtZSB1bml0IGFzIHRoZSBvYmplY3QgZGVjbGFyYXRpb24uCgoJKiBzZW1fcHJhZy5hZGIgKENoZWNrX0FyZ19Jc19FeHRlcm5hbF9OYW1lKTogTmV3IHByb2NlZHVyZSwgYWxsb3dzCglzdGF0aWMgc3RyaW5nIGV4cHJlc3Npb25zIGFuZCBub3QganVzdCBzdHJpbmcgbGl0ZXJhbHMuCglNaW5vciByZWZvcm1hdHRpbmcKCShTZXRfV2FybmluZyk6IFJlc2V0IHJlc3RyaWN0aW9uIHdhcm5pbmcgZmxhZyBmb3IgcmVzdHJpY3Rpb24gcHJhZ21hCglJbXBsZW1lbnQgcHJhZ21hIFByb2ZpbGVfV2FybmluZ3MKCUltcGxlbWVudCBwcmFnbWEgUHJvZmlsZSAoUmVzdHJpY3RlZCkKCUdpdmUgb2JvbGVzY2VudCBtZXNzYWdlcyBmb3Igb2xkIHJlc3RyaWN0aW9ucyBhbmQgcHJhZ21hcwoKCSogc25hbWVzLmgsIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IEFkZCBuZXcgZW50cnkgZm9yIHByYWdtYQoJUHJvZmlsZV9XYXJuaW5ncy4KCgkqIHMtcmlkZW50LmFkczogQWRkIGRlY2xhcmF0aW9ucyBmb3IgcmVzdHJpY3Rpb25zIHJlcXVpcmVkIGJ5IHByb2ZpbGUKCVJlc3RyaWN0ZWQgYW5kIHByb2ZpbGUgUmF2ZW5zY2FyLgoKCSogdGFyZ3Bhcm0uYWRzLCB0YXJncGFybS5hZGI6IEFsbG93IHByYWdtYSBQcm9maWxlIGluIHN5c3RlbS5hZHMKCgkqIGduYXRfdWduLnRleGk6IENvcnJlY3Qgc29tZSBtaXNzaW5nIGVudHJpZXMgaW4gdGhlIGxpc3Qgb2YgR05BVAoJY29uZmlndXJhdGlvbiBwcmFnbWFzLgoKMjAwNC0wNi0xMSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtbGliLXRndC12bXMtYWxwaGEuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBJc3N1ZSBzd2l0Y2ggLVIgdG8KCWduYXRzeW0sIHdoZW4gc3ltYm9sIHBvbGljeSBpcyBSZXN0cmljdGVkLgoKCSogbWxpYi10Z3Qtdm1zLWlhNjQuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBJc3N1ZSBzd2l0Y2ggLVIgdG8KCWduYXRzeW0sIHdoZW4gc3ltYm9sIHBvbGljeSBpcyBSZXN0cmljdGVkLgoKCSogc3ltYm9scy12bXMtYWxwaGEuYWRiIChJbml0aWFsaXplKTogV2hlbiBzeW1ib2wgcG9saWN5IGlzIFJlc3RyaWN0ZWQsCglyZWFkIHRoZSBzeW1ib2wgZmlsZS4KCShGaW5hbGl6ZSk6IEZhaWwgaW4gc3ltYm9sIHBvbGljeSBSZXN0cmljdGVkIGlmIGEgc3ltYm9sIGluIHRoZSBvcmlnaW5hbAoJc3ltYm9sIGZpbGUgaXMgbm90IGluIHRoZSBvYmplY3QgZmlsZXMuIERvIG5vdCBjcmVhdGUgYSBuZXcgc3ltYm9sIGZpbGUKCXdoZW4gc3ltYm9sIHBvbGljeSBpcyBSZXN0cmljdGVkLgoKCSogZ25hdGJpbmQuYWRiIChHbmF0YmluZCk6IEluaXRpYWxpemUgU25hbWVzLCBiZWNhdXNlIFNuYW1lcyBpcyB1c2VkCglpbiBTY25nLgoKCSogZ25hdHN5bS5hZGIgKFBhcnNlX1ZtZF9MaW5lKTogUHJvY2VzcyBuZXcgc3dpdGNoIC1SIGZvciBzeW1ib2wgcG9saWN5CglSZXN0cmljdGVkLgoJKFVzYWdlKTogTGluZSBmb3IgbmV3IHN3aXRjaCAtUgoKCSogbWFrZS5hZGIgKEluaXRpYWxpemUpOiBXaGVuIHRoZSBwbGF0Zm9ybSBpcyBub3QgVk1TLCBhZGQgdGhlCglkaXJlY3Rvcnkgd2hlcmUgZ25hdG1ha2UgaXMgaW52b2tlZCBpbiB0aGUgZnJvbnQgb2YgdGhlIHBhdGgsIGlmCglnbmF0bWFrZSBpcyBpbnZva2VkIHdpdGggZGlyZWN0b3J5IGluZm9ybWF0aW9uLiAgQ2hhbmdlIHRoZSBTY2FuX0FyZ3MKCXdoaWxlIGxvb3AgdG8gYSBmb3IgbG9vcC4KCShSZWN1cnNpdmVfQ29tcHV0ZV9EZXB0aCk6IFJlbW92ZSBwYXJhbWV0ZXIgVmlzaXRlZC4gSW1wcm92ZSBlZmZpY2llbmN5OgoJaWYgRGVwdGggaXMgZXF1YWwgb3IgZ3JlYXRlciB0aGFuIHRoZSBwcm9wb3NlZCBkZXB0aCwgdGhlcmUgaXMgbm90aGluZwoJdG8gZG8uCgkoSW5pdGlhbGl6ZSk6IENhbGwgUmVjdXJzaXZlX0NvbXB1dGVfRGVwdGggd2l0aCBpbml0aWFsIERlcHRoIGVxdWFsIHRvIDEKCWluc3RlYWQgb2YgMC4KCgkqIHByai5hZHM6IEFkZCBuZXcgc3ltYm9sIHBvbGljeSBSZXN0cmljdGVkLgoKCSogcHJqLWRlY3QuYWRiIChQYXJzZV9DYXNlX0NvbnN0cnVjdGlvbik6IENhbGwgRW5kX0Nhc2VfQ29uc3RydWN0aW9uCgl3aXRoIHRoZSBuZXcgcGFyYW1ldGVycyBDaGVja19BbGxfTGFiZWxzIGFuZCBDYXNlX0xvY2F0aW9uLgoKCSogcHJqLW5tc2MuYWRiIChBZGFfQ2hlY2spOiBQcm9jZXNzIG5ldyBzeW1ib2wgcG9saWN5IFJlc3RyaWN0ZWQKCShMaWJyYXJ5X1N5bWJvbF9GaWxlIG5lZWRzIHRvIGJlIGRlZmluZWQpLgoKCSogcHJqLXN0cnQuYWRiIChFbmRfQ2FzZV9Db25zdHJ1Y3Rpb24pOiBOZXcgcGFyYW1ldGVycyBDaGVja19BbGxfTGFiZWxzCglhbmQgQ2FzZV9Mb2NhdGlvbiBJZiBDaGVja19BbGxfTGFiZWxzIGlzIFRydWUsIGNoZWNrIHRoYXQgYWxsIHZhbHVlcyBvZgoJdGhlIHN0cmluZyB0eXBlIGFyZSB1c2VkLCBhbmQgb3V0cHV0IHdhcm5pbmcocykgaWYgdGhleSBhcmUgbm90LgoKCSogcHJqLXN0cnQuYWRzIChFbmRfQ2FzZV9Db25zdHJ1Y3Rpb24pOiBOZXcgcGFyYW1ldGVycyBDaGVja19BbGxfTGFiZWxzCglhbmQgQ2FzZV9Mb2NhdGlvbi4KCgkqIGduYXRfdWduLnRleGk6IFJlb3JkZXIgc3ViY2xhdXNlcyBpbiBtZW51cyAiU3dpdGNoZXMgZm9yIGdjYyIKCgkqIGduYXRfdWduLnRleGk6IFVwZGF0ZSBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBsaWJyYXJ5IGRpcmVjdG9yeSBpbgoJTGlicmFyeSBQcm9qZWN0cy4KCgkqIG1ha2VncHIuYWRiIChEaXNwbGF5X0NvbW1hbmQpOiBJbiB2ZXJib3NlIG1vZGUsIGFsc28gZGlzcGxheSB0aGUKCXZhbHVlIG9mIHRoZSBDUEFUSCBlbnYgdmFyLCB3aGVuIHRoZSBjb21waWxlciBpcyBnY2MuCgkoSW5pdGlhbGl6ZSk6IENoYW5nZSB0aGUgU2Nhbl9BcmdzIHdoaWxlIGxvb3AgdG8gYSBmb3IgbG9vcAoJKENvbXBpbGVfSW5kaXZpZHVhbF9Tb3VyY2VzKTogQ2hhbmdlIGRpcmVjdG9yeSB0byBvYmplY3QgZGlyZWN0b3J5CgliZWZvcmUgY29tcGlsYXRpb25zLgoKCSogc3ltYm9scy5hZHM6IE5ldyBzeW1ib2wgcG9saWN5IFJlc3RyaWN0ZWQuCgoyMDA0LTA2LTExICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBhLWV4Y2VwdC5hZGIgKFJhaXNlX0FmdGVyX1NldHVwIGZhbWlseSk6IFJlbW92ZS4gVGhlIHJlc3BvbnNpYmlsaXR5CglpcyBub3cgdGFrZW4gY2FyZSBvZiBpbnRlcm5hbGx5IGluIHRoZSBFeGNlcHRpb25fUHJvcGFnYXRpb24gcGFja2FnZQoJYW5kIGRvZXMgbm90IHJlcXVpcmUgY2xpZW50cyBhc3Npc3RhbmNlIGFueSBtb3JlLgoKCSogYS1leGV4cHIuYWRiIChJc19TZXR1cF9BbmRfTm90X1Byb3BhZ2F0ZWQsCglTZXRfU2V0dXBfQW5kX05vdF9Qcm9wYWdhdGVkLCBhbmQgQ2xlYXJfU2V0dXBfQW5kX05vdF9Qcm9wYWdhdGVkKTogTmV3CglmdW5jdGlvbnMuIEhlbHBlcnMgdG8gbWFpbnRhaW4gYSBwcmVkaWNhdGUgcmVxdWlyZWQgaW4gdGhlIGhhbmRsaW5nIG9mCglvY2N1cnJlbmNlIHRyYW5zZmVyIGJldHdlZW4gdGFza3MuCglUaGlzIGlzIG5vdyBoYW5kbGVkIGludGVybmFsbHkgYW5kIGRvZXMgbm90IHJlcXVpcmUgY2xpZW50cyBhc3Npc3RhbmNlCglmb3IgdGhlIHNldHVwL3Byb3BhZ2F0ZSBzZXBhcmF0aW9uIGFueW1vcmUuCgkoU2V0dXBfRXhjZXB0aW9uLCBQcm9wYWdhdGVfRXhjZXB0aW9uKTogU2ltcGxpZnkgdGhlIFByaXZhdGVfRGF0YQoJYWxsb2NhdGlvbiBzdHJhdGVneSwgaGFuZGxlIHRoZSBTZXR1cF9BbmRfTm90X1Byb3BhZ2F0ZWQgcHJlZGljYXRlIGFuZAoJZG9jdW1lbnQuCgoJKiBzLXRhZW5jYS5hZGIgKENoZWNrX0V4Y2VwdGlvbik6IFVzZSByYWlzZV93aXRoX21zZyBpbnN0ZWFkIG9mCglyYWlzZV9hZnRlcl9zZXR1cCwgbm93IHRoYXQgZXZlcnl0aGluZyBpcyBoYW5kbGVkIGludGVybmFsbHkgd2l0aGluIHRoZQoJc2V0dXAvcHJvcGFnYXRpb24gZW5naW5lLgoKMjAwNC0wNi0xMSAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBnbmF0LmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfSW5saW5lZF9DYWxsKTogQWRkIGZ1bmN0aW9uIEZvcm1hbF9Jc19Vc2VkX09uY2UuCglBZGQgYWRkaXRpb25hbCBjb25kaXRpb25zIGZvciB0aGUgY2FzZSBvZiBhbiBhY3R1YWwgYmVpbmcgYSBzaW1wbGUKCW5hbWUgb3IgbGl0ZXJhbC4gSW1wcm92ZSBpbmxpbmluZyBieSBwcmV2ZW50aW5nIHRoZSBnZW5lcmF0aW9uCglvZiB0ZW1wb3JhcmllcyB3aXRoIGEgc2hvcnQgbGlmZXRpbWUgKG9uZSB1c2UpLgoKMjAwNC0wNi0xMSAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBnbmF0LmNvbT4KCglQUiBhZGEvMTU1ODcKCSogZWluZm8uYWRzOiBNaW5vciBjb21tZW50IHVwZGF0ZXMgZm9yIEhhc19Db21wbGV0aW9uIGFuZAoJRV9Db25zdGFudCBsaXN0IG9mIGZsYWdzLgoKCSogc2VtX2NoMy5hZGIgKEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uKTogRnVsbCBjb25zdGFudCBkZWNsYXJhdGlvbnMKCWFuZCBjb25zdGFudCByZWRlY2xhcmF0aW9ucyBub3cgc2V0IHRoZSBIYXNfQ29tcGxldGlvbiBmbGFnIG9mIHRoZWlyCglkZWZpbmluZyBpZGVudGlmaWVycy4KCgkqIHNlbV9jaDcuYWRiIChBbmFseXplX1BhY2thZ2VfU3BlYyk6IEFkZCBwcm9jZWR1cmUKCUluc3BlY3RfRGVmZXJyZWRfQ29uc3RhbnRfQ29tcGxldGlvbi4KCVVzZWQgdG8gZGV0ZWN0IHByaXZhdGUgZGVmZXJyZWQgY29uc3RhbnRzIHRoYXQgaGF2ZSBub3QgYmVlbiBjb21wbGV0ZWQKCWVpdGhlciBieSBhIGNvbnN0YW50IHJlZGVjbGFyYXRpb24gb3IgcHJhZ21hIEltcG9ydC4gRW1pdHMgZXJyb3IgbWVzc2FnZQoJImNvbnN0YW50IGRlY2xhcmF0aW9uIHJlcXVpcmVzIGluaXRpYWxpemF0aW9uIGV4cHJlc3Npb24iLgoKCSogc2VtX3ByYWcuYWRiIChQcm9jZXNzX0ltcG9ydF9Pcl9JbnRlcmZhY2UpOiBBbiBJbXBvcnQgcHJhZ21hIG5vdwoJY29tcGxldGVzIGEgZGVmZXJyZWQgY29uc3RhbnQuCgoyMDA0LTA2LTExICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogZXZhbF9mYXQuYWRiIChEZWNvbXBvc2VfSW50KTogRml4IHJvdW5kaW5nIG9mIG5lZ2F0aXZlIG51bWJlcnMuCgoJKiBzLWZhdGdlbi5hZGIgKEdyYWR1YWxfU2NhbGluZyk6IENvcnJlY3Qgb2ZmLWJ5LW9uZSBlcnJvciBpbgoJY2FsY3VsYXRpbmcgZXhwb25lbnQgZm9yIHNjYWxpbmcgZGVub3JtYWwgbnVtYmVycy4KCShMZWFkaW5nX1BhcnQpOiBQcm9wZXJseSByYWlzZSBDb25zdHJhaW50X0Vycm9yIGZvciB6ZXJvIG9yIG5lZ2F0aXZlCglBZGp1c3RtZW50LgoJKFJlbWFpbmRlcik6IFByb3Blcmx5IHJhaXNlIENvbnN0cmFpbnRfRXJyb3IgZm9yIHplcm8gZGl2aXNvci4KCjIwMDQtMDYtMTEgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV91dGlsLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogZXhwX2NoMi5hZGIgKEV4cGFuZF9FbnRyeV9QYXJhbWV0ZXIpOiBHZW5lcmF0ZSBhbiBleHBsaWNpdAoJZGVyZWZlcmVuY2Ugd2hlbiBhY2Nlc3NpbmcgdGhlIGVudHJ5IHBhcmFtZXRlciByZWNvcmQuCgkoQ2hlY2tfQXJyYXlfVHlwZSk6IEFsd2F5cyBjaGVjayBmb3IgcG9zc2libGUgaW1wbGljaXQgZGVyZWZlcmVuY2UuCgkobWF5YmVfaW1wbGljaXRfZGVyZWZlcmVuY2UpOiBSZW5hbWUgdG8gY2hlY2tfbm9faW1wbGljaXRfZGVyZWZlbmNlLgoJQWJvcnQgaWYgYSBwb2ludGVyIGlzIHN0aWxsIHByZXNlbnQgKGRlbm90aW5nIHRoYXQgYW4gaW1wbGljaXQKCWRlcmVmZXJlbmNlIHdhcyBsZWZ0IGluIHRoZSB0cmVlIGJ5IHRoZSBmcm9udC1lbmQpLgoKCSogc2VtX2F0dHIuYWRiIChFeHBhbmRfRW50cnlfUGFyYW1ldGVyKTogR2VuZXJhdGUgYW4gZXhwbGljaXQKCWRlcmVmZXJlbmNlIHdoZW4gYWNjZXNzaW5nIHRoZSBlbnRyeSBwYXJhbWV0ZXIgcmVjb3JkLgoJKENoZWNrX0FycmF5X1R5cGUpOiBBbHdheXMgY2hlY2sgZm9yIHBvc3NpYmxlIGltcGxpY2l0IGRlcmVmZXJlbmNlLgoJKG1heWJlX2ltcGxpY2l0X2RlcmVmZXJlbmNlKTogUmVuYW1lIHRvIGNoZWNrX25vX2ltcGxpY2l0X2RlcmVmZW5jZS4KCUFib3J0IGlmIGEgcG9pbnRlciBpcyBzdGlsbCBwcmVzZW50IChkZW5vdGluZyB0aGF0IGFuIGltcGxpY2l0CglkZXJlZmVyZW5jZSB3YXMgbGVmdCBpbiB0aGUgdHJlZSBieSB0aGUgZnJvbnQtZW5kKS4KCjIwMDQtMDYtMTEgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWN0LWV1cm9wZS5mcj4KCgkqIGctZGVicG9vLmFkYiAoRGVhbGxvY2F0ZSwgRGVyZWZlcmVuY2UpOiBBZGQgcHJlZml4ICJlcnJvcjoiIHRvIGVycm9yCgltZXNzYWdlLCBsaWtlIHRoZSBjb21waWxlciBpdHNlbGYgZG9lcy4gRWFzaWVyIHRvIHBhcnNlIHRoZSBvdXRwdXQuCgoJKiBnLWRlYnBvby5hZHM6IChBbGxvY2F0ZSwgRGVhbGxvY2F0ZSwgRGVyZWZlcmVuY2UpOiBBZGQgY29tbWVudHMuCgoJKiBnbmF0X3Vnbi50ZXhpIChnbmF0eHJlZiwgZ25hdGZpbmQpOiBDbGFyaWZ5IHRoYXQgc291cmNlIG5hbWVzIHNob3VsZAoJYmUgYmFzZSBuYW1lcywgYW5kIG5vdCBpbmNsdWRlcyBkaXJlY3Rvcmllcy4KCjIwMDQtMDYtMTEgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuZ2VuZXJpYyAoJChFWEVDKSk6IERlcGVuZCBvbiAkKE9CSkVDVFMpLCBub3QgJChPQkpfRklMRVMpLAoJc28gdGhhdCBkZXBlbmRlbmNpZXMgYXJlIHByb3Blcmx5IHRha2VuIGludG8gYWNjb3VudCBieSBtYWtlLgoKMjAwNC0wNi0xMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJUFIgYWRhLzE1NjIyCgkqIHMtdW5zdHlwLmFkcywgcy1tYWNjb2QuYWRzLCBzZW1fY2g4LmFkYiwgcy1hdXhkZWMuYWRzLAoJZXhwX2ludHIuYWRiLCBzLWF1eGRlYy12bXNfNjQuYWRzOiBGaXggdHlwbzogaW5zdHJpbnNpYyAtPiBpbnRyaW5zaWMKCjIwMDQtMDYtMTEgIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtZ25hdGxpYik6IGluc3RhbGwgdGFyZ2V0LXNwZWNpZmljIHJ1bi10aW1lIGZpbGVzLgoKCSogTWFrZS1sYW5nLmluOiBSZW1vdmUgb2Jzb2xldGUgdGFyZ2V0cy4KCjIwMDQtMDYtMTEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHBhci1jaDEyLmFkYiAoUF9HZW5lcmljKTogQWRkIHNjb3BlIGJlZm9yZSBhbmFseXppbmcgc3VicHJvZ3JhbQoJc3BlY2lmaWNhdGlvbiwgdG8gY2F0Y2ggbWlzdXNlcyBvZiBwcm9ncmFtIHVuaXQgbmFtZXMuCgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9UeXBlX0NvbnZlcnNpb24pOiBEbyBub3QgZW1pdCB3YXJuaW5ncyBvbgoJc3VwZXJmbHVvdXMgY29udmVyc2lvbnMgaW4gYW4gaW5zdGFuY2UuCgoyMDA0LTA2LTExICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzE1NDAzCgkqIHNlbV9jaDEyLmFkYiAoU2F2ZV9SZWZlcmVuY2VzKTogSWYgb3BlcmF0b3Igbm9kZSBoYXMgYmVlbiBmb2xkZWQgdG8KCWVudW1lcmF0aW9uIGxpdGVyYWwsIGFzc29jaWF0ZWRfbm9kZSBtdXN0IGJlIGRpc2NhcmRlZC4KCjIwMDQtMDYtMTEgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIHMtc3RjaG9wLXZ4d29ya3MuYWRiOiBBZGQgcmVxdWlyZWQgcHJhZ21hIENvbnZlbnRpb24gdG8KCVRhc2tfRGVzY3JpcHRvciBiZWNhdXNlIGl0IGlzIHVwZGF0ZWQgYnkgYSBDIGZ1bmN0aW9uLgoKMjAwNC0wNi0wOCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJUFIgYWRhLzE1NTY4CgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgdGFyZ2V0IHNwZWNpZmljIFNPX09QVCBvbiBJUklYCgoyMDA0LTA2LTA3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWRhLXRyZWUuZGVmIChUUkFOU0ZPUk1fRVhQUiwgQUxMT0NBVEVfRVhQUiwgVVNFX0VYUFIpOiBEZWxldGVkLgoJKEdOQVRfTk9QX0VYUFIsIEdOQVRfTE9PUF9JRCwgRVhQUl9TVE1ULCBOVUxMX1NUTVQpOiBMaWtld2lzZS4KCShCTE9DS19TVE1ULCBJRl9TVE1ULCBHT1RPX1NUTVQsIExBQkVMX1NUTVQsIFJFVFVSTl9TVE1UKTogTGlrZXdpc2UuCgkoQVNNX1NUTVQsIEJSRUFLX1NUTVQsIFJFR0lPTl9TVE1ULEhBTkRMRVJfU1RNVCk6IExpa2V3aXNlLgoJKFNUTVRfU1RNVCwgVVNFX1NUTVQpOiBOZXcgc3RhdGVtZW50IGNvZGVzLgoJKExPT1BfU1RNVCwgRVhJVF9TVE1UKTogTWFrZSBzbGlnaHQgc2VtYW50aWMgY2hhbmdlcy4KCSogYWRhLXRyZWUuaDogUmVmbGVjdCBhYm92ZSBjaGFuZ2VzLgoJKHN0cnVjdCB0cmVlX2xvb3BfaWQpOiBEZWxldGVkLgoJKHVuaW9uIGxhbmdfdHJlZV9ub2RlLCBzdHJ1Y3QgbGFuZ19kZWNsLCBzdHJ1Y3QgbGFuZ190eXBlKToKCU5vdyBqdXN0IGNvbnRhaW5zIGEgdHJlZSBub2RlOyB1cGRhdGUgbWFjcm9zIHVzaW5nIFRZUEVfTEFOR19TUEVDSUZJQwoJYW5kIERFQ0xfTEFOR1VBR0VfU1BFQ0lGSUMgdG8gcmVmbGVjdCB0aGVzZSBjaGFuZ2VzLgoJKERFQ0xfSU5JVF9CWV9BU1NJR05fUCwgVFJFX0xPT1BfTk9ERV9JRCwgVFJFRV9TTE9DKTogRGVsZXRlZC4KCShJU19BREFfU1RNVCk6IE5ldyBtYWNyby4KCSogZGVjbC5jIChhbm5vdGF0ZV9kZWNsX3dpdGhfbm9kZSk6IE5ldyBmdW5jdGlvbi4KCShnbmF0X3RvX2dudV9lbnRpdHkpOiBVc2UgaXQgYW5kIFNsb2NfdG9fbG9jdXMgaW5zdGVhZCBvZiBzZXRfbGluZW5vLgoJKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBvYmplY3QpOiBSZW1vdmUgY2FsbCB0byBleHBhbmQgQ09OVkVSVF9FWFBSLgoJQ2FsbCBhZGRfc3RtdF93aXRoX25vZGUgdG8gZG8gbmVlZGVkIGFzc2lnbm1lbnRzLgoJQWRkIGNhbGwgdG8gdXBkYXRlIHNldGptcCBidWZmZXIgZGlyZWN0bHksIG5vdCB2aWEgRVhQUl9TVE1ULgoJKG1heWJlX3ZhcmlhYmxlKTogQXJnbWVudCBHTkFUX05PREUgZGVsZXRlZC4KCSogZ2lnaS5oIChtYXliZV92YXJpYWJsZSk6IExpa2V3aXNlLgoJKG1ha2VfdHJhbnNmb3JtLCBhZGRfc3RtdF93aXRoX25vZGUsIHNldF9ibG9ja19mb3JfZ3JvdXApOiBOZXcuCgkoZ25hdF9naW1wbGlmeV9leHByLCBnbmF0X2V4cGFuZF9ib2R5LCBTbG9jX3RvX2xvY3VzKTogTGlrZXdpc2UuCgkoc2V0X2Jsb2NrX2ptcGJ1Zl9kZWNsLCBnZXRfYmxvY2tfam1wYnVmX2RlY2wpOiBMaWtld2lzZS4KCShkaXNjYXJkX2ZpbGVfbmFtZXMsIGdudV9ibG9ja19zdGFjaywgZ25hdF90b19jb2RlKTogRGVsZXRlZC4KCShzZXRfbGluZW5vLCBzZXRfbGluZW5vX2Zyb21fc2xvYyk6IExpa2V3aXNlLgoJKHJlY29yZF9jb2RlX3Bvc2l0aW9uLCBpbnNlcnRfY29kZV9mb3IpOiBMaWtld2lzZS4KCShnbmF0X3BvcGxldmVsKTogTm93IHJldHVybnMgdm9pZC4KCShlbmRfc3VicHJvZ19ib2R5KTogTm93IHRha2VzIGFyZ3VtZW50LgoJKiBtaXNjLmMgKGNncmFwaC5oLCB0cmVlLWlubGluZS5oKTogTmV3IGluY2x1ZGVzLgoJKGduYXRfdHJlZV9zaXplLCBMQU5HX0hPT0tTX1RSRUVfU0laRSk6IERlbGV0ZWQuCgkoZ25hdF9wb3N0X29wdGlvbnMsIExBTkdfSE9PS1NfUE9TVF9PUFRJT05TKTogTmV3LgoJKExBTkdfSE9PS1NfQ0FMTEdSQVBIX0VYUEFORF9GVU5DVElPTik6IExpa2V3aXNlLgoJKExBTkdfSE9PS1NfUlRMX0VYUEFORF9TVE1ULCBMQU5HX0hPT0tTX0dJTVBMSUZZX0VYUFIpOiBMaWtld2lzZS4KCShnbmF0X3BhcnNlX2ZpbGUpOiBEb24ndCBzZXQgaW1tZWRpYXRlX3NpemVfZXhwYW5kLgoJQ2FsbCBjZ3JhcGggZnVuY3Rpb25zLgoJKGduYXRfZXhwYW5kX2V4cHIpOiBSZW1vdmUgbW9zdCBjYXNlcy4KCShyZWNvcmRfY29kZV9wb3NpdGlvbiwgaW5zZXJ0X2NvZGVfZm9yKTogUmVtb3ZlIGZyb20gaGVyZS4KCSogdHJhbnMuYyAodG9wbGV2LmgsIHRyZWUtZ2ltcGxlLmgpOiBOb3cgaW5jbHVkZWQuCgkoZGlzY2FyZF9maWxlX25hbWVzKTogRGVsZXRlZC4KCShnbnVfYmxvY2tfc3RhY2ssIGdudV9ibG9ja19zdG10X25vZGUsIGdudV9ibG9ja19zdG10X2ZyZWVfbGlzdCk6IERlbC4KCShmaXJzdF9ub25kZWxldGVkX2luc24sIG1ha2VfZXhwcl9zdG10X2Zyb21fcnRsKTogTGlrZXdpc2UuCgkoc3RydWN0IHN0bXRfZ3JvdXAsIGN1cnJlbnRfc3RtdF9ncm91cCwgc3RtdF9ncm91cF9mcmVlX2xpc3QpOiBOZXcuCgkoZ251X3N0YWNrX2ZyZWVfbGlzdCwgcmVjb3JkX2Nvc3RfcG9zaXRpb24sIGluc2VydF9jb2RlX2Zvcik6IExpa2V3aXNlLgoJKGFkZF9jbGVhbnVwLCBwdXNoX3N0YWNrLCBnbmF0X2dpbXBsaWZ5X3N0bXQsIGFkZF9jbGVhbnVwKTogTGlrZXdpc2UuCgkoZ25hdF9naW1wbGlmeV90eXBlX3NpemVzLCBnbmF0X2dpbXBsaWZ5X29uZV9zaXplcG9zKTogTGlrZXdpc2UuCgkoZ25hdF9leHBhbmRfYm9keV8xLCBnbmF0X2dpbXBsaWZ5X2V4cHIsIGFubm90YXRlX3dpdGhfbm9kZSk6IExpa2V3aXNlLgoJKHNldF9ibG9ja19mb3JfZ3JvdXAsIGFkZF9zdG10X2xpc3QpOiBMaWtld2lzZS4KCShzdGFydF9zdG10X2dyb3VwKTogUmVuYW1lZCBmcm9tIHN0YXJ0X2Jsb2NrX3N0bXQuCgkoZW5kX3N0bXRfZ3JvdXApOiBMaWtld2lzZSwgZnJvbSBlbmRfYmxvY2tfc3RtdC4KCShidWlsZF9zdG10X2dyb3VwKTogTGlrZXdpc2UsIGZyb20gYnVpbGRfYmxvY2tfc3RtdCwgYWxzbyBhZGQgYXJnLgoJKGdpZ2kpOiBEb24ndCBzZXQgZGlzY2FyZF9maWxlX25hbWVzIG9yIGNhbGwgc2V0X2xpbmVuby4KCURpc2FsbG93IGZyb250IGVuZCBaQ1g7IGNhbGwgZ25hdF90b19nbnUsIG5vdCBnbmF0X3RvX2NvZGUuCgkodHJlZV90cmFuc2Zvcm0pOiBEZWxldGVkLCBub3cgcmVuYW1lZCB0byBiZSBnbmF0X3RvX2dudS4KCU51bWVyb3VzIGNoYW5nZXMgdGhyb3VnaG91dCB0byByZWZsZWN0IG5ldyBuYW1lcyBhbmQgY29tcGxldGUKCWZ1bmN0aW9uLWF0LWEtdGltZSBpbXBsZW1lbnRhdGlvbi4KCShnbmF0X2V4cGFuZF9zdG10KTogRGVsZXRlIG9yIGNvbW1lbnQgb3V0IGFsbCBjYXNlcy4KCShwcm9jZXNzX2lubGluZWRfc3VicHJvZ3JhbXMpOiBVc2UgYWRkX3N0bXQuCgkocHJvY2Vzc19kZWNscyk6IFVzZSBnbmF0X3RvX2dudSwgbm90IGduYXRfdG9fY29kZSwgYW5kIGRvbid0CgljYWxsIHNldF9saW5lbm87IGFsc28gcmVtb3ZlIHVubmVlZGVkIGJsb2NrIGhhbmRsaW5nLgoJKHByb2Nlc3NfdHlwZSk6IFJlbW92ZSB1bm5lZWRlZCBibG9jayBoYW5kbGluZy4KCShidWlsZF91bml0X2VsYWIpOiBSZW1vdmUgY2FsbHMgdG8gZGVsZXRlZCBmdW5jdGlvbnMuCgkqIHV0aWxzLmMgKGNncmFwaC5oLCB0cmVlLWlubGluZS5oLCB0cmVlLWdpbXBsZS5oKTogTm93IGluY2x1ZGUuCgkodHJlZS1kdW1wLmgpOiBMaWtld2lzZS4KCShzdHJ1Y3QgYWRhX2JpbmRpbmdfbGV2ZWwpOiBBZGQgZmllbGQgam1wYnVmX2RlY2wuCgkoZ25hdF9kZWZpbmVfYnVpbHRpbiwgZ25hdF9pbnN0YWxsX2J1aWx0aW5zKTogTmV3LgoJKGduYXRfZ2ltcGxpZnlfZnVuY3Rpb24sIGduYXRfZmluYWxpemUpOiBMaWtld2lzZS4KCShnbmF0X3BvcGxldmVsKTogTm8gbG9uZ2VyIHJldHVybiBCTE9DSywgc2V0IGl0IGluc3RlYWQuCglSZW1vdmUgY29kZSBkZWFsaW5nIHdpdGggbmVzdGVkIGZ1bmN0aW9ucy4KCShnbmF0X2luaXRfZGVjbF9wcm9jZXNzaW5nKTogQWxzbyBzZXQgc2l6ZV90eXBlX25vZGUuCglDYWxsIGduYXRfaW5zdGFsbF9idWlsdGlucy4KCShjcmVhdGVfdmFyX2RlY2wpOiBEb24ndCBzZXQgREVDTF9JTklUX0JZX0FTU0lHTi4KCShjcmVhdGVfc3VicHJvZ19kZWNsKTogQ2hhbmdlIGhhbmRsaW5nIG9mIGlubGluZV9mbGFnOyBzZXQgVFJFRV9TVEFUSUMuCglSZW1vdmUgc3BlY2lhbC1jYXNlIGZvciAibWFpbiIuCgkoZW5kX3N1YnByb2dfYm9keSk6IEFkZCBhcmcgYW5kIHJld29yayBmb3IgdHJlZS1zc2EuCgkoY29udmVydCk6IERvbid0IHVzZSBHTkFUX05PUF9FWFBSIG9yIGxvb2sgZm9yIFRSQU5TRk9STV9FWFBSLgoJQWRkIGNhc2UgZm9yIEJPT0xFQU5fVFlQRS4KCSogdXRpbHMyLmMgKHJ0bC5oKTogTm93IGluY2x1ZGUuCgkoYnVpbGRfY2FsbF9yYWlzZSk6IFRlc3QgRGVidWdfRmxhZ19OTiBkaXJlY3RseS4KCShidWlsZF9jYWxsX2FsbG9jX2RlYWxsb2MpOiBEb24ndCB1c2UgbG9jYWwgc3RhY2sgYWxsb2NhdGlvbiBmb3Igbm93LgoJKGduYXRfbWFya19hZGRyZXNzYWJsZSwgY2FzZSBHTkFUX05PUF9FWFBSKTogRGVsZXRlZC4KCShnbmF0X21hcmtfYWRkcmVzc2FibGUsIGNhc2UgVkFSX0RFQ0wpOiBIYW5kbGUgYm90aCBlYXJseSAmIGxhdGUgY2FzZXMuCgoyMDA0LTA2LTA3ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGEtZGlyZWN0LmFkcywgZWluZm8uYWRzOiBNaW5vciBjb21tZW50IHVwZGF0ZXMKCgkqIHMtdGFwcm9wLWx5bnhvcy5hZGIsIHMtdGFwcm9wLXRydTY0LmFkYiwgcy10YXByb3AtaXJpeC5hZGIsCglzLXRhcHJvcC1pcml4LWF0aHJlYWQuYWRiLCBzLXRhcHJvcC1ocHV4LWRjZS5hZGIsIHMtdGFwcm9wLWxpbnV4LmFkYiwKCXMtdGFwcm9wLWR1bW15LmFkYiwgcy10YXByb3Atb3MyLmFkYiwgcy10YXByb3Atc29sYXJpcy5hZGIsCglzLXRhcHJvcC12bXMuYWRiLCBzLXRhcHJvcC1taW5ndy5hZGIsIHMtdGFwcm9wLXZ4d29ya3MuYWRiLAoJcy10YXByb3AtcG9zaXguYWRiLCBzLXRhcHJvcC5hZHMsIGV4cF9kYnVnLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogcy1pbnRlcnItc2lnYWN0aW9uLmFkYjogUmVtb3ZlIHVucmVmZXJlbmNlZCB2YXJpYWJsZQoJKEF0dGFjaGVkX0ludGVycnVwdHMpLiAgTWlub3IgcmVmb3JtYXR0aW5nLgoJQXZvaWQgdXNlIG9mIHZhcmlhYmxlIEkgKHJlcGxhY2UgYnkgSikuCgoJKiBwYXItY2gxMC5hZGI6IEZpeCB0ZXh0IG9mIG9uZSBlcnJvciBtZXNzYWdlCgoJKiBjaGVja3MuYWRiLCBjaGVja3MuYWRzLCBjc3RhbmQuYWRiLCB2bXNfZGF0YS5hZHMsIGVycm91dC5hZHMsCglleHBfYWdnci5hZGIsIGV4cF9jaDMuYWRiLCBleHBfY2gzLmFkcywgZXhwX2NoNS5hZGIsIGV4cF9jaDYuYWRiLAoJZXhwX2NoOS5hZGIsIGV4cF9jb2RlLmFkYiwgZ25hdDFkcnYuYWRiLCBsaWItbG9hZC5hZGIsIGxpYi13cml0LmFkYiwKCW9wdC5hZGIsIHBhci5hZGIsIG9wdC5hZHMsIHBhci1jaDExLmFkYiwgcGFyLWNoMy5hZGIsIHBhci1jaDQuYWRiLAoJcGFyLWNoNS5hZGIsIHBhci1jaDYuYWRiLCBwYXItY2g4LmFkYiwgcGFyLWNoOS5hZGIsIHBhci1wcmFnLmFkYiwKCXBhci11dGlsLmFkYiwgc2NuZy5hZGIsIHNlbV9hZ2dyLmFkYiwgc2VtX2F0dHIuYWRiLCBzZW1fY2F0LmFkYiwKCXNlbV9jaDEwLmFkYiwgc2VtX2NoMTAuYWRiLCBzZW1fY2gxMS5hZGIsIHNlbV9jaDEyLmFkYiwgc2VtX2NoMi5hZGIsCglzZW1fY2gzLmFkYiwgc2VtX2NoMy5hZHMsIHNlbV9jaDQuYWRiLCBzZW1fY2g1LmFkYiwgc2VtX2NoNi5hZGIsCglzZW1fY2g3LmFkYiwgc2VtX2NoOC5hZGIsIHNlbV9jaDkuYWRiLCBzZW1fZXZhbC5hZGIsIHNlbV9wcmFnLmFkYiwKCXNlbV9yZXMuYWRiLCBzZW1fdHlwZS5hZGIsIHNlbV91dGlsLmFkYiwgc2luZm8uYWRzLCBzbmFtZXMuYWRiLAoJc25hbWVzLmFkcywgc25hbWVzLmgsIHNwcmludC5hZGIsIHN3aXRjaC1jLmFkYjogTW9kaWZpY2F0aW9ucyBmb3IgQWRhCgkyMDA1IHN1cHBvcnQuCgoyMDA0LTA2LTA3ICBEb3VnIFJ1cHAgIDxydXBwQGduYXQuY29tPgoKCSogbWxpYi10Z3Qtdm1zLmFkYjogUmVuYW1lIG1saWItdGd0LXZtcy5hZGIgbWxpYi10Z3Qtdm1zLWFscGhhLmFkYgoKCSogcy12YWZsb3Atdm1zLmFkYjogUmVuYW1lIHMtdmFmbG9wLXZtcy5hZGIgdG8gcy12YWZsb3Atdm1zLWFscGhhLmFkYgoKCSogbWxpYi10Z3Qtdm1zLWlhNjQuYWRiOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLmluOiBSZW5hbWUgbWxpYi10Z3Qtdm1zLmFkYiB0byBtbGliLXRndC12bXMtYWxwaGEuYWRiCglBZGQgbWxpYi10Z3Qtdm1zLWlhNjQuYWRiCglSZW5hbWUgcy12YWZsb3Atdm1zLmFkYiB0byBzLXZhZmxvcC12bXMtYWxwaGEuYWRiLgoJTW92ZSB0byBhbHBoYSBzcGVjaWZpYyBpZmVxIHNlY3Rpb24uCglBZGQgVk1TIHNwZWNpZmljIHZlcnNpb25zIG9mIHN5bWJvbHMuYWRiCglSZW5hbWluZyBvZiA1cSB2bXMgZmlsZXMuCgoJKiA1cXN5c3RlbS5hZHMgcmVuYW1lZCB0byBzeXN0ZW0tdm1zXzY0LmFkcy4KCjIwMDQtMDYtMDcgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogYS1jYWxlbmQuYWRzOiBBZGQgYSBHTkFUIE5vdGUgY29tbWVudCBhZnRlciBmdW5jdGlvbiBUaW1lX09mIHRvCglleHBsYWluIHRoYXQgd2hlbiBhIHRpbWUgb2YgZGF5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5vbiBleGlzdGluZyBob3VyCglvbiB0aGUgZGF5IHN3aXRjaGluZyB0byBEU1QgaXMgc3BlY2lmaWVkLCBTcGxpdCBtYXkgcmV0dXJuIGEgZGlmZmVyZW50Cgl2YWx1ZSBmb3IgU2Vjb25kcy4KCgkqIGduYXRjbWQuYWRiOiBBZGQgcHJvY2Vzc2luZyBvZiBHTkFUIE1FVFJJQyAoZm9yIGduYXRtZXRyaWMpLCBzaW1pbGFyCgl0byBHTkFUIFBSRVRUWS4KCgkqIGctb3NfbGliLmFkYiAoT3BlblZNUyk6IE5ldyBCb29sZWFuIHZhbHVlIGltcG9ydGVkIGZyb20gU3lzdGVtLgoJKE5vcm1hbGl6ZV9QYXRobmFtZSk6IE9ubHkgcmVzb2x2ZSBWTVMgbG9naWNhbCBuYW1lcyB3aGVuIG9uIFZNUy4KCgkqIG1saWItcHJqLmFkYiAoQnVpbGRfTGlicmFyeSk6IE5ldyBmbGFnIEd0cmFzeW1vYmpfTmVlZGVkLCBpbml0aWFsaXplCgl0byBGYWxzZS4KCUlmIEd0cmFzeW1vYmpfTmVlZGVkIGlzIFRydWUsIGFkZCB0aGUgZnVsbCBwYXRoIG9mIGctdHJhc3ltLm9iaiB0bwoJdGhlIGxpbmtpbmcgb3B0aW9ucy4KCShCdWlsZF9MaWJyYXJ5LkNoZWNrX0xpYnMpOiBPbiBWTVMsIGlmIHRoZXJlIGlzIGEgZGVwZW5kZW5jeSBvbgoJZy10cmFzeW0uYWRzLCBzZXQgR3RyYXN5bW9ial9OZWVkZWQgdG8gVHJ1ZS4KCgkqIHByai1hdHRyLmFkYjogQWRkIG5ldyBwYWNrYWdlIE1ldHJpY3MgZm9yIGduYXRtZXRyaWMKCgkqIHByai1ubXNjLmFkYiAoUmVjb3JkX090aGVyX1NvdXJjZXMpOiBQdXQgc291cmNlIGZpbGUgbmFtZXMgaW4KCWNhbm9uaWNhbCBjYXNlIHRvIHRha2UgaW50byBhY2NvdW50IGZpbGVzIHdpdGggdXBwZXIgY2FzZSBjaGFyYWN0ZXJzIG9uCglXaW5kb3dzLgoJKEFkYV9DaGVjayk6IExvYWQgdGhlIHJlZmVyZW5jZSBzeW1ib2wgZmlsZSBuYW1lIGluIHRoZSBuYW1lIGJ1ZmZlciB0bwoJY2hlY2sgaXQsIG5vdCB0aGUgc3ltYm9sIGZpbGUgbmFtZS4KCgkqIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IEFkZCBzdGFuZGFyZCBuYW1lIE1ldHJpY3MgKG5hbWUgb2YgcHJvamVjdAoJZmlsZSBwYWNrYWdlIGZvciBnbmF0bWV0cmljKS4KCgkqIHZtc19jb252LmFkczogQWRkIE1ldHJpYyB0byBDb21tZW50X1R5cGUKCgkqIHZtc19jb252LmFkYiAoSW5pdGlhbGl6ZSk6IEFkZCBjb21wb25lbnQgZG9yIE1ldHJpYyBpbiBDb21tYW5kX0xpc3QKCgkqIHZtc19kYXRhLmFkczogQWRkIHF1YWxpZmllcnMgZm9yIEdOQVQgTUVUUklDCgoJKiBtYWtlZ3ByLmFkYiAoTGlua19FeGVjdXRhYmxlcyk6IFRha2UgaW50byBhY2NvdW50IHRoZSBzd2l0Y2hlcwoJc3BlY2lmaWVkIGluIHBhY2thZ2UgTGlua2VyIG9mIHRoZSBtYWluIHByb2plY3QuCgoyMDA0LTA2LTA3ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBiaW5kZ2VuLmFkYiAoU2V0X1VuaXRfTnVtYmVyKTogVW5pdHMgaXMgYW4gaW5zdGFuY2Ugb2YgVGFibGUsIGFuZCBzbwoJdGhlIGluZGV4IG9mIHRoZSBsYXN0IGVsZW1lbnQgaXMgVW5pdHMuTGFzdCwgbm90IFVuaXRzLlRhYmxlJ0xhc3QKCSh3aGljaCBpcyB1c3VhbGx5IG5vdCBhIHZhbGlkIGluZGV4IHdpdGhpbiB0aGUgYWN0dWFsbHkgYWxsb2NhdGVkCglzdG9yYWdlIGZvciB0aGUgdGFibGUpLgoKCSogZXhwX2NoNC5hZGIgKEluc2VydF9EZXJlZmVyZW5jZV9BY3Rpb24pOiBDaGFuZ2UgcHJlZGljYXRlIHRoYXQKCWRldGVybWluZXMgd2hldGhlciB0byBnZW5lcmF0ZSBhIGNhbGwgdG8gYSBjaGVja2VkIHN0b3JhZ2UgcG9vbAoJRGVyZWZlcmVuY2UgYWN0aW9uLgoJR2VuZXJhdGUgc3VjaCBhIGNhbGwgb25seSBmb3IgYSBkZXJlZmVyZW5jZSB0aGF0IGVpdGhlciBjb21lcyBmcm9tCglzb3VyY2UsIG9yIGlzIHRoZSByZXN1bHQgb2YgcmV3cml0aW5nIGEgZGVyZWZlcmVuY2UgdGhhdCBjb21lcyBmcm9tCglzb3VyY2UuCgoyMDA0LTA2LTA3ICBSb21haW4gQmVycmVuZG9ubmVyICA8YmVycmVuZG9AYWN0LWV1cm9wZS5mcj4KCgkqIGJpbmRnZW4uYWRiIChHZW5fT3V0cHV0X0ZpbGUpOiBBZGQgc3VwcG9ydCBmb3IgR0FQIGJ1aWxkcy4KCjIwMDQtMDYtMDcgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgkoZ25hdF90b19nbnVfZW50aXR5KSA8RV9BcnJheV9TdWJ0eXBlPjogRm9yIG11bHRpLWRpbWVuc2lvbmFsIGFycmF5cyBhdAoJZmlsZSBsZXZlbCwgZWxhYm9yYXRlIHRoZSBzdHJpZGUgZm9yIGlubmVyIGRpbWVuc2lvbnMgaW4gYWxpZ25tZW50Cgl1bml0cywgbm90IGJ5dGVzLgoKCSogZXhwX2NoNS5hZGI6IENvcnJlY3Qgd3JvbmcgcmVmZXJlbmNlIHRvIENvbXBvbmVudF9NYXlfQmVfQml0X0FsaWduZWQKCWluIGEgY29tbWVudC4KCjIwMDQtMDYtMDcgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIGV4cF9jaDYuYWRiOiBDb3JyZWN0IHdyb25nIG1vZGlmaWNhdGlvbiBpbiBwcmV2aW91cyBwYXRjaAoKMjAwNC0wNi0wNyAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhY3QtZXVyb3BlLmZyPgoKCSogZy10cmFzeW0uYWRzOiBDb3JyZWN0ZWQgY29tbWVudCB0byBwcm9wZXJseSByZWZsZWN0IGxldmVsIG9mIHN1cHBvcnQKCW9uIFZNUy4KCjIwMDQtMDYtMDcgIEhyaXN0aWFuIEtpcnRjaGV2ICA8a2lydGNoZXZAZ25hdC5jb20+CgoJKiBsaWIteHJlZi5hZGIgKEdlbmVyYXRlX1JlZmVyZW5jZSk6IEFkZCBuZXN0ZWQgZnVuY3Rpb24gSXNfT25fTEhTLiBJdAoJaW5jbHVkZXMgY2FzZSBvZiBhIHZhcmlhYmxlIHJlZmVyZW5jZWQgb24gdGhlIGxlZnQgaGFuZCBzaWRlIG9mIGFuCglhc3NpZ25tZW50LCB0aGVyZWZvcmUgcmVtb3ZlIHJlZHVuZGFudCBjb2RlLiBWYXJpYWJsZXMgYW5kIHByZWZpeGVzIG9mCglpbmRleGVkIG9yIHNlbGVjdGVkIGNvbXBvbmVudHMgYXJlIG5vdyBtYXJrZWQgYXMgcmVmZXJlbmNlZCBvbiBsZWZ0CgloYW5kIHNpZGUuIFdhcm5pbmdzIGFyZSBub3cgcHJvcGVybHkgZW1pdHRlZCB3aGVuIHZhcmlhYmxlcyBvciBwcmVmaXhlcwoJYXJlIGFzc2lnbmVkIGJ1dCBub3QgcmVhZC4KCgkqIHNlbV93YXJuLmFkYiAoT3V0cHV0X1VucmVmZXJlbmNlZF9NZXNzYWdlcyk6IEFkZCBhZGRpdGlvbmFsIGNoZWNrcyB0bwoJbGVmdCBoYW5kIHNpZGUgcmVmZXJlbmNlZCB2YXJpYWJsZXMuIFByaXZhdGUgYWNjZXNzIHR5cGVzIGRvIG5vdAoJcHJvZHVjZSB0aGUgd2FybmluZyAidmFyaWFibGUgLi4uIGlzIGFzc2lnbmVkIGJ1dCBuZXZlciByZWFkIi4KCUFkZCBhbHNvIGFkZGl0aW9uYWwgY2hlY2tzIHRvIGxlZnQgaGFuZCBzaWRlIHJlZmVyZW5jZWQgdmFyaWFibGVzLgoJQWxpYXNlZCwgcmVuYW1lZCBvYmplY3RzIGFuZCBhY2Nlc3MgdHlwZXMgZG8gbm90IHByb2R1Y2UgdGhlIHdhcm5pbmcKCSJ2YXJpYWJsZSAuLi4gaXMgYXNzaWduZWQgYnV0IG5ldmVyIHJlYWQiIHNpbmNlIG90aGVyIGVudGl0aWVzIG1heSByZWFkCgl0aGUgbWVtb3J5IGxvY2F0aW9uLgoKMjAwNC0wNi0wNyAgSmVyb21lIEd1aXR0b24gIDxndWl0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjogSW4gdGhlIHBvd2VycGMvdnh3b3Jrcy1zcGVjaWZpYyBzZWN0aW9uLCByZXN0b3JlCglFWFRSQV9HTkFUUlRMX05PTlRBU0tJTkdfT0JKUyBhbmQgRVhUUkFfR05BVFJUTF9UQVNLSU5HX09CSlMgKHJlbW92ZWQKCWJ5IG1pc3Rha2UpLgoKMjAwNC0wNi0wNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoNC5hZGIgKFJlbW92ZV9BYnN0cmFjdF9PcGVyYXRpb25zKTogUmVmaW5lIHRoZSByZW1vdmFsIG9mCglwcmVkZWZpbmVkIG9wZXJhdG9ycy4KCVJlbW92ZXMgc3B1cmlvdXMgdHlwZSBlcnJvcnMgZnJvbSBnLXRyYXN5bS12bXMuYWRiLgoKCSogc2VtX3Jlcy5hZGIgKFJld3JpdGVfUmVuYW1lZF9PcGVyYXRvcik6IElmIGludHJpbnNpYyBvcGVyYXRvciBpcwoJZGlzdGluY3QgZnJvbSB0aGUgb3BlcmF0b3IgYXBwZWFyaW5nIGluIHRoZSBzb3VyY2UsIGNhbGwgYXBwcm9wcmlhdGUKCXJvdXRpbmUgdG8gaW5zZXJ0IGNvbnZlcnNpb25zIHdoZW4gbmVlZGVkLCBhbmQgY29tcGxldGUgcmVzb2x1dGlvbiBvZgoJbm9kZS4KCShSZXNvbHZlX0ludHJpbnNpY19PcGVyYXRvcik6IEZpeCBjdXQtYW5kLXBhc3RlIGJ1ZyBvbiB0cmFuc2ZlciBvZgoJaW50ZXJwcmV0YXRpb25zIGZvciByZXdyaXR0ZW4gcmlnaHQgb3BlcmFuZC4KCShTZXRfTWl4ZWRfTW9kZV9PcGVyYW5kKTogSGFuZGxlIHByb3Blcmx5IGEgdW5pdmVyc2FsIHJlYWwgb3BlcmFuZCB3aGVuCgl0aGUgb3RoZXIgb3BlcmFuZCBpcyBvdmVybG9hZGVkIGFuZCB0aGUgY29udGV4dCBpcyBhIHR5cGUgY29udmVyc2lvbi4KCjIwMDQtMDYtMDcgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhZGEtdHJlZS5kZWYgKEJMT0NLX1NUTVQpOiBOb3cgaGFzIHR3byBvcGVyYW5kcy4KCShCUkVBS19TVE1UKTogTmV3LgoKCSogYWRhLXRyZWUuaDogKEJMT0NLX1NUTVRfQkxPQ0spOiBOZXcgbWFjcm8uCgoJKiBnaWdpLmg6IChnbmF0X3BvcGxldmVsKTogTm93IHJldHVybnMgYSB0cmVlLgoKCSogdHJhbnMuYyAoZW5kX2Jsb2NrX3N0bXQpOiBBZGQgYXJnOyBhbGwgY2FsbGVycyBjaGFuZ2VkLgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fQ2FzZV9TdGF0ZW1lbnQpOiBNYWtlIGEgQkxPQ0tfU1RNVCBmb3IgYSBXSEVOLgoJKHN0YXJ0X2Jsb2NrX3N0bXQpOiBDbGVhciBCTE9DS19TVE1UX0JMT0NLLgoJKGFkZF9zdG10KTogU2V0IFRSRUVfVFlQRS4KCShnbmF0X2V4cGFuZF9zdG10LCBjYXNlIEJMT0NLX1NUTVQpOiBIYW5kbGUgQkxPQ0tfU1RNVF9CTE9DSy4KCShnbmF0X2V4cGFuZF9zdG10LCBjYXNlIEJSRUFLX1NUTVQpOiBOZXcgY2FzZS4KCgkqIHV0aWxzLmMgKGduYXRfcG9wbGV2ZWwpOiBSZXR1cm4gYSBCTE9DSywgaWYgd2UgbWFkZSBvbmUuCgoyMDA0LTA2LTA3ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBzLXN0Y2hvcC5hZHNtIHMtc3RjaG9wLmFkYiwgcy1zdGNob3Atdnh3b3Jrcy5hZGI6IFJlbW92ZSB0aGUKCXByb2NlZHVyZSBTZXRfU3RhY2tfU2l6ZSB0aGF0IGlzIG5vdCBuZWVkZWQuCgoyMDA0LTA2LTA3ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdF91Z24udGV4aTogQ2xhcmlmeSB0aGUgY2FzZSB3aGVuIG5vbi1zdGFuZGFyZCBuYW1pbmcgc2NoZW1lIGlzCgl1c2VkIGZvciBnbmF0cHAgaW5wdXQgZmlsZSBhbmQgZm9yIHRoZSBmaWxlcyB1cG9uIHdoaWNoIGl0IGRlcGVuZHMKCjIwMDQtMDYtMDcgIEJlbiBCcm9zZ29sICA8YnJvc2dvbEBnbmF0LmNvbT4KCgkqIGduYXRfdWduLnRleGk6IFdvcmRzbWl0aGluZyBvZiAiR05BVCBhbmQgTGlicmFyaWVzIiBjaGFwdGVyCgoyMDA0LTA2LTA3ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXR2c24uYWRzOiBCdW1wIHZlcnNpb24gbnVtYmVycyBhcHByb3ByaWF0ZWx5LgoJQWRkIG5ldyBidWlsZCB0eXBlLgoKMjAwNC0wNi0wNyAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogZ25hdF91Z24udGV4aTogSW1wcm92ZSBjb21tZW50cyBhYm91dCBpbXBvcnRlZCBuYW1lcyBhbmQgbGluayBuYW1lcwoJb24gV2luZG93cy4gQWRkIGEgbm90ZSBhYm91dCB0aGUgcmVxdWlyZW1lbnQgdG8gdXNlIC1rIGduYXRkbGwncyBvcHRpb24KCXdoZW4gd29ya2luZyB3aXRoIGEgRExMIHdoaWNoIGhhcyBzdHJpcHBlZCBzdGRjYWxsIHN5bWJvbHMgKG5vIEBubgoJc3VmZml4KS4KCjIwMDQtMDUtMjcgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogdm1zX2RhdGEuYWRzOiBBZGQgbmV3IEdOQVQgUFJFVFRZIHF1YWxpZmllcnMgL05PX0JBQ0tVUCBhbmQKCUNPTU1FTlRTX0xBWU9VVD1VTlRPVUNIRUQKCgkqIHN5bWJvbHMtdm1zLmFkYiwgc3ltYm9scy12bXMtYWxwaGEuYWRiOiBSZW5hbWVkIHN5bWJvbHMtdm1zLmFkYiB0bwoJc3ltYm9scy12bXMtYWxwaGEuYWRiCgoyMDA0LTA1LTI3ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW0uYWRzOiBDbGFyaWZ5IGRvY3VtZW50YXRpb24gb24gY2hlY2tzIHN1cHByZXNzaW9uLgoKCSogZWluZm8uYWRzIChJc19Lbm93bl9Ob25fTnVsbCk6IE1pbm9yIGNvbW1lbnQgdHlwbyBmaXggYW5kIHJlcGhyYXNpbmcuCgoyMDA0LTA1LTI3ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fdXRpbC5hZGIgKElzX0Rlc2NlbmRlbnRfT2YpOiBFeGFtaW5lIHByb3Blcmx5IGFsbCBhbmNlc3RvcnMgaW4KCXRoZSBjYXNlIG9mIG11bHRpcGxlIGRlcml2YXRpb25zLgoJKElzX09iamVjdF9SZWZlcmVuY2UpOiBGb3IgYSBzZWxlY3RlZCBjb21wb25lbnQsIHZlcmlmeSB0aGF0IHRoZSBwcmVmaXgKCWlzIGl0c2VsZiBhbiBvYmplY3QgYW5kIG5vdCBhIHZhbHVlLgoKCSogc2VtX2NoMTIuYWRiIChTYW1lX0luc3RhbnRpYXRlZF9Db25zdGFudCk6IE5ldyBuYW1lIGZvcgoJU2FtZV9JbnN0YW50aWF0ZWRfRW50aXR5LgoJKFNhbWVfSW5zdGFudGlhdGVkX1ZhcmlhYmxlKTogU3Vic2lkaWFyeSB0bwoJQ2hlY2tfRm9ybWFsX1BhY2thZ2VfSW5zdGFuY2UsIHRvIHJlY29nbml6ZSBhY3R1YWxzIGZvciBpbi1vdXQgZ2VuZXJpYwoJZm9ybWFscyB0aGF0IGFyZSBvYnRhaW5lZCBmcm9tIGEgcHJldmlvdXMgZm9ybWFsIHBhY2thZ2UuCgkoSW5zdGFudGlhdGVfU3VicHJvZ3JhbV9Cb2R5KTogRW1pdCBwcm9wZXIgZXJyb3Igd2hlbgoJZ2VuZXJhdGluZyBjb2RlIGFuZCB0aGUgcHJvcGVyIGJvZHkgb2YgYSBzdHViIGlzIG1pc3NpbmcuCgoJKiBzZW1fY2g0LmFkYiAoUmVtb3ZlX0FkZHJlc3NfSW50ZXJwcmV0YXRpb25zKTogSWYgdGhlIG9wZXJhdGlvbiBzdGlsbAoJaGFzIGEgdW5pdmVyc2FsIGludGVycHJldGF0aW9uLCBkbyB0aGUgZGlzYW1iaWd1YXRpb24gaGVyZS4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9UeXBlX0NvbnZlcnNpb24sCglFeHBhbmRfTl9VbmNoZWNrZWRfVHlwZV9Db252ZXJzaW9uKTogU3BlY2lhbCBoYW5kbGluZyB3aGVuIHRhcmdldCB0eXBlCglpcyBBZGRyZXNzLCB0byBhdm9pZCB0eXBpbmcgYW5vbWFsaWVzIHdoZW4gQWRkcmVzcyBpcyBhIHZpc2libGUgaW50ZWdlcgoJdHlwZS4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfTl9TdWJwcm9ncmFtX0JvZHkpOiBVc2UgSXNfRGVzY2VuZGVudF9PZl9BZGRyZXNzCgl0byBkZXRlcm1pbmUgd2hldGhlciBhIHN1YnByb2dyYW0gc2hvdWxkIG5vdCBiZSBtYXJrZWQgUHVyZSwgZXZlbiB3aGVuCglkZWNsYXJlZCBpbiBhIHB1cmUgcGFja2FnZS4KCjIwMDQtMDUtMjcgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRfdWduLnRleGk6IFJlcGxhY2UgcHJhZ21hIFJhdmVuc2NhciBieSBwcmFnbWEgUHJvZmlsZS4KCgkqIGduYXRfcm0udGV4aTogUmVwbGFjZSBNYXhfRW50cnlfUXVldWVfRGVwdGggYnkgTWF4X0VudHJ5X1F1ZXVlX0xlbmd0aAoJRG9jdW1lbnQgTm9fRHluYW1pY19BdHRhY2htZW50LCB0aGF0IHN1cGVyc2VkZXMgTm9fRHluYW1pY19JbnRlcnJ1cHRzLgoJVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uIGFib3V0IHRoZSBSYXZlbnNjYXIgcHJvZmlsZSwgZm9sbG93aW5nIHRoZQoJZGVmaW5pdGlvbiBmb3VuZCBpbiBBSS0yNDkuCgoJKiBzZW1fcHJhZy5hZGI6IFVzZSBGSUZPX1dpdGhpbl9Qcmlvcml0aWVzIGFuZCBDZWlsaW5nX0xvY2tpbmcgd2hlbgoJc2V0dGluZyB0aGUgUHJvZmlsZSAoUmF2ZW5zY2FyKS4gVGhpcyBtdXN0IGJlIGRvbmUgaW4gYWRkaXRpb24gdG8KCXNldHRpbmcgdGhlIHJlcXVpcmVkIHJlc3RyaWN0aW9ucy4KCgkqIHJ0c2ZpbmQuYWRzOiBBZGQgdGhlIHNldCBvZiBvcGVyYXRpb25zIGRlZmluZWQgaW4gcGFja2FnZQoJQWRhLkludGVycnVwdHMuCgoJKiBleHBfY2g2LmFkYjogQ2hlY2sgd2hldGhlciB3ZSBhcmUgdmlvbGF0aW5nIHRoZSBOb19EeW5hbWljX0F0dGFjaG1lbnQKCXJlc3RyaWN0aW9uLgoKMjAwNC0wNS0yNyAgRXJpYyBCb3RjYXpvdSAgPGVib3RjYXpvdUBhY3QtZXVyb3BlLmZyPgoKCWxhbmctc3BlY3MuaDogQWx3YXlzIHJlcXVpcmUgLWMgb3IgLVMgYW5kIGFsd2F5cyByZWRpcmVjdCB0byAvZGV2L251bGwKCWlmIC1nbmF0YyBvciAtZ25hdHMgaXMgcGFzc2VkLgoKMjAwNC0wNS0yNyAgSHJpc3RpYW4gS2lydGNoZXYgIDxraXJ0Y2hldkBnbmF0LmNvbT4KCgkqIHNlbV9wcmFnLmFkYiAoU2lnX0ZsYWdzKTogQSBQcmFnbWFfVW5jaGVja2VkX1VuaW9uIGRvZXMgbm90IGNvdW50IGFzCglhIHNpZ25pZmljYW50IHJlZmVyZW5jZS4gV2FybmluZ3MgYXJlIG5vdyBwcm9wZXJseSBlbWl0dGVkIHdoZW4gYQoJZGlzY3JpbWluYXRlZCB0eXBlIGlzIG5vdCByZWZlcmVuY2VkLgoKCSogbGliLXhyZWYuYWRiIChHZW5lcmF0ZV9SZWZlcmVuY2UpOiBBIGRlZmVycmVkIGNvbnN0YW50IGNvbXBsZXRpb24sCglyZWNvcmQgcmVwcmVzZW50YXRpb24gY2xhdXNlIG9yIHJlY29yZCB0eXBlIGRpc2NyaW1pbmFudCBkb2VzIG5vdAoJcHJvZHVjZSBhIHJlZmVyZW5jZSB0byBpdHMgY29ycmVzcG9uZGluZyBlbnRpdHkuIFdhcm5pbmdzIGFyZSBub3cKCXByb3Blcmx5IGVtaXR0ZWQgd2hlbiBkZWZlcnJlZCBjb25zdGFudHMgYW5kIHJlY29yZCB0eXBlcyBhcmUgbm90CglyZWZlcmVuY2VkLgoKMjAwNC0wNS0yNyAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBVc2UgbG9uZyB2ZXJzaW9uIG9mIGxpYm0gcm91dGluZXMgb24gaWE2NCBnbnUvbGludXguCglGaXhlcyBBQ0FUUyBBbm5leCBHIHRlc3RzLgoKMjAwNC0wNS0yNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBydHNmaW5kLmFkYiAoUlRVX0xvYWRlZCk6IFRlbXBvcmFyeSBrbHVkZ2UgdG8gZ2V0IHBhc3QgYnVnIG9mIG5vdAoJaGFuZGxpbmcgV0lUSAoKMjAwNC0wNS0yNyAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBzLWludGVyci5hZGIgKFNlcnZlcl9UYXNrKTogVGFrZSBpbnRvIGFjY291bnQgY2FzZSBvZiBlYXJseSByZXR1cm4KCWZyb20gc2lnd2FpdCB1bmRlciBlLmcuIGxpbnV4LgoKMjAwNC0wNS0yNyAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRfdWduLnRleGk6IEFkZCBkZXNjcmlwdGlvbiBmb3IgdGhlIG5ldyBnbmF0cHAgb3B0aW9uczoKCSAtcm5iIC0gcmVwbGFjZSB0aGUgb3JpZ2luYWwgc291cmNlIHdpdGhvdXQgY3JlYXRpbmcgaXRzIGJhY2t1cCBjb3B5CgkgLWMwIC0gZG8gbm90IGZvcm1hdCBjb21tZW50cwoKMjAwNC0wNS0yNCAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIGEtbnVtYXV4LXg4Ni5hZGIgKFJlZHVjZSk6IFJlaW1wbGVtZW50IHVzaW5nIGFuIGFwcHJveGltYXRpb24gb2YgUGkKCXdpdGggMTkyIGJpdHMgb2YgcHJlY2lzaW9uLCBzdWZmaWNpZW50IHRvIHJlZHVjZSBhIGRvdWJsZS1leHRlbmRlZAoJYXJndW1lbnRzIFggd2l0aCBhIG1heGltdW0gcmVsYXRpdmUgZXJyb3Igb2YgVCdNYWNoaW5lX0Vwc2lsb24sIGZvciBYCglpbiAtMi4wKiozMiAuLiAyLjAqKjMyLgoJKENvcywgU2luKTogIEFsd2F5cyByZWR1Y2UgYXJndW1lbnRzIG9mIDEvNCBQaSBvciBsYXJnZXIsIHRvIHByZXZlbnQKCXJlZHVjdGlvbiBieSB0aGUgcHJvY2Vzc29yLCB3aGljaCBvbmx5IHVzZXMgYSA2OC1iaXQgYXBwcm94aW1hdGlvbiBvZgoJUGkuCgkoVGFuKTogQWx3YXlzIHJlZHVjZSBhcmd1bWVudHMgYW5kIGNvbXB1dGUgZnVuY3Rpb24gZWl0aGVyIHVzaW5nCgl0aGUgcHJvY2Vzc29yJ3MgZnB0YW4gaW5zdHJ1Y3Rpb24sIG9yIGJ5IGRpdmlkaW5nIHNpbiBhbmQgY29zIGFzIG5lZWRlZC4KCjIwMDQtMDUtMjQgIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBhZGFpbnQuYyAoX19nbmF0X3JlYWRkaXIpOiBDYXN0IENSVEwgZnVuY3Rpb24gcmV0dW4gdmFsdWUgdG8gYXZvaWQKCWdjYyBlcnJvciBvbiAzMi82NCBiaXQgVk1TLgoKMjAwNC0wNS0yNCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogaW5pdC5jIChfX2duYXRfZXJyb3JfaGFuZGxlcik6IEhhbmRsZSBFRVhJU1QgYXMgRUFDQ0VTIGZvciBTSUdTRUdWcywKCXNpbmNlIHRoaXMgaXMgd2hhdCB3ZSBnZXQgZm9yIHN0YWNrIG92ZXJmbG93cyBhbHRob3VnaCBub3QgZG9jdW1lbnRlZAoJYXMgc3VjaC4KCURvY3VtZW50IHRoZSBpc3N1ZXMgd2hpY2ggbWF5IHJlcXVpcmUgYWRqdXN0bWVudHMgdG8gb3VyIHNpZ25hbAoJaGFuZGxlcnMuCgoyMDA0LTA1LTI0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBpbmxpbmUuYWRiIChBZGRfU2NvcGVfVG9fQ2xlYW4pOiBEbyBub3QgYWRkIGNsZWFudXAgYWN0aW9ucyB0byB0aGUKCWVuY2xvc2luZyBkeW5hbWljIHNjb3BlIGlmIHRoZSBpbnN0YW50aWF0aW9uIGlzIHdpdGhpbiBhIGdlbmVyaWMgdW5pdC4KCjIwMDQtMDUtMjQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogZXhwX2RidWcuYWRzOiBGaXggdHlwby4KCgkqIE1ha2VmaWxlLmluOiBzLW9zaW50ZS1saW51eC1pYTY0LmFkcyB3YXMgbWlzbmFtZWQuCglSZW5hbWUgaXQgdG8gaXRzIHByb3BlciBuYW1lOiBzeXN0ZW0tbGludXgtaWE2NC5hZHMKCShzdGFtcC1nbmF0bGliMSk6IFJlbW92ZSBleHRyYSB0YXJnZXQgc3BlY2lmaWMgcnVuIHRpbWUgZmlsZXMgd2hlbgoJc2V0dGluZyB1cCB0aGUgcnRzIGRpcmVjdG9yeS4KCjIwMDQtMDUtMjQgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIGVpbmZvLmFkcywgZWluZm8uYWRiIChMaW1pdGVkX1ZpZXdzKTogUmVtb3ZlZC4KCShMaW1pdGVkX1ZpZXcpOiBOZXcgYXR0cmlidXRlIHRoYXQgcmVwbGFjZXMgdGhlIHByZXZpb3VzIG9uZS4gSXQgaXMKCW5vdyBhIGJvbmEgZmlkZSBwYWNrYWdlIHdpdGggdGhlIGxpbWl0ZWQtdmlldyBsaXN0IHRocm91Z2ggdGhlCglmaXJzdF9lbnRpdHkgYW5kIGZpcnN0X3ByaXZhdGUgYXR0cmlidXRlcy4KCgkqIHNlbV9jaDEwLmFkYiAoSW5zdGFsbF9Qcml2YXRlX1dpdGhfQ2xhdXNlcyk6IEdpdmUgc3VwcG9ydCB0bwoJbGltaXRlZC1wcml2YXRlLXdpdGggY2xhdXNlLgoJKEluc3RhbGxfTGltaXRlZF9XaXRoZWRfVW5pdCk6IEluc3RhbGwgdGhlIHByaXZhdGUgZGVjbGFyYXRpb25zIG9mIGEKCWxpbWl0ZWQtcHJpdmF0ZS13aXRoZWQgcGFja2FnZS4gVXBkYXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlIHNoYWRvdwoJZW50aXRpZXMgYWNjb3JkaW5nIHRvIHRoZSBuZXcgc3RydWN0dXJlIChzZWUgQnVpbGRfTGltaXRlZF9WaWV3cykKCShCdWlsZF9MaW1pdGVkX1ZpZXdzKTogUmVwbGFjZSB0aGUgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gb2YgdGhlCglsaW1pdGVkIHZpZXcgYnkgYSBwYWNrYWdlIGVudGl0eSB0aGF0IHJlZmVyZW5jZXMgdGhlIGZpcnN0IHNoYWRvdwoJZW50aXR5IHBsdXMgdGhlIGZpcnN0IHNoYWRvdyBwcml2YXRlIGVudGl0eSAocmVxdWlyZWQgZm9yIGxpbWl0ZWQtCglwcml2YXRlLXdpdGggY2xhdXNlKQoJKE5ld19JbnRlcm5hbF9TaGFkb3dfRW50aXR5KTogQ29kZSBjbGVhbnVwLgoJKFJlbW92ZV9MaW1pdGVkX1dpdGhfQ2xhdXNlKTogVXBkYXRlIHRoZSBpbXBsZW1lbnRhdGlvbiB0byB1bmRvIHRoZQoJbmV3IHdvcmsgY2FycmllZCBvdXQgYnkgQnVpbGRfTGltaXRlZF9WaWV3cy4KCShCdWlsZF9DaGFpbik6IENvbXBsZXRlIGRvY3VtZW50YXRpb24uCglSZXBsYWNlIEFkYTBZIGJ5IEFkYSAwWSBpbiBjb21tZW50cwoJTWlub3IgcmVmb3JtYXRpbmcKCgkqIHNlbV9jaDMuYWRiIChBcnJheV9UeXBlX0RlY2xhcmF0aW9uKTogSW4gY2FzZSBvZiBhbm9ueW1vdXMgYWNjZXNzCgl0eXBlcyB0aGUgbGV2ZWwgb2YgYWNjZXNzaWJpbGl0eSBkZXBlbmRzIG9uIHRoZSBlbmNsb3NpbmcgdHlwZQoJZGVjbGFyYXRpb24uCgoJKiBzZW1fY2g4LmFkYiAoRmluZF9FeHBhbmRlZF9OYW1lKTogRml4IGNvbmRpdGlvbiB0byBkZXRlY3Qgc2hhZG93CgllbnRpdGllcy4gQ29tcGxldGUgZG9jdW1lbnRhdGlvbiBvZiBwcmV2aW91cyBjaGFuZ2UuCgoyMDA0LTA1LTI0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIG5hbWV0LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglBdm9pZCB1c2Ugb2YgbmFtZSBJIChyZXBsYWNlIGJ5IEopCglNaW5vciBjb2RlIHJlc3RydWN0dXJpbmcKCgkqIHNlbV9jaDYuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGxpYi13cml0LmFkYjogRG8gbm90IHNldCByZXN0cmljdGlvbiBhcyBhY3RpdmUgaWYgdGhpcyBpcyBhCglSZXN0cmljdGlvbl9XYXJuaW5nIGNhc2UuCgoJKiBzZW1fcHJhZy5hZGI6IFJlc2V0IHJlc3RyaWN0aW9uIHdhcm5pbmcgZmxhZyBpZiByZWFsIHByYWdtYQoJcmVzdHJpY3Rpb24gZW5jb3VudGVyZWQuCgoJKiBzLWh0YWJsZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJQ2hhbmdlIHJvdGF0ZSBjb3VudCB0byAzIGluIEhhc2ggKGltcHJvdmVzIGhhc2ggZm9yIHNtYWxsIHN0cmluZ3MpCgoJKiA1cXN5c3RlbS5hZHM6IEFkZCBjb21tZW50cyBmb3IgdHlwZSBBZGRyZXNzIChubyBsaXRlcmFscyBhbGxvd2VkKS4KCgkqIGduYXRfdWduLnRleGk6IEFkZCBuZXcgc2VjdGlvbiBvZiBkb2N1bWVudGF0aW9uICJDb2RlIEdlbmVyYXRpb24KCUNvbnRyb2wiLCB3aGljaCBkZXNjcmliZXMgdGhlIHVzZSBvZiAtbSBzd2l0Y2hlcy4KCjIwMDQtMDUtMjQgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgl0cmFucy5jICh0cmVlX3RyYW5zZm9ybSkgPE5fSWRlbnRpZmllcj46IERvIHRoZSBkZXJlZmVyZW5jZSBkaXJlY3RseQoJdGhyb3VnaCB0aGUgREVDTF9JTklUSUFMIGZvciByZW5hbWVkIHZhcmlhYmxlcy4KCjIwMDQtMDUtMjQgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogcy1vc2ludGUtbGludXgtaWE2NC5hZHM6IFJlbmFtZWQgc3lzdGVtLWxpbnV4LWlhNjQuYWRzCgoyMDA0LTA1LTE5ICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIGV4cF9kYnVnLmFkczogQ29ycmVjdCBjb21tZW50cyBjb25jZXJuaW5nIGhhbmRsaW5nIG9mIG92ZXJsb2FkaW5nLAoJc2luY2Ugd2Ugbm8gbG9uZ2VyIHVzZSAkIGFueW1vcmUuCgoyMDA0LTA1LTE5ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX2NoMTAuYWRiIChPcHRpb25hbF9TdWJ1bml0KTogV2hlbiBsb2FkaW5nIGEgc3VidW5pdCwgZG8gbm90CglpZ25vcmUgZXJyb3JzIGlmIEFTSVNfTW9kZSBpcyBzZXQuIFRoaXMgcHJldmVudHMgY3JlYXRpbmcgQVNJUyB0cmVlcwoJd2l0aCBpbGxlZ2FsIHN1YnVuaXRzLgoKMjAwNC0wNS0xOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoNi5hZGIgKENoZWNrX0ZvbGxvd2luZ19QcmFnbWEpOiBXaGVuIGNvbXBpbGluZyBhIHN1YnByb2dyYW0KCWJvZHkgd2l0aCBmcm9udC1lbmQgaW5saW5pbmcgZW5hYmxlZCwgY2hlY2sgd2hldGhlciBhbiBpbmxpbmUgcHJhZ21hCglhcHBlYXJzIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSBib2R5IGFuZCBhcHBsaWVzIHRvIGl0LgoKCSogc2VtX3ByYWcuYWRiIChDYW5ub3RfSW5saW5lKTogRW1pdCB3YXJuaW5nIGlmIGZyb250LWVuZCBpbmxpbmluZyBpcwoJZW5hYmxlZCBhbmQgdGhlIHByYWdtYSBhcHBlYXJzIGFmdGVyIHRoZSBib2R5IG9mIHRoZSBzdWJwcm9ncmFtLgoKMjAwNC0wNS0xNyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCglQYXJ0IG9mIGZ1bmN0aW9uLWF0LWEtdGltZSBjb252ZXJzaW9uCgoJKiBtaXNjLmMgKGFkanVzdF9kZWNsX3J0bCk6IERlbGV0ZWQuCgkoTEFOR19IT09LU19QVVNITEVWRUwsIExBTkdfSE9PS1NfUE9QTEVWRUwsIExBTkdfSE9PS1NfU0VUX0JMT0NLKToKCURlZmluZS4KCgkqIGdpZ2kuaDogKGFkanVzdF9kZWNsX3J0bCwga2VwdF9sZXZlbF9wLCBzZXRfYmxvY2spOiBEZWxldGVkLgoJKGFkZF9kZWNsX3N0bXQsIGFkZF9zdG10LCBibG9ja19oYXNfdmFycyk6IE5ldyBmdW5jdGlvbnMuCgkoZ25hdF9wdXNobGV2ZWwsIGduYXRfcG9wbGV2ZWwpOiBSZW5hbWVkIGZyb20gcHVzaGxldmVsIGFuZCBwb3BsZXZlbC4KCgkqIGRlY2wuYyAoZWxhYm9yYXRlX2V4cHJlc3Npb24sIG1heWJlX3BhZF90eXBlKTogQ2FsbCBhZGRfZGVjbF9zdG10Cgl3aGVuIG1ha2luZyBhIGRlY2wuCgkoZ25hdF90b19nbnVfZW50aXR5KTogTGlrZXdpc2UuCglVc2UgYWRkX3N0bXQgdG8gdXBkYXRlIHNldGptcCBidWZmZXIuCglTZXQgVFJFRV9BRERSRVNTQUJMRSBpbnN0ZWFkIG9mIGNhbGxpbmcgcHV0X3Zhcl9pbnRvX3N0YWNrIGFuZAoJZmx1c2hfYWRkcmVzc29mLgoJTm8gbG9uZ2VyIGNhbGwgYWRqdXN0X2RlY2xfcnRsLgoJKERFQ0xfSU5JVF9CWV9BU1NJR05fUCk6IE5ldyBtYWNyby4KCShERUNMX1NUTVRfVkFSKTogTGlrZXdpc2UuCgoJKiB0cmFucy5jIChnaWdpKTogQ2FsbCBzdGFydF9ibG9ja19zdG10IHRvIG1ha2UgdGhlIG91dGVybW9zdAoJQkxPQ0tfU1RNVC4KCShnbmF0X3RvX2NvZGUsIGdudV90b19nbnUsIHRyZWVfdHJhbnNmb3JtLCBwcm9jZXNzX2RlY2xzLCBwcm9jZXNzX3R5cGUpOgoJQ2FsbCBzdGFydF9ibG9ja19zdG10IGFuZCBlbmRfYmxvY2tfc3RtdCB0ZW1wb3JhcmlseS4KCVVzZSBnbmF0X2V4cGFuZF9zdG10IGluc3RlYWQgb2YgZXhwYW5kX2V4cHJfc3RtdC4KCShhZGRfZGVjbF9zdG10KTogTmV3IGZ1bmN0aW9uLgoJKHRyZWVfdHJhbnNmb3JtKTogQ2FsbCBpdC4KCShhZGRfc3RtdCk6IEFsc28gZW1pdCBpbml0aWFsaXppbmcgYXNzaWdubWVudCBmb3IgREVDTF9TVE1UIGlmIG5lZWRlZC4KCShlbmRfYmxvY2tfc3RtdCk6IFNldCB0eXBlIGFuZCBOVUxMX1NUTVQuCgkoZ25hdF9leHBhbmRfc3RtdCk6IE1ha2UgcmVjdXJzaXplIGNhbGwgaW5zdGVhZCBvZiBjYWxsaW5nCglleHBhbmRfZXhwcl9zdG10LgoJKGduYXRfZXhwYW5kX3N0bXQsIGNhc2UgREVDTF9TVE1UKTogTmV3IGNhc2UuCgkoc2V0X2xpbmVub19mcm9tX3Nsb2MpOiBEbyBub3RoaW5nIGlmIGdsb2JhbC4KCShnbnVfYmxvY2tfc3RtdF9ub2RlLCBnbnVfYmxvY2tfc3RtdF9mcmVlX2xpc3QpOiBOZXcgdmFyaWFibGVzLgoJKHN0YXJ0X2Jsb2NrX3N0bXQsIGFkZF9zdG10LCBlbmRfYmxvY2tfc3RtdCk6IE5ldyBmdW5jdGlvbnMuCgkoYnVpbGRfYmxvY2tfc3RtdCk6IENhbGwgdGhlbS4KCShnbmF0X3RvX2NvZGUpOiBEb24ndCBleHBhbmQgTlVMTF9TVE1ULgoJKGJ1aWxkX3VuaXRfZWxhYik6IFJlbmFtZSBwdXNobGV2ZWwgYW5kIHBvcGxldmVsIHRvIGduYXRfKiBhbmQgY2hhbmdlCglhcmdzLgoJKHRyZWVfdHJhbnNmb3JtKTogTGlrZXdpc2UuCgkodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9OdWxsX1N0YXRlbWVudCk6IFJldHVybiBOVUxMX1NUTVQuCgkoZ25hdF9leHBhbmRfc3RtdCwgY2FzZSBOVUxMX1NUTVQpOiBOZXcgY2FzZS4KCShnbmF0X2V4cGFuZF9zdG10LCBjYXNlIElGX1NUTVQpOiBBbGxvdyBuZXN0ZWQgSUZfU1RNVCB0byBoYXZlIG5vCglJRl9TVE1UX1RSVUUuCgoJKiB1dGlsczIuYyAoZ25hdF9tYXJrX2FkZHJlc3NhYmxlLCBjYXNlIFZBUl9ERUNMKTogRG8gbm90IHNldAoJVFJFRV9BRERSRVNTQUJMRS4KCgkqIHV0aWxzLmMgKGNyZWF0ZV92YXJfZGVjbCk6IERvIG5vdCBjYWxsIGV4cGFuZF9kZWNsIG9yCglleHBhbmRfZGVjbF9pbml0LgoJU2V0IFRSRUVfQUREUkVTU0FCTEUgaW5zdGVhZCBvZiBjYWxsaW5nIGduYXRfbWFya19hZGRyZXNzYWJsZS4KCVNldCBERUNMX0lOSVRfQllfQVNTSUdOX1Agd2hlbiBuZWVkZWQgYW5kIGRvIG5vdCBnZW5lcmF0ZSBNT0RJRllfRVhQUgoJaGVyZS4KCShzdHJ1Y3QgZV9zdGFjayk6IEFkZCBjaGFpbl9uZXh0IHRvIEdUWS4KCShzdHJ1Y3QgYmluZGluZ19sZXZlbCk6IERlbGV0ZWQuCgkoc3RydWN0IGFkYV9iaW5kaW5nX2xldmVsKTogTmV3IHN0cnVjdC4KCShmcmVlX2Jsb2NrX2NoYWluKTogTmV3LgoJKGdsb2JhbF9iaW5kaW5nX2xldmVsLCBjbGVhcl9iaW5kaW5nX2xldmVsKTogRGVsZXRlZC4KCShnbG9iYWxfYmluZGluZ3NfcCk6IFJld29yayB0byBzZWUgaWYgbm8gY2hhaW4uCgkoa2VwdF9sZXZlbF9wLCBzZXRfYmxvY2spOiBEZWxldGVkLgoJKGduYXRfcHVzaGxldmVsKTogUmVuYW1lZCBmcm9tIHB1c2hsZXZlbCBhbmQgZXh0ZW5zaXZlIHJld29ya2VkIHRvIHVzZQoJbmV3IGRhdGEgc3RydWN0dXJlIGFuZCB3b3JrIGRpcmVjdGx5IG9uIEJMT0NLIG5vZGUuCgkoZ25hdF9wb3BsZXZlbCk6IFNpbWlsYXJseS4KCShnZXRfZGVjbHMpOiBMb29rIGF0IEJMT0NLX1ZBUlMuCgkoaW5zZXJ0X2Jsb2NrKTogV29yayBkaXJlY3RseSBvbiBCTE9DSyBub2RlLgoJKGJsb2NrX2hhc192YXIpOiBOZXcgZnVuY3Rpb24uCgkocHVzaGRlY2wpOiBSZXdvcmsgZm9yIG5ldyBiaW5kaW5nIHN0cnVjdHVyZXMuCgkoZ25hdF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbmFtZSBhbmQgcmV3b3JrIGNhbGxzIHRvIHB1c2hsZXZlbCBhbmQKCXBvcGxldmVsLgoJKGJ1aWxkX3N1YnByb2dfYm9keSk6IExpa2V3aXNlLgoJKGVuZF9zdWJwcm9nX2JvZHkpOiBMaWtld2lzZTsgYWxzbyBzZXQgdXAgQkxPQ0sgaW4gREVDTF9JTklUSUFMLgoKCSogYWRhLXRyZWUuZGVmIChERUNMX1NUTVQsIE5VTExfU1RNVCk6IE5ldyBjb2Rlcy4KCgkqIGFkYS10cmVlLmg6IChERUNMX0lOSVRfQllfQVNTSUdOX1ApOiBOZXcgbWFjcm8uCgkoREVDTF9TVE1UX1ZBUik6IExpa2V3aXNlLgoKMjAwNC0wNS0xNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiByZXN0cmljdC5hZHMsIHJlc3RyaWN0LmFkYiAoUHJvY2Vzc19SZXN0cmljdGlvbl9TeW5vbnltKTogTmV3Cglwcm9jZWR1cmUKCgkqIHNlbV9wcmFnLmFkYiAoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgUmVzdHJpY3Rpb25zKTogQ2xlYW51cCBoYW5kbGluZwoJb2YgcmVzdHJpY3Rpb24gc3lub255dW1zIGJ5IHVzaW5nCglSZXN0cmljdC5Qcm9jZXNzX1Jlc3RyaWN0aW9uX1N5bm9ueW1zLgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYjogQWRkIGVudHJpZXMgZm9yIFByb2Nlc3NfUmVzdHJpY3Rpb25fU3lub255bQoKCSogcy1yZXN0cmkuYWRzIChUYXNraW5nX0FsbG93ZWQpOiBDb3JyZWN0IG1pc3NpbmcgY29tbWVudAoKCSogcy1yaWRlbnQuYWRzOiBBZGQgZW50cmllcyBmb3IgcmVzdHJpY3Rpb24gc3lub255bXMKCgkqIGFsaS5hZGI6IEZpeCBzb21lIHByb2JsZW1zIHdpdGggYmFkbHkgZm9ybWF0dGVkIEFMSSBmaWxlcyB0aGF0IGNhbgoJcmVzdWx0IGluIGluZmluaXRlIGxvb3BzLgoKCSogcy10YXByb3AtbHlueG9zLmFkYiwgcy10cG9wc3AtbHlueG9zLmFkYiwgcy10YXByb3AtdHJ1NjQuYWRiLAoJcy10cG9wc3AtcG9zaXgtZm9yZWlnbi5hZGIsIHMtdGFwcm9wLWlyaXguYWRiLCBzLWludGVyci1zaWdhY3Rpb24uYWRiLAoJcy10YXByb3AtaXJpeC1hdGhyZWFkLmFkYiwgcy10YXByb3AtaHB1eC1kY2UuYWRiLCBzLXRhcHJvcC1saW51eC5hZGIsCglzLXRhcHJvcC1kdW1teS5hZGIsIHMtaW50ZXJyLWR1bW15LmFkYiwgcy10YXByb3Atb3MyLmFkYiwKCXMtdGFwcm9wLXNvbGFyaXMuYWRiLCBzLXRwb3BzcC1zb2xhcmlzLmFkYiwgcy1hc3RoYW4tdm1zLmFkYiwKCXMtaW5tYW9wLXZtcy5hZGIsIHMtaW50ZXJyLXZtcy5hZGIsIHMtdGFwcm9wLXZtcy5hZGIsCglzLXRwb3BkZS12bXMuYWRiLCBzLXRhcHJvcC1taW5ndy5hZGIsIHMtaW50ZXJyLXZ4d29ya3MuYWRiLAoJcy10YXByb3Atdnh3b3Jrcy5hZGIsIHMtdHBvcHNwLXZ4d29ya3MuYWRiLCBzLXRhcHJvcC1wb3NpeC5hZGIsCglzLXRwb3BzcC1wb3NpeC5hZGIsIHMtdHJhdGFzLWRlZmF1bHQuYWRiLCBhLWR5bnByaS5hZGIsCglhLXRhc2F0dC5hZGIsIGEtdGFzaWRlLmFkYiwgYS10YXNpZGUuYWRzLCBleHBfYXR0ci5hZGIsCglleHBfY2g5LmFkYiwgZy10aHJlYWQuYWRiLCBydHNmaW5kLmFkcywgc2VtX2F0dHIuYWRiLAoJcy1pbnRlcnIuYWRiLCBzLWludGVyci5hZHMsIHMtc29mbGluLmFkcywgcy10YWFzZGUuYWRiLAoJcy10YWFzZGUuYWRzLCBzLXRhZW5jYS5hZGIsIHMtdGFlbmNhLmFkcywgcy10YXByb3AuYWRzLAoJcy10YXJlc3QuYWRiLCBzLXRhcmVzdC5hZHMsIHMtdGFzZGViLmFkYiwgcy10YXNkZWIuYWRzLAoJcy10YXNpbmkuYWRiLCBzLXRhc2luaS5hZHMsIHMtdGFza2luLmFkYiwgcy10YXNraW4uYWRzLAoJcy10YXNxdWUuYWRiLCBzLXRhc3F1ZS5hZHMsIHMtdGFzcmVuLmFkYiwgcy10YXNyZW4uYWRzLAoJcy10YXNzdGEuYWRiLCBzLXRhc3N0YS5hZHMsIHMtdGFzdXRpLmFkYiwgcy10YXN1dGkuYWRzLAoJcy10YXRhYXQuYWRiLCBzLXRhdGFhdC5hZHMsIHMtdHBpbm9wLmFkYiwgcy10cGlub3AuYWRzLAoJcy10cG9iZW4uYWRiLCBzLXRwb2JvcC5hZGIsIHMtdHBvYm9wLmFkcywgcy10cG9yZnQuYWRiLAoJcy10cG9zZW4uYWRiLCBzLXRwb3Nlbi5hZHMsIHMtdHJhdGFzLmFkYiwgcy10cmF0YXMuYWRzOiBDaGFuZ2UgVGFza19JRAoJdG8gVGFza19JZCAobWlub3IgY2xlYW51cCkuCgoyMDA0LTA1LTE3ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGctb3NfbGliLmFkYiAoTm9ybWFsaXplX1BhdGhuYW1lLkZpbmFsX1ZhbHVlKTogUmVtb3ZlIHRyYWlsaW5nCglkaXJlY3Rvcnkgc2VwYXJhdG9yLgoKCSogcHJqLXByb2MuYWRiIChSZWN1cnNpdmVfUHJvY2Vzcyk6IEluaGVyaXQgYXR0cmlidXRlIExhbmd1YWdlcyBmcm9tCglwcm9qZWN0IGJlaW5nIGV4dGVuZGVkLCBpZiBMYW5ndWFnZXMgaXMgbm90IGRlY2xhcmVkIGluIGV4dGVuZGluZwoJcHJvamVjdC4KCjIwMDQtMDUtMTcgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHNlbV9jaDEwLmFkYiAoSW5zdGFsbF9MaW1pdGVkX1dpdGhlZF9Vbml0KTogRG8gbm90IGluc3RhbGwgdGhlCglsaW1pdGVkIHZpZXcgb2YgYSB2aXNpYmxlIHNpYmxpbmcuCgoyMDA0LTA1LTE0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGduYXRfdWduLnRleGk6IE1pbm9yIGNoYW5nZSB0byAtZ25hdFMgZG9jdW1lbnRhdGlvbgoKCSogc3ByaW50LmFkYjogUmVtb3ZlIHNvbWUgaW5zdGFuY2VzIG9mIEFzc2VydCAoRmFsc2UpIGFuZCBmb3IgdGhpcwoJcHVycG9zZSByZXBsYWNlIHRoZW0gYnkgb3V0cHV0IG9mIGEgPz8/IHN0cmluZy4KCgkqIGNoZWNrcy5hZGIsIGV4cF9hZ2dyLmFkYiwgc2VtX2VsaW0uYWRiOiBSZW1vdmUgdXNlbGVzcyBwcmFnbWEKCUFzc2VydCAoRmFsc2UpLgoKCSogbGliLXdyaXQuYWRiLCBsaWItbG9hZC5hZGIsIGxpYi5hZHMsIGxpYi5hZGI6IFJlbW92ZSBEZXBlbmRlbnRfVW5pdAoJZmxhZyBwcm9jZXNzaW5nLiBUaGlzIHdhcyBzdXBwcmVzc2luZyByZXF1aXJlZCBkZXBlbmRlbmNpZXMgaW4KCU5vX1J1bl9UaW1lIG1vZGUgYW5kIGlzIG5vdCBuZWVkZWQgc2luY2UgdGhlIGJpbmRlciBkb2VzIG5vdCBnZW5lcmF0ZQoJcmVmZXJlbmNlcyBmb3IgdGhpbmdzIGluIGxpYmduYXQgYW55d2F5LgoKCSogc2VtX2NoMy5hZGIgKEFjY2Vzc19UeXBlX0RlY2xhcmF0aW9uKTogUmVvcmdhbml6ZSBjb2RlIHRvIGF2b2lkIEdDQwoJd2FybmluZy4KCjIwMDQtMDUtMTQgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRfdWduLnRleGk6IERvY3VtZW50IEFJWC1zcGVjaWZpYyBpc3N1ZSB3aXRoIGluaXRpYWxpemF0aW9uIG9mCglyZXNvbHZlciBsaWJyYXJ5LgoKCSogZXhwX2NoNC5hZGIgKEluc2VydF9EZXJlZmVyZW5jZV9BY3Rpb24pOiBEbyBub3QgZ2VuZXJhdGUgZGVyZWZlcmVuY2UKCWFjdGlvbiBmb3IgdGhlIGNhc2Ugb2YgYW4gYWN0dWFsIHBhcmFtZXRlciBpbiBhbiBpbml0IHByb2MgY2FsbC4KCjIwMDQtMDUtMTQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX1NlbGVjdGVkX0NvbXBvbmVudCk6IElmIHByZWZpeCBpcyBhIHByb3RlY3RlZAoJc3VidHlwZSwgY2hlY2sgdmlzaWJsZSBlbnRpdGllcyBpbiBiYXNlIHR5cGUuCgoJKiBleHBfY2g3LmFkYiAoQ2xlYW5fU2ltcGxlX1Byb3RlY3RlZF9PYmplY3RzKTogRG8gbm90IGdlbmVyYXRlIGNsZWFudXAKCWFjdGlvbnMgaWYgdGhlIG9iamVjdCBpcyBhIHJlbmFtaW5nLgoKCSogc2VtX2NoMTIuYWRiIChTYW1lX0luc3RhbnRpYXRlZF9FbnRpdHkpOiBQcmVkaWNhdGUgZm9yCglDaGVja19Gb3JtYWxfUGFja2FnZV9JbnN0YW5jZSwgdG8gZGV0ZXJtaW5lIG1vcmUgcHJlY2lzZWx5IHdoZW4gdGhlCglmb3JtYWwgYW5kIHRoZSBhY3R1YWwgZGVub3RlIHRoZSBzYW1lIGVudGl0eS4KCjIwMDQtMDUtMTQgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHBhci1jaDEwLmFkYiAoUF9Db250ZXh0X0NsYXVzZSk6IENvbXBsZXRlIGRvY3VtZW50YXRpb24gb24gQUktMjYyCgoJKiBzZW1fY2gxMC5hZGIgKEFuYWx5emVfV2l0aF9DbGF1c2UpOiBBZnRlciBhbmFseXplZCwgdGhlIGVudGl0eQoJY29ycmVzcG9uZGluZyB0byBhIHByaXZhdGVfd2l0aCBtdXN0IGJlIHJlbW92ZWQgZnJvbSB2aXNpYmlsaXR5OyBpdAoJd2lsbCBiZSBtYWRlIHZpc2libGUgbGF0ZXIsIGp1c3QgYmVmb3JlIHdlIGFuYWx5emUgdGhlIHByaXZhdGUgcGFydCBvZgoJdGhlIHBhY2thZ2UuCgkoQ2hlY2tfUHJpdmF0ZV9DaGlsZF9Vbml0KTogQWxsb3cgcHJpdmF0ZV93aXRoIGNsYXVzZXMgaW4gcHVibGljCglzaWJsaW5ncy4KCShJbnN0YWxsX1NpYmxpbmdzKTogTWFrZSB2aXNpYmxlIHRoZSBwcml2YXRlIGVudGl0aWVzIG9mIHByaXZhdGUtd2l0aGVkCglzaWJsaW5ncy4KCShJbnN0YWxsX1dpdGhlZF9Vbml0KTogRG8gbm90IGluc3RhbGwgdGhlIHByaXZhdGUgd2l0aGVkIHVuaXQgaWYgd2UKCWFyZSBjb21waWxpbmcgYSBwYWNrYWdlIGRlY2xhcmF0aW9uIGFuZCB0aGUgUHJpdmF0ZV9XaXRoX09LIGZsYWcgd2FzCglub3Qgc2V0IGJ5IHRoZSBjYWxsZXIuIFRoZXNlIGRlY2xhcmF0aW9ucyB3aWxsIGJlIGluc3RhbGxlZCBsYXRlciwKCWp1c3QgYmVmb3JlIHdlIGFuYWx5emUgdGhlIHByaXZhdGUgcGFydCBvZiB0aGUgcGFja2FnZS4KCgkqIHNlbV9jaDMuYWRiIChBbmFseXplX09iamVjdF9EZWNsYXJhdGlvbik6IEluIGNhc2Ugb2YgZXJyb3JzIGRldGVjdGVkCglkdXJpbmcgdGhlIGV2YWx1YXRpb24gb2YgdGhlIGV4cHJlc3Npb24gdGhhdCBpbml0aWFsaXplcyB0aGUgb2JqZWN0LAoJZGVjb3JhdGUgaXQgd2l0aCB0aGUgZXhwZWN0ZWQgdHlwZSB0byBhdm9pZCBjYXNjYWRlIGVycm9ycy4KCUNvZGUgY2xlYW51cC4KCgkqIHNlbV9jaDYuYWRiIChBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IElmIHdlIGFyZSBjb21waWxpbmcgYSBsaWJyYXJ5CglzdWJwcm9ncmFtIHdlIGhhdmUgdG8gaW5zdGFsbCB0aGUgcHJpdmF0ZV93aXRoIGNsYXVzZXMgYWZ0ZXIgaXRzCglzcGVjaWZpY2F0aW9uIGhhcyBiZWVuIGFuYWx5emVkIChhcyBkb2N1bWVudGVkIGluIEFJLTI2Mi5UWFQpLgoKCSogc2VtX2NoOC5hZGIgKEhhc19Qcml2YXRlX1dpdGgpOiBOZXcgZnVuY3Rpb24uIERldGVybWluZXMgaWYgdGhlCgljdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQgaGFzIGEgcHJpdmF0ZSB3aXRoIG9uIGEgZ2l2ZW4gZW50aXR5LgoJKEZpbmRfRGlyZWN0X05hbWUpOiBEZXRlY3QgdGhlIEJlYXVqb2xhaXMgcHJvYmxlbSBkZXNjcmliZWQgaW4KCUFJLTI2Mi5UWFQKCgkqIHNlbV91dGlscy5hZHMsIHNlbV91dGlsLmFkYiAoSXNfQW5jZXN0b3JfUGFja2FnZSk6IE5ldyBmdW5jdGlvbi4gSXQKCXByb3ZpZGVzIHRoZSBmdW5jdGlvbmFsaXR5IG9mIHRoZSBmdW5jdGlvbiBJc19BbmNlc3RvciB0aGF0IHdhcwoJcHJldmlvdXNseSBhdmFpbGFibGUgaW4gc2VtX2NoMTAuIEl0IGhhcyBiZWVuIHJlbmFtZWQgdG8gYXZvaWQKCW92ZXJsb2FkaW5nLgoKCSogc3ByaW50LmFkYiAoU3ByaW50X05vZGVfQWN0dWFsKTogUHJpbnQgbGltaXRlZF93aXRoIGNsYXVzZXMKCjIwMDQtMDUtMTQgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB1dGlscy5jIChidWlsZF92bXNfZGVzY3JpcHRvcik6IFVzZSBTSW1vZGUgcG9pbnRlcnMuCgoyMDA0LTA1LTE0ICBWYXNpbGl5IEZvZmFub3YgIDxmb2Zhbm92QGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0X3Vnbi50ZXhpOiBSZXZpc2VkIGNoYXB0ZXIgIkdOQVQgYW5kIExpYnJhcmllcyIuCgoyMDA0LTA1LTE0ICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDA0LTA1LTE0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCglSZW5hbWluZyBvZiB0YXJnZXQgc3BlY2lmaWMgZmlsZXMgZm9yIGNsYXJpdHkKCgkqIE1ha2VmaWxlLmluOiBSZW5hbWUgR05BVCB0YXJnZXQgc3BlY2lmaWMgZmlsZXMuCgoJKiAzMXNvY2Nvbi5hZHMsIDMxc29saW9wLmFkcyAzNXNvY2Nvbi5hZHMsIDNhc29jY29uLmFkcywKCTNic29jY29uLmFkcywgM2dzb2Njb24uYWRzLCAzaHNvY2Nvbi5hZHMsIDNwc29jY29uLmFkcywKCTNzc29jY29uLmFkcywgM3Nzb2xpb3AuYWRzLCAzdmVhY29kdS5hZGIsIDN2ZXhwZWN0LmFkYiwKCTN2c29jY29uLmFkcywgM3Zzb2N0aGkuYWRiLCAzdnNvY3RoaS5hZHMsIDN2dHJhc3ltLmFkYiwKCTN3c29jY29uLmFkcywgM3dzb2N0aGkuYWRiLCAzd3NvY3RoaS5hZHMsIDN3c29saW9wLmFkcywKCTN6c29jY29uLmFkcywgM3pzb2N0aGkuYWRiLCAzenNvY3RoaS5hZHMsIDQxaW50bmFtLmFkcywKCTQyaW50bmFtLmFkcywgNDVpbnRuYW0uYWRzLCA0YWludG5hbS5hZHMsIDRjaW50bmFtLmFkcywKCTRnaW50bmFtLmFkcywgNGhleGNwb2wuYWRiLCA0aGludG5hbS5hZHMsIDRsaW50bmFtLmFkcywKCTRuaW50bmFtLmFkcywgNG9pbnRuYW0uYWRzLCA0b251bWF1eC5hZHMsIDRwaW50bmFtLmFkcywKCTRzaW50bmFtLmFkcywgNHZjYWxkZWwuYWRiLCA0dmNhbGVuZC5hZGIsIDR2Y2FsZW5kLmFkcywKCTR2aW50bmFtLmFkcywgNHdjYWxlbmQuYWRiLCA0d2V4Y3BvbC5hZGIsIDR3aW50bmFtLmFkcywKCTR6aW50bmFtLmFkcywgNHpudW1hdXguYWRzLCA0enN5dGFjby5hZGIsIDR6c3l0YWNvLmFkcywKCTUxb3NpbnRlLmFkYiwgNTFvc2ludGUuYWRzLCA1MXN5c3RlbS5hZHMsCgk1Mm9zaW50ZS5hZGIsIDUyb3NpbnRlLmFkcywgNTNvc2ludGUuYWRzLCA1NG9zaW50ZS5hZHMsCgk1NW9zaW50ZS5hZGIsIDU1b3NpbnRlLmFkcywgNTVzeXN0ZW0uYWRzLCA1Nm9zaW50ZS5hZGIsCgk1Nm9zaW50ZS5hZHMsIDU2c3lzdGVtLmFkcywgNTZ0YXByb3AuYWRiLCA1NnRhc3ByaS5hZHMsCgk1NnRwb3BzcC5hZGIsIDU3c3lzdGVtLmFkcywgNThzeXN0ZW0uYWRzLAoJNWFtYXN0b3AuYWRiLCA1YW1sLXRndC5hZGIsIDVhb3NpbnRlLmFkYiwgNWFvc2ludGUuYWRzLAoJNWFzeXN0ZW0uYWRzLCA1YXRhcHJvcC5hZGIsIDVhdGFzaW5mLmFkcywgNWF0YXNwcmkuYWRzLAoJNWF0cG9wc3AuYWRiLCA1YXZ4d29yay5hZHMsIDVibWwtdGd0LmFkYiwgNWJvc2ludGUuYWRiLAoJNWJvc2ludGUuYWRzLCA1YnN5c3RlbS5hZHMsIDVjb3NpbnRlLmFkcywgNWNzeXN0ZW0uYWRzLAoJNWRzeXN0ZW0uYWRzLCA1ZXN5c3RlbS5hZHMsIDVmaW50bWFuLmFkYiwgNWZvc2ludGUuYWRiLAoJNWZvc2ludGUuYWRzLCA1ZnN5c3RlbS5hZHMsIDVmdGFwcm9wLmFkYiwgNWZ0YXNpbmYuYWRzLAoJNWdpbnRlcnIuYWRiLCA1Z2ludG1hbi5hZGIsIDVnbWFzdG9wLmFkYiwgNWdtbC10Z3QuYWRiLAoJNWdvc2ludGUuYWRzLCA1Z3Byb2luZi5hZGIsIDVncHJvaW5mLmFkcywgNWdzeXN0ZW0uYWRzLAoJNWd0YXByb3AuYWRiLCA1Z3Rhc2luZi5hZGIsIDVndGFzaW5mLmFkcywgNWd0cGdldGMuYWRiLAoJNWhtbC10Z3QuYWRiLCA1aG9zaW50ZS5hZGIsIDVob3NpbnRlLmFkcywgNWhwYXJhbWUuYWRzLAoJNWhzeXN0ZW0uYWRzLCA1aHRhcHJvcC5hZGIsIDVodGFzcHJpLmFkcywgNWh0cmFjZWIuYWRiLAoJNWlvc2ludGUuYWRiLCA1aW9zaW50ZS5hZHMsIDVpdGFwcm9wLmFkYiwgNWl0YXNwcmkuYWRzLAoJNWtzeXN0ZW0uYWRzLCA1a3Z4d29yay5hZHMsIDVsbWwtdGd0LmFkYiwgNWxvc2ludGUuYWRzLAoJNWxwYXJhbWUuYWRiLCA1bHN5c3RlbS5hZHMsIDVtc3lzdGVtLmFkcywgNW12eHdvcmsuYWRzLAoJNW5pbm1hb3AuYWRiLCA1bmludG1hbi5hZGIsIDVub3NpbnRlLmFkcywgNW5zeXN0ZW0uYWRzLAoJNW50YXByb3AuYWRiLCA1bnRhc3ByaS5hZHMsIDVvaW50ZXJyLmFkYiwgNW9tYXN0b3AuYWRiLAoJNW9vc2ludGUuYWRiLCA1b29zaW50ZS5hZHMsIDVvb3NwcmltLmFkYiwgNW9wYXJhbWUuYWRiLAoJNW9zeXN0ZW0uYWRzLCA1b3RhcHJvcC5hZGIsIDVvdGFzcHJpLmFkcywgNXBvc2ludGUuYWRzLAoJNXBvc3ByaW0uYWRiLCA1cHN5c3RlbS5hZHMsIDVwdnh3b3JrLmFkcywgNXNpbnRtYW4uYWRiLAoJNXNtbC10Z3QuYWRiLCA1c29zaW50ZS5hZGIsIDVzb3NpbnRlLmFkcywgNXNvc3ByaW0uYWRiLAoJNXNwYXJhbWUuYWRiLCA1c3N5c3RlbS5hZHMsIDVzdGFwcm9wLmFkYiwgNXN0YXNpbmYuYWRiLAoJNXN0YXNpbmYuYWRzLCA1c3Rhc3ByaS5hZHMsIDVzdHBvcHNwLmFkYiwgNXN2eHdvcmsuYWRzLAoJNXRvc2ludGUuYWRzLCA1dXN5c3RlbS5hZHMsIDV2YXN0aGFuLmFkYiwgNXZkaXJ2YWwuYWRiLAoJNXZpbm1hb3AuYWRiLCA1dmludGVyci5hZGIsIDV2aW50bWFuLmFkYiwgNXZpbnRtYW4uYWRzLAoJNXZtYXN0b3AuYWRiLCA1dm1sLXRndC5hZGIsIDV2b3NpbnRlLmFkYiwgNXZvc2ludGUuYWRzLAoJNXZvc3ByaW0uYWRiLCA1dm9zcHJpbS5hZHMsIDV2cGFyYW1lLmFkcywgNXZzeW1ib2wuYWRiLAoJNXZzeXN0ZW0uYWRzLCA1dnRhcHJvcC5hZGIsIDV2dGFzcHJpLmFkcywgNXZ0cG9wZGUuYWRiLAoJNXZ0cG9wZGUuYWRzLCA1dnRyYWVudC5hZGIsIDV2dHJhZW50LmFkcywgNXZ2YWZsb3AuYWRiLAoJNXdkaXJ2YWwuYWRiLCA1d2dsb2xvYy5hZGIsIDV3aW50bWFuLmFkYiwgNXdtZW1vcnkuYWRiLAoJNXdtbC10Z3QuYWRiLCA1d29zaW50ZS5hZHMsIDV3b3NwcmltLmFkYiwgNXdzeXN0ZW0uYWRzLAoJNXd0YXByb3AuYWRiLCA1d3Rhc3ByaS5hZHMsIDV4cGFyYW1lLmFkcywgNXhzeXN0ZW0uYWRzLAoJNXh2eHdvcmsuYWRzLCA1eXBhcmFtZS5hZHMsIDV5c3lzdGVtLmFkcywgNXppbnRlcnIuYWRiLAoJNXppbnRtYW4uYWRiLCA1emludG1hbi5hZHMsIDV6bWwtdGd0LmFkYiwgNXpvc2ludGUuYWRiLAoJNXpvc2ludGUuYWRzLCA1em9zcHJpbS5hZGIsIDV6cGFyYW1lLmFkcywgNXpzdGNob3AuYWRiLAoJNXpzeXN0ZW0uYWRzLCA1enRhcHJvcC5hZGIsIDV6dGFzcHJpLmFkcywgNXp0ZnNldHIuYWRiLAoJNXp0cG9wc3AuYWRiLCA2dmNwcC5hZGIsIDZ2Y3N0cmVhLmFkYiwgNnZpbnRlcmYuYWRzLAoJN3Npbm1hb3AuYWRiLCA3c2ludG1hbi5hZGIsIDdzb3NpbnRlLmFkYiwgN3Nvc3ByaW0uYWRiLAoJN3N0YXByb3AuYWRiLCA3c3Rhc3ByaS5hZHMsIDdzdGZzZXRyLmFkYiwgN3N0cG9wc3AuYWRiLAoJN3N0cmFjZWIuYWRiLCA3c3RyYWNlcy5hZGIsIDdzdHJhZm9yLmFkYiwgN3N0cmFmb3IuYWRzLAoJN3N0cmF0YXMuYWRiLCA4Nm51bWF1eC5hZGIsIDg2bnVtYXV4LmFkczogUmVwbGFjZWQgYnkgZmlsZXMgYmVsb3cuCgoJKiBhLWNhbGRlbC12bXMuYWRiLCBhLWNhbGVuZC1taW5ndy5hZGIsIGEtY2FsZW5kLXZtcy5hZGIsCglhLWNhbGVuZC12bXMuYWRzLCBhLWRpcnZhbC1taW5ndy5hZGIsIGEtZGlydmFsLXZtcy5hZGIsCglhLWV4Y3BvbC1hYm9ydC5hZGIsIGEtZXhjcG9sLWludGVyaXguYWRiLCBhLWludG5hbS1haXguYWRzLAoJYS1pbnRuYW0tZHVtbXkuYWRzLCBhLWludG5hbS1mcmVlYnNkLmFkcywgYS1pbnRuYW0taHB1eC5hZHMsCglhLWludG5hbS1pbnRlcml4LmFkcywgYS1pbnRuYW0taXJpeC5hZHMsIGEtaW50bmFtLWxpbnV4LmFkcywKCWEtaW50bmFtLWx5bnhvcy5hZHMsIGEtaW50bmFtLW1pbmd3LmFkcywgYS1pbnRuYW0tb3MyLmFkcywKCWEtaW50bmFtLXNvbGFyaXMuYWRzLCBhLWludG5hbS10cnU2NC5hZHMsIGEtaW50bmFtLXVuaXh3YXJlLmFkcywKCWEtaW50bmFtLXZtcy5hZHMsIGEtaW50bmFtLXZ4d29ya3MuYWRzLCBhLW51bWF1eC1saWJjLXg4Ni5hZHMsCglhLW51bWF1eC12eHdvcmtzLmFkcywgYS1udW1hdXgteDg2LmFkYiwgYS1udW1hdXgteDg2LmFkcywKCWEtc3l0YWNvLXZ4d29ya3MuYWRiLCBhLXN5dGFjby12eHdvcmtzLmFkcywgZy1lYWNvZHUtdm1zLmFkYiwKCWctZXhwZWN0LXZtcy5hZGIsIGctc29jY29uLWFpeC5hZHMsIGctc29jY29uLWZyZWVic2QuYWRzLAoJZy1zb2Njb24taHB1eC5hZHMsIGctc29jY29uLWludGVyaXguYWRzLCBnLXNvY2Nvbi1pcml4LmFkcywKCWctc29jY29uLW1pbmd3LmFkcywgZy1zb2Njb24tc29sYXJpcy5hZHMsIGctc29jY29uLXRydTY0LmFkcywKCWctc29jY29uLXVuaXh3YXJlLmFkcywgZy1zb2Njb24tdm1zLmFkYiwgZy1zb2Njb24tdnh3b3Jrcy5hZHMsCglnLXNvY3RoaS1taW5ndy5hZGIsIGctc29jdGhpLW1pbmd3LmFkcywgZy1zb2N0aGktdm1zLmFkYiwKCWctc29jdGhpLXZtcy5hZHMsIGctc29jdGhpLXZ4d29ya3MuYWRiLCBnLXNvY3RoaS12eHdvcmtzLmFkcywKCWctc29saW9wLW1pbmd3LmFkcywgZy1zb2xpb3Atc29sYXJpcy5hZHMsIGctc29saW9wLXVuaXh3YXJlLmFkcywKCWctdHJhc3ltLXZtcy5hZGIsIGktY3BwLXZtcy5hZGIsIGktY3N0cmVhLXZtcy5hZGIsCglpbnRlcmZhYy12bXMuYWRzLCBtbGliLXRndC1haXguYWRiLCBtbGliLXRndC1ocHV4LmFkYiwKCW1saWItdGd0LWlyaXguYWRiLCBtbGliLXRndC1saW51eC5hZGIsIG1saWItdGd0LW1pbmd3LmFkYiwKCW1saWItdGd0LXNvbGFyaXMuYWRiLCBtbGliLXRndC10cnU2NC5hZGIsIG1saWItdGd0LXZtcy5hZGIsCgltbGliLXRndC12eHdvcmtzLmFkYiwgcy1hc3RoYW4tdm1zLmFkYiwgcy1nbG9sb2MtbWluZ3cuYWRiLAoJcy1pbm1hb3AtZHVtbXkuYWRiLCBzLWlubWFvcC1wb3NpeC5hZGIsIHMtaW5tYW9wLXZtcy5hZGIsCglzLWludGVyci1kdW1teS5hZGIsIHMtaW50ZXJyLXNpZ2FjdGlvbi5hZGIsIHMtaW50ZXJyLXZtcy5hZGIsCglzLWludGVyci12eHdvcmtzLmFkYiwgcy1pbnRtYW4tZHVtbXkuYWRiLCBzLWludG1hbi1pcml4LmFkYiwKCXMtaW50bWFuLWlyaXgtYXRocmVhZC5hZGIsIHMtaW50bWFuLW1pbmd3LmFkYiwgcy1pbnRtYW4tcG9zaXguYWRiLAoJcy1pbnRtYW4tc29sYXJpcy5hZGIsIHMtaW50bWFuLXZtcy5hZGIsIHMtaW50bWFuLXZtcy5hZHMsCglzLWludG1hbi12eHdvcmtzLmFkYiwgcy1pbnRtYW4tdnh3b3Jrcy5hZHMsIHMtbWFzdG9wLWlyaXguYWRiLAoJcy1tYXN0b3AtdHJ1NjQuYWRiLCBzLW1hc3RvcC12bXMuYWRiLCBzLW1hc3RvcC14ODYuYWRiLAoJcy1tZW1vcnktbWluZ3cuYWRiLCBzLW9zaW50ZS1haXguYWRiLCBzLW9zaW50ZS1haXguYWRzLAoJcy1vc2ludGUtYWl4LWZzdS5hZHMsIHMtb3NpbnRlLWR1bW15LmFkcywgcy1vc2ludGUtZnJlZWJzZC5hZGIsCglzLW9zaW50ZS1mcmVlYnNkLmFkcywgcy1vc2ludGUtZnN1LmFkYiwgcy1vc2ludGUtaHB1eC5hZHMsCglzLW9zaW50ZS1ocHV4LWRjZS5hZGIsIHMtb3NpbnRlLWhwdXgtZGNlLmFkcywgcy1vc2ludGUtaW50ZXJpeC5hZHMsCglzLW9zaW50ZS1pcml4LmFkYiwgcy1vc2ludGUtaXJpeC5hZHMsIHMtb3NpbnRlLWlyaXgtYXRocmVhZC5hZHMsCglzLW9zaW50ZS1saW51eC5hZHMsIHMtb3NpbnRlLWxpbnV4LWZzdS5hZHMsIHMtb3NpbnRlLWxpbnV4LWlhNjQuYWRzLAoJcy1vc2ludGUtbHlueG9zLTMuYWRiLCBzLW9zaW50ZS1seW54b3MtMy5hZHMsIHMtb3NpbnRlLWx5bnhvcy5hZGIsCglzLW9zaW50ZS1seW54b3MuYWRzLCBzLW9zaW50ZS1taW5ndy5hZHMsIHMtb3NpbnRlLW9zMi5hZGIsCglzLW9zaW50ZS1vczIuYWRzLCBzLW9zaW50ZS1wb3NpeC5hZGIsIHMtb3NpbnRlLXNvbGFyaXMuYWRiLAoJcy1vc2ludGUtc29sYXJpcy5hZHMsIHMtb3NpbnRlLXNvbGFyaXMtZnN1LmFkcywKCXMtb3NpbnRlLXNvbGFyaXMtcG9zaXguYWRzLCBzLW9zaW50ZS10cnU2NC5hZGIsIHMtb3NpbnRlLXRydTY0LmFkcywKCXMtb3NpbnRlLXVuaXh3YXJlLmFkYiwgcy1vc2ludGUtdW5peHdhcmUuYWRzLCBzLW9zaW50ZS12bXMuYWRiLAoJcy1vc2ludGUtdm1zLmFkcywgcy1vc2ludGUtdnh3b3Jrcy5hZGIsCglzLW9zaW50ZS12eHdvcmtzLmFkcywgcy1vc3ByaW0tbWluZ3cuYWRiLAoJcy1vc3ByaW0tb3MyLmFkYiwgcy1vc3ByaW0tcG9zaXguYWRiLCBzLW9zcHJpbS1zb2xhcmlzLmFkYiwKCXMtb3NwcmltLXVuaXguYWRiLCBzLW9zcHJpbS12bXMuYWRiLCBzLW9zcHJpbS12bXMuYWRzLAoJcy1vc3ByaW0tdnh3b3Jrcy5hZGIsIHMtcGFyYW1lLWFlNjUzLmFkcywgcy1wYXJhbWUtaHB1eC5hZHMsCglzLXBhcmFtZS1saW51eC5hZGIsIHMtcGFyYW1lLW9zMi5hZGIsIHMtcGFyYW1lLXNvbGFyaXMuYWRiLAoJcy1wYXJhbWUtdm1zLmFkcywgcy1wYXJhbWUtdm1zLXJlc3RyaWN0LmFkcywgcy1wYXJhbWUtdnh3b3Jrcy5hZHMsCglzLXByb2luZi1pcml4LWF0aHJlYWQuYWRiLCBzLXByb2luZi1pcml4LWF0aHJlYWQuYWRzLAoJcy1zdGNob3Atdnh3b3Jrcy5hZGIsIHMtdGFwcm9wLWR1bW15LmFkYiwKCXMtdGFwcm9wLWhwdXgtZGNlLmFkYiwgcy10YXByb3AtaXJpeC5hZGIsCglzLXRhcHJvcC1pcml4LWF0aHJlYWQuYWRiLCBzLXRhcHJvcC1saW51eC5hZGIsIHMtdGFwcm9wLWx5bnhvcy5hZGIsCglzLXRhcHJvcC1taW5ndy5hZGIsIHMtdGFwcm9wLW9zMi5hZGIsIHMtdGFwcm9wLXBvc2l4LmFkYiwKCXMtdGFwcm9wLXNvbGFyaXMuYWRiLCBzLXRhcHJvcC10cnU2NC5hZGIsIHMtdGFwcm9wLXZtcy5hZGIsCglzLXRhcHJvcC12eHdvcmtzLmFkYiwgcy10YXNpbmYtaXJpeC5hZHMsIHMtdGFzaW5mLWlyaXgtYXRocmVhZC5hZGIsCglzLXRhc2luZi1pcml4LWF0aHJlYWQuYWRzLCBzLXRhc2luZi1zb2xhcmlzLmFkYiwgcy10YXNpbmYtc29sYXJpcy5hZHMsCglzLXRhc2luZi10cnU2NC5hZHMsIHMtdGFzcHJpLWR1bW15LmFkcywgcy10YXNwcmktaHB1eC1kY2UuYWRzLAoJcy10YXNwcmktbGludXguYWRzLCBzLXRhc3ByaS1seW54b3MuYWRzLCBzLXRhc3ByaS1taW5ndy5hZHMsCglzLXRhc3ByaS1vczIuYWRzLCBzLXRhc3ByaS1wb3NpeC5hZHMsIHMtdGFzcHJpLXNvbGFyaXMuYWRzLAoJcy10YXNwcmktdHJ1NjQuYWRzLCBzLXRhc3ByaS12bXMuYWRzLCBzLXRhc3ByaS12eHdvcmtzLmFkcywKCXMtdGZzZXRyLWRlZmF1bHQuYWRiLCBzLXRmc2V0ci12eHdvcmtzLmFkYiwgcy10cG9wZGUtdm1zLmFkYiwKCXMtdHBvcGRlLXZtcy5hZHMsIHMtdHBvcHNwLWx5bnhvcy5hZGIsIHMtdHBvcHNwLXBvc2l4LmFkYiwKCXMtdHBvcHNwLXBvc2l4LWZvcmVpZ24uYWRiLCBzLXRwb3BzcC1zb2xhcmlzLmFkYiwgcy10cG9wc3Atdnh3b3Jrcy5hZGIsCglzLXRyYWNlYi1ocHV4LmFkYiwgcy10cmFjZWItbWFzdG9wLmFkYiwgcy10cmFjZXMtZGVmYXVsdC5hZGIsCglzLXRyYWVudC12bXMuYWRiLCBzLXRyYWVudC12bXMuYWRzLCBzLXRyYWZvci1kZWZhdWx0LmFkYiwKCXMtdHJhZm9yLWRlZmF1bHQuYWRzLCBzLXRyYXRhcy1kZWZhdWx0LmFkYiwgcy12YWZsb3Atdm1zLmFkYiwKCXMtdnh3b3JrLWFscGhhLmFkcywgcy12eHdvcmstbTY4ay5hZHMsIHMtdnh3b3JrLW1pcHMuYWRzLAoJcy12eHdvcmstcHBjLmFkcywgcy12eHdvcmstc3BhcmN2OS5hZHMsIHMtdnh3b3JrLXhzY2FsZS5hZHMsCglzeW1ib2xzLXZtcy5hZGIsIHN5c3RlbS1haXguYWRzLCBzeXN0ZW0tZnJlZWJzZC14ODYuYWRzLAoJc3lzdGVtLWhwdXguYWRzLCBzeXN0ZW0taW50ZXJpeC5hZHMsIHN5c3RlbS1pcml4LW4zMi5hZHMsCglzeXN0ZW0taXJpeC1vMzIuYWRzLCBzeXN0ZW0tbGludXgteDg2XzY0LmFkcywKCXN5c3RlbS1saW51eC14ODYuYWRzLCBzeXN0ZW0tbHlueG9zLXBwYy5hZHMsIHN5c3RlbS1seW54b3MteDg2LmFkcywKCXN5c3RlbS1taW5ndy5hZHMsIHN5c3RlbS1vczIuYWRzLCBzeXN0ZW0tc29sYXJpcy1zcGFyYy5hZHMsCglzeXN0ZW0tc29sYXJpcy1zcGFyY3Y5LmFkcywgc3lzdGVtLXNvbGFyaXMteDg2LmFkcywgc3lzdGVtLXRydTY0LmFkcywKCXN5c3RlbS11bml4d2FyZS5hZHMsIHN5c3RlbS12bXMuYWRzLCBzeXN0ZW0tdm1zLXpjeC5hZHMsCglzeXN0ZW0tdnh3b3Jrcy1hbHBoYS5hZHMsIHN5c3RlbS12eHdvcmtzLW02OGsuYWRzLAoJc3lzdGVtLXZ4d29ya3MtbWlwcy5hZHMsIHN5c3RlbS12eHdvcmtzLXBwYy5hZHMsCglzeXN0ZW0tdnh3b3Jrcy1zcGFyY3Y5LmFkcywgc3lzdGVtLXZ4d29ya3MteHNjYWxlLmFkczogUmVwbGFjZSBmaWxlcwoJYWJvdmUuCgoyMDA0LTA1LTEzICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogdHJhbnMuYyAoZ25hdF9zdGFiaWxpemVfcmVmZXJlbmNlXzEpOiBSZW1vdmUgY2FzZSAnYicuCgoyMDA0LTA1LTEzICBEaWVnbyBOb3ZpbGxvICA8ZG5vdmlsbG9AcmVkaGF0LmNvbT4KCglNZXJnZSBmcm9tIHRyZWUtc3NhLTIwMDIwNjE5LWJyYW5jaC4KCgkqIGNvbmZpZy1sYW5nLmluIChib290X2xhbmd1YWdlLCBidWlsZF9ieV9kZWZhdWx0KTogU2V0Cgl0byBuby4KCSogdXRpbHMuYyAodW5jaGVja2VkX2NvbnZlcnQpOiBVc2UgT0VQX09OTFlfQ09OU1QuCgkobWF4X3NpemUpOiBBZGQgc3RhdGljIGNoYWluIG9wIGZvciBjYWxsX2V4cHIuCgoyMDA0LTA1LTEyICBSaWNoYXJkIFNhbmRpZm9yZCAgPHJzYW5kaWZvQHJlZGhhdC5jb20+CgoJUFIgdGFyZ2V0LzE1MzMxCgkqIDVnbWFzdG9wLmFkYiAoUm9mZik6IENob29zZSBiZXR3ZWVuICc0JyBhbmQgJzAnLCBub3QgJzQnIGFuZCAnICcuCgoyMDA0LTA1LTExICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIHV0aWxzLmMgKG1heF9zaXplKTogVXNlIE1JTl9FWFBSIHRvIGZpbmQgdGhlIG1pbmltdW0gdmFsdWUgb2YgYQoJQ09ORF9FWFBSLgoKMjAwNC0wNS0xMCAgRG91ZyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIDVxc3lzdGVtLmFkczogUmVtb3ZlIFNob3J0X0FkZHJlc3Mgc3VidHlwZSBkZWNsYXJhdGlvbi4gTW92ZWQgdG8KCXN5c3RlbS5hdXhfZGVjLgoKCSogcy1hdXhkZWMuYWRzOiBBZGQgU2hvcnRfQWRkcmVzcyBzdWJ0eXBlIChtb3ZlZCBoZXJlIGZyb20gU3lzdGVtKS4KCgkqIE1ha2VmaWxlLmluOiBbVk1TXTogQWRkIHRyYW5zbGF0aW9uIGZvciA1cWF1eGRlYy5hZHMuCgoJKiBpbml0LmM6IFtWTVNdIE1hY3JvaXplIExJQiQgY2FsbHMgZm9yIElBNjQgYW5kIEFscGhhLgoJRml4ZXMgdW5kZWZpbmVkIHN5bWJvbHMgaW4gSUE2NCBnbmF0bGliLgoKCSogNXZpbm1hb3AuYWRiOiBSZWZlcmVuY2Ugcy1hdXhkZWMgZm9yIFNob3J0X0FkZHJlc3MuCgoJKiA1eHN5c3RlbS5hZHMsIDV2c3lzdGVtLmFkczogQmFjayBvdXQgbGFzdCBjaGFuZ2UgKGFkZGl0aW9uIG9mIHN1YnR5cGUKCVNob3J0X0FkZHJlc3MpLiBUaGlzIHdpbGwgYmUgbW92ZWQgdG8gc3lzdGVtLmF1eGRlYy4KCjIwMDQtMDUtMTAgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV91dGlsLmFkYjogUmVwbGFjZSB0ZXN0IGZvciBwcmVzZW5jZSBvZiBhIG5vZGUgdGhhdCBpcyBhbHdheXMKCXByZXNlbnQgd2l0aCBhIGNhbGwgdG8gRGlzY2FyZF9Ob2RlLgoKCSogc2VtX2NoMTAuYWRiIChBbmFseXplX0NvbXBpbGF0aW9uX1VuaXQpOiBSZW1vdmUgc3VwZXJmbHVvdXMgY2FsbCB0bwoJQW5hbHl6ZSBvbiB0aGUgbGlicmFyeSB1bml0IG5vZGUgYWZ0ZXIgZ2VuZXJhdGlvbiBvZiBkaXN0cmlidXRpb24gc3R1YgoJY29uc3RydWN0cy4gIFRoZSBjYWxsIHdhcyBhIG5vLW9wIGJlY2F1c2UgVW5pdF9Ob2RlIGhhcyBhbHJlYWR5IGJlZW4KCUFuYWx5emVkLCBhbmQgdGhlIHRyZWUgZnJhZ21lbnRzIGZvciB0aGUgZGlzdHJpYnV0aW9uIHN0dWJzIGFyZQoJYW5hbHl6ZWQgYXMgdGhleSBhcmUgaW5zZXJ0ZWQgaW4gRXhwX0Rpc3QuCglVcGRhdGUgY29tbWVudCByZWdhcmRpbmcgdG8gZGlzdHJpYnV0aW9uIHN0dWJzIHRvIHJlZmxlY3QgdGhhdCB3ZQoJZG8gbm90IGdlbmVyYXRlIHN0dWIgaW4gc2VwYXJhdGUgZmlsZXMgYW55bW9yZS4KCgkqIGVpbmZvLmFkczogQ2xhcmlmeSB0aGUgZmFjdCB0aGF0IGEgdGFnZ2VkIHByaXZhdGUgdHlwZSBoYXMgdGhlCglFX1JlY29yZF9UeXBlX1dpdGhfUHJpdmF0ZSBFa2luZC4KCgkqIGVycm91dGMuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGVycm91dGMuYWRzIChNYXhfTXNnX0xlbmd0aCk6IEluY3JlYXNlIHRvIGNvdmVyIHBvc3NpYmxlIGxhcmdlcgoJdmFsdWVzIGlmIGxpbmUgbGVuZ3RoIGlzIGluY3JlYXNlZCB1c2luZyAtZ25hdHlNIChub3RpY2VkIGR1cmluZyBjb2RlCglyZWFkaW5nKS4KCgkqIGV2YWxfZmF0LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglQdXQgc3BhY2VzIGFyb3VuZCBleHBvbmVudGlhdGlvbiBvcGVyYXRvcgoKMjAwNC0wNS0xMCAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCVBSIGFkYS8xNTAwNQoJKiBzZW1fdXRpbC5hZGIgKElzX0RlcGVuZGVudF9Db21wb25lbnRfT2ZfTXV0YWJsZV9PYmplY3QpOiBJZiBwcmVmaXgKCWhhcyBiZWVuIHJld3JpdHRlbiBhcyBhbiBleHBsaWNpdCBkZXJlZmVyZW5jZSwgcmV0cmlldmUgdHlwZSBvZgoJb3JpZ2luYWwgbm9kZSB0byBjaGVjayBmb3IgcG9zc2libHkgdW5jb25zdHJhaW5lZCByZWNvcmQgdHlwZS4KCjIwMDQtMDUtMTAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDcuYWRiIChDaGVja19WaXNpYmx5X0NvbnRyb2xsZWQpOiBJZiBnaXZlbiBvcGVyYXRpb24gaXMgbm90CglvdmVycmlkaW5nLCB1c2UgdGhlIG9wZXJhdGlvbiBvZiB0aGUgcGFyZW50IHVuY29uZGl0aW9uYWxseS4KCgkqIHNlbV9jaDQuYWRiIChSZW1vdmVfQWRkcmVzc19JbnRlcnByZXRhdGlvbnMpOiBSZW1vdmUgYWRkcmVzcwoJb3BlcmF0aW9uIHdoZW4gZWl0aGVyIG9wZXJhbmQgaXMgYSBsaXRlcmFsLCB0byBhdm9pZCBmdXJ0aGVyCglhbWJpZ3VpdGllcy4KCgkqIHNlbV9jaDYuYWRiIChOZXdfT3ZlcmxvYWRlZF9FbnRpdHkpOiBJZiBuZXcgZW50aXR5IGlzIGluaGVyaXRlZCBhbmQKCW92ZXJyaWRkZW4gYnkgYSBwcmV2aW91cyBleHBsaWNpdCBkZWNsYXJhdGlvbiwgbWFyayB0aGUgcHJldmlvdXMgZW50aXR5CglhcyBvdmVycmlkaW5nLgoKCSogc2VtX2Rpc3AuYWRiIChDaGVja19EaXNwYXRjaGluZ19PcGVyYXRpb24pOiBOZXcgcHJlZGljYXRlCglJc19WaXNpYmx5X0NvbnRyb2xsZWQsIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZGVjbGFyYXRpb24gb2YgYQoJcHJpbWl0aXZlIGNvbnRyb2wgb3BlcmF0aW9uIGZvciBhIGRlcml2ZWQgdHlwZSBvdmVycmlkZXMgYW4gaW5oZXJpdGVkCglvbmUuIEFkZCB3YXJuaW5nIGlmIHRoZSBleHBsaWNpdCBkZWNsYXJhdGlvbiBkb2VzIG5vdCBvdmVycmlkZS4KCjIwMDQtMDUtMTAgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ25hdGxzLmFkYiAoR25hdGxzKTogSW5pdGlhbGl6ZSBTbmFtZXMsIHRvIGF2b2lkIGFzc2VydGlvbiBlcnJvciBpbgoJc29tZSBjYXNlcyB3aGVuIHRoZSBzb3VyY2VzIGFyZSBubyBsb25nZXIgcHJlc2VudC4KCgkqIG1ha2UuYWRiIChDb2xsZWN0X0FyZ3VtZW50cyk6IEZhaWwgaWYgYW4gZXh0ZXJuYWwgc291cmNlLCBub3QgcGFydAoJb2YgYW55IHByb2plY3QgbmVlZCB0byBiZSBjb21waWxlZCwgd2hlbiBzd2l0Y2ggLXggaGFzIG5vdCBiZWVuCglzcGVjaWZpZWQuCgoJKiBtYWtldXNnLmFkYjogRG9jdW1lbnQgbmV3IHN3aXRjaCAteAoKCSogb3B0LmFkcyAoRXh0ZXJuYWxfVW5pdF9Db21waWxhdGlvbl9BbGxvd2VkKTogTmV3IEJvb2xlYW4gZmxhZywKCWRlZmF1bHRlZCB0byBGYWxzZS4KCgkqIHN3aXRjaC1tLmFkYiAoU2Nhbl9NYWtlX1N3aXRjaGVzKTogTmV3IHN3aXRjaCAteAoKCSogdm1zX2RhdGEuYWRzOiBBZGQgVk1TIHF1YWxpZmllciAvTk9OX1BST0pFQ1RfVU5JVF9DT01QSUxBVElPTiBmb3IKCWduYXRtYWtlIHN3aXRjaCAteC4KCgkqIGduYXRfdWduLnRleGk6IERvY3VtZW50IG5ldyBnbmF0bWFrZSBzd2l0Y2ggLXgKCjIwMDQtMDUtMTAgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgkqIG1pc2MuYyAoZ25hdF9pbml0X29wdGlvbnMpOiBTZXQgZmxhZ196ZXJvX2luaXRpYWxpemVkX2luX2JzcyB0byAwLgoKCSogdXRpbHMuYyAoY3JlYXRlX3Zhcl9kZWNsKTogRG8gbm90IG1vZGlmeSB0aGUgREVDTF9DT01NT04gZmxhZy4KCShwcm9jZXNzX2F0dHJpYnV0ZXMpOiBMaWtld2lzZS4KCjIwMDQtMDUtMTAgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogcy1pbm1hb3AuYWRzOiBGaXggc3BlbGxpbmcgbWlzdGFrZSBpbiBvbmUgb2YgdGhlIGNvbW1lbnRzLgoKMjAwNC0wNS0xMCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBnbmF0X3Vnbi50ZXhpOiBEb2N1bWVudCB0aGF0IGZvciBjb25maWcgcHJhZ21hIGZpbGVzLCB0aGUgbWF4aW11bQoJbGluZSBsZW5ndGggaXMgYWx3YXlzIDMyNzY3LgoKCSogZ25hdF9ybS50ZXhpOiBGb3IgcHJhZ21hIEVsaW1pbmF0ZSwgbm90ZSB0aGF0IGNvbmNhdGVuYXRpb24gb2Ygc3RyaW5nCglsaXRlcmFscyBpcyBub3cgYWxsb3dlZC4KCgkqIGduYXQtc3R5bGUudGV4aTogUmVtb3ZlIHN0YXRlbWVudCBhYm91dCBzcGxpdHRpbmcgbG9uZyBsaW5lcyBiZWZvcmUKCWFuIG9wZXJhdG9yIHJhdGhlciB0aGFuIGFmdGVyLCBzaW5jZSB3ZSBkbyBub3QgZm9sbG93IHRoaXMgcnVsZSBhdCBhbGwuCglDbGFyaWZ5IHJ1bGUgKHJlYWxseSBsYWNrIG9mIHJ1bGUpIGZvciBzcGFjZXMgYXJvdW5kIGV4cG9uZW50aWF0aW9uCgoJKiBzZW1fZWxpbS5hZGI6IEFsbG93IGNvbmNhdGVuYXRpb24gb2Ygc3RyaW5nIGxpdGVyYWxzIGFzIHdlbGwgYXMgYQoJc2luZ2xlIHN0cmluZyBsaXRlcmFsIGZvciBwcmFnbWEgYXJndW1lbnRzLgoKCSogc2VtX3ByYWcuYWRzLCBzZW1fcHJhZy5hZGI6IChJc19Db25maWdfU3RhdGljX1N0cmluZyk6IE5ldyBmdW5jdGlvbgoKCSogYS10ZXh0aW8uYWRiIChUZXJtaW5hdGVfTGluZSk6IERvIG5vdCBhZGQgbGluZSBmZWVkIGlmIG5vdGhpbmcKCXdyaXR0ZW4gZm9yIGFwcGVuZCBjYXNlLgoKCSogZnJvbnRlbmQuYWRiOiBDaGFuZ2VzIHRvIGF2b2lkIGNoZWNraW5nIG1heCBsaW5lIGxlbmd0aCBpbiBjb25maWcKCXByYWdtYSBmaWxlcy4KCgkqIGctb3NfbGliLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBtbGliLXV0bC5hZGI6IERvIG5vdCBkZWZpbmUgTWF4X0xpbmVfTGVuZ3RoIGxvY2FsbHkgKGRlZmluaXRpb24gd2FzCgl3cm9uZyBpbiBhbnkgY2FzZS4gSW5zdGVhZCB1c2Ugc3RhbmRhcmQgdmFsdWUuIE5vdGljZWQgZHVyaW5nIGNvZGUKCXJlYWRpbmcuCgoJKiBvcHQuYWRzIChNYXhfTGluZV9MZW5ndGgpOiBOZXcgZmllbGQsIHVzZWQgdG8gaW1wbGVtZW50IHJlbW92YWwgb2YKCWxpbWl0YXRpb24gb24gbGVuZ3RoIG9mIGxpbmVzIHdoZW4gc2Nhbm5pbmcgY29uZmlnIHByYWdtYSBmaWxlcy4KCgkqIG9zaW50LmFkcywgcHJqLWRlY3QuYWRiLCBwcmotc3RydC5hZGIsIHByai10cmVlLmFkYiwKCW1ha2V1dGwuYWRzLCBtYWtldXRsLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzY24uYWRiOiBEbyBub3QgY2hlY2sgbGluZSBsZW5ndGggd2hpbGUgc2Nhbm5pbmcgY29uZmlnIHByYWdtYSBmaWxlcwoJRG8gbm90IGNoZWNrIGxpbmUgbGVuZ3RoIHdoaWxlIHNjYW5uaW5nIG91dCBsaWNlbnNlIGluZm9ybWF0aW9uCgoJKiBzY25nLmFkYjogQ2hhbmdlcyB0byBhdm9pZCBsaW5lIGxlbmd0aCBjaGVja3Mgd2hpbGUgcGFyc2luZyBjb25maWcKCXByYWdtYSBmaWxlcy4KCjIwMDQtMDUtMTAgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDQtMDUtMDUgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogb3NpbnQuYWRiIChGaW5kX1Byb2dyYW1fTmFtZSk6IEZpeCBoYW5kbGluZyBvZiBWTVMgdmVyc2lvbgoJbnVtYmVyLgoKMjAwNC0wNS0wNSAgRW1tYW51ZWwgQnJpb3QgIDxicmlvdEBhY3QtZXVyb3BlLmZyPgoKCSogZy1vc19saWIuYWRzIChJbnZhbGlkX1RpbWUpOiBOZXcgY29uc3RhbnQKCgkqIGFkYWludC5oLCBhZGFpbnQuYyAoX19nbmF0X2ZpbGVfdGltZV9uYW1lLCBfX2duYXRfZmlsZV90aW1lX2ZkKTogTm93CglyZXR1cm4gT1NfVGltZSBpbnN0ZWFkIG9mIHRpbWVfdCB0byBtYXRjaCB3aGF0IGlzIGltcG9ydGVkIGJ5IEFkYS4KCU5vdyByZXR1cm4gLTEgaWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCwgaW5zdGVhZCBvZiBhIHJhbmRvbSB2YWx1ZQoKMjAwNC0wNS0wNSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiB1c2FnZS5hZGI6IEFkZCBsaW5lIGZvciAtZ25hdFI/cyBzd2l0Y2gKCgkqIHNlbV9jaDEzLmFkYiwgZXhwX2NoMi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZy1yZWdwYXQuYWRzLCBnLXJlZ3BhdC5hZGI6IEFkZCBkb2N1bWVudGF0aW9uIG9uIGhhbmRsaW5nIG9mIFNpemUKCWFuZCBmb3IgTWF0Y2ggKERhdGFfRmlyc3QsIERhdGFfbGFzdCkKCgkqIGxpYi13cml0LmFkYiAoV3JpdGVfV2l0aF9MaW5lcyk6IEVuc3VyZSB0aGF0IGNvcnJlY3QgaW5kZXggbnVtYmVyIGlzCgl3cml0dGVuIHdoZW4gd2UgYXJlIGRlYWxpbmcgd2l0aCBtdWx0aS11bml0IGZpbGVzLgoKMjAwNC0wNS0wNSAgSmVyb21lIEd1aXR0b24gIDxndWl0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIHVudXNlZCB0YXJnZXRzIGFuZCB2YXJpYWJsZXMuCgoyMDA0LTA1LTA1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHN3aXRjaC1tLmFkYjogTmV3IGduYXRtYWtlIHN3aXRjaCAtZUkKCgkqIHZtc19kYXRhLmFkczogQWRkIFZNUyBlcXVpdmFsZW50cyBvZiBuZXcgZ25hdGNsZWFuIHN3aXRoIC1pbm5uIGFuZAoJb2YgbmV3IGduYXRtYWtlIHN3aXRjaCAtZUlubm4uCgoJKiBtYWtlZ3ByLmFkYjogVGFrZSBpbnRvIGFjY291bnQgbmV3IHBhcmFtZXRlcnMgSW5kZXggYW5kIFNyY19JbmRleCBpbgoJUHJqLlV0aWwuCgoJKiBjbGVhbi5hZGI6IEltcGxlbWVudCBzdXBwb3J0IGZvciBtdWx0aS11bml0IHNvdXJjZXMsIGluY2x1ZGluZyBuZXcKCXN3aXRjaCAtaS4KCgkqIGduYXRjbWQuYWRiIChHTkFUQ21kKTogQ2FsbCBQcmouVXRpbC5WYWx1ZV9PZiB3aXRoIG5ldyBwYXJhbWV0ZXIKCVNyY19JbmRleC4KCgkqIG1ha2UuYWRzLCBtYWtlLmFkYiAoSW5zZXJ0X1EpOiBOZXcgcGFyYW1ldGVyIEluZGV4LCBkZWZhdWx0ZWQgdG8gMAoJKEV4dHJhY3RfRnJvbV9RKTogTmV3IG91dCBwYXJhbWV0ZXIgSW5kZXgKCShNYXJrLCBJc19NYXJrZWQpOiBTdWJwcm9ncmFtcyBtb3ZlZCB0byBNYWtldXRsCgkoU3dpdGNoZXNfT2YpOiBOZXcgcGFyYW1ldGVyIFNvdXJjZV9JbmRleAoJKEFkZF9Td2l0Y2gpOiBOZXcgcGFyYW1ldGVyIEluZGV4CgkoQ2hlY2spOiBOZXcgcGFyYW1ldGVyIFNvdXJjZV9JbmRleAoJKENvbGxlY3RfQXJndW1lbnRzKTogTmV3IHBhcmFtZXRlciBTb3VyY2VfSW5kZXgKCShDb2xsZWN0X0FyZ3VtZW50c19BbmRfQ29tcGlsZSk6IE5ldyBwYXJhbWV0ZXIgU291cmNlX0luZGV4CgkoQ29tcGlsZSk6IE5ldyBwYXJhbWV0ZXIgU291cmNlX0luZGV4CglQdXQgc3VicHJvZ3JhbXMgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCglBZGQgc3VwcG9ydCBmb3IgbXVsdGktc291cmNlIHNvdXJjZXMsIGluY2x1ZGluZyBpbiBwcm9qZWN0IGZpbGVzLgoKCSogbWFrZXV0bC5hZHMsIG1ha2V1dGwuYWRiIChVbml0X0luZGV4X09mKTogTmV3IGZ1bmN0aW9uCgkoTWFyaywgSXNfTWFya2VkLCBEZWxldGVfQWxsX01hcmtzKTogTmV3IHN1YnByb2dyYW1zLCBtb3ZlZCBmcm9tCglNYWtlLgoKCSogbWFrZXVzZy5hZGI6IE5ldyBnbmF0bWFrZSBzd2l0Y2ggLWVJbm5uCgoJKiBtbGliLXByai5hZGIgKEJ1aWxkX0xpYnJhcnkpOiBBZGQgbmV3IHBhcmFtZXRlciBTcmNfSW5kZXggdG8gY2FsbCB0bwoJUHJqLlV0aWwuVmFsdWVfT2YuCgoJKiBvcHQuYWRzIChNYWluX0luZGV4KTogTmV3IHZhcmlhYmxlLCBkZWZhdWx0ZWQgdG8gMC4KCgkqIG9zaW50LmFkcywgb3NpbnRlLmFkYiAoQWRkX0ZpbGUpOiBOZXcgcGFyYW1ldGVyIEluZGV4CgkoQ3VycmVudF9Tb3VyY2VfSW5kZXgpOiBOZXcgZnVuY3Rpb24KCgkqIHByai5hZGI6IFRha2UgaW50byBhY2NvdW50IG5ldyBjb21wb25lbnRzIEluZGV4IGFuZCBTcmNfSW5kZXgKCgkqIHByai5hZHMgKFN0cmluZ19FbGVtZW50KTogTmV3IGNvbXBvbmVudCBJbmRleAoJKFZhcmlhYmxlX1ZhbHVlKTogTmV3IGNvbXBvbmVudCBJbmRleAoJKEFycmF5X0VsZW1lbnQpOiBOZXcgY29tcG9uZW50IFNyY19JbmRleAoKCSogcHJqLWF0dHIuYWRiOiBJbmRpY2F0ZSB0aGF0IG9wdGlvbmFsIGluZGV4IG1heSBiZSBzcGVjaWZpZWQgZm9yCglhdHRyaWJ1dGVzIE1haW4sIEV4ZWN1dGFibGUsIFNwZWMsIEJvZHkgYW5kIHNvbWUgb2YgU3dpdGNoZXMuCgoJKiBwcmotYXR0ci5hZHMgKEF0dHJpYnV0ZV9LaW5kKTogTmV3IHZhbHVlcyBmb3Igb3B0aW9uYWwgaW5kZXhlcwoJKEF0dHJpYnV0ZV9SZWNvcmQpOiBOZXcgY29tcG9uZW50IE9wdGlvbmFsX0luZGV4CgoJKiBwcmotY29tLmFkcyAoRmlsZV9OYW1lX0RhdGEpOiBOZXcgY29tcG9uZW50IEluZGV4CgoJKiBwcmotZGVjdC5hZGIgKFBhcnNlX0F0dHJpYnV0ZV9EZWNsYXJhdGlvbik6IFByb2Nlc3Mgb3B0aW9uYWwgaW5kZXgKCgkqIHByai1lbnYuYWRiIChQdXQpOiBPdXRwdXQgb3B0aW9uYWwgaW5kZXgKCgkqIHByai1tYWtyLmFkYjogUHV0IGluZGV4ZXMgZm9yIG11bHRpLXVuaXQgc291cmNlcyBpbiBTRk4gcHJhZ21hcyBhbmQKCWF0dHJpYnV0ZXMgU3BlYyBhbmQgQm9keS4KCgkqIHByai1ubXNjLmFkYjogUHJvY2VzcyBvcHRpb25hbCBpbmRleGVzCgoJKiBwcmotcHAuYWRiOiBPdXB1dCAiYXQiIGZvciBvcHRpb25hbCBpbmRleGVzCgoJKiBwcmotcHJvYy5hZGI6IFRha2UgaW50byBhY2NvdW50IG9wdGlvbmFsIGluZGV4ZXMKCgkqIHByai1zdHJ0LmFkcywgcHJqLXN0cnQuYWRiIChUZXJtcyk6IE5ldyBCb29sZWFuIHBhcmFtZXRlcgoJT3B0aW9uYWxfSW5kZXguIEZvciBzdHJpbmcgbGl0ZXJhbCwKCXByb2Nlc3Mgb3B0aW9uYWwgaW5kZXggd2hlbiBPcHRpb25hbF9JbmRleCBpcyBUcnVlLgoJKFBhcnNlX0V4cHJlc2lvbik6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBPcHRpb25hbF9JbmRleAoKCSogcHJqLXRyZWUuYWRzLCBwcmotdHJlZS5hZGIgKFNvdXJjZV9JbmRleF9PZik6IE5ldyBmdW5jdGlvbgoJKFNldF9Tb3VyY2VfSW5kZXhfT2YpOiBOZXcgcHJvY2VkdXJlCgoJKiBwcmotdXRpbC5hZGIgKEV4ZWN1dGFibGVfT2YsIFZhbHVlX09mKTogVGFrZSBpbnRvIGFjY291bnQgb3B0aW9uYWwKCWluZGV4LgoKCSogcHJqLXV0aWwuYWRzIChFeGVjdXRhYmxlX09mKTogTmV3IHBhcmFtZXRlciBJbmRleAoJKFZhbHVlX09mIChOYW1lX0lkLCBBcnJheV9FbGVtZW50X0lkKSByZXR1cm5pbmcgVmFyaWFibGVfVmFsdWUpOgoJTmV3IHBhcmFtZXRlciBTcmNfSW5kZXgsIGRlZmF1bHRlZCB0byAwLgoKMjAwNC0wNS0wNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCVBSIGFkYS8xNTI1NwoJKiBzZW1fY2gzLmFkYiAoQWNjZXNzX0RlZmluaXRpb24pOiBJZiB0aGlzIGlzIGFuIGFjY2VzcyBwYXJhbWV0ZXIKCXdob3NlIGRlc2lnbmF0ZWQgdHlwZSBpcyBpbXBvcnRlZCB0aHJvdWdoIGEgbGltaXRlZF93aXRoIGNsYXVzZSwgZG8KCW5vdCBhZGQgdGhlIGVuY2xvc2luZyBzdWJwcm9ncmFtIHRvIHRoZSBsaXN0IG9mIHByaXZhdGUgZGVwZW5kZW50cyBvZgoJdGhlIHR5cGUuCgoyMDA0LTA1LTA1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJUFIgYWRhLzE1MjU4CgkqIHNlbV9jaDYuYWRiIChCYXNlX1R5cGVzX01hdGNoKTogVHJ1ZSBpZiBvbmUgdHlwZSBpcyBpbXBvcnRlZCB0aHJvdWdoCglhIGxpbWl0ZWRfd2l0aCBjbGF1c2UsIGFuZCB0aGUgb3RoZXIgaXMgaXRzIG5vbi1saW1pdGVkIHZpZXcuCgoyMDA0LTA1LTA1ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBjc3RhbmQuYWRiIChDcmVhdGVfU3RhbmRhcmQpOiBJbml0aWFsaXplIFN0YW5kLkJvb2xlYW5fTGl0ZXJhbHMuCgoJKiBleHBfYXR0ci5hZGIsIGV4cF9jaDUuYWRiLCBleHBfY2g5LmFkYiwgZXhwX2Rpc3AuYWRiLAoJZXhwX2ZpeGQuYWRiLCBzZW1fYXR0ci5hZGIsIHNlbV9kaXN0LmFkYiwgc2VtX3V0aWwuYWRiOiBVc2UKCVN0YW5kLkJvb2xlYW5fTGl0ZXJhbHMgdG8gcHJvZHVjZSByZWZlcmVuY2VzIHRvIGVudGl0aWVzCglTdGFuZGFyZF9GYWxzZSBhbmQgU3RhbmRhcmRfVHJ1ZSBmcm9tIGNvbXBpbGUtdGltZSBjb21wdXRlZCBib29sZWFuCgl2YWx1ZXMuCgoJKiBzdGFuZC5hZHMgKEJvb2xlYW5fTGl0ZXJhbHMpOiBOZXcgdmFyaWFibGUsIHByb3ZpZGVzIHRoZSBlbnRpdHkKCXZhbHVlcyBmb3IgRmFsc2UgYW5kIFRydWUsIGZvciB1c2UgYnkgdGhlIGV4cGFuZGVyLgoKMjAwNC0wNS0wNSAgRG91ZyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIDV2aW5tYW9wLmFkYiwgNVt2eF1zeXN0ZW0uYWRzOiBBZGQgU2hvcnRfQWRkcmVzcyBzdWJ0eXBlCgk1dmlubWFvcC5hZGI6IFVuY2hlY2tlZCBjb252ZXJ0IFNob3J0X0FkZHJlc3MgdmljZSBBZGRyZXNzCgoJKiBhZGFpbnQuYywgcmFpc2UuYzogQ2FzdGUgQ1JUTCBmdW5jdGlvbiByZXR1cm4gdmFsdWUKCXRvIGF2b2lkIGdjYyBlcnJvciBvbiAzMi82NCBiaXQgSVZNUy4KCgkqIE1ha2VmaWxlLmluIFtWTVNdOiBVc2UgaWFyIGFyY2hpdmVyIGlmIGhvc3QgPSBBbHBoYS9WTVMgYW5kCgl0YXJnZXQgPSBJQTY0L1ZNUy4KCgkqIGluaXQuY1tWTVNdOiBPbmx5IGNhbGwgQWxwaGEgc3BlY2lmaWMgX19nbmF0X2Vycm9yX3ByZWhhbmRsZXIgSU5fUlRTLgoKCSogNXFzeXN0ZW0uYWRzIChBZGRyZXNzKTogRGVjbGFyZSBhcyBMb25nX0ludGVnZXIKCShTaG9ydF9BZGRyZXNzKTogRGVjbGFyZSBhcyAzMiBiaXQgc3VidHlwZSBvZiBBZGRyZXNzCglEZWNsYXJlICBhYnN0cmFjdCBhZGRyZXNzIG9wZXJhdGlvbnMgdG8gYXZvaWQgZ3JhdHVpdG91cyBhbWJpZ3VpdGllcy4KCjIwMDQtMDUtMDUgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRfcm0udGV4aTogVXNlIHRoZSBuZXcgcmVzdHJpY3Rpb24gU2ltcGxlX0JhcnJpZXJzIChBSS0yNDkpCglpbnN0ZWFkIG9mIHRoZSBvbGQgQm9vbGVhbl9FbnRyeV9CYXJyaWVycy4KCURpdHRvIGZvciBOb19UYXNrX0F0dHJpYnV0ZXNfUGFja2FnZSBpbnN0ZWFkIG9mIE5vX1Rhc2tfQXR0cmlidXRlcy4KCjIwMDQtMDUtMDUgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDQtMDUtMDMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogNTBzeXN0ZW0uYWRzLCA1OXN5c3RlbS5hZHMsIHMtdGhyZWFkLmFkczogUmVtb3ZlZCwgbm8gbG9uZ2VyIHVzZWQuCgoyMDA0LTA1LTAzICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJUFIgYWRhLzE1MTUyCgkqIGV4cF9jaDIuYWRiIChFeHBhbmRfQ3VycmVudF9WYWx1ZSk6IExlYXZlIE1hY2hpbmVfQ29kZSBBc20gYXJndW1lbnRzCglhbG9uZS4gUmVwbGFjaW5nIG9iamVjdCByZWZlcmVuY2VzIGJ5IGxpdGVyYWxzIGlzIGluYXBwcm9wcmlhdGUgaW4gYQoJc28gbG93IGxldmVsIGNvbnRleHQuCgoyMDA0LTA1LTAzICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGEtZXhleHByLmFkYjogQWRkIGNvbW1lbnRzCgoyMDA0LTA1LTAzICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIGEtdGFncy5hZGIgKFRhZ19UYWJsZSk6IEFkZCBJbmRleF9DaGVjayBwcmFnbWEgU3VwcHJlc3MuIEFsbG93cyB1cyB0bwoJZGVjbGFyZSB0aGUgQW5jZXN0b3JfVGFncyBhcnJheSBpbiBUeXBlX1NwZWNpZmljX0RhdGEgd2l0aCBhIHNtYWxsIHNpemUKCXdpdGhvdXQgcmlza2luZyBhIGJvdW5kcyBjaGVjayBlcnJvciB3aGVuIGFjY2Vzc2luZyBvbmUgb2YgaXRzCgljb21wb25lbnRzLgoJKFR5cGVfU3BlY2lmaWNfRGF0YSk6IERlZmluZSBBbmNlc3Rvcl9UYWdzIGFzIGEgc21hbGwgYXJyYXkuCglUaGlzIHByZXZlbnRzIHVzIGZyb20gaGl0dGluZyBhIGxpbWl0YXRpb24gZHVyaW5nIHRoZSBkZWJ1ZyBpbmZvCglnZW5lcmF0aW9uIHdoZW4gdXNpbmcgc3RhYnMuCgoJKiBhLXRhZ3MuYWRiIChEaXNwYXRjaF9UYWJsZSk6IERlZmluZSB0aGUgUHJpbXNfUHRyIGNvbXBvbmVudCBhcyBhCglzbWFsbCBhcnJheS4KCVRoaXMgcHJldmVudHMgdXMgZnJvbSBoaXR0aW5nIGEgbGltaXRhdGlvbiBkdXJpbmcgdGhlIGRlYnVnIGluZm8KCWdlbmVyYXRpb24gd2hlbiB1c2luZyBzdGFicy4KCjIwMDQtMDUtMDMgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCglsYW5nLXNwZWNzLmg6IFJlbW92ZSAtZ25hdHoqIGZyb20gc3BlY3MuCgoyMDA0LTA1LTAzICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGdwcm1ha2UuYWRiLCBtYWtlZ3ByLmFkcywgbWFrZWdwci5hZGI6IE5ldyBmaWxlcy4KCgkqIE1ha2UtbGFuZy5pbiwgTWFrZWZpbGUuaW46IEFkZCBncHJtYWtlCgoyMDA0LTA1LTAzICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fYWdnci5hZGI6IEZpeCB0eXBvIGluIGNvbW1lbnQuCgoyMDA0LTA1LTAzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIG1ha2UuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHJ0c2ZpbmQuYWRzLCBydHNmaW5kLmFkYjogKFJUVV9Mb2FkZWQpOiBOZXcgZnVuY3Rpb24KCgkqIHNlbV9hdHRyLmFkYiAoRXZhbF9BdHRyaWJ1dGUsIGNhc2UgVHlwZV9DbGFzcyk6IEZpeCBjaGVjayBmb3IgYWRkcmVzcwoJc28gdGhhdCBpdCB3b3JrcyB3aGVuIGFkZHJlc3MgaXMgbm90IGEgcHJpdmF0ZSB0eXBlLgoKCSogc2VtX2NoMTMuYWRiIChDaGVja19FeHByX0NvbnN0YW50cywgY2FzZSBOX0ludGVnZXJfTGl0ZXJhbCk6IERlYWwKCXByb3Blcmx5IHdpdGggcmV3cml0dGVuIHVuY2hlY2tlZCBjb252ZXJzaW9ucy4gVGhpcyBwcmV2ZW50cwoJb3JkZXItb2YtZWxhYm9yYXRpb24gaXNzdWVzIHRoYXQgY2FuIG90aGVyd2lzZSBhcmlzZS4KCShNaW5pbXVtX1NpemUpOiBEb24ndCBjaGVjayBzaXplIG9mIGFjY2VzcyB0eXBlcyB1bmRlciBWTVMKCgkqIHNlbV9jaDQuYWRiIChSZW1vdmVfQWRkcmVzc19JbnRlcnByZXRhdGlvbik6IE5ldyBjaXJjdWl0IHRvIHJlbW92ZQoJaW50ZXJwcmV0YXRpb25zIG9mIGludGVnZXIgbGl0ZXJhbHMgYXMgdHlwZSBTeXN0ZW0uQWRkcmVzcy4KCgkqIHNlbV91dGlsLmFkcywgc2VtX3V0aWwuYWRiIChJc19EZXNjZW5kZW50X09mX0FkZHJlc3MpOiBOZXcgZnVuY3Rpb24KCShJc19EZXNjZW5kZW50X09mKTogTmV3IGZ1bmN0aW9uCgoyMDA0LTA1LTAzICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fcHJhZy5hZGI6IEJvb2xlYW5fRW50cnlfQmFycmllcnMgaXMgYSBzeW5vbnltIG9mIFNpbXBsZV9CYXJyaWVycy4KCU1heF9FbnRyeV9RdWV1ZV9EZXB0aCBpcyBhIHN5bm9ueW0gb2YgTWF4X0VudHJ5X1F1ZXVlX0xlbmd0aC4KCU5vX0R5bmFtaWNfSW50ZXJydXB0cyBpcyBhIHN5bm9ueW0gb2YgTm9fRHluYW1pY19BdHRhY2htZW50LgoKCSogc2VtX3Jlcy5hZGI6IFVzZSB0aGUgbmV3IHJlc3RyaWN0aW9uIE1heF9FbnRyeV9RdWV1ZV9MZW5ndGggaW5zdGVhZAoJb2YgdGhlIG9sZCBNYXhfRW50cnlfUXVldWVfRGVwdGguCgoJKiBzbmFtZXMuYWRiOiBCb29sZWFuX0VudHJ5X0JhcnJpZXJzIGlzIGEgc3lub255bSBvZiBTaW1wbGVfQmFycmllcnMuCglNYXhfRW50cnlfUXVldWVfRGVwdGggaXMgYSBzeW5vbnltIG9mIE1heF9FbnRyeV9RdWV1ZV9MZW5ndGgKCU5vX0R5bmFtaWNfSW50ZXJydXB0cyBpcyBhIHN5bm9ueW0gb2YgTm9fRHluYW1pY19BdHRhY2htZW50CgoJKiBzbmFtZXMuYWRzOiBOZXcgZW50cnkgZm9yIHByb3BlciBoYW5kbGluZyBvZiBCb29sZWFuX0VudHJ5X0JhcnJpZXJzLgoJTmV3IGVudHJ5IGZvciBwcm9wZXIgaGFuZGxpbmcgb2YgTWF4X0VudHJ5X1F1ZXVlX0RlcHRoLgoJTmV3IGVudHJ5IGZvciBwcm9wZXIgaGFuZGxpbmcgb2YgTm9fRHluYW1pY19JbnRlcnJ1cHRzLgoKCSogcy1yaWRlbnQuYWRzOiBBZGRpbmcgcmVzdHJpY3Rpb24gU2ltcGxlX0JhcnJpZXJzIChBSS0wMDI0OSkgdGhhdAoJc3VwZXJzZWRlcyB0aGUgR05BVCBzcGVjaWZpYyByZXN0cmljdGlvbiBCb29sZWFuX0VudHJ5X0JhcnJpZXJzLgoJQWRkaW5nIHJlc3RyaWN0aW9uIE1heF9FbnRyeV9RdWV1ZV9MZW5ndGggKEFJLTAwMjQ5KSB0aGF0IHN1cGVyc2VkZXMKCXRoZSBHTkFUIHNwZWNpZmljIHJlc3RyaWN0aW9uIE1heF9FbnRyeV9RdWV1ZV9EZXB0aC4KCUFkZGluZyByZXN0cmljdGlvbiBOb19EeW5hbWljX0F0dGFjaG1lbnQgKEFJLTAwMjQ5KSB0aGF0IHN1cGVyc2VkZXMKCXRoZSBHTkFUIHNwZWNpZmljIHJlc3RyaWN0aW9uIE5vX0R5bmFtaWNfSW50ZXJydXB0cy4KCgkqIHJlc3RyaWN0LmFkcywgcmVzdHJpY3QuYWRiOiBVc2UgdGhlIG5ldyByZXN0cmljdGlvbiBTaW1wbGVfQmFycmllcnMKCWluc3RlYWQgb2YgdGhlIG9sZCBCb29sZWFuX0VudHJ5X0JhcnJpZXJzLgoJVXNlIHRoZSBuZXcgcmVzdHJpY3Rpb24gTm9fRHluYW1pY19BdHRhY2htZW50IGluc3RlYWQgb2YgdGhlIG9sZAoJTm9fRHluYW1pY19JbnRlcnJ1cHRzLgoKCSogZXhwX2NoOS5hZGI6IENoZWNrIHJlc3RyaWN0aW9uIFNpbXBsZV9CYXJyaWVycyAoQUktMDAyNDkpIHRoYXQKCXN1cGVyc2VkZXMgdGhlIEdOQVQgc3BlY2lmaWMgcmVzdHJpY3Rpb24gQm9vbGVhbl9FbnRyeV9CYXJyaWVycy4KCgkqIGduYXRiaW5kLmFkYjogVXNlIHRoZSBuZXcgcmVzdHJpY3Rpb24gTWF4X0VudHJ5X1F1ZXVlX0xlbmd0aCBpbnN0ZWFkCglvZiB0aGUgb2xkIE1heF9FbnRyeV9RdWV1ZV9EZXB0aC4KCjIwMDQtMDUtMDMgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDQtMDQtMjkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGNoZWNrcy5hZGIgKEVuYWJsZV9SYW5nZV9DaGVjayk6IElmIHRoZSBwcmVmaXggb2YgYW4gaW5kZXggY29tcG9uZW50CglpcyBhbiBhY2Nlc3MgdG8gYW4gdW5jb25zdHJhaW5lZCBhcnJheSwgcGVyZm9ybSBjaGVjayB1bmNvbmRpdGlvbmFsbHkuCgoyMDA0LTA0LTI5ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9maWVsZCk6IEFsc28gY2FsbCBtYWtlX3BhY2thYmxlX3R5cGUgaWYKCUNvbXBvbmVudF9DbGF1c2UuCgoyMDA0LTA0LTI5ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBpbml0LmMgKF9fZ25hdF9pbnN0YWxsX2hhbmRsZXIsIF9fZ25hdF9lcnJvcl9oYW5kbGVyKTogUmVtb3ZlCglhbHRlcm5hdGUgc3RhY2sgc2V0dGluZy4gVGhlcmUgd2FzIG5vIHN1cHBvcnQgZm9yIHRoZSB0YXNraW5nIGNhc2VzCglhbmQgdGhlIGNoYW5nZXMgZXZlbnR1YWxseSBjYXVzZWQgYSBudW1iZXIgb2Ygc2lkZS1lZmZlY3QgZmFpbHVyZXMgaW4KCXRoZSBub24tdGFza2luZyBjYXNlIHRvby4KCjIwMDQtMDQtMjkgIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCglsYW5nLXNwZWNzLmg6IFJlZGlyZWN0IG91dHB1dCB0byAvZGV2L251bGwgaWYgLWduYXRjIG9yIC1nbmF0eiBvcgoJLWduYXRzIGlzIHBhc3NlZC4KCjIwMDQtMDQtMjkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWFrZS5hZGIgKEduYXRtYWtlKTogSW5jcmVhc2UgbWF4IHNpemUgb2YgYXJndW1lbnQgYXJyYXkgZm9yCglnbmF0YmluZCBmb3IgdGhlIHBvdGVudGlhbCBhZGRpdGlvbiBvZiAtRi4KCUlmIHRoZXJlIGFyZSBTdGFuZC1BbG9uZSBMaWJyYXJ5IHByb2plY3RzLCBpbnZva2UgZ25hdGJpbmQgd2l0aCAtRiB0bwoJYmUgc3VyZSB0aGF0IGVsYWJvcmF0aW9uIGZsYWdzIHdpbGwgYmUgY2hlY2tlZC4KCgkqIHN3aXRjaC1jLmFkYjogQ29ycmVjdCBjYWxsIHRvIFNjYW5fUG9zIGZvciAtZ25hdGVJCgoyMDA0LTA0LTI5ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fd2Fybi5hZGIgKENoZWNrX1JlZmVyZW5jZXMpOiBNb3ZlICc8YWNjZXNzLXZhcmlhYmxlPiBtYXkgYmUKCW51bGwnIHdhcm5pbmcgb3V0IG9mIHVuZGVyIFdhcm5fT25fTm9fVmFsdWVfQXNzaWduZWQuCgoyMDA0LTA0LTI5ICBFZCBGYWxpcyAgPGZhbGlzQGduYXQuY29tPgoKCSogZ25hdF91Z24udGV4aTogRml4ZWQgdGV4aSBlcnJvcgoKMjAwNC0wNC0yOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fY2g0LmFkYiAoUmVtb3ZlX0Fic3RyYWN0X09wZXJhdGlvbnMpOiBVbmNvbmRpdGlvbmFsbHkgcmVtb3ZlCglhYnN0cmFjdCBvcGVyYXRpb25zIGlmIHRoZXkgY29tZSBmcm9tIHByZWRlZmluZWQgZmlsZXMuCgoJKiBnbmF0X3JtLnRleGk6IEZpeCBiYWQgZG9jIGZvciBwcmFnbWEgRWxhYm9yYXRpb25fQ2hlY2tzIChzaG91bGQgYmUKCUR5bmFtaWMsIG5vdCBSTSkuCgoJKiBzLWFkZG9wZS5hZGI6IENvcnJlY3Qgb2J2aW91cyBlcnJvciBpbiBtb2QgZnVuY3Rpb24KCjIwMDQtMDQtMjggIEFuZHJldyBXLiBSZXlub2xkcyAgPGF3cmV5bm9sZHNAbWFjLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgdGFyZ2V0IHBhaXJzIGZvciBwb3dlcnBjIGRhcndpbioKCXRhc2tpbmcgc3VwcG9ydC4KCgkqIGEtaW50bmFtLWRhcndpbi5hZHMsIHMtb3NpbnRlLWRhcndpbi5hZGIsCglzLW9zaW50ZS1kYXJ3aW4uYWRzLCBzeXN0ZW0tZGFyd2luLXBwYy5hZHM6IE5ldyBmaWxlcy4KCjIwMDQtMDQtMjggIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgdGFyZ2V0IG1hY3JvIGRlZmluaXRpb25zIGZvciBzMzkwKi1saW51eCouCgkqIHN5c3RlbS1saW51eC1zMzkwLmFkczogTmV3IGZpbGUuCgkqIHN5c3RlbS1saW51eC1zMzkweC5hZHM6IE5ldyBmaWxlLgoKMjAwNC0wNC0yOCAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBnbmF0X3Vnbi50ZXhpOiBDb3JyZWN0IGFyZ3VtZW50IHRvIEBzZXRmaWxlbmFtZS4KCjIwMDQtMDQtMjggIFVscmljaCBXZWlnYW5kICA8dXdlaWdhbmRAZGUuaWJtLmNvbT4KCgkqIGEtZXhleHByLmFkYiAoVW53aW5kX1dvcmQpOiBOZXcgZGF0YSB0eXBlLgoJKFVud2luZF9FeGNlcHRpb24pOiBVc2UgaXQgYXMgdHlwZSBvZiBQcml2YXRlMSBhbmQgUHJpdmF0ZTIuCgoJKiByYWlzZS5jIChkYl9hY3Rpb25fZm9yKTogRml4IGRlYnVnIHByaW50Zi4KCjIwMDQtMDQtMjcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGEtd3Rtb2lvLmFkczogRm9ybWFsIHR5cGUgbXVzdCBiZSBhIG1vZHVsYXIgdHlwZSwgbm90IGEgc2lnbmVkCglpbnRlZ2VyIHR5cGUuCgoyMDA0LTA0LTI3ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHksIGNhc2Ugb2JqZWN0KTogQ2FsbAoJX19idWlsdGluX3VwZGF0ZV9zZXRqbXBfYnVmLgoKCSogZ2lnaS5oICh1cGRhdGVfc2V0am1wX2J1Zik6IERlbGV0ZWQuCgkoQURUX3VwZGF0ZV9zZXRqbXBfYnVmX2RlY2wsIHVwZGF0ZV9zZXRqbXBfYnVmX2RlY2wpOiBOZXcuCgoJKiBtaXNjLmM6ICh1cGRhdGVfc2V0am1wX2J1Zik6IERlbGV0ZWQuCgoJKiB0cmFucy5jIChnbmF0X3RvX2dudSk6IENhbGwgZG9fcGVuZGluZ19zdGFja19hZGp1c3QgYW5kIGVtaXRfcXVldWUKCWFyb3VuZCBibG9jayBvZiBSVEwuCgoJKiB1dGlscy5jIChpbml0X2dpZ2lfZGVjbHMpOiBJbml0aWFsaXplIHVwZGF0ZV9zZXRqbXBfYnVmLgoKMjAwNC0wNC0yNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX2Rpc3QuYWRiLCBleHBfZGlzdC5hZGI6IFdoZW4gY29uc3RydWN0aW5nIGEgUkFTIHZhbHVlIGZvciBhIGxvY2FsCglzdWJwcm9ncmFtIGZvciB3aGljaCBubyBwcmFnbWEgQWxsX0NhbGxzX1JlbW90ZSBhcHBsaWVzLCBzdG9yZSB0aGUKCWFkZHJlc3Mgb2YgdGhlIHJlYWwgc3VicHJvZ3JhbSBpbiB0aGUgdW5kZXJseWluZyByZWNvcmQgdHlwZSwgc28gbG9jYWwKCWRlcmVmZXJlbmNlcyBkbyBub3QgZ28gdGhyb3VnaCB0aGUgUENTLgoKMjAwNC0wNC0yNiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBpLWMuYWRzOiBBZGQgc29tZSB0eXBlIHF1YWxpZmljYXRpb25zIHRvIGF2b2lkIGFtYmlndWl0aWVzIHdoZW4KCWNvbXBpbGluZyB3aXRoIHMtYXV4ZGVjLmFkcyBhbmQgYSBub24tcHJpdmF0ZSBhZGRyZXNzIHR5cGUuCgoyMDA0LTA0LTI2ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLnJ0bDogRml4IGVycm9yIGluIHByZXZpb3VzIGNoZWNrLWluOgoJQWRkIHMtYWRkb3BlLm8gdG8gbm9uIHRhc2tpbmcgb2JqZWN0IGxpc3QgKHJhdGhlciB0aGFuIHRhc2tpbmcgb2JqZWN0CglsaXN0KS4KCjIwMDQtMDQtMjYgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHNlbV9hZ2dyLmFkYjogRml4IHR5cG8gaW4gY29tbWVudHMKCShSZXNvbHZlX0FnZ3JfRXhwcik6IFByb3BhZ2F0ZSB0aGUgdHlwZSB0byB0aGUgbmVzdGVkIGFnZ3JlZ2F0ZS4KCVJlcXVpcmVkIHRvIGNoZWNrIHRoZSBudWxsLWV4Y2x1c2lvbiBhdHRyaWJ1dGUuCgoJKiBzZW1fYXR0ci5hZGIgKFJlc29sdmVfQXR0cmlidXRlKTogQ2hlY2sgdGhlIGFjY2Vzc2liaWxpdHkgbGV2ZWwgaW4KCWNhc2Ugb2YgYW5vbnltb3VzIGFjY2VzcyB0eXBlcyBpbiByZWNvcmQgYW5kIGFycmF5IGNvbXBvbmVudHMuIEZvciBhCgljb21wb25lbnQgZGVmaW5pdGlvbiB0aGUgbGV2ZWwgaXMgdGhlIHNhbWUgb2YgdGhlIGVuY2xvc2luZyBjb21wb3NpdGUKCXR5cGUuCgoJKiBzZW1fY2gzLmFkYiAoQW5hbHl6ZV9Db21wb25lbnRfRGVjbGFyYXRpb24pOiBJbiBjYXNlIG9mIGNvbXBvbmVudHMKCXRoYXQgYXJlIGFub255bW91cyBhY2Nlc3MgdHlwZXMgdGhlIGxldmVsIG9mIGFjY2Vzc2liaWxpdHkgZGVwZW5kcyBvbgoJdGhlIGVuY2xvc2luZyB0eXBlIGRlY2xhcmF0aW9uLiBJbiBvcmRlciB0byBoYXZlIHRoaXMgaW5mb3JtYXRpb24sIHNldAoJdGhlIHNjb3BlIG9mIHRoZSBhbm9ueW1vdXMgYWNjZXNzIHR5cGUgdG8gdGhlIGVuY2xvc2luZyByZWNvcmQgdHlwZQoJZGVjbGFyYXRpb24uCgkoQXJyYXlfVHlwZV9EZWNsYXJhdGlvbik6IEluIGNhc2Ugb2YgY29tcG9uZW50cyB0aGF0IGFyZSBhbm9ueW1vdXMKCWFjY2VzcyB0eXBlcyB0aGUgbGV2ZWwgb2YgYWNjZXNzaWJpbGl0eSBkZXBlbmRzIG9uIHRoZSBlbmNsb3NpbmcgdHlwZQoJZGVjbGFyYXRpb24uIEluIG9yZGVyIHRvIGhhdmUgdGhpcyBpbmZvcm1hdGlvbiwgc2V0IHRoZSBzY29wZSBvZiB0aGUKCWFub255bW91cyBhY2Nlc3MgdHlwZSB0byB0aGUgZW5jbG9zaW5nIGFycmF5IHR5cGUgZGVjbGFyYXRpb24uCgoJKiBzZW1fY2gzLmFkYiAoQXJyYXlfVHlwZV9EZWNsYXJhdGlvbik6IFNldCB0aGUgc2NvcGUgb2YgdGhlIGFub255bW91cwoJYWNjZXNzIHR5cGUuCgoJKiBzZW1fY2g4LmFkYiAoQW5hbHl6ZV9PYmplY3RfUmVuYW1pbmcpOiBBZGQgY2hlY2sgdG8gdmVyaWZ5IHRoYXQKCXJlbmFtaW5nIG9mIGFub255bW91cyBhY2Nlc3MtdG8tY29uc3RhbnQgdHlwZXMgYWxsb3dlZCBpZiBhbmQgb25seSBpZgoJdGhlIHJlbmFtZWQgb2JqZWN0IGlzIGFjY2Vzcy10by1jb25zdGFudC4KCgkqIHNlbV91dGlsLmFkYiAoVHlwZV9BY2Nlc3NfTGV2ZWwpOiBJbiBjYXNlIG9mIGFub255bW91cyBhY2Nlc3MgdHlwZXMKCXRoYXQgYXJlIGNvbXBvbmVudF9kZWZpbml0aW9uIG9yIGRpc2NyaW1pbmFudHMgb2YgYSBub25saW1pdGVkIHR5cGUsCgl0aGUgbGV2ZWwgaXMgdGhlIHNhbWUgYXMgdGhhdCBvZiB0aGUgZW5jbG9zaW5nIGNvbXBvbmVudCB0eXBlLgoKMjAwNC0wNC0yNiAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV9lbGltLmFkYjogU29tZSBtaW5vciBjb2RlIHJlb3JnYW5pemF0aW9uIGZyb20gY29kZSByZWFkaW5nLiBGaXgKCW1pc3ByaW50IGluIHRoZSBmdW5jdGlvbiBuYW1lIChGaWxlX05hbWVfTWF0Y2gpLgoKMjAwNC0wNC0yMyAgTGF1cmVudCBHVUVSQlkgPGxhdXJlbnRAZ3VlcmJ5Lm5ldD4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgUkFOTElCX1RFU1QsIHVzZSAtJChSQU5MSUIpIGluY2x1ZGluZyBhZnRlcgoJaW5zdGFsbC4KCjIwMDQtMDQtMjMgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogTWFrZS1sYW5nLmluIChHTkFUQklORF9PQkpTKTogQWRkIHMtYWRkb3BlLm8uCgoyMDA0LTA0LTIzICBFbW1hbnVlbCBCcmlvdCAgPGJyaW90QGFjdC1ldXJvcGUuZnI+CgoJKiBhZGFpbnQuYyAoX19nbmF0X3RyeV9sb2NrKTogTm8gbG9uZ2VyIHJlcXVpcmVzIHRoYXQgdGhlIHBhcmVudAoJZGlyZWN0b3J5IGJlIHdyaXRhYmxlLCB0aGUgZGlyZWN0b3J5IGl0c2VsZiBpcyBlbm91Z2guCgkoZ25hdF9pc19hYnNvbHV0ZV9wYXRoKTogQ2hhbmdlIHByb2ZpbGUsIHNvIHRoYXQgdGhlIGNhbGwgZnJvbQoJR05BVC5PU19MaWIgY2FuIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQuCgoJKiBhZGFpbnQuaCAoZ25hdF9pc19hYnNvbHV0ZV9wYXRoKTogQ2hhbmdlIHByb2ZpbGUsIHNvIHRoYXQgdGhlIGNhbGwKCWZyb20gR05BVC5PU19MaWIgY2FuIGJlIG1hZGUgbW9yZSBlZmZpY2llbnQuCgoJKiBnLW9zX2xpYi5hZGIgKElzX0Fic29sdXRlX1BhdGgpOiBNb3JlIGVmZmljaWVudCBpbXBsZW1lbnRhdGlvbiwgYXZvaWQKCW9uZSBjb3B5IG9mIHRoZSBmaWxlIG5hbWUuIEZvdW5kIGJ5IGNvZGUgcmVhZGluZy4KCjIwMDQtMDQtMjMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ25hdF91Z24udGV4aTogQWRkIGRvY3VtZW50YXRpb24gZm9yIGduYXRtYWtlIHN3aXRjaCAtZUwKCUNvcnJlY3QgZG9jdW1lbnRhdGlvbiBvbiBnbmF0bWFrZSBzd2l0Y2hlcyB0cmFuc21pdHRlZCB0byB0aGUgY29tcGlsZXIKCgkqIGFsaS5hZHM6IE1pbm9yIGNvbW1lbnQgZml4CgoyMDA0LTA0LTIzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBzZW1fY2g2LmFkYjogKENvbmZpcm1pbmcgVHlwZXMpOiBDb2RlIGNsZWFudXAKCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KTogR2l2ZSBzdXBwb3J0IHRvIGFub255bW91cyBhY2Nlc3MgdG8KCXN1YnByb2dyYW0gdHlwZXM6IEVfQW5vbnltb3VzX0FjY2Vzc19TdWJwcm9ncmFtX1R5cGUgYW5kCglFX0Fub255bW91c19BY2Nlc3NfUHJvdGVjdGVkX1N1YnByb2dyYW1fVHlwZS4KCjIwMDQtMDQtMjMgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV9kaXN0LmFkYjogQWRkIGEgbmV3IHBhcmFtdGVyIHRvIHRoZSBSQVNfQWNjZXNzIFRTUyBpbmRpY2F0aW5nCgl3aGV0aGVyIGEgcHJhZ21hIEFsbF9DYWxsc19SZW1vdGUgYXBwbGllcyB0byB0aGUgc3VicHJvZ3JhbSBvbiB3aGljaAoJJ0FjY2VzcyBpcyB0YWtlbi4KCU5vIGZ1bmN0aW9uYWwgY2hhbmdlIGlzIGludHJvZHVjZWQgYnkgdGhpcyByZXZpc2lvbjsgdGhlIG5ldyBwYXJhbWV0ZXIKCXdpbGwgYmUgdXNlZCB0byBhbGxvdyBjYWxscyB0byBsb2NhbCBSQ0kgc3VicHJvZ3JhbXMgdG8gYmUgb3B0aW1pemVkCgl0byBub3QgdXNlIHRoZSBQQ1MgaW4gdGhlIGNhc2Ugd2hlcmUgbm8gcHJhZ21hIEFsbF9DYWxsc19SZW1vdGUgYXBwbGllcywKCWFzIGlzIGFscmVhZHkgZG9uZSBpbiB0aGUgUG9seU9SQiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRFNBLgoKCSogZXhwX2Rpc3QuYWRiOiBBZGQgYSBuZXcgcGFyYW10ZXIgdG8gdGhlIFJBU19BY2Nlc3MgVFNTIGluZGljYXRpbmcKCXdoZXRoZXIgYSBwcmFnbWEgQWxsX0NhbGxzX1JlbW90ZSBhcHBsaWVzIHRvIHRoZSBzdWJwcm9ncmFtIG9uIHdoaWNoCgknQWNjZXNzIGlzIHRha2VuLgoJTm8gZnVuY3Rpb25hbCBjaGFuZ2UgaXMgaW50cm9kdWNlZCBieSB0aGlzIHJldmlzaW9uOyB0aGUgbmV3IHBhcmFtZXRlcgoJd2lsbCBiZSB1c2VkIHRvIGFsbG93IGNhbGxzIHRvIGxvY2FsIFJDSSBzdWJwcm9ncmFtcyB0byBiZSBvcHRpbWl6ZWQKCXRvIG5vdCB1c2UgdGhlIFBDUyBpbiB0aGUgY2FzZSB3aGVyZSBubyBwcmFnbWEgQWxsX0NhbGxzX1JlbW90ZSBhcHBsaWVzLAoJYXMgaXMgYWxyZWFkeSBkb25lIGluIHRoZSBQb2x5T1JCIGltcGxlbWVudGF0aW9uIG9mIHRoZSBEU0EuCgoyMDA0LTA0LTIzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLnJ0bDogQWRkIGVudHJ5IGZvciBzLWFkZG9wZS5vIGluIHJ1biB0aW1lIGxpYnJhcnkgbGlzdAoJKiBNYWtlLWxhbmcuaW46IEFkZCBlbnRyeSBmb3Igcy1hZGRvcGUubyB0byBHTkFUMSBvYmplY3RzCgkqIHMtYWRkb3BlLmFkcywgcy1hZGRvcGUuYWRiOiBOZXcgZmlsZXMuCgoJKiBzLWNhcnNpOC5hZGIsIHMtY2FydW44LmFkYiwgcy1jYXNpMTYuYWRiLCBzLWNhc2kzMi5hZGIsCglzLWNhc2k2NC5hZGIsIHMtY2F1bjE2LmFkYiwgcy1jYXVuMzIuYWRiLCBzLWNhdW42NC5hZGIsCglzLWZpbmltcC5hZGIsIHMtZ2V2ZW9wLmFkYiwgcy1zdG9lbGUuYWRiOiBNb2RpZmljYXRpb25zIHRvIGFsbG93CglTeXN0ZW0uQWRkcmVzcyB0byBiZSBub24tcHJpdmF0ZSBhbmQgc2lnbmVkLgoKCSogc2VtX2VsaW0uYWRiOiBNaW5vciByZWZvcm1hdHRpbmcgKGZhaXJseSBleHRlbnNpdmUpCglTb21lIG1pbm9yIGNvZGUgcmVvcmdhbml6YXRpb24gZnJvbSBjb2RlIHJlYWRpbmcKCUFkZCBhIGNvdXBsZSBvZiA/Pz8gY29tbWVudHMKCjIwMDQtMDQtMjMgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgYnVpbGRfdW5pdF9lbGFiKTogRG9uJ3QgY2FsbCBnZXRkZWNscy4KCSh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX0lmX1N0YXRlbWVudCk6IFJlbW92ZSBub24tZGV0ZXJtaW5pc20uCgoJKiB1dGlscy5jIChiZWdpbl9zdWJwcm9nX2JvZHkpOiBKdXN0IHNldCBERUNMX0NPTlRFWFQgaW4gUEFSTV9ERUNMLgoKMjAwNC0wNC0yMyAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRfcm0udGV4aTogU21hbGwgZml4ZXMgaW4gdGhlIGNoYW5nZXMgbWFkZSBpbiB0aGUgJ3ByYWdtYQoJRWxpbWluYXRlJyBzZWN0aW9uLgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYjogUmVtb3ZlIE5hbWVfSG9tb255bV9OdW1iZXIgKEhvbW9ueW1fTnVtYmVyIGlzCglubyBsb25nZXIgdXNlZCBhcyBhIHBhcmFtZXRlciBuYW1lIGZvciBFbGltaW5hdGUgcHJhZ21hKS4KCjIwMDQtMDQtMjIgIExhdXJlbnQgR1VFUkJZIDxsYXVyZW50QGd1ZXJieS5uZXQ+CgoJUFIgb3B0aW1pemF0aW9uLzE0OTg0CglQUiBvcHRpbWl6YXRpb24vMTQ5ODUKCSogdHJhbnMuYyAoZ2lnaSk6IEZpeCBub24gZGV0ZXJtaW5pc20gbGVhZGluZyB0byBib290c3RyYXAKCWNvbXBhcmlzb24gZmFpbHVyZXMuCgoyMDA0LTA0LTIxICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBhZGFpbnQuYyAoX19nbmF0X3BvcnRhYmxlX3NwYXduKTogUXVvdGUgZmlyc3QgYXJndW1lbnQgKGFyZ3ZbMF0pCglwYXNzZWQgdG8gc3Bhd252cCgpIHRvIHByb3Blcmx5IGhhbmRsZSBwcm9ncmFtIHBhdGhuYW1lIHdpdGggc3BhY2VzIG9uCglXaW4zMi4KCjIwMDQtMDQtMjEgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWN0LWV1cm9wZS5mcj4KCgkqIGctZGVicG9vLmFkYiAoUHJpbnRfSW5mbyk6IEF2b2lkIGV4dHJhIHdvcmsgaWYgRGlzcGxheV9TbG90cyBpcyBGYWxzZS4KCShBbGxvY2F0ZSwgRGVhbGxvY2F0ZSwgRnJlZV9QaHlzaWNhbGx5KTogTWFrZSBzdXJlIHRoZSB0YXNrcyBhcmUKCXVubG9ja2VkIGluIGNhc2Ugb2YgZXhjZXB0aW9ucy4KCjIwMDQtMDQtMjEgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogZ2lnaS5oIChnZXRfdGFyZ2V0X25vX2RvbGxhcl9pbl9sYWJlbCk6IFJlbW92ZSBleHRlcm4gZGVjbGFyYXRpb24uCglUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGV4aXN0IGFueW1vcmUuCgoyMDA0LTA0LTIxICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBnbmF0YmluZC5hZGIsIGduYXRsaW5rLmFkYjogVXBkYXRlIG5hbWUgb2YgaW1wb3J0ZWQgQyBzeW1ib2wuCgoJKiBsaW5rLmM6IE1vdmUgdmFyaWFibGVzIHRvIHRoZSBfX2duYXQgbmFtZSBzcGFjZS4KCgkqIE1ha2VmaWxlLmluOiBsaXN0IGxpbmsubyBleHBsaWNpdGx5IHdoZW4gbmVlZGVkLgoKCSogbWxpYi5hZGI6IFJlbW92ZSBwcmFnbWEgTGlua2VyX09wdGlvbiBmb3IgImxpbmsubyIgZnJvbSBtbGliLgoKMjAwNC0wNC0yMSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogZWluZm8uYWRiIChPcmlnaW5hbF9BY2Nlc3NfVHlwZSk6IE5ldyBzdWJwcm9ncmFtCgkoU2V0X09yaWdpbmFsX0FjY2Vzc19UeXBlKTogTmV3IHN1YnByb2dyYW0KCShXcml0ZV9GaWVsZDIxX05hbWUpOiBXcml0ZSB0aGUgbmFtZSBvZiB0aGUgbmV3IGZpZWxkCgoJKiBlaW5mby5hZHMgKE9yaWdpbmFsX0FjY2Vzc19UeXBlKTogTmV3IGZpZWxkIHByZXNlbnQgaW4gYWNjZXNzIHRvCglzdWJwcm9ncmFtIHR5cGVzLgoJQWRkaXRpb24gb2YgdHdvIG5ldyBlbnRpdGllczogRV9Bbm9ueW1vdXNfQWNjZXNzX1N1YnByb2dyYW1fVHlwZSwgYW5kCglFX0Fub255bW91c19BY2Nlc3NfUHJvdGVjdGVkX1N1YnByb2dyYW1fVHlwZS4KCgkqIGxpYi14cmVmLmFkYiAoT3V0cHV0X09uZV9SZWYpOiBHaXZlIHN1cHBvcnQgdG8gYW5vbnltb3VzIGFjY2VzcyB0bwoJc3VicHJvZ3JhbSB0eXBlcy4KCgkqIGxpYi14cmVmLmFkcyAoWHJlZl9FbnRpdHlfTGV0dGVycyk6IEluaXRpYWxpemUgdmFsdWVzIGNvcnJlc3BvbmRpbmcKCXRvIGFub255bW91cyBhY2Nlc3MgdG8gc3VicHJvZ3JhbSB0eXBlcy4KCgkqIHNlbV9hdHRyLmFkYiAoUmVzb2x2ZV9BdHRyaWJ1dGUpOiBHaXZlIHN1cHBvcnQgdG8gYW5vbnltb3VzIGFjY2VzcwoJdG8gc3VicHJvZ3JhbSB0eXBlcy4KCgkqIHNlbV9jaDMuYWRiIChBY2Nlc3NfRGVmaW5pdGlvbik6IENvbXBsZXRlIGRlY29yYXRpb24gb2YgZW50aXRpZXMKCWNvcnJlc3BvbmRpbmcgdG8gYW5vbnltb3VzIGFjY2VzcyB0byBzdWJwcm9ncmFtIHR5cGVzLgoJKEFuYWx5emVfQ29tcG9uZW50X0RlY2xhcmF0aW9uKTogQWRkIG5ldyBhY3R1YWwgdG8gdGhlIGNhbGwgdG8KCXN1YnByb2dyYW0gcmVwbGFjZV9hbm9ueW1vdXNfYWNjZXNzX3RvX3Byb3RlY3RlZF9zdWJwcm9ncmFtLgoJKEFycmF5X1R5cGVfRGVjbGFyYXRpb24pOiBBZGQgbmV3IGFjdHVhbCB0byB0aGUgY2FsbCB0byBzdWJwcm9ncmFtCglyZXBsYWNlX2Fub255bW91c19hY2Nlc3NfdG9fcHJvdGVjdGVkX3N1YnByb2dyYW0uCgkoUHJvY2Vzc19EaXNjcmltaW5hbnRzKTogQWRkIG5ldyBhY3R1YWwgdG8gdGhlIGNhbGwgdG8gc3VicHJvZ3JhbQoJcmVwbGFjZV9hbm9ueW1vdXNfYWNjZXNzX3RvX3Byb3RlY3RlZF9zdWJwcm9ncmFtLgoJKFJlcGxhY2VfQW5vbnltb3VzX0FjY2Vzc19Ub19Qcm90ZWN0ZWRfU3VicHJvZ3JhbSk6IE5ldyBmb3JtYWwuCgoJKiBzZW1fY2gzLmFkcyAoUmVwbGFjZV9Bbm9ueW1vdXNfQWNjZXNzX1RvX1Byb3RlY3RlZF9TdWJwcm9ncmFtKTogTmV3Cglmb3JtYWwuCgoJKiBzZW1fY2g2LmFkYiwgc2VtX3R5cGUuYWRiLCBzZW1fcmVzLmFkYjogR2l2ZSBzdXBwb3J0IHRvIGFub255bW91cwoJYWNjZXNzIHRvIHN1YnByb2dyYW0gdHlwZXMuCgoJKiBzZW1fdXRpbC5hZGIgKEhhc19EZWNsYXJhdGlvbnMpOiBBZGRpdGlvbiBvZiBwYWNrYWdlX3NwZWNpZmljYXRpb24KCW5vZGVzLgoKMjAwNC0wNC0yMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX3ByYWcuYWRiIChNYWtlX0lubGluZSk6IElmIHN1YnByb2dyYW0gaXMgYSByZW5hbWluZywgcHJvcGFnYXRlCglpbmxpbmVkIGZsYWdzIHRvIHJlbmFtZWQgZW50aXR5IG9ubHkgaWYgaW4gY3VycmVudCB1bml0LgoKMjAwNC0wNC0yMSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogcy1wYXJpbnQuYWRzOiBBZGQgRFNBIGltcGxlbWVudGF0aW9uIG1hcmtlci4KCgkqIHJ0c2ZpbmQuYWRzLCBydHNmaW5kLmFkYiwgc25hbWVzLmFkcywgc25hbWVzLmFkYiwgcy1ycGMuYWRiOiBVc2UgdGhlCgl2YWx1ZSBvZiBTeXN0ZW0uUGFydGl0aW9uX0ludGVyZmFjZS5EU0FfSW1wbGVtZW50YXRpb24gdG8gZGV0ZXJtaW5lCgl3aGF0IHZlcnNpb24gb2YgdGhlIGRpc3RyaWJ1dGVkIHN5c3RlbXMgYW5uZXggaXMgYXZhaWxhYmxlIChubwoJaW1wbGVtZW50YXRpb24sIEdMQURFLCBvciBQb2x5T1JCKS4KCjIwMDQtMDQtMjEgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogdGFyZ3R5cHMuYyAoZ2V0X3RhcmdldF9ub19kb2xsYXJfaW5fbGFiZWwpOiBSZW1vdmUsIG5vIGxvbmdlciB1c2VkLgoKMjAwNC0wNC0yMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHV0aWxzLmMgKGNvbnZlcnQsIGNhc2UgQ09OU1RSVUNUT1IsIENPTVBPTkVOVF9SRUYpOiBEbyBub3QgbWFrZSBub2RlCgl3aXRoIG5ldyB0eXBlIGlmIGFsaWFzIHNldHMgZGlmZmVyLgoJRml4ZXMgQUNBVFMgYzQxMTAzYi4KCjIwMDQtMDQtMjEgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogcHJqLmFkczogUmVtb3ZlIEZPUlRSQU4gYXMgYW4gYWNjZXB0ZWQgbGFuZ3VhZ2U6IG5vdCB0ZXN0ZWQgeWV0LgoJQWRkIGFycmF5IExhbmdfQXJncyBmb3IgdGhlIGxhbmd1YWdlIHNwZWNpZmljIGNvbXBpbGluZyBhcmd1bWVudAoJc3dpdGNoZXMuCgoJKiBnbmF0X3Vnbi50ZXhpOiBFeHBsYWluIGluIG1vcmUgZGV0YWlscyB3aGVuIGEgbGlicmFyeSBpcyByZWJ1aWx0LgoKMjAwNC0wNC0yMSAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIGduYXRfcm0udGV4aTogVXBkYXRlIHRoZSBkZXNjcmlwdG9uIG9mIHRoZSBFbGltaW5hdGUgcHJhZ21hCglhY2NvcmRpbmcgdG8gdGhlIHJlY2VudCBjaGFuZ2VzIGluIHRoZSBmb3JtYXQgb2YgdGhlIHBhcmFtZXRlcnMgb2YgdGhlCglwcmFnbWEgKHJlcGxhY2luZyBIb21vbnltX051bWJlciB3aXRoIFNvdXJjZV9Mb2NhdGlvbikuCgoyMDA0LTA0LTE5ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIDVpc3lzdGVtLmFkczogUmVtb3ZlZCwgdW51c2VkLgoKCSogZ25hdF9ybS50ZXhpOiBSZWRvIDEuMTMgY2hhbmdlLgoKMjAwNC0wNC0xOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzLXN0b2VsZS5hZHM6IENsZWFuIHVwIGRlZmluaXRpb24gb2YgU3RvcmFnZV9PZmZzZXQgKHRoZSBuZXcKCWRlZmluaXRpb24gaXMgY2xlYW5lciwgYXZvaWRzIHRoZSBrbHVkZ2Ugb2YgZXhwbGljaXQgU3RhbmRhcmQgb3BlcmF0b3IKCXJlZmVyZW5jZXMsIGFuZCBhbHNvIGlzIGNvbnNpc3RlbnQgd2l0aCBhIHZpc2libGUgU3lzdGVtLkFkZHJlc3Mgd2l0aAoJbm8gdmlzaWJsZSBvcGVyYXRpb25zLgoKCSogcy1nZXZlb3AuYWRiOiBBZGQgZGVjbGFyYXRpb25zIHRvIGF2b2lkIGFzc3VtcHRpb24gb2YgdmlzaWJsZQoJb3BlcmF0aW9ucyBvbiB0eXBlIFN5c3RlbS5BZGRyZXNzIChzaW5jZSB0aGVzZSBtaWdodCBub3QgYmUgYXZhaWxhYmxlCglpZiBBZGRyZXNzIGlzIGEgbm9uLXByaXZhdGUgdHlwZSBmb3Igd2hpY2ggdGhlIG9wZXJhdGlvbnMKCWFyZSBtYWRlIGFic3RyYWN0KS4KCgkqIHNlbV9ldmFsLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzLWNhcnNpOC5hZHMsIHMtY2FydW44LmFkcywgcy1jYXNpMTYuYWRzLCBzLWNhc2kzMi5hZHMsCglzLWNhc2k2NC5hZHMsIHMtY2F1bjE2LmFkcywgcy1jYXVuMzIuYWRzLCBzLWNhdW42NC5hZHM6IE1pbm9yCglyZWZvcm1hdHRpbmcgKG5ldyBmdW5jdGlvbiBzcGVjIGZvcm1hdCkuCgoJKiBzLWF1eGRlYy5hZGIsIHMtY2Fyc2k4LmFkYiwgcy1jYXJ1bjguYWRiLCBzLWNhc2kxNi5hZGIsCglzLWNhc2kzMi5hZGIsIHMtY2FzaTY0LmFkYiwgcy1jYXVuMTYuYWRiLCBzLWNhdW4zMi5hZGIsCglzLWNhdW42NC5hZGI6IEFkZCBkZWNsYXJhdGlvbnMgdG8gYXZvaWQgYXNzdW1wdGlvbiBvZiB2aXNpYmxlCglvcGVyYXRpb25zIG9uIHR5cGUgU3lzdGVtLkFkZHJlc3MgKHNpbmNlIHRoZXNlIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUKCWlmIEFkZHJlc3MgaXMgYSBub24tcHJpdmF0ZSB0eXBlIGZvciB3aGljaCB0aGUgb3BlcmF0aW9ucyBhcmUgbWFkZQoJYWJzdHJhY3QpLgoKCSogbGliLmFkcywgbGliLmFkYiAoU3luY2hyb25pemVfU2VyaWFsX051bWJlcik6IE5ldyBwcm9jZWR1cmUuCgoJKiBleHBfaW50ci5hZGI6IE1pbm9yIGNvbW1lbnQgdXBkYXRlCgoJKiBleHBfYWdnci5hZGIsIGV4cF9hdHRyLmFkYiwgZXhwX2NoMTMuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuCgoJKiA1b21hc3RvcC5hZGI6IEFkZCBkZWNsYXJhdGlvbnMgdG8gYXZvaWQgYXNzdW1wdGlvbiBvZiB2aXNpYmxlCglvcGVyYXRpb25zIG9uIHR5cGUgU3lzdGVtLkFkZHJlc3MgKHNpbmNlIHRoZXNlIG1pZ2h0IG5vdCBiZSBhdmFpbGFibGUKCWlmIEFkZHJlc3MgaXMgYSBub24tcHJpdmF0ZSB0eXBlIGZvciB3aGljaCB0aGUgb3BlcmF0aW9ucwoJYXJlIG1hZGUgYWJzdHJhY3QpLgoKMjAwNC0wNC0xOSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBzd2l0Y2gtbS5hZGI6IChTY2FuX01ha2VfU3dpdGNoZXMpOiBQcm9jZXNzIG5ldyBzd2l0Y2ggLWVMCgoJKiBwcmotcGFycy5hZHMgKFBhcnNlKTogTmV3IEJvb2xlYW4gcGFyYW1ldGVyIFByb2Nlc3NfTGFuZ3VhZ2VzLAoJZGVmYXVsdGVkIHRvIEFkYS4KCgkqIHByai1wcm9jLmFkYiAoUHJvY2Vzcyk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBQcm9jZXNzX0xhbmd1YWdlcywKCWRlZmF1bHRlZCB0byBBZGEuCglDYWxsIENoZWNrIHdpdGggUHJvY2Vzc19MYW5ndWFnZXMuCgkoQ2hlY2spOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgUHJvY2Vzc19MYW5ndWFnZXMuIENhbGwgUmVjdXJzaXZlX0NoZWNrCgl3aXRoIFByb2Nlc3NfTGFuZ3VhZ2VzLgoJKFJlY3Vyc2l2ZV9DaGVjayk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBQcm9jZXNzX0xhbmd1YWdlcy4gQ2FsbAoJTm1zYy5BZGFfQ2hlY2sgb3IgTm1zYy5PdGhlcl9MYW5ndWFnZXNfQ2hlY2sgYWNjb3JkaW5nIHRvCglQcm9jZXNzX0xhbmd1YWdlcy4KCgkqIHByai1wcm9jLmFkcyAoUHJvY2Vzcyk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBQcm9jZXNzX0xhbmd1YWdlcywKCgkqIHByai11dGlsLmFkcywgcHJqLXV0aWwuYWRiIChFeGVjdXRhYmxlX09mKTogTmV3IEJvb2xlYW4KCXBhcmFtZXRlciBBZGFfTWFpbiwgZGVmYXVsdGVkIHRvIFRydWUuCglDaGVjayBmb3IgQWRhIHNwZWNpZmljIGNoYXJhY3RlcmlzdGljcyBvbmx5IHdoZW4gQWRhX01haW4gaXMgVHJ1ZS4KCgkqIG9wdC5hZHM6IChGb2xsb3dfTGlua3MpOiBOZXcgQm9vbGVhbiBmbGFnIGZvciBnbmF0bWFrZQoKCSogcHJqLmFkYjogKFByb2plY3RfRW1wdHkpOiBBZGQgbmV3IFByb2plY3RfRGF0YSBjb21wb25lbnRzLgoKCSogcHJqLmFkczogTmV3IHR5cGVzIGFuZCB0YWJsZXMgZm9yIG5vbiBBZGEgbGFuZ3VhZ2VzLgoJKFByb2plY3RfRGF0YSk6IE5ldyBjb21wb25lbnRzIExhbmd1YWdlcywgSW1wbF9TdWZmaXhlcywKCUZpcnN0X090aGVyX1NvdXJjZSwgTGFzdF9PdGhlcl9Tb3VyY2UsIEltcG9ydGVkX0RpcmVjdG9yaWVzX1N3aXRjaGVzLAoJSW5jbHVkZV9QYXRoLCBJbmNsdWRlX0RhdGFfU2V0LgoKCSogcHJqLWVudi5hZHMsIHByai1lbnYuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHByai1ubXNjLmFkcywgcHJqLW5tc2MuYWRiOiAoT3RoZXJfTGFuZ3VhZ2VzX0NoZWNrKTogTmV3IHByb2NlZHVyZQoJUHV0IHN1YnByb2dyYW1zIGluIGFscGhhYmV0aWNhbCBvcmRlcgoKCSogcHJqLXBhcnMuYWRiIChQYXJzZSk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBQcm9jZXNzX0xhbmd1YWdlcywKCWRlZmF1bHRlZCB0byBBZGE7IENhbGwgUHJqLlByb2MuUHJvY2VzcyB3aXRoIFByb2Nlc3NfTGFuZ3VhZ2VzIGFuZAoJT3B0LkZvbGxvd19MaW5rcy4KCgkqIG1saWItcHJqLmFkYjogQmFjayBvdXQgbW9kaWZpY2F0aW9uIGluIGxhc3QgdmVyc2lvbiwgYXMgdGhleSBhcmUKCWluY29ycmVjdC4KCShCdWlsZF9MaWJyYXJ5LkNoZWNrX0xpYnMpOiBSZW1vdmUgdXNlbGVzcyBwcmFnbWEgV2FybmluZ3MgKE9mZikKCgkqIG1ha2UuYWRiOiAoTWFpbnMpOiBNb3ZlZCB0byBwYWNrYWdlIE1ha2V1dGwKCShMaW5rZXJfT3B0cyk6IE1vdmVkIHRvIHBhY2thZ2UgTWFrZXV0bAoJKElzX0V4dGVybmFsX0Fzc2lnbm1lbnQpOiBNb3ZlZCB0byBwYWNrYWdlIE1ha2V1dGwKCShUZXN0X0lmX1JlbGF0aXZlX1BhdGgpOiBNb3ZlZCB0byBwYWNrYWdlIE1ha2V1dGwKCShHbmF0bWFrZSk6IE1vdmUgc29ydGluZyBvZiBsaW5rZXIgb3B0aW9ucyB0byBmdW5jdGlvbgoJTWFrZXV0bC5MaW5rZXJfT3B0aW9uc19Td2l0Y2hlcy4KCgkqIG1ha2V1dGwuYWRzLCBtYWtldXRsLmFkYjogTmV3IGZpbGVzLgoKCSogTWFrZWZpbGUuaW46IEFkZCBtYWtldXRsLm8gdG8gdGhlIG9iamVjdCBmaWxlcyBmb3IgZ25hdG1ha2UKCgkqIG1ha2V1c2cuYWRiOiBBZGQgbGluZSBmb3IgbmV3IHN3aXRjaCAtZUwuCgoJKiBnbmF0bHMuYWRiIChJbWFnZSk6IE5ldyBmdW5jdGlvbi4KCShPdXRwdXRfVW5pdCk6IElmIGluIHZlcmJvc2UgbW9kZSwgb3V0cHV0IHRoZSBsaXN0IG9mIHJlc3RyaWN0aW9ucwoJc3BlY2lmaWVkIGJ5IHByYWdtYXMgUmVzdHJpY3Rpb25zLgoKCSogNWJtbC10Z3QuYWRiLCA1dm1sLXRndC5hZGIgKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IERvIG5vdCB1c2UKCVRleHRfSU8uCgoJKiBhLWNhbGVuZC5hZGIgKFNwbGl0KTogU2hpZnQgdGhlIGRhdGUgYnkgbXVsdGlwbGUgb2YgNTYgeWVhcnMsIGlmCgluZWVkZWQsIHRvIHB1dCBpdCBpbiB0aGUgcmFuZ2UgMTk3MCAoaW5jbHVkZWQpIC0gMjAyNiAoZXhjbHVkZWQpLgoJKFRpbWVfT2YpOiBEbyBub3Qgc2hpZnQgVW5peF9NaW5fWWVhciAoMTk3MCkuCglTaGlmdCB0aGUgZGF0ZSBieSBtdWx0aXBsZSBvZiA1NiB5ZWFycywgaWYgbmVlZGVkLCB0byBwdXQgaXQgaW4gdGhlCglyYW5nZSAxOTcwIChpbmNsdWRlZCkgLSAyMDI2IChleGNsdWRlZCkuCgoJKiBhZGFpbnQuaCwgYWRhaW50LmMgKF9fZ25hdF9zZXRfZXhlY3V0YWJsZSk6IE5ldyBmdW5jdGlvbi4KCjIwMDQtMDQtMTkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX1N1YnByb2dyYW1fQm9keSk6IFRlbXBvcmFyaWx5IHB1c2gKCWFuZCBwb3AgR0MgY29udGV4dC4KCSh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX1Byb2NlZHVyZV9DYWxsKTogRml4IHR5cG8gaW4gc2V0dGluZyBUUkVFX1RZUEUuCgkodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9MYWJlbCk6IERvbid0IHNldCBMQUJFTF9TVE1UX0ZJUlNUX0lOX0VILgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fUHJvY2VkdXJlX0NhbGxfU3RhdGVtZW50KTogQnVpbGQgYSB0cmVlLgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fQ29kZV9TdGF0ZW1lbnQpOiBMaWtld2lzZS4KCShnbmF0X2V4cGFuZF9zdG10LCBjYXNlIExBQkVMX1NUTVQpOiBEb24ndCBsb29rIGF0CglMQUJFTF9TVE1UX0ZJUlNUX0lOX0VILgoJKGduYXRfZXhwYW5kX3N0bXQsIGNhc2UgQVNNX1NUTVQpOiBOZXcgY2FzZS4KCgkqIHV0aWxzMi5jIChidWlsZF91bmFyeV9vcCk6IFByb3Blcmx5IHNldCBUUkVFX1JFQURPTkxZIG9mCglVTkNPTlNUUkFJTkVEX0FSUkFZX1JFRi4KCgkqIHV0aWxzLmMgKHBvcGxldmVsKTogVGVtcG9yYXJpbHkgcHVzaC9wb3AgR0MgY29udGV4dCBhcm91bmQgaW5saW5lCglmdW5jdGlvbiBleHBhbnNpb24uCgoJKiBkZWNsLmMgKG1heWJlX3ZhcmlhYmxlKTogUHJvcGVybHkgc2V0IFRSRUVfUkVBRE9OTFkgb2YKCVVOQ09OU1RSQUlORURfQVJSQVlfUkVGLgoJKG1ha2VfcGFja2FibGVfdHlwZSk6IE9ubHkgcmVmZXJlbmNlIFRZUEVfSVNfUEFERElOR19QIGZvciBSRUNPUkRfVFlQRS4KCgkqIGFkYS10cmVlLmRlZjogKEFTTV9TVE1UKTogTmV3LgoKCSogYWRhLXRyZWUuaDogKExBQkVMX1NUTVRfRklSU1RfSU5fRUgpOiBEZWxldGVkLgoJKEFTTV9TVE1UX1RFTVBMQVRFLCBBU01fU1RNVF9PVVRQVVQsIEFTTV9TVE1UX09SSUdfT1VULAoJQVNNX1NUTVRfSU5QVVQpOiBOZXcuCgkoQVNNX1NUTVRfQ0xPQkJFUik6IExpa2V3aXNlLgoKMjAwNC0wNC0xOSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogYS1leGNlcHQuYWRiLCBzLXBhcmludC5hZHMsIHMtcGFyaW50LmFkYiwgdHlwZXMuYWRzLCB0eXBlcy5oOiBVc2UKCWdlbmVyYWwgcmNoZWNrIG1lY2hhbmlzbSB0byByYWlzZSBQcm9ncmFtX0Vycm9yIGZvciBFLjQoMTgpLCBpbnN0ZWFkCglvZiBhIGN1c3RvbSByYWlzZXIgaW4gU3lzdGVtLlBhcnRpdGlvbl9JbnRlcmZhY2UuCglQYXJ0IG9mIGdlbmVyYWwgY2xlYW51cCB3b3JrIGJlZm9yZSBQb2x5T1JCIGludGVncmF0aW9uLgoKCSogc25hbWVzLmFkcywgc25hbWVzLmFkYjogQWRkIG5ldyBydW50aW1lIGxpYnJhcnkgZW50aXRpZXMgYW5kIG5hbWVzCglmb3IgUG9seU9SQiBEU0EuCgoJKiBzZW1fZGlzdC5hZHMsIHNlbV9kaXN0LmFkYiAoR2V0X1N1YnByb2dyYW1fSWQpOiBNb3ZlIGZyb20gc2VtX2Rpc3QgdG8KCWV4cF9kaXN0LgoJKEJ1aWxkX1N1YnByb2dyYW1fSWQpOiBOZXcgc3VicHJvZ3JhbSBwcm92aWRlZCBieSBleHBfZGlzdAoJQ29kZSByZW9yZ2FuaXNhdGlvbiBpbiBwcmVwYXJhdGlvbiBmb3IgUG9seU9SQiBpbnRlZ3JhdGlvbi4KCgkqIGV4cF9kaXN0LmFkcywgZXhwX2Rpc3QuYWRiIChHZXRfU3VicHJvZ3JhbV9JZCk6IE1vdmUgZnJvbSBzZW1fZGlzdCB0bwoJZXhwX2Rpc3QuCgkoQnVpbGRfU3VicHJvZ3JhbV9JZCk6IE5ldyBzdWJwcm9ncmFtIHByb3ZpZGVkIGJ5IGV4cF9kaXN0CgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9PbmVfQ2FsbCk6IEZpeCBlcnJvciBtZXNzYWdlIGZvciBtaXNtYXRjaCBpbgoJYWN0dWFsIHBhcmFtZXRlciB0eXBlcyBmb3IgY2FsbCB0byBkZXJlZmVyZW5jZSBvZiBhbgoJYWNjZXNzLXRvLXN1YnByb2dyYW0gdHlwZS4KCgkqIHJ0c2ZpbmQuYWRzOiBBZGQgbmV3IHJ1bnRpbWUgbGlicmFyeSBlbnRpdGllcyBhbmQgbmFtZXMgZm9yIFBvbHlPUkIKCURTQS4KCgkqIGduYXRsaW5rLmFkYiAoVmFsdWUpOiBSZW1vdmUuIFVzZSBJbnRlcmZhY2VzLkMuU3RyaW5ncy5WYWx1ZQoJaW5zdGVhZCwgd2hpY2ggaGFzIHRoZSBzYW1lIGJlaGF2aW91ciBoZXJlIHNpbmNlIHdlIG5ldmVyIHBhc3MgaXQgYQoJTlVMTCBwb2ludGVyLgoKCSogbGluay5jIChydW5fcGF0aF9vcHRpb24sIFNvbGFyaXMgY2FzZSk6IFVzZSAtV2wsIGFzIGZvciBvdGhlcgoJcGxhdGZvcm1zLgoKCSogTWFrZWZpbGUuaW46IGFkanVzdCBvYmplY3QgZmlsZSBsaXN0cyBmb3IgZ25hdGxpbmsgYW5kIGduYXRtYWtlCgl0byBhY2NvdW50IGZvciBuZXcgZGVwZW5kZW5jeSB1cG9uIEludGVyZmFjZXMuQy5TdHJpbmdzICsgbGluay5vCglGb3IgeDg2IEZyZWVCU0QsIHVzZSA4Nm51bWF1eC4KCgkqIG1ha2UuYWRiLCBnbmF0Y21kLmFkYjogTGlua2VyX0xpYnJhcnlfUGF0aF9PcHRpb24gaGFzIGJlZW4gbW92ZWQgdXAKCWZyb20gTWxpYi5UZ3QgdG8gTWxpYi4KCgkqIG1saWIuYWRzLCBtbGliLmFkYiAoTGlua2VyX0xpYnJhcnlfUGF0aF9PcHRpb24pOiBOZXcgc3VicHJvZ3JhbSwgbm93Cgl0YXJnZXQtaW5kZXBlbmRlbnQuCgoJKiBtbGliLXRndC5hZHMsIG1saWItdGd0LmFkYiAoTGlua2VyX0xpYnJhcnlfUGF0aF9PcHRpb24pOiBSZW1vdmUKCXRhcmdldC1zcGVjaWZpYyB2ZXJzaW9ucyBvZiB0aGlzIHN1YnByb2dyYW0sIG5vdyBpbXBsZW1lbnRlZCBhcyBhCgl0YXJnZXQtaW5kZXBlbmRlbnQgZnVuY3Rpb24gaW4gTWxpYi4KCgkqIDVhbWwtdGd0LmFkYiwgNWJtbC10Z3QuYWRiLCA1Z21sLXRndC5hZGIsIDVobWwtdGd0LmFkYiwgNWxtbC10Z3QuYWRiLAoJNXNtbC10Z3QuYWRiLCA1dm1sLXRndC5hZGIsIDV6bWwtdGd0LmFkYiwgNXdtbC10Z3QuYWRiCgkoTGlua2VyX0xpYnJhcnlfUGF0aF9PcHRpb24pOiBSZW1vdmUgdGFyZ2V0LXNwZWNpZmljIHZlcnNpb25zIG9mIHRoaXMKCXN1YnByb2dyYW0sIG5vdyBpbXBsZW1lbnRlZCBhcyBhIHRhcmdldC1pbmRlcGVuZGVudCBmdW5jdGlvbiBpbiBNbGliLgoKCSogYXRyZWUuYWRiOiAoQWxsb2NhdGVfSW5pdGlhbGl6ZV9Ob2RlKTogTmV3IHN1YnByb2dyYW0uCglGYWN0b3JzIG91dCBub2RlIHRhYmxlIHNsb3RzIGFsbG9jYXRpb24uCgkoRml4X1BhcmVudHMpOiBOZXcgc3VicHJvZ3JhbS4KCUVuY2Fwc3VsYXRlIHRoZSBwYXR0ZXJuIG9mIGZpeGluZyB1cCBwYXJlbnQgcG9pbnRlcnMgZm9yIHN5bnRhY3RpYwoJY2hpbGRyZW4gb2YgYSByZXdyaXR0ZW4gbm9kZS4KCShOZXdfQ29weV9UcmVlKTogVXNlIE5ld19Db3B5IHRvIGNvcHkgbm9uLWVudGl0eSBub2Rlcy4KCShSZXdyaXRlKTogVXNlIE5ld19Db3B5IHdoZW4gY3JlYXRpbmcgc2F2ZWQgY29weSBvZiBvcmlnaW5hbCBub2RlLgoJKFJlcGxhY2UpOiBVc2UgQ29weV9Ob2RlIHRvIGNvcHkgbm9kZXMuCgoyMDA0LTA0LTE5ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBzcHJpbnQuYWRiIChTcHJpbnRfTm9kZV9BY3R1YWwpOiBHaXZlIHN1cHBvcnQgdG8gdGhlIG5ldwoJQWNjZXNzX1RvX1N1YnByb2dyYW0gbm9kZSBhdmFpbGFibGUgaW4gQWNjZXNzX0RlZmluaXRpb24gbm9kZXMuIEluCglhZGRpdGlvbiwgZ2l2ZSBzdXBwb3J0IHRvIHRoZSBBSS0yMzEgbm9kZSBmaWVsZHM6IG51bGwtZXhjbHVzaW9uLAoJYWxsLXByZXNlbnQsIGNvbnN0YW50LXByZXNlbnQuCgoJKiBzZW1fdXRpbC5hZHMsIHNlbV91dGlsLmFkYjogKEhhc19EZWNsYXJhdGlvbnMpOiBOZXcgc3VicHJvZ3JhbQoKCSogc2luZm8uYWRzLCBzaW5mby5hZGI6CglOZXcgZmllbGQgQWNjZXNzX1RvX1N1YnByb2dyYW1fRGVmaW5pdGlvbiBpbiBBY2Nlc3NfRGVmaW5pdGlvbiBub2RlcwoKCSogc2VtX2NoNi5hZGIgKFByb2Nlc3NfRm9ybWFscyk6IE1vdmUgaGVyZSB0aGUgY29kZSB0aGF0IGNyZWF0ZXMgYW5kCglkZWNvcmF0ZXMgaW50ZXJuYWwgc3VidHlwZSBkZWNsYXJhdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZQoJbnVsbC1leGNsdWRpbmcgZm9ybWFsLiBUaGlzIGNvZGUgd2FzIHByZXZpb3VzbHkgaW4gU2V0X0FjdHVhbF9TdWJ0eXBlcy4KCUluIGFkZGl0aW9uLCBjYXJyeSBvdXQgc29tZSBjb2RlIGNsZWFudXAgb24gdGhpcyBjb2RlLiBJbiBjYXNlIG9mCglhY2Nlc3MgdG8gcHJvdGVjdGVkIHN1YnByb2dyYW0gY2FsbAoJUmVwbGFjZV9Bbm9ueW1vdXNfQWNjZXNzX1RvX1Byb3RlY3RlZF9TdWJwcm9ncmFtLgoJKFNldF9BY3R1YWxfU3VidHlwZXMpOiBDb2RlIGNsZWFudXAuCgoJKiBzZW1fY2g4LmFkYiAoQW5hbHl6ZV9PYmplY3RfUmVuYW1pbmcpOiBSZW1vdmUgdW4tbmVjZXNzYXJ5IGNhbGwgdG8KCUZpbmRfVHlwZSBpbiBjYXNlIG9mIGFub255bW91cyBhY2Nlc3MgcmVuYW1pbmdzLiBBZGQgd2FybmluZyBpbiBjYXNlIG9mCgludWxsLWV4Y2x1ZGluZyBhdHRyaWJ1dGUgdXNlZCBpbiBhbm9ueW1vdXMgYWNjZXNzIHJlbmFtaW5nLgoKCSogc2VtX2NoMy5hZHMgKFJlcGxhY2VfQW5vbnltb3VzX0FjY2Vzc19Ub19Qcm90ZWN0ZWRfU3VicHJvZ3JhbSk6IE5ldwoJc3VicHJvZ3JhbQoKCSogc2VtX2NoMy5hZGIgKFJlcGxhY2VfQW5vbnltb3VzX0FjY2Vzc19Ub19Qcm90ZWN0ZWRfU3VicHJvZ3JhbSk6IE5ldwoJc3VicHJvZ3JhbS4KCShBY2Nlc3NfRGVmaW5pdGlvbik6IEluIGNhc2Ugb2YgYW5vbnltb3VzIGFjY2VzcyB0byBzdWJwcm9ncmFtcyBjYWxsCgl0aGUgY29ycmVzcG9uZGluZyBzZW1hbnRpYyByb3V0aW5lIHRvIGRlY29yYXRlIHRoZSBub2RlLgoJKEFjY2Vzc19TdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogQWRkaXRpb24gb2Ygc29tZSBjb21tZW50cyBpbmRpY2F0aW5nCglzb21lIGNvZGUgdGhhdCBwcm9iYWJseSBzaG91bGQgYmUgYWRkZWQgaGVyZS4gRGV0ZWN0ZWQgYnkgY29tcGFyaXNvbgoJd2l0aCB0aGUgYWNjZXNzX2RlZmluaXRpb24gc3VicHJvZ3JhbS4KCShBbmFseXplX0NvbXBvbmVudF9EZWNsYXJhdGlvbik6IEluIGNhc2Ugb2YgYWNjZXNzIHRvIHByb3RlY3RlZAoJc3VicHJvZ3JhbSBjYWxsIFJlcGxhY2VfQW5vbnltb3VzX0FjY2Vzc19Ub19Qcm90ZWN0ZWQuCgkoQXJyYXlfVHlwZV9EZWNsYXJhdGlvbik6IEluIGNhc2Ugb2YgYWNjZXNzIHRvIHByb3RlY3RlZCBzdWJwcm9ncmFtIGNhbGwKCVJlcGxhY2VfQW5vbnltb3VzX0FjY2Vzc19Ub19Qcm90ZWN0ZWRfU3VicHJvZ3JhbS4KCShQcm9jZXNzX0Rpc2NyaW1pbmFudHMpOiBJbiBjYXNlIG9mIGFjY2VzcyB0byBwcm90ZWN0ZWQgc3VicHJvZ3JhbSBjYWxsCglSZXBsYWNlX0Fub255bW91c19BY2Nlc3NfVG9fUHJvdGVjdGVkX1N1YnByb2dyYW0uCgoJKiBwYXIuYWRiIChQX0FjY2Vzc19EZWZpbml0aW9uKTogTmV3IGZvcm1hbCB0aGF0IGluZGljYXRlcyBpZiB0aGUKCW51bGwtZXhjbHVzaW9uIHBhcnQgd2FzIHByZXNlbnQuCgkoUF9BY2Nlc3NfVHlwZV9EZWZpbml0aW9uKTogTmV3IGZvcm1hbCB0aGF0IGluZGljYXRlcyBpZiB0aGUgY2FsbGVyIGhhcwoJYWxyZWFkeSBwYXJzZWQgdGhlIG51bGwtZXhjbHVkaW5nIHBhcnQuCgoJKiBwYXItY2gzLmFkYiAoUF9TdWJ0eXBlX0RlY2xhcmF0aW9uKTogQ29kZSBjbGVhbnVwLgoJKFBfSWRlbnRpZmllcl9EZWNsYXJhdGlvbnMpOiBDb2RlIGNsZWFudXAgYW5kIGdpdmUgc3VwcG9ydCB0byByZW5hbWluZ3MKCW9mIGFub255bW91cyBhY2Nlc3MgdG8gc3VicHJvZ3JhbSB0eXBlcy4KCShQX0Rlcml2ZWRfVHlwZV9EZWZfT3JfUHJpdmF0ZV9FeHRfRGVjbCk6IENvZGUgY2xlYW51cC4KCShQX0FycmF5X1R5cGVfRGVmaW5pdGlvbik6IEdpdmUgc3VwcG9ydCB0byBBSS0yNTQuCgkoUF9Db21wb25lbnRfSXRlbXMpOiBHaXZlIHN1cHBvcnQgdG8gQUktMjU0LgoJKFBfQWNjZXNzX0RlZmluaXRpb24pOiBOZXcgZm9ybWFsIHRoYXQgaW5kaWNhdGVzIGlmIHRoZSBoZWFkZXIgd2FzCglhbHJlYWR5IHBhcnNlZCBieSB0aGUgY2FsbGVyLgoJKFBfQWNjZXNzX1R5cGVfRGVmaW5pdGlvbik6IE5ldyBmb3JtYWwgdGhhdCBpbmRpY2F0ZXMgaWYgdGhlIGNhbGxlciBoYXMKCWFscmVhZHkgcGFyc2VkIHRoZSBudWxsLWV4Y2x1ZGluZyBwYXJ0LgoKCSogcGFyLWNoNi5hZGIgKFBfRm9ybWFsX1BhcnQpOiBBZGQgdGhlIG51bGwtZXhjbHVkaW5nIHBhcmFtZXRlciB0byB0aGUKCWNhbGwgdG8gUF9BY2Nlc3NfRGVmaW5pdGlvbi4KCjIwMDQtMDQtMTkgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBjaGVja3MuYWRiIChBcHBseV9GbG9hdF9Db252ZXJzaW9uX0NoZWNrKTogTmV3IHByb2NlZHVyZSB0byBpbXBsZW1lbnQKCXRoZSBkZWxpY2F0ZSBzZW1hbnRpY3Mgb2YgZmxvYXRpbmctcG9pbnQgdG8gaW50ZWdlciBjb252ZXJzaW9uLgoJKEFwcGx5X1R5cGVfQ29udmVyc2lvbl9DaGVja3MpOiBVc2UgQXBwbHlfRmxvYXRfQ29udmVyc2lvbl9DaGVjay4KCgkqIGV2YWxfZmF0LmFkYiAoTWFjaGluZV9NYW50aXNzYSk6IE1vdmVkIHRvIHNwZWMuCgkoTWFjaGluZV9SYWRpeCk6IE5ldyBmdW5jdGlvbi4KCgkqIGV2YWxfZmF0LmFkcyAoTWFjaGluZV9NYW50aXNzYSk6IE1vdmVkIGZyb20gYm9keSBmb3IgdXNlIGluCgljb252ZXJzaW9uIGNoZWNrcy4KCShNYWNoaW5lX1JhZGl4KTogTmV3IGZ1bmN0aW9uIGFsc28gZm9yIHVzZSBpbiBjb252ZXJzaW9uIGNoZWNrcy4KCjIwMDQtMDQtMTkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHBhci1wcmFnLmFkYiAoU291cmNlX0ZpbGVfTmFtZV9Qcm9qZWN0KTogRml4IHR5cG8gaW4gZXJyb3IgbWVzc2FnZS4KCgkqIGV4cF9jaDkuYWRiIChFeHBhbmRfQWNjZXNzX1Byb3RlY3RlZF9TdWJwcm9ncmFtX1R5cGUpOiBDYWxsIGFuYWx5emUKCXRvIGRlY29yYXRlIHRoZSBhY2Nlc3MtdG8tcHJvdGVjdGVkIHN1YnByb2dyYW0gYW5kIHRoZSBlcXVpdmFsZW50IHR5cGUuCgoJKiBjaGVja3MuYWRiIChOdWxsX0V4Y2x1c2lvbl9TdGF0aWNfQ2hlY2tzKTogQ29kZSBjbGVhbnVwLiBHaXZlIHN1cHBvcnQKCXRvIGFub255bW91cyBhY2Nlc3MgdG8gc3VicHJvZ3JhbSB0eXBlcy4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfTl9Jbik6IFByZXNlcnZlIFN0YXRpYyBmbGFnIGJlZm9yZQoJY29uc3RhbnQtZm9sZGluZywgZm9yIGxlZ2FsaXR5IGNoZWNrcyBpbiBjb250ZXh0cyB0aGF0IHJlcXVpcmUgYW4gUk0KCXN0YXRpYyBleHByZXNzaW9uLgoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9OX0Z1bmN0aW9uX0NhbGwpOiBJZiBjYWxsIG1heSBnZW5lcmF0ZSBsYXJnZQoJdGVtcG9yYXJ5IGJ1dCBzdGFjayBjaGVja2luZyBpcyBub3QgZW5hYmxlZCwgaW5jcmVtZW50IHNlcmlhbCBudW1iZXIKCXRvIHNvIHRoYXQgc3ltYm9sIGdlbmVyYXRpb24gaXMgY29uc2lzdGVudCB3aXRoIGFuZCB3aXRob3V0IHN0YWNrCgljaGVja2luZy4KCgkqIGV4cF91dGlsLmFkcywgZXhwX3V0aWwuYWRiIChNYXlfR2VuZXJhdGVfTGFyZ2VfVGVtcCk6IFByZWRpY2F0ZSBpcwoJaW5kZXBlbmRlbnQgb24gd2hldGhlciBzdGFjayBjaGVja2luZyBpcyBlbmFibGVkLCBjYWxsZXIgbXVzdCBjaGVjawoJdGhlIGNvcnJlc3BvbmRpbmcgZmxhZy4KCgkqIHNlbV9jaDMuYWRiIChDb25zdHJhaW5fSW5kZXgpOiBJbmRleCBib3VuZHMgZ2l2ZW4gYnkgYXR0cmlidXRlcyBuZWVkCglyYW5nZSBjaGVja3MuCgkoQnVpbGRfRGVyaXZlZF9Db25jdXJyZW50X1R5cGUpOiBJbmhlcml0IElzX0NvbnN0cmFpbmVkIGZsYWcgZnJvbQoJcGFyZW50IGlmIGl0IGhhcyBkaXNjcmltaW5hbnRzLgoJKEJ1aWxkX0Rlcml2ZWRfUHJpdmF0ZV9UeXBlKTogQ29uc3RydWN0ZWQgZnVsbCB2aWV3IGRvZXMKCW5vdCBjb21lIGZyb20gc291cmNlLgoJKFByb2Nlc3NfRGlzY3JpbWluYW50cyk6IERlZmF1bHQgZGlzY3JpbWluYW50cyBvbiBhIHRhZ2dlZCB0eXBlIGFyZQoJbGVnYWwgaWYgdGhpcyBpcyB0aGUgaW50ZXJuYWwgY29tcGxldGlvbiBvZiBhIHByaXZhdGUgdW50YWdnZWQKCWRlcml2YXRpb24uCgoJKiBzZW1fY2g2LmFkYiAoU2V0X0FjdHVhbF9TdWJ0eXBlcyk6IFRoZSBnZW5lcmF0ZWQgZGVjbGFyYXRpb24gbmVlZHMKCW5vIGNvbnN0cmFpbnQgY2hlY2tzLCBiZWNhdXNlIGl0IGNvcnJlc3BvbmRzIHRvIGFuIGV4aXN0aW5nIG9iamVjdC4KCgkqIHNlbV9wcmFnLmFkYiAoUHJvY2Vzc19Db252ZW50aW9uKTogUHJhZ21hIGFwcGxpZXMKCW9ubHkgdG8gc3VicHJvZ3JhbXMgaW4gdGhlIHNhbWUgZGVjbGFyYXRpdmUgcGFydCwgaS5lLiB0aGUgc2FtZSB1bml0LAoJbm90IHRoZSBzYW1lIHNjb3BlLgoKCSogc2VtX3Jlcy5hZGIgKFZhbGlkX0NvbnZlcnNpb24pOiBJbiBhbiBpbnN0YW5jZSBvciBpbmxpbmVkIGJvZHksCglpZ25vcmUgdHlwZSBtaXNtYXRjaCBvbiBhIG51bWVyaWMgY29udmVyc2lvbiBpZiBleHByZXNzaW9uIGNvbWVzIGZyb20KCWV4cGFuc2lvbi4KCjIwMDQtMDQtMTkgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fZWxpbS5hZGIgKFByb2Nlc3NfRWxpbWluYXRlX1ByYWdtYSk6IFJlbW92ZSB0aGUgcHJvY2Vzc2luZyBmb3IKCUhvbW9ueW1fTnVtYmVyIHBhcmFtZXRlciwgYWRkIHByb2Nlc3NpbmcgZm9yIFNvdXJjZV9Mb2NhdGlvbiBwYXJhbWV0ZXIKCWNvcnJlc3BvbmRpbmcuCgkoQ2hlY2tfRWxpbWluYXRlZCk6IFJlbW92ZSB0aGUgY2hlY2sgZm9yIGhvbW9ueW0gbnVtYmVycywgYWRkIHRoZSBjaGVjawoJZm9yIHNvdXJjZSBsb2NhdGlvbiB0cmFjZXMuCgoJKiBzZW1fZWxpbS5hZHMgKFByb2Nlc3NfRWxpbWluYXRlX1ByYWdtYSk6IFJlcGxhY2UgQXJnX0hvbW9ueW1fTnVtYmVyCgl3aXRoIEFyZ19Tb3VyY2VfTG9jYXRpb24gY29ycmVzcG9uZGluZyB0byB0aGUgY2hhbmdlcyBpbiB0aGUgZm9ybWF0IG9mCgl0aGUgcHJhZ21hLgoKCSogc2VtX3ByYWcuYWRiOiAoQW5hbHl6ZV9QcmFnbWEpOiBDaGFuZ2VzIGluIHRoZSBwcm9jZXNzaW5nIG9mCglFbGltaW5hdGUgcHJhZ21hIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNoYW5nZXMgaW4gdGhlIGZvcm1hdCBvZiB0aGUKCXByYWdtYTogSG9tb255bV9OdW1iZXIgaXMgcmVwbGFjZWQgd2l0aCBTb3VyY2VfTG9jYXRpb24sIHR3byB3YXlzIG9mCglkaXN0aW5ndWlzaGluZyBob21vbnltcyBhcmUgbXV0aWFsbHktZXhjbHVzaXZlLgoKMjAwNC0wNC0xOSAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNrZXJAZ25hdC5jb20+CgoJKiBnZXRfdGFyZy5hZHMgKEdldF9Ob19Eb2xsYXJfSW5fTGFiZWwpOiBSZW1vdmUuCgoJKiBleHBfZGJ1Zy5hZGIgKE91dHB1dF9Ib21vbnltX051bWJlcnNfU3VmZml4KTogUmVtb3ZlIHVzZSBvZgoJTm9fRG9sbGFyX0luX0xhYmVsLCBubyBsb25nZXIgbmVjZXNzYXJ5LCBhcyBpdCBpcyBhbHdheXMgVHJ1ZS4KCShTdHJpcF9TdWZmaXhlcyk6IExpa2V3aXNlLgoKMjAwNC0wNC0xOSAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGduYXQuY29tPgoKCSogcy1zdGFsaWIuYWRzICh0eXBlIEV4Y2VwdGlvbl9Db2RlKTogVXNlIEludGVnZXInU2l6ZSBmb3IgZXhwb25lbnQgb2YKCW1vZHVsdXMgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzaXplIGNsYXVzZSBvbiB0YXJnZXRzIHdpdGggMTYtYml0CglJbnRlZ2VyLgoKCSogbGF5b3V0LmFkYiAoRGlzY3JpbWlmeSk6IEluIHRoZSBjYXNlIG9mIHByaXZhdGUgdHlwZXMsIHNldCBWdHlwIHRvCglmdWxsIHR5cGUgdG8gZml4IHR5cGUgbWlzbWF0Y2hlcyBvbiBjYWxscyB0byBzaXplIGZ1bmN0aW9ucyBmb3IKCWRpc2NyaW1pbmFudC1kZXBlbmRlbnQgYXJyYXkgY29tcG9uZW50cy4KCjIwMDQtMDQtMTkgIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW4gKGduYXRsaWItemN4KTogTmV3IHRhcmdldCwgZm9yIGJ1aWxkaW5nIGEgWkNYIHJ1bi10aW1lCglsaWIuCgoyMDA0LTA0LTE5ICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBtZGxsLXV0bC5hZGIgKExvY2F0ZSk6IE5ldyB2ZXJzaW9uIGlzIGlkZW1wb3RlbnQuCgoyMDA0LTA0LTE3ICBMYXVyZW50IEd1ZXJieSA8bGF1cmVudEBndWVyYnkubmV0PgoKCVBSIGFkYS8xNDk4OCAocGFydGlhbCkKCSogaW1wdW5pdC5hZGI6IEZpeCB0eXBvLgoKMjAwNC0wNC0xNCAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW46IFJlbW92ZSBvYnNvbGV0ZSBydHMtbm9uZSwgcnRzLWNlcnQsIGluc3RhbGwtcnRzLW5vbmUsCglhbmQgaW5zdGFsbC1ydHMtY2VydCB0YXJnZXRzLiAgUmVtb3ZlIGFsbCBnbmF0bGliIGFuZCBnbmF0dG9vbHMKCXRhcmdldHMgYW5kIGFsbCBvdGhlciBydHMtKiB0YXJnZXRzIChtb3ZlZCB0byBsaWJhZGEpLiAgUmVtb3ZlIChub3cpCgl1bnVzZWQgTWFrZSB2YXJpYWJsZXMgQ0hNT0QsIENITU9EX0FYX0ZMQUdTLCBzaGV4dCwgVEhSRUFEX0tJTkQsCglUUkFDRSwgR05BVExJQkZMQUdTLCBHTkFUTElCQ0ZMQUdTLgoKMjAwNC0wNC0wOCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtKTogU2hvcnRjdXQgcmV0dXJuaW5nIGVycm9yX21hcmtfbm9kZSBmb3IKCXN0YXRlbWVudHMgaW4gYW5ub3RhdGVfb25seV9tb2RlLgoJKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fTGFiZWwsIGNhc2UgTl9SZXR1cm5fU3RhdGVtZW50LAoJTl9Hb3RvX1N0YXRlbWVudCk6IE1ha2Ugc3RhdGVtZW50IHRyZWUgaW5zdGVhZCBvZiBnZW5lcmF0aW5nIGNvZGUuCgkodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9Bc3NpZ25tZW50X1N0YXRlbWVudCk6IE5vIGxvbmdlciBjaGVjawoJdHlwZV9hbm5vdGF0ZV9vbmx5LgoJKGduYXRfZXhwYW5kX3N0bXQsIGNhc2UgR09UT19TVE1ULCBjYXNlIExBQkVMX1NUTVQsIGNhc2UKCVJFVFVSTl9TVE1UKTogTmV3LgoJKGZpcnN0X25vbmRlbGV0ZWRfaW5zbiwgYnVpbGRfYmxvY2tfc3RtdCwgbWFrZV9leHByX3N0bXRfZnJvbV9ydGwpOgoJTmV3IGZjbnMuCgkoZ25hdF90b19nbnUpOiBDb2xsZWN0IGFueSBSVEwgZ2VuZXJhdGVkIGFuZCBkZWFsIHdpdGggaXQuCgkodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9BbmRfVGhlbik6IFJlZmluZSB3aGVuIGhhdmUgbm9uLW51bGwgUlRMX0VYUFIuCgkodHJlZV90cmFuc2Zvcm0gY2FzZSBOX0lmX1N0YXRlbWVudCk6IFJld3JpdGUgdG8gbWFrZSBJRl9TVE1ULgoJKGduYXRfZXhwYW5kX3N0bXQsIGNhc2UgQkxPQ0tfU1RNVCwgSUZfU1RNVCk6IE5ldyBjYXNlcy4KCgkqIGFkYS10cmVlLmRlZiAoR09UT19TVE1ULCBMQUJFTF9TVE1ULCBSRVRVUk5fU1RNVCk6IE5ldyB0cmVlIG5vZGVzLgoKCSogYWRhLXRyZWUuZGVmIChFWFBSX1NUTVQpOiBGaXggdHlwbyBpbiBuYW1lLgoJKEJMT0NLX1NUTVQsIElGX1NUTVQpOiBOZXcgbm9kZXMuCgoJKiBhZGEtdHJlZS5oIChHT1RPX1NUTVRfTEFCRUwsIExBQkVMX1NUTVRfTEFCRUwsCglMQUJFTF9TVE1UX0ZJUlNUX0lOX0VIKTogTmV3IG1hY3Jvcy4KCShSRVRVUk5fU1RNVF9FWFBSKTogTGlrZXdpc2UuCgoJKiBhZGEtdHJlZS5oOiAoQkxPQ0tfU1RNVF9MSVNULCBJRl9TVE1UX0NPTkQsIElGX1NUTVRfVFJVRSwKCUlGX1NUTVRfRUxTRUlGLCBJRl9TVE1UX0VMU0UpOiBOZXcgbWFjcm9zLgoKMjAwNC0wNC0wOCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogYXRyZWUuYWRzOiBDb3JyZWN0IGRvY3VtZW50YXRpb24gb24gZXh0ZW5kZWQgbm9kZXMuCgoJKiBsaW5rLmM6IFNldCBydW5fcGF0aF9vcHRpb24gZm9yIEZyZWVCU0QuCgoyMDA0LTA0LTA4ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1saWItcHJqLmFkYiAoQnVpbGRfTGlicmFyeS5DaGVja19MaWJzKTogT24gT3BlblZNUywgaWYgZGVjLmFsaSBpcwoJb25lIG9mIHRoZSBBTEkgZmlsZSwgZG8gbm90IGxpbmsgd2l0aCBERUMgbGliLgoKCSogcGFyLmFkYiBSZW1vdmUgdGhlIGxhc3QgdHdvIGNoYXJhY3RlcnMgKCIlcyIgb3IgIiViIikgd2hlbiBjaGVja2luZwoJaWYgYSBsYW5ndWFnZSBkZWZpbmVkIHVuaXQgbWF5IGJlIHJlY29tcGlsZWQuCgoyMDA0LTA0LTA4ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2g0LmFkYiAoUmVtb3ZlX0Fic3RyYWN0X09wZXJhdGlvbnMpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2Ugd2hlbgoJcmVtb3ZhbCBvZiBhYnN0cmFjdCBvcGVyYXRpb24gbGVhdmVzIG5vIHBvc3NpYmxlIGludGVycHJldGF0aW9uIGZvcgoJZXhwcmVzc2lvbi4KCgkqIHNlbV9ldmFsLmFkYiAoRXZhbF9RdWFsaWZpZWRfRXhwcmVzc2lvbik6IFVzZQoJU2V0X1JhaXNlc19Db25zdHJhaW50X0Vycm9yIG9uIG5vZGUgd2hlbiBuZWVkZWQsIHNvIHRoYXQgaXQgZG9lcyBub3QKCWdldCBvcHRpbWl6ZWQgYXdheSBieSBzdWJzZXF1ZW50IG9wdGltaXphdGlvbnMuCgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9JbnRyaW5zaWNfT3BlcmF0b3IpOiBTYXZlIGludGVycHJldGF0aW9ucyBvZgoJb3BlcmFuZHMgZXZlbiB3aGVuIHRoZXkgYXJlIG5vdCB3cmFwcGVkIGluIGEgdHlwZSBjb252ZXJzaW9uLgoKMjAwNC0wNC0wOCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX3ByYWcuYWRiIChTZXRfRXhwb3J0ZWQpOiBXYXJuIGFib3V0IG1ha2luZyBzdGF0aWMgYXMgcmVzdWx0IG9mCglleHBvcnQgb25seSB3aGVuIHRoZSBleHBvcnQgaXMgY29taW5nIGZyb20gc291cmNlLiBUaGlzIG1heSBiZSBub3QKCWJlIHRydWUgZS5nLiBvbiBWTVMgd2hlcmUgd2UgZXhwYW5kIGV4cG9ydCBwcmFnbWFzIGZvciBleGNlcHRpb24gY29kZXMKCXRvZ2V0aGVyIHdpdGggaW1wb3J0ZWQgb3IgZXhwb3J0ZWQgZXhjZXB0aW9ucywgYW5kIHdlIGRvbid0IHdhbnQgdGhlCgl1c2VyIHRvIGJlIHdhcm5lZCBhYm91dCBzb21ldGhpbmcgaGUgZGlkbid0IHdyaXRlLgoKMjAwNC0wNC0wOCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX3V0aWwuYWRiIChOb3RlX1Bvc3NpYmxlX01vZGlmaWNhdGlvbik6IFJlb3JnYW5pemUgdG8gcmVtb3ZlIGNvZGUKCWR1cGxpY2F0aW9uIGJldHdlZW4gbm9ybWFsIGVudGl0aWVzIGFuZCB0aG9zZSBkZWNsYXJlZCBhcyByZW5hbWluZ3MuCglObyBmdW5jdGlvbmFsIGNoYW5nZS4KCgkqIHMtZmlsZWlvLmFkcyAoRm9ybSk6IFJlbW92ZSBwcmFnbWEgSW5saW5lLCBhcyB3ZSBjYW5ub3QgY3VycmVudGx5CglpbmxpbmUgZnVuY3Rpb25zIHJldHVybmluZyBhbiB1bmNvbnN0cmFpbmVkIHJlc3VsdC4KCjIwMDQtMDQtMDggIEVyaWMgQm90Y2F6b3UgIDxlYm90Y2F6b3VAYWN0LWV1cm9wZS5mcj4KCgkqIHV0aWxzLmMgKHR5cGVfZm9yX21vZGUpOiBIYW5kbGUgQkxLbW9kZSBhbmQgVk9JRG1vZGUgcHJvcGVybHksIHRvCgljb25mb3JtIHRvIHdoYXQgb3RoZXIgZnJvbnQtZW5kcyBkby4KCjIwMDQtMDQtMDggIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiA1dm1sLXRndC5hZGI6IFVzZSBHYXMgaW5zdGVhZCBvZiBWTVMgTWFjcm8gdG8gYnVpbGQgYXV0byBpbml0IHNoYXJlZAoJbGlicmFyaWVzLgoKMjAwNC0wNC0wNiAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogYWRhaW50LmMgKERJUl9TRVBBUkFUT1IpOiBQcm9wZXJseSBzZXQgRElSX1NFUEFSQVRPUiBvbiBXaW4zMi4KCgkqIG9zaW50LmFkYiAoUHJvZ3JhbV9OYW1lKTogRG8gbm90IGxvb2sgcGFzdCBhIGRpcmVjdG9yeSBzZXBhcmF0b3IuCgoyMDA0LTA0LTA2ICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBhdHJlZS5hZGI6IFVwZGF0ZSBjb21tZW50IChSZXdyaXRlX1N1YnN0aXR1dGVfTm9kZSBubyBsb25nZXIgZXhpc3RzKS4KCgkqIGV4cF9jaDYuYWRiIChSZXdyaXRlX0Z1bmN0aW9uX0NhbGwpOiBDbGFyaWZ5IGRvY3VtZW50YXRpb24gb2YKCXJlcXVpcmVtZW50IGZvciBwcmVzZXJ2aW5nIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgYXNzaWdubWVudCBub2RlLgoKCSogc2luZm8uYWRzOiBVcGRhdGUgY29tbWVudCAoT3JpZ2luYWxfVHJlZSAtPiBPcmlnaW5hbF9Ob2RlKS4KCjIwMDQtMDQtMDYgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkoX19nbmF0X2luaXRpYWxpemUgW1Z4d29ya3NdKTogRW5hYmxlIHJlZmVyZW5jZXMgdG8gdGhlIGNydHN0dWZmIGJpdHMKCXdoZW4gc3VwcG9ydGVkLgoKMjAwNC0wNC0wNiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoNC5hZGIgKFJlbW92ZV9BYnN0cmFjdF9PcGVyYXRpb25zKTogRXh0ZW5kIHByZXZpb3VzIGNoYW5nZXMgdG8KCW9wZXJhdG9yIGNhbGxzIGluIGZ1bmN0aW9uYWwgbm90YXRpb24sIGFuZCBhcHBseQoJVW5pdmVyc2FsX0ludGVycHJldGF0aW9uIHRvIG9wZXJhbmRzLCBub3QgdG8gdGhlaXIgdHlwZS4KCjIwMDQtMDQtMDYgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogNXdkaXJ2YWwuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDQtMDQtMDYgIEVkIEZhbGlzICA8ZmFsaXNAZ25hdC5jb20+CgoJKiBnbmF0X3JtLnRleGk6IEltcHJvdmUgYSByZWZlcmVuY2UgdG8gdGhlIEdDQyBtYW51YWwKCjIwMDQtMDQtMDUgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogYWRhaW50LmgsIGFkYWludC5jOiBBZGQgZnVuY3Rpb24gX19nbmF0X25hbWVkX2ZpbGVfbGVuZ3RoCgoJKiBpbXB1bml0LmFkYjogQWRkIEFkYS5EaXJlY3RvcmllcyB0byB0aGUgbGlzdAoKCSogTWFrZWZpbGUuaW46IEFkZCBWTVMgYW5kIFdpbmRvd3MgdmVyc2lvbnMgb2YKCUFkYS5EaXJlY3Rvcmllcy5WYWxpZGl0eSBwYWNrYWdlIGJvZHkuCgoJKiBNYWtlZmlsZS5ydGw6IEFkZCBhLWRpcmVjdCBhbmQgYS1kaXJ2YWwKCgkqIG1saWItdGd0LmFkczogTWlub3IgY29tbWVudCB1cGRhdGUuCgoJKiBhLWRpcnZhbC5hZHMsIGEtZGlydmFsLmFkYiwgNXZkaXJ2YWwuYWRiLCA1d2RpcnZhbC5hZGIsCglhLWRpcmVjdC5hZHMsIGEtZGlyZWN0LmFkYjogTmV3IGZpbGVzLgoKMjAwNC0wNC0wNSAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJUFIgYWRhLzEzNjIwCgkqIG1ha2UuYWRiIChTY2FuX01ha2VfQXJnKTogUGFzcyBhbnkgLWZ4eHggc3dpdGNoZXMgdG8gZ25hdGxpbmssIG5vdAoJanVzdCB0byB0aGUgY29tcGlsZXIuCgoyMDA0LTA0LTA1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGEtZXhjZXB0LmFkYiAoRXhjZXB0aW9uX05hbWVfU2ltcGxlKTogTWFrZSBzdXJlIGxvd2VyIGJvdW5kIG9mCglyZXR1cm5lZCBzdHJpbmcgaXMgMS4KCgkqIGFsaS11dGlsLmFkYjogVXNlIHByb3BlciBzcGVjaWZpYyBmb3JtIGZvciBXYXJuaW5ncyAoT2ZmLCBlbnRpdHkpCgoJKiBldmFsX2ZhdC5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZy1jdXJleGMuYWRzOiBEb2N1bWVudCB0aGF0IGxvd2VyIGJvdW5kIG9mIHJldHVybmVkIHN0cmluZyB2YWx1ZXMKCWlzIGFsd2F5cyBvbmUuCgoJKiBnbmF0bGluay5hZGI6IEFkZCA/Pz8gY29tbWVudCBmb3IgcHJldmlvdXMgY2hhbmdlCgkobmVlZCB0byBkb2N1bWVudCB3aHkgdGhpcyBpcyBWTVMgc3BlY2lmaWMpCgoJKiBzLXN0b2VsZS5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogdGJ1aWxkLmFkczogTWlub3IgcmVmb3JtYXR0aW5nIHRocm91Z2hvdXQgKG5ldyBmdW5jdGlvbiBzcGVjcykKCgkqIHBhci1jaDEwLmFkYiAoUF9Db250ZXh0X0NsYXVzZSk6IEhhbmRsZSBjb21tYSBpbnN0ZWFkIG9mIHNlbWljb2xvbgoJYWZ0ZXIgV0lUSC4KCgkqIHNjbmcuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDQtMDQtMDUgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBldmFsX2ZhdC5hZGIgKE1hY2hpbmUpOiBSZW1vdmUgdW5uZWNlc3Nhcnkgc3VwcHJlc3Npb24gb2Ygd2FybmluZy4KCShMZWFkaW5nX1BhcnQpOiBTdGlsbCBwZXJmb3JtIHRydW5jYXRpb24gdG8gbWFjaGluZSBudW1iZXIgaWYgdGhlCglzcGVjaWZpZWQgcmFkaXhfZGlnaXRzIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdG8gbWFjaGluZV9tYW50aXNzYS4KCjIwMDQtMDQtMDUgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHBhci1jaDMuYWRiOiBDb21wbGV0ZSBkb2N1bWVudGF0aW9uIG9mIHByZXZpb3VzIGNoYW5nZQoJQ29ycmVjdCB3cm9uZyBzeW50YXggZG9jdW1lbnRhdGlvbiBvZiB0aGUgT0JKRUNUX0RFQ0xBUkFUSU9OIHJ1bGUKCShhbGlhc2VkIG11c3QgYXBwZWFyIGJlZm9yZSBjb25zdGFudCkuCgoJKiBwYXItY2g0LmFkYjogQ29tcGxldGUgZG9jdW1lbnRhdGlvbiBvZiBwcmV2aW91cyBjaGFuZ2UuCgoJKiBwYXItY2g2LmFkYjogQ29tcGxldGUgZG9jdW1lbnRhdGlvbiBvZiBwcmV2aW91cyBjaGFuZ2UuCgoJKiBzaW5mby5hZHM6IEZpeCB0eXBvIGluIGNvbW1tZW50LgoKMjAwNC0wNC0wNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMy5hZGIgKEluaGVyaXRfQ29tcG9uZW50cyk6IElmIGRlcml2ZWQgdHlwZSBpcyBwcml2YXRlIGFuZCBoYXMKCXN0b3JlZCBkaXNjcmltaW5hbnRzLCB1c2UgaXRzIGRpc2NyaW1pbmFudHMgdG8gY29uc3RyYWluIHBhcmVudCB0eXBlLAoJYXMgaXMgZG9uZSBmb3Igbm9uLXByaXZhdGUgZGVyaXZlZCByZWNvcmQgdHlwZXMuCgoJKiBzZW1fY2g0LmFkYiAoUmVtb3ZlX0Fic3RyYWN0X09wZXJhdGlvbnMpOiBOZXcgc3VicHJvZ3JhbSB0byBpbXBsZW1lbnQKCUFkYSAyMDA1IEFJLTMxMDogYW4gYWJzdHJhY3Qgbm9uLWRpc3BhdGNoaW5nIG9wZXJhdGlvbiBpcyBub3QgYQoJY2FuZGlkYXRlIGludGVycHJldGF0aW9uIGluIGFuIG92ZXJsb2FkZWQgY2FsbC4KCgkqIHRidWlsZC5hZGIgKFVuY2hlY2tlZF9Db252ZXJ0X1RvKTogUHJlc2VydmUgY29udmVyc2lvbiBub2RlIGlmCglleHByZXNzaW9uIGlzIE51bGwgYW5kIHRhcmdldCB0eXBlIGlzIG5vdCBhbiBhY2Nlc3MgdHlwZSAoZS5nLiBhCglub24tcHJpdmF0ZSBhZGRyZXNzIHR5cGUpLgoKMjAwNC0wNC0wNSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZXhwX2NoNi5hZGIgKFJld3JpdGVfRnVuY3Rpb25fQ2FsbCk6IFdoZW4gcmV3cml0aW5nIGFuIGFzc2lnbm1lbnQKCXN0YXRlbWVudCB3aG9zZSByaWdodC1oYW5kIHNpZGUgaXMgYW4gaW5saW5lZCBjYWxsLCBzYXZlIGEgY29weSBvZiB0aGUKCW9yaWdpbmFsIGFzc2lnbm1lbnQgc3VidHJlZSB0byBwcmVzZXJ2ZSBlbm91Z2ggY29uc2lzdGVuY3kgZm9yCglBbmFseXplX0Fzc2lnbm1lbnQgdG8gcHJvY2VlZC4KCgkqIHNlbV9jaDUuYWRiIChBbmFseXplX0Fzc2lnbm1lbnQpOiBSZW1vdmUgYSBjb3N0bHkgY29weSBvZiB0aGUKCWNvbXBsZXRlIGFzc2lnbm1lbnQgc3VidHJlZSB3aGljaCBpcyBub3cgdW5uZWNlc3NhcnksIGFzIHRoZSBleHBhbnNpb24KCW9mIGlubGluZWQgY2FsbCBoYXMgYmVlbiBpbXByb3ZlZCB0byBwcmVzZXJ2ZSBhIGNvbnNpc3RlbnQgYXNzaWdubWVudAoJdHJlZS4gIE5vdGVfUG9zc2libGVfTW9kaWZpY2F0aW9uIG11c3QgYmUgY2FsbGVkIG9ubHkKCWFmdGVyIGNoZWNrcyBoYXZlIGJlZW4gYXBwbGllZCwgb3IgZWxzZSB1bm5lY2Vzc2FyeSBjaGVja3Mgd2lsbAoJYmUgZ2VuZXJhdGVkLgoKCSogc2VtX3V0aWwuYWRiIChOb3RlX1Bvc3NpYmxlX01vZGlmaWNhdGlvbik6IFJlb3JnYW5pc2UgdGhlIGhhbmRsaW5nCglvZiBleHBsaWNpdCBkZXJlZmVyZW5jZXMgdGhhdCBkbyBub3QgQ29tZV9Gcm9tX1NvdXJjZToKCSAtIGJlIHNlbGVjdGl2ZSBvbiBjYXNlcyB3aGVyZSB3ZSBtdXN0IGdvIGJhY2sgdG8gdGhlIGRlcmVmZXJlbmNlZAoJICAgcG9pbnRlciAoYW4gYXNzaWdubWVudCB0byBhbiBpbXBsaWNpdCBkZXJlZmVyZW5jZSBtdXN0IG5vdCBiZQoJICAgcmVjb3JkZWQgYXMgbW9kaWZ5aW5nIHRoZSBwb2ludGVyKTsKCSAtIGRvIG5vdCByZWx5IG9uIE9yaWdpbmFsX05vZGUgYmVpbmcgcHJlc2VudCAoQW5hbHl6ZV9Bc3NpZ25tZW50CgkgICBjYWxscyBOb3RlX1Bvc3NpYmxlX01vZGlmaWNhdGlvbiBvbiBhIGNvcGllZCB0cmVlKS4KCgkqIHNlbV93YXJuLmFkYiAoQ2hlY2tfUmVmZXJlbmNlcyk6IFdoZW4gYW4gdW5zZXQgcmVmZXJlbmNlIHRvIGEgcG9pbnRlcgoJdGhhdCBpcyBuZXZlciBhc3NpZ25lZCBpcyBlbmNvdW50ZXJlZCwgcHJlZmVyICc8cG9pbnRlcj4gbWF5IGJlIG51bGwnCgl3YXJuaW5nIG92ZXIgJzxwb2ludGVyPiBpcyBuZXZlciBhc3NpZ25lZCBhIHZhbHVlJy4KCjIwMDQtMDQtMDUgIFJhbW9uIEZlcm5hbmRleiAgPGZlcm5hbmRlekBnbmF0LmNvbT4KCgkqIHRyYWNlYmFrLmM6IENoYW5nZSBTVE9QX0ZSQU1FIGluIHBwYyB2eHdvcmtzIHRvIGJlIGNvbXBsaWFudCB3aXRoCgl0aGUgQUJJLgoKMjAwNC0wNC0wNSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogNWdtYXN0b3AuYWRiIChQb3BfRnJhbWUpOiBDb21tZW50IG91dCB0aGUgcHJhZ21hIExpbmtlcl9PcHRpb24gZm9yCglsaWJleGMuIFdlIGN1cnJlbnRseSBkb24ndCByZWZlcmVuY2UgYW55dGhpbmcgaW4gdGhpcyBsaWJyYXJ5IGFuZAoJbGlua2luZyBpdCBpbiB0cmlnZ2VycyBsaW5rZXIgd2FybmluZ3Mgd2UgZG9uJ3Qgd2FudCB0byBzZWUuCgoJKiBpbml0LmM6IFVwZGF0ZSBjb21tZW50cy4KCjIwMDQtMDQtMDUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSk6IFVzZSBUWVBFX1JFQURPTkxZLgoJKiB1dGlscy5jIChjcmVhdGVfZmllbGRfZGVjbCk6IExpa2V3aXNlLgoJKiB1dGlsczIuYyAoYnVpbGRfdW5hcnlfb3AsIGduYXRfYnVpbGRfY29uc3RydWN0b3IpOiBMaWtld2lzZS4KCjIwMDQtMDQtMDIgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdC1zdHlsZS50ZXhpLCBnbmF0X3JtLnRleGksIGduYXRfdWduLnRleGk6IFJlbW92ZSBSQ1MgdGFncy4KCVJlcGxhY2UgaWZpbmZvIGJ5IGlmbm90dGV4LCB0byBtYWtlIG1ha2VpbmZvIC0taHRtbCBoYXBweSBhZ2Fpbi4KCUFkZCBpbmZvIGRpcmVjdG9yeSBlbnRyeSBhbmQgY2F0ZWdvcnkuCgoyMDA0LTA0LTAyICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiB1dGlscy5jOiBJbmNsdWRlIGZ1bmN0aW9uLmgKCShlbmRfc3VicHJvZ19ib2R5KTogQ2xlYXIgREVDTF9TVFJVQ1RfRlVOQ1RJT04uCgoyMDA0LTA0LTAxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCglQUiBhZGEvMTQxNTAKCSogTWFrZS1sYW5nLmluOiBDbGVhbiB1cCBnZW5lcmF0aW9uIG9mIGRvY3VtZW50YXRpb24KCgkqIGduYXQtc3R5bGUudGV4aSwgZ25hdF9ybS50ZXhpLCB1Z193b3JkczogUmVzeW5jIHdpdGggQWRhQ29yZSB2ZXJzaW9uCgoJKiB4Z25hdHVnLmFkYjogUmVtb3ZlZCwgcmVwbGFjZWQgYnkgeGduYXR1Z24uYWRiCgoJKiB4Z25hdHVnbi5hZGI6IFJlcGxhY2VzIHhnbmF0dWcuYWRiCgoJKiBnbmF0X3VnLnRleGk6IFJlbW92ZWQsIHJlcGxhY2VkIGJ5IGduYXRfdWduLnRleGkKCgkqIGduYXRfdWduLnRleGk6IFJlcGxhY2VzIGduYXRfdWcudGV4aS4gUmVzeW5jIHdpdGggQWRhQ29yZSB2ZXJzaW9uCgoJKiBnbmF0X3VnX3VueC50ZXhpLCBnbmF0X3VnX3Ztcy50ZXhpLCBnbmF0X3VnX3Z4dy50ZXhpLAoJZ25hdF91Z193bnQudGV4aTogUmVtb3ZlZC4KCjIwMDQtMDQtMDEgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogdXRpbHMyLmM6IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLgoKMjAwNC0wNC0wMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBjaGVja3MuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcgdGhyb3VnaG91dAoJTm90ZSB0aGF0IHByZXYgY2hlY2tpbiBhZGRlZCBSTSByZWZlcmVuY2UgdG8gYWxpZ25tZW50IHdhcm5pbmcKCjIwMDQtMDQtMDEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9hZ2dyLmFkYiAoR2V0X0NvbXBvbmVudF9WYWwpOiBUcmVhdCBhIHN0cmluZyBsaXRlcmFsIGFzCglub24tc3RhdGljIHdoZW4gYnVpbGRpbmcgYWdncmVnYXRlIGZvciBiaXQtcGFja2VkIGFycmF5LgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX1NsaWNlKTogSWYgYSBwYWNrZWQgc2xpY2UgaXMgYW4gYWN0dWFsIG9mIGEKCWZ1bmN0aW9uIGNhbGwgdGhhdCBpcyBpdHNlbGYgdGhlIGFjdHVhbCBpbiBhIHByb2NlZHVyZSBjYWxsLCBidWlsZAoJdGVtcG9yYXJ5IGZvciBpdC4KCgkqIGV4cF9wYWtkLmFkYiAoRXhwYW5kX0JpdF9QYWNrZWRfRWxlbWVudF9TZXQpOiBJZiByaWdodC1oYW5kIHNpZGUgaXMKCWEgc3RyaW5nIGxpdGVyYWwsIGNyZWF0ZSBhIHRlbXBvcmFyeSBmb3IgaXQsIGNvbnN0YW50IGZvbGRpbmcgb25seQoJaGFuZGxlcyBzY2FsYXJzIGhlcmUuCgoyMDA0LTA0LTAxICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGFsaS11dGlsLmFkYiAoUG9zdF9TY2FuLCBFcnJvcl9Nc2csIEVycm9yX01zZ19TLCBFcnJvcl9Nc2dfU0MsCglFcnJvcl9Nc2dfU1ApOiBOZXcgZW1wdHkgcHJvY2VkdXJlcyB0byBpbnN0YW50aWF0ZSB0aGUgU2Nhbm5lci4KCShTdHlsZSwgU2Nhbm5lcik6IEluc3RhbnRpYXRpb25zIG9mIFN0eWxlZyBhbmQgU2NuZyB0byBiZSBhYmxlIHRvIHNjYW4KCXRva2Vucy4KCShBY2N1bXVsYXRlX0NoZWNrc3VtLCBJbml0aWFsaXplX0NoZWNrc3VtKTogUmVtb3ZlIHByb2NlZHVyZXMuCgkoR2V0X0ZpbGVfQ2hlY2tzdW0pOiBVc2UgdGhlIGluc3RhbnRpYXRlZCBzY2FubmVyIHRvIHNjYW4gYWxsIHRoZSB0b2tlbnMKCWFuZCBnZXQgdGhlIGNoZWNrc3VtLgoKCSogbWFrZS5hZGIgKEduYXRtYWtlKTogRG8gbm90IGluc2VydCBpbnRvIFEgdGhlIE1haW5fU291cmNlIGlmIGl0IGlzCglhbHJlYWR5IGluIHRoZSBRLgoJSW5jcmVhc2UgdGhlIE1hcmtpbmdfTGFiZWwgYXQgdGhlIGVuZCBvZiB0aGUgTXVsdGlwbGVfTWFpbl9Mb29wLAoJaW5zdGVhZCBvZiBhdCB0aGUgYmVnaW5uaW5nLgoKCSogb3NpbnQuYWRiIChMaWJfRmlsZV9OYW1lKTogVXNlIE11bHRpX1VuaXRfSW5kZXhfQ2hhcmFjdGVyLCBub3QgJ34nCglkaXJlY3RseS4KCShPc2ludCBwYWNrYWdlIGVsYWJvcmF0aW9uKTogQ2hhbmdlIE11bHRpX1VuaXRfSW5kZXhfQ2hhcmFjdGVyIHRvICckJyBpZgoJb24gVk1TLgoKCSogb3NpbnQuYWRzIChNdWx0aV9Vbml0X0luZGV4X0NoYXJhY3Rlcik6IE5ldyBDaGFyYWN0ZXIgZ2xvYmFsIHZhcmlhYmxlCgoJKiBvc2ludC1jLmFkYiAoU2V0X0xpYnJhcnlfSW5mb19OYW1lKTogVXNlIE11bHRpX1VuaXRfSW5kZXhfQ2hhcmFjdGVyLAoJbm90ICd+JyBkaXJlY3RseS4KCgkqIHBhci5hZGI6IFJlbW92ZSB0ZXN0IG9uIGZpbGUgbmFtZSB0byBkZXRlY3QgbGFuZ3VhZ2UgZGVmaW5lZCB1bml0cy4KCUFkZCB0ZXN0IG9uIHVuaXQgbmFtZSwgYWZ0ZXIgcGFyc2luZywgdG8gZGV0ZWN0IGxhbmd1YWdlIGRlZmluZWQgdW5pdHMKCXRoYXQgYXJlIG5vdCBjb21waWxlZCB3aXRoIC1nbmF0ZyAoZXhjZXB0IFN5c3RlbS5SUEMgYW5kIGl0cyBjaGlsZHJlbikKCgkqIHBhci1jaDEwLmFkYiAoUF9Db21waWxhdGlvbl9Vbml0KTogSW4gbXVsdGktdW5pdCBzb3VyY2VzLCBzY2FuIHRoZQoJZm9sbG93aW5nIHVuaXRzIHdpdGhvdXQgc3R5bGUgY2hlY2tpbmcuCgoJKiBzd2l0Y2gtYy5hZGI6IENoYW5nZSAtZ25hdEMgdG8gLWduYXRlSQoKCSogdXNhZ2UuYWRiOiBEb2N1bWVudCBuZXcgc3dpdGNoIC1nbmF0ZUlubm4KCgkqIHNjbmcuYWRiIChBY2N1bXVsYXRlX1Rva2VuX0NoZWNrc3VtKTogTmV3IHByb2NlZHVyZQoJKFNjYW4pOiBDYWxsIEFjY3VtdWxhdGVfVG9rZW5fQ2hlY2tzdW0gYWZ0ZXIgZWFjaCBpZGVudGlmaWVyLCByZXNlcnZlZAoJd29yZCBvciBsaXRlcmFsIG51bWJlci4KCShTY2FuLk5saXQuU2Nhbl9JbnRlZ2VyKTogRG8gbm90IGFjY3VtdWxhdGUgaW50ZXJuYWwgJ18nIGluIGxpdHRlcmFsCgludW1iZXJzLgoKMjAwNC0wNC0wMSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogYS10YXNhdHQuYWRiLAoJZy1jb21saW4uYWRiLCBzaW5wdXQtYy5hZGIsIHMtc2Vjc3RhLmFkYiwgcy10cG9ib3AuYWRiLAoJc3dpdGNoLW0uYWRiLCA1NnRhcHJvcC5hZGIsIDVnaW50ZXJyLmFkYiwgNWdtYXN0b3AuYWRiLAoJNXN0YXByb3AuYWRiLCA1dmludGVyci5hZGIsIDV2dGFwcm9wLmFkYiwgNXZ0cG9wZGUuYWRiLAoJNXZ0cG9wZGUuYWRiOiBBZGQgbWlzc2luZyAnY29uc3RhbnQnIGtleXdvcmRzLgoKMjAwNC0wNC0wMSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogcGFyLWNoNC5hZGI6IChQX0FsbG9jYXRvcik6IENvZGUgY2xlYW51cAoKCSogc2VtX2NoMy5hZGIgKEFjY2Vzc19EZWZpbml0aW9uKTogUHJvcGVybHkgc2V0IHRoZSBudWxsLWV4Y2x1ZGluZwoJYXR0cmlidXRlLgoKCSogc2luZm8uYWRzOiBDb21wbGV0ZSBkb2N1bWVudGF0aW9uIG9mIHByZXZpb3VzIGNoYW5nZQoKMjAwNC0wNC0wMSAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCSogZ25hdGxpbmsuYWRiIChQcm9jZXNzX0JpbmRlcl9GaWxlKTogUmVtb3ZlIGR1cGxpY2F0ZSBsaW5rZXIgb3B0aW9ucwoJb25seSBvbiBWTVMuICBUaGlzIHNwZWNpYWwgaGFuZGxpbmcgd2FzIGRvbmUgYmVjYXVzZSBhbiBvbGQgR05VL2xkIGJ1ZwoJb24gV2luZG93cyB3aGljaCBoYXMgYmVlbiBmaXhlZC4KCjIwMDQtMDQtMDEgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDQtMDMtMzEgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgbWFrZV90eXBlX2Zyb21fc2l6ZSk6CglVc2UgVFlQRV9VTlNJR05FRCwgbm90IFRSRUVfVU5TSUdORUQuCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtLCBjb252ZXJ0X3dpdGhfY2hlY2spOiBMaWtld2lzZS4KCSogdXRpbHMuYyAoZ25hdF9zaWduZWRfb3JfdW5zaWduZWRfdHlwZSk6IExpa2V3aXNlLgoJKGJ1aWxkX3Ztc19kZXNjcmlwdG9yLCB1bmNoZWNrZWRfY29udmVydCk6IExpa2V3aXNlLgoJKiB1dGlsczIuYyAobm9uYmluYXJ5X21vZHVsYXJfb3BlcmF0aW9uKTogTGlrZXdpc2UuCgoyMDA0LTAzLTI5ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBjaGVja3MuYWRiIChOdWxsX0V4Y2x1c2lvbl9TdGF0aWNfQ2hlY2tzKTogTmV3IHN1YnByb2dyYW0KCShJbnN0YWxsX051bGxfRXhjbHVkaW5nX0NoZWNrKTogTG9jYWwgc3VicHJvZ3JhbSB0aGF0IGRldGVybWluZXMgd2hldGhlcgoJYW4gYWNjZXNzIG5vZGUgcmVxdWlyZXMgYSBydW50aW1lIGFjY2VzcyBjaGVjayBhbmQgaWYgc28gaW5zZXJ0cyB0aGUKCWFwcHJvcHJpYXRlIHJ1bi10aW1lIGNoZWNrLgoJKEFwcGx5X0FjY2Vzc19DaGVjayk6IENhbGwgSW5zdGFsbF9OdWxsX0V4Y2x1ZGluZyBjaGVjayBpZiByZXF1aXJlZAoJKEFwcGx5X0NvbnN0cmFpbnRfQ2hlY2spOiBDYWxsIEluc3RhbGxfTnVsbF9FeGNsdWRpbmcgY2hlY2sgaWYgcmVxdWlyZWQKCgkqIGNoZWNrcy5hZHM6IChOdWxsX0V4Y2x1c2lvbl9TdGF0aWNfQ2hlY2tzKTogTmV3IHN1YnByb2dyYW0KCgkqIGVpbmZvLmFkczogRml4IHR5cG8gaW4gY29tbWVudAoKCSogZXhwX2NoMy5hZGIgKEJ1aWxkX0Fzc2lnbm1lbnQpOiBHZW5lcmF0ZSBjb252ZXJzaW9uIHRvIHRoZQoJbnVsbC1leGNsdWRpbmcgdHlwZSB0byBmb3JjZSB0aGUgY29ycmVzcG9uZGluZyBydW4tdGltZSBjaGVjay4KCShFeHBhbmRfTl9PYmplY3RfRGVjbGFyYXRpb24pOiBHZW5lcmF0ZSBjb252ZXJzaW9uIHRvIHRoZSBudWxsLWV4Y2x1ZGluZwoJdHlwZSB0byBmb3JjZSB0aGUgY29ycmVzcG9uZGluZyBydW4tdGltZSBjaGVjay4KCgkqIGV4cF9jaDUuYWRiIChFeHBhbmRfTl9Bc3NpZ25tZW50X1N0YXRlbWVudCk6IEdlbmVyYXRlIGNvbnZlcnNpb24gdG8KCXRoZSBudWxsLWV4Y2x1ZGluZyB0eXBlIHRvIGZvcmNlIHRoZSBjb3JyZXNwb25kaW5nIHJ1bi10aW1lIGNoZWNrLgoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9DYWxsKTogRG8gbm90IGdlbmVyYXRlIHRoZSBydW4tdGltZSBjaGVjayBpbgoJY2FzZSBvZiBhY2Nlc3MgdHlwZXMgdW5sZXNzIHRoZXkgaGF2ZSB0aGUgbnVsbC1leGNsdWRpbmcgYXR0cmlidXRlLgoKCSogc3ByaW50LmFkYiAoU3ByaW50X05vZGVfQWN0dWFsKTogR2l2ZSBzdXBwb3J0IHRvIHRoZSBudWxsLWV4Y2x1c2luZwoJcGFydC4KCgkqIGV4cF91dGlsLmFkczogRml4IHR5cG8gaW4gY29tbWVudAoKCSogcGFyLmFkYiAoUF9OdWxsX0V4Y2x1c2lvbik6IE5ldyBzdWJwcm9ncmFtCgkoUF9TdWJ0eXBlX0luZGljYXRpb24pOiBOZXcgZm9ybWFsIHRoYXQgaW5kaWNhdGVzIGlmIHRoZSBudWxsLWV4Y2x1ZGluZwoJcGFydCBoYXMgYmVlbiBzY2FubmVkLW91dCBhbmQgaXQgd2FzIHByZXNlbnQKCgkqIHBhci1jaDMuYWRiLCBwYXItY2g0LmFkYiwgcGFyLWNoNi5hZGI6IEdpdmUgc3VwcG9ydCB0byBBSS0yMzEKCgkqIHNlbV9hZ2dyLmFkYjogKENoZWNrX0Nhbl9OZXZlcl9CZV9OdWxsKTogTmV3IHN1YnByb2dyYW0KCShBZ2dyZWdhdGVfQ29uc3RyYWludF9DaGVja3MpOiBHZW5lcmF0ZSBjb252ZXJzaW9uIHRvIHRoZSBudWxsLWV4Y2x1ZGluZwoJdHlwZSB0byBmb3JjZSB0aGUgY29ycmVzcG9uZGluZyBydW4tdGltZSBjaGVjawoJKFJlc29sdmVfQWdncmVnYXRlKTogUHJvcGFnYXRlIHRoZSBudWxsLWV4Y2x1ZGluZyBhdHRyaWJ1dGUgdG8gdGhlIGFycmF5Cgljb21wb25lbnRzCgkoUmVzb2x2ZV9BcnJheV9BZ2dyZWdhdGUpOiBDYXJyeSBvdXQgc29tZSBzdGF0aWMgY2hlY2tzCgkoUmVzb2x2ZV9SZWNvcmRfQWdncmVnYXRlLkdldF9WYWx1ZSk6IENhcnJ5IG91dCBzb21lIHN0YXRpYyBjaGVjawoKCSogc2VtX2NoMy5hZGIgKEFjY2Vzc19EZWZpbml0aW9uKTogSW4gQWRhIDBZIHRoZSBDYW5fTmV2ZXJfQmVfTnVsbAoJYXR0cmlidXRlIG11c3QgYmUgc2V0IG9ubHkgaWYgc3BlY2lmaWVkIGJ5IG1lYW5zIG9mIHRoZSBudWxsLWV4Y2x1ZGluZwoJcGFydC4gSW4gYWRkaXRpb24sIHdlIG11c3QgYWxzbyBwcm9wYWdhdGUgdGhlIGFjY2Vzcy1jb25zdGFudCBhdHRyaWJ1dGUKCWlmIHByZXNlbnQuCgkoQWNjZXNzX1N1YnByb2dyYW1fRGVjbGFyYXRpb24sIEFjY2Vzc19UeXBlX0RlY2xhcmF0aW9uLAoJQW5hbHl6ZV9Db21wb25lbnRfRGVjbGFyYXRpb24sIEFuYWx5emVfT2JqZWN0X0RlY2xhcmF0aW9uLAoJQXJyYXlfVHlwZV9EZWNsYXJhdGlvbiwgUHJvY2Vzc19EaXNjcmltaW5hbnRzLAoJQW5hbHl6ZV9TdWJ0eXBlX0RlY2xhcmF0aW9uKTogUHJvcGFnYXRlIHRoZSBudWxsLWV4Y2x1ZGluZyBhdHRyaWJ1dGUKCWFuZCBjYXJyeSBvdXQgc29tZSBzdGF0aWMgY2hlY2tzLgoJKEJ1aWxkX0Rlcml2ZWRfQWNjZXNzX1R5cGUpOiBTZXQgdGhlIG51bGwtZXhjbHVkaW5nIGF0dHJpYnV0ZQoJKERlcml2ZWRfVHlwZV9EZWNsYXJhdGlvbiwgUHJvY2Vzc19TdWJ0eXBlKTogQ2Fycnkgb3V0IHNvbWUgc3RhdGljCgljaGVja3MuCgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9BbGxvY2F0b3IpOiBDYXJyeSBvdXQgc29tZSBzdGF0aWMgY2hlY2tzCgoJKiBzZW1fY2g1LmFkYiAoQW5hbHl6ZV9Bc3NpZ25tZW50KTogQ2Fycnkgb3V0IHNvbWUgc3RhdGljIGNoZWNrcwoKCSogc2VtX2NoNi5hZGIgKFByb2Nlc3NfRm9ybWFscyk6IENhcnJ5IG91dCBzb21lIHN0YXRpYyBjaGVja3MuCgkoU2V0X0FjdHVhbF9TdWJ0eXBlcyk6IEdlbmVyYXRlIG51bGwtZXhjbHVkaW5nIHN1YnR5cGUgaWYgdGhlCgludWxsLWV4Y2x1ZGluZyBwYXJ0IHdhcyBwcmVzZW50OyBpdCBpcyBub3QgcmVxdWlyZWQgdG8gYmUgZG9uZSBoZXJlIGluCgljYXNlIG9mIGFub255bW91cyBhY2Nlc3MgdHlwZXMuCgkoU2V0X0Zvcm1hbF9Nb2RlKTogQWRhIDBZIGFsbG93cyBhbm9ueW1vdXMgYWNjZXNzIHRvIGhhdmUgdGhlIG51bGwKCXZhbHVlLgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfQWN0dWFscyk6IENhcnJ5IG91dCBzb21lIHN0YXRpYyBjaGVjawoJKFJlc29sdmVfTnVsbCk6IEFsbG93IG51bGwgaW4gYW5vbnltb3VzIGFjY2VzcwoKCSogc2luZm8uYWRiOiBOZXcgc3VicHJvZ3JhbSBOdWxsX0V4Y2x1c2lvbl9QcmVzZW50CglBbGxfUHJlc2VudCBhbmQgQ29uc3RhbnRfUHJlc2VudCBhdmFpbGFibGUgb24gYWNjZXNzX2RlZmluaXRpb24gbm9kZXMKCgkqIHNpbmZvLmFkczogTmV3IGZsYWcgTnVsbF9FeGNsdXNpb25fUHJlc2VudCBvbiBzdWJ0eXBlX2RlY2xhcmF0aW9uLAoJb2JqZWN0X2RlY2xhcmF0aW9uLCBkZXJpdmVkX3R5cGVfZGVmaW5pdGlvbiwgY29tcG9uZW50X2RlZmluaXRpb24sCglkaXNjcmltaW5hbnRfc3BlY2lmaWNhdGlvbiwgYWNjZXNzX3RvX29iamVjdF9kZWZpbml0aW9uLAoJYWNjZXNzX2Z1bmN0aW9uX2RlZmluaXRpb24sIGFsbG9jYXRvciwgYWNjZXNzX3Byb2NlZHVyZV9kZWZpbml0aW9uLAoJYWNjZXNzX2RlZmluaXRpb24sIHBhcmFtZXRlcl9zcGVjaWZpY2F0aW9uLCBBbGxfUHJlc2VudCBhbmQKCUNvbnN0YW50X1ByZXNlbnQgZmxhZ3MgYXZhaWxhYmxlIG9uIGFjY2Vzc19kZWZpbml0aW9uIG5vZGVzLgoKMjAwNC0wMy0yOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBmbmFtZS5hZGIsIGZuYW1lLmFkcywgZm5hbWUtc2YuYWRiLCBmbmFtZS11Zi5hZGIsIGZuYW1lLXVmLmFkcywKCWduYXQxZHJ2LmFkYiwgbGliLmFkYiwgbGliLmFkcywgbGliLWxvYWQuYWRiLCBsaWItd3JpdC5hZGIsCglvcHQuYWRzLCBvc2ludC5hZGIsIG9zaW50LmFkcywgb3NpbnQtYy5hZGIsIHBhci5hZGIsCglwYXItY2gxMC5hZGIsIHBhci1sb2FkLmFkYiwgcGFyLXByYWcuYWRiLCBzZm5fc2Nhbi5hZGIsCglzZm5fc2Nhbi5hZHMsIHNpbnB1dC1sLmFkYiwgc2lucHV0LWwuYWRzLCBzd2l0Y2gtYy5hZGIsCglzZW1fcHJhZy5hZGI6IFVwZGF0ZXMgdG8gaGFuZGxlIG11bHRpcGxlIHVuaXRzL2ZpbGUKCgkqIHBhci5hZGI6IENoYW5nZSB0ZXN0IGZvciBzLXJwYyB0byBzLXJwIGZvciBkZXRlY3RpbmcgcnBjIGFuZCBjaGlsZHJlbgoKCSogcGFyLmFkYiwgbWVtdHJhY2suYWRiLCBwcmotbWFrci5hZGIsIHByai1wYXJ0LmFkYiwKCXNlbV91dGlsLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzZW1fY2gxMi5hZGI6IEFkZCBjb21tZW50IGZvciBwcmV2aW91cyBjaGFuZ2UKCjIwMDQtMDMtMjkgIExhdXJlbnQgUGF1dGV0ICA8cGF1dGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBvc2ludC5hZGIgKEV4ZWN1dGFibGVfUHJlZml4KTogU2V0IEV4ZWNfTmFtZSB0byB0aGUgY3VycmVudAoJZXhlY3V0YWJsZSBuYW1lIHdoZW4gbm90IGluaXRpYWxpemVkLiBPdGhlcndpc2UsIHVzZSBpdHMgY3VycmVudCB2YWx1ZS4KCgkqIG9zaW50LmFkcyAoRXhlY19OYW1lKTogTW92ZSBFeGVjX05hbWUgZnJvbSBib2R5IHRvIHNwZWMgaW4gb3JkZXIgdG8KCWluaXRpYWxpemUgaXQgdG8gYW5vdGhlciBleGVjdXRhYmxlIG5hbWUgdGhhbiB0aGUgY3VycmVudCBvbmUuIFRoaXMKCWFsbG93cyB0byBjb25maWd1cmUgcGF0aHMgZm9yIGFuIGV4ZWN1dGFibGUgbmFtZSAoZ25hdG1ha2UpIGRpZmZlcmVudAoJZnJvbSB0aGUgY3VycmVudCBvbmUgKGduYXRkaXN0KS4KCjIwMDQtMDMtMjkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IEEgY2FsbCB0byBhIGZ1bmN0aW9uIGRlY2xhcmVkIGluIHRoZQoJY3VycmVudCB1bml0IGNhbm5vdCBiZSBpbmxpbmVkIGlmIGl0IGFwcGVhcnMgaW4gdGhlIGJvZHkgb2YgYSB3aXRoZWQKCXVuaXQsIHRvIGF2b2lkIG9yZGVyIG9mIGVsYWJvcmF0aW9uIHByb2JsZW1zIGluIGdpZ2kuCgoJKiBleHBfY2g5LmFkYiAoQnVpbGRfUHJvdGVjdGVkX1N1Yl9TcGVjaWZpY2F0aW9uKTogR2VuZXJhdGUgZGVidWdnaW5nCglpbmZvcm1hdGlvbiBmb3IgcHJvdGVjdGVkICh3cmFwcGVyKSBvcGVyYXRpb24gYXMgd2VsbCwgdG8gc2ltcGxpZnkgZ2RiCgl1c2UuCgoJKiBzZW1fY2g2LmFkYiAoQW5hbHl6ZV9TdWJwcm9ncmFtX0JvZHkpOiBGb3IgYSBwcml2YXRlIG9wZXJhdGlvbiBpbiBhCglwcm90ZWN0ZWQgYm9keSwgaW5kaWNhdGUgdGhhdCB0aGUgZW50aXR5IGZvciB0aGUgZ2VuZXJhdGVkIHNwZWMgY29tZXMKCWZyb20gc291cmNlLCB0byBlbnN1cmUgdGhhdCByZWZlcmVuY2VzIGFyZSBwcm9wZXJseSBnZW5lcmF0ZWQgZm9yIGl0LgoJKEJ1aWxkX0JvZHlfVG9fSW5saW5lKTogRG8gbm90IGlubGluZSBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhCgljb250cm9sbGVkIHR5cGUuCgoJKiBzZW1fcHJhZy5hZGIgKFByb2Nlc3NfQ29udmVudGlvbik6IElmIHN1YnByb2dyYW0gaXMgb3ZlcmxvYWRlZCwgb25seQoJYXBwbHkgY29udmVudGlvbiB0byBob21vbnltcyB0aGF0IGFyZSBkZWNsYXJlZCBleHBsaWNpdGx5LgoKCSogc2VtX3Jlcy5hZGIgKE1ha2VfQ2FsbF9JbnRvX09wZXJhdG9yKTogSWYgdGhlIG9wZXJhdGlvbiBpcyBhIGZ1bmN0aW9uCgl0aGF0IHJlbmFtZXMgYW4gZXF1YWxpdHkgb3BlcmF0b3IgYW5kIHRoZSBvcGVyYW5kcyBhcmUgb3ZlcmxvYWRlZCwKCXJlc29sdmUgdGhlbSB3aXRoIHRoZSBkZWNsYXJlZCBmb3JtYWwgdHlwZXMsIGJlZm9yZSByZXdyaXRpbmcgYXMgYW4KCW9wZXJhdG9yLgoKMjAwNC0wMy0yOSAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwNC0wMy0yNSAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhY3QtZXVyb3BlLmZyPgoKCSogbWVtdHJhY2suYWRiOiBMb2cgcmVhbGxvYyBjYWxscywgd2hpY2ggYXJlIHRyZWF0ZWQgYXMgZnJlZSBmb2xsb3dlZAoJYnkgYWxsb2MuCgoyMDA0LTAzLTI1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai1tYWtyLmFkYiAoUHJvY2Vzc19EaXJlY3Rvcmllcyk6IERldGVjdCB3aGVuIGEgZmlsZSBjb250YWlucwoJc2V2ZXJhbCB1bml0cy4gRG8gbm90IGluY2x1ZGUgc3VjaCBmaWxlcyBpbiB0aGUgY29uZmlnIHByYWdtYXMgb3IKCWluIHRoZSBuYW1pbmcgc2NoZW1lLgoKCSogcHJqLW5tc2MuYWRiIChSZWNvcmRfU291cmNlKTogTmV3IHBhcmFtZXRlciBUcnVzdGVkX01vZGUuCglSZXNvbHZlIGxpbmtzIG9ubHkgd2hlbiBub3QgaW4gVHJ1c3RlZF9Nb2RlLgoJKEZpbmRfU291cmNlcywgUmVjdXJzaXZlX0ZpbmRfRGlycywgRmluZF9Tb3VyY2VfRGlycywgTG9jYXRlX0RpcmVjdG9yeSk6CglEbyBub3QgcmVzb2x2ZSBsaW5rcyBmb3IgdGhlIGRpc3BsYXkgbmFtZXMuCgoJKiBwcmotcGFydC5hZGIgKFBhcnNlX1NpbmdsZV9Qcm9qZWN0LCBQcm9qZWN0X1BhdGhfTmFtZV9PZik6IERvIG5vdAoJcmVzb2x2ZSBsaW5rcyB3aGVuIGNvbXB1dGluZyB0aGUgZGlzcGxheSBuYW1lcy4KCjIwMDQtMDMtMjUgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV9hdHRyLmFkYiAoQ2hlY2tfRGVyZWZlcmVuY2UpOiBXaGVuIHRoZSBwcmVmaXggb2YgYSAnVGFnCglhdHRyaWJ1dGUgcmVmZXJlbmNlIGRvZXMgbm90IGRlbm90ZSBhIHN1YnR5cGUsIGl0IGNhbiBiZSBhbnkKCWV4cHJlc3Npb24gdGhhdCBoYXMgYSBjbGFzc3dpZGUgdHlwZSwgcG90ZW50aWFsbHkgYWZ0ZXIgYW4gaW1wbGljaXQKCWRlcmVmZXJlbmNlLiAgSW4gcGFydGljdWxhciwgdGhlIHByZWZpeCBjYW4gYmUgYSB2aWV3IGNvbnZlcnNpb24gZm9yCglhIGNsYXNzd2lkZSB0eXBlIChmb3Igd2hpY2ggSXNfT2JqZWN0X1JlZmVyZW5jZSBob2xkcyksIGJ1dCBpdCBjYW4KCWFsc28gYmUgYSB2YWx1ZSBjb252ZXJzaW9uIGZvciBhbiBhY2Nlc3MtdG8tY2xhc3N3aWRlIHR5cGUuIEluIHRoZQoJbGF0dGVyIGNhc2UsIHRoZXJlIGlzIGFuIGltcGxpY2l0IGRlcmVmZXJlbmNlLCBhbmQgdGhlIG9yaWdpbmFsIG5vZGUKCWZvciB0aGUgcHJlZml4IGRvZXMgbm90IHZlcmlmeSBJc19PYmplY3RfUmVmZXJlbmNlLgoKCSogc2VtX3V0aWwuYWRiIChJc19EZXBlbmRlbnRfQ29tcG9uZW50X09mX011dGFibGVfT2JqZWN0KTogQSB2aWV3Cgljb252ZXJzaW9uIG9mIGEgZGlzY3JpbWluYW50LWRlcGVuZGVudCBjb21wb25lbnQgb2YgYSBtdXRhYmxlIG9iamVjdAoJaXMgb25lIGl0c2VsZi4KCjIwMDQtMDMtMjUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGZyZWV6ZS5hZGIgKEZyZWV6ZV9FbnRpdHkpOiBXaGVuIGFuIGluaGVyaXRlZCBzdWJwcm9ncmFtIGlzCglpbmhlcml0ZWQsIGhhcyBjb252ZW50aW9uIEMsIGFuZCBoYXMgdW5jb25zdHJhaW5lZCBhcnJheSBwYXJhbWV0ZXJzLAoJcGxhY2UgdGhlIGNvcnJlc3BvbmRpbmcgd2FybmluZyBvbiB0aGUgZGVyaXZlZCB0eXBlIGRlY2xhcmF0aW9uIHJhdGhlcgoJdGhhbiB0aGUgb3JpZ2luYWwgc3VicHJvZ3JhbS4KCgkqIHNlbV9jaDEyLmFkYiAoSW5zdGFudGlhdGVfRm9ybWFsX1N1YnByb2dyYW0pOiBTZXQgRnJvbV9EZWZhdWx0CglpbmRpY2F0aW9uIG9uIHJlbmFtaW5nIGRlY2xhcmF0aW9uLCBpZiBmb3JtYWwgaGFzIGEgYm94IGFuZCBhY3R1YWwKCWlzIGFic2VudC4KCgkqIHNlbV9jaDguYWRiIChBbmFseXplX1N1YnByb2dyYW1fUmVuYW1pbmcpOiBVc2UgRnJvbV9EZWZhdWx0IGZsYWcgdG8KCWRldGVybWluZSB3aGV0aGVyIHRvIGdlbmVyYXRlIGFuIGltcGxpY2l0IG9yIGV4cGxpY2l0IHJlZmVyZW5jZSB0bwoJdGhlIHJlbmFtZWQgZW50aXR5LgoKCSogc2luZm8uYWRzLCBzaW5mby5hZGI6IE5ldyBmbGFnIEZyb21fRGVmYXVsdCwgdG8gaW5kaWNhdGUgdGhhdCBhCglzdWJwcm9ncmFtIHJlbmFtaW5nIGNvbWVzIGZyb20gYSBkZWZhdWx0ZWQgZm9ybWFsIHN1YnByb2dyYW0gaW4gYW4KCWluc3RhbmNlLgoKMjAwNC0wMy0yNSAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGduYXQuY29tPgoKCSogc2VtX2VsYWIuYWRiIChDaGVja19FbGFiX0NhbGwpOiBSZWZpbmUgbG9vcCB0aGF0IGNoZWNrcyBmb3IgZGVmYXVsdAoJdmFsdWUgZXhwcmVzc2lvbnMgdG8gZW5zdXJlIHRoYXQgY2FsbHMgd2l0aGluIGEgY29tcG9uZW50IGRlZmluaXRpb24KCXdpbGwgYmUgY2hlY2tlZCAoc2luY2UgdGhvc2UgYXJlIGV2YWx1YXRlZCBkdXJpbmcgdGhlIHJlY29yZCB0eXBlJ3MKCWVsYWJvcmF0aW9uKS4KCjIwMDQtMDMtMjUgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogcy10cG9ib3AuYWRiOiBDb2RlIGNsZWFuIHVwOgoJKFJlcXVldWVfQ2FsbCk6IEV4dHJhY3QgZnJvbSBQT19TZXJ2aWNlX0VudHJpZXMgdG8gcmVtb3ZlIGR1cGxpY2F0ZWQKCWNvZGUuCgkoUE9fRG9fT3JfUXVldWUpOiBSZW1vdmUgZHVwbGljYXRlZCBjb2RlIGFuZCB1c2UgUmVxdWV1ZV9DYWxsLgoKMjAwNC0wMy0yNSAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW46IENsZWFuIHVwIGluIHRoZSByYXZlbnNjYXIgcnVuIHRpbWUuCgoyMDA0LTAzLTIzICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9BY2Nlc3NfVHlwZSk6IFBhc3MgdmFsdWUKCW9mIE5vX1N0cmljdF9BbGlhc2luZyB0byBidWlsZF9wb2ludGVyX3R5cGVfZm9yX21vZGUuCgkqIHV0aWxzLmMgKHVwZGF0ZV9wb2ludGVyX3RvKTogV2FsayBwb2ludGVyIGFuZCByZWYgY2hhaW5zLgoKMjAwNC0wMy0yMiAgQ3lyaWxsZSBDb21hciAgPGNvbWFyQGFjdC1ldXJvcGUuZnI+CgoJKiBhbGkuYWRzOiBGaXggQ29tbWVudCBhYm91dCBEeW5hbWljX0VsYWIuCgoJKiBnbmF0bHMuYWRiIChPdXRwdXRfVW5pdCk6IEFkZCBvdXRwdXQgb2YgbWFueSBmbGFncyAoRHluYW1pY19FbGFiLAoJSGFzX1JBQ1csIElzX0dlbmVyaWMsIGV0Yy4pCgkoT3V0cHV0X09iamVjdCwgR25hdGxzKTogVGFrZSBpbnRvIGFjY291bnQgQUxJIGZpbGVzIG5vdCBhdHRhY2hlZCB0bwoJYW4gb2JqZWN0LgoKMjAwNC0wMy0yMiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBncHJlcC5hZGI6IENoYW5nZSBhbGwgU3RyaW5nX0FjY2VzcyB0byBOYW1lX0lkCgkoSXNfQVNDSUlfTGV0dGVyKTogbmV3IGZ1bmN0aW9uCgkoRG91YmxlX0ZpbGVfTmFtZV9CdWZmZXIpOiBOZXcgcHJvY2VkdXJlCgkoUHJlcHJvY2Vzc19JbmZpbGVfTmFtZSk6IE5ldyBwcm9jZWR1cmUKCShQcm9jZXNzX0ZpbGVzKTogTmV3IHByb2NlZHVyZQoJKEduYXRwcmVwKTogQ2hlY2sgaWYgb3V0cHV0IGFuZCBpbnB1dCBhcmUgZXhpc3RpbmcgZGlyZWN0b3JpZXMuCglDYWxsIFByb2Nlc3NfRmlsZXMgdG8gZG8gdGhlIHJlYWwgam9iLgoKMjAwNC0wMy0yMiAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBwcmotZW52LmFkYiwgcHJqLW5tc2MuYWRzLCBwcmotcHJvYy5hZHMsCglzLXN0YWNoZS5hZHMsIHMtc3RhY2hlLmFkYjogQ29tbWVudCB1cGRhdGVzLiBNaW5vciByZWZvcm1hdHRpbmcuCgoyMDA0LTAzLTIyICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogc2NuLmFkYiAoQ29udGFpbnMpOiBBZGQgY2hlY2sgZm9yIEVPRiwgaXMgbmVlZGVkIGZvciBhIGRlZ2VuZXJhdGVkCgljYXNlIHdoZW4gdGhlIHNvdXJjZSBjb250YWlucyBvbmx5IGNvbW1lbnRzLgoKMjAwNC0wMy0yMiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMTAuYWRiIChBbmFseXplX0NvbXBpbGF0aW9uX1VuaXQpOiBXaGVuIGdlbmVyYXRpbmcgYQoJZGVjbGFyYXRpb24gZm9yIGEgY2hpbGQgc3VicHJvZ3JhbSBib2R5IHRoYXQgYWN0cyBhcyBhIHNwZWMsIGluZGljYXRlCgl0aGF0IHRoZSBlbnRpdHkgaW4gdGhlIGRlY2xhcmF0aW9uIG5lZWRzIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KCgkqIHNlbV9jaDMuYWRiIChDb21wbGV0ZV9Qcml2YXRlX1N1YnR5cGUpOiBEbyBub3QgYnVpbGQgYW4gdW5kZXJseWluZwoJZnVsbCB2aWV3IGlmIHRoZSBzdWJ0eXBlIGlzIGNyZWF0ZWQgZm9yIGEgY29uc3RyYWluZWQgcmVjb3JkIGNvbXBvbmVudDsKCWdpZ2kgaGFzIGVub3VnaCBpbmZvcm1hdGlvbiB0byBjb25zdHJ1Y3QgdGhlIHJlY29yZCwgYW5kIHRoZXJlIGlzIG5vCglwbGFjZSBpbiB0aGUgdHJlZSBmb3IgdGhlIGRlY2xhcmF0aW9uLgoKCSogc2VtX2NoNi5hZGIgKEJ1aWxkX0JvZHlfVG9fSW5saW5lKTogVXNlIGFuIGludGVybmFsIG5hbWUgd2l0aG91dAoJc2VyaWFsIG51bWJlciBmb3IgdGhlIGR1bW15IGJvZHkgdGhhdCBpcyBidWlsdCBmb3IgYW5hbHlzaXMsIHRvIGF2b2lkCglpbmNvbnNpc3RlbmNpZXMgaW4gdGhlIGdlbmVyYXRpb24gb2YgaW50ZXJuYWwgbmFtZXMgd2hlbiBjb21waWxpbmcKCXdpdGggLWduYXROLgoKMjAwNC0wMy0yMiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX3V0aWwuYWRiIChJc19PYmplY3RfUmVmZXJlbmNlKTogQSB2aWV3IGNvbnZlcnNpb24gZGVub3RlcyBhbgoJb2JqZWN0LgoKMjAwNC0wMy0yMiAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwNC0wMy0yMSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5KTogVXNlIFNVQlNUSVRVVEVfUExBQ0VIT0xERVJfSU5fRVhQUi4KCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0sIGVtaXRfaW5kZXhfY2hlY2spOiBMaWtld2lzZS4KCSogdXRpbHMuYyAoYnVpbGRfdGVtcGxhdGUpOiBMaWtld2lzZS4KCShtYXhfc2l6ZSwgY29udmVydCk6IFJlbW92ZSBoYW5kbGluZyBvZiBXSVRIX1JFQ09SRF9FWFBSLgoJKG1heWJlX3VuY29uc3RyYWluZWRfYXJyYXksIHVuY2hlY2tlZF9jb252ZXJ0KTogTGlrZXdpc2UuCgkqIHV0aWxzMi5jIChnbmF0X3RydXRodmFsdWVfY29udmVyc2lvbiwgYnVpbGRfYmluYXJ5X29wKTogTGlrZXdpc2UuCgkoYnVpbGRfdW5hcnlfb3ApOiBMaWtld2lzZS4KCShjb21wYXJlX2FycmF5cywgYnVpbGRfYWxsb2NhdG9yKTogVXNlIFNVQlNUSVRVVEVfUExBQ0VIT0xERVJfSU5fRVhQUi4KCShmaWxsX3Ztc19kZXNjcmlwdG9yKTogTGlrZXdpc2UuCgkoYnVpbGRfY2FsbF9hbGxvY19kZWFsbG9jKTogTGlrZXdpc2UuCglBTElHTiBpcyB1bnNpZ25lZC4KCSogZ2lnaS5oIChidWlsZF9jYWxsX2FsbG9jX2RlYWxsb2MpOiBBbGlnbm1lbnQgaXMgdW5zaWduZWQuCgoyMDA0LTAzLTIwICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCglQUiBvdGhlci8xNDYzMAoJKiBnbmF0X3VnLnRleGk6IEFkZCBpbmZvIGRpcmVjdG9yeSBjYXRlZ29yeSBhbmQgZW50cnkuCgkqIGduYXRfdWdfdW54LnRleGksIGduYXRfdWdfdm1zLnRleGksIGduYXRfdWdfdnh3LnRleGksCglnbmF0X3VnX3dudC50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwNC0wMy0xOSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBhZGEtdHJlZS5oOiBVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCU1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDQtMDMtMTkgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfRXhjZXB0aW9uKTogSGFuZGxlIFZNUyBleGNlcHRpb25zCglhcyByZWd1bGFyIGV4Y2VwdGlvbiBvYmplY3RzIGFuZCBub3QgYXMgbWVyZSBpbnRlZ2VycyByZXByZXNlbnRpbmcgdGhlCgljb25kaXRpb24gY29kZS4gIFRoZSBsYXR0ZXIgYXBwcm9hY2ggcmVxdWlyZWQgc29tZSBkeW5hbWljcyB0byBtYXNrIG9mZgoJc2V2ZXJpdHkgYml0cywgd2hpY2ggZGlkIG5vdCBmaXQgd2VsbCBpbnRvIHRoZSBHQ0MgdGFibGUgYmFzZWQgbW9kZWwuCgkoZ25hdF90b19nbnVfZW50aXR5LCBvYmplY3RzKTogRG9uJ3Qgc3VwcGx5IGFuIGV4dGVybmFsIG5hbWUgZm9yIFZNUwoJZXhjZXB0aW9uIGRhdGEgb2JqZWN0cy4gV2UgZG9uJ3QgaXQgYW5kIGl0IHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlIG90aGVyCglleHRlcm5hbCBzeW1ib2wgd2UgaGF2ZSB0byBnZW5lcmF0ZSBmb3Igc3VjaCBleGNlcHRpb25zLgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9FeGNlcHRpb25fSGFuZGxlcik6IFJlbW92ZSBwYXJ0IG9mCgl0aGUgc3BlY2lhbCBjb2RlIGZvciBWTVMgZXhjZXB0aW9ucywgc2luY2UgdGhlc2UgYXJlIG5vdyByZXByZXNlbnRlZAoJYXMgcmVndWxhciBleGNlcHRpb25zIG9iamVjdHMuCgoyMDA0LTAzLTE5IFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKGRlYnVnX25vX3R5cGVfaGFzaCk6IFJlbW92ZS4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9BcnJheV9UeXBlKTogRG9uJ3Qgc2V0IGFuZCBjbGVhciBpdC4KCSogbWlzYy5jIChMQU5HX0hPT0tfSEFTSF9UWVBFKTogUmVkZWZpbmUuCgoyMDA0LTAzLTE5ICBMYXVyZW50IEd1ZXJieSA8bGF1cmVudEBndWVyYnkubmV0PgoKCSogc2VtX3ByYWcuYWRiIChTdXBwcmVzc19VbnN1cHByZXNzX0VjaGVjayk6IHVzZSBsb29wIGluc3RlYWQgb2YKCWFnZ3JlZ2F0ZSwgYWxsb3dzIGJvb3RzdHJhcCBmcm9tIDMuMyBvbiBwb3dlcnBjLWRhcndpbi4KCjIwMDQtMDMtMTggIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBhZGEtdHJlZS5oIChUWVBFX0xFRlRfSlVTVElGSUVEX01PRFVMQVJfUCk6IEFkZCBjaGVja2luZy4KCShUWVBFX0NPTlRBSU5TX1RFTVBMQVRFX1AsIFRZUEVfT0JKRUNUX1JFQ09SRF9UWVBFKTogTGlrZXdpc2UuCgkoVFlQRV9STV9TSVpFX0lOVCk6IERpcmVjdGx5IHVzZSB0eXBlLnZhbHVlcy4KCShUUkVFX0xPT1BfSUQpOiBDbGVhbiB1cCBjaGVjay4KCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9FbnVtZXJhdGlvbl9UeXBlKTogVXNlCglUWVBFX1ZBTFVFUywgbm90IFRZUEVfRklFTERTLgoJKiB0cmFucy5jIChjb252ZXJ0X3dpdGhfY2hlY2spOiBEZWxheSBhY2Nlc3Mgb2YgYm91bmRzIG9mIGJhc2V0eXBlCgl1bnRpbCBzdXJlIGlzIG51bWVyaWMuCgoyMDA0LTAzLTE4ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIDVhdHBvcHNwLmFkYjogUmVtb3ZlIFJURU1TIGZyb20gbGlzdCBvZiBwbGF0Zm9ybXMgdXNpbmcgdGhpcyBmaWxlLgoKCUNvZGUgY2xlYW4gdXA6CgkqIDVhdGFwcm9wLmFkYiwgNWZ0YXByb3AuYWRiLCA1aHRhcHJvcC5hZGIsIDVpdGFwcm9wLmFkYiwgNXN0YXByb3AuYWRiLAoJNXZ0YXByb3AuYWRiLCA1d3RhcHJvcC5hZGIsIDdzdGFwcm9wLmFkYiAoRmluYWxpemVfVENCKTogVXNlCglTcGVjaWZpYy5TZXQgaW5zdGVhZCBvZiBkaXJlY3QgY2FsbCB0byBlLmcgcHRocmVhZF9zZXRzcGVjaWZpYy4KCjIwMDQtMDMtMTggIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGFkYWludC5jOiBVcGRhdGUgY29tbWVudHMuCgoJKiBNYWtlZmlsZS5pbjogc2V0IFBSRUZJWF9PQkpTLCBTWU1MSUIsIFRIUkVBRFNMSUIsIGFuZAoJR05BVExJQl9TSEFSRUQgZm9yIEZyZWVCU0QuCgoyMDA0LTAzLTE4ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBpbml0LmMgW1Z4V29ya3NdOiBEbyBub3QgZml4IHRoZSBzdGFjayBzaXplIGZvciB0aGUgZW52aXJvbm1lbnQgdGFzay4KCVdoZW4gbmVlZGVkIChzdGFjayBjaGVja2luZykgdGhlIHN0YWNrIHNpemUgaXMgcmV0cmlldmVkCglmcm9tIHRoZSBWeFdvcmtzIGtlcm5lbC4KCgkqIE1ha2VmaWxlLmluOiBGbGFnIC1ub3N0ZGluYyBpcyByZXF1aXJlZCB3aGVuIGJ1aWxkaW5nIHRoZSBydW4gdGltZQoJZm9yIGF2b2lkaW5nIGxvb2tpbmcgZm9yIGZpbGVzIGluIHRoZSBiYXNlIGNvbXBpbGVyLgoJQWRkIHRoZSBWeFdvcmtzIHNwZWNpZmljIHZlcnNpb24gb2YgdGhlIHBhY2thZ2UgYm9keSBmb3IKCVN5c3RlbS5TdGFja19jaGVja2luZy5PcGVyYXRpb25zICg1enN0Y2hvcC5hZGIpLgoKCSogTWFrZS1sYW5nLmluOiBBZGQgdGhlIG9iamVjdCBmaWxlIGZvcgoJU3lzdGVtLlN0YWNrX0NoZWNraW5nLk9wZXJhdGlvbnMuCgoJKiBNYWtlZmlsZS5ydGw6IEFkZCBvYmplY3QgZmlsZSBmb3IgdGhlIHBhY2thZ2UKCVN5c3RlbS5TdGFja19DaGVja2luZy5PcGVyYXRpb25zLgoKCSogcy1zdGNob3AuYWRzLCBzLXN0Y2hvcC5hZGIsIDV6c3RjaG9wLmFkYjogTmV3IGZpbGVzLgoKCSogcy1zdGFjaGUuYWRzLCBzLXN0YWNoZS5hZGI6IE1vdmUgdGhlIG9wZXJhdGlvbnMgcmVsYXRlZCB0byBzdGFjawoJY2hlY2tpbmcgZnJvbSB0aGlzIHBhY2thZ2UgdG8gcGFja2FnZSBTeXN0ZW0uU3RhY2tfQ2hlY2tpbmcuT3BlcmF0aW9ucy4KCVRoaXMgd2F5LCBzdGFjayBjaGVja2luZyBvcGVyYXRpb25zIGFyZSBvbmx5IGxpbmtlZCBpbiB0aGUgZmluYWwKCWV4ZWN1dGFibGUgd2hlbiB1c2luZyB0aGUgLWZzdGFjay1jaGVjayBmbGFnLgoKMjAwNC0wMy0xOCAgRG91ZyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIFtWTVNdOiBIYW5kbGUgNjQgYml0IHNwZWNzICg1cXN5c3RlbS5hZHMsIDV4Y3J0bC5hZHMpLgoJUmVvcmdhbml6ZSBpZmVxJ3MuCgoJKiA1cXN5c3RlbS5hZHMsIDV4Y3J0bC5hZHM6IE5ldyBmaWxlcy4KCjIwMDQtMDMtMTggIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogcHJqLmFkYiAoUmVzZXQpOiBSZXNldCBoYXNoIHRhYmxlIEZpbGVzX0h0YWJsZQoKCSogcHJqLWVudi5hZGIgKFNvdXJjZV9QYXRocywgT2JqZWN0X1BhdGhzKTogTmV3IHRhYmxlcy4KCShBZGRfVG9fU291cmNlX1BhdGgsIEFkZF9Ub19PYmplY3RfUGF0aCk6IE5ldyBwcm9jZWR1cmVzLCB0byByZXBsYWNlCgl0aGUgcHJvY2VkdXJlcyBBZGRfVG9fUGF0aF9GaWxlLgoJKFNldF9BZGFfUGF0aHMpOiBBY2N1bXVsYXRlIHNvdXJjZSBhbmQgb2JqZWN0IGRpcnMgaW4gdGhlIHRhYmxlcywKCW1ha2luZyBzdXJlIHRoYXQgZWFjaCBkaXJlY3RvcnkgaXMgcHJlc2VudCBvbmx5IG9uY2UgYW5kLCBmb3Igb2JqZWN0CglkaXJzLCB3aGVuIGEgZGlyZWN0b3J5IGFscmVhZHkgcHJlc2VudCBpcyBhZGRlZCwgdGhlIGR1cGxpY2F0ZSBpcwoJcmVtb3ZlZCBhbmQgdGhlIGRpcmVjdG9yeSBpcyBhbHdheXMgcHV0IGFzIHRoZSBsYXN0IGluIHRoZSB0YWJsZS4KCVdyaXRlIHRoZSBwYXRoIGZpbGVzIGF0IHRoZSBlbmQgb2YgdGhlc2UgYWNjdW11bGF0aW9ucy4KCgkqIHByai1ubXNjLmFkYiAoUmVjb3JkX1NvdXJjZSk6IEFkZCBzb3VyY2UgZmlsZSBuYW1lIGluIGhhc2ggdGFibGUKCUZpbGVzX0h0YWJsZSBmb3IgYWxsIHNvdXJjZXMuCgoJKiBwcmotcHJvYy5hZGIgKFByb2Nlc3MpOiBSZW1vdmUgcmVzdHJpY3Rpb25zIGJldHdlZW4gbm90IGRpcmVjdGx5CglyZWxhdGVkIGV4dGVuZGluZyBwcm9qZWN0cy4KCjIwMDQtMDMtMTggIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWN0LWV1cm9wZS5mcj4KCgkqIHByai1ubXNjLmFkcywgcHJqLW5tc2MuYWRiIChBZGFfQ2hlY2spOiBOZXcgcGFyYW1ldGVyIFRydXN0ZWRfTW9kZS4KCShGaW5kX1NvdXJjZXMpOiBNaW5vciBzcGVlZCBvcHRpbWl6YXRpb24uCgoJKiBwcmotcHJvYy5hZHMsIHByai1wcm9jLmFkYiAoQ2hlY2ssIFJlY3Vyc2l2ZV9DaGVjaywgUHJvY2Vzcyk6IE5ldwoJcGFyYW1ldGVyIFRydXN0ZWRfTW9kZS4KCjIwMDQtMDMtMTggIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBzY24uYWRiIChEZXRlcm1pbmVfTGljZW5zZSk6IFRha2UgaW50byBhY2NvdW50IGEgZGVnZW5lcmF0ZWQgY2FzZQoJd2hlbiB0aGUgc291cmNlIGNvbnRhaW5zIG9ubHkgY29tbWVudHMuCgoyMDA0LTAzLTE4ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fd2Fybi5hZGIgKENoZWNrX1JlZmVyZW5jZXMpOiBGb3IgYSB3YXJuaW5nIG9uIGEgc2VsZWN0ZWQKCWNvbXBvbmVudCB0aGF0IGRvZXMgbm90IGNvbWUgZnJvbSBzb3VyY2UsIGxvY2F0ZSBhbiB1bmluaXRpYWxpemVkCgljb21wb25lbnQgb2YgdGhlIHJlY29yZCB0eXBlIHRvIHByb2R1Y2UgYSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZS4KCjIwMDQtMDMtMTUgIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogM3pzb2Njb24uYWRzOiBGaXggbXVsdGljYXN0IG9wdGlvbnMuCgoJKiBzLXRocmVhZC5hZHM6IE1vdmUgdW5jaGVja2VkIGNvbnZlcnNpb24gZnJvbSBBVFNEX0FjY2VzcyB0byBBZGRyZXNzCglpbiB0aGUgc3BlYy4KCjIwMDQtMDMtMTUgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX3ByYWcuYWRiOiBNYWtlIHN1cmUgTm9fU3RyaWN0X0FsaWFzaW5nIGZsYWcgaXMgc2V0IHJpZ2h0IHdoZW4KCXByYWdtYSB1c2VkIGZvciBhIHByaXZhdGUgdHlwZS4KCgkqIGxpYi14cmVmLmFkYiAoR2VuZXJhdGVfUmVmZXJlbmNlKTogRG8gbm90IGdlbmVyYXRlIHdhcm5pbmcgaWYKCXJlZmVyZW5jZSBpcyBpbiBhIGRpZmZlcmVudCB1bml0IGZyb20gdGhlIHByYWdtYSBVbnJlZmVyZW5jZWQuCgoJKiA1dnRwb3BkZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJRml4IGNhc2luZyBvZiBUb19UYXNrX0lECgoJKiBzZW1fY2gxMy5hZGIgKFZhbGlkYXRlX1VuY2hlY2tlZF9Db252ZXJzaW9uKTogU2V0IE5vX1N0cmljdF9BbGlhc2luZwoJZmxhZyBpZiB3ZSBoYXZlIGFuIHVuY2hlY2tlZCBjb252ZXJzaW9uIHRvIGFuIGFjY2VzcyB0eXBlIGluIHRoZSBzYW1lCgl1bml0LgoKMjAwNC0wMy0xNSAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIGEtbmdjb3R5LmFkYiAoTW9kdWx1cyk6IEluIGFsdGVybmF0ZSBmb3JtdWxhIGZvciBsYXJnZSByZWFsIG9yCglpbWFnaW5hcnkgcGFydHMsIHVzZSBEb3VibGUgcHJlY2lzaW9uIHRocm91Z2hvdXQuCgoJKiBhLXRpZmlpby5hZGIgKFB1dF9TY2FsZWQpOiBSZW1vdmUgcmVtYWluaW5nIHByYWdtYSBEZWJ1Zy4gTm90IG9ubHkKCXdlIHdhbnQgdG8gYmUgYWJsZSB0byBjb21waWxlIHJ1bi10aW1lIHdpdGggLWduYXRhIGZvciB0ZXN0aW5nLCBidXQKCXRoaXMgbWF5IGFsc28gYmUgaW5zdGFudGlhdGVkIGluIHVzZXIgY29kZSB0aGF0IGlzIGNvbXBpbGVkIHdpdGggLWduYXRhLgoKMjAwNC0wMy0xNSAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogcy1zdGFsaWIuYWRzIChFeGNlcHRpb25fQ29kZSk6IE5ldyB0eXBlLCB0byByZXByZXNlbnQgSW1wb3J0L0V4cG9ydAoJY29kZXMuIEhhdmluZyBhIHNlcGFyYXRlIHR5cGUgZm9yIHRoaXMgaXMgdXNlZnVsIHRvIGVuZm9yY2UgY29uc2lzdGVuY3kKCXRocm91Z2hvdXQgdGhlIHZhcmlvdXMgcnVuLXRpbWUgdW5pdHMuCgkoRXhjZXB0aW9uX0RhdGEpOiBVc2UgRXhjZXB0aW9uX0NvZGUgZm9yIEltcG9ydF9Db2RlLgoKCSogcy12bWV4dHJhLmFkcywgcy12bWV4dGEuYWRiOiBVc2UgRXhjZXB0aW9uX0NvZGUgaW5zdGVhZCBvZiBhIG1peCBvZgoJTmF0dXJhbCBhbmQgSW50ZWdlciBpbiB2YXJpb3VzIHBsYWNlcy4KCShSZWdpc3Rlcl9WTVNfRXhjZXB0aW9uKTogVXNlIEJhc2VfQ29kZV9JbiB0byBjb21wdXRlIHRoZSBleGNlcHRpb24gY29kZQoJd2l0aCB0aGUgc2V2ZXJpdHkgYml0cyBtYXNrZWQgb2ZmLgoJKFJlZ2lzdGVyX1ZNU19FeGNlcHRpb24pOiBIYW5kbGUgdGhlIGFkZGl0aW9uYWwgZXhjZXB0aW9uIGRhdGEgcG9pbnRlcgoJYXJndW1lbnQuCgoJKiByYWlzZS5jIChfR05BVF9FeGNlcHRpb24gc3RydWN0dXJlKTogUmVtb3ZlIHRoZSBoYW5kbGVkX2J5X290aGVycwoJY29tcG9uZW50LCBub3cgcmVmbGVjdGVkIGJ5IGFuIGV4cG9ydGVkIGFjY2Vzc29yLgoJKGlzX2hhbmRsZWRfYnkpOiBOZXcgcm91dGluZSB0byBjb21wdXRlIHdoZXRoZXIgdGhlIHByb3BhZ2F0ZWQKCW9jY3VycmVuY2UgbWF0Y2hlcyBzb21lIGhhbmRsZXIgY2hvaWNlIHNwZWNpZmljYXRpb24uIEV4dHJhY3RlZCBvdXQgb2YKCWdldF9hY3Rpb25fZGVzY3JpcHRpb25fZm9yLCBhbmQgZXhwYW5kZWQgdG8gdGFrZSBjYXJlIG9mIHRoZSBWTVMKCXNwZWNpZml0aWVzLgoJKGdldF9hY3Rpb25fZGVzY3JpcHRpb25fZm9yKTogVXNlIGlzX2hhbmRsZWRfYnkgaW5zdGVhZCBvZiBhbiBleHBsaWNpdAoJY29tcGxleCBjb25kaXRpb24gdG8gZGVjaWRlIGlmIHRoZSBjdXJyZW50IGNob2ljZSBhdCBoYW5kIGNhdGNoZXMgdGhlCglwcm9wYWdhdGVkIG9jY3VycmVuY2UuCgoJKiByYWlzZS5oIChFeGNlcHRpb25fQ29kZSk6IE5ldyB0eXBlIGZvciBDLgoKCSogcnRzZmluZC5hZHMgKFJFX0lkLCBSRV9Vbml0X1RhYmxlKTogQWRkCglTeXN0ZW0uU3RhbmRhcmRfTGlicmFyeS5FeGNlcHRpb25fQ29kZSwgdG8gYWxsb3cgcmVmZXJlbmNlcyBmcm9tIHRoZQoJcHJhZ21hIGltcG9ydC9leHBvcnQgZXhwYW5kZXIuCgoJKiBhLWV4ZXhwci5hZGIgKElzX0hhbmRsZWRfQnlfT3RoZXJzLCBMYW5ndWFnZV9Gb3IsIEltcG9ydF9Db2RlX0Zvcik6CglOZXcgYWNjZXNzb3JzIHRvIGFsbG93IGVhc3kgYWNjZXNzIHRvIEdOQVQgZXhjZXB0aW9uIGRhdGEKCWNoYXJhY3RlcmlzdGljcy4KCShHTkFUX0dDQ19FeGNlcHRpb24gcmVjb3JkLCBQcm9wYWdhdGVfRXhjZXB0aW9uKTogR2V0IHJpZCBvZiB0aGUKCXJlZHVuZGFudCBIYW5kbGVkX0J5X090aGVycyBjb21wb25lbnQsIGhlbHBlciBmb3IgdGhlIHBlcnNvbmFsaXR5Cglyb3V0aW5lIHdoaWNoIHdpbGwgbm93IGJlIGFibGUgdG8gY2FsbCB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uIGRhdGEKCWFjY2Vzc29yIGluc3RlYWQuCgoJKiBjc3RhbmQuYWRiIChDcmVhdGVfU3RhbmRhcmQpOiBBZGp1c3QgdGhlIHR5cGUgb2YgdGhlIEltcG9ydF9Db2RlCgljb21wb25lbnQgb2YgU3RhbmRhcmRfRXhjZXB0aW9uX1R5cGUgdG8gYmUgdGhlIGNsb3Nlc3QgcG9zc2libGUgdG8KCUV4Y2VwdGlvbl9Db2RlIGluIFN5c3RlbS5TdGFuZGFyZF9MaWJyYXJ5LCB0aGF0IHdlIGNhbm5vdCBnZXQgYXQgdGhpcwoJcG9pbnQuIEV4cGFuZCBhID8/PyBjb21tZW50IHRvIG5vdGlmeSB0aGF0IHRoaXMgdHlwZSBub2RlIHNob3VsZAoJcHJvYmFibHkgYmUgcmV3cml0dGVuIGxhdGVyIG9uLgoKCSogZXhwX3ByYWcuYWRiIChFeHBhbmRfUHJhZ21hX0ltcG9ydF9FeHBvcnRfRXhjZXB0aW9uKTogQWRqdXN0IHRoZQoJcmVnaXN0cmF0aW9uIGNhbGwgdG8gaW5jbHVkZSBhIHBvaW50ZXIgdG8gdGhlIGV4Y2VwdGlvbiBvYmplY3QgaW4gdGhlCglhcmd1bWVudHMuCgoJKiBpbml0LmMgKF9fZ25hdF9lcnJvcl9oYW5kbGVyKTogVXNlIEV4Y2VwdGlvbl9Db2RlIGFuZCBCYXNlX0NvZGVfSW4KCWluc3RlYWQgb2YgaW50IGFuZCBleHBsaWNpdCBiaXRtYXNrcy4KCjIwMDQtMDMtMTUgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogdm1zX2RhdGEuYWRzOiBBZGQgbmV3IEdOQVQgQklORCBxdWFsaWZpZXIgL1NUQVRJQy4gTWFrZXMgL05PU0hBUkVECgllcXVpdmFsZW50IHRvIC9TVEFUSUMgYW5kIC9OT1NUQVRJQyBlcXVpdmFsZW50IHRvIC9TSEFSRUQuCgoJKiBhLXRhc2F0dC5hZGIgKFRvX0FjY2Vzc19Db2RlKTogUmVtb3ZlIHRoaXMgVUMgaW5zdGFudGlhdGlvbiwgbm8KCWxvbmdlciBuZWVkZWQgbm93IHRoYXQgaXQgaXMgaW4gdGhlIHNwZWMgb2YKCVN5c3RlbS5UYXNraW5nLlRhc2tfQXR0cmlidXRlcy4KCgkqIGFkYWludC5oLCBhZGFpbnQuYzogKF9fZ25hdF9jcmVhdGVfb3V0cHV0X2ZpbGUpOiBOZXcgZnVuY3Rpb24KCgkqIGduYXRjbWQuYWRiOiBGaXggYnVnIGludHJvZHVjZWQgaW4gcHJldmlvdXMgcmV2OiAvPSBpbnN0ZWFkIG9mID0KCgkqIGctb3NfbGliLmFkcywgZy1vc19saWIuYWRiIChDcmVhdGVfT3V0cHV0X1RleHRfRmlsZSk6IE5ldyBmdW5jdGlvbi4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IERvIG5vdCBjaGVjayB0aGUgZXhlY3V0YWJsZSBzdWZmaXg7IGl0IGlzIGJlaW5nCgl0YWtlbiBjYXJlIG9mIGluIFNjYW5fTWFrZV9BcmcuCgkoU2Nhbl9NYWtlX0FyZyk6IEFkZCB0aGUgZXhlY3V0YWJsZSBzdWZmaXggb25seSBpZiB0aGUgYXJndW1lbnQKCWZvbGxvd2luZyAtbywgaW4gY2Fub25pY2FsIGNhc2UsIGRvZXMgbm90IGVuZCB3aXRoIHRoZSBleGVjdXRhYmxlCglzdWZmaXguICBXaGVuIGluIHZlcmJvc2UgbW9kZSBhbmQgZXhlY3V0YWJsZSBmaWxlIG5hbWUgZG9lcyBub3QgZW5kCgl3aXRoIGV4ZWN1dGFibGUgc3VmZml4LCBvdXRwdXQgdGhlIGV4ZWN1dGFibGUgbmFtZSwgaW4gY2Fub25pY2FsIGNhc2UuCgoJKiBzLXRhdGFhdC5hZHMgKEFjY2Vzc19EdW1teV9XcmFwcGVyKTogQWRkIHByYWdtYSBOb19TdHJpY3RfQWxpYXNpbmcKCXRvIGF2b2lkIHdhcm5pbmdzIHdoZW4gaW5zdGFudGlhdGluZyBBZGEuVGFza19BdHRyaWJ1dGVzLgoJTWlub3IgcmVmb3JtYXRpbmcuCgoJKiBtbGliLXByai5hZGIgKFByb2Nlc3NfSW1wb3J0ZWRfTGlicmFyaWVzKTogR2V0IHRoZSBpbXBvcnRlZCBsaWJyYXJpZXMKCWluIHRoZSBjb3JyZWN0IG9yZGVyLgoKCSogcHJqLW1ha3IuYWRiIChQcm9jZXNzX0RpcmVjdG9yeSk6IE5vIGxvbmdlciB1c2UgR05BVC5FeHBlY3QsIGJ1dAoJcmVkaXJlY3Qgc3RhbmRhcmQgb3V0cHV0IGFuZCBlcnJvciB0byBhIGZpbGUgZm9yIHRoZSBpbnZvY2F0aW9uIG9mIHRoZQoJY29tcGlsZXIsIHRoZW4gcmVhZCB0aGUgZmlsZS4KCgkqIHByai1ubXNjLmFkYiAoRmluZF9Tb3VyY2VzKTogVXNlIHRoZSBEaXNwbGF5X1ZhbHVlIGZvciBlYWNoCglkaXJlY3RvcnksIGluc3RlYWQgb2YgdGhlIFZhbHVlLgoJKEZpbmRfU291cmNlX0RpcnMpOiBSZW1vdmUgdXNlbGVzcyBjb2RlICYgY29tbWVudHMuCgoyMDA0LTAzLTE1ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2gzLmFkYiAoRnJlZXplX1JlY29yZF9UeXBlKTogSWYgYSBwcmltaXRpdmUgb3BlcmF0aW9uIG9mIGEKCXRhZ2dlZCB0eXBlIGlzIGluaGVyaXRlZCwgYW5kIHRoZSBwYXJlbnQgb3BlcmF0aW9uIGlzIG5vdCBmcm96ZW4geWV0LAoJZm9yY2UgZ2VuZXJhdGlvbiBvZiBhIGZyZWV6ZSBub2RlIGZvciB0aGUgaW5oZXJpdGVkIG9wZXJhdGlvbiwgc28gdGhlCgljb3JyZXNwb25kaW5nIGRpc3BhdGNoIGVudHJ5IGlzIHByb3Blcmx5IGluaXRpYWxpemVkLgoJKE1ha2VfUHJlZGVmaW5lZF9QcmltaXRpdmVfU3BlY3MpOiBDaGVjayB0aGF0IHJldHVybiB0eXBlIGlzIEJvb2xlYW4KCXdoZW4gbG9va2luZyBmb3IgdXNlci1kZWZpbmVkIGVxdWFsaXR5IG9wZXJhdGlvbi4KCgkqIGV4cF9jaDQuYWRiIChFeHBhbmRfQ29tcG9zaXRlX0VxdWFsaXR5KTogQ2hlY2sgdGhhdCByZXR1cm4gdHlwZSBpcwoJYm9vbGVhbiB3aGVuIGxvY2F0aW5nIHByaW1pdGl2ZSBlcXVhbGl0eSBvZiB0YWdnZWQgY29tcG9uZW50LgoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9Bc3NpZ25fQXJyYXkpOiBJZiB0aGUgbGVmdC1oYW5kIHNpZGUgaXMgYQoJYml0LWFsaWduZWQgZmllbGQgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYSBzdHJpbmcgbGl0ZXJhbCwgaW50cm9kdWNlCglhIHRlbXBvcmFyeSBiZWZvcmUgZXhwYW5kaW5nIGFzc2lnbm1lbnQgaW50byBhIGxvb3AuCgoJKiBleHBfY2g5LmFkYiAoRXhwYW5kX05fVGFza19UeXBlX0RlY2xhcmF0aW9uKTogQ29weSBleHByZXNzaW9uIGZvcgoJcHJpb3JpdHkgaW4gZnVsbCwgdG8gZW5zdXJlIHRoYXQgYW55IGV4cGFuZGVkIHN1YmVweHJlc3Npb25zIG9mIGl0IGFyZQoJZWxhYm9yYXRlZCBpbiB0aGUgc2NvcGUgb2YgdGhlIGluaXRfcHJvYy4KCgkqIGV4cF9wcmFnLmFkYiAoRXhwYW5kX1ByYWdtYV9JbXBvcnQpOiBTZWFyY2ggZm9yIGluaXRpYWxpemF0aW9uIGNhbGwKCWFmdGVyIG9iamVjdCBkZWNsYXJhdGlvbiwgc2tpcHBpbmcgb3ZlciBjb2RlIHRoYXQgbWF5IGhhdmUgYmVlbgoJZ2VuZXJhdGVkIGZvciB2YWxpZGl0eSBjaGVja3MuCgoJKiBzZW1fY2gxMi5hZGIgKFZhbGlkYXRlX1ByaXZhdGVfVHlwZV9JbnN0YW5jZSk6IElmIHR5cGUgaGFzIHVua25vd24KCWRpc2NyaW1pbmFudHMsIGlnbm9yZSB0aGUga25vd24gZGlzY3JpbWluYW50cyBvZiBpdHMgZnVsbCB2aWV3LCBpZgoJYW55LCB0byBjaGVjayBsZWdhbGl0eS4KCgkqIHNlbV9jaDMuYWRiIChDb21wbGV0ZV9Qcml2YXRlX1N1YnR5cGUpOiBEbyBub3QgY3JlYXRlIGNvbnN0cmFpbmVkCgljb21wb25lbnQgaWYgdHlwZSBoYXMgdW5rbm93biBkaXNjcmltaW5hbnRzLgoJKEFuYWx5emVfUHJpdmF0ZV9FeHRlbnNpb25fRGVjbGFyYXRpb24pOiBEaXNjcmltaW5hbnQgY29uc3RyYWludCBpcwoJbnVsbCBpZiB0eXBlIGhhcyB1bmtub3duIGRpc2NyaW1pbmFudHMuCgoJKiBzZW1fY2g2LmFkYiAoQW5hbHl6ZV9HZW5lcmljX1N1YnByb2dyYW1fQm9keSk6IEdlbmVyYXRlIHJlZmVyZW5jZQoJZm9yIGVuZCBsYWJlbCB3aGVuIHByZXNlbnQuCgoJKiBzLWZpbGVpby5hZGIgKE9wZW4pOiBXaGVuIGNhbGxlZCB3aXRoIGEgQ19TdHJlYW0sIHVzZSBnaXZlbiBuYW1lIGZvcgoJdGVtcG9yYXJ5IGZpbGUsIHJhdGhlciB0aGFuIGFuIGVtcHR5IHN0cmluZy4KCjIwMDQtMDMtMTUgIEVkIEZhbGlzICA8ZmFsaXNAZ25hdC5jb20+CgoJKiBzLXRocmVhZC5hZGI6IFJlbW92ZWQsIG5vIGxvbmdlciB1c2VkLgoKMjAwNC0wMy0xNSAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAodGFyZ2V0LmgpOiBOb3cgaW5jbHVkZS4KCShnbmF0X3RvX2dudV9lbnRpdHksIGNhc2UgRV9BY2Nlc3NfVHlwZSk6IFVzZSBtb2RlIGRlcml2ZWQgZnJvbSBFU0laRQoJaW4gbmV3IGJ1aWxkX3BvaW50ZXJfZnJvbV9tb2RlIGNhbGxzIGZvciBub24tZmF0L25vbi10aGluIHBvaW50ZXIuCgkodmFsaWRhdGVfc2l6ZSk6IEZvciBQT0lOVEVSX1RZUEUsIGdldCBzbWFsbGVzdCBzaXplIHBlcm1pdHRlZCBvbgoJbWFjaGluZS4KCgkqIGZlLmg6IFNvcnQgRWluZm8gZGVjbHMgYW5kIGFkZCBTZXRfTWVjaGFuaXNtLgoKCSogTWFrZWZpbGUuaW46IChMSUJHTkFUX1NSQ1MpOiBSZW1vdmUgdHlwZXMuaC4KCShhZGEvZGVjbC5vKTogRGVwZW5kcyBvbiB0YXJnZXQuaC4KCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtLCBOX1VuY2hlY2tlZF9UeXBlX0NvbnZlcnNpb24pOiBEbyBub3QgdXNlCglGVU5DVElPTl9CT1VOREFSWTsgYWx3YXlzIHVzZSBUWVBFX0FMSUdOLgoKMjAwNC0wMy0xNSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogNXp0cG9wc3AuYWRiLCA1NnRwb3BzcC5hZGI6IEZpeCBzcGVsbGluZyBvZiBUYXNrX0lELgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX0luZGV4ZWRfQ29tcG9uZW50KTogRG8gbm90IGNhbGwKCUluc2VydF9EZXJlZmVyZW5jZV9BY3Rpb24gd2hlbiByZXdyaXRpbmcgYW4gaW1wbGljaXQgZGVyZWZlcmVuY2UgaW50bwoJYW4gZXhwbGljaXQgb25lLCB0aGlzIHdpbGwgYmUgdGFrZW4gY2FyZSBvZiBkdXJpbmcgZXhwYW5zaW9uIG9mIHRoZQoJZXhwbGljaXQgZGVyZWZlcmVuY2UuCgkoRXhwYW5kX05fU2xpY2UpOiBTYW1lLiBBbHdheXMgZG8gdGhlIHJld3JpdGluZywgZXZlbiBmb3IgdGhlIGNhc2UKCW9mIG5vbi1wYWNrZWQgc2xpY2VzLCBzaW5jZSB0aGUgZGVyZWZlcmVuY2UgYWN0aW9uIGdlbmVyYXRlZCBieQoJZXhwYW5zaW9uIG9mIHRoZSBleHBsaWNpdCBkZXJlZmVyZW5jZSBpcyBuZWVkZWQgaW4gYW55IGNhc2UuCgkoRXhwYW5kX05fU2VsZWN0ZWRfQ29tcG9uZW50KTogV2hlbiByZXdyaXRpbmcgYW4gaW1wbGljaXQgZGVyZWZlcmVuY2UsCglhbmFseXplIGFuZCByZXNvbHZlIHRoZSByZXdyaXR0ZW4gZXhwbGljaXQgZGVyZWZlcmVuY2Ugc28gaXQgaXMgc2VlbgoJYnkgdGhlIGV4cGFuZGVyLgoJKEluc2VydF9EZXJlZmVyZW5jZV9BY3Rpb24pOiBUaGlzIHByb2NlZHVyZSBpcyBub3cgY2FsbGVkIG9ubHkgZm9yIHRoZQoJZXhwYW5zaW9uIG9mIGFuIE5fRXhwbGNpdF9EZXJlZmVyZW5jZV9Ob2RlLiBEbyBpbnNlcnQgYSBjaGVjayBldmVuIGZvcgoJZGVyZWZlcmVuY2VzIHRoYXQgZG8gbm90IGNvbWUgZnJvbSBzb3VyY2UgKGluY2x1ZGluZyBleHBsaWNpdAoJZGVyZWZlcmVuY2VzIHJlc3VsdGluZyBmcm9tIHJld3JpdGluZyBpbXBsaWNpdCBvbmVzKSwgYnV0IGRvIG5vdAoJcmVjdXJzaXZlbHkgaW5zZXJ0IGEgY2hlY2sgZm9yIHRoZSBkZXJlZmVyZW5jZSBub2RlcyBjb250YWluZWQgd2l0aGluCgl0aGUgY2hlY2suCgkoSW5zZXJ0X0RlcmVmZXJlbmNlX0FjdGlvbik6IENsYXJpZnkgYW5kIGNvcnJlY3QgY29tbWVudC4KCjIwMDQtMDMtMDggIFBhb2xvIEJvbnppbmkgIDxib256aW5pQGdudS5vcmc+CgoJUFIgYWRhLzE0MTMxCglNb3ZlIGxhbmd1YWdlIGRldGVjdGlvbiB0byB0aGUgdG9wIGxldmVsLgoJKiBjb25maWctbGFuZy5pbjogQnVpbGQgYnkgZGVmYXVsdC4KCjIwMDQtMDMtMDUgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogNTZ0YXByb3AuYWRiLCA1YXRhcHJvcC5hZGI6IFJlbW92ZSB1bm5lZWRlZCB1bmNoZWNrZWQgY29udmVyc2lvbnMKCgkqIGEtdGFncy5hZGIsIGEtdGFncy5hZHMsIHMtZmluaW1wLmFkYiwgcy1maW5yb28uYWRzLAoJaS1jcG9pbnQuYWRzLCBpLWNwb2ludC5hZGIsIGktY3N0cmluLmFkYiwgaS1jc3RyaW4uYWRzLAoJNWlvc2ludGUuYWRzLCA1c29zaW50ZS5hZHMsIDVzdGFzcHJpLmFkcywgNWl0YXByb3AuYWRiLAoJNXN0YXByb3AuYWRiLCA1d3RhcHJvcC5hZGIsIHMtdGF0YWF0LmFkcywgcy10YXRhYXQuYWRiOiBNb3ZlCgl1bmNoZWNrZWQgY29udmVyc2lvbiB0byBzcGVjIHRvIGF2b2lkIHdhcm5pbmdzLgoKCSogcy10YXNpbmkuYWRiLCBzLXRhc2tpbi5hZHMsIDVhdHBvcHNwLmFkYjogQ29ycmVjdCBzcGVsbGluZyBUYXNrX0lkCgl0byBUYXNrX0lECgoJKiA3c3Rwb3BzcC5hZGI6IENvcnJlY3QgY2FzaW5nIGluIFRvX1Rhc2tfSUQgY2FsbAoKCSogYS1zdHJzZWEuYWRzLCBhLXN0cnNlYS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZWluZm8uYWRzLCBlaW5mby5hZGI6IERlZmluZSBuZXcgZmxhZyBOb19TdHJpY3RfQWxpYXNpbmcKCgkqIGVycm91dC5hZHM6IFN3aXRjaCBmb3IgVk1TIGlzIG5vdyBOT19TVFJJQ1RfQUxJQVNJTkcuCglBZGp1c3QgTWF4X01zZ19MZW5ndGggdG8gYmUgY2xlYXJseSBsYXJnZSBlbm91Z2guCgoJKiBmZS5oOiBEZWZpbmUgSW5fU2FtZV9Tb3VyY2VfVW5pdAoKCSogb3NpbnQuYWRiOiBBZGQgcHJhZ21hIFdhcm5pbmdzIE9mZiB0byBzdXBwcmVzcyB3YXJuaW5ncwoJKiBnLWR5bnRhYi5hZGIsIGctdGFibGUuYWRiLCBnLXRocmVhZC5hZGI6IEFkZCBXYXJuaW5ncyAoT2ZmKSB0byBraWxsCglhbGlhc2luZyB3YXJuaW5ncy4KCgkqIG9wdC5hZHM6IFB1dCBlbnRyaWVzIGluIGFscGhhIG9yZGVyLiBBZGQgZW50cnkgZm9yIE5vX1N0cmljdF9BbGlhc2luZwoKCSogcGFyLXByYWcuYWRiOiBBZGQgZHVtbXkgZW50cnkgZm9yIE5vX1N0cmljdF9BbGlhc2luZyBwcmFnbWEKCgkqIHNlbV9jaDEzLmFkYjogR2VuZXJhdGUgdmFsaWRhdGUgdW5jaGVja2VkIGNvbnZlcnNpb24gbm9kZXMgZm9yIGdjYy4KCgkqIHNlbV9jaDMuYWRiOiBTZXQgTm9fU3RyaWN0X0FsaWFzaW5nIGZsYWcgaWYgY29uZmlnIHByYWdtYSBzZXQuCgoJKiBzZW1fcHJhZy5hZGI6IEltcGxlbWVudCBwcmFnbWEgTm9fU3RyaWN0X0FsaWFzaW5nLgoKCSogc2luZm8uYWRzOiBSZW1vdmUgb2Jzb2xldGUgY29tbWVudCBvbiB2YWxpZGF0ZSB1bmNoZWNrZWQgY29udmVyc2lvbgoJbm9kZS4gV2Ugbm93IGRvIGdlbmVyYXRlIHRoZW0gZm9yIGdjYyBiYWNrIGVuZC4KCgkqIHRhYmxlLmFkYiwgc2lucHV0LmFkYjogQWRkIHByYWdtYSBXYXJuaW5ncyBPZmYgdG8gc3VwcHJlc3MgYWxpYXNpbmcKCXdhcm5pbmcuCgoJKiBzaW5wdXQtYy5hZGI6IEZpeCBiYWQgbmFtZSBpbiBoZWFkZXIuCglBZGQgcHJhZ21hIFdhcm5pbmdzIE9mZiB0byBzdXBwcmVzcyBhbGlhc2luZyB3YXJuaW5nLgoKCSogc2lucHV0LWwuYWRiOiBBZGQgcHJhZ21hIFdhcm5pbmdzIE9mZiB0byBzdXBwcmVzcyBhbGlhc2luZyB3YXJuaW5nLgoKCSogc25hbWVzLmgsIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IEFkZCBlbnRyeSBmb3IgcHJhZ21hCglOb19TdHJpY3RfQWxpYXNpbmcuCgoyMDA0LTAzLTA1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai1jb20uYWRzOiBBZGQgaGFzaCB0YWJsZSBGaWxlc19IdGFibGUgdG8gY2hlY2sgd2hlbiBhIGZpbGUgbmFtZQoJaXMgYWxyZWFkeSBhIHNvdXJjZSBvZiBhbm90aGVyIHByb2plY3QuCgoJKiBwcmotbm1zYy5hZGIgKFJlY29yZF9Tb3VyY2UpOiBCZWZvcmUgcmVjb3JkaW5nIGEgbmV3IHNvdXJjZSwgY2hlY2sKCWlmIGl0cyBmaWxlIG5hbWUgaXMgbm90IGFscmVhZHkgYSBzb3VyY2Ugb2YgYW5vdGhlciBwcm9qZWN0LiBSZXBvcnQgYW4KCWVycm9yIGlmIGl0IGlzLgoKCSogZ25hdGNtZC5hZGI6IFdoZW4gR05BVCBQUkVUVFkgaXMgaW52b2tlZCB3aXRoIGEgcHJvamVjdCBmaWxlIGFuZCBubwoJc291cmNlIGZpbGUgbmFtZSwgY2FsbCBnbmF0cHAgd2l0aCBhbGwgdGhlIHNvdXJjZXMgb2YgdGhlIG1haW4gcHJvamVjdC4KCgkqIHZtc19jb252LmFkYiAoSW5pdGlhbGl6ZSk6IEdOQVQgUFJFVFRZIG1heSBiZSBjYWxsZWQgd2l0aCBhbnkgbnVtYmVyCglvZiBmaWxlIG5hbWVzLgoKCSogdm1zX2RhdGEuYWRzOiBDb3JyZWN0IGRvY3VtZW50YXRpb24gb2YgbmV3IC9PUFRJTUlaRSBrZXl3b3JkCglOT19TVFJJQ1RfQUxJQVNJTkcuIEFkZCBuZXcgcXVhbGlmaWVyIGZvciBHTkFUIFBSRVRUWToKCS9SVU5USU1FX1NZU1RFTT0sIGNvbnZlcnRlZCB0byAtLVJUUz0KCS9OT1RBQlMsIGNvbnZlcnRlZCB0byAtbm90YWJzCgoyMDA0LTAzLTA1ICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBtYWtlLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwNC0wMy0wNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCVBhcnQgb2YgaW1wbGVtZW50aW9uIG9mIEFJLTI2Mi4KCSogcGFyLWNoMTAuYWRiIChQX0NvbnRleHRfQ2xhdXNlKTogUmVjb2duaXplIHByaXZhdGUgd2l0aF9jbGF1c2VzLgoKCSogc2VtX2NoMTAuYWRzLCBzZW1fY2gxMC5hZGI6IChJbnN0YWxsX1ByaXZhdGVfV2l0aF9DbGF1c2VzKTogTmV3Cglwcm9jZWR1cmUuCgoJKiBzZW1fY2gzLmFkYiAoQW5hbHl6ZV9Db21wb25lbnRfRGVjbGFyYXRpb24pOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UKCXdoZW4gY29tcG9uZW50IHR5cGUgaXMgYSBwYXJ0aWFsbHkgY29uc3RyYWluZWQgY2xhc3Mtd2lkZSBzdWJ0eXBlLgoJKENvbnN0cmFpbl9EaXNjcmltaW5hdGVkX1R5cGUpOiBJZiBwYXJlbnQgdHlwZSBoYXMgdW5rbm93bgoJZGlzY3JpbWluYW50cywgYSBjb25zdHJhaW50IGlzIGlsbGVnYWwsIGV2ZW4gaWYgZnVsbCB2aWV3IGhhcwoJZGlzY3JpbWluYW50cy4KCShCdWlsZF9EZXJpdmVkX1JlY29yZF9UeXBlKTogSW5oZXJpdCBkaXNjcmltaW5hbnRzIHdoZW4gZGVyaXZpbmcgYSB0eXBlCgl3aXRoIHVua25vd24gZGlzY3JpbWluYW50cyB3aG9zZSBmdWxsIHZpZXcgaXMgYSBkaXNjcmltaW5hdGVkIHJlY29yZC4KCgkqIHNlbV9jaDcuYWRiIChQcmVzZXJ2ZV9GdWxsX0F0dHJpYnV0ZXMpOiBQcmVzZXJ2ZSBIYXNfRGlzY3JpbWluYW50cwoJZmxhZywgdG8gaGFuZGxlIHByb3Blcmx5IGRlcml2YXRpb25zIG9mIHRhZ2dlZCB0eXBlcyB3aXRoIHVua25vd24KCWRpc2NyaW1pbmFudHMuCgkoQW5hbHl6ZV9QYWNrYWdlX1NwZWMsIEFuYWx5emVfUGFja2FnZV9Cb2R5KTogSW5zdGFsbAoJUHJpdmF0ZV9XaXRoX0NsYXVzZXMgYmVmb3JlIGFuYWx5emluZyBwcml2YXRlIHBhcnQgb3IgYm9keS4KCgkqIGVpbmZvLmFkczogSW5kaWNhdGUgdGhhdCBib3RoIEhhc19Vbmtub3duX0Rpc2NyaW1pbmFudHMgYW5kCglIYXNfRGlzY3JpbWluYW50cyBjYW4gYmUgdHJ1ZSBmb3IgYSBnaXZlbiB0eXBlIChkb2N1bWVudGF0aW9uKS4KCjIwMDQtMDMtMDUgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogcy1yZXN0cmkuYWRzOiBGaXggbGljZW5zZSAoR1BMLT5HTUdQTCkuCgoJKiBzLXRhc3N0YS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCgkqIHMtdGFzcmVuLmFkYjogUmVwbGFjZSBtYW51YWwgaGFuZGxpbmcgb2YgU2VsZl9JZC5BVENfTmVzdGluZ19MZXZlbAoJYnkgY2FsbHMgdG8gRXhpdF9PbmVfQVRDX0xldmVsLCBzaW5jZSBhZGRpdGlvbmFsIGNsZWFuIHVwIGlzIHBlcmZvcm1lZAoJYnkgdGhpcyBmdW5jdGlvbi4KCgkqIHMtdHBvYm9wLmFkYjogUmVwbGFjZSBtYW51YWwgaGFuZGxpbmcgb2YgU2VsZl9JZC5BVENfTmVzdGluZ19MZXZlbAoJYnkgY2FsbHMgdG8gRXhpdF9PbmVfQVRDX0xldmVsLCBzaW5jZSBhZGRpdGlvbmFsIGNsZWFuIHVwIGlzIHBlcmZvcm1lZAoJYnkgdGhpcyBmdW5jdGlvbi4KCjIwMDQtMDMtMDUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmFucy5jOiBSZWZsZWN0IEdDQyBjaGFuZ2VzIHRvIGZpeCBib290c3RyYXAgcHJvYmxlbS4KCUFkZCB3YXJuaW5nIGZvciBzdXNwaWNpb3VzIGFsaWFzaW5nIHVuY2hlY2tlZCBjb252ZXJzaW9uLgoKMjAwNC0wMy0wNSAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwNC0wMy0wMiAgRW1tYW51ZWwgQnJpb3QgIDxicmlvdEBhY3QtZXVyb3BlLmZyPgoKCSogYWxpLmFkYiAoUmVhZF9JbnN0YW50aWF0aW9uX0luc3RhbmNlKTogRG8gbm90IG1vZGlmeSB0aGUKCWN1cnJlbnRfZmlsZV9udW0gd2hlbiByZWFkaW5nIGluZm9ybWF0aW9uIGFib3V0IGluc3RhbnRpYXRpb25zLCBzaW5jZQoJdGhpcyBjb3JydXB0cyBmaWxlcyBpbiBsYXRlciByZWZlcmVuY2VzLgoKMjAwNC0wMy0wMiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBiY2hlY2suYWRiIChDaGVja19Db25zaXN0ZW5jeSk6IEdldCB0aGUgZnVsbCBwYXRoIG9mIGFuIEFMSSBmaWxlCgliZWZvcmUgY2hlY2tpbmcgaWYgaXQgaXMgcmVhZC1vbmx5LgoKCSogYmxkLmFkYiAoUmVjdXJzaXZlX1Byb2Nlc3MpOiBDb25jYXRlbmF0ZSA8UFJPSkVDVD4uc3JjX2RpcnMgaW4gZnJvbnQKCW9mIFNSQ19ESVJTIGFuZCBlbGltaW5hdGUgZHVwbGljYXRlcy4KCgkqIGdwcmNtZC5hZGI6IFJlcGxhY2UgY29tbWFuZCAicGF0aCIgd2l0aCBjb21tYW5kICJwYXRoX3NlcCIgdG8gcmV0dXJuCgl0aGUgcGF0aCBzZXBhcmF0b3IuCgkoVXNhZ2UpOiBEb2N1bWVudCBwYXRoX3NlcAoKCSogTWFrZWZpbGUuZ2VuZXJpYzogRm9yIEFkYSBhbmQgR05VIEMrKyBjYXNlcywgbGluayBkaXJlY3RseSB3aXRoIHRoZQoJQysrIGNvbXBpbGVyLiBObyBuZWVkIGZvciBhIHNjcmlwdC4KCVJlcGxhY2UgdXNlIG9mIEMqX0lOQ0xVREVfUEFUSCBlbnYgdmFyIGZvciBHQ0MgY29tcGlsZXJzIHdpdGggQ1BBVEguCglEbyBub3QgY2FsbCBncHJjbWQgdG8gYnVpbGQgdGhlIEMqX0lOQ0xVREVfUEFUSHMsIGRvIGl0IHdpdGggZnVuY3Rpb24KCXN1YnN0LgoKCSogcHJqLWVudi5hZGIgKEZvcl9BbGxfU291cmNlX0RpcnMpOiBPbmx5IGFkZCBzb3VyY2UgZGlycyBpbiBwcm9qZWN0Cgl3aGVyZSB0aGVyZSBhcmUgQWRhIHNvdXJjZXMuCgkoU2V0X0FkYV9QYXRocyk6IE9ubHkgYWRkIHRvIHRoZSBpbmNsdWRlIHBhdGggdGhlIHNvdXJjZSBkaXJzIG9mIHByb2plY3QKCXdpdGggQWRhIHNvdXJjZXMuCgkoQWRkX1RvX1BhdGgpOiBBZGQgdGhlIERpc3BsYXlfVmFsdWVzIG9mIHRoZSBkaXJlY3Rvcmllcywgbm90IHRoZWlyCglWYWx1ZXMuCgoJKiBwcmotbm1zYy5hZGIgKEZpbmRfU291cmNlcyk6IFNldCBmbGFnIFNvdXJjZXNfUHJlc2VudCBpbiB0aGUgcHJvamVjdAoJZGF0YS4KCgkqIHByai1ubXNjLmFkYiAoQWRkX0FMSV9Gb3IpOiBNYWtlIHN1cmUgdGhhdCB0aGUgZWxlbWVudCBEaXNwbGF5X1ZhbHVlCglpcyBub3QgTm9fTmFtZS4KCShGaW5kX1NvdXJjZV9EaXJzKTogU2V0IERpc3BsYXlfVmFsdWUgdG8gYSBub24gY2Fub25pY2FsaXplZCB2YWx1ZSwgb25seQoJVmFsdWUgaXMgY2Fub25pY2FsaXplZC4KCShMYW5ndWFnZV9JbmRlcGVuZGVudF9DaGVjayk6IERvIG5vdCBjb3B5IFZhbHVlIHRvIERpc3BsYXlfVmFsdWUgd2hlbgoJY2Fub25pY2FsaXppbmcgVmFsdWUuCgoJKiBwcmotcGFydC5hZGIgKFBvc3RfUGFyc2VfQ29udGV4dF9DbGF1c2UpOiBDb21wYXJlIGNhbm9uaWNhbCBjYXNlZAoJcGF0aCB0byBmaW5kIGxpbWl0ZWQgd2l0aCBjeWNsZXMuCgkoUGFyc2VfU2luZ2xlX1Byb2plY3QpOiBVc2UgY2Fub25pY2FsIGNhc2VkIHBhdGggdG8gZmluZCB0aGUgZW5kIG9mIGEKCXdpdGggY3ljbGUuCgoyMDA0LTAzLTAyICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKE9wdGlvbmFsX1N1YnVuaXQpOiBWZXJpZnkgdGhhdCB1bml0IGNvbnRhaW5zIGEgc3VidW5pdAoJYW5kIG5vdCBhIGNoaWxkIHVuaXQuCgoJKiBzaW5mby5hZHMsIHNpbmZvLmFkYjogUmVhcnJhbmdlIGZsYWdzIHNvIHRoYXQgUHJpdmF0ZV9QcmVzZW50IGNhbgoJYXBwZWFyIGluIGEgd2l0aF9jbGF1c2UuCgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X3R5cGUpOiBJZiBlbnRpdHkgaXMgYSBnZW5lcmljIHR5cGUsIHdoaWNoIGNhbgoJb25seSBoYXBwZW4gaW4gdHlwZV9hbm5vdGF0ZSBtb2RlLCBkbyBub3QgdHJ5IHRvIGVsYWJvcmF0ZSBpdC4KCgkqIGV4cF91dGlsLmFkYiAoRm9yY2VfRXZhbHVhdGlvbik6IElmIGV4cHJlc3Npb24gaXMgYSBzZWxlY3RlZAoJY29tcG9uZW50IG9uIHRoZSBsZWZ0IG9mIGFuIGFzc2lnbm1lbnQsIHVzZSBhIHJlbmFtaW5nIHJhdGhlciB0aGFuIGEKCXRlbXBvcmFyeSB0byByZW1vdmUgc2lkZSBlZmZlY3RzLgoKCSogZnJlZXplLmFkYiAoRnJlZXplX0VudGl0eSk6IERvIG5vdCBmcmVlemUgYSBnbG9iYWwgZW50aXR5IHdpdGhpbiBhbgoJaW5saW5lZCBpbnN0YW5jZSBib2R5LCB3aGljaCBpcyBhbmFseXplZCBiZWZvcmUgdGhlIGVuZCBvZiB0aGUKCWVuY2xvc2luZyBzY29wZS4KCjIwMDQtMDMtMDIgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcGFyLWNoMTAuYWRiLCBwYXItY2gzLmFkYiwgcGFyLWNoNC5hZGIsIHNjbmcuYWRiLAoJc2VtX2NoNC5hZGI6IFVzZSBuZXcgZmVhdHVyZSBmb3Igc3Vic3RpdHV0aW9uIG9mIGtleXdvcmRzIGluIFZNUwoKCSogZXJyb3V0LmFkcywgZXJyb3V0LmFkYjogSW1wbGVtZW50IG5ldyBjaXJjdWl0IGZvciBzdWJzdGl0dXRpb24gb2YKCWtleXdvcmRzIGluIFZNUy4KCgkqIHNlbV9jYXNlLmFkYiAoQW5hbHl6ZV9DaG9pY2VzKTogUGxhY2UgbWVzc2FnZSBwcm9wZXJseSB3aGVuIGNhc2UgaXMKCWEgc3VidHlwZSByZWZlcmVuY2UgcmF0aGVyIHRoYW4gYW4gZXhwbGljaXQgcmFuZ2UuCgoJKiBzZW1fZWxpbS5hZGIsIHMtdHBvYm9wLmFkcywgZXhwX2NoMi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNC0wMy0wMiAgRG91ZyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIGluaXQuYyAoX19nbmF0X2luaXRpYWxpemUpW1ZNU106IFJlc2lnbmFsIFJEQi1FLVNUUkVBTV9FT0YuCgoyMDA0LTAzLTAyICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzLXRwb3JmdC5hZGI6IEFkZCBtaXNzaW5nIGxvY2tpbmcgYXJvdW5kIGNhbGwgdG8gSW5pdGlhbGl6ZV9BVENCLgoKMjAwNC0wMy0wMiAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHV0aWxzLmMgKGZpbmlzaF9yZWNvcmRfdHlwZSk6IERvIG5vdCBzZXQgREVDTF9OT05BRERSRVNTQUJMRSBmb3IgYQoJQkxLbW9kZSBiaXRmaWVsZC4KCjIwMDQtMDItMjUgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogNTFvc2ludGUuYWRzLCA1Mm9zaW50ZS5hZHMsIDUzb3NpbnRlLmFkcywgNTRvc2ludGUuYWRzLAoJNTVvc2ludGUuYWRzLCA1Nm9zaW50ZS5hZHMsIDVhb3NpbnRlLmFkcywgNWJvc2ludGUuYWRzLAoJNWNvc2ludGUuYWRzLCA1Zm9zaW50ZS5hZHMsIDVnb3NpbnRlLmFkcywgNWhvc2ludGUuYWRzLAoJNWlvc2ludGUuYWRzLCA1bG9zaW50ZS5hZHMsIDVub3NpbnRlLmFkcywgNW9vc2ludGUuYWRzLAoJNXBvc2ludGUuYWRzLCA1c29zaW50ZS5hZHMsIDV0b3NpbnRlLmFkcywgNXZvc2ludGUuYWRzLAoJNXdvc2ludGUuYWRzLCA1em9zaW50ZS5hZHM6IE1vdmUgaW5zdGFuY2VzIG9mIFVuY2hlY2tlZF9Db252ZXJzaW9uIHRvCgl0aGUgZGVmaW5pbmcgaW5zdGFuY2Ugb2YgdGhlIHR5cGUgdG8gYXZvaWQgYWxpYXNpbmcgcHJvYmxlbXMuCglGaXggY29weXJpZ2h0IGhlYWRlci4gIEZpeCBiYWQgY29tbWVudHMgaW4gcGFja2FnZSBoZWFkZXIuCgoJKiBleHBfdXRpbC5hZGIsIHByai1wYXJ0LmFkYiwgcHJqLXBhcnQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDQtMDItMjUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDIuYWRiIChQYXJhbV9FbnRpdHkpOiBIYW5kbGUgcHJvcGVybHkgZm9ybWFscyB0aGF0IGhhdmUgYmVlbgoJcmV3cml0dGVuIGFzIHJlZmVyZW5jZXMgd2hlbiBhbGlhc2VkIHRocm91Z2ggYW4gYWRkcmVzcyBjbGF1c2UuCgoJKiBzZW1fY2g0LmFkYiAoVHJ5X0luZGlyZWN0X0NhbGwpOiBOb3JtYWxpemUgYWN0dWFscyBiZWZvcmUgY2hlY2tpbmcKCXdoZXRoZXIgY2FsbCBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYW4gaW5kaXJlY3QgY2FsbCB0byB0aGUgcmVzdWx0IG9mIGEKCXBhcmFtZXRlcmxlc3MgZnVuY3Rpb24gY2FsbCByZXR1cm5pbmcgYW4gYWNjZXNzIHN1YnByb2dyYW0uCgoyMDA0LTAyLTI1ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCglDb2RlIGNsZWFuIHVwOgoJKiBleHBfY2g3LmFkYiAoTWFrZV9DbGVhbik6IFJlbW92ZSBnZW5lcmF0aW9uIG9mIGNhbGxzIHRvCglVbmxvY2tbX0VudHJpZXNdLCBzaW5jZSB0aGlzIGlzIG5vdyBkb25lIGJ5IFNlcnZpY2VfRW50cmllcyBkaXJlY3RseS4KCgkqIGV4cF9jaDkuYWRiIChCdWlsZF9Qcm90ZWN0ZWRfU3VicHJvZ3JhbV9Cb2R5KTogZGl0dG8uCgoJKiBzLXRwb2JvcC5hZHMsIHMtdHBvYm9wLmFkYiAoUE9fU2VydmljZV9FbnRyaWVzKTogTmV3IG5lc3RlZCBwcm9jZWR1cmUKCVJlcXVldWVfQ2FsbCBmb3IgYmV0dGVyIGNvZGUgcmVhZGFiaWxpdHkuIENoYW5nZSBzcGVjIGFuZCB1cGRhdGUgY2FsbHM6CglQT19TZXJ2aWNlX0VudHJpZXMgbm93IHVubG9jayB0aGUgUE8gb24gZXhpdC4KCShQcm90ZWN0ZWRfRW50cnlfQ2FsbCwgVGltZWRfUHJvdGVjdGVkX0VudHJ5X0NhbGwpOiBVcGRhdGUgY2FsbHMgdG8KCVBPX1NlcnZpY2VfRW50cmllcy4KCgkqIHMtdHBvc2VuLmFkcywgcy10cG9zZW4uYWRiIChTZXJ2aWNlX0VudHJ5KTogTm93IHVubG9jayB0aGUgUE8gb24gZXhpdC4KCgkqIHMtdGFlbmNhLmFkYiwgcy10YXNyZW4uYWRiOiBVcGRhdGUgY2FsbHMgdG8gUE9fU2VydmljZV9FbnRyaWVzLgoKMjAwNC0wMi0yNSAgU2VyZ2V5IFJ5YmluICA8cnliaW5AYWN0LWV1cm9wZS5mcj4KCgkqIGV4cF9jaDkuYWRiIChCdWlsZF9TaW1wbGVfRW50cnlfQ2FsbCk6IFByZXZlbnQgZXhwYW5kaW5nIHRoZQoJcHJvdGVjdGVkIHN1YnByb2dyYW0gY2FsbCBhbmQgYW5hbHl6aW5nIHRoZSByZXN1bHQgb2Ygc3VjaCBleHBhbmRpbmcKCWluIGNhc2Ugd2hlbiB0aGUgY2FsbGVkIHByb3RlY3RlZCBzdWJwcm9ncmFtIGlzIGVsaW1pbmF0ZWQuCgoJKiBzZW1fZWxpbS5hZGIgKENoZWNrX0VsaW1pbmF0ZWQpOiBTa2lwIGJsb2NrcyB3aGVuIGNvbXBhcmluZyBzY29wZQoJbmFtZXMuCgoyMDA0LTAyLTI1ICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluOiBDbGVhbiB1cHMuCgoyMDA0LTAyLTIzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX05fU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IERvIG5vdCBjcmVhdGUKCXByb3RlY3RlZCBvcGVyYXRpb25zIGlmIG9yaWdpbmFsIHN1YnByb2dyYW0gaXMgZmxhZ2dlZCBhcyBlbGltaW5hdGVkLgoJKEV4cGFuZF9OX1N1YnByb2dyYW1fQm9keSk6IEZvciBhIHByb3RlY3RlZCBvcGVyYXRpb24sIGNyZWF0ZQoJZGlzY3JpbWluYWxzIGZvciBuZXh0IG9wZXJhdGlvbiBiZWZvcmUgY2hlY2tpbmcgd2hldGhlciB0aGUgb3BlcmF0aW9uCglpcyBlbGltaW5hdGVkLgoKCSogZXhwX2NoOS5hZGIgKEV4cGFuZF9OX1Byb3RlY3RlZF9Cb2R5LAoJRXhwYW5kX05fUHJvdGVjdGVkX1R5cGVfRGVjbGFyYXRpb24pOiBEbyBub3QgZ2VuZXJhdGUgc3BlY3MgYW5kIGJvZGllcwoJZm9yIGludGVybmFsIHByb3RlY3RlZCBvcGVyYXRpb25zIGlmIHRoZSBvcmlnaW5hbCBzdWJwcm9ncmFtIGlzCgllbGltaW5hdGVkLgoKCSogc2VtX2VsaW0uYWRiIChDaGVja19FbGltaW5hdGVkKTogSGFuZGxlIHByb3Blcmx5IHByb3RlY3RlZCBvcGVyYXRpb25zCglkZWNsYXJlZCBpbiBhIHNpbmdsZSBwcm90ZWN0ZWQgb2JqZWN0LgoKMjAwNC0wMi0yMyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBwcmotYXR0ci5hZGI6IE1ha2UgYXR0cmlidXRlIEJ1aWxkZXInRXhlY3V0YWJsZSBhbiBhc3NvY2lhdGl2ZSBhcnJheSwKCWNhc2UgaW5zZW5zaXRpdmUgaWYgZmlsZSBuYW1lcyBhcmUgY2FzZSBpbnNlbnNpdGl2ZSwgaW5zdGVhZCBvZiBhCglzdGFuZGFyZCBhc3NvY2lhdGl2ZSBhcnJheS4KCgkqIHByai1hdHRyLmFkYiAoSW5pdGlhbGl6ZSk6IEZvciAnYicgYXNzb2NpYXRpdmUgYXJyYXlzLCBkbyBub3Qgc2V0Cgl0aGVtIGFzIGNhc2UgaW5zZW5zaXRpdmUgb24gcGxhdGZvcm1zIHdoZXJlIHRoZSBmaWxlIG5hbWVzIGFyZSBjYXNlCglzZW5zaXRpdmUuCgoJKiBwcmotcGFydC5hZGIgKFBhcnNlX1NpbmdsZV9Qcm9qZWN0KTogTWFrZSBzdXJlLCB3aGVuIGNoZWNraW5nIGlmCglwcm9qZWN0IGZpbGUgaGFzIGFscmVhZHkgYmVlbiBwYXJzZWQgdGhhdCBjYW5vbmljYWwgcGF0aCBhcmUgY29tcGFyZWQuCgoyMDA0LTAyLTIzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNpbnB1dC1jLmFkczogQ29ycmVjdCBiYWQgdW5pdCB0aXRsZSBpbiBoZWFkZXIKCgkqIGZyZWV6ZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwNC0wMi0yMyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fUHJvY2VkdXJlX0NhbGxfU3RhdGVtZW50KTogRm9yCglub25hZGRyZXNzYWJsZSBDT01QT05FTlRfUkVGIHRoYXQgaXMgcmVtb3ZpbmcgcGFkZGluZyB0aGF0IHdlIGFyZQoJdGFraW5nIHRoZSBhZGRyZXNzIG9mLCB0YWtlIHRoZSBhZGRyZXNzIG9mIHRoZSBwYWRkZWQgcmVjb3JkIGluc3RlYWQKCWlmIGl0ZW0gaXMgdmFyaWFibGUgc2l6ZS4KCjIwMDQtMDItMjAgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogYmxkLmFkYiwgZXhwX3V0aWwuYWRiLCBncHJjbWQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDQtMDItMjAgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGZyZWV6ZS5hZGIgKEZyZWV6ZV9SZWNvcmRfVHlwZSk6IEdlbmVyYWxpemUgbWVjaGFuaXNtIHRoYXQgZ2VuZXJhdGVzCglpdHlwZSByZWZlcmVuY2VzIGZvciB0aGUgY29uc3RyYWluZWQgZGVzaWduYXRlZCB0eXBlIG9mIGEgY29tcG9uZW50Cgl3aG9zZSBiYXNlIHR5cGUgaXMgYWxyZWFkeSBmcm96ZW4uCgoyMDA0LTAyLTIwICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGluaXQuYyAoX19nbmF0X2Vycm9yX2hhbmRsZXIgW3RydTY0XSk6IFJld3JpdGUgcHJldmlvdXMgY2hhbmdlIHRvCglhdm9pZCBHQ0Mgd2FybmluZ3MuCgoyMDA0LTAyLTIwICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogc2VtX2NoMTIuYWRiIChBbmFseXplX0Zvcm1hbF9QYWNrYWdlKTogQ3JlYXRlIGEgbmV3IGRlZmluaW5nCglpZGVudGlmaWVyIGZvciBhIHBoYW50b20gcGFja2FnZSB0aGF0IHJld3JpdGVzIHRoZSBmb3JtYWwgcGFja2FnZQoJZGVjbGFyYXRpb24gd2l0aCBhIGJveC4gVGhlIEFkZCBzZW1hbnRpYyBkZWNvcmF0aW9ucyBmb3IgdGhlIGRlZmluaW5nCglpZGVudGlmaWVyIGZyb20gdGhlIG9yaWdpbmFsIG5vZGUgKHRoYXQgcmVwcmVzZW50cyB0aGUgZm9ybWFsIHBhY2thZ2UpLgoKMjAwNC0wMi0xOSAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogTWFrZS1sYW5nLmluIChhZGEvc3RhbXAtc2RlZmF1bHQpOiBVc2UgdGhlIHRvcCBsZXZlbAoJbW92ZS1pZi1jaGFuZ2UuCgoyMDA0LTAyLTE5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogbWlzYy5jIChyZWNvcmRfY29kZV9wb3NpdGlvbik6IEFkZCB0aGlyZCBidWlsZCBhcmcgZm9yIFJUTF9FWFBSLgoKMjAwNC0wMi0xOCAgRW1tYW51ZWwgQnJpb3QgIDxicmlvdEBhY3QtZXVyb3BlLmZyPgoKCSogYWxpLmFkcywgYWxpLmFkYiAoRmlyc3RfU2RlcF9FbnRyeSk6IE5vIGxvbmdlciBhIGNvbnN0YW50LCBzbyB0aGF0CglTY2FuX0FMSSBjYW4gYmUgdXNlZCBmb3IgbXVsdGlwbGUgQUxJIGZpbGVzIHdpdGhvdXQgcmVpbml0aWFsaXppbmcKCWJldHdlZW4gY2FsbHMuCgoyMDA0LTAyLTE4ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGRlYnVnLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwNC0wMi0xOCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIG9iamVjdCk6IFNldCBERUNMX1BPSU5URVJfQUxJQVNfU0VUCgl0byB6ZXJvIGlmIHRoZXJlIGlzIGFuIGFkZHJlc3MgY2xhdXNlLgoKMjAwNC0wMi0xOCAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZXhwX3V0aWwuYWRiIChTaWRlX0VmZmVjdF9GcmVlKTogQW55IGxpdGVyYWwgaXMgc2lkZSBlZmZlY3RzIGZyZWUuCgoyMDA0LTAyLTE4ICBHYXJ5IERpc211a2VzICA8ZGlzbXVrZXNAZ25hdC5jb20+CgoJKiBsYXlvdXQuYWRiIChMYXlvdXRfQ29tcG9uZW50X0xpc3QpOiBSZXZpc2UgZ2VuZXJhdGlvbiBvZiBjYWxsIHRvCglkaXNjcmltaW5hbnQtY2hlY2tpbmcgZnVuY3Rpb24gdG8gcGFzcyBzZWxlY3Rpb25zIG9mIGFsbCBvZiB0aGUgdHlwZSdzCglkaXNjcmltaW5hbnRzIHJhdGhlciB0aGFuIGp1c3QgdGhlIHZhcmlhbnQtY29udHJvbGxpbmcgZGlzY3JpbWluYW50LgoKMjAwNC0wMi0xOCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogNWdtYXN0b3AuYWRiIChQb3BfRnJhbWUpOiBEbyBub3QgY2FsbCBleGNfdW53aW5kLCB3aGljaCBpcyBib3VuZCB0bwoJZmFpbCBpbiB0aGUgY3VycmVudCBzZXR1cCBhbmQgdHJpZ2dlcnMgc3B1cmlvdXMgc3lzdGVtIGVycm9yIG1lc3NhZ2VzLgoJUHJldGVuZCBpdCBvY2N1cnJlZCBhbmQgZmFpbGVkIGluc3RlYWQuCgoyMDA0LTAyLTE4ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGJsZC5hZGI6IE1hcmsgRkxERkxBR1MgYXMgc2F2ZWQKCShQcm9jZXNzX0RlY2xhcmF0aXZlX0l0ZW1zKTogQWRkIExpbmtlcidMaW5rZXJfT3B0aW9ucyB0byBGTERGTEFHUyB3aGVuCglpdCBpcyBub3QgdGhlIHJvb3QgcHJvamVjdC4gIFB1dCBlYWNoIGRpcmVjdG9yeSB0byBiZQoJZXh0ZW5kZWQgYmV0d2VlbiBkb3VibGUgcXVvdGVzIHRvIHByZXZlbnQgaXQgdG8gYmUgZXhwYW5kZWQgb24gV2luZG93cy4KCShSZWN1cnNpdmVfUHJvY2Vzcyk6IFJlc2V0IENGTEFHUy9DWFhGTEFHUyB0byBub3RoaW5nIGJlZm9yZSBwcm9jZXNzaW5nCgl0aGUgcHJvamVjdCBmaWxlLiBTZXQgdGhlbSBiYWNrIHRvIHRoZWlyIGluaXRpYWwgdmFsdWVzIGlmIHRoZXkgaGF2ZSBub3QKCWJlZW4gc2V0IGluIHRoZSBwcm9qZWN0IGZpbGUuCgoJKiBncHJjbWQuYWRiOiAoR3ByZGVidWcsIERlYnVnKTogTmV3IGdsb2JhbCB2YXJpYWJsZXMKCShEaXNwbGF5X0NvbW1hbmQpOiBOZXcgcHJvY2VkdXJlCgkoVXNhZ2UpOiBEb2N1bWVudCBuZXcgY29tbWFuZCAibGlua29wdHMiCglDYWxsIERpc3BsYXlfQ29tbWFuZCB3aGVuIGVudiB2YXIgR1BSREVCVUcgaGFzIHRoZSB2YWx1ZSAiVFJVRSIKCUltcGxlbWVudCBuZXcgY29tbWFuZCAibGlua29wdHMiCglSZW1vdmUgcXVvdGVzIHRoYXQgbWF5IGJlIGFyb3VuZCBhcmd1bWVudHMgZm9yICJleHRlbmQiCglBbHdheXMgY2FsbCBOb3JtYWxpemVfUGF0aG5hbWUgd2l0aCBhcmd1bWVudHMgZm9ybWF0dGVkIGZvciB0aGUgcGxhdGZvcm0KCgkqIE1ha2VmaWxlLmdlbmVyaWM6IExpbmsgQy9DKysgbWFpbnMgd2l0aCAkKEZMREZMQUdTKQoJQ2hhbmdlIEBlY2hvIHRvIEAkKGRpc3BsYXkpIGluIHRhcmdldCBjbGVhbiB0byBiZSBhYmxlIHRvIGNsZWFuIHNpbGVudGx5CgoJKiBNYWtlZmlsZS5wcm9sb2c6IFNhdmUgRkxERkxBR1MgYW5kIGdpdmUgaXQgYW4gaW5pdGlhbCBlbXB0eSB2YWx1ZQoKCSogcHJqLXBhcnQuYWRiIChQcm9qZWN0X1BhdGhfTmFtZV9PZik6IERvIG5vdCBwdXQgZmluYWwgcmVzdWx0IGluCgljYW5vbmljYWwgY2FzZS4KCgkqIHByai1wYXJ0LmFkYiAoUGFyc2VfU2luZ2xlX1Byb2plY3QpOiBBbHdheXMgY2FsbCB3aXRoIEZyb21fRXh0ZW5kZWQKCT0gRXh0ZW5kaW5nX0FsbCB3aGVuIGN1cnJlbnQgcHJvamVjdCBpcyBhbiBleHRlbmRpbmcgYWxsIHByb2plY3QuCgoJKiB2bXNfY29udi5hZGIgKE91dHB1dF9GaWxlX0V4cGVjdGVkKTogTmV3IEJvb2xlYW4gZ2xvYmFsIHZhcmlhYmxlLAoJc2V0IHRvIFRydWUgb25seSBmb3IgTElOSyBjb21tYW5kLCBhZnRlciBVbml4IHN3aXRjaCAtby4KCShQcm9jZXNzX0FyZ3VtZW50cyk6IFNldCBPdXRwdXRfRmlsZV9FeHBlY3RlZCB0byBUcnVlIGZvciBMSU5LIGNvbW1hbmQKCWFmdGVyIFVuaXggc3dpdGNoIC1vLiBXaGVuIE91dHB1dF9GaWxlX0V4cGVjdGVkIGlzIFRydWUsIG5ldmVyIGFkZCBhbgoJZXh0ZW5zaW9uIHRvIGEgZmlsZSBuYW1lLgoKCSogNXZtbC10Z3QuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBEbyBub3QgYXBwZW5kICIvT1BUSU9OUyIgdG8gdGhlCglvcHRpb24gZmlsZSBuYW1lLCBvbmx5IHRvIHRoZSAtLWZvci1saW5rZXI9IHN3aXRjaC4KCShPcHRpb25fRmlsZV9OYW1lKTogSWYgb3B0aW9uIGZpbGUgbmFtZSBkbyBub3QgZW5kIHdpdGggIi5vcHQiLCBhcHBlbmQKCSIvT1BUSU9OUyIuCgoyMDA0LTAyLTE4ICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDA0LTAyLTE3ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKHN0YW1wLXNkZWZhdWx0KTogRG8gbm90IGRlcGVuZCBvbgoJbW92ZS1pZi1jaGFuZ2UuCgoyMDA0LTAyLTEyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY29uZmlnLWxhbmcuaW46IERpc2FibGUgQWRhIGJ5IGRlZmF1bHQgdW50aWwgcHJvYmUgbG9naWMgZm9yCglhIGJvb3RzdHJhcCBBZGEgY29tcGlsZXIgY2FuIGJlIG1vdmVkIHRvIHRoZSB0b3AgbGV2ZWwgY29uZmlndXJlCglzY3JpcHQuCgoyMDA0LTAyLTEyICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiBkZWNsLmMgKGNvbXBvbmVudHNfdG9fcmVjb3JkKTogRG9uJ3QgY2xhaW0gdGhhdCB0aGUgaW50ZXJuYWwgZmllbGRzCgl3ZSBtYWtlIHRvIGhvbGQgdGhlIHZhcmlhbnQgcGFydHMgYXJlIHNlbWFudGljYWxseSBhZGRyZXNzYWJsZSwgYmVjYXVzZQoJdGhleSBhcmUgbm90LgoKCSogZXhwX3Bha2QuYWRiIChDcmVhdGVfUGFja2VkX0FycmF5X1R5cGUpOiBSZW5hbWUgRXNpeiBpbnRvIFBBU2l6ZSBhbmQKCWFkanVzdCB0aGUgY29tbWVudCBkZXNjcmliaW5nIHRoZSBtb2R1bGFyIHR5cGUgZm9ybSB3aGVuIHdlIGNhbiB1c2UgaXQuCgkoSW5zdGFsbF9QQVQpOiBBY2NvdW50IGZvciB0aGUgRXNpeiByZW5hbWluZy4KCgkqIGluaXQuYyAoX19nbmF0X2Vycm9yX2hhbmRsZXIgZm9yIGFscGhhLXRydTY0KTogQXJyYW5nZSB0byBjbGVhciB0aGUKCXNjX29uc3RhY2sgY29udGV4dCBpbmRpY2F0aW9uIGJlZm9yZSByYWlzaW5nIHRoZSBleGNlcHRpb24gdG8gd2hpY2gKCXRoZSBzaWduYWwgaXMgbWFwcGVkLiBBbGxvd3MgYmV0dGVyIGhhbmRsaW5nIG9mIGxhdGVyIHNpZ25hbHMgcG9zc2libHkKCXRyaWdnZXJlZCBieSB0aGUgcmVzdW1lZCB1c2VyIGNvZGUgaWYgdGhlIGV4Y2VwdGlvbiBpcyBoYW5kbGVkLgoKMjAwNC0wMi0xMiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiA1emluaXQuYWRiOiBSZW1vdmVkLCBubyBsb25nZXIgdXNlZC4KCjIwMDQtMDItMTIgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogYWxpLmFkYjogUmVtb3ZlIHNlcGFyYXRpbmcgc3BhY2UgYmV0d2VlbiBwYXJhbWV0ZXJzIG9uIFIgbGluZS4gTWFrZXMKCWZvcm1hdCBjb25zaXN0ZW50IHdpdGggZm9ybWF0IHVzZWQgYnkgdGhlIGJpbmRlciBmb3IgU2V0X0dsb2JhbHMgY2FsbC4KCgkqIGF0cmVlLmFkcywgYXRyZWUuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcgKG5ldyBmdW5jdGlvbiBoZWFkZXIgZm9ybWF0KQoKCSogYmluZGdlbi5hZGI6IEFkZCBSdW4tVGltZSBHbG9iYWxzIGRvY3VtZW50YXRpb24gc2VjdGlvbiBjb250YWluaW5nCglkZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9mIHRoZSBnbG9iYWxzIHBhc3NlZCBmcm9tIHRoZSBiaW5kZXIgZmlsZSB0bwoJdGhlIHJ1biB0aW1lLgoKCSogZ25hdGxzLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBpbml0LmMgKF9fZ25hdF9zZXRfZ2xvYmFscyk6IEFkZCBub3RlIHBvaW50aW5nIHRvIGRvY3VtZW50YXRpb24gaW4KCWJpbmRnZW4uCgoJKiBsaWItd3JpdC5hZHMsIGxpYi13cml0LmFkYjogUmVtb3ZlIHNlcGFyYXRpbmcgc3BhY2UgYmV0d2VlbgoJcGFyYW1ldGVycyBvbiBSIGxpbmUuCglNYWtlcyBmb3JtYXQgY29uc2lzdGVudCB3aXRoIGZvcm1hdCB1c2VkIGJ5IHRoZSBiaW5kZXIgZm9yIFNldF9HbG9iYWxzCgljYWxsLgoKCSogb3NpbnQuYWRzOiBBZGQgMjAwNCB0byBjb3B5cmlnaHQgbm90aWNlCglNaW5vciByZWZvcm1hdHRpbmcKCgkqIHNuYW1lcy5hZHM6IENvcnJlY3QgY2FwaXRhbGl6YXRpb24gb2YgRklGT19XaXRoaW5fUHJpb3JpdGllcwoJTm90aWNlZCBkdXJpbmcgY29kZSByZWFkaW5nLCBkb2N1bWVudGF0aW9uIGlzc3VlIG9ubHkKCgkqIHVzYWdlLmFkYjogUmVtb3ZlIGp1bmsgbGluZSBmb3Igb2Jzb2xldGUgQyBzd2l0Y2gKCU5vdGljZWQgZHVyaW5nIGNvZGUgcmVhZGluZwoKMjAwNC0wMi0xMiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBibGQuYWRiIChQcm9jZXNzX0RlY2xhcmF0aXZlX0l0ZW1zKTogRm9yIFNvdXJjZV9EaXJzIGNhbGwgZ3ByY21kCglleHRlbmQgZm9yIGVhY2ggZGlyZWN0b3J5LCBzbyB0aGF0IG11bHRpcGxlIC8qKiBkaXJlY3RvcmllcyBhcmUKCWV4dGVuZGVkIGluZGl2aWR1YWxseS4KCShSZWN1cnNpdmVfUHJvY2Vzcyk6IFNldCB0aGUgZGVmYXVsdCBmb3IgTEFOR1VBR0VTIHRvIGFkYQoKCSogZ3ByY21kLmFkYjogRGVmaW5lIG5ldyBjb21tYW5kICJpZ25vcmUiLCB0byBkbyBub3RoaW5nLgoJSW1wbGVtZW50IG5ldyBjb21tZW50ICJwYXRoIi4KCgkqIE1ha2VmaWxlLmdlbmVyaWM6IFN1cHByZXNzIG91dHB1dCB3aGVuIFNJTEVOVCBpcyBzZXQKCU1ha2Ugc3VyZSB0aGF0IHdoZW4gY29tcGlsZXIgZm9yIEMvQysrIGlzIGdjYywgdGhlIGNvcnJlY3QgLXggc3dpdGNoIGlzCgl1c2VkLCBzbyB0aGF0IHRoZSBjb3JyZWN0IGNvbXBpbGVyIGlzIGludm9rZWQuCglXaGVuIGNvbXBpbGVyIGlzIGdjYy9nKyssIHB1dCBzZWFyY2ggcGF0aCBpbiBlbnYgdmFycyBDX0lOQ0xVREVfUEFUSC8KCUNYWF9JTkNMVURFX1BBVEgsIHRvIGF2b2lkIGZhaWx1cmUgd2l0aCB0b28gbG9uZyBjb21tYW5kIGxpbmVzLgoKMjAwNC0wMi0xMiAgSmVyb21lIEd1aXR0b24gIDxndWl0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjogQ2xlYW4gdXBzIGFuZCByZW1vdmUgb2Jzb2xldGUgdGFyZ2V0cy4KCjIwMDQtMDItMTIgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDUuYWRiOiBSZW1vdmUgUG9zc2libGVfVW5saWduZWRfU2xpY2UsIGluIGZhdm9yIG9mIHRoZSBzaW1pbGFyCglwcmVkaWNhdGUgZGVjbGFyZWQgaW4gZXhwX3V0aWwuCgoJKiBleHBfdXRpbC5hZGI6IEFkZCBjb21tZW50cy4KCgkqIHNlbV9jaDEwLmFkYiAoQW5hbHl6ZV9TdWJ1bml0KTogUmVtb3ZlIHVsdGltYXRlIHBhcmVudCB1bml0IGZyb20KCXZpc2liaWxpdHkgYmVmb3JlIGNvbXBpbGluZyBjb250ZXh0IG9mIHRoZSBzdWJ1bml0LgoKCSogc2VtX3Jlcy5hZGIgKENoZWNrX1BhcmFtZXRlcmxlc3NfQ2FsbCk6IElmIHRoZSBjb250ZXh0IGV4cGVjdHMgYQoJdmFsdWUgYnV0IHRoZSBuYW1lIGlzIGEgcHJvY2VkdXJlLCBkbyBub3QgYXR0ZW1wdCB0byBhbmFseXplIGFzIGEgY2FsbCwKCWluIG9yZGVyIHRvIG9idGFpbiBtb3JlIHRlbGxpbmcgZGlhZ25vc3RpY3MuCgoJKiBzZW1fdXRpbC5hZGIgKFdyb25nX1R5cGUpOiBGdXJ0aGVyIGVuaGFuY2VtZW50IHRvIGRpYWdub3NlIG1pc3NpbmcKCSdBY2Nlc3Mgb24gcGFyYW1ldGVybGVzcyBmdW5jdGlvbiBjYWxscy4KCShOb3JtYWxpemVfQWN0dWFscyk6IEZvciBhIHBhcmFtZXRlcmxlc3MgZnVuY3Rpb24gY2FsbCB3aXRoIG1pc3NpbmcKCWFjdHVhbHMsIGRlZmVyIGRpYWdub3N0aWMgdW50aWwgcmVzb2x1dGlvbiBvZiBlbmNsb3NpbmcgY2FsbC4KCgkqIHNlbV91dGlsLmFkYiAoV3JvbmdfVHlwZSk6IElmIHRoZSBjb250ZXh0IHR5cGUgaXMgYW4gYWNjZXNzIHRvCglzdWJwcm9ncmFtIGFuZCB0aGUgZXhwcmVzc2lvbiBpcyBhIHByb2NlZHVyZSBuYW1lLCBzdWdnZXN0IGEgbWlzc2luZwoJJ2F0dHJpYnV0ZS4KCjIwMDQtMDItMTAgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPiwKCSAgICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCglQUiBhZGEvNjYzNwoJUFIgYWRhLzU5MTEKCU1lcmdlIHdpdGggbGliYWRhLWJyYW5jaDoKCSogY29uZmlnLWxhbmcuaW46IEJ1aWxkIGxpYmFkYSBvbmx5IHdoZW4gYWRhIGlzIGJ1aWx0LgoKMjAwNC0wMi0wOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX09wX0VxKTogV2hlbiBsb29raW5nIGZvciB0aGUgcHJpbWl0aXZlIGVxdWFsaXR5Cglmb3IgYSB0YWdnZWQgdHlwZSwgdmVyaWZ5IHRoYXQgYm90aCBmb3JtYWxzIGhhdmUgdGhlIHNhbWUgdHlwZS4KCgkqIGV4cF9jaDYuYWRiIChBZGRfQ2FsbF9CeV9Db3B5X0NvZGUpOiBJbml0aWFsaXplIHByb3Blcmx5IHRoZQoJdGVtcG9yYXJ5IHdoZW4gdGhlIGZvcm1hbCBpcyBhbiBpbi1wYXJhbWV0ZXIgYW5kIHRoZSBhY3R1YWwgYSBwb3NzaWJseQoJdW5hbGlnbmVkIHNsaWNlLgoKCSogZXhwX2NoOS5hZGIgKEV4cGFuZF9FbnRyeV9CYXJyaWVyKTogUmVzb2x2ZSBiYXJyaWVyIGV4cHJlc3Npb24gZXZlbgoJd2hlbiBleHBhbnNpb24gaXMgZGlzYWJsZWQsIHRvIGVuc3VyZSBwcm9wZXIgbmFtZSBjYXB0dXJlIHdpdGgKCW92ZXJsb2FkZWQgbGl0ZXJhbHMuICBDb25kaXRpb24gY2FuIGJlIG9mIGFueSBib29sZWFuIHR5cGUsIHJlc29sdmUKCWFjY29yZGluZ2x5LgoKCSogc2VtX2NoOC5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9SZW5hbWluZyk6IEVtaXQgd2FybmluZyBpZiB0aGUKCXJlbmFtaW5nIGlzIGZvciBhIGZvcm1hbCBzdWJwcm9ncmFtIHdpdGggYSBkZWZhdWx0IG9wZXJhdG9yIG5hbWUsIGFuZAoJdGhlcmUgaXMgYSB1c2FibGUgb3BlcmF0b3IgdGhhdCBpcyB2aXNpYmxlIGF0IHRoZSBwb2ludCBvZgoJaW5zdGFudGlhdGlvbi4KCjIwMDQtMDItMDkgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogYWxpLmFkYiAoU2Nhbl9BbGkpIEFkZCBJZ25vcmVfRXJyb3JzIGFyZ3VtZW50LiBUaGlzIGlzIGEgbWFqb3IKCXJld3JpdGUgdG8gaWdub3JlIGVycm9ycyBpbiBhbGkgZmlsZXMsIGludGVuZGVkIHRvIGFsbG93IHRvb2xzIGRvd253YXJkCgljb21wYXRpYmlsaXR5IHdpdGggbmV3IHZlcnNpb25zIG9mIGFsaSBmaWxlcy4KCgkqIGFsaS5hZHM6IEFkZCBuZXcgcGFyYW1ldGVyIElnbm9yZV9FcnJvcnMKCgkqIGJjaGVjay5hZGIgKENoZWNrX0NvbnNpc3RlbnRfUmVzdHJpY3Rpb25zKTogRml4IGVycm9yIG9mIHNvbWV0aW1lcwoJZHVwbGljYXRpbmcgdGhlIGVycm9yIG1lc3NhZ2UgZ2l2aW5nIHRoZSBmaWxlIHdpdGggcmVzdHJpY3Rpb25zLgoKCSogZGVidWcuYWRiOiBBZGQgZGVidWcgZmxhZyBJIGZvciBnbmF0YmluZAoKCSogZXJyb3V0LmFkYiAoU2V0X01zZ19JbnNlcnRpb25fTm9kZSk6IFN1cHByZXNzIGV4dHJhIHF1b3RlcyBhcm91bmQKCW9wZXJhdG9ycyBmb3IgdGhlIGNhc2Ugd2hlcmUgdGhlIG9wZXJhdG9yIGlzIGEgZGVmaW5pbmcgb3BlcmF0b3IuCgoJKiBleHBfY2gzLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nIChuZXcgZnVuY3Rpb24gc3BlYyBmb3JtYXQpLgoKCSogZXhwX2NoNC5hZGI6IEFkZCBjb21tZW50IGZvciBwcmV2aW91cyBjaGFuZ2UsIGFuZCBtYWtlIG1pbm9yCglhZGp1c3RtZW50IHRvIGxvb3AgdG8gYWx3YXlzIGNoZWNrIGZvciBpbXByb3BlciBsb29wIHRlcm1pbmF0aW9uLgoJTWlub3IgcmVmb3JtYXR0aW5nIHRocm91Z2hvdXQgKG5ldyBmdW5jdGlvbiBzcGVjIGZvcm1hdCkuCgoJKiBnbmF0YmluZC5hZGI6IEltcGxlbWVudCAtZGkgZGVidWcgZmxhZyBmb3IgZ25hdGJpbmQKCgkqIGduYXRsaW5rLmFkYjogQ2FsbCBTY2FuX0FMSSB3aXRoIElnbm9yZV9FcnJvcnMgc2V0IHRvIFRydWUKCgkqIGduYXRscy5hZGI6IENhbGwgU2Nhbl9BTEkgd2l0aCBJZ25vcmVfRXJyb3JzIHNldCB0byBUcnVlCgoJKiBsaWItbG9hZC5hZGI6IEZpeCBiYWQgYXNzZXJ0aW9uLgoJRm91bmQgYnkgdGVzdGluZyBhbmQgY29kZSByZWFkaW5nLgoJTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogbGliLWxvYWQuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcuCgoJKiBsaWItd3JpdC5hZGI6IFRoZXJlIGlzIG9ubHkgb25lIFIgbGluZSBub3cuCgoJKiBsaWItd3JpdC5hZHM6IEFkZCBkb2N1bWVudGF0aW9uIG9uIG1ha2luZyBkb3dud2FyZCBjb21wYXRpYmxlIGNoYW5nZXMKCXRvIGFsaSBmaWxlcyBzbyBvbGQgdG9vbHMgd29yayB3aXRoIG5ldyBhbGkgZmlsZXMuCglUaGVyZSBpcyBvbmx5IG9uZSBSIGxpbmUgbm93LgoJQWRkIGRvY3VtZW50YXRpb24gb24gZm9ybWF0IGluY29tcGF0aWJpbGl0aWVzICh3aXRoIHNwZWNpYWwgR1BTIG5vdGUpCgoJKiBuYW1ldC5hZHMsIG5hbWV0LmFkYjogKElzX09wZXJhdG9yX05hbWUpOiBOZXcgcHJvY2VkdXJlCgoJKiBwYXItbG9hZC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc2VtX2NoOC5hZGI6IEZpeCB0byBlcnJvciBtZXNzYWdlIGZyb20gbGFzdCB1cGRhdGUKCU1pbm9yIHJlZm9ybWF0dGluZyBhbmQgcmVzdHJ1Y3R1cmluZyBvZiBjb2RlIGZyb20gbGFzdCB1cGRhdGUKCgkqIHBhci1wcmFnLmFkYiwgc25hbWVzLmFkYiwgc25hbWVzLmFkcywgc25hbWVzLmgsCglzZW1fcHJhZy5hZGI6IEltcGxlbWVudCBwcmFnbWEgUHJvZmlsZS4KCgkqIHN0eWxlc3cuYWRiOiBJbXBsZW1lbnQgLWduYXR5TiBzd2l0Y2ggdG8gdHVybiBvZmYgYWxsIHN0eWxlIGNoZWNrCglvcHRpb25zLgoKCSogdXNhZ2UuYWRiOiBBZGQgbGluZSBmb3IgLWduYXR5TiBzd2l0Y2gKCgkqIHZtc19kYXRhLmFkczogQWRkIGVudHJ5IFNUWUxFX0NIRUNLUz1OT05FIGZvciAtZ25hdHlOCgoyMDA0LTAyLTA5ICBBbGJlcnQgTGVlICA8bGVlQGduYXQuY29tPgoKCSogZXJybm8uYzogZGVmaW5lIF9TR0lfTVBfU09VUkNFIGZvciB0YXNrLXNhZmUgZXJybm8gb24gSVJJWAoKMjAwNC0wMi0wOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoMy5hZGIgKEJ1aWxkX1NsaWNlX0Fzc2lnbm1lbnQpOiBIYW5kbGUgcHJvcGVybHkgY2FzZSBvZiBudWxsCglzbGljZXMuCgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX0NhbGwpOiBEbyBub3QgaW5saW5lIGEgY2FsbCB3aGVuIHRoZSBzdWJwcm9ncmFtCglpcyBuZXN0ZWQgaW4gYW4gaW5zdGFuY2UgdGhhdCBpcyBub3QgZnJvemVuIHlldCwgdG8gYXZvaWQKCW9yZGVyLW9mLWVsYWJvcmF0aW9uIHByb2JsZW1zIGluIGdpZ2kuCgoJKiBzZW1fYXR0ci5hZGIgKEFuYWx5emVfQXR0cmlidXRlLCBjYXNlICdBY2Nlc3MpOiBXaXRoaW4gYW4gaW5saW5lZAoJYm9keSB0aGUgYXR0cmlidXRlIGlzIGxlZ2FsLgoKMjAwNC0wMi0wOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzLXJpZGVudC5hZHM6IE1pbm9yIGNvbW1lbnQgY29ycmVjdGlvbgoKCSogdGFyZ3Bhcm0uYWRiOiBSZW1vdmUgZGVwZW5kZW5jZSBvbiB1aW50cCBjb21wbGV0ZWx5LiBUaGVyZSB3YXMKCWFsd2F5cyBhIGJ1ZyBpbiBNYWtlIGluIHRoYXQgaXQgY2FsbGVkIFRhcmdwYXJtIGJlZm9yZSBpbml0aWFsaXppbmcKCXRoZSBVaW50IHBhY2thZ2UuIFRoZSBvbGQgY29kZSBhcHBlYXJlZCB0byBnZXQgYXdheSB3aXRoIHRoaXMsIGJ1dAoJdGhlIG5ldyBjb2RlIGRpZCBub3QhIFRoaXMgY2F1c2VkIGFuIGFzc2VydGlvbiBlcnJvciBpbiBnbmF0bWFrZS4KCgkqIHRhcmdwYXJtLmFkczogRml4IGJhZCBjb21tZW50LCByZXN0cmljdGlvbiBwcmFnbWFzIHdpdGggcGFyYW1ldGVycwoJYXJlIGluZGVlZCBmdWxseSBzdXBwb3J0ZWQuCgoyMDA0LTAyLTA2ICBBbGFuIE1vZHJhICA8YW1vZHJhQGJpZ3BvbmQubmV0LmF1PgoKCSogbWlzYy5jIChkZWZhdWx0X3Bhc3NfYnlfcmVmKTogVXBkYXRlIElOSVRfQ1VNVUxBVElWRV9BUkdTIGNhbGwuCgoyMDA0LTAyLTA1ICBLYXp1IEhpcmF0YSAgPGthenVAY3MudW1hc3MuZWR1PgoKCSogYWRhL3V0aWxzLmMgKGNyZWF0ZV9wYXJhbV9kZWNsKTogUmVwbGFjZSBQUk9NT1RFX1BST1RPVFlQRVMKCXdpdGggdGFyZ2V0bS5jYWxscy5wcm9tb3RlX3Byb3RvdHlwZXMuCgoyMDA0LTAyLTA0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIDVndGFzaW5mLmFkYiwgNWd0YXNpbmYuYWRzLCA1Z3RhcHJvcC5hZGIsIGFsaS5hZGIsCglhbGkuYWRzLCBncHJjbWQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGJpbmRnZW4uYWRiOiBPdXRwdXQgcmVzdHJpY3Rpb25zIHN0cmluZyBmb3IgbmV3IHN0eWxlIHJlc3RyaWN0aW9ucwoJaGFuZGxpbmcKCgkqIGltcHVuaXQuYWRiOiBBZGQgcy1yaWRlbnQuYWRzIChTeXN0ZW0uUmlkZW50KSBhbmQKCXMtcmVzdHJpIChTeXN0ZW0uUmVzdHJpY3Rpb25zKQoKCSogbGliLXdyaXQuYWRiOiBGaXggYnVnIGluIHdyaXRpbmcgcmVzdHJpY3Rpb25zIHN0cmluZyAobGFzdCBmZXcKCWVudHJpZXMgd3JvbmcpCgoJKiBzLXJlc3RyaS5hZHMsIHMtcmVzdHJpLmFkYjogQ2hhbmdlIG5hbWUgUmVzdHJpY3Rpb25zIHRvCglSdW5fVGltZV9SZXN0cmljdGlvbnMgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBwYWNrYWdlIG5hbWUuCglBZGQgY2lyY3VpdCB0byByZWFkIGFuZCBhY3F1aXJlIHJ1biB0aW1lIHJlc3RyaWN0aW9ucy4KCjIwMDQtMDItMDQgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIHJlc3RyaWN0LmFkcywgcmVzdHJpY3QuYWRiOiBVc2UgdGhlIG5ldyByZXN0cmljdGlvbgoJTm9fVGFza19BdHRyaWJ1dGVzX1BhY2thZ2UgaW5zdGVhZCBvZiB0aGUgb2xkIE5vX1Rhc2tfQXR0cmlidXRlcy4KCgkqIHNlbV9wcmFnLmFkYjogTm9fVGFza19BdHRyaWJ1dGVzIGlzIGEgc3lub255bSBvZgoJTm9fVGFza19BdHRyaWJ1dGVzX1BhY2thZ2UuCgoJKiBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiOiBOZXcgZW50cnkgZm9yIHByb3BlciBoYW5kbGluZyBvZgoJTm9fVGFza19BdHRyaWJ1dGVzLgoKCSogcy1yaWRlbnQuYWRzOiBBZGRpbmcgcmVzdHJpY3Rpb24gTm9fVGFza19BdHRyaWJ1dGVzX1BhY2thZ2UKCShBSS0wMDI0OSkgdGhhdCBzdXBlcnNlZGVzIHRoZSBHTkFUIHNwZWNpZmljIHJlc3RyaWN0aW9uCglOb19UYXNrX0F0dHJpYnV0ZXMuCgoyMDA0LTAyLTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fcHJhZy5hZGI6CgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgV2FybmluZ3MpOiBJbiBhbiBpbmxpbmVkIGJvZHksIGFzIGluIGFuIGluc3RhbmNlCgkgYm9keSwgYW4gaWRlbnRpZmllciBtYXkgYmUgd3JhcHBlZCBpbiBhbiB1bmNoZWNrZWQgY29udmVyc2lvbi4KCjIwMDQtMDItMDQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbGliLXdyaXQuYWRzOiBDb21tZW50IHVwZGF0ZSBmb3IgdGhlIFcgbGluZXMKCgkqIGJsZC5hZGI6IChFeHByZXNzaW9uKTogQW4gZW1wdHkgc3RyaW5nIGxpc3QgaXMgc3RhdGljCgoJKiBmbmFtZS11Zi5hZGI6IE1pbm9yIGNvbW1lbnQgdXBkYXRlCgoJKiBmbmFtZS11Zi5hZHM6IChHZXRfRmlsZV9OYW1lKTogRG9jdW1lbnQgbmV3IHBhcmFtZXRlciBNYXlfRmFpbAoKCSogZ25hdGJpbmQuYWRiOiBJbml0aWFsaXplIEN1bXVsYXRpdmVfUmVzdHJpY3Rpb25zIHdpdGggdGhlCglyZXN0cmljdGlvbnMgb24gdGhlIHRhcmdldC4KCjIwMDQtMDItMDMgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBhZGEvdHJhbnMuYyAoZ2lnaSk6IFVzZSBnZW5fcnR4X1NZTUJPTF9SRUYgaW5zdGVhZCBvZgoJZ2VuX3J0eC4KCjIwMDQtMDItMDIgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgc2V0dGluZyBvZiBUSFJFQURTTElCIG9uIG1pcHMgbzMyLCB1bm5lZWRlZC4KCjIwMDQtMDItMDIgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ3ByY21kLmFkYiAoQ2hlY2tfQXJncyk6IElmIGNvbmRpdGlvbiBpcyBmYWxzZSwgcHJpbnQgdGhlIGludm9rZWQKCWNvbW1lbnQgYmVmb3JlIHRoZSB1c2FnZS4KCUdwcmNtZDogRmFpbCB3aGVuIGNvbW1hbmQgaXMgbm90IHJlY29nbml6ZWQuCgkoVXNhZ2UpOiBEb2N1bWVudCBjb21tYW5kICJwcmVmaXgiCgoJKiBnLW1kNS5hZGIgKERpZ2VzdCk6IFByb2Nlc3MgbGFzdCBibG9jay4KCShVcGRhdGUpOiBEbyBub3QgcHJvY2VzcyBsYXN0IGJsb2NrLiBTdG9yZSByZW1haW5pbmcgY2hhcmFjdGVycyBhbmQKCWxlbmd0aCBpbiBDb250ZXh0LgoKCSogZy1tZDUuYWRzIChVcGRhdGUpOiBEb2N1bWVudCB0aGF0IHNldmVyYWwgY2FsbCB0byB1cGRhdGUgYXJlCgllcXVpdmFsZW50IHRvIG9uZSBjYWxsIHdpdGggdGhlIGNvbmNhdGVuYXRlZCBzdHJpbmcuCgkoQ29udGV4dCk6IEFkZCBmaWVsZHMgdG8gYWxsb3cgbmV3IFVwZGF0ZSBiZWhhdmlvdXIuCgoJKiBmbmFtZS11Zi5hZHMvYWRiIChHZXRfRmlsZV9OYW1lKTogTmV3IEJvb2xlYW4gcGFyYW1ldGVyIE1heV9GYWlsLAoJZGVmYXVsdGVkIHRvIEZhbHNlLgoJV2hlbiBNYXlfRmFpbCBpcyBUcnVlIGFuZCBubyBleGlzdGluZyBmaWxlIGNhbiBiZSBmb3VuZCwgcmV0dXJuIE5vX0ZpbGUuCgoJKiA2dmNzdHJlYS5hZGI6IElubGluZWQgZnVuY3Rpb25zIGFyZSBub3cgd3JhcHBlcnMgdG8gaW1wbGVtZW50YXRpb24KCWZ1bmN0aW9ucy4KCgkqIGxpYi13cml0LmFkYiAoV3JpdGVfV2l0aF9MaW5lcyk6IFdoZW4gYm9keSBmaWxlIGRvZXMgbm90IGV4aXN0LCB1c2UKCXNwZWMgZmlsZSBuYW1lIGluc3RlYWQgb24gdGhlIFcgbGluZS4KCjIwMDQtMDItMDIgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogYWxpLmFkYjogUmVhZCBhbmQgYWNxdWlyZSBpbmZvIGZyb20gbmV3IGZvcm1hdCByZXN0cmljdGlvbnMgbGluZXMKCgkqIGJjaGVjay5hZGI6IEFkZCBjaXJjdWl0cyBmb3IgY2hlY2tpbmcgcmVzdHJpY3Rpb25zIHdpdGggcGFyYW1ldGVycwoKCSogYmluZGdlbi5hZGI6IE91dHB1dCBkdW1teSByZXN0cmljdGlvbnMgZGF0YQoJVG8gYmUgY2hhbmdlZCBsYXRlcgoKCSogYWxpLmFkcywgY2hlY2tzLmFkYiwgZXhwX2FnZ3IuYWRiLCBleHBfYXR0ci5hZGIsIGV4cF9jaDExLmFkYiwKCWV4cF9jaDMuYWRiLCBleHBfY2g1LmFkYiwgZXhwX2NoNi5hZGIsIGV4cF9jaDcuYWRiLCBleHBfdXRpbC5hZGIsCglmcmVlemUuYWRiLCBnbmF0MWRydi5hZGIsIHNlbV9hdHRyLmFkYiwgc2VtX2NoMTAuYWRiLCBzZW1fY2gxMS5hZGIsCglzZW1fY2gxMi5hZGIsIHRhcmdwYXJtLmFkYiwgdGFyZ3Bhcm0uYWRzLCB0YnVpbGQuYWRiLCBzZW1fY2gyLmFkYiwKCXNlbV9lbGFiLmFkYiwgc2VtX3Jlcy5hZGI6IE1pbm9yIGNoYW5nZXMgZm9yIG5ldyByZXN0cmljdGlvbnMgaGFuZGxpbmcuCgoJKiBleHBfY2g5LmFkYiAoQnVpbGRfTWFzdGVyX0VudGl0eSk6IENsZWFudXAgdGhlIGNvZGUgKGFsc28gc3VwcHJlc3NlcwoJdGhlIHdhcm5pbmcgbWVzc2FnZSBvbiBhY2Nlc3MgdG8gcG9zc2libHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBTKQoJTWlub3IgY2hhbmdlcyBmb3IgbmV3IHJlc3RyaWN0aW9ucyBoYW5kbGluZy4KCgkqIGduYXRiaW5kLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglNaW5vciBjaGFuZ2VzIGZvciBuZXcgcmVzdHJpY3Rpb25zIGhhbmRsaW5nCglNb3ZlIGNpcmN1aXQgZm9yIC1yIHByb2Nlc3NpbmcgaGVyZSBmcm9tIGJjaGVjayAoY2xlYW5lcikKCgkqIGduYXRjbWQuYWRiLCBnbmF0bGluay5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogbGliLXdyaXQuYWRiOiBPdXRwdXQgbmV3IGZvcm1hdCByZXN0cmljdGlvbnMgbGluZXMKCgkqIGxpYi13cml0LmFkczogRG9jdW1lbnQgbmV3IFIgZm9ybWF0IGxpbmVzIGZvciBuZXcgcmVzdHJpY3Rpb25zCgloYW5kbGluZy4KCgkqIHMtcmVzdHJpLmFkcy9hZGI6IE5ldyBmaWxlcwoKCSogTWFrZWZpbGUucnRsOiBBZGQgZW50cnkgZm9yIHMtcmVzdHJpLmFkcy9hZGIKCgkqIHBhci1jaDMuYWRiOiBGaXggYmFkIGVycm9yIG1lc3NhZ2VzIHN0YXJ0aW5nIHdpdGggdXBwZXIgY2FzZSBsZXR0ZXIKCU1pbm9yIHJlZm9ybWF0dGluZwoKCSogcmVzdHJpY3QuYWRiOiBNYWpvciByZXdyaXRlIHRocm91Z2hvdXQgZm9yIG5ldyByZXN0cmljdGlvbnMgaGFuZGxpbmcKCU1ham9yIHBvaW50IGlzIHRvIGhhbmRsZSByZXN0cmljdGlvbnMgd2l0aCBwYXJhbWV0ZXJzCgoJKiByZXN0cmljdC5hZHM6IE1ham9yIGNoYW5nZXMgaW4gaW50ZXJmYWNlIHRvIGhhbmRsZSByZXN0cmljdGlvbnMgd2l0aAoJcGFyYW1ldGVycy4gQWxzbyBnZW5lcmFsbHkgc2ltcGxpZmllcyBzZXR0aW5nIG9mIHJlc3RyaWN0aW9ucy4KCgkqIHNuYW1lcy5hZHMvYWRiOiBOZXcgZW50cnkgZm9yIHByb3BlciBoYW5kbGluZyBvZiBOb19SZXF1ZXVlCgoJKiBzZW1fY2gzLmFkYiAoQ291bnRfVGFza3MpOiBOZXcgY2lyY3VpdHJ5IGZvciBpbXBsZW1lbnRpbmcgTWF4X1Rhc2tzCglyZXN0cmljdGlvbiBjb3VudGluZy4KCU90aGVyIG1pbm9yIGNoYW5nZXMgZm9yIG5ldyByZXN0cmljdGlvbnMgaGFuZGxpbmcKCgkqIHNlbV9wcmFnLmFkYjogTm9fUmVxdWV1ZSBpcyBhIHN5bm9ueW0gZm9yIE5vX1JlcXVldWVfU3RhdGVtZW50cy4KCVJlc3RyaWN0aW9uX1dhcm5pbmdzIG5vdyBhbGxvd3MgZnVsbCBwYXJhbWV0ZXIgbm90YXRpb24KCU1ham9yIHJld3JpdGUgb2YgUmVzdHJpY3Rpb25zIGZvciBuZXcgcmVzdHJpY3Rpb25zIGhhbmRsaW5nCgoyMDA0LTAyLTAyICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBwYXItY2gzLmFkYiAoUF9JZGVudGlmaWVyX0RlY2xhcmF0aW9ucyk6IEdpdmUgc3VwcG9ydCB0byB0aGUgQWRhIDBZCglzeW50YXggcnVsZSBmb3Igb2JqZWN0IHJlbmFtaW5nIGRlY2xhcmF0aW9ucy4KCShQX0FycmF5X1R5cGVfRGVmaW5pdGlvbik6IEdpdmUgc3VwcG9ydCBmb3IgdGhlIEFkYSAwWSBzeW50YXggcnVsZSBmb3IKCWNvbXBvbmVudCBkZWZpbml0aW9ucy4KCgkqIHNlbV9jaDMuYWRiIChBbmFseXplX0NvbXBvbmVudF9EZWNsYXJhdGlvbik6IEdpdmUgc3VwcG9ydCB0byBhY2Nlc3MKCWNvbXBvbmVudHMuCgkoQXJyYXlfVHlwZV9EZWNsYXJhdGlvbik6IEdpdmUgc3VwcG9ydCB0byBhY2Nlc3MgY29tcG9uZW50cy4gSW4gYWRkaXRpb24KCWl0IHdhcyBhbHNvIG1vZGlmaWVkIHRvIHJlZmxlY3QgdGhlIG5hbWUgb2YgdGhlIG9iamVjdCBpbiBhbm9ueW1vdXMKCWFycmF5IHR5cGVzLiBUaGUgb2xkIGNvZGUgZGlkIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGF0IGl0IGlzIHBvc3NpYmxlCgl0byBoYXZlIGFuIHVuY29uc3RyYWluZWQgYW5vbnltb3VzIGFycmF5IHdpdGggYW4gaW5pdGlhbCB2YWx1ZS4KCShDaGVja19Pcl9Qcm9jZXNzX0Rpc2NyaW1pbmFudHMpOiBBbGxvdyBhY2Nlc3MgZGlzY3JpbWluYW50IGluCglub24tbGltaXRlZCB0eXBlcy4KCShQcm9jZXNzX0Rpc2NyaW1pbmFudHMpOiBBbGxvdyBhY2Nlc3MgZGlzY3JpbWluYW50IGluIG5vbi1saW1pdGVkIHR5cGVzCglJbml0aWFsaXplIHRoZSBuZXcgQWNjZXNzX0RlZmluaXRpb24gZmllbGQgaW4gTl9PYmplY3RfUmVuYW1pbmdfRGVjbAoJbm9kZS4gIENoYW5nZSBBZGEwWSB0byBBZGEgMFkgaW4gY29tbWVudHMKCgkqIHNlbV9jaDQuYWRiIChGaW5kX0VxdWFsaXR5X1R5cGVzKTogQWxsb3cgYW5vbnltb3VzIGFjY2VzcyB0eXBlcyBpbgoJZXF1YWxpdHkgb3BlcmF0b3JzLgoJQ2hhbmdlIEFkYTBZIHRvIEFkYSAwWSBpbiBjb21tZW50cwoKCSogc2VtX2NoOC5hZGIgKEFuYWx5emVfT2JqZWN0X1JlbmFtaW5nKTogR2l2ZSBzdXBwb3J0IHRvIGFjY2VzcwoJcmVuYW1pbmdzIENoYW5nZSBBZGEwWSB0byBBZGEgMFkgaW4gY29tbWVudHMKCgkqIHNlbV90eXBlLmFkYiAoRmluZF9VbmlxdWVfVHlwZSk6IEdpdmUgc3VwcG9ydCB0byB0aGUgZXF1YWxpdHkKCW9wZXJhdG9ycyBmb3IgdW5pdmVyc2FsIGFjY2VzcyB0eXBlcwoJQ2hhbmdlIEFkYTBZIHRvIEFkYSAwWSBpbiBjb21tZW50cwoKCSogc2luZm8uYWRiIChBY2Nlc3NfRGVmaW5pdGlvbiwgU2V0X0FjY2Vzc19EZWZpbml0aW9uKTogTmV3IHN1YnByb2dyYW1zCgoJKiBzaW5mby5hZHMgKE5fQ29tcG9uZW50X0RlZmluaXRpb24pOiBBZGRpdGlvbiBvZiBBY2Nlc3NfRGVmaW5pdGlvbgoJZmllbGQuCgkoTl9PYmplY3RfUmVuYW1pbmdfRGVjbGFyYXRpb24pOiBBZGRpdGlvbiBvZiBBY2Nlc3NfRGVmaW5pdGlvbiBmaWVsZAoJQ2hhbmdlIEFkYTBZIHRvIEFkYSAwWSBpbiBjb21tZW50cwoKCSogc3ByaW50LmFkYiAoU3ByaW50X05vZGVfQWN0dWFsKTogR2l2ZSBzdXBwb3J0IHRvIHRoZSBuZXcgc3ludGF4IGZvcgoJY29tcG9uZW50IGRlZmluaXRpb24gYW5kIG9iamVjdCByZW5hbWluZyBub2RlcwoJQ2hhbmdlIEFkYTBZIHRvIEFkYSAwWSBpbiBjb21tZW50cwoKMjAwNC0wMi0wMiAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogcmVzdHJpY3QuYWRiOiBVc2UgdGhlIG5ldyByZXN0cmljdGlvbiBpZGVudGlmaWVyCglOb19SZXF1ZXVlX1N0YXRlbWVudHMgaW5zdGVhZCBvZiB0aGUgb2xkIE5vX1JlcXVldWUgZm9yIGRlZmluaW5nIHRoZQoJcmVzdHJpY3RlZCBwcm9maWxlLgoKCSogc2VtX2NoOS5hZGIgKEFuYWx5emVfUmVxdWV1ZSk6IENoZWNrIHRoZSBuZXcgcmVzdHJpY3Rpb24KCU5vX1JlcXVldWVfU3RhdGVtZW50cy4KCgkqIHMtcmlkZW50LmFkczogQWRkaW5nIHJlc3RyaWN0aW9uIE5vX1JlcXVldWVfU3RhdGVtZW50cyAoQUktMDAyNDkpCgl0aGF0IHN1cGVyc2VkZXMgdGhlIEdOQVQgc3BlY2lmaWMgcmVzdHJpY3Rpb24gTm9fUmVxdWV1ZS4gVGhlIGxhdGVyIGlzCglrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgoKMjAwNC0wMi0wMiAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogbGliLmFkcywgaS1jb2JvbC5hZHMsICogcy1zdG9lbGUuYWRzLCBzLXRocmVhZC5hZHMsIHN0eWxlLmFkcywKCTVzdGFwcm9wLmFkYiwgYXRyZWUuYWRiLCBhdHJlZS5hZHMsIGctY3JjMzIuYWRzOiBSZW1vdmUgcmVkdW5kYW50CglwcmFnbWEgYW5kIGZpeCBpbmNvcnJlY3Qgb25lcy4KCgkqIHNlbV9wcmFnLmFkYiBGb3IgcHJhZ21hIElubGluZSBhbmQgcHJhZ21hIFB1cmVfRnVuY3Rpb24sIGVtaXQgYQoJd2FybmluZyBpZiB0aGUgcHJhZ21hIGlzIHJlZHVuZGFudC4KCjIwMDQtMDItMDIgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIDVzdGFwcm9wLmFkYjogQWRkIG1pc3NpbmcgJ2NvbnN0YW50JyBrZXl3b3Jkcy4KCgkqIE1ha2VmaWxlLmluOiB1c2UgY29uc2lzdGVudCB2YWx1ZSBmb3IgU1lNTElCIG9uCglwbGF0Zm9ybXMgd2hlcmUgbGliYWRkcjJsaW5lIGlzIHN1cHBvcnRlZC4KCjIwMDQtMDItMDIgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB1dGlscy5jIChlbmRfc3VicHJvZ19ib2R5KTogRG8gbm90IGNhbGwgcmVzdF9vZl9jb21waWxhdGlvbiBpZiBqdXN0Cglhbm5vdGF0aW5nIHR5cGVzLgoKMjAwNC0wMi0wMiAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogaW5pdC5jIChfX2duYXRfaW5zdGFsbF9oYW5kbGVyKTogU2V0dXAgYW4gYWx0ZXJuYXRlIHN0YWNrIGZvciBzaWduYWwKCWhhbmRsZXJzIGluIHRoZSBlbnZpcm9ubWVudCB0aHJlYWQuIFRoaXMgYWxsb3dzIHByb3BlciBwcm9wYWdhdGlvbiBvZgoJYW4gZXhjZXB0aW9uIG9uIHN0YWNrIG92ZXJmbG93cyBpbiB0aGlzIHRocmVhZCBldmVuIHdoZW4gdGhlIGJ1aWx0aW4KCUFCSSBzdGFjay1jaGVja2luZyBzY2hlbWUgaXMgdXNlZCB3aXRob3V0IHN1cHBvcnQgZm9yIGEgc3RhY2sgcmVzZXJ2ZQoJcmVnaW9uLgoKCSogdXRpbHMuYyAoY3JlYXRlX2ZpZWxkX2RlY2wpOiBBdWdtZW50IHRoZSBoZWFkIGNvbW1lbnQgYWJvdXQgYml0ZmllbGQKCWNyZWF0aW9uLCBhbmQgZG9uJ3QgYWNjb3VudCBmb3IgREVDTF9CSVRfRklFTEQgaW4gREVDTF9OT05BRERSRVNTQUJMRV9QCgloZXJlLCBiZWNhdXNlIHRoZSBmb3JtZXIgaXMgbm90IGFjY3VyYXRlIGVub3VnaCBhdCB0aGlzIHBvaW50LgoJTGV0IGZpbmlzaF9yZWNvcmRfdHlwZSBkZWNpZGUgaW5zdGVhZC4KCURvbid0IG1ha2UgYSBiaXRmaWVsZCBpZiB0aGUgZmllbGQgaXMgdG8gYmUgYWRkcmVzc2FibGUuCglBbHdheXMgc2V0IGEgc2l6ZSBmb3IgdGhlIGZpZWxkIGlmIHRoZSByZWNvcmQgaXMgcGFja2VkLCB0byBlbnN1cmUgdGhlCgljaGVja3MgZm9yIGJpdGZpZWxkIGNyZWF0aW9uIGFyZSB0cmlnZ2VyZWQuCgkoZmluaXNoX3JlY29yZF90eXBlKTogRHVyaW5nIGxhc3QgcGFzcyBvdmVyIHRoZSBmaWVsZHMsIGNsZWFyCglERUNMX0JJVF9GSUVMRCB3aGVuIHBvc3NpYmxlIGluIHRoZSAhU1RSSUNUX0FMSUdOTUVOVCBjYXNlLCBhcyB0aGlzIGlzCglub3QgY292ZXJlZCBieSB0aGUgY2FsbHMgdG8gbGF5b3V0X2RlY2wuICBBZGp1c3QgREVDTF9OT05BRERSRVNTQUJMRV9QCglmcm9tIERFQ0xfQklUX0ZJRUxELgoKMjAwNC0wMS0zMCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAoZG9jL2duYXRfdWdfdW54LmR2aSk6IFVzZSAkKGFic19kb2NkaXIpLgoJKGRvYy9nbmF0X3VnX3Ztcy5kdmksIGRvYy9nbmF0X3VnX3VueC5kdmkpOiBMaWtld2lzZS4KCShkb2MvZ25hdF91Z191bnguZHZpLCBkb2MvZ25hdC1zdHlsZS5kdmkpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjYgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogTWFrZWZpbGUuaW4gKG1pcHMtc2dpLWlyaXg1KTogUmVtb3ZlIC1sYXRocmVhZCBmcm9tIFRIUkVBRFNMSUIuCgoJKiA1ZnN5c3RlbS5hZHMgKEZ1bmN0aW9uc19SZXR1cm5fQnlfRFNQKTogU2V0IHRvIEZhbHNlLgoJKFpDWF9CeV9EZWZhdWx0KTogTGlrZXdpc2UuCgkoRnJvbnRfRW5kX1pDWF9TdXBwb3J0KTogTGlrZXdpc2UuCgoJKiA1Z3RhcHJvcC5hZGIgKFN0YWNrX0d1YXJkKTogTWFyayBULCBPbiB1bnJlZmVyZW5jZWQuCgkoSW5pdGlhbGl6ZV9Mb2NrKTogTWFyayBMZXZlbCB1bnJlZmVyZW5jZWQuCgkoU2xlZXApOiBNYXJrIFJlYXNvbiB1bnJlZmVyZW5jZWQuCgkoVGltZWRfU2xlZXApOiBMaWtld2lzZS4KCShXYWtldXApOiBMaWtld2lzZS4KCShFeGl0X1Rhc2spOiBVc2UgUmVzdWx0LgoJKENoZWNrX05vX0xvY2tzKTogTWFyayBTZWxmX0lEIHVucmVmZXJlbmNlZC4KCgkqIDVndGFzaW5mLmFkYiAoTmV3X1Nwcm9jKTogTWFrZSBBdHRyIGNvbnN0YW50LgoJKEJvdW5kX1RocmVhZF9BdHRyaWJ1dGVzKTogTWFrZSBTcHJvYyBjb25zdGFudC4KCShOZXdfQm91bmRfVGhyZWFkX0F0dHJpYnV0ZXMpOiBMaWtld2lzZS4KCjIwMDQtMDEtMjYgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDMuYWRiIChCdWlsZF9TbGljZV9Bc3NpZ25tZW50KTogTmV3IFRTUyBwcm9jZWR1cmUgZm9yCglvbmUtZGltZW5zaW9uYWwgYXJyYXkgYW4gc2xpY2UgYXNzaWdubWVudHMsIHdoZW4gY29tcG9uZW50IHR5cGUgaXMKCWNvbnRyb2xsZWQuCgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX0Fzc2lnbl9BcnJheSk6IElmIGFycmF5IGlzIG9uZS1kaW1lbnNpb25hbCwKCWNvbXBvbmVudCB0eXBlIGlzIGNvbnRyb2xsZWQsIGFuZCBjb250cm9sX2FjdGlvbnMgYXJlIGluIGVmZmVjdCwgdXNlCglUU1MgcHJvY2VkdXJlIHJhdGhlciB0aGFuIGdlbmVyYXRpbmcgaW5saW5lIGNvZGUuCgoJKiBleHBfdHNzLmFkcyAoVFNTX1NsaWNlX0Fzc2lnbik6IE5ldyBUU1MgcHJvY2VkdXJlIGZvciBvbmUtZGltZW5zaW9uYWwKCWFycmF5cyB3aXRoIGNvbnRyb2xsZWQgY29tcG9uZW50cy4KCjIwMDQtMDEtMjYgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ25hdGNtZC5hZGIgKEdOQVRDbWQpOiBBZGQgc3BlY2lmaWNhdGlvbiBvZiBhcmd1bWVudCBmaWxlIG9uIHRoZQoJY29tbWFuZCBsaW5lIGZvciB0aGUgbm9uIFZNUyBjYXNlLgoKCSogZ25hdGxpbmsuYWRiIChQcm9jZXNzX0JpbmRlcl9GaWxlKTogV2hlbiBidWlsZGluZyBvYmplY3QgZmlsZSwgaWYKCUdOVSBsaW5rZXIgaXMgdXNlZCwgcHV0IGFsbCBvYmplY3QgcGF0aHMgYmV0d2VlbiBxdW90ZXMsIHRvIHByZXZlbnQgbGQKCWVycm9yIHdoZW4gdGhlcmUgYXJlIHVudXN1YWwgY2hhcmFjdGVycyAoc3VjaCBhcyAnIScpIGluIHRoZSBwYXRocy4KCgkqIE1ha2VmaWxlLmdlbmVyaWM6IFdoZW4gdGhlcmUgYXJlIHNvdXJjZXMgaW4gQWRhIGFuZCB0aGUgbWFpbiBpcyBpbgoJQy9DKyssIGludm9rZSBnbmF0bWFrZSB3aXRoIC1CLCBpbnN0ZWFkIG9mIC16LgoKCSogdm1zX2NvbnYuYWRiIChQcmVwcm9jZXNzX0NvbW1hbmRfRGF0YSk6IE5ldyBwcm9jZWR1cmUsIGV4dHJhY3RlZAoJZnJvbSBWTVNfQ29udmVyc2lvbi4KCShQcm9jZXNzX0FyZ3VtZW50KTogTmV3IHByb2NlZHVyZSwgZXh0cmFjdGVkIGZyb20gVk1TX0NvbnZlcnNpb24uIEFkZAoJc3BlY2lmaWNhdGlvbiBvZiBhcmd1bWVudCBmaWxlIG9uIHRoZSBjb21tYW5kIGxpbmUuCgoyMDA0LTAxLTI2ICBCZXJuYXJkIEJhbm5lciAgPGJhbm5lckBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBFbmFibGUgR01FTV9MSUIgYW5kIFNZTUxJQiBmb3IgeDg2XzY0CgoyMDA0LTAxLTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzbmFtZXMuYWRiOiBVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCUFkZCBpbmZvIG9uIHNsaWNlIGFzc2lnbm1lbnQgZm9yIGNvbnRyb2xsZWQgYXJyYXlzLgoKMjAwNC0wMS0yMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBleHBfYWdnci5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogZXhwX2NoOS5hZGI6IE1pbm9yIGNvZGUgY2xlYW4gdXAKCU1pbm9yIHJlZm9ybWF0dGluZwoJRml4IGJhZCBjaGFyYWN0ZXIgaW4gY29tbWVudAoKCVBSIGFkYS8xMzQ3MQoJKiB0YXJncGFybS5hZGIgKEdldF9UYXJnZXRfUGFyYW1ldGVycyk6IEdpdmUgY2xlYW4gYWJvcnQgZXJyb3Igb24KCXVuZXhwZWN0ZWQgZW5kIG9mIGZpbGUsIGFsb25nIHdpdGggbW9yZSBkZXRhaWxlZCBtZXNzYWdlLgoKMjAwNC0wMS0yMyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGV4cF9wYWtkLmFkYiAoSW5zdGFsbF9QQVQpOiBDbGVhciBGcmVlemVfTm9kZSBmb3IgUEFUIGFuZCBFdHlwZSBvZgoJUEFULgoKCSogZGVjbC5jIChjb3B5X2FsaWFzX3NldCk6IE5ldyBmdW5jdGlvbi4KCShnbmF0X3RvX2dudV9lbnRpdHksIG1ha2VfYWxpZ25pbmdfdHlwZSwgbWFrZV9wYWNrYWJsZV90eXBlKTogVXNlIGl0LgoKMjAwNC0wMS0yMyAgRG91ZyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWduYXRsaWIpOiBDaGFuZ2Ugb2NjdXJyZW5jZXMgb2YgbGliJCRmaWxlIHRvCglsaWIkJHtmaWxlfSBpbiBjYXNlIHN1YnNlcXVlbnQgY2hhcmFjdGVyIGlzIG5vdCBhIHNlcGFyYXRvci4KCjIwMDQtMDEtMjMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogNXZtbC10Z3QuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBJbnZva2UgZ2NjIHdpdGggLXNoYXJlZC1saWJnY2MKCXdoZW4gdGhlIEdDQyB2ZXJzaW9uIGlzIGF0IGxlYXN0IDMuCgoJKiBtYWtlLmFkYjogKFNjYW5fTWFrZV9BcmcpOiBQYXNzIC1CIHRvIFNjYW5fTWFrZV9Td2l0Y2hlcwoJUmVtb3ZlIGFsbCAiT3B0LiIsIHRvIHByZXBhcmUgZm9yIG9wdCBzcGxpdAoKCSogcHJqLXBhcnQuYWRiIChQYXJzZV9TaW5nbGVfUHJvamVjdCk6IE5ldyBCb29sZWFuIG91dCBwYXJhbWV0ZXIKCUV4dGVuZHNfQWxsLiBTZXQgdG8gVHJ1ZSB3aGVuIHRoZSBwcm9qZWN0IHBhcnNlZCBpcyBhbiBleHRlbmRpbmcgYWxsCglwcm9qZWN0LiBGYWlscyBmb3IgaW1wb3J0aW5nIGFuIGV4dGVuZGluZyBhbGwgcHJvamVjdCBvbmx5IHdoZW4gdGhlCglpbXBvcnRlZCBwcm9qZWN0IGlzIGFuIGV4dGVuZGluZyBhbGwgcHJvamVjdC4KCShQb3N0X1BhcnNlX0NvbnRleHRfQ2xhdXNlKTogU2V0IElzX0V4dGVuZGluZ19BbGwgdG8gdGhlIHdpdGggY2xhdXNlLAoJZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZiBFeHRlbmRzX0FsbCByZXR1cm5lZC4KCgkqIHByai1wcm9jLmFkYiAoUHJvY2Vzcyk6IENoZWNrIHRoYXQgbm8gcHJvamVjdCBzaGFyZXMgaXRzIG9iamVjdAoJZGlyZWN0b3J5IHdpdGggYSBwcm9qZWN0IHRoYXQgZXh0ZW5kcyBpdCwgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSwKCWluY2x1ZGluZyBhIHZpcnR1YWwgcHJvamVjdC4KCUNoZWNrIHRoYXQgbm8gcHJvamVjdCBleHRlbmRlZCBieSBhbm90aGVyIHByb2plY3Qgc2hhcmVzIGl0cyBvYmplY3QKCWRpcmVjdG9yeSB3aXRoIGFub3RoZXIgYWxzbyBleHRlbmRlZCBwcm9qZWN0LgoKCSogcHJqLXRyZWUuYWRiIChJc19FeHRlbmRpbmdfQWxsLCBTZXRfSXNfRXh0ZW5kaW5nX0FsbCk6IEFsbG93IGZvcgoJS2luZCA9IE5fV2l0aF9DbGF1c2UKCgkqIHByai10cmVlLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCglJbmRpY2F0ZSB0aGF0IEZsYWcyIGFsc28gYXBwbGllcyB0byBOX1dpdGhfQ2xhdXNlIChJc19FeHRlbmRpbmdfQWxsKS4KCjIwMDQtMDEtMjMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDEzLmFkYiAoQW5hbHl6ZV9BdHRyaWJ1dGVfRGVmaW5pdGlvbl9DbGF1c2UpOiBJZiB0aGUgYXR0cmlidXRlCglhcHBsaWVzIHRvIGEgdHlwZSB3aXRoIGFuIGluY29tcGxldGUgdmlldywgdXNlIGZ1bGwgdmlldyBpbiBOYW1lIG9mCgljbGF1c2UsIGZvciBjb25zaXN0ZW5jeSB3aXRoIHVzZXMgb2YgR2V0X0F0dHJpYnV0ZV9EZWZpbml0aW9uX0NsYXVzZS4KCjIwMDQtMDEtMjMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogNWl0YXByb3AuYWRiIChTZXRfUHJpb3JpdHkpOiBSZXNldCB0aGUgcHJpb3JpdHkgdG8gMCB3aGVuIHVzaW5nCglTQ0hFRF9SUiwgc2luY2Ugb3RoZXIgdmFsdWVzIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgcG9saWN5LgoJKEluaXRpYWxpemUpOiBNb3ZlIGluaXRpYWxpemF0aW9uIG9mIG11dGV4IGF0dHJpYnV0ZSB0byBwYWNrYWdlCgllbGFib3JhdGlvbiwgdG8gcHJldmVudCBlYXJseSBhY2Nlc3MgdG8gdGhpcyB2YXJpYWJsZS4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgbWVudGlvbiBvZiBNYWtlZmlsZS5hZGFsaWIsIHVudXNlZC4KCgkqIE1ha2VmaWxlLmFkYWxpYiwgMWFleGNlcHQuYWRiLCAxYWV4Y2VwdC5hZHMsIDFpYy5hZHMsIDFzc2Vjc3RhLmFkYiwKCTFzc2Vjc3RhLmFkczogUmVtb3ZlZCwgdW51c2VkLgoKMjAwNC0wMS0yMSAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogZXhwX2FnZ3IuYWRiIChCdWlsZF9SZWNvcmRfQWdncl9Db2RlKTogRG8gbm90IGJ1aWxkIHRoZSBtYXN0ZXIKCWVudGl0eSBpZiBhbHJlYWR5IGJ1aWx0IGluIHRoZSBjdXJyZW50IHNjb3BlLgoKCSogZXhwX2NoOS5hZGIgKEJ1aWxkX01hc3Rlcl9FbnRpdHkpOiBEbyBub3Qgc2V0IHRoZSBoYXNfbWFzdGVyX2VudGl0eQoJcmVtaW5kZXIgaW4gaW50ZXJuYWwgc2NvcGVzLiBSZXF1aXJlZCBmb3IgbmVzdGVkIGxpbWl0ZWQgYWdncmVnYXRlcy4KCjIwMDQtMDEtMjEgIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAoaHlwaGVuKTogTmV3IHZhcmlhYmxlLCBkZWZhdWx0IHZhbHVlICctJy4gU2V0IHRvICdfJyBvbgoJVk1TLiBSZXBsYWNlIGFsbCBvY2N1cmVuY2VzIG9mIGxpYmduYXQtIGFuZCBsaWJnbmFybC0gd2l0aAoJbGliZ25hdCQoaHlwaGVuKSBhbmQgbGliZ25hcmwkKGh5cGhlbikuCglGaXhlZCBzaGFyZWQgbGlicmFyeSBidWlsZCBwcm9ibGVtIG9uIFZNUy4KCjIwMDQtMDEtMjEgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogbWxpYi1wcmouYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDQtMDEtMjEgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHByai10cmVlLmFkYiwgN3N0YXByb3AuYWRiLCB2bXNfY29udi5hZGIsIHhyX3RhYmxzLmFkYjogQWRkIG1pc3NpbmcKCSdjb25zdGFudCcga2V5d29yZHMgZm9yIGRlY2xhcmF0aW9uIG9mIHBvaW50ZXJzIHRoYXQgYXJlIG5vdCBtb2RpZmllZC4KCgkqIGV4cF9wYWtkLmFkYjogRml4IEVuZ2xpc2ggaW4gY29tbWVudC4KCjIwMDQtMDEtMjEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvMTA4ODkKCSogc2VtX2NoMy5hZGIgKEFuYWx5emVfU3VidHlwZV9EZWNsYXJhdGlvbik6IEZvciBhbiBhcnJheSBzdWJ0eXBlLAoJY29weSBhbGwgYXR0cmlidXRlcyBvZiB0aGUgcGFyZW50LCBpbmNsdWRpbmcgdGhlIGZvcmVpZ24gbGFuZ3VhZ2UKCWNvbnZlbnRpb24uCgoyMDA0LTAxLTIxICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS8xMDU2NQoJKiBzZW1fY2g5LmFkYiAoQW5hbHl6ZV9EZWxheV9BbHRlcm5hdGl2ZSk6IEFkZCBleHByZXNzaW9uIHR5cGUgY2hlY2sKCWZvciAnZGVsYXkgdW50aWwnIHN0YXRlbWVudC4KCjIwMDQtMDEtMjAgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW46IFJlcGxhY2UgJChkb2NkaXIpIHdpdGggZG9jLgoJKGRvYy9nbmF0X3VnX3VueC5pbmZvLCBkb2MvZ25hdF91Z192d3guaW5mbywgZG9jL2duYXRfdWdfdm1zLmluZm8KCWRvYy9nbmF0X3VnX3dudC5pbmZvLCBkb2MvZ25hdF9ybS5pbmZvLCBkb2MvZ25hdC1zdHlsZS5pbmZvKTogVXBkYXRlCgl0byB1c2UgY29uc2lzdGVudCBNQUtFSU5GTyBydWxlLgoJKGFkYS5tYW4sIGFkYS5zcmNtYW4pOiBEdW1teSBlbnRyeS4KCShBREFfSU5GT0ZJTEVTKTogRGVmaW5lLgoJKGFkYS5pbmZvLCBhZGEuc3JjaW5mbyk6IE5ldyBydWxlcy4KCjIwMDQtMDEtMTkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogdXRpbHMuYzogVXBkYXRlIGNvcHlyaWdodCBub3RpY2UsIG1pc3NlZCBpbiBwcmV2aW91cyBjaGFuZ2UuCgoyMDA0LTAxLTE5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1saWItcHJqLmFkYiAoQnVpbGRfTGlicmFyeS5BZGRfQUxJX0Zvcik6IE9ubHkgYWRkIHRoZSBBTEkgdG8gdGhlCglhcmdzIGlmIEJpbmQgaXMgVHJ1ZS4gU2V0IEZpcnN0X0FMSSwgaWYgbm90IGFscmVhZHkgZG9uZS4KCShCdWlsZF9MaWJyYXJ5KTogRm9yIFN0YW5kIEFsb25lIExpYnJhcmllcywgZXh0cmFjdCBmcm9tIG9uZSBBTEkgZmlsZQoJYW4gZXZlbnR1YWwgLS1SVFMgc3dpdGNoLCBmb3IgZ25hdGJpbmQsIGFuZCBhbGwgYmFja2VuZCBzd2l0Y2hlcyArCgktLVJUUywgZm9yIGxpbmtpbmcuCgoyMDA0LTAxLTE5ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9hdHRyLmFkYiwgbWVtdHJhY2suYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDQtMDEtMTkgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IFJlbW92ZSBjb2RlIHRvIGZvbGQgY2FsbHMgdG8gZnVuY3Rpb25zCgl0aGF0IHJlbmFtZSBlbnVtZXJhdGlvbiBsaXRlcmFscy4gVGhpcyBpcyBwcm9wZXJseSBkb25lIGluIHNlbV9ldmFsLgoKCSogc2VtX2V2YWwuYWRzLCBzZW1fZXZhbC5hZGIgKEV2YWxfQ2FsbCk6IE5ldyBwcm9jZWR1cmUgdG8gZm9sZCBjYWxscwoJdG8gZnVuY3Rpb25zIHRoYXQgcmVuYW1lIGVudW1lcmF0aW9uIGxpdGVyYWxzLgoKCSogc2VtX3Jlcy5hZGIgKFJlc29sdmVfQ2FsbCk6IFVzZSBFdmFsX0NhbGwgdG8gZm9sZCBzdGF0aWMgY2FsbHMgdG8KCWZ1bmN0aW9ucyB0aGF0IHJlbmFtZSBlbnVtZXJhdGlvbiBsaXRlcmFscy4KCjIwMDQtMDEtMTYgIEthenUgSGlyYXRhICA8a2F6dUBjcy51bWFzcy5lZHU+CgoJKiBNYWtlLWxhbmcuaW4gKHV0aWxzLm8pOiBEZXBlbmQgb24gdGFyZ2V0LmguCgkqIHV0aWxzLmM6IEluY2x1ZGUgdGFyZ2V0LmguCgkocHJvY2Vzc19hdHRyaWJ1dGVzKTogVXNlIHRhcmdldG0uaGF2ZV9uYW1lZF9zZWN0aW9ucyBpbnN0ZWFkCglvZiBBU01fT1VUUFVUX1NFQ1RJT05fTkFNRS4KCjIwMDQtMDEtMTYgIEFuZHJlYXMgSmFlZ2VyICA8YWpAc3VzZS5kZT4KCgkqIE1ha2VmaWxlLmluOiBBZGQgJChERVNURElSKS4KCjIwMDQtMDEtMTUgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBFX1ZhcmlhYmxlKTogUmV0cmlldmUgdGhlIG9iamVjdCBzaXplCglhbHNvIHdoZW4gbm90IGRlZmluaW5nIGlmIGEgU2l6ZSBjbGF1c2UgYXBwbGllcy4gVGhhdCBpbmZvcm1hdGlvbiBpcwoJbm90IHRvIGJlIGlnbm9yZWQuCgoyMDA0LTAxLTE1ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWduYXRsaWIsIGduYXRsaWItc2hhcmVkLWRlZmF1bHQpOiBTZXQgdXAKCXN5bWJvbGljIGxpbmtzIGZvciB0aGUgc2hhcmVkIGduYXQgcnVuIHRpbWUgd2hlbiBuZWVkZWQuCgoyMDA0LTAxLTE1ICBWYXNpbGl5IEZvZmFub3YgIDxmb2Zhbm92QGFjdC1ldXJvcGUuZnI+CgoJKiBtZW10cmFjay5hZGIgKEdtZW1fSW5pdGlhbGl6ZSk6IGNoZWNrIHRoYXQgZ21lbS5vdXQgY291bGQgYmUgb3BlbmVkCglmb3Igd3JpdGluZywgYW5kIHRlcm1pbmF0ZSB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgaWYgbm90LgoKMjAwNC0wMS0xNSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2F0dHIuYWRiIChSZXNvbHZlX0F0dHJpYnV0ZSwgY2FzZSAnQWNjZXNzKTogUmVtb3ZlIHNwdXJpb3VzCgl3YXJuaW5nIG9uIGFuIGFjY2VzcyB0byBzdWJwcm9ncmFtIGluIGFuIGluc3RhbmNlLCB3aGVuIHRoZSB0YXJnZXQKCXR5cGUgaXMgZGVjbGFyZWQgaW4gdGhlIHNhbWUgZ2VuZXJpYyB1bml0LgoJKEV2YWxfQXR0cmlidXRlKTogSWYgJ2FjY2VzcyBpcyBrbm93biB0byBmYWlsIGFjY2Vzc2liaWxpdHkgY2hlY2ssCglyZXdyaXRlIGFzIGEgcmFpc2Ugc3RhdGVtZW50LgoKMjAwNC0wMS0xNSAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwNC0wMS0xNSAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhLnNyY2V4dHJhKTogRHVtbXkgZW50cnkuCgoyMDA0LTAxLTE0ICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogTWFrZS1sYW5nLmluOiBPbmx5IHJlZ2VuZXJhdGUgdGV4aSBmaWxlcyBpZiAtLWVuYWJsZS1tYWludGFpbmVyLW1vZGUuCgoyMDA0LTAxLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2gzLmFkYiAoQnVpbGRfQXNzaWdubWVudCk6IEZpeCBidWcgaW4gaGFuZGxpbmcgb2YgY29udHJvbGxlZAoJY29tcG9uZW50cyB0aGF0IGFyZSBpbml0aWFsaXplZCB3aXRoIGFnZ3JlZ2F0ZXMuCgoyMDA0LTAxLTEzICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGduYXRsaW5rLmFkYiAoUHJvY2Vzc19CaW5kZXJfRmlsZSk6IFRvIGZpbmQgZGlyZWN0b3J5IG9mIHNoYXJlZAoJbGliZ2NjLCBpZiAiZ2NjLWxpYiIgaXMgbm90IGEgc3ViZGlyZWN0b3J5LCBsb29rIGZvciB0aGUgbGFzdAoJc3ViZGlyZWN0b3J5ICJsaWIiIGluIHRoZSBwYXRoIG9mIHRoZSBzaGFyZWQgbGliZ25hdCBvciBsaWJnbmFybC4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IElmIEdDQyB2ZXJzaW9uIGlzIGF0IGxlYXN0IDMsIGxpbmsgd2l0aAoJLXNoYXJlZC1saWJnY2MsIHdoZW4gdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHNoYXJlZCBsaWJyYXJ5IHByb2plY3QuCgoJKiBvcHQuYWRzIChHQ0NfVmVyc2lvbik6IE5ldyBpbnRlZ2VyIGNvbnN0YW50LgoKCSogYWRhaW50LmMgKGdldF9nY2NfdmVyc2lvbik6IE5ldyBmdW5jdGlvbi4KCjIwMDQtMDEtMTMgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX2Rpc3QuYWRiLCBzZW1fcmVzLmFkYiwgc2VtX3V0aWwuYWRiLAoJc3ByaW50LmFkYiwgM3pzb2N0aGkuYWRiLCBlaW5mby5hZGIsIGNzdGFuZC5hZGIsCglleHBfY2g0LmFkYiwgZXhwX2NoOS5hZGIsIGV4cF9kaXN0LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDA0LTAxLTEzICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzLWludGVyci5hZGIsIHMtc3RhY2hlLmFkYiwgcy10YWVuY2EuYWRiLCBnLXJlZ3BhdC5hZGIsCglnLXNwaXRiby5hZGIsIDVpdGFwcm9wLmFkYjogQWRkIG1pc3NpbmcgJ2NvbnN0YW50JyBrZXl3b3JkcyBpbiBvYmplY3QKCWRlY2xhcmF0aW9ucy4KCjIwMDQtMDEtMTIgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogbWlzYy5jOiBSZW1vdmUgdHJhaWxpbmcgc3BhY2VzLgoJVXBkYXRlIGNvcHlyaWdodCBub3RpY2UgbWlzc2VkIGluIHByZXZpb3VzIGNoYW5nZS4KCglQUiBhZGEvMTM1NzIKCSogYmxkLmFkYiAoUmVjdXJzaXZlX1Byb2Nlc3MpOiBSZWZlcmVuY2UgcHJlZml4L3NoYXJlL2duYXQgaW5zdGVhZCBvZgoJcHJlZml4L3NoYXJlL21ha2UKCgkqIE1ha2VmaWxlLmdlbmVyaWM6IFVwZGF0ZSBjb3B5cmlnaHQuCglBZGQgbGljZW5zZSBub3RpY2UuCgoJKiBNYWtlZmlsZS5pbiAoQURBX1NIQVJFX01BS0VfRElSKTogU2V0IHRvIHByZWZpeC9zaGFyZS9nbmF0IGluc3RlYWQKCW9mIHByZWZpeC9zaGFyZS9tYWtlLgoKCSogTWFrZWZpbGUucHJvbG9nOiBVcGRhdGUgY29weXJpZ2h0LgoJQWRkIGxpY2Vuc2Ugbm90aWNlLgoKMjAwNC0wMS0xMiAgTGF1cmVudCBQYXV0ZXQgIDxwYXV0ZXRAYWN0LWV1cm9wZS5mcj4KCgkqIDN2c29jdGhpLmFkYiwgM3Zzb2N0aGkuYWRzLCAzd3NvY3RoaS5hZGIsCgkzd3NvY3RoaS5hZHMsIDN6c29jdGhpLmFkYiwgM3pzb2N0aGkuYWRzLCBnLXNvY3RoaS5hZGIsCglnLXNvY3RoaS5hZHMgKFNvY2tldF9FcnJvcl9NZXNzYWdlKTogUmV0dXJuIEMuU3RyaW5ncy5jaGFyc19wdHIKCWluc3RlYWQgb2YgU3RyaW5nLgoKCSogZy1zb2NrZXQuYWRiIChSYWlzZV9Tb2NrZXRfRXJyb3IpOiBVc2UgbmV3IFNvY2tldF9FcnJvcl9NZXNzYWdlCglzaWduYXR1cmUuCgoyMDA0LTAxLTEyICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBjc3RhbmQuYWRiLCBleHBfYWdnci5hZGIsIGV4cF9jaDMuYWRiLCBleHBfY2g5LmFkYiwgZXhwX2Rpc3QuYWRiLAoJZXhwX2ltZ3YuYWRiLCBleHBfcGFrZC5hZGIsIGV4cF91dGlsLmFkYiwgcGFyLWNoMy5hZGIsIHNlbS5hZGIsCglzZW1fY2gxMi5hZGIsIHNlbV9jaDMuYWRiLCBzZW1fZGlzdC5hZGIsIHNlbV9wcmFnLmFkYiwgc2VtX3Jlcy5hZGIsCglzZW1fdXRpbC5hZGIsIHNpbmZvLmFkYiwgc2luZm8uYWRzLCBzcHJpbnQuYWRiOiBBZGRpdGlvbiBvZgoJQ29tcG9uZW50X0RlZmluaXRpb24gbm9kZS4KCjIwMDQtMDEtMTIgIEVkIEZhbGlzICA8ZmFsaXNAZ25hdC5jb20+CgoJKiBpbXB1bml0LmFkYjogQWRkIEdOQVQuU2Vjb25kYXJ5X1N0YWNrX0luZm8gYXMgdXNlci12aXNpYmxlIHVuaXQKCjIwMDQtMDEtMTIgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGxpbmsuYzogQ2hhbmdlIGRlZmF1bHQgbGliZ25hdCBraW5kIHRvIFNUQVRJQyBmb3IgRnJlZUJTRC4KCjIwMDQtMDEtMTIgIEJlcm5hcmQgQmFubmVyICA8YmFubmVyQGduYXQuY29tPgoKCSogTWFrZWZpbGUuaW46IG1hcCA4Nm51bWF1eCB0byBhLW51bWF1eCBmb3IgeDg2XzY0CgoyMDA0LTAxLTEyICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBsaWIteHJlZi5hZGIgKEdldF9UeXBlX1JlZmVyZW5jZSk6IElmIHRoZSB0eXBlIGlzIHRoZSBzdWJ0eXBlIGVudGl0eQoJZ2VuZXJhdGVkIHRvIHJlbmFtZSBhIGdlbmVyaWMgYWN0dWFsLCBnbyB0byB0aGUgYWN0dWFsIGl0c2VsZiwgdGhlCglzdWJ0eXBlIGlzIG5vdCBhIHVzZXItdmlzaWJsZSBlbnRpdHkuCgoJKiBzZW1fY2g3LmFkYiAoVW5pbnN0YWxsX0RlY2xhcmF0aW9ucyk6IElmIGFuIGVudGl0eSBpbiB0aGUgdmlzaWJsZQoJcGFydCBpcyBhIHByaXZhdGUgc3VidHlwZSwgcmVzZXQgdGhlIHZpc2liaWxpdHkgb2YgaXRzIGZ1bGwgdmlldywgaWYKCWFueSwgdG8gYmUgY29uc2lzdGVudC4KCglQUiBhZGEvMTM0MTcKCSogc2VtX2NoMTIuYWRiIChBbmFseXplX0Zvcm1hbF9QYWNrYWdlKTogRGlhZ25vc2UgcHJvcGVybHkgYW4gYXR0ZW1wdAoJdG8gdXNlIGEgZ2VuZXJpYyBwYWNrYWdlIEcgYXMgYSBmb3JtYWwgcGFja2FnZSBmb3IgYW5vdGhlciBnZW5lcmljCglkZWNsYXJlZCB3aXRoaW4gRy4KCjIwMDQtMDEtMTIgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogdHJhbnMuYyAoRWxpbWluYXRlX0Vycm9yX01zZyk6IE5ldyBwcm9jZWR1cmUgY2FsbGVkIHRvIGdlbmVyYXRlIG1zZwoKCSogdXNhZ2UuYWRiOiBSZW1vdmUgbWVudGlvbiBvZiBvYnNvbGV0ZSAtZ25hdHdiIHN3aXRjaAoJTm90aWNlZCBkdXJpbmcgY29kZSByZWFkaW5nCgoyMDA0LTAxLTEyICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIDFzc2Vjc3RhLmFkYjogTWlub3IgY2hhbmdlcyBmb3IgLWduYXR3YSB3YXJuaW5ncwoKMjAwNC0wMS0xMiAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwNC0wMS0wOSAgTWFyayBNaXRjaGVsbCAgPG1hcmtAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1pc2MuYyAoZ25hdF9leHBhbmRfZXhwcik6IEFkZCBhbHRfcnRsIHBhcmFtZXRlci4KCjIwMDQtMDEtMDcgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogbGluay5jIFtzZ2ldIChzaGFyZWRfbGliZ25hdF9kZWZhdWx0KTogQ2hhbmdlIHRvIFNUQVRJQy4KCjIwMDQtMDEtMDUgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW46IFJldmVydCBzdGFtcC14Z25hdHVnIGNoYW5nZSBmcm9tIDIwMDMtMTItMTguCglVcGRhdGUgY29tbWVudCBhbmQgY29weXJpZ2h0IGRhdGUuCgkqIHN0YW1wLXhnbmF0dWc6IERlbGV0ZS4KCjIwMDQtMDEtMDUgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogMXNzZWNzdGEuYWRzOiBEZWZhdWx0X1NlY29uZGFyeV9TdGFjayBpcyBub3QgYSBjb25zdGFudCBzaW5jZSBpdCBtYXkKCWJlIG1vZGlmaWVkIGJ5IHRoZSBiaW5kZXIgZ2VuZXJhdGVkIG1haW4gcHJvZ3JhbSBpZiB0aGUgLUQgc3dpdGNoIGlzCgl1c2VkLgoKCSogNG9udW1hdXguYWRzLCA0em51bWF1eC5hZHM6IEFkZCBQdXJlX0Z1bmN0aW9uIHByYWdtYXMgZm9yIGFsbAoJaW1wb3J0ZWQgZnVuY3Rpb25zIChzaW5jZSBub3cgd2UgZXhwZWN0IHRoaXMgdG8gYmUgZG9uZSBmb3IgaW1wb3J0ZWQKCWZ1bmN0aW9ucykKCgkqIDV2dGFwcm9wLmFkYjogQWRkIHNldmVyYWwgPz8/IGZvciBzZWN0aW9ucyByZXF1aXJpbmcgbW9yZSBjb21tZW50cwoJTWlub3IgcmVmb3JtYXR0aW5nIHRocm91Z2hvdXQKCgkqIDV6aW5pdC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJQWRkIDIwMDQgdG8gY29weXJpZ2h0IGRhdGUKCU1pbm9yIGNoYW5nZXMgdG8gYXZvaWQgLWduYXR3YSB3YXJuaW5ncwoJQ29ycmVjdCBzb21lIGluc3RhbmNlcyBvZiB1c2luZyBPUiBpbnN0ZWFkIG9mIE9SIEVMU0UgKG5vdGVkIHdoaWxlCglkb2luZyByZWZvcm1hdHRpbmcpCgoJKiBzcHJpbnQuYWRiOiBNaW5vciB1cGRhdGVzIHRvIGF2b2lkIC1nbmF0d2Egd2FybmluZ3MKCgkqIHMtc2Vjc3RhLmFkcywgcy1zZWNzdGEuYWRiOgoJKFNTX0dldF9NYXgpOiBOZXcgZnVuY3Rpb24gdG8gb2J0YWluIGhpZ2ggd2F0ZXIgbWFyayBmb3Igc3Mgc3RhY2sKCURlZmF1bHRfU2Vjb25kYXJ5X1N0YWNrIGlzIG5vdCBhIGNvbnN0YW50IHNpbmNlIGl0IG1heSBiZSBtb2RpZmllZCBieQoJdGhlIGJpbmRlciBnZW5lcmF0ZWQgbWFpbiBwcm9ncmFtIGlmIHRoZSAtRCBzd2l0Y2ggaXMgdXNlZC4KCgkqIHN3aXRjaC1iLmFkYjogTmV3IC1Ebm5uIHN3aXRjaCBmb3IgYmluZGVyCgoJKiBzd2l0Y2gtYy5hZGI6CglNYWtlIC1nbmF0ZyBpbXBseSBhbGwgd2FybmluZ3MgY3VycmVudGx5IGluIC1nbmF0d2EKCgkqIHZtc19jb252LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglBZGQgMjAwNCB0byBjb3B5cmlnaHQgbm90aWNlCglBZGQgMjAwNCB0byBwcmludGVkIGNvcHlyaWdodCBub3RpY2UKCgkqIDN2ZXhwZWN0LmFkYiwgNHpzeXRhY28uYWRiLCAzd3NvY3RoaS5hZGIsIDN6c29jdGhpLmFkYiwKCTN6c29jdGhpLmFkYiwgNTZ0YXByb3AuYWRiLCA1NnRwb3BzcC5hZGIsIDVhbWFzdG9wLmFkYiwKCTVhbWwtdGd0LmFkYiwgNWF0YXByb3AuYWRiLCA1YXRhcHJvcC5hZGIsIDVhdHBvcHNwLmFkYiwKCTVmdGFwcm9wLmFkYiwgNWdpbnRlcnIuYWRiLCA1Z21hc3RvcC5hZGIsIDVnbWwtdGd0LmFkYiwKCTVndGFwcm9wLmFkYiwgNWhtbC10Z3QuYWRiLCA1aG1sLXRndC5hZGIsIDVobWwtdGd0LmFkYiwKCTVodGFwcm9wLmFkYiwgNWh0cmFjZWIuYWRiLCA1aXRhcHJvcC5hZGIsIDVsbWwtdGd0LmFkYiwKCTVzbWwtdGd0LmFkYiwgNXN0YXByb3AuYWRiLCA1c3RhcHJvcC5hZGIsIDVzdHBvcHNwLmFkYiwKCTV2YXN0aGFuLmFkYiwgNXZpbm1hb3AuYWRiLCA1dmludGVyci5hZGIsIDV2dGFwcm9wLmFkYiwKCTV2bWwtdGd0LmFkYiwgNXZ0YXByb3AuYWRiLCA1d29zcHJpbS5hZGIsIDV3dGFwcm9wLmFkYiwKCTV6aW50ZXJyLmFkYiwgNXppbnRtYW4uYWRiLCA1em1sLXRndC5hZGIsIDV6dGFwcm9wLmFkYiwKCTZ2Y3BwLmFkYiwgNnZjc3RyZWEuYWRiLCA3c3RhcHJvcC5hZGIsIDdzdHBvcHNwLmFkYiwKCXZ4YWRkcjJsaW5lLmFkYiwgdnhhZGRyMmxpbmUuYWRiLCB4cmVmX2xpYi5hZGIsIHhyX3RhYmxzLmFkYiwKCXhyX3RhYmxzLmFkcywgcy10YXNkZWIuYWRiLCBzLXRhc2RlYi5hZGIsIHNlbV9yZXMuYWRzLAoJc2VtX3V0aWwuYWRiLCBzZW1fdXRpbC5hZGIsIHNlbV91dGlsLmFkcywgcy1pbnRlcnIuYWRiLAoJY2hlY2tzLmFkYiwgY2xlYW4uYWRiLCBjc3RhbmQuYWRiLCBlaW5mby5hZHMsCgllaW5mby5hZGIsIGV4cF9hZ2dyLmFkYiwgZXhwX2NoMTEuYWRiLCBleHBfY2gzLmFkYiwKCWV4cF9jaDQuYWRiLCBleHBfY2g1LmFkYiwgZXhwX2NoNy5hZGIsIGV4cF9jaDkuYWRiLAoJcHJqLW5tc2MuYWRiLCBwcmotcHAuYWRiLCBwcmotdXRpbC5hZGIsIHNlbV9hdHRyLmFkYiwKCXNlbV9jaDEwLmFkYiwgc2VtX2NoMTIuYWRiLCBzZW1fY2g0LmFkYiwgZy1kaXJvcGUuYWRiLAoJZy1kaXJvcGUuYWRzLCBnbmF0bGJyLmFkYiwgaS1jc3RyZWEuYWRiLCBpbmxpbmUuYWRiLAoJbGliLXhyZWYuYWRiLCBzZW1fY2g1LmFkYiwgc2VtX2NoNy5hZGIsIHNlbV9jaDguYWRiOgoJTWlub3IgcmVmb3JtYXR0aW5nIGFuZCBjb2RlIGNsZWFuIHVwcy4KCU1pbm9yIGNoYW5nZXMgdG8gcHJldmVudCAtZ25hdHdhIHdhcm5pbmdzCgoJKiBhbGkuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcgYW5kIGNsZWFudXAgb2YgY29kZQoJQWNxdWlyZSBuZXcgU1MgaW5kaWNhdGlvbiBvZiBzZWNvbmRhcnkgc3RhY2sgdXNlIGZyb20gYWxpIGZpbGVzCgoJKiBhLW51bWF1eC5hZHM6IEFkZCBQdXJlX0Z1bmN0aW9uIHByYWdtYXMgZm9yIGFsbCBpbXBvcnRlZCBmdW5jdGlvbnMKCShzaW5jZSBub3cgd2UgZXhwZWN0IHRoaXMgdG8gYmUgZG9uZSBmb3IgaW1wb3J0ZWQgZnVuY3Rpb25zKQoKCSogYmluZGdlbi5hZGI6IEdlbmVyYXRlIGNhbGwgdG8gbW9kaWZ5IGRlZmF1bHQgc2Vjb25kYXJ5IHN0YWNrIHNpemUgaWYKCS1Ebm5uIHN3aXRjaCBnaXZlbgoKCSogYmluZHVzZy5hZGI6IEFkZCBsaW5lIGZvciBuZXcgLUQgc3dpdGNoCgoJKiBleHBfYWdnci5hZGIgKFR5cGVfTWF5X0hhdmVfQml0X0FsaWduZWRfQ29tcG9uZW50cyk6IE1vcmUgYXBwcm9wcmlhdGUKCXJlcGxhY2VtZW50IG5hbWUgZm9yIFR5cGVfTWF5X0hhdmVfTm9uX0JpdF9BbGlnbmVkX0NvbXBvbmVudHMhCglBZGQgY2lyY3VpdHJ5IGZvciBib3RoIHJlY29yZHMgYW5kIGFycmF5cyB0byBhdm9pZCBnaWdpCglwcm9jZXNzaW5nIGlmIHRoZSB0eXBlIGludm9sdmVkIGhhcyBub24tYml0LWFsaWduZWQgY29tcG9uZW50cwoKCSogZXhwX2NoNS5hZGIgKEV4cGFuZF9Bc3NpZ25fQXJyYXkpOiBBdm9pZCBhc3N1bXB0aW9uIHRoYXQKCU5fU3RyaW5nX0xpdGVyYWwgbm9kZSBhbHdheXMgcmVmZXJlbmNlcyBhbiBFX1N0cmluZ19MaXRlcmFsX1N1YnR5cGUKCWVudGl0eS4gVGhpcyBtYXkgbm90IGJlIHRydWUgaW4gdGhlIGZ1dHVyZS4KCShQb3NzaWJsZV9CaXRfQWxpZ25lZF9Db21wb25lbnQpOiBNb3ZlIHByb2Nlc3Npbmcgb2YKCUNvbXBvbmVudF9NYXlfQmVfQml0X0FsaWduZWQgZnJvbSBleHBfY2g1IHRvIGV4cF91dGlsCgoJKiBleHBfY2g2LmFkYiAoRXhwYW5kX1RocmVhZF9Cb2R5KTogUGljayB1cAoJRGVmYXVsdF9TZWNvbmRhcnlfU3RhY2tfU2l6ZSBhcyB2YXJpYWJsZSBzbyB0aGF0IHdlIGdldCB2YWx1ZSBtb2RpZmllZAoJYnkgcG9zc2libGUgLURubm4gYmluZGVyIHBhcmFtZXRlci4KCgkqIGV4cF91dGlsLmFkYiAoQ29tcG9uZW50X01heV9CZV9CaXRfQWxpZ25lZCk6IE5ldyBmdW5jdGlvbi4KCShUeXBlX01heV9IYXZlX0JpdF9BbGlnbmVkX0NvbXBvbmVudHMpOiBOZXcgZnVuY3Rpb24uCgoJKiBleHBfdXRpbC5hZHMgKENvbXBvbmVudF9NYXlfQmVfQml0X0FsaWduZWQpOiBOZXcgZnVuY3Rpb24uCgkoVHlwZV9NYXlfSGF2ZV9CaXRfQWxpZ25lZF9Db21wb25lbnRzKTogTmV3IGZ1bmN0aW9uLgoKCSogZmUuaDogKFNldF9JZGVudGlmaWVyX0Nhc2luZyk6IEZpeCBwcm90b3R5cGUuCglBZGQgZGVjbGFyYXRpb24gZm9yIFNlbV9FbGltLkVsaW1pbmF0ZV9FcnJvcl9Nc2cuCglNaW5vciByZWZvcm1hdHRpbmcuCgoJKiBmcmVlemUuYWRiIChGcmVlemVfRW50aXR5KTogQWRkIFJNIHJlZmVyZW5jZSB0byBlcnJvciBtZXNzYWdlIGFib3V0CglpbXBvcnRpbmcgY29uc3RhbnQgYXRvbWljL3ZvbGF0aWxlIG9iamVjdHMuCgkoRnJlZXplX1N1YnByb2dyYW0pOiBSZXNldCBJc19QdXJlIGluZGljYXRpb24gZm9yIGltcG9ydGVkIHN1YnByb2dyYW0KCXVubGVzcyBleHBsaWNpdCBQdXJlX0Z1bmN0aW9uIHByYWdtYSBnaXZlbiwgdG8gYXZvaWQgaW5zaWRpb3VzIGJ1ZyBvZgoJY2FsbCB0byBub24tcHVyZSBpbXBvcnRlZCBmdW5jdGlvbiBnZXR0aW5nIGVsaW1pbmF0ZWQuCgoJKiBnbmF0MWRydi5hZGIsIGduYXRiaW5kLmFkYiwgZ25hdGNob3AuYWRiLCBnbmF0ZmluZC5hZGIsCglnbmF0bHMuYWRiLCBnbmF0bGluay5hZGIsIGduYXRtZW0uYWRiLCBnbmF0bmFtZS5hZGIsIGduYXRzeW0uYWRiLAoJZ25hdHhyZWYuYWRiLCBncHJjbWQuYWRiLCBncHJlcC5hZGIsIG1ha2UuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCUFkZCAyMDA0IHRvIHByaW50ZWQgY29weXJpZ2h0IG5vdGljZQoKCSogbGliLXdyaXQuYWRzLCBsaWItd3JpdC5hZGI6IFB1dCBuZXcgU1MgZmxhZyBpbiBhbGkgZmlsZSBpZiBzZWNvbmRhcnkKCXN0YWNrIHVzZWQuCgoJKiBNYWtlZmlsZS5ydGw6IEFkZCBlbnRyeSBmb3IgZy1zZXN0aW4ubwoJZy1zZXN0aW4uYWRzOiBOZXcgZmlsZS4KCgkqIG1kbGwuYWRiOiBNaW5vciBjaGFuZ2VzIHRvIGF2b2lkIC1nbmF0d2Egd2FybmluZ3MKCgkqIG1saWItdGd0LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBvcHQuYWRzOiBOZXcgcGFyYW1ldGVyIERlZmF1bHRfU2Vjb25kYXJ5X1N0YWNrX1NpemUgKEdOQVRCSU5EKQoJTmV3IHN3aXRjaCBTZWNfU3RhY2tfVXNlZCAoR05BVCwgR05BVEJJTkQpCglNYWtlIERlZmF1bHRfU2Vjb25kYXJ5X1N0YWNrX1NpemUgYSB2YXJpYWJsZSBpbnN0ZWFkIG9mIGEgY29uc3RhbnQsCglzbyB0aGF0IGl0IGNhbiBiZSBtb2RpZmllZCBieSB0aGUgbmV3IC1Ebm5uIGJpbmQgc3dpdGNoLgoKCSogcnRzZmluZC5hZGIgKExvYWRfRmFpbCk6IEdpdmUgZnVsbCBlcnJvciBtZXNzYWdlIGluIGNvbmZpZ3VyYWJsZQoJcnVuLXRpbWUgbW9kZSBpZiBhbGxfZXJyb3JzIG1vZGUgaXMgc2V0LiBUaGlzIHdhcyBub3QgZG9uZSBpbiB0aGUgY2FzZQoJb2YgYSBmaWxlIG5vdCBmb3VuZCwgd2hpY2ggd2FzIGFuIG92ZXJzaWdodC4KCU5vdGUgaWYgc2Vjb25kYXJ5IHN0YWNrIHVuaXQgaXMgdXNlZCBieSBjb21waWxlci4KCgkqIHNlbV9lbGFiLmFkYiAoQ2hlY2tfQV9DYWxsKTogUmV3cml0ZSB0byBhdm9pZCB0cnlpbmcgdG8gcHV0CglpbmVmZmVjdGl2ZSBlbGFib3JhdGUgYWxsIHByYWdtYXMgb24gbm9uLXZpc2libGUgcGFja2FnZXMgKHRoaXMKCWhhcHBlbmVkIHdoZW4gYSByZW5hbWVkIHN1YnByb2dyYW0gd2FzIGNhbGxlZCkuIE5vdyB0aGUgZWxhYm9yYXRlIGFsbAoJYWx3YXlzIGdvZXMgb24gdGhlIHBhY2thZ2UgY29udGFpbmluZyB0aGUgcmVuYW1pbmcgcmF0aGVyIHRoYW4gdGhlIG9uZQoJY29udGFpbmluZyB0aGUgcmVuYW1lZCBzdWJwcm9ncmFtLgoKCSogc2VtX2VsaW0uYWRzLCBzZW1fZWxpbS5hZGIgKEVsaW1pbmF0ZV9FcnJvcl9Nc2cpOiBOZXcgcHJvY2VkdXJlCgkoUHJvY2Vzc19FbGltaW5hdGVfUHJhZ21hKTogQWRkIHBhcmFtZXRlciB0byBjYXB0dXJlIHByYWdtYSBsb2NhdGlvbi4KCgkqIHNlbV9ldmFsLmFkYiAoRXZhbF9TdHJpbmdfTGl0ZXJhbCk6IERvIG5vdCBhc3N1bWUgdGhhdCBzdHJpbmcgbGl0ZXJhbAoJaGFzIGFuIEV0eXBlIHRoYXQgcmVmZXJlbmNlcyBhbiBFX1N0cmluZ19MaXRlcmFsLgoJKEV2YWxfU3RyaW5nX0xpdGVyYWwpOiBBdm9pZCBhc3N1bXB0aW9uIHRoYXQgTl9TdHJpbmdfTGl0ZXJhbCBub2RlCglhbHdheXMgcmVmZXJlbmNlcyBhbiBFX1N0cmluZ19MaXRlcmFsX1N1YnR5cGUgZW50aXR5LiBUaGlzIG1heSBub3QKCWJlIHRydWUgaW4gdGhlIGZ1dHVyZS4KCgkqIHNlbV9wcmFnLmFkYiAoUHJvY2Vzc19FbGltaW5hdGVfUHJhZ21hKTogQWRkIHBhcmFtZXRlciB0byBjYXB0dXJlCglwcmFnbWEgbG9jYXRpb24uCgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZSk6IFNwZWNpYWxpemUgbXNnIGZvciBmdW5jdGlvbiBuYW1lIHVzZWQgaW4gcHJvYwoJY2FsbC4KCjIwMDQtMDEtMDUgIEVkIEZhbGlzICA8ZmFsaXNAZ25hdC5jb20+CgoJKiBnLWRlYnV0aS5hZGI6IFJlcGxhY2VkIGRpcmVjdCBib29sZWFuIG9wZXJhdG9yIHdpdGggc2hvcnQtY2lyY3VpdAoJZm9ybS4KCjIwMDQtMDEtMDUgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogYmxkLmFkYjogTWlub3IgY29tbWVudCB1cGRhdGVzCgkoUHJvY2Vzc19EZWNsYXJhdGl2ZV9JdGVtcyk6IENvcnJlY3QgaW5jb3JyZWN0IG5hbWUgKEluZGV4X05hbWUgaW5zdGVhZAoJb2YgSXRlbV9OYW1lKS4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IFNwZWNpYWwgcHJvY2VzcyBmb3IgZmlsZXMgdG8gY29tcGlsZS9jaGVjayB3aGVuCgktQiBpcyBzcGVjaWZpZWQuIEZhaWwgd2hlbiB0aGVyZSBhcmUgb25seSBmb3JlaWduIG1haW5zIGluIGF0dHJpYnV0ZQoJTWFpbiBvZiB0aGUgcHJvamVjdCBmaWxlIGFuZCAtQiBpcyBub3Qgc3BlY2lmaWVkLiBEbyBub3Qgc2tpcCBiaW5kL2xpbmsKCXN0ZXBzIHdoZW4gLUIgaXMgc3BlY2lmaWVkLgoKCSogbWFrZXVzZy5hZGI6IERvY3VtZW50IG5ldyBzd2l0Y2ggLUIKCgkqIG9wdC5hZHMgKEJ1aWxkX0JpbmRfQW5kX0xpbmtfRnVsbF9Qcm9qZWN0KTogTmV3IEJvb2xlYW4gZmxhZwoKCSogc3dpdGNoLW0uYWRiOiAoU2Nhbl9NYWtlX1N3aXRjaGVzKTogUHJvY2VzcyAtQiBzd2l0Y2gKCgkqIHZtc19kYXRhLmFkczogQWRkIG5ldyBHTkFUIFBSRVRUWSBxdWFsaWZpZXIKCS9GT1JNX0ZFRURfQUZURVJfUFJBR01BX1BBR0UgZm9yIHN3aXRjaCAtZmYKCjIwMDQtMDEtMDUgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX0ZyZWVfU3RhdGVtZW50KTogSGFuZGxlIHRoaW4gcG9pbnRlcgoJY2FzZS4KCgkqIG1pc2MuYyAoZ25hdF9wcmludGFibGVfbmFtZSk6IElmIFZFUkJPU0lUWSBpcyAyLCBjYWxsCglTZXRfSWRlbnRpZmllcl9DYXNpbmcuCgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgRV9GdW5jdGlvbik6IEdpdmUgZXJyb3IgaWYgcmV0dXJuIHR5cGUKCWhhcyBzaXplIHRoYXQgb3ZlcmZsb3dzLgoKMjAwNC0wMS0wNSAgR2FyeSBEaXNtdWtlcyAgPGRpc211a2VzQGduYXQuY29tPgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9BcnJheV9Db21wYXJpc29uKTogQWRkIEJvb2xlYW4gY29uc3RhbnQgdG8gYXZvaWQKCS1nbmF0d2Egd2FybmluZyBvbiBzdGF0aWMgY29uZGl0aW9uLgoKMjAwNC0wMS0wNSAgRG91ZyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIGxpbmsuYzogKHNoYXJlZF9saWJnbmF0X2RlZmF1bHQpIFtWTVNdOiBDaGFuZ2UgdG8gU1RBVElDLgoKMjAwNC0wMS0wNSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjogSW5zdGFsbCBhbGkgZmlsZXMgdXNpbmcgSU5TVEFMTF9EQVRBX0RBVEUgdG8gcHJlc2VydmUKCWFsbCBhdHRyaWJ1dGVzLCBpbmNsdWRpbmcgcmVhZC1vbmx5IGF0dHJpYnV0ZS4KCjIwMDQtMDEtMDUgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIGJpbmRnZW4uYWRiIChHZW5fT2JqZWN0X0ZpbGVzX09wdGlvbnMpOiBHZW5lcmF0ZSB0aGUgbmV3IHNoYXJlZAoJbGlicmFyeSBuYW1pbmcgc2NoZW1lLgoKCSogbWxpYi1wcmouYWRiIChCdWlsZF9MaWJyYXJ5KTogR2VuZXJhdGUgZGlmZmVyZW50IG5hbWVzIGZvciB0aGUgc3RhdGljCglvciBkeW5hbWljIHZlcnNpb24gb2YgdGhlIEdOQVQgcnVudGltZS4gVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCB0aGUKCW5ldyBzaGFyZWQgbGlicmFyeSBuYW1pbmcgc2NoZW1lLgoJKFByb2Nlc3NfQmluZGVyX0ZpbGUpOiBBZGQgZGV0ZWN0aW9uIG9mIHNoYXJlZCBsaWJyYXJ5IGluIGJpbmRlciBmaWxlCgliYXNlZCBvbiB0aGUgbmV3IG5hbWluZyBzY2hlbWUuCgoJKiBnbmF0bGluay5hZGIgKFByb2Nlc3NfQmluZGVyX0ZpbGUpOiBQcm9wZXJseSBkZXRlY3QgdGhlIG5ldyBuYW1pbmcKCXNjaGVtZSBmb3IgdGhlIHNoYXJlZCBydW50aW1lIGxpYnJhcmllcy4KCgkqIE1ha2VmaWxlLmluOgoJKExJQlJBUllfVkVSU0lPTikgW1ZNU106IENvbnZlcnQgYWxsIC4gdG8gXyB0byBjb25mb3JtIHRvIG5ldyBuYW1pbmcKCXNjaGVtZS4KCShpbnN0YWxsLWduYXRsaWIpOiBEbyBub3QgY3JlYXRlIHN5bWxpbmtzIGZvciBzaGFyZWQgbGlicmFyaWVzLgoJKGduYXRsaWItc2hhcmVkLWRlZmF1bHQpOiBJZGVtLgoJKGduYXRsaWItc2hhcmVkLWR1YWwtd2luMzIpOiBOZXcgdGFyZ2V0LiBOb3QgdXNlZCBmb3Igbm93IGFzIHRoZQoJYXV0by1pbXBvcnQgZmVhdHVyZSBkb2VzIG5vdCBzdXBwb3J0IGFycmF5cy9yZWNvcmRzLgoJKGduYXRsaWItc2hhcmVkLXdpbjMyKTogRG8gbm90IGNyZWF0ZSBjb3B5IGZvciB0aGUgc2hhcmVkIGxpYnJhcmllcy4KCShnbmF0bGliLXNoYXJlZC12bXMpOiBGaXggc2hhcmVkIHJ1bnRpbWUgbGlicmFyaWVzIG5hbWVzLgoKCSogb3NpbnQuYWRzLCBvc2ludC5hZGIgKFNoYXJlZF9MaWIpOiBOZXcgcm91dGluZSwgcmV0dXJucyB0aGUgdGFyZ2V0CglkZXBlbmRlbnQgcnVudGltZSBzaGFyZWQgbGlicmFyeSBuYW1lLgoKMjAwNC0wMS0wNSAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhY3QtZXVyb3BlLmZyPgoKCSogb3NpbnQuYWRiIChSZWFkX0xpYnJhcnlfSW5mbyk6IFJlbW92ZSBib2d1cyBjaGVjayBpZiBBTEkgaXMgb2xkZXIKCXRoYW4gdGhlIG9iamVjdC4KCjIwMDQtMDEtMDUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDQuYWRiIChBbmFseXplX0FsbG9jYXRvcik6IENoZWNrIHJlc3RyaWN0aW9uIG9uIGR5bmFtaWMKCXByb3RlY3RlZCBvYmplY3RzIHdoZW4gYWxsb2NhdG9yIGhhcyBhIHN1YnR5cGUgaW5kaWNhdGlvbiwgbm90IGEKCXF1YWxpZmllZCBleHByZXNzaW9uLiBOb3RlIHRoYXQgcXVhbGlmaWVkIGV4cHJlc3Npb25zIG1heSBoYXZlIHRvIGJlCgljaGVja2VkIHdoZW4gbGltaXRlZCBhZ2dyZWdhdGVzIGFyZSBpbXBsZW1lbnRlZC4KCgkqIHNlbV9wcmFnLmFkYiAoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgSW1wb3J0KTogSWYgZW5jbG9zaW5nIHBhY2thZ2UgaXMKCXB1cmUsIGVtaXQgd2FybmluZy4KCShBbmFseXplX1ByYWdtYSwgY2FzZSBQdXJlX0Z1bmN0aW9uKTogSWYgZW5jbG9zaW5nIHBhY2thZ2UgaXMgcHVyZSBhbmQKCXN1YnByb2dyYW0gaXMgaW1wb3J0ZWQsIHJlbW92ZSB3YXJuaW5nLgoKMjAwNC0wMS0wNSAgR2VlcnQgQm9zY2ggIDxib3NjaEBnbmF0LmNvbT4KCgkqIHMtcG9vc2l6LmFkYjogVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgkoQWxsb2NhdGUpOiBVc2UgVGFza19Mb2NrIHRvIHByb3RlY3QgYWdhaW5zdCBjb25jdXJyZW50IGFjY2Vzcy4KCShEZWFsbG9jYXRlKTogTGlrZXdpc2UuCgoyMDA0LTAxLTA1ICBKb2VsIEJyb2JlY2tlciAgPGJyb2JlY2tlckBnbmF0LmNvbT4KCgkqIHMtc3RhbGliLmFkYiAoRWxhYl9GaW5hbF9Db2RlKTogQWRkIG1pc3NpbmcgeWVhciBpbiBkYXRlIGluc2lkZSA/Pz8KCWNvbW1lbnQuCgoyMDAzLTEyLTIzICBLZWxsZXkgQ29vayAgPGtjb29rQGdjYy5nbnUub3JnPgoKCSogZ25hdF91Zy50ZXhpOiBGb3JjZSBhIENWUyBjb21taXQgYnkgdXBkYXRpbmcgY29weXJpZ2h0LgoJKiBnbmF0X3VnX3Z4dy50ZXhpOiBSZWdlbmVyYXRlLgoJKiBnbmF0X3VnX3dudC50ZXhpOiBSZWdlbmVyYXRlLgoJKiBnbmF0X3VnX3Ztcy50ZXhpOiBSZWdlbmVyYXRlLgoJKiBnbmF0X3VnX3VueC50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwMy0xMi0yMCAgS2F6dSBIaXJhdGEgIDxrYXp1QGNzLnVtYXNzLmVkdT4KCgkqIHRyYW5zLmM6IFJlbW92ZSB1c2VzIG9mICJyZWdpc3RlciIgc3BlY2lmaWVyIGluCglkZWNsYXJhdGlvbnMgb2YgbG9jYWwgdmFyaWFibGVzLgoKMjAwMy0xMi0xOCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIHN0YW1wLXhnbmF0dWc6IE5ldyBzdGFtcCBmaWxlLgoJKiBNYWtlLWxhbmcuaW4gKHN0YW1wLXhnbmF0dWcpOiAgTmV3IHN0YW1wIGZpbGUgYW5kIGNvbW1lbnQuCgkoYWRhL2RvY3Rvb2xzL3hnbmF0dWcpOiBBZGQgJChidWlsZF9leGVleHQpLgoJKGFkYS9nbmF0X3VnX3VueC50ZXhpLCBhZGEvZ25hdF91Z192d3gudGV4aSwgYWRhL2duYXRfdWdfdm1zLnRleGkKCWFkYS9nbmF0X3VnX3dudC50ZXhpKTogVXBkYXRlIHRvIGRlcGVuZCBvbiBzdGFtcC14Z25hdHVnLgoKMjAwMy0xMi0xNyAgRWQgRmFsaXMgIDxmYWxpc0BnbmF0LmNvbT4KCgkqIGEtZWxjaGhhLmFkYiAoVGFpbG9yZWRfRXhjZXB0aW9uX0luZm9ybWF0aW9uKTogbWFkZSBJbmZvIGNvbnN0YW50IHRvCgllbGltaW5hdGUgd2FybmluZy4KCgkqIGEtZXhleHRyLmFkYjogQWRkIGNvbnRleHQgY2xhdXNlIGZvcgoJQWRhLkV4Y2VwdGlvbnMuTGFzdF9DaGFuY2VfSGFuZGxlci4KCjIwMDMtMTItMTcgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBjc3RhbmQuYWRiIChDcmVhdGVfU3RhbmRhcmQpOiBDaGFuZ2UgdGhlIHdheSBob3cgdGhlIGRlY2xhcmF0aW9uIG9mCgl0aGUgRHVyYXRpb24gdHlwZSBpcyBjcmVhdGVkIChtYWtpbmcgaXQgdGhlIHNhbWUgd2F5IGFzIGl0IGlzIGZvciBhbGwKCXRoZSBvdGhlciBzdGFuZGFyZCB0eXBlcykuCgoyMDAzLTEyLTE3ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHMtY3J0bC5hZHM6IEZpeCBoZWFkZXIgZm9ybWF0CglDaGFuZ2UgUHVyZSB0byBQcmVlbGFib3JhdGUKCjIwMDMtMTItMTcgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGNoZWNrcy5hZGIgKFNlbGVjdGVkX0xlbmd0aF9DaGVja3MpOiBHZW5lcmF0ZSBhbiBJdHlwZSByZWZlcmVuY2UgZm9yCgl0aGUgZXhwcmVzc2lvbiB0eXBlIG9ubHkgaWYgaXQgaXMgZGVjbGFyZWQgaW4gdGhlIGN1cnJlbnQgdW5pdC4KCgkqIHNlbV9jaDMuYWRiIChDb25zdHJhaW5fSW5kZXgpOiBIYW5kbGUgcHJvcGVybHkgYSByYW5nZSB3aG9zZSBib3VuZHMKCWFyZSB1bml2ZXJzYWwgYW5kIGFscmVhZHkgYW5hbHl6ZWQsIGFzIGNhbiBvY2N1ciBpbiBjb25zdHJhaW5lZAoJc3ViY29tcG9uZW50cyB0aGF0IGRlcGVuZCBvbiBkaXNjcmltaW5hbnRzLCB3aGVuIG9uZSBjb25zdHJhaW50IGlzIGEKCXN1YnR5cGUgbWFyay4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX1R5cGVfQ29udmVyc2lvbik6IEFueSBhcml0aG1ldGljIGV4cHJlc3Npb24gb2YKCXR5cGUgQW55X0ZpeGVkIGlzIGxlZ2FsIGFzIHRoZSBhcmd1bWVudCBvZiBhIGNvbnZlcnNpb24sIGlmIG9ubHkgb25lCglmaXhlZC1wb2ludCB0eXBlIGlzIGluIGNvbnRleHQuCgoyMDAzLTEyLTE3ICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDAzLTEyLTE1ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfVGhyZWFkX0JvZHkpOiBGaXggZXJyb3IgaW4gcGlja2luZyB1cCBkZWZhdWx0CglzZWMgc3RhY2sgc2l6ZS4KCjIwMDMtMTItMTUgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ25hdGNob3AuYWRiOiAoRXJyb3JfTXNnKTogRG8gbm90IGV4aXQgb24gZXJyb3IgZm9yIGEgd2FybmluZwoJKEduYXRjaG9wKTogRG8gbm90IHNldCBmYWlsdXJlIHN0YXR1cyB3aGVuIHJlcG9ydGluZyB0aGUgbnVtYmVyIG9mCgl3YXJuaW5ncy4KCjIwMDMtMTItMTUgIERvdWcgUnVwcCAgPHJ1cHBAZ25hdC5jb20+CgoJKiBzLWN0cmwuYWRzOiBOZXcgZmlsZS4KCgkqIE1ha2VmaWxlLnJ0bCAoR05BVF9SVExfTk9OVEFTS0lOR19PQkpTKTogQWRkIHMtY3J0bCQob2JqZXh0KS4KCgkqIE1ha2UtbGFuZy5pbjogKEdOQVRfQURBX09CSlMpOiBBZGQgYWRhL3MtY3J0bC5vLgoJKEdOQVRCSU5EX09CSlMpOiBBZGQgYWRhL3MtY3J0bC5vLgoKCSogTWFrZWZpbGUuaW4gW1ZNU106IENsZWFuIHVwIGlmZXEgcnVsZXMuCgoJKiBnbmF0bGluay5hZGIsIDZ2Y3N0cmVhLmFkYiwgYS1kaXJlaW8uYWRiLCBhLXNlcXVpby5hZGIsCglhLXN0c3Rpby5hZGIsIGEtdGV4dGlvLmFkYiwgZy1vc19saWIuYWRiLCBhLXdpdGVpby5hZGIsCglnLW9zX2xpYi5hZHMsIGktY3N0cmVhLmFkYiwgaS1jc3RyZWEuYWRzLCBzLWRpcmVpby5hZGIsCglzLWZpbGVpby5hZGIsIHMtbWVtY29wLmFkcywgcy1tZW1vcnkuYWRiLCBzLXN0YWNoZS5hZGIsCglzLXRhc2RlYi5hZGI6IFVwZGF0ZSBjb3B5cmlnaHQuCglJbXBvcnQgU3lzdGVtLkNSVEwuCglNYWtlIG1pbm9yIG1vZGlmaWNhdGlvbnMgdG8gdXNlIFN5c3RlbS5DUlRMIGRlY2xhcmVkIGZ1bmN0aW9ucyBpbnN0ZWFkCglvZiBpbXBvcnRpbmcgbG9jYWxseS4KCjIwMDMtMTItMTUgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDMtMTItMTEgIEVkIEZhbGlzICA8ZmFsaXNAZ25hdC5jb20+CgoJKiA1emluaXQuYWRiOiBDbGVhbiB1cC4KCgkqIDV6aW50bWFuLmFkYiAoTm90aWZ5X0V4Y2VwdGlvbik6IHJlcGxhY2VkIGNhc2Ugc3RhdGVtZW50IHdpdGggYSBjYWxsCgl0byBfX2duYXRfbWFwX3NpZ25hbCwgaW1wb3J0ZWQgZnJvbSBpbml0LmMgdG8gc3VwcG9ydAoJc2lnbmFsIC0+IGV4Y2VwdGlvbiBtYXBwaW5ncyB0aGF0IGRlcGVuZCBvbiB0aGUgdnhXb3JrcyB2ZXJzaW9uLgoKCSogaW5pdC5jOgoJQ3JlYXRlZCBhbmQgZXhwb3J0ZWQgX19nbmF0X21hcF9zaWduYWwgdG8gc3VwcG9ydCBzaWduYWwgLT4gZXhjZXB0aW9uCgltYXBwaW5nIHRoYXQgaXMgZGVwZW5kZW50IG9uIHRoZSBWeFdvcmtzIHZlcnNpb24uCglDaGFuZ2UgbWFwcGluZyBvZiBTSUdCVVMgZnJvbSBQcm9ncmFtX0Vycm9yIHRvIFN0b3JhZ2VfRXJyb3Igb24gVnhXb3JrcwoKMjAwMy0xMi0xMSAgVmFzaWxpeSBGb2ZhbnYgIDxmb2Zhbm92QGFjdC1ldXJvcGUuZnI+CgoJKiA1d29zaW50ZS5hZHM6IExpbmsgd2l0aCAtbXRocmVhZHMgc3dpdGNoLgoKMjAwMy0xMi0xMSAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBpbml0LmMgKF9fZ25hdF9pbnN0YWxsX2hhbmRsZXIgW05ldEJTRF0pOiBTZXQKCV9fZ25hdF9oYW5kbGVyX2luc3RhbGxlZCwgYXMgZG9uZSBvbiBhbGwgb3RoZXIgcGxhdGZvcm1zLgoJUmVtb3ZlIGR1cGxpY2F0ZWQgY29kZS4KCjIwMDMtMTItMTEgIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW4gKHJ0cy16ZnAsIHJ0cy1yYXZlbnNjYXIpOiBDcmVhdGUgbGliZ25hdC5hLgoKMjAwMy0xMi0xMSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogc2luZm8uYWRzOiBGaXggaW5jb25zaXN0ZW50IGV4YW1wbGUgY29kZSBpbiBjb21tZW50LgoKMjAwMy0xMi0xMSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBhLXRpaW5hdS5hZGI6IEFkZCBhIGNvdXBsZSBvZiBjb21tZW50cwoKCSogc2VtX2NoMy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc2VtX3ByYWcuYWRiOgoJRml4IGJhZCBwcm90b3R5cGUgb2YgU2FtZV9CYXNlX1R5cGUgaW4gYm9keSAoY29kZSByZWFkaW5nIGNsZWFudXApCglNaW5vciByZWZvcm1hdHRpbmcgdGhyb3VnaG91dAoKMjAwMy0xMi0xMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoNy5hZGIgKEVzdGFibGlzaF9UcmFuc2llbnRfU2NvcGUpOiBJZiB0aGUgY2FsbCBpcyB3aXRoaW4gdGhlCglib3VuZHMgb2YgYSBsb29wLCBjcmVhdGUgYSBzZXBhcmF0ZSBibG9jayBpbiBvcmRlciB0byBnZW5lcmF0ZSBwcm9wZXIKCWNsZWFudXAgYWN0aW9ucyB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4KCgkqIHNlbV9yZXMuYWRiIChSZXNvbHZlX0NhbGwpOiBBZnRlciBhIGNhbGwgdG8KCUVzdGFibGlzaF9UcmFuc2llbnRfU2NvcGUsIHRoZSBjYWxsIG1heSBiZSByZXdyaXR0ZW4gYW5kIHJlbG9jYXRlZCwgaW4KCXdoaWNoIGNhc2Ugbm8gZnVydGhlciBwcm9jZXNzaW5nIGlzIG5lZWRlZC4KCgkqIHNlbV91dGlsLmFkYjogKFdyb25nX1R5cGUpOiBSZWZpbmUgcHJldmlvdXMgZml4LgoJIEZpeGVzIEFDQVRTIHJlZ3Jlc3Npb25zLgoKCVBSIGFkYS8xMzM1MwoJKiBzZW1fcHJhZy5hZGIgKEJhY2tfRW5kX0Nhbm5vdF9JbmxpbmUpOiBBIHJlbmFtaW5nX2FzX2JvZHkgY2FuIGFsd2F5cwoJYmUgaW5saW5lZC4KCjIwMDMtMTItMDggIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogNXl0aWl0aG8uYWRiLCA1enRocmluaS5hZGIsIDV6dGlpdGhvLmFkYiwgaS12dGhyZWEuYWRiLAoJaS12dGhyZWEuYWRzLCBzLXRwYWU2NS5hZGIsIHMtdHBhZTY1LmFkczogQ2xlYW51cDogUmVtb3ZlIGEgYnVuY2ggb2YKCW9ic29sZXRlIGZpbGVzLgoKCSogTWFrZWZpbGUuaW46IChydHMtcmF2ZW5zY2FyKTogR2VuZXJhdGUgYW4gZW1wdHkgbGliZ25hdC5hLgoJKHJ0cy16ZnApOiBEaXR0by4KCjIwMDMtMTItMDggIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogN3NpbnRtYW4uYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGJpbmRnZW4uYWRiOiBDb25maWd1cmFibGVfUnVuX1RpbWUgbW9kZSBubyBsb25nZXIgc3VwcHJlc3NlcyB0aGUKCXN0YW5kYXJkIGxpbmtlciBvcHRpb25zIHRvIGdldCBzdGFuZGFyZCBsaWJyYXJpZXMgbGlua2VkLiBXZSBub3cgcGxhbgoJdG8gcHJvdmlkZSBkdW1teSB2ZXJzaW9ucyBvZiB0aGVzZSBsaWJyYXJpZXMgdG8gbWF0Y2ggdGhlIGFwcHJvcHJpYXRlCgljb25maWd1cmFibGUgcnVuLXRpbWUgKGUuZy4gaWYgYSBsaWJyYXJ5IGlzIG5vdCBuZWVkZWQgYXQgYWxsLCBwcm92aWRlCglhIGR1bW15IGVtcHR5IGxpYnJhcnkpLgoKCSogdGFyZ3Bhcm0uYWRzOiBDb25maWd1cmFibGVfUnVuX1RpbWUgbW9kZSBubyBsb25nZXIgYWZmZWN0cyBsaW5rZXIKCW9wdGlvbnMgKC1MIHBhcmFtZXRlcnMgYW5kIHN0YW5kYXJkIGxpYnJhcmllcykuIFdoYXQgd2UgcGxhbiB0byBkbyBpcwoJdG8gcHJvdmlkZSBkdW1teSBsaWJyYXJpZXMgd2hlcmUgdGhlIGxpYnJhcmllcyBhcmUgbm90IHJlcXVpcmVkLgoKCSogZ25hdGJpbmQuYWRiOiBNaW5vciBjb21tZW50IGltcHJvdmVtZW50CgoyMDAzLTEyLTA4ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBleHBfYWdnci5hZGIgKEJ1aWxkX1JlY29yZF9BZ2dyX0NvZGUpOiBEbyBub3QgcmVtb3ZlIHRoZSBleHBhbmRlZAoJYWdncmVnYXRlIGluIHRoZSBwYXJlbnQuIE90aGVyd2lzZSBjb25zdGFudHMgd2l0aCBsaW1pdGVkIGFnZ3JlZ2F0ZXMKCWFyZSBub3Qgc3VwcG9ydGVkLiBBZGQgbmV3IGZvcm1hbCB0byBwYXNzIHRoZSBjb21wb25lbnQgdHlwZSAoQ3R5cGUpLgoJSXQgaXMgcmVxdWlyZWQgdG8gY2FsbCB0aGUgY29ycmVzcG9uZGluZyBJUCBzdWJwcm9ncmFtIGluIGNhc2Ugb2YKCWRlZmF1bHQgaW5pdGlhbGl6ZWQgY29tcG9uZW50cy4KCShHZW5fQXNzaWduKTogSW4gY2FzZSBvZiBkZWZhdWx0LWluaXRpYWxpemVkIGNvbXBvbmVudCwgZ2VuZXJhdGUgYQoJY2FsbCB0byB0aGUgSVAgc3VicHJvZ3JhbSBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbXBvbmVudC4KCShCdWlsZF9SZWNvcmRfQWdncl9Db2RlKTogUmVtb3ZlIHRoZSBhZ2dyZWdhdGUgZnJvbSB0aGUgcGFyZW50IGluIGNhc2UKCW9mIGFnZ3JlZ2F0ZSB3aXRoIGRlZmF1bHQgaW5pdGlhbGl6ZWQgY29tcG9uZW50cy4KCShIYXNfRGVmYXVsdF9Jbml0X0NvbXBzKTogSW1wcm92ZSBpbXBsZW1lbnRhdGlvbiB0byByZWN1cnNpdmVseSBjaGVjawoJYWxsIHRoZSBwcmVzZW50IGV4cHJlc3Npb25zLgoKCSogZXhwX2NoMy5hZHMsIGV4cF9jaDMuYWRiIChCdWlsZF9Jbml0aWFsaXphdGlvbl9DYWxsKTogQWRkIG5ldyBmb3JtYWwKCXRvIGluZGljYXRlIHRoYXQgdGhlIGluaXRpYWxpemF0aW9uIGNhbGwgY29ycmVzcG9uZHMgdG8gYQoJZGVmYXVsdC1pbml0aWFsaXplZCBjb21wb25lbnQgb2YgYW4gYWdncmVnYXRlLgoJSW4gY2FzZSBvZiBkZWZhdWx0IGluaXRpYWxpemVkIGFnZ3JlZ2F0ZSB3aXRoIHRhc2tzIHRoaXMgcGFyYW1ldGVyIGlzCgl1c2VkIHRvIGdlbmVyYXRlIGEgbnVsbCBzdHJpbmcgKHRoaXMgaXMganVzdCBhIHdvcmthcm91bmQgdGhhdCBtdXN0IGJlCglpbXByb3ZlZCBsYXRlcikuIEluIGNhc2Ugb2YgZGlzY3JpbWluYW50cywgdGhpcyBwYXJhbWV0ZXIgaXMgdXNlZCB0bwoJZ2VuZXJhdGUgYSBzZWxlY3RlZCBjb21wb25lbnQgbm9kZSB0aGF0IGdpdmVzIGFjY2VzcyB0byB0aGUgZGlzY3JpbWluYW50Cgl2YWx1ZS4KCgkqIGV4cF9jaDkuYWRzLCBleHBfY2g5LmFkYiAoQnVpbGRfVGFza19BbGxvY2F0ZV9CbG9ja19XaXRoX1N0bXRzKTogTmV3CglzdWJwcm9ncmFtLCBiYXNlZCBvbiBCdWlsZF9UYXNrX0FsbG9jYXRlX0Jsb2NrLCBidXQgYWRhcHRlZCB0byBleHBhbmQKCWFsbG9jYXRlZCBhZ2dyZWdhdGVzIHdpdGggZGVmYXVsdC1pbml0aWFsaXplZCBjb21wb25lbnRzLgoKCSogcGFyLWNoNC5hZGIgKFBfQWdncmVnYXRlX09yX1BhcmVuX0V4cHIpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UgaWYKCXRoZSBib3ggbm90YXRpb24gaXMgdXNlZCBpbiBwb3NpdGlvbmFsIGFnZ3JlZ2F0ZXMuCgoyMDAzLTEyLTA4ICBTYW11ZWwgVGFyZGlldSAgPHRhcmRpZXVAYWN0LWV1cm9wZS5mcj4KCgkqIGxpYi5hZHM6IEZpeCB0eXBvIGluIGNvbW1lbnQKCjIwMDMtMTItMDggIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogcHJqLmFkYiAoUHJvamVjdF9FbXB0eSk6IE5ldyBjb21wb25lbnQgVW5rZXB0X0NvbW1lbnRzCgkoU2Nhbik6IFJlbW92ZSBwcm9jZWR1cmU7IG1vdmVkIHRvIFByai5FcnIuCgoJKiBwcmouYWRzIChQcm9qZWN0X0RhdGEpOiBOZXcgQm9vbGVhbiBjb21wb25lbnQgVW5rZXB0X0NvbW1lbnRzCgkoU2Nhbik6IFJlbW92ZSBwcm9jZWR1cmU7IG1vdmVkIHRvIFByai5FcnIuCgoJKiBwcmotZGVjdC5hZGI6IE1hbmFnZSBjb21tZW50cyBmb3IgdGhlIGRpZmZlcmVudCBkZWNsYXJhdGlvbnMuCgoJKiBwcmotcGFydC5hZGIgKFdpdGhfUmVjb3JkKTogTmV3IGNvbXBvbmVudCBOb2RlCgkoUGFyc2UpOiBOZXcgQm9vbGVhbiBwYXJhbWV0ZXIgU3RvcmVfQ29tbWVudHMsIGRlZmF1bHRlZCB0byBGYWxzZS4KCVNldCB0aGUgc2Nhbm5lciB0byByZXR1cm4gZW5kcyBvZiBsaW5lIGFuZCBjb21tZW50cyBhcyB0b2tlbnMsIGlmCglTdG9yZV9Db21tZW50cyBpcyBUcnVlLgoJKFByZV9QYXJzZV9Db250ZXh0X0NsYXVzZSk6IENyZWF0ZSB0aGUgTl9XaXRoX0NsYXVzZSBub2RlcyBzbyB0aGF0Cgljb21tZW50cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZXNlIG5vZGVzLiBTdG9yZSB0aGUgbm9kZSBJRHMgaW4gdGhlCglXaXRoX1JlY29yZHMuCgkoUG9zdF9QYXJzZV9Db250ZXh0X0NsYXVzZSk6IFVzZSB0aGUgTl9XaXRoX0NsYXVzZSBub2RlcyBzdG9yZWQgaW4gdGhlCglXaXRoX1JlY29yZHMuCgkoUGFyc2VfU2luZ2xlX1Byb2plY3QpOiBDYWxsIFByZV9QYXJzZV9Db250ZXh0X0NsYXVzZSBiZWZvcmUgY3JlYXRpbmcKCXRoZSBOX1Byb2plY3Qgbm9kZS4gQ2FsbCBUcmVlLlNhdmUgYW5kIFRyZWUuUmVzZXQgYmVmb3JlIHNjYW5uaW5nIHRoZQoJY3VycmVudCBwcm9qZWN0LiBDYWxsIFRyZWUuUmVzdG9yZSBhZnRlcndhcmRzLiBTZXQgdGhlIHZhcmlvdXMgbm9kZXMKCWZvciBjb21tZW50IHN0b3JhZ2UgKE5leHRfRW5kLCBFbmRfT2ZfTGluZSwgUHJldmlvdXNfTGluZSwKCVByZXZpb3VzX0VuZCkuCgoJKiBwcmotcGFydC5hZHMgKFBhcnNlKTogTmV3IEJvb2xlYW4gcGFyYW1ldGVyIFN0b3JlX0NvbW1lbnRzLAoJZGVmYXVsdGVkIHRvIEZhbHNlLgoKCSogcHJqLXBwLmFkYiAoV3JpdGVfU3RyaW5nKTogTmV3IEJvb2xlYW4gcGFyYW1ldGVyIFRydW5jYXRlZCwgZGVmYXVsdGVkCgl0byBGYWxzZS4gV2hlbiBUcnVuY2F0ZWQgaXMgVHJ1ZSwgdHJ1bmNhdGUgdGhlIHN0cmluZywgbmV2ZXIgZ28gdG8gdGhlCgluZXh0IGxpbmUuCgkoV3JpdGVfRW5kX09mX0xpbmVfQ29tbWVudCk6IE5ldyBwcm9jZWR1cmUKCShQcmludCk6IFByb2Nlc3MgY29tbWVudHMgZm9yIG5vZGVzIE5fV2l0aF9DbGF1c2UsCglOX1BhY2thZ2VfRGVjbGFyYXRpb24sIE5fU3RyaW5nX1R5cGVfRGVjbGFyYXRpb24sCglOX0F0dHJpYnV0ZV9EZWNsYXJhdGlvbiwgTl9UeXBlZF9WYXJpYWJsZV9EZWNsYXJhdGlvbiwKCU5fVmFyaWFibGVfRGVjbGFyYXRpb24sIE5fQ2FzZV9Db25zdHJ1Y3Rpb24sIE5fQ2FzZV9JdGVtLgoJUHJvY2VzcyBub2RlcyBOX0NvbW1lbnQuCgoJKiBwcmotdHJlZS5hZHMsIHByai10cmVlLmFkYiAoRGVmYXVsdF9Qcm9qZWN0X05vZGUpOiBJZiBpdCBpcyBhIG5vZGUKCXdpdGhvdXQgY29tbWVudHMgYW5kIHRoZXJlIGFyZSBzb21lIGNvbW1lbnRzLCBzZXQgdGhlIGZsYWcKCVVua2VwdF9Db21tZW50cyB0byBUcnVlLgoJKFNjYW4pOiBJZiB0aGVyZSBhcmUgY29tbWVudHMsIHNldCB0aGUgZmxhZyBVbmtlcHRfQ29tbWVudHMgdG8gVHJ1ZSBhbmQKCWNsZWFyIHRoZSBjb21tZW50cy4KCShQcm9qZWN0X05vZGVfS2luZCk6IEFkZCBlbnVtIHZhbHVlcyBOX0NvbW1lbnRfWm9uZXMsIE5fQ29tbWVudAoJKE5leHRfRW5kX05vZGVzOiBOZXcgdGFibGUKCShDb21tZW50X1pvbmVzX09mKTogTmV3IGZ1bmN0aW9uCgkoU2Nhbik6IE5ldyBwcm9jZWR1cmU7IG1vdmVkIGZyb20gUHJqLiBBY2N1bXVsYXRlIGNvbW1lbnRzIGluIHRoZQoJQ29tbWVudHMgdGFibGUgYW5kIHNldCBlbmQgb2YgbGluZSBjb21tZW50cywgY29tbWVudHMgYWZ0ZXIsIGFmdGVyIGVuZAoJYW5kIGJlZm9yZSBlbmQuCgkoQWRkX0NvbW1lbnRzKTogTmV3IHByb2NlZHVyZQoJKFNhdmUsIFJlc3RvcmUsIFNlc2V0X1N0YXRlKTogTmV3IHByb2NlZHVyZXMKCShUaGVyZV9BcmVfVW5rZXB0X0NvbW1lbnRzKTogTmV3IGZ1bmN0aW9uCgkoU2V0X1ByZXZpb3VzX0xpbmVfTm9kZSwgU2V0X1ByZXZpb3VzX0VuZF9Ob2RlKTogTmV3IHByb2NlZHVyZXMKCShTZXRfRW5kX09mX0xpbmUsIFNldF9OZXh0X0VuZF9Ob2RlLCBSZW1vdmVfTmV4dF9FbmRfTm9kZSk6IE5ldwoJcHJvY2VkdXJlcy4KCShGaXJzdF9Db21tZW50X0FmdGVyLCBGaXJzdF9Db21tZW50X0FmdGVyX0VuZCk6IE5ldyBmdW5jdGlvbnMKCShGaXJzdF9Db21tZW50X0JlZm9yZSwgRmlyc3RfQ29tbWVudF9CZWZvcmVfRW5kKTogTmV3IGZ1bmN0aW9ucwoJKE5leHRfQ29tbWVudCk6IE5ldyBmdW5jdGlvbgoJKEVuZF9PZl9MaW5lX0NvbW1lbnQsIEZvbGxvd3NfRW1wdHlfTGluZSwKCUlzX0ZvbGxvd2VkX0J5X0VtcHR5X0xpbmUpOiBOZXcgZnVuY3Rpb25zCgkoU2V0X0ZpcnN0X0NvbW1lbnRfQWZ0ZXIsIFNldF9GaXJzdF9Db21tZW50X0FmdGVyX0VuZCk6IE5ldyBwcm9jZWR1cmVzCgkoU2V0X0ZpcnN0X0NvbW1lbnRfQmVmb3JlLCBTZXRfRmlyc3RfQ29tbWVudF9CZWZvcmVfRW5kKTogTmV3IHByb2NlZHVyZXMKCShTZXRfTmV4dF9Db21tZW50KTogTmV3IHByb2NlZHVyZQoJKERlZmF1bHRfUHJvamVjdF9Ob2RlKTogQXNzb2NpYXRlIGNvbW1lbnQgYmVmb3JlIGlmIHRoZSBub2RlIGNhbiBzdG9yZQoJY29tbWVudHMuCgoJKiBzY2Fucy5hZHMgKFRva2VuX1R5cGUpOiBOZXcgZW51bWVyYXRpb24gdmFsdWUgVG9rX0NvbW1lbnQKCShDb21tZW50X0lkKTogTmV3IGdsb2JhbCB2YXJpYWJsZQoKCSogc2NuZy5hZHMsIHNjbmcuYWRiIChDb21tZW50X0lzX1Rva2VuKTogTmV3IEJvb2xlYW4gZ2xvYmFsIHZhcmlhYmxlLAoJZGVmYXVsdGVkIHRvIEZhbHNlLgoJKFNjYW4pOiBTdG9yZSBwb3NpdGlvbiBvZiBzdGFydCBvZiBjb21tZW50LiBJZiBjb21tZW50cyBhcmUgdG9rZW5zLCBzZXQKCUNvbW1lbnRfSWQgYW5kIHNldCBUb2tlbiB0byBUb2tfQ29tbWVudCB3aGVuIHNjYW5uaW5nIGEgY29tbWVudC4KCShTZXRfQ29tbWVudF9Bc19Ub2tlbik6IE5ldyBwcm9jZWR1cmUKCgkqIHNpbnB1dC1wLmFkYjogVXBkYXRlIENvcHlyaWdodCBub3RpY2UKCShTb3VyY2VfRmlsZV9Jc19TdWJ1bml0KTogQ2FsbCBQcmouRXJyLlNjYW5uZXIuU2NhbiBpbnN0ZWFkIG9mIFByai5TY2FuCgl0aGF0IG5vIGxvbmdlciBleGlzdHMuCgoyMDAzLTEyLTA4ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBzZW1fYWdnci5hZGI6IEFkZCBkZXBlbmRlbmNlIG9uIEV4cF9Uc3MgcGFja2FnZQoJQ29ycmVjdCB0eXBvIGluIGNvbW1lbnQKCShSZXNvbHZlX0FnZ3JlZ2F0ZSk6IEluIGNhc2Ugb2YgYXJyYXkgYWdncmVnYXRlcyBzZXQgdGhlIGVzdGltYXRlZAoJdHlwZSBvZiB0aGUgYWdncmVnYXRlIGJlZm9yZSBjYWxsaW5nIHJlc29sdmUuIFRoaXMgaXMgbmVlZGVkIHRvIGtub3cKCXRoZSBuYW1lIG9mIHRoZSBjb3JyZXNwb25kaW5nIElQIGluIGNhc2Ugb2YgbGltaXRlZCBhcnJheSBhZ2dyZWdhdGVzLgoJKFJlc29sdmVfQXJyYXlfQWdncmVnYXRlKTogRGVsYXkgdGhlIHJlc29sdXRpb24gdG8gdGhlIGV4cGFuc2lvbiBwaGFzZQoJaW4gY2FzZSBvZiBkZWZhdWx0IGluaXRpYWxpemVkIGFycmF5IGNvbXBvbmVudHMuCgoJKiBzZW1fY2gxMi5hZGIgKEFuYWx5emVfRm9ybWFsX09iamVjdF9EZWNsYXJhdGlvbik6IEFsbG93IGxpbWl0ZWQKCXR5cGVzLiBSZXF1aXJlZCB0byBnaXZlIHN1cHBvcnQgdG8gbGltaXRlZCBhZ2dyZWdhdGVzIGluIGdlbmVyaWMKCWZvcm1hbHMuCgoyMDAzLTEyLTA4ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoQ2hlY2tfSW5pdGlhbGl6YXRpb24pOiBGb3IgbGVnYWxpdHkgcHVycG9zZXMsIGFuCglpbmxpbmVkIGJvZHkgZnVuY3Rpb25zIGxpa2UgYW4gaW5zdGFudGlhdGlvbi4KCShEZWNpbWFsX0ZpeGVkX1BvaW50X0RlY2xhcmF0aW9uKTogRG8gbm90IHNldCBraW5kIG9mIGZpcnN0IHN1YnR5cGUKCXVudGlsIGJvdW5kcyBhcmUgYW5hbHl6ZWQsIHRvIGRpYWdub3NlIHByZW1hdHVyZSB1c2Ugb2YgdHlwZS4KCgkqIHNlbV91dGlsLmFkYiAoV3JvbmdfVHlwZSk6IEltcHJvdmUgZXJyb3IgbWVzc2FnZSB3aGVuIHRoZSB0eXBlIG9mCgl0aGUgZXhwcmVzc2lvbiBpcyB1c2VkIHByZW1hdHVyZWx5LgoKMjAwMy0xMi0wOCAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwMy0xMi0wOCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBzaW5mby5oLCBlaW5mby5oLCBubWFrZS5hZHMsIG5tYWtlLmFkYiwgdHJlZXBycy5hZHM6IFJlbW92ZWQsIHNpbmNlCgl0aGV5IGFyZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBNYWtlLWxhbmcuaW4gYW5kIGNhdXNlIG5vdGhpbmcgYnV0CgltYWludGVuYW5jZSB0cm91Ymxlcy4KCjIwMDMtMTItMDUgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIDNzc29saW9wLmFkczogRml4IGNvbW1lbnQgKHRoaXMgaXMgdGhlIFNvbGFyaXMsIG5vdCB0aGUgVW5peFdhcmUsCgl2ZXJzaW9uIG9mIHRoaXMgdW5pdCkuCgoyMDAzLTEyLTA1ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJKiA1M29zaW50ZS5hZHMsIDU0b3NpbnRlLmFkcywgNTVvc2ludGUuYWRzLCA1Nm9zaW50ZS5hZHMsIDVib3NpbnRlLmFkcywKCTVjb3NpbnRlLmFkcywgNWhvc2ludGUuYWRzLCA1aW9zaW50ZS5hZHMsIDVsb3NpbnRlLmFkcywKCTV0b3NpbnRlLmFkczogRGVmaW5lIHRoZSBTQV9TSUdJTkZPIGNvbnN0YW50LCB0byBhbGxvdyByZWZlcmVuY2VzIGZyb20KCXRoZSBib2R5IG9mIFN5c3RlbS5JbnRlcnJ1cHRfTWFuYWdlbWVudCBjb21tb24gdG8gc2V2ZXJhbCB0YXJnZXRzLgoJVXBkYXRlIGNvcHlyaWdodCBub3RpY2Ugd2hlbiBhcHByb3ByaWF0ZS4KCgkqIDUyb3NpbnRlLmFkcywgNXBvc2ludGUuYWRzOiBEZWZpbmUgYSBkdW1teSB2YWx1ZSBmb3IgdGhlIFNBX1NJR0lORk8KCWNvbnN0YW50LgoKCSogN3NpbnRtYW4uYWRiIChlbGFib3JhdGlvbik6IFNldCBTQV9TSUdJTkZPIGluIHRoZSBzaWdhY3Rpb24gZmxhZ3MsCgl0byBlbnN1cmUgdGhhdCB0aGUga2VybmVsIGZpbGxzIGluIHRoZSBpbnRlcnJ1cHRlZCBjb250ZXh0IHN0cnVjdHVyZQoJYmVmb3JlIGNhbGxpbmcgYSBzaWduYWwgaGFuZGxlciwgd2hpY2ggaXMgbmVjZXNzYXJ5IHRvIGJlIGFibGUgdG8KCXVud2luZCBwYXN0IGl0LiBVcGRhdGUgdGhlIGNvcHlyaWdodCBub3RpY2UuCgoyMDAzLTEyLTA1ICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIGEtZWxjaGhhLmFkczogTmV3IGZpbGUuCgoJKiBhLWVsY2hoYS5hZGI6IE5ldyBkZWZhdWx0IGxhc3QgY2hhbmNlIGhhbmRsZXIuIENvbnRlbnRzIHRha2VuIGZyb20KCUFkYS5FeGNlcHRpb25zLkV4Y2VwdGlvbl9UcmFjZXMuVW5oYW5kbGVkX0V4Y2VwdGlvbl9UZXJtaW5hdGUuCgoJKiBhLWV4ZXh0ci5hZGIgKFVuaGFuZGxlZF9FeGNlcHRpb25fVGVybWluYXRlKTogTW9zdCBvZiB0aGlzIHJvdXRpbmUKCWlzIG1vdmVkIHRvIGEtZWxjaGhhLmFkYiB0byBwcm92aWRlIGEgdGFyZ2V0LWluZGVwZW5kZW50IGRlZmF1bHQgbGFzdAoJY2hhbmNlIGhhbmRsZXIuCgoJKiBNYWtlZmlsZS5ydGw6IEFkZCBhLWVsY2hoYS5vCgoJKiBNYWtlLWxhbmcuaW4gKEdOQVRfQURBX09CSlMsIEdOQVRCSU5EX09CSlMpOiBBZGQgYS1lbGNoaGEuby4KCjIwMDMtMTItMDUgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIGV4cF9jaDYuYWRiIChFeHBhbmRfQ2FsbCk6IElmIHRoZSBzdWJwcm9ncmFtIGlzIGlubGluZWQgYW5kIGlzCglkZWNsYXJlZCBpbiBhbiBpbnN0YW5jZSwgZG8gbm90IGlubGluZSB0aGUgY2FsbCBpZiB0aGUgaW5zdGFuY2UgaXMgbm90Cglmcm96ZW4geWV0LCB0byBwcmV2ZW50IG9yZGVyIG9mIGVsYWJvcmF0aW9uIHByb2JsZW1zLgoKCSogc2VtX3ByYWcuYWRiOiBBZGQgY29tbWVudHMgZm9yIHByZXZpb3VzIGZpeC4KCjIwMDMtMTItMDUgIFNhbXVlbCBUYXJkaWV1ICA8dGFyZGlldUBhY3QtZXVyb3BlLmZyPgoKCSogZy10YWJsZS5hZGI6IFVzZSB0aGUgcmlnaHQgdmFyaWFibGUgaW4gU2V0X0l0ZW0uCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCjIwMDMtMTItMDUgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuaW46IFJlbW92ZSB1bnVzZWQgcnVsZXMuCgoyMDAzLTEyLTA1ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHN3aXRjaC1jLmFkYiAoU2Nhbl9Gcm9udF9FbmRfU3dpdGNoZXMpOiBSZW1vdmUgcHJvY2Vzc2luZyBvZgoJLW5vc3RkbGliLiBOb3QgbmVlZGVkIGhlcmUgYWZ0ZXIgYWxsLgoKMjAwMy0xMi0wMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS8xMTcyNAoJKiBhZGFpbnQuaCwgYWRhaW50LmMsIGctb3NfbGliLmFkczoKCURvIG5vdCBhc3N1bWUgdGhhdCB0aGUgb2Zmc2V0IGFyZ3VtZW50IHRvIGxzZWVrKDIpIGlzIGEgMzIgYml0IGludGVnZXIsCglvbiBzb21lIHBsYXRmb3JtcyAoaW5jbHVkaW5nIEZyZWVCU0QpLCBpdCBpcyBhIDY0IGJpdCB2YWx1ZS4KCUludHJvZHVjZSBhIF9fZ25hdF9sc2VlayB3cmFwcGVyIGluIGFkYWludC5jIHRvIGFsbG93IGZvciBwb3J0YWJpbGl0eS4KCjIwMDMtMTItMDMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdHZzbi5hZHMgKExpYnJhcnlfVmVyc2lvbik6IE5vdyBjb250YWluIG9ubHkgdGhlIHJlbGV2YW50Cgl2ZXJzaW9uIGluZm8uCgkoVmVyYm9zZV9MaWJyYXJ5X1ZlcnNpb24pOiBOZXcgY29uc3RhbnQuCgoJKiBnLXNwaXBhdC5hZGIsIGctYXdrLmFkYiwgZy1kZWJwb28uYWRiLAoJZy1tZW1kdW0uYWRiLCBnLXRocmVhZC5hZGIsIHMtZ2V2ZW9wLmFkYiwgcy1pbnRlcnIuYWRiLAoJcy10YXNraW4uYWRiLCBzLXRhc3N0YS5hZGI6IE1ha2UgY29kZSBjb21waWxlIHdpdGggLWduYXR3YS4KCgkqIGduYXRsYnIuYWRiOiBDbGVhbiB1cDogcmVwbGFjZSBMaWJyYXJ5X1ZlcnNpb24gYnkKCVZlcmJvc2VfTGlicmFyeV9WZXJzaW9uLgoKCSogbWFrZS5hZGIsIGxpYi13cml0LmFkYiwgZXhwX2F0dHIuYWRiOgoJQ2xlYW4gdXA6IHJlcGxhY2UgTGlicmFyeV9WZXJzaW9uIGJ5IFZlcmJvc2VfTGlicmFyeV9WZXJzaW9uLgoKCSogNWxpbnRtYW4uYWRiOiBSZW1vdmVkLgoKCSogTWFrZWZpbGUuaW46CglVcGRhdGUgYW5kIHNpbXBsaWZ5IGNvbXB1dGF0aW9uIG9mIExJQlJBUllfVkVSU0lPTi4KCUZpeCBjb21wdXRhdGlvbiBvZiBHU01BVENIX1ZFUlNJT04uCgk1bGludG1hbi5hZGIgaXMgbm8gbG9uZ2VyIHVzZWQ6IHJlcGxhY2VkIGJ5IDdzaW50bWFuLmFkYi4KCjIwMDMtMTItMDMgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogZXhwX2NoNS5hZGI6CgkoUG9zc2libGVfQml0X0FsaWduZWRfQ29tcG9uZW50KTogTWF5YmVfQml0X0FsaWduZWRfTGFyZ2VfQ29tcG9uZW50IG5ldwoJbmFtZS4gTW9kaWZpZWQgdG8gY29uc2lkZXIgc21hbGwgbm9uLWJpdC1wYWNrZWQgYXJyYXlzIGFzIHRyb3VibGVzb21lCglhbmQgaW4gbmVlZCBvZiBjb21wb25lbnQtYnktY29tcG9uZW50IGFzc2lnbWVudCBleHBhbnNpb24uCgoyMDAzLTEyLTAzICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIGxhbmctc3BlY3MuaDogUHJvY2VzcyBub3N0ZGxpYiBhcyBub3N0ZGluYwoKCSogYmFja19lbmQuYWRiOiBVcGRhdGUgQ29weXJpZ2h0IG5vdGljZQoJKFNjYW5fQ29tcGlsZXJfQXJndW1lbnRzKTogUHJvY2VzcyAtbm9zdGRsaWIgZGlyZWN0bHkuCgoyMDAzLTEyLTAzICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjoKCVdoZW4gZGVmaW5pbmcgTElCR05BVF9UQVJHRVRfUEFJUlMgZm9yIGJhcmUgYm9hcmQgdGFyZ2V0cywgcmVtb3ZlIHRoZQoJcmVkdW5kYW50IGluY2x1c2lvbiBvZiBFWFRSQV9ISUVfTk9ORV9UQVJHRVRfUEFJUlMsIHdoaWNoIGlzIGFsd2F5cwoJaW5jbHVkZWQgaW4gSElFX05PTkVfVEFSR0VUX1BBSVJTLgoKMjAwMy0xMi0wMyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2F0dHIuYWRiOgoJKExlZ2FsX0Zvcm1hbF9BdHRyaWJ1dGUpOiBBdHRyaWJ1dGUgaXMgbGVnYWwgaW4gYW4gaW5saW5lZCBib2R5LCBhcyBpdAoJaXMgbGVnYWwgaW4gYW4gaW5zdGFuY2UsIGJlY2F1c2UgbGVnYWxpdHkgaXMgY2hlY2hlZCBpbiB0aGUgdGVtcGxhdGUuCgoJKiBzZW1fcHJhZy5hZGI6CgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgV2FybmluZ3MpOiBJbiBhbiBpbmxpbmVkIGJvZHksIHRoZSBwcmFnbWEgbWF5IGJlCglhcHBwbGllZCB0byBhbiB1bmNoZWNrZWQgY29udmVyc2lvbiBvZiBhIGZvcm1hbCBwYXJhbWV0ZXIuCgoJKiBzZW1fd2Fybi5hZGI6CgkoT3V0cHV0X1VucmVmZXJlbmNlZF9NZXNzYWdlcyk6IFN1cHByZXNzICJub3QgcmVhZCIgd2FybmluZ3Mgb24gaW1wb3J0ZWQKCXZhcmlhYmxlcy4KCjIwMDMtMTItMDMgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCgkqIHRiLWFsdm1zLmMgKHVud2luZF9yZWd1bGFyX2NvZGUsIHVud2luZF9rZXJuZWxfaGFuZGxlcik6IE5ldwoJcm91dGluZXMuIFRoZSBzZWNvbmQgb25lIGlzIG5ldyBmdW5jdGlvbmFsaXR5IHRvIGRlYWwgd2l0aCBiYWNrdHJhY2luZwoJdGhyb3VnaCBzaWduYWwgaGFuZGxlcnMuCgkodW53aW5kKTogU3BsaXQgaW50byB0aGUgdHdvIHNlcGFyYXRlIHN1YnJvdXRpbmVzIGFib3ZlLgoJVXBkYXRlIHRoZSBkb2N1bWVudGF0aW9uLCBhbmQgZGVhbCBwcm9wZXJseSB3aXRoIHNpemVvZiAoUkVHKSBkaWZmZXJlbnQKCWZyb20gc2l6ZW9mICh2b2lkKikuCgoyMDAzLTEyLTAxICBOaWNvbGFzIFNldHRvbiAgPHNldHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogYS1leGNlcHQuYWRiIChSYWlzZV9DdXJyZW50X0V4Y2VwKTogQWRkIGEgcHJhZ21hIEluc3BlY3Rpb25fUG9pbnQsCglzbyB0aGF0IHRoZSBkZWJ1Z2dlciBjYW4gcmVsaWFibHkgYWNjZXNzIHRoZSB2YWx1ZSBvZiB0aGUgcGFyYW1ldGVyLAoJYW5kIHRoZXJlZm9yZSBpcyBhYmxlIHRvIGRpc3BsYXkgdGhlIGV4Y2VwdGlvbiBuYW1lIHdoZW4gYW4gZXhjZXB0aW9uCglicmVha3BvaW50IGlzIHJlYWNoZWQuCgoyMDAzLTEyLTAxICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBmbWFwLmFkYjogRml4IHR5cG8gaW4gd2FybmluZyBtZXNzYWdlLgoKCSogZy1zb2NrZXQuYWRzLCBnLXNvY2tldC5hZGI6IE1ha2UgRnJlZSBhIHZpc2libGUgaW5zdGFuY2Ugb2YKCUFkYS5VbmNoZWNrZWRfRGVhbGxvY2F0aW9uIChubyBuZWVkIHRvIHdyYXAgaXQgaW4gYSBzdWJwcm9ncmFtKS4KCjIwMDMtMTItMDEgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWxpYi1wcmouYWRiIChCdWlsZF9MaWJyYXJ5LlByb2Nlc3MpOiBEbyBub3QgY2hlY2sgYSB3aXRoZWQgdW5pdCBpZgoJdGhlciBpcyBubyBBZmlsZS4KCShCdWlsZF9MaWJyYXJ5KTogR2V0IHRoZSBzd2l0Y2hlcyBvbmx5IGlmIERlZmF1bHRfU3dpdGNoZXMgaXMgZGVjbGFyZWQKCWluIHBhY2thZ2UgQmluZGVyLgoKMjAwMy0xMi0wMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogZXhwX2NoNi5hZGIgKEV4cGFuZF9BY3R1YWxzKTogV2hlbiBhcHBseWluZyB2YWxpZGl0eSBjaGVja3MgdG8KCWFjdHVhbHMgdGhhdCBhcmUgaW5kZXhlZCBjb21wb25lbnRzLCByZWFuYWx5emUgYWN0dWFsIHRvIGVuc3VyZSB0aGF0CglwYWNrZWQgYXJyYXkgcmVmZXJlbmNlcyBhcmUgcHJvcGVybHkgZXhwYW5kZWQuCgoJKiBzZW1fY2g1LmFkYiAoRGlhZ25vc2VfTm9uX1ZhcmlhYmxlX0xocyk6IEFkZCBzcGVjaWFsIGNhc2UgZm9yCglhdHRlbXB0ZWQgYXNzaWdubWVudCB0byBhIGRpc2NyaW1pbmFudC4KCjIwMDMtMTItMDEgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogcnRzZmluZC5hZGIsIGV4cF9jaDQuYWRiLCBzLWV4bmludC5hZHMsIHMtZXhuaW50LmFkYjogTWlub3IKCXJlZm9ybWF0dGluZy4KCgkqIHN3aXRjaC1jLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nIG9mIGNvbW1lbnRzCgoyMDAzLTEyLTAxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluOiBDbGVhbiB1cHMuCgoyMDAzLTEyLTAxICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDAzLTEyLTAxICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIDV3c3lzdGVtLmFkczogRGlzYWJsZSB6ZXJvIGNvc3QgZXhjZXB0aW9uLCBub3QgcmVhZHkgeWV0LgoKMjAwMy0xMS0yOSAgVWxyaWNoIFdlaWdhbmQgIDx1d2VpZ2FuZEBkZS5pYm0uY29tPgoKCSogTWFrZS1sYW5nLmluIChubWFrZS5hZHMpOiBBZGQgZGVwZW5kZW5jeSBvbiBhZGEvbm1ha2UuYWRiCgl0byBmb3JjZSBzZXJpYWxpemF0aW9uLgoKMjAwMy0xMS0yNiAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogZy1zb2NrZXQuYWRzLCBnLXNvY2tldC5hZGI6CglDbGFyaWZ5IGRvY3VtZW50YXRpb24gb2YgZnVuY3Rpb24gU3RyZWFtLiBJbnRyb2R1Y2UgYSBGcmVlIHByb2NlZHVyZQoJdG8gcmVsZWFzZSB0aGUgcmV0dXJuZWQgU3RyZWFtIG9uY2UgaXQgYmVjb21lcyB1bnVzZWQuCgoJKiA1YXN5c3RlbS5hZHM6IEZvciBBbHBoYSBUcnU2NCwgZW5hYmxlIFpDWCBieSBkZWZhdWx0LgoKMjAwMy0xMS0yNiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKENvbmRfVGltZWRfV2FpdCk6IEludHJvZHVjZSBuZXcgY29uc3RhbnQgVGltZV9PdXRfTWF4LAoJc2luY2UgTlQgNCBjYW5ub3QgaGFuZGxlIHRpbWVvdXQgdmFsdWVzIHRoYXQgYXJlIHRvbyBsYXJnZSwKCWUuZy4gRFdPUkQnTGFzdCAtIDEuCgoyMDAzLTExLTI2ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g0LmFkYjoKCShFeHBhbmRfTl9TbGljZSk6IFJlY29nbml6ZSBhbGwgY2FzZXMgb2Ygc2xpY2VzIHRoYXQgYXBwZWFyIGFzIGFjdHVhbHMKCWluIHByb2NlZHVyZSBjYWxscyBhbmQgd2hvc2UgZXhwYW5zaW9uIG11c3QgYmUgZGVmZXJyZWQuCgoJKiBleHBfY2g2LmFkYiAoQWRkX0NhbGxfQnlfQ29weV9Ob2RlKTogUmVtb3ZlIHByZXZpb3VzIGZpeC4gUHJvcGVyIGZpeAoJaXMgaW4gZXhwX2NoNC4KCgkqIHNlbV9jaDMuYWRiOgoJKEJ1aWxkX0Rlcml2ZWRfQXJyYXlfVHlwZSk6IENyZWF0ZSBvcGVyYXRvciBmb3IgdW5jb25zdHJhaW5lZCB0eXBlCglpZiBhbmNlc3RvciBpcyB1bmNvbnN0cmFpbmVkLgoKMjAwMy0xMS0yNiAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtYWtlLmFkYiAoUHJvamVjdF9PYmplY3RfRGlyZWN0b3J5KTogTmV3IGdsb2JhbCB2YXJpYWJsZQoJKENoYW5nZV9Ub19PYmplY3RfRGlyZWN0b3J5KTogTmV3IHByb2NlZHVyZQoJKENvbGxlY3RfQXJndW1lbnRzX0FuZF9Db21waWxlKTogQ2FsbCBDaGFuZ2VfVG9fT2JqZWN0X0RpcmVjdG9yeSBpbnN0ZWFkCglvZiBDaGFuZ2VfRGlyIGRpcmVjdGx5LiBEbyBub3QgY2hhbmdlIHdvcmtpbmcgZGlyZWN0b3J5IHRvIG9iamVjdAoJZGlyZWN0b3J5IG9mIG1haW4gcHJvamVjdCBhZnRlciBlYWNoIGNvbXBpbGF0aW9uLgoJKEduYXRtYWtlKTogVXNlIENoYW5nZV9Ub19PYmplY3RfRGlyZWN0b3J5IGluc3RlYWQgb2YgQ2hhbmdlX0RpcgoJZGlyZWN0bHkuCglDaGFuZ2UgdG8gb2JqZWN0IGRpcmVjdG9yeSBvZiBtYWluIHByb2plY3QgYmVmb3JlIGJpbmRpbmcgc3RlcC4KCShJbml0aWFsaXplKTogSW5pdGlhbGl6ZSBQcm9qZWN0X09iamVjdF9EaXJlY3RvcnkgdG8gTm9fUHJvamVjdAoKCSogbWxpYi1wcmouYWRiOgoJKEJ1aWxkX0xpYnJhcnkpOiBUYWtlIGludG8gYWNjb3VudCBCdWlsZGVyJ0RlZmF1bHRfU3dpdGNoZXMgKCJBZGEiKSB3aGVuCgliaW5kaW5nIGEgU3RhbmQtQWxvbmUgTGlicmFyeS4KCgkqIG91dHB1dC5hZGI6IFVwZGF0ZSBDb3B5cmlnaHQgbm90aWNlCgkoV3JpdGVfQ2hhcik6IE91dHB1dCBidWZmZXIgd2hlbiBmdWxsCgoyMDAzLTExLTI2ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEzLmFkYjogKENoZWNrX1NpemUpOiBSZXNldCBzaXplIGlmIHNpemUgaXMgdG9vIHNtYWxsCgoJKiBzZW1fY2gxMy5hZHM6CgkoQ2hlY2tfU2l6ZSk6IEZpeCBkb2N1bWVudGF0aW9uIHRvIGluY2x1ZGUgYml0LXBhY2tlZCBhcnJheSBjYXNlCgoJKiBzZW1fcmVzLmFkYjogSW1wbGVtZW50IHJlc3RyaWN0aW9uIE5vX0RpcmVjdF9Cb29sZWFuX09wZXJhdG9ycwoKCSogcy1yaWRlbnQuYWRzOiBQdXQgTm9fRGlyZWN0X0Jvb2xlYW5fT3BlcmF0b3JzIGluIHByb3BlciBvcmRlcgoKCSogcy1yaWRlbnQuYWRzOiBBZGQgbmV3IHJlc3RyaWN0aW9uIE5vX0RpcmVjdF9Cb29sZWFuX09wZXJhdG9ycwoKMjAwMy0xMS0yNCAgQXJuYXVkIENoYXJsZXQgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCglQUiBhZGEvMTMxNDIKCSogdXRpbHMuYyAoaW5pdF9naWdpX2RlY2xzKTogQ2hhbmdlIG5hbWUgb2YgYnVpbHQtaW4gc2V0am1wIHRvCglfX2J1aWx0aW5fc2V0am1wLCBzaW5jZSB0aGlzIGlzIGFwcGFyZW50bHkgbmVlZGVkIGJ5IHJlY2VudAoJbm9uIEFkYSBjaGFuZ2VzLgoKMjAwMy0xMS0yNCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBhZGFkZWNvZGUuYzogT25seSBpbmNsdWRlIGN0eXBlLmggaWYgbm90IElOX0dDQy4KCShfX2duYXRfZGVjb2RlKTogVXNlIElTRElHSVQgZnJvbSBzYWZlLWN0eXBlLmguCgoyMDAzLTExLTI0ICBKb3NlIFJ1aXogIDxydWl6QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjoKCVVzZSA1emludG1hbi5hZHMgZm9yIFZ4V29ya3MgdGFyZ2V0cy4gVGhpcyBmaWxlIGF2b2lkIGNvbmZ1c2lvbiBiZXR3ZWVuCglzaWduYWxzIGFuZCBpbnRlcnJ1cHRzLgoKCSogNXppbnRtYW4uYWRzOiBOZXcgRmlsZS4KCgkqIDV6aW50bWFuLmFkYjogUmVwbGFjZSBFeGNlcHRpb25fSW50ZXJydXB0cyBieSBFeGNlcHRpb25fU2lnbmFscywgYW5kCglhZGQgZXhjZXB0aW9uIHNpZ25hbHMgdG8gdGhlIHNldCBvZiB1bm1hc2tlZCBzaWduYWxzLgoKCSogNXp0YXByb3AuYWRiOgoJVXNlIEFib3J0X1Rhc2tfU2lnbmFsIGluc3RlYWQgb2YgQWJvcnRfVGFza19JbnRlcnJ1cHQgdG8gYXZvaWQgY29uZnVzaW9uCgliZXR3ZWVuIHNpZ25hbHMgYW5kIGludGVycnVwdHMuCglBZGQgdG8gVW5ibG9ja2VkX1NpZ25hbF9NYXNrIHRoZSBzZXQgb2Ygc2lnbmFscyB0aGF0IGFyZSBpbgoJS2VlcF9Vbm1hc2tlZC4KCgkqIDdzaW5tYW9wLmFkYjoKCUFkZGluZyBhIGNoZWNrIHRvIHNlZSB3aGV0aGVyIHRoZSBJbnRlcnJ1cHRfSUQgd2Ugd2FudCB0byB1bm1hc2sgaXMgaW4KCXRoZSByYW5nZSBvZiBLZWVwX1VubWFza2VkIChpbiBwcm9jZWR1cmUgSW50ZXJydXB0X1NlbGZfUHJvY2VzcykuIFRoZQoJcmVhc29uIGlzIHRoYXQgdGhlIGluZGV4IHR5cGUgb2YgdGhlIEtlZXBfVW5tYXNrZWQgYXJyYXkgaXMgbm90IGFsd2F5cwoJSW50ZXJydXB0X0lEOyBpdCBtYXkgYmUgYSBzdWJ0eXBlIG9mIEludGVycnVwdF9JRC4KCjIwMDMtMTEtMjQgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BnbmF0LmNvbT4KCgkqIGV4cF91dGlsLmFkYjoKCShSZW1vdmVfU2lkZV9FZmZlY3RzKTogQ29uZGl0aW9uIGNvbnN0YW50bmVzcyBvZiBvYmplY3QgY3JlYXRlZCBmb3IgYQoJIGFuIHVuY2hlY2tlZCB0eXBlIGNvbnZlcnNpb24gb24gdGhlIGNvbnN0YW50bmVzcyBvZiB0aGUgZXhwcmVzc2lvbgoJIHRvIGVuc3VyZSB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgJ0NvbnN0cmFpbmVkIHdoZW4gcGFzc2luZyBjb21wb25lbnRzCgkgb2Ygdmlldy1jb252ZXJ0ZWQgY2xhc3Mtd2lkZSBvYmplY3RzLgoKMjAwMy0xMS0yNCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBwYXItbG9hZC5hZGIgKExvYWQpOiBJbXByb3ZlIGhhbmRsaW5nIG9mIG1pc3NwZWxsZWQgYW5kIG1pc3NpbmcgdW5pdHMKCVJlbW92ZXMgc2V2ZXJhbCBjYXNlcyBvZiBjb21waWxhdGlvbiBhYmFuZG9uZWQgbWVzc2FnZXMKCgkqIGxpYi5hZGI6IChSZW1vdmVfVW5pdCk6IE5ldyBwcm9jZWR1cmUKCgkqIGxpYi5hZHM6IChSZW1vdmVfVW5pdCk6IE5ldyBwcm9jZWR1cmUKCgkqIGxpYi1sb2FkLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAzLTExLTI0ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1ha2UuYWRiOgoJKEduYXRtYWtlLCBJbml0aWFsaXplKTogQ2FsbCBVc2FnZSBpbnN0ZWFkIG9mIE1ha2V1c2cgZGlyZWN0bHkKCShNYXJraW5nX0xhYmVsKTogTGFiZWwgdG8gbWFyayBwcm9jZXNzZWQgc291cmNlIGZpbGVzLiBJbmNyZW1lbnRlZCBmb3IKCWVhY2ggZXhlY3V0YWJsZS4KCShHbmF0bWFrZSk6IEluY3JlYXNlIE1hcmtpbmdfTGFiZXQgZm9yIGVhY2ggZXhlY3V0YWJsZQoJKElzX01hcmtlZCk6IENvbXBhcmUgYWdhaW5zdCBtYXJraW5nIGxhYmVsCgkoTWFyayk6IE1hcmsgd2l0aCBtYXJraW5nIGxhYmVsCgoyMDAzLTExLTI0ICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIHMtdGhyZWFkLmFkczoKCU1vdmUgdGhlIGRlY2xhcmF0aW9uIG9mIHRoZSBUU0QgZm9yIFN5c3RlbS5UaHJlYWRzIHRvIFN5c3RlbS5Tb2Z0X0xpbmtzLgoJQWRkIHNvbWUgY29tbWVudHMuCgoJKiBNYWtlZmlsZS5pbjogQWRkZWQgdGFyZ2V0IHBhaXIgZm9yIHMtdGhyZWFkLmFkYiBmb3IgY2VydCBydW50aW1lLgoJKHJ0cy1jZXJ0KTogYnVpbGQgYSBzaW5nbGUgcmVsb2NhdGFibGUgb2JqZWN0IGZvciB0aGUgcnVuLXRpbWUgbGliLgoJRml4IHBlcm1zLgoKMjAwMy0xMS0yNCAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZS1sYW5nLmluOgoJVXNlIGduYXRscyByYXRoZXIgdGhhbiBnY2MgdG8gb2J0YWluIHRoZSBsb2NhdGlvbiBvZiBHTkFUIFJUTCBmb3IKCWNyb3NzdG9vbHMgYnVpbGQuCgoyMDAzLTExLTI0ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogb3B0LmFkYiAoVHJlZV9Xcml0ZSk6IEduYXRfVmVyc2lvbl9TdHJpbmcgaXMgbm93IGEgZnVuY3Rpb24sIHNvIHdlCgljYW4gbm90IHVzZSBpdCBhcyBiZWZvcmUgKHRoYXQgaXMsIGFzIGEgdmFyaWFibGUpIHdoZW4gZHVtcGluZyBpdCBpbnRvCgl0aGUgdHJlZSBmaWxlLiBBZGQgYSBsb2NhbCB2YXJpYWJsZSB0byBzdG9yZSB0aGUgcmVzdWx0IG9mIHRoaXMKCWZ1bmN0aW9uIGFuZCB0byBiZSB1c2VkIGFzIHRoZSBzdHJpbmcgdG8gYmUgd3JpdHRlbiBpbnRvIHRoZSB0cmVlLgoKCSogc2NuLmFkYiAoSW5pdGlhbGl6ZV9TY2FubmVyKTogQWRkIGNvbW1lbnRzIGV4cGxhaW5pbmcgdGhlIHJlY2VudAoJY2hhbmdlcy4KCgkqIHNpbnB1dC5hZGIgKFNvdXJjZV9GaXJzdCwgU291cmNlX0xhc3QpOiBJbiBjYXNlIG9mCglJbnRlcm5hbF9Tb3VyY2VfRmlsZSwgcmVwbGFjZSByZXR1cm5pbmcgYXR0cmlidXRlcyBvZgoJSW50ZXJuYWxfU291cmNlX1B0ciAod2hpY2ggaXMgd3JvbmcpIHdpdGggcmV0dXJuaW5nIGF0dHJpYnV0ZXMgb2YKCUludGVybmFsX1NvdXJjZS4KCjIwMDMtMTEtMjQgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiOgoJKE5ld19Db25jYXRlbmF0aW9uX09wKTogUHJvcGVyIG5hbWUgZm9yIE5ld19CaW5hcnlfT3BlcmF0b3IsIG9ubHkKCXVzZWQgZm9yIGltcGxpY2l0IGNvbmNhdGVuYXRpb24gb3BlcmF0b3JzLgoJQ29kZSBjbGVhbnVwLgoKCSogc2VtX2VsYWIuYWRiOgoJKENoZWNrX0VsYWJfQ2FsbCk6IFNldCBOb19FbGFib3JhdGlvbl9DaGVjayBhcHByb3ByaWF0ZWx5IG9uIGNhbGxzIGluCgl0YXNrIGJvZGllcyB0aGF0IGFyZSBpbiB0aGUgc2NvcGUgb2YgYSBTdXBwcmVzcyBwcmFnbWEuCgkoQ2hlY2tfQSBDYWxsKTogVXNlIHRoZSBmbGFnIHRvIHByZXZlbnQgc3B1cmlvdXMgZWxhYm9yYXRpb24gY2hlY2tzLgoKCSogc2luZm8uYWRzLCBzaW5mby5hZGI6CglOZXcgZmxhZyBOb19FbGFib3JhdGlvbl9DaGVjayBvbiBmdW5jdGlvbi9wcm9jZWR1cmUgY2FsbHMsIHRvIHByb3Blcmx5CglzdXBwcmVzcyBjaGVja3Mgb24gY2FsbHMgaW4gdGFzayBib2RpZXMgdGhhdCBhcmUgd2l0aGluIGEgbG9jYWwgc3VwcHJlc3MKCXByYWdtYS4KCgkqIGV4cF9jaDQuYWRiOgoJKEV4cGFuZF9Db25jYXRlbmF0ZV9PdGhlcik6IFVzZSB0aGUgcHJvcGVyIGludGVnZXIgdHlwZSBmb3IgdGhlCglleHByZXNzaW9uIGZvciB0aGUgdXBwZXIgYm91bmQsIHRvIGF2b2lkIHVuaXZlcnNhbF9pbnRlZ2VyIGNvbXB1dGF0aW9ucwoJd2hlbiBwb3NzaWJsZS4KCjIwMDMtMTEtMjEgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiAuY3ZzaWdub3JlOiBEZWxldGUuCgoyMDAzLTExLTIxICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogNTVzeXN0ZW0uYWRzOiBTZXQgWkNYX0J5X0RlZmF1bHQgYW5kIEdDQ19aQ1hfU3VwcG9ydCB0byBUcnVlLgoKMjAwMy0xMS0yMSAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhY3QtZXVyb3BlLmZyPgoKCSogNXdzeXN0ZW0uYWRzOiBFbmFibGUgemVybyBjb3N0IGV4Y2VwdGlvbi4KCjIwMDMtMTEtMjEgIEplcm9tZSBHdWl0dG9uICA8Z3VpdHRvbkBhY3QtZXVyb3BlLmZyPgoKCSogNXp0aWl0aG8uYWRiOiBSZW1vdmUgYW4gdW5yZWZlcmVuY2VkIHZhcmlhYmxlLgoKMjAwMy0xMS0yMSAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCSogYWRhaW50LmM6IEZvciBGcmVlQlNELCB1c2UgbWtzdGVtcC4KCjIwMDMtMTEtMjEgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdGxici5hZGI6IE5vdyByZWZlcmVuY2UgR25hdF9TdGF0aWNfVmVyc2lvbl9TdHJpbmcuCgoyMDAzLTExLTIxICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGJsZC5hZGI6IFJlbW92ZSB1c2VsZXNzIFVTRSBvZiBnbmF0dnNuCgoJKiBnbmF0Y2hvcC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoJQ2xlYW4gdXAgdmVyc2lvbiBoYW5kbGluZyB0byBiZSBtb3JlIGNvbnNpc3RlbnQKCgkqIGduYXR4cmVmLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBncHJjbWQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCUZpeCBvdXRwdXQgb2YgY29weXJpZ2h0IHRvIGJlIG1vcmUgY29uc2lzdGVudCB3aXRoIG90aGVyIHRvb2xzCgoyMDAzLTExLTIxICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1ha2UuYWRiIChTY2FuX01ha2VfQXJncyk6IERvIG5vdCB0cmFuc21pdCAtLVJUUz0gdG8gZ25hdGxpbmsKCjIwMDMtMTEtMjEgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBhdHJlZS5hZGIgKEluaXRpYWxpemUpOiBBZGQgaW5pdGlhbGl6YXRpb25zIGZvciBnbG9iYWwgdmFyaWFibGVzCgl1c2VkIGluIE5ld19Db3B5X1RyZWUuCgoJKiBjc3RhbmQuYWRiIChDcmVhdGVfU3RhbmRhcmQpOiBBZGQgY2FsbCB0byBJbml0aWFsaXplX1NjYW5uZXIgKHdpdGgKCUludGVybmFsX1NvdXJjZV9GaWxlIGFzIHRoZSBhY3R1YWwpLgoJUHV0IHRoZSBzZXQgb2Ygc3RhdGVtZW50cyBjcmVhdGluZyBBbnlfQ2hhcmFjdGVyIGJlZm9yZSB0aGUgc2V0IG9mCglzdGF0ZW1lbnRzIGNyZWF0aW5nIEFueV9BcnJheSB0byBoYXZlIEFueV9DaGFyYWN0ZXIgZnVsbHkgaW5pdGlhbGl6ZWQKCXdoZW4gaXQgaXMgdXNlZCBpbiBjcmVhdGluZyBBbnlfQXJyYXkuCgoJKiBzY24uYWRiIChJbml0aWFsaXplX1NjYW5uZXIpOiBEbyBub3Qgc2V0IENvbWVzX0Zyb21fU291cmNlIE9OIGFuZCBkbwoJbm90IGNhbGwgU2NhbiBpbiBjYXNlIGlmIHRoZSBhY3R1YWwgaXMgSW50ZXJuYWxfU291cmNlX0ZpbGUKCUFkZCAyMDAzIHRvIGNvcHlyaWdodCBub3RlLgoKCSogc2lucHV0LmFkYiAoU291cmNlX0ZpcnN0LCBTb3VyY2VfTGFzdCwgU291cmNlX1RleHQpOiBBZGQgY29kZSBmb3IKCXByb2Nlc3NpbmcgSW50ZXJuYWxfU291cmNlX0ZpbGUuCgoJKiB0eXBlcy5hZHM6IEFkZCB0aGUgY29uc3RhbnQgSW50ZXJuYWxfU291cmNlX0ZpbGUgcmVwcmVzZW50aW5nIHRoZQoJc291cmNlIGJ1ZmZlciBmb3IgYXJ0aWZpY2lhbCBzb3VyY2UtY29kZS1saWtlIHN0cmluZ3MgY3JlYXRlZCB3aXRoaW4KCXRoZSBjb21waWxlciAodGhlIGRlZmluaXRpb24gb2YgU291cmNlX0ZpbGVfSW5kZXggaXMgY2hhbmdlZCkuCgoyMDAzLTExLTIwICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIDM1c29jY29uLmFkcywgNDVpbnRuYW0uYWRzLCA1NW9zaW50ZS5hZGIsIDU1b3NpbnRlLmFkcywKCTU2c3lzdGVtLmFkczogTmV3IGZpbGUsIEZyZWVCU0QgdmVyc2lvbi4KCjIwMDMtMTEtMjAgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogTWFrZS1sYW5nLmluIChhZGEuZXh0cmFjbGVhbik6IERlbGV0ZS4KCjIwMDMtMTEtMTkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdG1lbS5hZGI6IENsZWFuIHVwIHZlcmJvc2Ugb3V0cHV0LgoKCSogZ3ByY21kLmFkYjogQ2hhbmdlIGNvcHlyaWdodCB0byBGU0YuCgoyMDAzLTExLTE5ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIHN5bWJvbHMuYWRiOiAoSW5pdGlhbGl6ZSk6IE5ldyBwYXJhbWV0ZXJzIFJlZmVyZW5jZSwgU3ltYm9sX1BvbGljeQoJYW5kIFZlcnNpb24gKGlnbm9yZWQpLgoKCSogc3ltYm9scy5hZHM6IChQb2xpY3kpOiBOZXcgdHlwZQoJKEluaXRpYWxpemUpOiBOZXcgcGFyYW1ldGVyIFJlZmVyZW5jZSwgU3ltYm9sX1BvbGljeSBhbmQKCUxpYnJhcnlfVmVyc2lvbi4KCVJlbW92ZSBwYXJhbWV0ZXIgRm9yY2UuCglNaW5vciByZWZvcm1hdHRpbmcuCgoJKiBzbmFtZXMuYWRzLCBzbmFtZXMuYWRiYWRiOiBOZXcgc3RhbmRhcmQgbmFtZXMKCUxpYnJhcnlfUmVmZXJlbmNlX1N5bWJvbF9GaWxlIGFuZCBMaWJyYXJ5X1N5bWJvbF9Qb2xpY3kKCgkqIG1saWItcHJqLmFkYjoKCShCdWlsZF9MaWJyYXJ5KTogQ2FsbCBCdWlsZF9EaW5hbWljX0xpYnJhcnkgd2l0aCB0aGUgU3ltYm9sX0RhdGEgb2YgdGhlCglwcm9qZWN0LgoKCSogbWxpYi10Z3QuYWRiOgoJKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IE5ldyBwYXJhbWV0ZXIgU3ltYm9sX0RhdGEgKGlnbm9yZWQpCgoJKiBtbGliLXRndC5hZHM6IChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBOZXcgcGFyYW1ldGVyIFN5bWJvbF9EYXRhCgoJKiBwcmouYWRiOiAoUHJvamVjdF9FbXB0eSk6IE5ldyBjb21wb25lbnQgU3ltYm9sX0RhdGEKCgkqIHByai5hZHM6IChQb2xpY3ksIFN5bWJvbF9SZWNvcmQpOiBOZXcgdHlwZXMKCShQcm9qZWN0X0RhdGEpOiBOZXcgY29tcG9uZW50IFN5bWJvbF9EYXRhCgoJKiBwcmotYXR0ci5hZGI6CglOZXcgYXR0cmlidXRlcyBMaWJyYXJ5X1N5bWJvbF9GaWxlLCBMaWJyYXJ5X1N5bWJvbF9Qb2xpY3kgYW5kCglMaWJyYXJ5X1JlZmVyZW5jZV9TeW1ib2xfRmlsZS4KCgkqIHByai1ubXNjLmFkYjoKCShBZGFfQ2hlY2spOiBXaGVuIHByb2plY3QgaXMgYSBTdGFuZC1BbG9uZSBsaWJyYXJ5IHByb2plY3QsIHByb2Nlc3MKCWF0dHJpYnV0ZSBMaWJyYXJ5X1N5bWJvbF9GaWxlLCBMaWJyYXJ5X1N5bWJvbF9Qb2xpY3kgYW5kCglMaWJyYXJ5X1JlZmVyZW5jZV9TeW1ib2xfRmlsZS4KCgkqIDVhbWwtdGd0LmFkYiwgNWJtbC10Z3QuYWRiLCA1Z21sLXRndC5hZGIsIDVobWwtdGd0LmFkYiwKCTV3bWwtdGd0LmFkYiwgNXptbC10Z3QuYWRiLCA1bG1sLXRndC5hZGIsCgk1c21sLXRndC5hZGIgKEJ1aWxkX0R5bmFtaWNfTGlicmFyeSk6IE5ldyBwYXJhbWV0ZXIKCVN5bWJvbF9EYXRhIChpZ25vcmVkKS4KCgkqIDV2bWwtdGd0LmFkYiAoVk1TX09wdGlvbnMpOiBSZW1vdmUgLS1mb3ItbGlua2VyPWdzbWF0Y2g9ZXF1YWwsMSwwCgkoQnVpbGRfRHluYW1pY19MaWJyYXJ5KTogTmV3IHBhcmFtZXRlciBTeW1ib2xfRGF0YS4gTmV3IGludGVybmFsCglmdW5jdGlvbnMgT3B0aW9uX0ZpbGVfTmFtZSBhbmQgVmVyc2lvbl9TdHJpbmcuIFNldCBuZXcgb3B0aW9ucyBvZgoJZ25hdHN5bSByZWxhdGVkIHRvIHN5bWJvbCBmaWxlLCBzeW1ib2wgcG9saWN5IGFuZCByZWZlcmVuY2Ugc3ltYm9sCglmaWxlLgoKCSogNXZzeW1ib2wuYWRiOgoJRXh0ZW5zaXZlIG1vZGlmaWNhdGlvbnMgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIHJlZmVyZW5jZSBzeW1ib2wgZmlsZSwKCXRoZSBzeW1ib2wgcG9saWN5LCB0aGUgbGlicmFyeSB2ZXJzaW9uIGFuZCB0byBwdXQgaW4gdGhlIHN5bWJvbCBmaWxlIHRoZQoJbWlub3IgYW5kIG1ham9yIElEcy4KCgkqIGJsZC5hZGIgKFByb2Nlc3NfRGVjbGFyYXRpdmVfSXRlbXMpOiBQdXQgc2Vjb25kIGFyZ3VtZW50IG9mCglncHJjbWQgdG9fYWJzb2x1dGUgYmV0d2VlbiBzaW5nbGUgcXVvdGVzLCB0byBhdm9pZCBwcm9ibGVtcyB3aXRoCglXaW5kb3dzLgoKCSogYmxkLWlvLmFkYjogVXBkYXRlIENvcHlyaWdodCBub3RpY2UuCgkoRmx1c2gpOiBSZW1vdmUgbGFzdCBjaGFyYWN0ZXIgb2YgYSBsaW5lLCBpZiBpdCBpcyBhIGJhY2sgc2xhc2gsIHRvCglhdm9pZCBtYWtlIHByb2JsZW1zLgoKCSogZ25hdHN5bS5hZGI6CglJbXBsZW1lbnQgbmV3IHNjaGVtZSB3aXRoIHJlZmVyZW5jZSBzeW1ib2wgZmlsZSBhbmQgc3ltYm9sIHBvbGljeS4KCgkqIGctb3NfbGliLmFkczogKElzX0RpcmVjdG9yeSk6IENsYXJpZnkgY29tbWVudAoKMjAwMy0xMS0xOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBhdHJlZS5hZGI6IE1vdmUgTmV3X0NvcHlfVHJlZSBnbG9iYWwgdmFyaWFibGVzIHRvIGhlYWQgb2YgcGFja2FnZQoKCSogZXJyb3V0LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAzLTExLTE5ICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBzZW1fY2g0LmFkYjogKERpYWdub3NlX0NhbGwpOiBJbXByb3ZlIGVycm9yIG1lc3NhZ2UuCglBZGQgcmVmZXJlbmNlIHRvIEFkYTBZIChBSS01MDIxNykKCgkqIHNlbV9jaDYuYWRiLCBzZW1fY2g4LmFkYiwgc2VtX3R5cGUuYWRiLAoJc2VtX3V0aWwuYWRiOiBBZGQgcmVmZXJlbmNlIHRvIEFJLTUwMjE3CgoJKiBzaW5mby5hZHM6IChOX1dpdGhfQ2xhdXNlKTogRG9jdW1lbnQgZmllbGRzIHJlZmVycmVkIHRvIEFJLTUwMjE3CgoJKiBzcHJpbnQuYWRiOiBBZGQgcmVmZXJlbmNlIHRvIEFkYTBZIChBSS01MDIxNywgQUktMjg3KQoKCSogc2VtX2FnZ3IuYWRiOiBDb21wbGV0ZSBkb2N1bWVudGF0aW9uIG9mIEFJLTI4NyBjaGFuZ2VzCgoJKiBwYXItY2g0LmFkYjogRG9jdW1lbnQgcHJldmlvdXMgY2hhbmdlcy4KCgkqIGxpYi1sb2FkLmFkYiwgbGliLXdyaXQuYWRiLCBlaW5mby5hZHMsIHBhci1jaDEwLmFkYiwKCXNlbV9jYXQuYWRiLCBzZW1fY2gzLmFkYiwgc2VtX2NoMTAuYWRiLCBzZW1fY2gxMi5hZGI6IEFkZCByZWZlcmVuY2VzIHRvCglBZGEwWSAoQUktNTAyMTcpCgoJKiBleHBfYWdnci5hZGI6IEFkZCByZWZlcmVuY2VzIHRvIEFJLTI4NyBpbiBwcmV2aW91cyBjaGFuZ2VzCgoyMDAzLTExLTE5ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYjoKCShBZGRfQ2FsbF9CeV9Db3B5X05vZGUpOiBEbyBub3Qgb3JpZ2luYWwgbm9kZSBvZiByZXdyaXR0ZW4gZXhwcmVzc2lvbgoJaW4gdGhlIHJld3JpdGluZyBpcyB0aGUgcmVzdWx0IG9mIGFuIGlubGluZWQgY2FsbC4KCgkqIGV4cF9jaDYuYWRiIChBZGRfQ2FsbF9CeV9Db3B5X05vZGUpOiBJZiBhY3R1YWwgZm9yIChpbi0pb3V0CglwYXJhbWV0ZXIgaXMgYSB0eXBlIGNvbnZlcnNpb24sIHVzZSBvcmlnaW5hbCBub2RlIHRvIGNvbnN0cnVjdCB0aGUKCXBvc3QtY2FsbCBhc3NpZ25tZW50LCBiZWNhdXNlIGV4cHJlc3Npb24gbWF5IGhhdmUgYmVlbiByZXdyaXR0ZW4sIGUuZy4KCWlmIGl0IGlzIGEgcGFja2VkIGFycmF5LgoKCSogc2VtX2F0dHIuYWRiOgoJKFJlc29sdmVfQXR0cmlidXRlLCBjYXNlICdDb25zdHJhaW5lZCk6IEF0dHJpYnV0ZSBpcyBsZWdhbCBpbiBhbiBpbmxpbmVkCglib2R5LCBqdXN0IGFzIGl0IGlzIGluIGFuIGluc3RhbmNlLgoJQ2F0ZWdvcml6YXRpb24gcm91dGluZXMKCgkqIHNlbV9jaDEyLmFkYiAoQW5hbHl6ZV9Bc3NvY2lhdGlvbiwgSW5zdGFudGlhdGVfRm9ybWFsX1N1YnByb2dyYW0sCglJbnN0YW50aWF0ZV9PYmplY3QpOiBTZXQgcHJvcGVyIHNsb2MgcmVmZXJlbmNlIGZvciBtZXNzYWdlIG9uIG1pc3NpbmcKCWFjdHVhbC4KCjIwMDMtMTEtMTkgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluOiBBZGQgRnJlZUJTRCBsaWJnbmF0IHBhaXJzLgoKCSogdXNhZ2UuYWRiOiBGaXggdHlwbyBpbiB1c2FnZSBtZXNzYWdlLgoKMjAwMy0xMS0xOSAgSmVyb21lIEd1aXR0b24gIDxndWl0dG9uQGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5pbjogT24gcG93ZXJwYy13cnMtdnh3b3Jrc2FlOiBBZGQgcy10aHJlYWQuYWQ/LAoJcy10aHJpbmkuYWQ/IGFuZCBzLXRpaXRoby5hZGIgdG8gdGhlIGZ1bGwgcnVudGltZSwgdG8gc3VwcG9ydCB0aGUKCXByYWdtYSBUaHJlYWRfQm9keS4KCVJlbW92ZSBpLXZ0aHJlYS5hZD8gYW5kIHMtdHBhZTY1LmFkPywgbm90IG5lZWRlZCBhbnltb3JlLgoKCSogcy10aHJlYWQuYWRiOiBUaGlzIGZpbGUgaXMgbm93IGEgZHVtbXkgaW1wbGVtZW50YXRpb24gb2YKCVN5c3RlbS5UaHJlYWQuCgoyMDAzLTExLTE5ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogcnRzZmluZC5hZGIgKEluaXRpYWxpemUpOiBBZGQgaW5pdGlhbGl6YXRpb24gZm9yIFJURV9Jc19BdmFpbGFibGUKCjIwMDMtMTEtMTkgIEVtbWFudWVsIEJyaW90ICA8YnJpb3RAYWN0LWV1cm9wZS5mcj4KCgkqIHhyZWZfbGliLmFkYiAoUGFyc2VfSWRlbnRpZmllcl9JbmZvKTogQWRkIGhhbmRsaW5nIG9mIGdlbmVyaWMKCWluc3RhbmNpYXRpb24gcmVmZXJlbmNlcyBpbiB0aGUgcGFyZW50IHR5cGUgZGVzY3JpcHRpb24uCgoyMDAzLTExLTE4ICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogYWRhLXRyZWUuZGVmOiAoQUxMT0NBVEVfRVhQUik6IENsYXNzIGlzICIyIiwgbm90ICJzIi4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfRmxvYXRpbmdfUG9pbnRfU3VidHlwZSk6IFNldAoJVFlQRV9QUkVDSVNJT04gZGlyZWN0bHkgZnJvbSBlc2l6ZS4KCjIwMDMtMTEtMTggIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIGNzdHJlYW1zLmM6CglVc2UgcmVhbHBhdGgoMykgb24gRnJlZUJTRC4gRml4IHR5cG8gaW4gY29tbWVudCB3aGlsZSB3ZSBhcmUgYXQgaXQuCgoJKiBpbml0LmM6IEluaXRpYWxpemF0aW9uIHJvdXRpbmVzIGZvciBGcmVlQlNECgoJKiBsaW5rLmM6IExpbmsgaW5mbyBmb3IgRnJlZUJTRAoKCSogc3lzZGVwLmM6IEFkZCB0aGUgY2FzZSBvZiBGcmVlQlNECgoyMDAzLTExLTE3ICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIDV6dGhyaW5pLmFkYjogUmVtb3ZlIHRoZSBjYWxsIHRvIEluaXRfUlRTIGF0IGVsYWJvcmF0aW9uLCBhcyBpdCBpcwoJYWxyZWFkeSBjYWxsZWQgaW4gU3lzdGVtLlRocmVhZHMuCgoJKiA1enRpaXRoby5hZGIgKEluaXRpYWxpemVfVGFza19Ib29rcyk6IFJlbW92ZSB0aGUgcmVnaXN0cmF0aW9uIG9mIHRoZQoJZW52aXJvbm1lbnQgdGFzaywgYXMgaXQgaGFzIGJlZW4gbW92ZWQgdG8gU3lzdGVtLlRocmVhZHMuSW5pdGlhbGl6YXRpb24uCgoyMDAzLTExLTE3ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGFkYWludC5jIChfX2duYXRsaWJfaW5zdGFsbF9sb2Nrcyk6IE9ubHkgcmVmZXJlbmNlCglfX2duYXRfaW5zdGFsbF9sb2NrcyBvbiBWTVMsIHNpbmNlIG90aGVyIHBsYXRmb3JtcyBjYW4gYXZvaWQgdXNpbmcKCS0tZW5hYmxlLXRocmVhZHM9Z25hdAoKMjAwMy0xMS0xNyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGFkYS10cmVlLmg6IChUWVBFX0lTX1BBQ0tFRF9BUlJBWV9UWVBFX1ApOiBOZXcgbWFjcm8uCgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX0FycmF5X1N1YnR5cGUpOiBTZXQKCVRZUEVfUEFDS0VEX0FSUkFZX1RZUEVfUC4KCSh2YWxpZGF0ZV9zaXplKTogRG8gbm90IHZlcmlmeSBzaXplIGlmIFRZUEVfSVNfUEFDS0VEX0FSUkFZX1RZUEVfUC4KCglQYXJ0IG9mIFBSIGFkYS8xMjgwNgoJKiB1dGlscy5jIChmbG9hdF90eXBlX2Zvcl9wcmVjaXNpb24pOiBSZW5hbWVkIGZyb20gZmxvYXRfdHlwZV9mb3Jfc2l6ZS4KCVVzZSBHRVRfTU9ERV9QUkVDSVNJT04gaW5zdGVhZCBvZiBHRVRfTU9ERV9CSVRTSVpFLgoKMjAwMy0xMS0xNyAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBnbmF0Y2hvcC5hZGIgKEVycm9yX01zZyk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBXYXJuaW5nLCBkZWZhdWx0ZWQKCXRvIEZhbHNlLgoJRG8gbm90IHNldCBleGl0IHN0YXR1cyB0byBGYWlsdXJlIHdoZW4gV2FybmluZyBpcyBUcnVlLgoJKEduYXRjaG9wKTogTWFrZSBlcnJvcnMgIm5vIGNvbXBpbGF0aW9uIHVuaXRzIGZvdW5kIiBhbmQKCSJubyBzb3VyY2UgZmlsZXMgd3JpdHRlbiIgd2FybmluZ3Mgb25seS4KCgkqIG1ha2UuYWRiIChHbmF0bWFrZSk6IFdoZW4gdXNpbmcgYSBwcm9qZWN0IGZpbGUsIHNldAoJTG9va19Jbl9QcmltYXJ5X0RpciB0byBGYWxzZS4KCShDb25maWd1cmF0aW9uX1ByYWdtYXNfU3dpdGNoKTogQ2hlY2sgZm9yIEdsb2JhbF9Db25maWd1cmF0aW9uX1ByYWdtYXMKCWFuZCBMb2NhbF9Db25maWd1cmF0aW9uX1ByYWdtYXMgaW4gdGhlIHByb2plY3Qgd2hlcmUgdGhleSBhcmUgZGVjbGFyZWQKCW5vdCBhbiBleHRlbmRpbmcgcHJvamVjdCB3aGljaCBtaWdodCBoYXZlIGluaGVyaXRlZCB0aGVtLgoKCSogb3NpbnQuYWRiIChMb2NhdGVfRmlsZSk6IElmIE5hbWUgaXMgYWxyZWFkeSBhbiBhYnNvbHV0ZSBwYXRoLCBkbyBub3QKCWxvb2sgZm9yIGEgZGlyZWN0b3J5LgoKCSogcGFyLWNoMTAuYWRiIChQX0NvbXBpbGF0aW9uX1VuaXQpOiBJZiBzb3VyY2UgY29udGFpbnMgbm8gdG9rZW4sIGFuZAoJLWduYXRzIChDaGVja19TeW50YXgpIGlzIHVzZWQsIGlzc3VlIG9ubHkgYSB3YXJuaW5nLCBub3QgYW4gZXJyb3IuCgoJKiBwcmouYWRiIChSZWdpc3Rlcl9EZWZhdWx0X05hbWluZ19TY2hlbWUpOiBBZGQgbmV3IGNvbXBvbmVudCBQcm9qZWN0CglpbiBvYmplY3RzIG9mIHR5cGUgVmFyaWFibGVfVmFsdWUuCgoJKiBwcmouYWRzOiAoVmFyaWFibGVfVmFsdWUpOiBOZXcgY29tcG9uZW50IFByb2plY3QKCgkqIHByai1ubXNjLmFkYiAoQWRhX0NoZWNrLldhcm5fSWZfTm90X1NvdXJjZXMpOiBObyB3YXJuaW5nIGlmIHNvdXJjZQoJaXMgaW4gYSBwcm9qZWN0IGV4dGVuZGVkIGJ5IFByb2plY3QuCgoJKiBwcmotcHJvYy5hZGIgKEFkZF9BdHRyaWJ1dGVzKTogTmV3IHBhcmFtZXRlciBQcm9qZWN0LiBTZXQgY29tcG9uZW50CglQcm9qZWN0IG9mIFZhcmlhYmxlX1ZhbHVlcyB0byB0aGlzIG5ldyBwYXJhbWV0ZXIgdmFsdWUuCgkoRXhwcmVzc2lvbik6IFNldCBjb21wb25lbnQgUHJvamVjdCBvZiBWYXJpYWJsZV9WYWx1ZXMuCgkoUHJvY2Vzc19EZWNsYXJhdGl2ZV9JdGVtcyk6IENhbGwgQWRkX0F0dHJpYnV0ZXMgd2l0aCBwYXJhbWV0ZXIgUHJvamVjdC4KCVNldCB0aGUgY29tcG9uZW50IFByb2plY3QgaW4gYXJyYXkgZWxlbWVudHMuCgoyMDAzLTExLTE3ICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogZXJyb3V0LmFkYjogKEluaXRpYWxpemUpOiBBZGQgaW5pdGlhbGl6YXRpb24gZm9yIGVycm9yIG5vZGVzLgoKCSogc2VtX2NoMTIuYWRiIChJbml0aWFsaXplKTogQWRkIG1pc3NpbmcgaW5pdGlhbGl6YXRpb25zIGZvcgoJRXhjaGFuZ2VkX1ZpZXdzIGFuZCBIaWRkZW5fRW50aXRpZXMuCgoyMDAzLTExLTE3ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKENvcHlfR2VuZXJpY19Ob2RlKTogUHJlc2VydmUgZW50aXR5IHdoZW4gY29weWluZyBhbgoJYWxyZWFkeSBpbnN0YW50aWF0ZWQgdHJlZSBmb3IgdXNlIGluIHN1YnNlcXVlbnQgaW5saW5pbmcuCgkoQW5hbHl6ZV9Bc3NvY2lhdGlvbnMsIEluc3RhbnRpYXRlX0Zvcm1hbF9TdWJwcm9ncmFtLAoJSW5zdGFudGlhdGVfT2JqZWN0KTogaW1wcm92ZSBlcnJvciBtZXNzYWdlIGZvciBtaXNtYXRjaCBpbgoJaW5zdGFudGlhdGlvbnMuCgoJKiBzZW1fY2g2LmFkYiAoQnVpbGRfQm9keV9Ub19JbmxpbmUpOiBNYWpvciBjbGVhbnVwIHRvIGhhbmRsZQoJaW5zdGFudGlhdGlvbnMgb2Ygc3VicHJvZ3JhbXMgZGVjbGFyZWQgaW4gaW5zdGFuY2VzLgoKMjAwMy0xMS0xNyAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogc2VtX2NoNC5hZGIgKEFuYWx5emVfQWxsb2NhdG9yKTogUHJldmlvdXMgbW9kaWZpY2F0aW9uIG11c3QgYmUKCWV4ZWN1dGVkIG9ubHkgdW5kZXIgdGhlIEV4dGVuc2lvbnNfQWxsb3dlZCBmbGFnLgoKMjAwMy0xMS0xNyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBhLWV4ZXhkYS5hZGIgKEFkZHJlc3NfSW1hZ2UpOiBGaXggZG9jdW1lbnRhdGlvbiB0byBpbmRpY2F0ZSBsZWFkaW5nCgl6ZXJvZXMgc3VwcHJlc3NlZC4KCShBZGRyZXNzX0ltYWdlKTogRml4IGJ1ZyBvZiByZXR1cm5pbmcgMHggaW5zdGVhZCBvZiAweDAKCU1pbm9yIHJlZm9ybWF0dGluZyAoZnVuY3Rpb24gc3BlY3MpLgoKCSogZWluZm8uYWRzOiBNaW5vciBmaXggZm9yIGRvY3VtZW50YXRpb24gb2YgSXNfQml0X1BhY2tlZF9BcnJheQoJKG1pc3NlZCBjYXNlIG9mIDMzLTYzKQoKCSogZnJlZXplLmFkYiwgc2VtX2NoMTMuYWRiOiBQcm9wZXJseSBjaGVjayBzaXplIG9mIHBhY2tlZCBiaXQgYXJyYXkKCgkqIHMtdGhyZWFkLmFkYjogQWRkIGNvbW1lbnRzIGZvciBwcmFnbWEgUmVzdHJpY3Rpb24KCgkqIGV4cF9hZ2dyLmFkYiwgZy1kZWJ1dGkuYWRiLCBwYXItY2g0LmFkYiwgc2VtX2FnZ3IuYWRiLAoJc2VtX2NoNi5hZGIsIHNwcmludC5hZGIsIHhyZWZfbGliLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAzLTExLTE3ICBFZCBGYWxpcyAgPGZhbGlzQGduYXQuY29tPgoKCSogcy10aHJlYWQuYWRiOiBBZGRlZCBOb19UYXNraW5nIHJlc3RyaWN0aW9uIGZvciB0aGlzIGltcGxlbWVudGF0aW9uLgoKMjAwMy0xMS0xNyAgRW1tYW51ZWwgQnJpb3QgIDxicmlvdEBhY3QtZXVyb3BlLmZyPgoKCSogeHJlZl9saWIuYWRiIChQYXJzZV9JZGVudGlmaWVyX0luZm8pOiBBZGQgaGFuZGxpbmcgb2YgZ2VuZXJpYwoJaW5zdGFuY2lhdGlvbiByZWZlcmVuY2VzIGluIHRoZSBwYXJlbnQgdHlwZSBkZXNjcmlwdGlvbi4KCjIwMDMtMTEtMTcgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDMtMTEtMTYgIEphc29uIE1lcnJpbGwgIDxqYXNvbkByZWRoYXQuY29tPgoKCSogTWFrZS1sYW5nLmluIChhZGEudGFncyk6IENyZWF0ZSBUQUdTLnN1YiBmaWxlcyBpbiBlYWNoIGRpcmVjdG9yeQoJYW5kIFRBR1MgZmlsZXMgdGhhdCBpbmNsdWRlIHRoZW0gZm9yIGVhY2ggZnJvbnQgZW5kLgoKMjAwMy0xMS0xNCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogbGFuZy5vcHQ6IENoYW5nZSAtV25vLWxvbmctbG9uZyB0byAtV2xvbmctbG9uZyBzaW5jZSB0aGUgbGF0dGVyCglpcyB0aGUgY2Fub25pY2FsIHZlcnNpb24uCgkqIG1pc2MuYyAoZ25hdF9oYW5kbGVfb3B0aW9uKTogTGlrZXdpc2UuCgoJKiBNYWtlZmlsZS5pbiAoTElCR05BVF9UQVJHRVRfUEFJUlMpOiBBZGQgcnVsZXMgZm9yIHg4Nl82NC1saW51eC4KCgkqIDVuc3lzdGVtLmFkczogTmV3IGZpbGUgZm9yIHg4Nl82NC1saW51eC1nbnUuCgoyMDAzLTExLTE0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIG5tYWtlLmFkcywgbm1ha2UuYWRiLCBzaW5mby5oLCB0cmVlcHJzLmFkczogUmVnZW5lcmF0ZWQuCgoJKiBjb21wZXJyLmFkYjogRml4IGxvZ2ljIGluIHByZXZpb3VzIGNoYW5nZS4KCjIwMDMtMTEtMTMgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogNWJtbC10Z3QuYWRiIChCdWlsZF9EeW5hbWljX0xpYnJhcnkpOiBVc2UKCU9zaW50LkluY2x1ZGVfRGlyX0RlZmF1bHRfUHJlZml4IGluc3RlYWQgb2YKCVNkZWZhdWx0LkluY2x1ZGVfRGlyX0RlZmF1bHRfTmFtZS4KCgkqIGduYXRsYnIuYWRiOiBVcGRhdGUgQ29weXJpZ2h0IG5vdGljZQoJKEduYXRsYnIpOiA6IFVzZSBPc2ludC5JbmNsdWRlX0Rpcl9EZWZhdWx0X1ByZWZpeCBpbnN0ZWFkIG9mCglTZGVmYXVsdC5JbmNsdWRlX0Rpcl9EZWZhdWx0X05hbWUgYW5kIE9zaW50Lk9iamVjdF9EaXJfRGVmYXVsdF9QcmVmaXgKCWluc3RlYWQgb2YgU2RlZmF1bHQuT2JqZWN0X0Rpcl9EZWZhdWx0X05hbWUKCgkqIGduYXRsaW5rLmFkYjoKCShQcm9jZXNzX0JpbmRlcl9GaWxlKTogTmV2ZXIgc3VwcHJlc3MgdGhlIG9wdGlvbiBmb2xsb3dpbmcgLVhsaW5rZXIKCgkqIG1kbGwtdXRsLmFkYjoKCShHY2MpOiBVc2UgT3NpbnQuT2JqZWN0X0Rpcl9EZWZhdWx0X1ByZWZpeCBpbnN0ZWFkIG9mCglTZGVmYXVsdC5PYmplY3RfRGlyX0RlZmF1bHRfTmFtZS4KCgkqIG9zaW50LmFkcywgb3NpbnQuYWRiOgoJKEluY2x1ZGVfRGlyX0RlZmF1bHRfUHJlZml4LCBPYmplY3RfRGlyX0RlZmF1bHRfUHJlZml4KTogTmV3IGZ1bmN0aW9ucwoJTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogdm1zX2NvbnYuYWRzOiBNaW5vciByZWZvcm1hdGluZwoJUmVtb3ZlIEdOQVQgU1RBTkRBUkQgYW5kIEdOQVQgUFNUQQoKCSogdm1zX2NvbnYuYWRiOgoJQWxsb3cgR05BVCBNQUtFIHRvIGhhdmUgc2V2ZXJhbCBmaWxlcyBvbiB0aGUgY29tbWFuZCBsaW5lLgoJKEluaXRfT2JqZWN0X0RpcnMpOiBVc2UgT3NpbnQuT2JqZWN0X0Rpcl9EZWZhdWx0X1ByZWZpeCBpbnN0ZWFkIG9mCglTZGVmYXVsdC5PYmplY3RfRGlyX0RlZmF1bHRfTmFtZS4KCU1pbm9yIFJlZm9ybWF0aW5nCglSZW1vdmUgZGF0YSBmb3IgR05BVCBTVEFOREFSRAoKCSogdm1zX2RhdGEuYWRzOgoJQWRkIG5ldyBjb21waWxlciBxdWFsaWZpZXIgL1BSSU5UX1NUQU5EQVJEICgtZ25hdFMpCglSZW1vdmUgZGF0YSBmb3IgR05BVCBTVEFOREFSRAoJUmVtb3ZlIG9wdGlvbnMgYW5kIGRvY3VtZW50YXRpb24gZm9yIC1nbmF0d2IvLWduYXR3QjogdGhlc2Ugd2FybmluZwoJb3B0aW9ucyBubyBsb25nZXIgZXhpc3QuCgoyMDAzLTExLTEzICBFZCBGYWxpcyAgPGZhbGlzQGduYXQuY29tPgoKCSogNXp0aHJpbmkuYWRiOiAoSW5pdF9SVFMpOiBNYWRlIHZpc2libGUKCgkqIDV6dGhyaW5pLmFkYjoKCShSZWdpc3Rlcik6IFJlbW92ZWQgdW5uZWNlc3NhcnkgY2FsbCB0byB0YXNrVmFyR2V0IHRoYXQgY2hlY2tlZCB3aGV0aGVyCgkgYW4gQVRTRCB3YXMgYWxyZWFkeSBzZXQgYXMgYSB0YXNrIHZhciBmb3IgdGhlIGFyZ3VtZW50IHRocmVhZC4KCgkqIHMtdGhyZWFkLmFkYjoKCVVwZGF0ZWQgY29tbWVudCB0byByZWZsZWN0IHRoYXQgdGhpcyBpcyBhIFZ4V29ya3MgdmVyc2lvbgoJQWRkZWQgY29udGV4dCBjbGF1c2UgZm9yIFN5c3RlbS5UaHJlYWRzLkluaXRpYWxpemF0aW9uCglBZGRlZCBjYWxsIHRvIFN5c3RlbS5UaHJlYWRzLkluaXRpYWxpemF0aW9uLkluaXRfUlRTCgoyMDAzLTExLTEzICBKZXJvbWUgR3VpdHRvbiAgPGd1aXR0b25AYWN0LWV1cm9wZS5mcj4KCgkqIDV6dGhyaW5pLmFkYjoKCShJbml0X1JUUyk6IE5ldyBwcm9jZWR1cmUsIGZvciB0aGUgaW5pdGlhbGl6YXRpb24gb2YgdGhlIHJ1bi10aW1lIGxpYi4KCgkqIHMtdGhyZWFkLmFkYjoKCVJlbW92ZSBkZXBlbmRhbmN5IG9uIFN5c3RlbS5Jbml0LCBzbyB0aGF0IHRoaXMgZmlsZSBjYW4gYmUgdXNlZCBpbiB0aGUKCUFFNjUzIHNlcXVlbnRpYWwgcnVuLXRpbWUgbGliLgoKMjAwMy0xMS0xMyAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBiaW5kZ2VuLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAzLTExLTEzICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBjaGVja3MuYWRiOgoJKEFwcGx5X0Rpc2NyaW1pbmFudF9DaGVjayk6IERvIG5vIGFwcGx5IGNoZWNrIGlmIHRhcmdldCB0eXBlIGlzIGRlcml2ZWQKCWZyb20gc291cmNlIHR5cGUgd2l0aCBubyBhcHBsaWNhYmxlIGNvbnN0cmFpbnQuCgoJKiBsaWItd3JpdC5hZGI6CgkoRW5zdXJlX1N5c3RlbV9EZXBlbmRlbmN5KTogRG8gbm90IGFwcGx5IHRoZSBzdHlsZSBjaGVja3MgdGhhdCBtYXkgaGF2ZQoJYmVlbiBzcGVjaWZpZWQgZm9yIHRoZSBtYWluIHVuaXQuCgoJKiBzZW1fY2g4LmFkYjoKCShGaW5kX1NlbGVjdGVkX0NvbXBvbmVudCk6IEZ1cnRoZXIgaW1wcm92ZW1lbnQgaW4gZXJyb3IgbWVzc2FnZSwgd2l0aAoJUk0gcmVmZXJlbmNlLgoKCSogc2VtX3Jlcy5hZGI6CgkoUmVzb2x2ZSk6IEhhbmRsZSBwcm9wZXJseSB0aGUgY2FzZSBvZiBhbiBpbGxlZ2FsIG92ZXJsb2FkZWQgcHJvdGVjdGVkCglwcm9jZWR1cmUuCgoyMDAzLTExLTEzICBKYXZpZXIgTWlyYW5kYSAgPG1pcmFuZGFAZ25hdC5jb20+CgoJKiBleHBfYWdnci5hZGI6CgkoSGFzX0RlZmF1bHRfSW5pdF9Db21wcyk6IE5ldyBmdW5jdGlvbiB0byBjaGVjayB0aGUgcHJlc2VuY2Ugb2YKCWRlZmF1bHQgaW5pdGlhbGl6YXRpb24gaW4gYW4gYWdncmVnYXRlLgoJKEJ1aWxkX1JlY29yZF9BZ2dyX0NvZGUpOiBSZWN1cnNpdmVseSBleHBhbmQgdGhlIGFuY2VzdG9yIGluIGNhc2Ugb2YKCWV4dGVuc2lvbiBhZ2dyZWdhdGUgb2YgYSBsaW1pdGVkIHJlY29yZC4gSW4gYWRkaXRpb24sIGEgbmV3IGZvcm1hbAoJd2FzIGFkZGVkIHRvIGRvIG5vdCBpbml0aWFsaXplIHRoZSByZWNvcmQgY29udHJvbGxlciAoaWYgYW55KSBkdXJpbmcKCXRoaXMgcmVjdXJzaXZlIGV4cGFuc2lvbiBvZiBhbmNlc3RvcnMuCgkoSW5pdF9Db250cm9sbGVyKTogQWRkIHN1cHBvcnQgZm9yIGxpbWl0ZWQgcmVjb3JkIGNvbXBvbmVudHMuCgkoRXhwYW5kX1JlY29yZF9BZ2dyZWdhdGUpOiBJbiBjYXNlIG9mIGRlZmF1bHQgaW5pdGlhbGl6ZWQgY29tcG9uZW50cwoJY29udmVydCB0aGUgYWdncmVnYXRlIGludG8gYSBzZXQgb2YgYXNzaWdubWVudHMuCgoJKiBwYXItY2g0LmFkYiAoUF9BZ2dyZWdhdGVfT3JfUGFyZW5fRXhwcik6IFVwZGF0ZSB0aGUgY29tbWVudAoJZGVzY3JpYmluZyB0aGUgbmV3IHN5bnRheC4KCU5vdGhpbmcgZWxzZSBuZWVkZWQgdG8gYmUgZG9uZSBiZWNhdXNlIHRoaXMgc3VicHJvZ3JhbSBkZWxlZ2F0ZXMgcGFydCBvZgoJaXRzIHdvcmsgdG8gUF9QcmVjb3JkX09yX0FycmF5X0NvbXBvbmVudF9Bc3NvY2lhdGlvbi4KCShQX1JlY29yZF9Pcl9BcnJheV9Db21wb25lbnRfQXNzb2NpYXRpb24pOiBHaXZlIHN1cHBvcnQgdG8gdGhlIG5ldwoJc3ludGF4IGZvciBkZWZhdWx0IGluaXRpYWxpemF0aW9uIG9mIGNvbXBvbmVudHMuCgoJKiBzZW1fYWdnci5hZGI6CgkoUmVzb2x2ZV9BZ2dyZWdhdGUpOiBSZWxheCB0aGUgc3RyaWN0bmVzcyBvZiB0aGUgZnJvbnRlbmQgaW4gY2FzZSBvZgoJbGltaXRlZCBhZ2dyZWdhdGVzLgoJKFJlc29sdmVfUmVjb3JkX0FnZ3JlZ2F0ZSk6IEdpdmUgc3VwcG9ydCB0byBkZWZhdWx0IGluaXRpYWxpemVkCgljb21wb25lbnRzLgoJKEdldF9WYWx1ZSk6IEluIGNhc2Ugb2YgZGVmYXVsdCBpbml0aWFsaXplZCBjb21wb25lbnRzLCBkdXBsaWNhdGUKCXRoZSBjb3JyZXNwb25kaW5nIGRlZmF1bHQgZXhwcmVzc2lvbiAoZnJvbSB0aGUgcmVjb3JkIHR5cGUKCWRlY2xhcmF0aW9uKS4gSW4gY2FzZSBvZiBkZWZhdWx0IGluaXRpYWxpemF0aW9uIGluIHRoZSAqb3RoZXJzKgoJY2hvaWNlLCBkbyBub3QgY2hlY2sgdGhhdCBhbGwgY29tcG9uZW50cyBoYXZlIHRoZSBzYW1lIHR5cGUuCgkoUmVzb2x2ZV9FeHRlbnNpb25fQWdncmVnYXRlKTogR2l2ZSBzdXBwb3J0IHRvIGxpbWl0ZWQgZXh0ZW5zaW9uCglhZ2dyZWdhdGVzLgoKCSogc2VtX2NoMy5hZGI6CgkoQ2hlY2tfSW5pdGlhbGl6YXRpb24pOiBSZWxheCB0aGUgc3RyaWN0bmVzcyBvZiB0aGUgZnJvbnQtZW5kIGluIGNhc2UKCW9mIGFnZ3JlZ2F0ZSBhbmQgZXh0ZW5zaW9uIGFnZ3JlZ2F0ZXMuIFRoaXMgdGVzdCBpcyBub3cgZG9uZSBpbgoJR2V0X1ZhbHVlIGluIGEgcGVyLWNvbXBvbmVudCBtYW5uZXIuCgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9BbGxvY2F0b3IpOiBEb24ndCBwb3N0IGFuIGVycm9yIGlmIHRoZQoJZXhwcmVzc2lvbiBjb3JyZXNwb25kcyB0byBhIGxpbWl0ZWQgYWdncmVnYXRlLiBUaGlzIHRlc3QgaXMgbm93IGRvbmUKCWluIEdldF9WYWx1ZS4KCgkqIHNpbmZvLmFkcywgc2luZm8uYWRiIChOX0NvbXBvbmVudF9Bc3NvY2lhdGlvbik6IEFkZGl0aW9uIG9mCglCb3hfUHJlc2VudCBmbGFnLgoKCSogc3ByaW50LmFkYiAoU3ByaW50X05vZGVfQWN0dWFsKTogTW9kaWZpZWQgdG8gcHJpbnQgYW4gbWJveCBpZgoJcHJlc2VudCBpbiBhbiBOX0NvbXBvbmVudF9Bc3NvY2lhdGlvbiBub2RlCgoyMDAzLTExLTEzICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBzZW1fY2g5LmFkYiAoQW5hbHl6ZV9BY2NlcHRfU3RhdGVtZW50KTogQSBwcm9jZWR1cmUgaGlkZXMgYQoJdHlwZS1jb25mb3JtYW50IGVudHJ5IG9ubHkgaWYgdGhleSBhcmUgaG9tb2dyYXBocy4KCjIwMDMtMTEtMTMgIEdOQVQgU2NyaXB0ICA8bm9ib2R5QGduYXQuY29tPgoKCSogTWFrZS1sYW5nLmluOiBNYWtlZmlsZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQKCjIwMDMtMTEtMTIgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogYWRhZGVjb2RlLmM6IFVzZSA8PiBmb3JtIG9mIGluY2x1ZGUgZm9yIGN0eXBlLmguCgkqIHN5c2RlcC5jIFtJTl9SVFNdOiBVc2UgPD4gZm9ybSBvZiBpbmNsdWRlIGZvciB0aW1lLmguCgoyMDAzLTExLTEyICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIDVnc3lzdGVtLmFkcyAoRnVuY3Rpb25zX1JldHVybl9CeV9EU1ApOiBTZXQgdG8gRmFsc2UuCglXb3JrcyBhcm91bmQgUFIgbWlkZGxlLWVuZC82NTUyLgoKMjAwMy0xMS0xMCAgRWQgRmFsaXMgIDxmYWxpc0BnbmF0LmNvbT4KCgkqIDV5dGlpdGhvLmFkYjogKHByb2NTdGFydEhvb2tBZGQpOiBEZWZpbml0aW9uIGFuZCBjYWxsIGRlbGV0ZWQKCgkqIDV6aW5pdC5hZGI6IChJbnN0YWxsX0hhbmRsZXIpOiBNb3ZlZCBiYWNrIHRvIHNwZWMKCShJbnN0YWxsX1NpZ25hbF9IYW5kbGVycyk6IERlbGV0ZWQKCgkqIDV6dGhyaW5pLmFkYjogQWRkZWQgY29udGV4dCBjbGF1c2UgZm9yIFN5c3RlbS5TdG9yYWdlX0VsZW1lbnRzCgkoUmVnaXN0ZXIpOiBPbmx5IGhhbmRsZXMgY3JlYXRpb24gb2YgdGFza1ZhcjsgaW5pdGlhbGl6YXRpb24gbW92ZWQgdG8KCVRocmVhZF9Cb2R5X0VudGVyLgoJKFJlc2V0X1RTRCk6IERlbGV0ZWQ7IHJlcGxhY2VkIGJ5IFRocmVhZF9Cb2R5X0VudGVyCglBZGRlZCBkZWNsYXJhdGlvbiBvZiBlbnZpcm9ubWVudCB0YXNrIHNlY29uZGFyeSBzdGFjayBhbmQKCWluaXRpYWxpemF0aW9uLgoKCSogcy10aHJlYWQuYWRiOiBJbXBsZW1lbnQgYm9kaWVzIGZvciB0aHJlYWQgYm9keSBwcm9jZXNzaW5nCgoJKiBzLXRocmVhZC5hZHM6CglBZGRlZCBjb21tZW50IGlkZW50aWZ5aW5nIHN1cHBvcnRlZCB0YXJnZXRzIGZvciBwcmFnbWEgVGhyZWFkX0JvZHkuCgoyMDAzLTExLTEwICBQYXNjYWwgT2JyeSAgPG9icnlAZ25hdC5jb20+CgoJKiBhZGFpbnQuYyAoX2duYXRfc3RhdCkgW1dJTjMyXTogQ2hlY2sgaWYgbmFtZSBpcyBub3QgYmlnZ2VyIHRoYW4KCUdOQVRfTUFYX1BBVEhfTEVOLgoKCSogcy1maWxlaW8uYWRiOgoJKE9wZW4pOiBQcm9wZXJseSBjaGVjayBmb3Igc3RyaW5nIGxlbmd0aCBiZWZvcmUgY29weWluZyBpbnRvIHRoZSBidWZmZXIuCglSYWlzZXMgTmFtZV9FcnJvciBpZiBidWZmZXIgaXMgdG9vIHNtYWxsLiBOb3RlIHRoYXQgdGhpcyB3YXMgYSBwb3RlbnRpYWwKCWJ1ZmZlciBvdmVyZmxvdy4KCjIwMDMtMTEtMTAgIFJvbWFpbiBCZXJyZW5kb25uZXIgIDxiZXJyZW5kb0BhY3QtZXVyb3BlLmZyPgoKCSogYmluZGdlbi5hZGIsIGNvbXBlcnIuYWRiOiBDb2RlIGNsZWFuIHVwcy4KCSogZ25hdHZzbi5hZHMsIGduYXR2c24uYWRiIChHZXRfR25hdF9WZXJzaW9uX1R5cGUpOiBOZXcgZnVuY3Rpb24uCgoyMDAzLTExLTEwICBTZXJnZXkgUnliaW4gIDxyeWJpbkBhY3QtZXVyb3BlLmZyPgoKCSogZ25hdDFkcnYuYWRiOiBBZGQgY2FsbCB0byBTZW1fRWxpbS5Jbml0aWFsaXplLgoKMjAwMy0xMS0xMCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBncHJjbWQuYWRiOgoJKEdwcmNtZCk6IEFkZCBuZXcgY29tbWFuZCAicHJlZml4IiB0byBnZXQgdGhlIHByZWZpeCBvZiB0aGUgR05BVAoJaW5zdGFsbGF0aW9uLgoKCSogbWFrZS5hZGIgKFNjYW5fTWFrZV9BcmcpOiBUcmFuc21pdCAtbm9zdGRsaWIgdG8gdGhlIGNvbXBpbGVyCgoJKiBwcmouYWRiOiAoUHJvamVjdF9FbXB0eSk6IEFkZCBuZXcgYm9vbGVhbiBjb21wb25lbnQgVmlydHVhbAoKCSogcHJqLmFkczogKFZpcnR1YWxfUHJlZml4KTogTmV3IGNvbnN0YW50IHN0cmluZwoJKFByb2plY3RfRGF0YSk6IE5ldyBib29sZWFuIGNvbXBvbmVudCBWaXJ0dWFsCgoJKiBwcmotbm1zYy5hZGIgKExhbmd1YWdlX0luZGVwZW5kZW50X0NoZWNrKTogQWRqdXN0IGVycm9yIG1lc3NhZ2Ugd2hlbgoJYSBsaWJyYXJ5IHByb2plY3QgaXMgZXh0ZW5kZWQgYnkgYSB2aXJ0dWFsIGV4dGVuZGluZyBwcm9qZWN0LgoKCSogcHJqLXBhcnQuYWRiOgoJTW9kaWZpY2F0aW9ucyB0aHJvdWdob3V0IHRvIGltcGxlbWVudCBleHRlbmRpbmctYWxsIHByb2plY3QsIGluY2x1ZGluZzoKCShWaXJ0dWFsX0hhc2gsIFByb2Nlc3NlZF9IYXNoKTogTmV3IGhhc2ggdGFibGVzCgkoQ3JlYXRlX1ZpcnR1YWxfRXh0ZW5kaW5nX1Byb2plY3QpOiBOZXcgcHJvY2VkdXJlCgkoTG9va19Gb3JfVmlydHVhbF9Qcm9qZWN0c19Gb3IpOiBOZXcgcHJvY2VkdXJlCgoJKiBwcmotcHJvYy5hZGI6CgkoUHJvY2Vzcyk6IEFmdGVyIGNoZWNraW5nIHRoZSBwcm9qZWN0cywgaWYgbWFpbiBwcm9qZWN0IGlzIGFuCglleHRlbmRpbmctYWxsIHByb2plY3QsIHNldCB0aGUgb2JqZWN0IGRpcmVjdG9yeSBvZiBhbGwgdmlydHVhbCBleHRlbmRpbmcKCXByb2plY3QgdG8gdGhlIG9iamVjdCBkaXJlY3Rvcnkgb2YgdGhlIG1haW4gcHJvamVjdC4KCUFkanVzdCBlcnJvciBtZXNzYWdlIHdoZW4gYSB2aXJ0dWFsIGV4dGVuZGluZyBwcm9qZWN0IGhhcyB0aGUgc2FtZQoJb2JqZWN0IGRpcmVjdG9yeSBhcyBhbiBwcm9qZWN0IGJlaW5nIGV4dGVuZGVkLgoJKFJlY3Vyc2l2ZV9Qcm9jZXNzKTogSWYgbmFtZSBzdGFydHMgd2l0aCB0aGUgdmlydHVhbCBwcmVmaXgsIHNldCBWaXJ0dWFsCgl0byBUcnVlIGluIHRoZSBwcm9qZWN0IGRhdGEuCgoJKiBwcmotdHJlZS5hZGI6CgkoRGVmYXVsdF9Qcm9qZWN0X05vZGUpOiBBZGQgbmV3IGJvb2xlYW4gY29tcG9uZW50IEV4dGVuZGluZ19BbGwKCShJc19FeHRlbmRpbmdfQWxsKTogTmV3IGZ1bmN0aW9uCgkoU2V0X0lzX0V4dGVuZGluZ19BbGwpOiBOZXcgcHJvY2VkdXJlCgoJKiBwcmotdHJlZS5hZHM6IChJc19FeHRlbmRpbmdfQWxsKTogTmV3IGZ1bmN0aW9uCgkoU2V0X0lzX0V4dGVuZGluZ19BbGwpOiBOZXcgcHJvY2VkdXJlCgkoUHJvamVjdF9Ob2RlX1JlY29yZCk6IE5ldyBib29sZWFuIGNvbXBvbmVudCBFeHRlbmRpbmdfQWxsCgoJKiBzd2l0Y2gtYy5hZGI6IChTY2FuX0Zyb250X0VuZF9Td2l0Y2hlcyk6IFByb2Nlc3MgLW5vc3RkbGliCgoJKiB2bXNfZGF0YS5hZHM6CglBZGQgcXVhbGlmaWVyIC9OT1NURF9MSUJSQVJJRVMgKC1ub3N0ZGxpYikgZm9yIHRoZSBjb21waWxlcgoKCSogYmxkLmFkYiAoUmVjdXJzaXZlX1Byb2Nlc3MpOiBJZiBNQUtFX1JPT1QgaXMgbm90IGRlZmluZWQsIGNhbGwKCSJncHJjbWQgcHJlZml4IiB0byBkZWZpbmUgaXQuCgoyMDAzLTExLTEwICBUaG9tYXMgUXVpbm90ICA8cXVpbm90QGFjdC1ldXJvcGUuZnI+CgoJKiBlaW5mby5hZHM6IEZpeCBhIHR5cG8gYW5kIHJlbW92ZSBhbiBleHRyYW5lb3VzIHdvcmQgaW4gY29tbWVudHMuCgoJKiBsaWItbG9hZC5hZGI6CgkoQ3JlYXRlX0R1bW15X1BhY2thZ2VfVW5pdCk6IFNldCB0aGUgc2NvcGUgb2YgdGhlIGVudGl0eSBmb3IgdGhlCgljcmVhdGVkIGR1bW15IHBhY2thZ2UgdG8gU3RhbmRhcmRfU3RhbmRhcmQsIG5vdCB0byBpdHNlbGYsIHRvCglkZWZlbmQgb3RoZXIgcGFydHMgb2YgdGhlIGZyb250LWVuZCBhZ2FpbnN0IGVuY291dGVyaW5nIGEgY3ljbGUgaW4KCXRoZSBzY29wZSBjaGFpbi4KCgkqIHNlbV9jaDEwLmFkYjoKCShBbmFseXplX1dpdGhfQ2xhdXNlKTogV2hlbiBzZXR0aW5nIHRoZSBlbnRpdGllcyBmb3IgdGhlIHN1Y2Nlc3NpdmUKCU5fRXhwYW5kZWRfTmFtZXMgdGhhdCBjb25zdGl0dXRlIHRoZSBuYW1lIG9mIGEgY2hpbGQgdW5pdCwgZG8gbm90CglhdHRlbXB0IHRvIGdvIGZ1cnRoZXIgdGhhbiBTdGFuZGFyZF9TdGFuZGFyZCBpbiB0aGUgY2hhaW4gb2Ygc2NvcGVzLgoJVGhpcyBjYXNlIGFyaXNlcyBmcm9tIHRoZSBwbGFjZWhvbGRlciB1bml0cyBjcmVhdGVkIGJ5CglDcmVhdGVfRHVtbXlfUGFja2FnZV9Vbml0IGluIHRoZSBjYXNlIG9mIGEgd2l0aF9jbGF1c2UgZm9yIGEKCW5vbmV4aXN0ZW50IGNoaWxkIHVuaXQuCgoyMDAzLTExLTEwICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g2LmFkYjoKCShFeHBhbmRfVGhyZWFkX0JvZHkpOiBQbGFjZSBzdWJwcm9ncmFtIG9uIHNjb3BlIHN0YWNrLCBzbyB0aGF0IG5ldwoJZGVjbGFyYXRpb25zIGFyZSBnaXZlbiB0aGUgcHJvcGVyIHNjb3BlLgoKCSogc2VtX2NoMTMuYWRiOgoJKENoZWNrX0V4cHJfQ29uc3RhbnRzKTogUmVqZWN0IGFuIGV4cHJlc3Npb24gdGhhdCBjb250YWlucyBhIGNvbnN0YW50CgljcmVhdGVkIGR1cmluZyBleHBhbnNpb24sIGFuZCB0aGF0IGFwcGVhcnMgYWZ0ZXIgdGhlIG9iamVjdCB0byB3aGljaAoJdGhlIGFkZHJlc3MgY2xhdXNlIGFwcGxpZXMuCgoJKiBzZW1fY2g1LmFkYiAoQ2hlY2tfQ29udHJvbGxlZF9BcnJheV9BdHRyaWJ1dGUpOiBTdWJzaWRpYXJ5IG9mCglBbmFseXplX0l0ZXJhdGlvbl9TY2hlbWUsIHRvIHJld3JpdGUgYSBsb29wIHBhcmFtZXRlciBzcGVjaWZpY2F0aW9uCgl0aGF0IHVzZXMgJ1JhbmdlIG9mIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGNvbnRyb2xsZWQgY29tcG9uZW50cywgc28KCXRoYXQgdGhlIGZ1bmN0aW9uIHJlc3VsdCBjYW4gYmUgZmluYWxpemVkIGJlZm9yZSBzdGFydGluZyB0aGUgbG9vcC4KCgkqIHNlbV9jaDguYWRiOgoJKEZpbmRfU2VsZWN0ZWRfQ29tcG9uZW50KTogSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gcHJlZml4IGlzCglhbiBpbXBsaWNpdCBkZXJlZmVyZW5jZSBvZiBhbiBpbmNvbXBsZXRlIHR5cGUuCgoyMDAzLTExLTEwICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIG9wdC5hZHM6IE5ldyBQcmludF9TdGFuZGFyZCBmbGFnIGZvciAtZ25hdFMgc3dpdGNoCgoJKiBzZW1fY2gxMy5hZGI6IFJlbW92ZSBzb21lIGFkZGl0aW9uYWwgY2hlY2tzIGZvciB1bmFsaWduZWQgYXJyYXlzCgoJKiBjc3RhbmQuYWRiIChDcmVhdGVfU3RhbmRhcmQpOiBQcmludCBvdXQgcGFja2FnZSBzdGFuZGFyZCBpZiAtZ25hdFMKCXN3aXRjaCBzZXQKCgkqIGRlYnVnLmFkYjogVXBkYXRlIGRvYyBmb3IgLWduYXRkcyB0byBkaXNjdXNzIHJlbGF0aW9uc2hpcCB3aXRoIG5ldwoJLWduYXRTIGZsYWcKCgkqIHNpbmZvLmFkYjogQWRkIG5ldyBmaWVsZCBFbnRpdHlfT3JfQXNzb2NpYXRlZF9Ob2RlCgoJKiBzaW5mby5hZHM6IEFkZCBuZXcgZmllbGQgRW50aXR5X09yX0Fzc29jaWF0ZWRfTm9kZQoJVXBkYXRlIGRvY3VtZW50YXRpb24gZm9yIEFzc29jaWF0ZWRfTm9kZSBhbmQgRW50aXR5IGZpZWxkcyB0byBjbGFyaWZ5CglyZWxhdGlvbnNoaXAgYW5kIHVzYWdlLgoKCSogc3ByaW50LmFkYjoKCShXcml0ZV9JZCk6IFByb3Blcmx5IHByb2Nlc3MgQXNzb2NpYXRlZF9Ob2RlIGZpZWxkIGluIGdlbmVyaWMgdGVtcGxhdGUKCgkqIHN3aXRjaC1jLmFkYjoKCVJlY29nbml6ZSBuZXcgLWduYXRTIHN3aXRjaCBmb3IgcHJpbnRpbmcgcGFja2FnZSBTdGFuZGFyZAoJVGhpcyByZXBsYWNlcyBnbmF0cHN0YQoKCSogdXNhZ2UuYWRiOgoJQWRkIGxpbmUgZm9yICBuZXcgLWduYXRTIHN3aXRjaCBmb3IgcHJpbnRpbmcgcGFja2FnZSBTdGFuZGFyZAoJVGhpcyByZXBsYWNlcyBnbmF0cHN0YQoKMjAwMy0xMS0xMCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogN3Nvc3ByaW0uYWRiOiB0dl91c2VjIG9mIHN0cnVjdF90aW1ldmFsIGFuZCB0aW1lX3QgYXJlIGxvbmcKCWludGVnZXIuCgoyMDAzLTExLTEwICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIG1pc2MuYywgbGFuZy5vcHQ6IEFkZCBoYW5kbGluZyBvZiAtbm9zdGRsaWIsIG5vdyByZWNvZ25pemVkL25lZWRlZAoJYnkgZ25hdDEuCgoyMDAzLTExLTEwICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluLCBNYWtlLWxhbmcuaW46IFJlbW92ZSBidWlsZCBvZiBnbmF0X3dyYXBwZXIgYW5kIGduYXRwc3RhLAoJbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIGduYXRwc3RhLmFkYiwgZ25hdF93cmFwcGVyLmFkYjogUmVtb3ZlZCwgbm8gbG9uZ2VyIG5lZWRlZC4KCgkqIHN5c2RlcC5jOiBBZGQgaGFuZGxpbmcgb2YgY3lnd2luLgoKMjAwMy0xMS0xMCAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwMy0xMS0xMCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJUFIgMTI5NTAKCSogb3NpbnQuYWRzLCBvc2ludC5hZGIgKFJlbG9jYXRlX1BhdGgsIEV4ZWN1dGFibGVfU3VmZml4KTogTmV3CglmdW5jdGlvbnMuIFVzZWQgdG8gaGFuZGxlIGR5bmFtaWMgcHJlZml4IHJlbG9jYXRpb24sIHZpYSBzZXRfc3RkX3ByZWZpeC4KCVJlcGxhY2UgR05BVF9ST09UIGJ5IEdDQ19ST09ULgoKCSogTWFrZS1sYW5nLmluOiBVc2UgbmV3IGZ1bmN0aW9uIFJlbG9jYXRlX1BhdGggdG8gZ2VuZXJhdGUgc2RlZmF1bHQuYWRiCgoyMDAzLTExLTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogbWlzYy5jIChmcF9wcmVjX3RvX3NpemUsIGZwX3NpemVfdG9fcHJlYyk6IFVzZSBHRVRfTU9ERV9QUkVDSVNJT04KCWFuZCB1cGRhdGUgZm9yIGNoYW5nZWQgbWVhbmluZyBvZiBHRVRfTU9ERV9CSVRTSVpFLgoKMjAwMy0xMS0wNCAgRG91ZyBSdXBwICA8cnVwcEBnbmF0LmNvbT4KCgkqIHN5c2RlcC5jOiBQcm9ibGVtIGRpc2NvdmVyZWQgZHVyaW5nIElBNjQgVk1TIHBvcnQuCglbVk1TXSAjaW5jbHVkZSA8dW5peGlvLmg+IHRvIGdldCBwcm9wZXIgcHJvdG90eXBlcy4KCgkqIGFkYWludC5jOgoJSXNzdWVzIGRpc2NvdmVyZWQvcHJvYmxlbXMgZml4ZWQgZHVyaW5nIElBNjQgVk1TIHBvcnQuCglbVk1TXSAjZGVmaW5lIF9QT1NJWF9FWElUIGZvciBwcm9wZXIgc2VtYW50aWNzLgoJW1ZNU10gI2luY2x1ZGUgPHVuaXhpby5oPiBmb3IgcHJvcGVyIHByb3RvdHlwZXMuCglbVk1TXSAoZm9yayk6ICNkZWZpbmUgSUE2NCB2ZXJzaW9uLgoJKF9fZ25hdF9vc19leGl0KTogUmVtb3ZlIHVubmVjZXNzYXJ5IFZNUyBzcGVjaWZpYyBjb2RlLgoKMjAwMy0xMS0wNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCglQYXJ0IG9mIFBSIGFkYS8xMjgwNgoJKiBhZGEtdHJlZS5oIChUWVBFX0RJR0lUU19WQUxVRSwgU0VUX1RZUEVfRElHSVRTX1ZBTFVFKTogU2F2ZSBjb3VudCBhcwoJdHJlZSwgbm90IGludGVnZXIuCgoJKiBkZWNsLmM6CgkoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfRmxvYXRpbmdfUG9pbnRfVHlwZSk6IFNhdmUgY291bnQgYXMgdHJlZSwKCW5vdCBpbnRlZ2VyLgoKCSogdGFyZ3R5cHMuYywgZGVjbC5jLCBtaXNjLmMsCglnaWdpLmggKGZwX3ByZWNfdG9fc2l6ZSwgZnBfc2l6ZV90b19wcmVjKTogVGVtcG9yYXJ5Cglyb3V0aW5lcyB0byB3b3JrIGFyb3VuZCBjaGFuZ2UgaW4gRlAgc2l6aW5nIHNlbWFudGljcyBpbiBHQ0MuCgoJKiB1dGlscy5jOgoJKGJ1aWxkX3Ztc19kZXNjcmlwdG9yKTogVFlQRV9ESUdJVFNfVkFMVUUgaXMgdHJlZSwgbm90IGludGVnZXIuCgoJKiBnaWdpLmg6IChlbnVtZXJhdGVfbW9kZXMpOiBOZXcgZnVuY3Rpb24uCgoJKiBNYWtlLWxhbmcuaW46IChhZGEvbWlzYy5vKTogQWRkIHJlYWwuaC4KCgkqIG1pc2MuYzogKGVudW1lcmF0ZV9tb2Rlcyk6IE5ldyBmdW5jdGlvbi4KCjIwMDMtMTEtMDQgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogM3Z0cmFzeW0uYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCVVzZSB0ZXJtaW5vbG9neSBlbmNvZGVkL2RlY29kZWQgbmFtZSwgcmF0aGVyIHRoYW4gQysrIHNwZWNpZmljIG5vdGlvbgoJb2YgbWFuZ2xpbmcgKHRoaXMgaXMgdGhlIHRlcm1pbm9sb2d5IHVzZWQgdGhyb3VnaG91dCBHTkFUKS4KCgkqIGVpbmZvLmg6IFJlZ2VuZXJhdGVkCgoJKiBlaW5mby5hZHMsIGVpbmZvLmFkYjogQWRkIG5ldyBmbGFnIElzX1RocmVhZF9Cb2R5CgoJKiBleHBfY2g2LmFkYjoKCShFeHBhbmRfTl9TdWJwcm9ncmFtX0JvZHkpOiBIYW5kbGUgZXhwYW5zaW9uIG9mIHRocmVhZCBib2R5IHByb2NlZHVyZQoKCSogcGFyLXByYWcuYWRiOiBBZGQgZHVtbXkgZW50cnkgZm9yIFRocmVhZF9Cb2R5IHByYWdtYQoKCSogcnRzZmluZC5hZHM6CglBZGQgZW50cmllcyBmb3IgU3lzdGVtLlRocmVhZHMgZW50aXRpZXMgZm9yIHRocmVhZCBib2R5IHByb2Nlc3NpbmcKCgkqIHNlbV9hdHRyLmFkYjoKCShBbmFseXplX1ByYWdtYSwgQWNjZXNzIGF0dHJpYnV0ZXMpOiBDaGVjayB0aGVzZSBhcmUgbm90IGFwcGxpZWQgdG8gYQoJdGhyZWFkIGJvZHksIHNpbmNlIHRoaXMgaXMgbm90IHBlcm1pdHRlZAoKCSogc2VtX3ByYWcuYWRiOiBBZGQgcHJvY2Vzc2luZyBmb3IgVGhyZWFkX0JvZHkgcHJhZ21hLgoJTWlub3IgY29tbWVudCBmaXguCgoJKiBzZW1fcmVzLmFkYjoKCShSZXNvbHZlX0NhbGwpOiBDaGVjayBmb3IgaW5jb3JyZWN0IGF0dGVtcHQgdG8gY2FsbCBhIHRocmVhZCBib2R5CgkgcHJvY2VkdXJlIHdpdGggYSBkaXJlY3QgY2FsbC4KCgkqIHNuYW1lcy5hZHMsIHNuYW1lcy5hZGI6IEFkZCBlbnRyeSBmb3IgVGhyZWFkX0JvZHkgcHJhZ21hCglBZGQgbmFtZXMgYXNzb2NpYXRlZCB3aXRoIHRocmVhZCBib2R5IGV4cGFuc2lvbgoKCSogc25hbWVzLmg6IEFkZCBlbnRyeSBmb3IgVGhyZWFkX0JvZHkgcHJhZ21hCgoJKiBzLXRocmVhZC5hZGI6IEFkZCBlbnRyaWVzIGZvciB0aHJlYWQgYm9keSBwcm9jZXNzaW5nCglUaGVzZSBhcmUgZHVtbXkgYm9kaWVzIHNvIGZhcgoKCSogcy10aHJlYWQuYWRzOiBBZGQgZG9jdW1lbnRhdGlvbiBvbiB0aHJlYWQgYm9keSBoYW5kbGluZy4KCUFkZCBlbnRyaWVzIGZvciB0aHJlYWQgYm9keSBwcm9jZXNzaW5nLgoKMjAwMy0xMS0wNCAgSmF2aWVyIE1pcmFuZGEgIDxtaXJhbmRhQGduYXQuY29tPgoKCSogc2VtX2NoMTAuYWRiOgoJKEJ1aWxkX0xpbWl0ZWRfVmlld3MpOiBSZXR1cm4gYWZ0ZXIgcG9zdGluZyBhbiBlcnJvciBpbiBjYXNlIG9mIGxpbWl0ZWQKCXdpdGhfY2xhdXNlIG9uIHN1YnByb2dyYW1zLCBnZW5lcmljcywgaW5zdGFuY2VzIG9yIGdlbmVyaWMgcmVuYW1pbmdzCgkoSW5zdGFsbF9MaW1pdGVkX1dpdGhlZF9Vbml0KTogRG8gbm90aGluZyBpbiBjYXNlIG9mIGxpbWl0ZWQgd2l0aF9jbGF1c2UKCW9uIHN1YnByb2dyYW1zLCBnZW5lcmljcywgaW5zdGFuY2VzIG9yIGdlbmVyaWMgcmVuYW1pbmdzCgoyMDAzLTExLTA0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIHJhaXNlLmMgKHNldHVwX3RvX2luc3RhbGwpOiBDb3JyZWN0IG1pc3Rha2UgaW4gbGFzdCByZXZpc2lvbjsgdHdvCglhcmd1bWVudHMgb3V0IG9mIG9yZGVyLgoKCSogdHJhbnMuYywgY3VpbnRwLmMsIGFyZ3YuYywgYXV4LWlvLmMsIGNhbC5jLCBlcnJuby5jLCBleGl0LmMsCglnbmF0YmwuYywgaW5pdC5jLCBzdHJpbmd0LmgsIHV0aWxzLmMsIHV0aWxzMi5jOiBVcGRhdGUgY29weXJpZ2h0Cglub3RpY2UsIG1pc3NlZCBpbiBwcmV2aW91cyBjaGFuZ2UuCglSZW1vdmUgdHJhaWxpbmcgYmxhbmtzIGFuZCBvdGhlciBzdHlsZSBlcnJvcnMgaW50cm9kdWNlZCBpbiBwcmV2aW91cwoJY2hhbmdlLgoKMjAwMy0xMS0wNCAgT2xpdmllciBIYWlucXVlICA8aGFpbnF1ZUBhY3QtZXVyb3BlLmZyPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9maWVsZCk6IEFkanVzdCB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCB3ZSBnZXQKCXJpZCBvZiB0aGUgd3JhcHBlciBmb3IgYSBMSk0gdHlwZSwgZW5zdXJpbmcgd2UgZG9uJ3QgZG8gdGhhdCBpZiB0aGUKCWZpZWxkIGlzIGFkZHJlc3NhYmxlLiAgVGhpcyBhdm9pZHMgcG90ZW50aWFsIGxvdyBsZXZlbCB0eXBlIHZpZXcKCW1pc21hdGNoZXMgbGF0ZXIgb24sIGZvciBpbnN0YW5jZSBpbiBhIGJ5LXJlZmVyZW5jZSBhcmd1bWVudCBwYXNzaW5nCglwcm9jZXNzLgoKMjAwMy0xMS0wNCAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZmllbGQpOiBObyBsb25nZXIgY2hlY2sgZm9yIEJMS21vZGUgYmVpbmcKCWFsaWduZWQgYXQgYnl0ZSBib3VuZGFyeS4KCjIwMDMtMTEtMDQgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGduYXQuY29tPgoKCSogZGVjbC5jIChjb21wb25lbnRzX3RvX3JlY29yZCk6IERvIG5vdCBkZWxldGUgdGhlIGVtcHR5IHZhcmlhbnRzIGZyb20KCXRoZSBlbmQgb2YgdGhlIHVuaW9uIHR5cGUuCgoyMDAzLTExLTA0ICBFZCBTY2hvbmJlcmcgIDxzY2hvbmJlcmdAZ25hdC5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fT3BfRXEpOiBVc2UgYmFzZSB0eXBlIHdoZW4gbG9jYXRpbmcgcHJpbWl0aXZlCglvcGVyYXRpb24gZm9yIGEgZGVyaXZlZCB0eXBlLCBhbiBleHBsaWNpdCBkZWNsYXJhdGlvbiBtYXkgdXNlIGEgbG9jYWwKCXN1YnR5cGUgb2YgQm9vbGVhbi4KCjIwMDMtMTEtMDQgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWFrZS5hZGIgKEduYXRtYWtlKTogQWxsb3cgbWFpbiBzb3VyY2VzIG9uIHRoZSBjb21tYW5kIGxpbmUgd2l0aCBhCglsaWJyYXJ5IHByb2plY3Qgd2hlbiBpdCBpcyBvbmx5IGZvciBjb21waWxhdGlvbiAobm8gYmluZGluZyBvcgoJbGlua2luZykuCgoyMDAzLTExLTA0ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgbWFueSBkdXBsaWNhdGUgdmFyaWFibGVzLgoKMjAwMy0xMS0wMyAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbiAoZHZpKTogTW92ZSB0YXJnZXRzIHRvICQoZG9jb2JqZGlyKS4KCShnbmF0X3VnX3Ztcy5kdmkpOiBTaW1wbGlmeSBydWxlIGFuZCBhZGp1c3QgdGFyZ2V0LgoJKGduYXRfdWdfd250LmR2aSk6IExpa2V3aXNlLgoJKGduYXRfdWdfdW54LmR2aSk6IExpa2V3aXNlLgoJKGduYXRfdWdfdnh3LmR2aSk6IExpa2V3aXNlLgoJKGduYXRfcm0uZHZpKTogTGlrZXdpc2UuCgkoZ25hdC1zdHlsZS5kdmkpOiBMaWtld2lzZS4KCjIwMDMtMTAtMzEgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBnaWdpLmg6IE1pc3NlZCBjb21taXQgZnJvbSB1cGRhdGUgZm9yIEM5MC4KCjIwMDMtMTAtMzEgIEtlbGxleSBDb29rICA8a2Nvb2tAZ2NjLmdudS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoYWRhL2JfZ25hdDEubyk6IENvbXBpbGUgd2l0aCAtV25vLWVycm9yLgoKMjAwMy0xMC0zMSAgQW5kcmVhcyBTY2h3YWIgIDxzY2h3YWJAc3VzZS5kZT4KCgkqIHJhaXNlLmMgKGdldF9hY3Rpb25fZGVzY3JpcHRpb25fZm9yKTogRml4IHR5cG8gaW4gbGFzdCBjaGFuZ2UuCgoyMDAzLTEwLTMxICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCglQUiBhZGEvMTI3NjEKCSogYWRhL01ha2UtbGFuZy5pbjogTW92ZSBkZWZhdWx0IGRlZmluaXRpb25zIG9mIFhfQURBX0NGTEFHUywKCVRfQURBX0NGTEFHUywgWF9BREFGTEFHUywgVF9BREFGTEFHUyBmcm9tIGhlcmUgdG8gbWFzdGVyIE1ha2VmaWxlLmluLgoKMjAwMy0xMC0zMCAgS2VsbGV5IENvb2sgIDxrY29va0BnY2MuZ251Lm9yZz4KCgkqIGFkYWRlY29kZS5jLCBhZGFpbnQuYywgYXJndi5jLCBhdXgtaW8uYywgY2FsLmMsIGNpby5jLCBjc3RyZWFtcy5jLAoJY3RybF9jLmMsIGN1aW50cC5jLCBkZWNsLmMsIGVycm5vLmMsIGV4aXQuYywgZXhwZWN0LmMsIGZpbmFsLmMsCglnaWdpLmgsIGdtZW0uYywgZ25hdGJsLmMsIGluaXQuYywgbWlzYy5jLCBta2Rpci5jLCByYWlzZS5jLCBzb2NrZXQuYywKCXN5c2RlcC5jLCBzeXNkZXAuYywgdGFyZ3R5cHMuYywgdGItYWx2bXMuYywgdGItYWx2eHcuYywgdHJhY2ViYWsuYywKCXRyYW5zLmMsIHV0aWxzLmMsIHV0aWxzMi5jOiBDb252ZXJ0IGZ1bmN0aW9uIHByb3RvdHlwZXMgdG8gQzkwLgoKMjAwMy0xMC0zMCAgVmFzaWxpeSBGb2Zhbm92ICA8Zm9mYW5vdkBhY3QtZXVyb3BlLmZyPgoKCSogM3Z0cmFzeW0uYWRiOgoJRGVtYW5nbGUgQWRhIHN5bWJvbHMgcmV0dXJuZWQgYnkgVEJLJFNZTUJPTElaRS4gQ29ycmVjdGx5IGFsaWduIGxpbmUKCW51bWJlcnMgd2hlbiBzeW1ib2wgbmFtZSBpcyB0b28gbG9uZy4KCjIwMDMtMTAtMzAgIEVkIEZhbGlzICA8ZmFsaXNAZ25hdC5jb20+CgoJKiBnLXNpZ25hbC5hZHMsIGctc2lnbmFsLmFkYjogTmV3IGZpbGVzCgoJKiBpbXB1bml0LmFkYjogKE5vbl9JbXBfRmlsZV9OYW1lcyk6IEFkZGVkICJnLXNpZ25hbCIKCgkqIE1ha2VmaWxlLnJ0bDogSW50cm9kdWNlIEdOQVQuU2lnbmFscwoKMjAwMy0xMC0zMCAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiBmcmVlemUuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGxpYi13cml0LmFkYiAoV3JpdGVfQUxJKTogTmV2ZXIgd3JpdGUgYWxpIGZpbGUgaWYgLWduYXRzIGlzIHNwZWNpZmllZAoKCSogcGFyLmFkYiwgcGFyLWNoMTIuYWRiLCBwYXItY2gxMy5hZGIsIHBhci1jaDIuYWRiLCBwYXItY2gzLmFkYiwKCXBhci1jaDUuYWRiLCBwYXItY2g2LmFkYiwgcGFyLWNoOS5hZGIsIHBhci11dGlsLmFkYjoKCU5ldyBoYW5kbGluZyBvZiBJZF9DaGVjayBwYXJhbWV0ZXIgdG8gaW1wcm92ZSByZWNvZ25pdGlvbiBvZiBrZXl3b3JkcwoJdXNlZCBhcyBpZGVudGlmaWVycy4KCVVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlIHRvIGluY2x1ZGUgMjAwMwoKMjAwMy0xMC0yOSAgUm9iZXJ0IERld2FyICA8ZGV3YXJAZ25hdC5jb20+CgoJKiAzdnRyYXN5bS5hZGIsIDV2dHJhZW50LmFkcywgc3ByaW50LmFkYiwKCXNlbV9jaDEwLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX0Fzc2lnbl9BcnJheSk6IFRlc3QgZm9yIGJpdCB1bmFsaWduZWQgb3BlcmFuZHMKCShFeHBhbmRfQXNzaWduX1JlY29yZCk6IFRlc3QgcmlnaHQgaGFuZCBzaWRlIGZvciBiaXQgdW5hbGlnbmVkIGFzIHdlbGwKCjIwMDMtMTAtMjkgIFZhc2lsaXkgRm9mYW5vdiAgPGZvZmFub3ZAYWN0LWV1cm9wZS5mcj4KCgkqIDN2dHJhc3ltLmFkYiwgNXZ0cmFlbnQuYWRiLCA1dnRyYWVudC5hZHMsIHRiLWFsdm1zLmM6CglTdXBwb3J0IGZvciBUQkskU1lNQk9MSVpFLWJhc2VkIHN5bWJvbGljIHRyYWNlYmFjay4KCjIwMDMtMTAtMjkgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIGV4cF9kaXNwLmFkYjoKCVJldmVydCBwcmV2aW91cyBjaGFuZ2UsIHRoYXQgZGlkIG5vdCB3b3JrIHdlbGwgd2hlbiBwcmFnbWEgTm9fUnVuX1RpbWUKCXdhcyB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSBydW4tdGltZSBvdGhlciB0aGFuIFpGUC4KCjIwMDMtMTAtMjkgIFZpbmNlbnQgQ2VsaWVyICA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWFrZS5hZGI6CgkoR25hdG1ha2UpOiBXaGVuIHRoZXJlIGFyZSBubyBBZGEgbWFpbnMgaW4gYXR0cmlidXRlIE1haW4sIGRpc2FibGUgdGhlCgkgYmluZCBhbmQgbGluayBzdGVwcyBvbmx5IGlzIHN3aXRjaCAteiBpcyBub3QgdXNlZC4KCjIwMDMtMTAtMjkgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogTWFrZWZpbGUuZ2VuZXJpYzogUmVtb3ZlIGR1cGxpY2F0ZWQgc2V0dGluZyBvZiBDQy4KCgkqIE1ha2VmaWxlLnByb2xvZzogU2V0IENDIHRvIGdjYyBieSBkZWZhdWx0LCB0byBvdmVycmlkZSBtYWtlJ3MKCWRlZmF1bHQgKGNjKS4KCgkqIGVpbmZvLmg6IFJlZ2VuZXJhdGVkLgoKMjAwMy0xMC0yOSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMTAuYWRiIChBbmFseXplX1N1YnVuaXQpOiBSZXN0b3JlIHN0YXRlIG9mIHN1cHByZXNzIGZsYWdzIGZvcgoJY3VycmVudCBib2R5LCBhZnRlciBjb21waWxpbmcgc3VidW5pdC4KCgkqIGl0eXBlcy5hZGIgKENyZWF0ZV9JdHlwZSk6IEluIEFTSVNfTW9kZSwgZG8gbm90IGZyZWV6ZSB0aGUgaXR5cGUKCXdoZW4gaW4gZGVsZXRlZCBjb2RlLCBiZWNhdXNlIGdpZ2kgbmVlZHMgcHJvcGVybHkgb3JkZXJlZCBmcmVlemUKCWFjdGlvbnMgdG8gYW5ub3RhdGUgdHlwZXMuCgoJKiBmcmVlemUuYWRiIChJc19GdWxseV9EZWZpbmVkKTogUHJlZGljYXRlIG11c3QgYmUgcmVjdXJzaXZlLCB0bwoJcHJldmVudCB0aGUgcHJlbWF0dXJlIGZyZWV6aW5nIG9mIHJlY29yZCB0eXBlIHRoYXQgY29udGFpbnMKCXN1YmNvbXBvbmVudHMgd2l0aCBhIHByaXZhdGUgdHlwZSB0aGF0IGRvZXMgbm90IHlldCBoYXZlIGEgY29tcGxldGlvbi4KCjIwMDMtMTAtMjkgIEphdmllciBNaXJhbmRhICA8bWlyYW5kYUBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYjoKCShBbmFseXplX1BhY2thZ2VfSW5zdGFudGlhdGlvbik6IENoZWNrIHRoYXQgaW5zdGFuY2VzIGNhbiBub3QgYmUgdXNlZCBpbgoJbGltaXRlZCB3aXRoX2NsYXVzZXMuCgoJKiBzZW1fY2g4LmFkYjoKCShBbmFseXplX1BhY2thZ2VfUmVuYW1pbmcpOiBDaGVjayB0aGF0IGxpbWl0ZWQgd2l0aGVkIHBhY2thZ2VzIGNhbm5vdAoJYmUgcmVuYW1lZC4gSW1wcm92ZSB0ZXh0IG9uIGVycm9yIG1lc3NhZ2VzIHJlbGF0ZWQgdG8gbGltaXRlZAoJd2l0aF9jbGF1c2VzLgoKCSogZWluZm8uYWRiLCBlaW5mby5hZHM6IFJlbW92ZSBOb25fTGltaXRlZF9WaWV3cyBhdHRyaWJ1dGUuCgoJKiBzcHJpbnQuYWRiOiAoU3ByaW50X05vZGVfQWN0dWFsKTogUHJpbnQgbGltaXRlZCB3aXRoX2NsYXVzZXMuCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCgkqIHNlbV9jaDEwLmFkYjogKEJ1aWxkX0xpbWl0ZWRfVmlld3MpOiBDb21wbGV0ZSBpdHMgZG9jdW1lbnRhdGlvbi4KCShJbnN0YWxsX0xpbWl0ZWRfQ29udGV4dF9DbGF1c2VzKTogTmV3IHN1YnByb2dyYW0gdGhhdCBpc29sYXRlcyBhbGwgdGhlCgljaGVja3MgcmVxdWlyZWQgZm9yIGxpbWl0ZWQgY29udGV4dF9jbGF1c2VzIGFuZCBpbnN0YWxscyB0aGUgbGltaXRlZAoJdmlldy4KCShJbnN0YWxsX0xpbWl0ZWRfV2l0aGVkX1VuaXQpOiBDb21wbGV0ZSBpdHMgZG9jdW1lbnRhdGlvbi4KCShBbmFseXplX0NvbnRleHQpOiBDaGVjayB0aGF0IGxpbWl0ZWQgd2l0aF9jbGF1c2VzIGFyZSBvbmx5IGFsbG93ZWQgaW4KCXBhY2thZ2Ugc3BlY3MuCgkoSW5zdGFsbF9Db250ZXh0KTogQ2FsbCBJbnN0YWxsX0xpbWl0ZWRfQ29udGV4dF9DbGF1c2VzIGFmdGVyIHRoZQoJcGFyZW50cyBoYXZlIGJlZW4gaW5zdGFsbGVkLgoJKEluc3RhbGxfTGltaXRlZF9XaXRoZWRfVW5pdCk6IEFkZCBkb2N1bWVudGF0aW9uLiBNYXJrIHRoZSBpbnN0YWxsZWQKCXBhY2thZ2UgYXMgJ0Zyb21fV2l0aF9UeXBlJzsgdGhpcyBtYXJrIGluZGljYXRlcyB0aGF0IHRoZSBsaW1pdGVkIHZpZXcKCWlzIGluc3RhbGxlZC4gVXNlZCB0byBjaGVjayBiYWQgdXNhZ2VzIG9mIGxpbWl0ZWQgd2l0aF9jbGF1c2VzLgoJKEJ1aWxkX0xpbWl0ZWRfVmlld3MpOiBEbyBub3QgYWRkIHNoYWRvdyBlbnRpdGllcyB0byB0aGUgc2NvcGUncyBsaXN0CglvZiBlbnRpdGllcy4gRG8gbm90IGFkZCByZWFsIGVudGl0aWVzIHRvIHRoZSBOb25fTGltaXRlZF9WaWV3cyBjaGFpbi4KCUltcHJvdmUgZXJyb3Igbm90aWZpY2F0aW9uLgoJKFJlbW92ZV9Db250ZXh0X0NsYXVzZXMpOiBSZW1vdmUgY29udGV4dCBjbGF1c2VzIGluIHR3byBwaGFzZXM6CglsaW1pdGVkIHZpZXdzIGZpcnN0IGFuZCByZWd1bGFyIHZpZXdzIGxhdGVyICh0byBtYWludGFpbiB0aGUKCXN0YWNrIG1vZGVsKS4KCShSZW1vdmVfTGltaXRlZF9XaXRoX0NsYXVzZSk6IElmIHRoZSBwYWNrYWdlIGlzIGFuYWx5emVkIHRoZW4gcmVpbnN0YWxsCglpdHMgdmlzaWJsZSBlbnRpdGllcy4KCjIwMDMtMTAtMjkgIFRob21hcyBRdWlub3QgIDxxdWlub3RAYWN0LWV1cm9wZS5mcj4KCgkqIHNlbV90eXBlLmFkYiAoU3BlY2lmaWNfVHlwZSk6IFR5cGUgVW5pdmVyc2FsX0ZpeGVkIGlzIGNvbXBhdGlibGUKCXdpdGggYW55IHR5cGUgdGhhdCBJc19GaXhlZF9Qb2ludF9UeXBlLgoKCSogc2luZm8uYWRzOiBGaXggZG9jdW1lbnRhdGlvbiBmb3IgQXNzb2NpYXRlZF9Ob2RlIGF0dHJpYnV0ZS4KCjIwMDMtMTAtMjkgIFNlcmdleSBSeWJpbiAgPHJ5YmluQGFjdC1ldXJvcGUuZnI+CgoJKiBzd2l0Y2gtYy5hZGIgKFNjYW5fRnJvbnRfRW5kX1N3aXRjaGVzKTogQVNJU19Nb2RlIGlzIHNldCBub3cgd2hlbgoJYm90aCAnLWduYXRjJyBhbmQgJy1nbmF0dCcgYXJlIHNwZWNpZmllZC4KCgkqIGF0cmVlLmFkYiAoSW5pdGlhbGl6ZSk6IEFkZCBpbml0aWFsaXphdGlvbiBmb3IgTm9kZV9Db3VudCAoc2V0IHRvCgl6ZXJvKS4KCjIwMDMtMTAtMjkgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQHZsc2kxLnVsdHJhLm55dS5lZHU+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSwgY2FzZSBFX1N1YnByb2dyYW0pOiBJZiBubyByZXR1cm4gdmFsdWUsCglkbyBub3QgY29uc2lkZXIgYXMgUHVyZS4KCglQYXJ0IG9mIGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9uLWF0LWEtdGltZToKCgkqIHRyYW5zLmMgKGduYXRfdG9fZ251X2NvZGUpOiBJZiBJU19TVE1ULCBjYWxsIGV4cGFuZF9leHByX3N0bXQuCgkodHJlZV90cmFuc2Zvcm0pOiBBZGQgbmV3IGFyZ3VtZW50IHRvIGJ1aWxkX2NvbXBvbmVudF9yZWYuCgkodHJlZV90cmFuc2Zvcm0sIGNhc2UgTl9Bc3NpZ25tZW50X1N0YXRlbWVudCk6IE1ha2UgYW5kIHJldHVybiBhbgoJRVhQUl9TVE1ULgoJKHRyZWVfdHJhbnNmb3JtKTogSWYgcmVzdWx0IElTX1NUTVQsIHNldCBmbGFncyBhbmQgcmV0dXJuIGl0LgoJKGduYXRfZXhwYW5kX3N0bXQsIHNldF9saW5lbm9fZnJvbV9zbG9jKTogTmV3IGZ1bmN0aW9ucy4KCgkqIHV0aWxzMi5jIChidWlsZF9zaW1wbGVfY29tcG9uZW50X3JlZiwgYnVpbGRfY29tcG9uZW50X3JlZik6IEFkZCBuZXcKCWFyZywgTk9fRk9MRF9QLgoJKGJ1aWxkX2JpbmFyeV9vcCwgY2FzZSBFUV9FWFBSKTogUGFzcyBhZGRpdGlvbmFsIGFyZyB0byBpdC4KCShidWlsZF9hbGxvY2F0b3IpOiBMaWtld2lzZS4KCgkqIHV0aWxzLmMgKGNvbnZlcnRfdG9fZmF0X3BvaW50ZXIsIGNvbnZlcnRfdG9fdGhpbl9wb2ludGVyLCBjb252ZXJ0KToKCUFkZCBuZXcgYXJnIHRvIGJ1aWxkX2NvbXBvbmVudF9yZWYuCgkobWF5YmVfdW5jb25zdHJhaW5lZF9hcnJheSwgdW5jaGVja2VkX2NvbnZlcnQpOiBMaWtld2lzZS4KCgkqIGFkYS10cmVlLmRlZiAoRVhQUl9TVE1UKTogTmV3IGNvZGUuCgoJKiBhZGEtdHJlZS5oIChJU19TVE1ULCBUUkVFX1NMT0MsIEVYUFJfU1RNVF9FWFBSKTogTmV3IG1hY3Jvcy4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIG9iamVjdCk6IEFkZCBleHRyYSBhcmcgdG8KCWJ1aWxkX2NvbXBvbmVudF9yZWYgY2FsbHMuCgoJKiBtaXNjLmMgKGduYXRfZXhwYW5kX2V4cHIpOiBJZiBJU19TVE1ULCBjYWxsIGduYXRfZXhwYW5kX3N0bXQuCgoJKiBnaWdpLmggKGduYXRfZXhwYW5kX3N0bXQsIHNldF9saW5lbm9fZnJvbV9zbG9jKTogTmV3IGZ1bmN0aW9ucy4KCShidWlsZF9jb21wb25lbnRfcmVmKTogQWRkIG5ldyBhcmd1bWVudCwgTk9fRk9MRF9QLgoKMjAwMy0xMC0yNyAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5nZW5lcmljOiBBZGQgbWlzc2luZyBzdWJzdGl0dXRpb24gb24gb2JqZWN0X2RlcHMgaGFuZGxpbmcuCgoJUFIgYWRhLzU5MDkKCSogTWFrZS1sYW5nLmluIChjaGVjay1hZGEpOiBFbmFibGUgQUNBVFMgdGVzdCBzdWl0ZS4KCjIwMDMtMTAtMjcgIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogZXhwX2NoMy5hZGI6CgkoRnJlZXplX0FycmF5X1R5cGUpOiBXZSBkbyBub3QgbmVlZCBhbiBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciB0eXBlcwoJZGVyaXZlZCBmcm9tIFN0cmluZyBvciBXaWRlX1N0cmluZy4gVGhleSBzaG91bGQgYmUgdHJlYXRlZCB0aGUgc2FtZQoJYXMgU3RyaW5nIGFuZCBXaWRlX1N0cmluZyB0aGVtc2VsdmVzLiBUaGlzIGNhdXNlZCBwcm9ibGVtcyB3aXRoIHRoZQoJdXNlIG9mIEluaXRpYWxpemVfU2NhbGFycy4KCgkqIGV4cF9jaDUuYWRiOgoJKEV4cGFuZF9Bc3NpZ25fUmVjb3JkKTogRG8gY29tcG9uZW50LXdpc2UgYXNzaWdubWVudCBvZiBub24tYnl0ZSBhbGlnbmVkCgljb21wb3NpdGVzLiBUaGlzIGFsbG93cyB1c2Ugb2YgY29tcG9uZW50IGNsYXVzZXMgdGhhdCBhcmUgbm90IGJ5dGUKCWFsaWduZWQuCgoJKiBzZW1fcHJhZy5hZGI6CgkoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgUGFjayk6IEdlbmVyYXRlIHdhcm5pbmcgYW5kIGlnbm9yZSBwYWNrIGlmIHRoZXJlCglpcyBhbiBhdHRlbXB0IHRvIHBhY2sgYW4gYXJyYXkgb2YgYXRvbWljIG9iamVjdHMuCgoJKiBtYWtlLmFkYiwgcHJqLWVudi5hZGIsIHByai1lbnYuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDMtMTAtMjcgIFBhc2NhbCBPYnJ5ICA8b2JyeUBnbmF0LmNvbT4KCgkqIGctZGlyb3BlLmFkYjoKCShCYXNlbmFtZSk6IENoZWNrIGZvciBkcml2ZSBsZXR0ZXJzIGluIGEgcGF0aG5hbWUgb25seSBvbiBET1MgYmFzZWQgT1MuCgoyMDAzLTEwLTI3ICBWaW5jZW50IENlbGllciAgPGNlbGllckBnbmF0LmNvbT4KCgkqIG1ha2UuYWRiOgoJKEduYXRtYWtlKTogV2hlbiB1bmFibGUgdG8gY2hhbmdlIGRpciB0byB0aGUgb2JqZWN0IGRpciwgZGlzcGxheSB0aGUKCWNvbnRlbnQgb2YgdGhlIHBhcmVudCBkaXIgb2YgdGhlIG9iaiBkaXIsIHRvIHRyeSB0byB1bmRlcnN0YW5kIHdoeSB0aGlzCgloYXBwZW5zLgoKMjAwMy0xMC0yNyAgR05BVCBTY3JpcHQgIDxub2JvZHlAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IE1ha2VmaWxlIGF1dG9tYXRpY2FsbHkgdXBkYXRlZAoKMjAwMy0xMC0yNyAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJnQGduYXQuY29tPgoKCSogc2VtX2NoMTIuYWRiOgoJKElubGluZV9JbnN0YW5jZV9Cb2R5KTogSW5kaWNhdGUgdGhhdCB0aGUgc2F2ZS9yZXN0b3JlIG9mIHVzZV9jbGF1c2VzCglzaG91bGQgbm90IGJlIGRvbmUgaW4gU2F2ZS9SZXN0b3JlX1Njb3BlX1N0YWNrLCBiZWNhdXNlIGl0IGlzIHBlcmZvcm1lZAoJbG9jYWxseS4KCgkqIHNlbV9jaDguYWRiOgoJKFNhdmVfU2NvcGVfU3RhY2ssIFJlc3RvcmVfU2NvcGVfU3RhY2spOiBBZGQgcGFyYW1ldGVyIHRvIGluZGljYXRlCgl3aGV0aGVyIHVzZSBjbGF1c2VzIHNob3VsZCBiZSByZW1vdmVkL3Jlc3RvcmVkLgoKCSogc2VtX2NoOC5hZHM6CgkoU2F2ZV9TY29wZV9TdGFjaywgUmVzdG9yZV9TY29wZV9TdGFjayk6IEFkZCBwYXJhbWV0ZXIgdG8gaW5kaWNhdGUKCXdoZXRoZXIgdXNlIGNsYXVzZXMgc2hvdWxkIGJlIHJlbW92ZWQvcmVzdG9yZWQuCgoyMDAzLTEwLTI2ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbjogUmVtb3ZlIGR1cGxpY2F0ZWQgbGluZXMuCgoyMDAzLTEwLTI0ICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIGduYXR2c24uYWRzIChHbmF0X1N0YXRpY19WZXJzaW9uX1N0cmluZyk6IE5ldyBjb25zdGFudCwgdXNlZCB0bwoJbWluaW1pemUgdGhlIGRpZmZlcmVuY2VzIHdpdGggQUNUIHRyZWUuCgoJKiBnbmF0a3IuYWRiLCBnbmF0bGluay5hZGIsIGduYXRscy5hZGIsIGduYXRtYWtlLmFkYiwKCWduYXRwcmVwLmFkYiwgZ25hdHBzdGEuYWRiLCBnbmF0dnNuLmFkczogVGFrZSBhZHZhbnRhZ2Ugb2YKCUduYXR2c24uR25hdF9TdGF0aWNfVmVyc2lvbl9TdHJpbmcgdG8gcmVkdWNlIGRpZmZlcmVuY2VzIGJldHdlZW4KCUFDVCBhbmQgRlNGIHRyZWVzLgoKMjAwMy0xMC0yNCAgUGFzY2FsIE9icnkgIDxvYnJ5QGduYXQuY29tPgoKCVBSIGFkYS8xMjAxNAoJKiBhZGFkZWNvZGUuYyAob3N0cmNweSk6IE5ldyBmdW5jdGlvbi4KCShfX2duYXRfZGVjb2RlKTogVXNlIG9zdHJjcHkgb2Ygc3RyY3B5LgoJKGhhc19wcmVmaXgpOiBTZXQgZmlyc3QgcGFyYW1ldGVyIGEgY29uc3QuCgkoaGFzX3N1ZmZpeCk6IFNldCBmaXJzdCBwYXJhbWV0ZXIgYSBjb25zdC4KCVVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLiBGaXggc291cmNlIG5hbWUgaW4gaGVhZGVyLgoJUmVtb3ZlcyBhIHRyYWlsaW5nIHNwYWNlLgoKMjAwMy0xMC0yNCAgSm9zZSBSdWl6ICA8cnVpekBhY3QtZXVyb3BlLmZyPgoKCSogZXhwX2Rpc3AuYWRiOgoJUmVtb3ZlIHRoZSB0ZXN0IGFnYWluc3QgYmVpbmcgaW4gTm9fUnVuX1RpbWVfTW9kZSBiZWZvcmUgZ2VuZXJhdGluZyBhCgljYWxsIHRvIFJlZ2lzdGVyX1RhZy4gSXQgaXMgcmVkdW5kYW50IHdpdGggdGhlIHRlc3QgYWdhaW5zdCB0aGUKCWF2YWlsYWJpbGl0eSBvZiB0aGUgZnVuY3Rpb24gUmVnaXN0ZXJfVGFnLgoKMjAwMy0xMC0yNCAgVmluY2VudCBDZWxpZXIgIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBnLWNhdGlpby5hZGI6IChNb250aF9OYW1lKTogQ29ycmVjdCBzcGVsbGluZyBvZiBGZWJydWFyeQoKCSogbWFrZS5hZGI6IChNYWlucyk6IE5ldyBwYWNrYWdlCgkoSW5pdGlhbGl6ZSk6IENhbGwgTWFpbnMuRGVsZXRlCgkoR25hdG1ha2UpOiBDaGVjayB0aGF0IGVhY2ggbWFpbiBvbiB0aGUgY29tbWFuZCBsaW5lIGlzIGEgc291cmNlIG9mIGEKCXByb2plY3QgZmlsZSBhbmQsIGlmIHRoZXJlIGFyZSBzZXZlcmFsIG1haW5zLCBlYWNoIG9mIHRoZW0gaXMgYSBzb3VyY2UKCW9mIHRoZSBzYW1lIHByb2plY3QgZmlsZS4KCShHbmF0bWFrZSk6IFdoZW4gYSBmb3JlaWduIGxhbmd1YWdlIGlzIHNwZWNpZmllZCBpbiBhdHRyaWJ1dGUgTGFuZ3VhZ2VzLAoJbm8gbWFpbiBpcyBzcGVjaWZpZWQgb24gdGhlIGNvbW1hbmQgbGluZSBhbmQgYXR0cmlidXRlIE1haW5zIGlzIG5vdAoJZW1wdHksIG9ubHkgYnVpbGQgdGhlIEFkYSBtYWluLiBJZiB0aGVyZSBpcyBubyBBZGEgbWFpbiwganVzdCBjb21waWxlCgl0aGUgQWRhIHNvdXJjZXMgYW5kIHRoZWlyIGNsb3N1cmUuCgkoR25hdG1ha2UpOiBJZiBhIG1haW4gaXMgc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kIGxpbmUgd2l0aCBkaXJlY3RvcnkKCWluZm9ybWF0aW9uLCBjaGVjayB0aGF0IHRoZSBzb3VyY2UgZXhpc3RzIGFuZCwgaWYgaXQgZG9lcywgdGhhdCB0aGUgcGF0aAoJaXMgdGhlIGFjdHVhbCBwYXRoIG9mIGEgc291cmNlIG9mIGEgcHJvamVjdC4KCgkqIHByai1lbnYuYWRiOgoJKEZpbGVfTmFtZV9PZl9MaWJyYXJ5X1VuaXRfQm9keSk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBGdWxsX1BhdGguIFdoZW4KCUZ1bGxfUGF0aCBpcyBUcnVlLCByZXR1cm4gdGhlIGZ1bGwgcGF0aCBpbnN0ZWFkIG9mIHRoZSBzaW1wbGUgZmlsZSBuYW1lLgoJKFByb2plY3RfT2YpOiBOZXcgZnVuY3Rpb24KCgkqIHByai1lbnYuYWRzOgoJKEZpbGVfTmFtZV9PZl9MaWJyYXJ5X1VuaXRfQm9keSk6IE5ldyBCb29sZWFuIHBhcmFtZXRlciBGdWxsX1BhdGgsCglkZWZhdWx0ZWQgdG8gRmFsc2UuCgkoUHJvamVjdF9PZik6IE5ldyBmdW5jdGlvbgoKMjAwMy0xMC0yNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBNYWtlZmlsZS5nZW5lcmljOgoJRW5zdXJlIG9iamVjdHMgb2YgbWFpbiBwcm9qZWN0IGFyZSBhbHdheXMgY2hlY2tlZCBhbmQgcmVidWlsdCBpZiBuZWVkZWQuCglTZXQgQ0MgdG8gZ2NjIGJ5IGRlZmF1bHQuCglQcmVwYXJlIG5ldyBoYW5kbGluZyBvZiBsaW5rIGJ5IGNyZWF0aW5nIGEgZ2xvYmFsIGFyY2hpdmUgKG5vdCBhY3RpdmF0ZWQKCXlldCkuCgoJKiBhZGFkZWNvZGUuaCwgYXRyZWUuaCwgZWxpc3RzLmgsIG5saXN0cy5oLCByYWlzZS5oLAoJc3RyaW5ndC5oOiBVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4gUmVtb3ZlIHRyYWlsaW5nIGJsYW5rcy4KCUZpeCBzb3VyY2UgbmFtZSBpbiBoZWFkZXIuCgoyMDAzLTEwLTI0ICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBzZW1fY2gzLmFkYjoKCU1pbm9yIHJlZm9ybWF0dGluZyAoaW5jbHVkaW5nIG5ldyBmdW5jdGlvbiByZXR1cm4gc3R5bGUgdGhyb3VnaG91dCkKCgkqIHNlbV9jaDMuYWRzOgoJTWlub3IgcmVmb3JtYXR0aW5nIChpbmNsdWRpbmcgbmV3IGZ1bmN0aW9uIHJldHVybiBzdHlsZSB0aHJvdWdob3V0KQoKMjAwMy0xMC0yNCAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJKiBhZGFkZWNvZGUuaCwgYXRyZWUuaCwgZWxpc3RzLmgsIG5saXN0cy5oLCByYWlzZS5oLAoJc3RyaW5ndC5oOiBVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4gUmVtb3ZlIHRyYWlsaW5nIGJsYW5rcy4KCUZpeCBzb3VyY2UgbmFtZSBpbiBoZWFkZXIuCgoyMDAzLTEwLTI0ICBHTkFUIFNjcmlwdCAgPG5vYm9keUBnbmF0LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogTWFrZWZpbGUgYXV0b21hdGljYWxseSB1cGRhdGVkCgoyMDAzLTEwLTIzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGFkYWRlY29kZS5oLCBhdHJlZS5oLCBlbGlzdHMuaCwgbmFtZXQuaCwgbmxpc3RzLmgsIHJhaXNlLmgsCglzdHJpbmd0Lmg6IENvbnZlcnQgdG8gSVNPIEM5MCBkZWNsYXJhdGlvbnMgYW5kIGRlZmluaXRpb25zLgoKMjAwMy0xMC0yMyAgVGhvbWFzIFF1aW5vdCAgPHF1aW5vdEBhY3QtZXVyb3BlLmZyPgoKCVBSIGFkYS8xMTk3OAoJKiBleHBfY2gxMy5hZGIgKEV4cGFuZF9OX0ZyZWV6ZV9FbnRpdHkpOiBEbyBub3QgY29uc2lkZXIgaW5oZXJpdGVkCglFeHRlcm5hbF9UYWcgYXR0cmlidXRlIGRlZmluaXRpb24gY2xhdXNlcy4KCjIwMDMtMTAtMjMgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCglQUiBhZGEvNzYxMwoJKiBleHBfZGJ1Zy5hZGIgKERlYnVnX1JlbmFtaW5nX0RlY2xhcmF0aW9uKTogRm9yIHRoZSByZW5hbWluZyBvZiBhCgljaGlsZCB1bml0LCBnZW5lcmF0ZSBhIGZ1bGx5IHF1YWxpZmllZCBuYW1lIHRvIGF2b2lkIHNwdXJpb3VzIGVycm9ycwoJd2hlbiB0aGUgY29udGV4dCBjb250YWlucyByZW5hbWluZ3Mgb2YgZGlmZmVyZW50IGNoaWxkIHVuaXRzIHdpdGgKCXRoZSBzYW1lIHNpbXBsZSBuYW1lLgoKCSogZXhwX2RidWcuYWRzOiBBZGQgZG9jdW1lbnRhdGlvbiBvbiBuYW1lIHF1YWxpZmljYXRpb24gZm9yIHJlbmFtaW5ncwoJb2YgY2hpbGQgdW5pdHMuCgoyMDAzLTEwLTIzICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIGctcmVncGF0LmFkcywgZy1yZWdwYXQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDMtMTAtMjMgIEpvc2UgUnVpeiAgPHJ1aXpAYWN0LWV1cm9wZS5mcj4KCgkqIE1ha2VmaWxlLmluOiBVc2UgdGhlIGZpbGUgMWF0YWdzLmFkcyB3aXRoIHRoZSBaRlAgYW5kIGNlcnQgcnVuLXRpbWVzLgoKMjAwMy0xMC0yMyAgUmljaGFyZCBLZW5uZXIgIDxrZW5uZXJAdmxzaTEudWx0cmEubnl1LmVkdT4KCgkqIHRyYW5zLmM6ICh0cmVlX3RyYW5zZm9ybSwgY2FzZSBOX1JlYWxfTGl0ZXJhbCk6IEFkZCBleHRyYSBhcmcgdG8KCU1hY2hpbmUgY2FsbC4KCgkqIHVyZWFscC5oOiAoTWFjaGluZSk6IFVwZGF0ZSB0byBwcm9wZXIgZGVmaW5pdGlvbi4KCjIwMDMtMTAtMjMgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogaW5pdC5jLCBhZGFpbnQuYzogTWlub3IgcmVmb3JtYXR0aW5nLgoKMjAwMy0xMC0yMyAgRGFubnkgU21pdGggIDxkYW5ueXNtaXRoQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KCgkqIGFkYWludC5jICh3MzJfZXBvY2hfb2Zmc2V0KTogRGVmaW5lIHN0YXRpYyBjb25zdCBhdCBmaWxlIGxldmVsLgoJKHdpbjMyX2ZpbGV0aW1lKTogUmVwbGFjZSBvZmZzZXQgd2l0aCB3MzJfZXBvY2hfb2Zmc2V0LiBVc2UgTlVMTAoJcmF0aGVyIHRoYW4gdF9jcmVhdGUsIHRfYWNjZXNzIGluIGNhbGwgdG8gR2V0RmlsZVRpbWUuIFVzZSB1bmlvbgoJdG8gY29udmVydCBiZXR3ZWVuIEZJTEVUSU1FIGFuZCAgdW5zaWduZWQgbG9uZyBsb25nLgoJKF9fZ25hdF9maWxlX3RpbWVfbmFtZSk6IFRlc3QgZm9yIGludmFsaWQgZmlsZSBoYW5kbGUuCgkoX19nbmF0X3NldF9maWxldGltZV9uYW1lKTogU3VwcG9ydCB3aW4zMiB0YXJnZXRzIHVzaW5nCgl3MzJhcGkgU2V0RmlsZVRpbWUuCgoyMDAzLTEwLTIyICBEYW5ueSBTbWl0aCAgPGRhbm55c21pdGhAdXNlcnMuc291cmNlZm9yZ2UubmV0PgoKCSogc3lzZGVwLmM6IEluY2x1ZGUgY29uaW8uaCBpZiBfX01JTkdXMzJfXyBhbmQgIU9MRF9NSU5HVy4KCgkqIGN0cmxfYy5jIChfX2duYXRfaW50X2hhbmRsZXIpOiBSZW1vdmUgZGVjbGFyYXRpb24uCgoJKiBkZWNsLmMgKGNyZWF0X2NvbmNhdF9uYW1lKTogIENvbnN0LWlmeSBwcmVmaXguCgoJKiBhZGFpbnQuYzogSW5jbHVkZSBjdHlwZS5oIGlmIF9fTUlOR1czMl9fLgoJKF9fZ25hdF9yZWFkbGluayk6IE1hcmsgYXJndW1lbnRzIGFzIHBvc3NpYmx5IHVudXNlZC4KCShfX2duYXRfc3ltbGluayk6IExpa2V3aXNlLgoJKF9fZ25hdF9pc19zeW1ib2xpY19saW5rKTogTGlrZXdpc2UuCgkoX19nbmF0X3BvcnRhYmxlX3NwYXduKTogTGlrZXdpc2UuICBDYXN0IGxhc3QgYXJnIG9mIHNwYXdudnAgdG8gbWF0Y2gKCWRlY2xhcmF0aW9uCgkoX19nbmF0X2ZpbGVfdGltZV9uYW1lKTogRG9uJ3QgZGVjbGFyZSBzdHJ1Y3Qgc3RhdCBzdGF0YnVmIHdoZW4KCW5vdCBuZWVkZWQuCgkoX19nbmF0X2lzX2Fic29sdXRlX3BhdGgpOiBBZGQgcGFyZW50aGVzaXMgYXJvdW5kIGNvbmRpdGlvbiBvZgoJJ2lmJyBzdGF0ZW1lbnQgdG8gYXZvaWQgd2FybmluZy4KCShfX2duYXRfcGxpc3RfaW5pdCk6IFNwZWNpZnkgdm9pZCBhcyBwYXJhbWV0ZXIuCgkocGxpc3RfZW50ZXIpOiBMaWtld2lzZS4KCShwbGlzdF9sZWF2ZSk6IExpa2V3aXNlLgoJKHJlbW92ZV9oYW5kbGUpOiBNYWtlIHN0YXRpYy4gSW5pdGlhbGl6ZSBwcmV2LgoKMjAwMy0xMC0yMiAgQXJuYXVkIENoYXJsZXQgIDxjaGFybGV0QGFjdC1ldXJvcGUuZnI+CgoJUFIgYWRhLzEwMTEwCgkqIE1ha2VmaWxlLmluOiBEaXNhYmxlIGJ1aWxkIG9mIGduYXRwc3RhLgoJKiBjc3RyZWFtcy5jIChfX2duYXRfZnVsbF9uYW1lKTogTWlub3IgaW1wcm92ZW1lbnRzIGFuZCBjbGVhbiB1cAoJb2YgcHJldmlvdXMgY2hhbmdlLgoKMjAwMy0xMC0yMiAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiB0cmFjZWJhay5jIChNQVgpOiBBdm9pZCByZWRlZmluaXRpb24gd2FybmluZy4KCgkqIGluaXQuYyBbc2dpXSAoX19nbmF0X2Vycm9yX2hhbmRsZXIpOiBSZW1vdmUgaSwgdW51c2VkLgoJQ2hhbmdlIG1zZyB0byBjb25zdCBjaGFyICouCgkoX19nbmF0X2luc3RhbGxfaGFuZGxlcik6IFJlbW92ZSBzcywgdW51c2VkLgoJW3N1biAmJiBfX1NWUjQgJiYgIV9fdnh3b3Jrc10gKF9fZ25hdF9lcnJvcl9oYW5kbGVyKTogQ2hhbmdlIG1zZwoJdG8gY29uc3QgY2hhciAqLgoJKiBjc3RyZWFtcy5jIChfX2duYXRfZnVsbF9uYW1lKTogRGVjbGFyZSBwIG9ubHkgd2hlbiB1c2VkLgoJKF9fZ25hdF9mdWxsX25hbWUpIFtzZ2ldIFJldHVybiBidWZmZXIuCgoyMDAzLTEwLTIyICBBcm5hdWQgQ2hhcmxldCAgPGNoYXJsZXRAYWN0LWV1cm9wZS5mcj4KCgkqIG1pbmd3MzIuaDogTmV3IGZpbGUuCgkqIGduYXRfd3JhcHBlci5hZGI6IE5ldyBmaWxlLgoKMjAwMy0xMC0yMiAgSmVyb21lIFJvdXNzZWwgIDxyb3Vzc2VsQGFjdC1ldXJvcGUuZnI+CgoJKiBnLXJlZ3BhdC5hZHMsIGctcmVncGF0LmFkYiAoTWF0Y2gpOiBuZXcgZnVuY3Rpb24sIHRvIGtub3cgaWYgYQoJc3RyaW5nIG1hdGNoIGEgcHJlIGNvbXBpbGVkIHJlZ3VsYXIgZXhwcmVzc2lvbiAodGhlIGNvcnJlc3BvbmRpbmcKCXZlcnNpb24gb2YgdGhlIGZ1bmN0aW9uIHdvcmtpbmcgb24gYSByYXcgcmVndWxhciBleHByZXNzaW9uKQoJRml4IHR5cG9zIGluIHZhcmlvdXMgY29tbWVudHMKCVVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlIGluIHNwZWMKCjIwMDMtMTAtMjEgIEdhcnkgRGlzbXVrZXMgIDxkaXNtdWtlc0BnbmF0LmNvbT4KCgkqIGV4cF9jaDMuYWRiOgoJKENvbXBvbmVudF9OZWVkc19TaW1wbGVfSW5pdGlhbGl6YXRpb24pOiBSZXR1cm4gRmFsc2Ugd2hlbiB0aGUgdHlwZSBpcyBhCglwYWNrZWQgYml0IGFycmF5LiBSZXZpc2Ugc3BlYyBjb21tZW50cyB0byBkb2N1bWVudCB0aGlzIGNhc2UuCgoJKiBleHBfcHJhZy5hZGI6CgkoRXhwYW5kX1ByYWdtYV9JbXBvcnQpOiBTZXQgYW55IGV4cHJlc3Npb24gb24gdGhlIGltcG9ydGVkIG9iamVjdCB0bwoJZW1wdHkgdG8gYXZvaWQgaW5pdGlhbGl6aW5nIGltcG9ydGVkIG9iamVjdHMgKGluIHBhcnRpY3VsYXIgdGhpcwoJY292ZXJzIHRoZSBjYXNlIG9mIHplcm8taW5pdGlhbGl6YXRpb24gb2YgYml0IGFycmF5cykuCglVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCjIwMDMtMTAtMjEgIEVkIFNjaG9uYmVyZyAgPHNjaG9uYmVyZ0BnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYjoKCShMb2FkX1BhcmVudF9PZl9HZW5lcmljKTogSWYgcGFyZW50IGlzIGNvbXBpbGF0aW9uIHVuaXQsIHN0b3Agc2VhcmNoLAoJYSBzdWJ1bml0IGlzIG1pc3NpbmcuCgkoSW5zdGFudGlhdGVfU3VicHJvZ3JhbV9Cb2R5KTogSWYgYm9keSBvZiBmdW5jdGlvbiBpcyBtaXNzaW5nLCBzZXQgdHlwZQoJb2YgcmV0dXJuIGV4cHJlc3Npb24gZXhwbGljaXRseSBpbiBkdW1teSBib2R5LCB0byBwcmV2ZW50IGNhc2NhZGVkCgllcnJvcnMgd2hlbiBhIHN1YnVuaXQgaXMgbWlzc2luZy4KCUZpeGVzIFBSIDU2NzcuCgoJKiBzZW1fY2gzLmFkYjoKCShBY2Nlc3NfU3VicHJvZ3JhbV9EZWNsYXJhdGlvbik6IFZlcmlmeSB0aGF0IHJldHVybiB0eXBlIGlzIHZhbGlkLgoJRml4ZXMgUFIgODY5My4KCgkqIHNlbV9lbGFiLmFkYjoKCShDaGVja19FbGFiX0NhbGxzKTogRG8gbm90IGFwcGx5IGVsYWJvcmF0aW9uIGNoZWNrcyBpZiB0aGUgbWFpbiB1bml0IGlzCglnZW5lcmljLgoJRml4ZXMgUFIgMTIzMTguCgoJKiBzZW1fdXRpbC5hZGI6CgkoQ29ycmVzcG9uZGluZ19EaXNjcmltaW5hbnQpOiBJZiB0aGUgc2NvcGUgb2YgdGhlIGRpc2NyaW1pbmFudCBpcyBhCglwcml2YXRlIHR5cGUgd2l0aG91dCBkaXNjcmltaW5hbnQsIHVzZSBpdHMgZnVsbCB2aWV3LgoJRml4ZXMgUFIgODI0Ny4KCjIwMDMtMTAtMjEgIEFybmF1ZCBDaGFybGV0ICA8Y2hhcmxldEBhY3QtZXVyb3BlLmZyPgoKCSogM3Bzb2Njb24uYWRzLCAzdmVhY29kdS5hZGIsIDN2ZXhwZWN0LmFkYiwgM3Zzb2Njb24uYWRzLAoJM3Zzb2N0aGkuYWRiLCAzdnNvY3RoaS5hZHMsIDN2dHJhc3ltLmFkYiwgM3pzb2Njb24uYWRzLAoJM3pzb2N0aGkuYWRiLCAzenNvY3RoaS5hZHMsIDUwc3lzdGVtLmFkcywgNTFzeXN0ZW0uYWRzLAoJNTVzeXN0ZW0uYWRzLCA1Nm9zaW50ZS5hZGIsIDU2b3NpbnRlLmFkcywgNTZ0YXByb3AuYWRiLAoJNTZ0YXNwcmkuYWRzLCA1NnRwb3BzcC5hZGIsIDU3c3lzdGVtLmFkcywgNThzeXN0ZW0uYWRzLAoJNTlzeXN0ZW0uYWRzLCA1YW1sLXRndC5hZGIsIDVibWwtdGd0LmFkYiwgNWNzeXN0ZW0uYWRzLAoJNWRzeXN0ZW0uYWRzLCA1Zm9zaW50ZS5hZGIsIDVnbWwtdGd0LmFkYiwgNWhtbC10Z3QuYWRiLAoJNWlzeXN0ZW0uYWRzLCA1bHBhcmFtZS5hZGIsIDVtc3lzdGVtLmFkcywgNXBzeXN0ZW0uYWRzLAoJNXNtbC10Z3QuYWRiLCA1c29zcHJpbS5hZGIsIDVzdHBvcHNwLmFkYiwgNXRzeXN0ZW0uYWRzLAoJNXVzeXN0ZW0uYWRzLCA1dm1sLXRndC5hZGIsIDV2c3ltYm9sLmFkYiwgNXZ0cmFlbnQuYWRiLAoJNXZ0cmFlbnQuYWRzLCA1d21sLXRndC5hZGIsIDV4cGFyYW1lLmFkcywgNXhzeXN0ZW0uYWRzLAoJNXh2eHdvcmsuYWRzLCA1eXBhcmFtZS5hZHMsIDV5dGlpdGhvLmFkYiwgNXppbml0LmFkYiwKCTV6bWwtdGd0LmFkYiwgNXpwYXJhbWUuYWRzLCA1enRhc3ByaS5hZHMsIDV6dGZzZXRyLmFkYiwKCTV6dGhyaW5pLmFkYiwgNXp0aWl0aG8uYWRiLCA1enRwb3BzcC5hZGIsIDdzdGZzZXRyLmFkYiwKCTdzdHJhY2VzLmFkYiwgN3N0cmFmb3IuYWRiLCA3c3RyYWZvci5hZHMsIDdzdHJhdGFzLmFkYiwKCWEtZXhjYWNoLmFkYiwgYS1leGV4ZGEuYWRiLCBhLWV4ZXhwci5hZGIsIGEtZXhleHRyLmFkYiwKCWEtZXhzdGF0LmFkYiwgYS1zdHJzdXAuYWRiLCBhLXN0cnN1cC5hZHMsIGEtc3R3aXN1LmFkYiwKCWEtc3R3aXN1LmFkcywgYmxkLmFkYiwgYmxkLmFkcywgYmxkLWlvLmFkYiwKCWJsZC1pby5hZHMsIGNsZWFuLmFkYiwgY2xlYW4uYWRzLCBjdHJsX2MuYywKCWVycm91dGMuYWRiLCBlcnJvdXRjLmFkcywgZXJydXRpbC5hZGIsIGVycnV0aWwuYWRzLAoJZXJyX3ZhcnMuYWRzLCBmaW5hbC5jLCBnLWFycnNwbC5hZGIsIGctYXJyc3BsLmFkcywKCWctYm91YnVmLmFkYiwgZy1ib3VidWYuYWRzLCBnLWJvdW1haS5hZHMsIGctYnVic29yLmFkYiwKCWctYnVic29yLmFkcywgZy1jb212ZXIuYWRiLCBnLWNvbXZlci5hZHMsIGctY3RybF9jLmFkcywKCWctZHluaHRhLmFkYiwgZy1keW5odGEuYWRzLCBnLWVhY29kdS5hZGIsIGctZXhjYWN0LmFkYiwKCWctZXhjYWN0LmFkcywgZy1oZWFzb3IuYWRiLCBnLWhlYXNvci5hZHMsIGctbWVtZHVtLmFkYiwKCWctbWVtZHVtLmFkcywgZ25hdGNsZWFuLmFkYiwgZ25hdHN5bS5hZGIsIGctcGVoYWdlLmFkYiwKCWctcGVoYWdlLmFkcywgZy1wZXJoYXMuYWRzLCBncHIybWFrZS5hZGIsIGdwcjJtYWtlLmFkcywKCWdwcmNtZC5hZGIsIGdwcmVwLmFkYiwgZ3ByZXAuYWRzLCBnLXNlbWFwaC5hZGIsCglnLXNlbWFwaC5hZHMsIGctc3RyaW5nLmFkYiwgZy1zdHJpbmcuYWRzLCBnLXN0cnNwbC5hZHMsCglnLXdpc3RzcC5hZHMsIGktdnRocmVhLmFkYiwgaS12dGhyZWEuYWRzLCBpLXZ4d29pby5hZGIsCglpLXZ4d29pby5hZHMsIE1ha2VmaWxlLmdlbmVyaWMsIE1ha2VmaWxlLnByb2xvZywgTWFrZWZpbGUucnRsLAoJcHJlcC5hZGIsIHByZXAuYWRzLCBwcmVwY29tcC5hZGIsIHByZXBjb21wLmFkcywKCXByai1lcnIuYWRiLCBwcmotZXJyLmFkcywgcy1ib2Fyb3AuYWRzLCBzLWNhcnNpOC5hZGIsCglzLWNhcnNpOC5hZHMsIHMtY2FydW44LmFkYiwgcy1jYXJ1bjguYWRzLCBzLWNhc2kxNi5hZGIsCglzLWNhc2kxNi5hZHMsIHMtY2FzaTMyLmFkYiwgcy1jYXNpMzIuYWRzLCBzLWNhc2k2NC5hZGIsCglzLWNhc2k2NC5hZHMsIHMtY2FzdXRpLmFkYiwgcy1jYXN1dGkuYWRzLCBzLWNhdW4xNi5hZGIsCglzLWNhdW4xNi5hZHMsIHMtY2F1bjMyLmFkYiwgcy1jYXVuMzIuYWRzLCBzLWNhdW42NC5hZGIsCglzLWNhdW42NC5hZHMsIHNjbmcuYWRiLCBzY25nLmFkcywgcy1leG5pbnQuYWRiLAoJcy1leG5sbGYuYWRiLCBzLWV4bmxsaS5hZGIsIHMtZXhwaW50LmFkYiwgcy1leHBsbGkuYWRiLAoJcy1nZXZlb3AuYWRiLCBzLWdldmVvcC5hZHMsIHMtaGliYWVuLmFkcywgcy1odGFibGUuYWRiLAoJcy1odGFibGUuYWRzLCBzaW5wdXQtYy5hZGIsIHNpbnB1dC1jLmFkcywgcy1tZW1jb3AuYWRzLAoJc29ja2V0LmMsIHMtcHVyZXhjLmFkcywgcy1zY2F2YWwuYWRiLCBzLXN0b3Bvby5hZGIsCglzLXN0cmNvbS5hZGIsIHMtc3RyY29tLmFkcywgcy1zdHJ4ZHIuYWRiLCBzLXJpZGVudC5hZHMsCglzLXRocmVhZC5hZGIsIHMtdGhyZWFkLmFkcywgcy10cGFlNjUuYWRiLCBzLXRwYWU2NS5hZHMsCglzLXRwb3JmdC5hZGIsIHMtdHJhZW50LmFkYiwgcy10cmFlbnQuYWRzLCBzdHlsZWcuYWRiLAoJc3R5bGVnLmFkcywgc3R5bGVnLWMuYWRiLCBzdHlsZWctYy5hZHMsIHMtdmVib29wLmFkYiwKCXMtdmVib29wLmFkcywgcy12ZWN0b3IuYWRzLCBzeW1ib2xzLmFkYiwgc3ltYm9scy5hZHMsCgl0Yi1hbHZtcy5jLCB0Yi1hbHZ4dy5jLCB0ZW1wZGlyLmFkYiwgdGVtcGRpci5hZHMsCgl2bXNfY29udi5hZHMsIHZtc19jb252LmFkYiwgdm1zX2RhdGEuYWRzLAoJdnhhZGRyMmxpbmUuYWRiOiBGaWxlcyBhZGRlZC4gTWVyZ2Ugd2l0aCBBQ1QgdHJlZS4KCgkqIDRkaW50bmFtLmFkcywgNG1pbnRuYW0uYWRzLCA0dWludG5hbS5hZHMsIDUyc3lzdGVtLmFkcywKCTVkb3NpbnRlLmFkcywgNWV0cG9wc2UuYWRiLCA1bW9zaW50ZS5hZHMsIDVxb3NpbnRlLmFkYiwKCTVxb3NpbnRlLmFkcywgNXFzdGFjaGUuYWRiLCA1cXRhcHJvcC5hZGIsIDVxdGFzcHJpLmFkcywKCTVzdHBvcHNlLmFkYiwgNXVpbnRtYW4uYWRiLCA1dW9zaW50ZS5hZHMsIGFkYWZpbmFsLmMsCglnLWVuYmxzcC5hZGIsIGlvLWF1eC5jLCBzY24tbmxpdC5hZGIsIHNjbi1zbGl0LmFkYiwKCXMtZXhuZmx0LmFkcywgcy1leG5nZW4uYWRiLCBzLWV4bmdlbi5hZHMsIHMtZXhubGZsLmFkcywKCXMtZXhubGluLmFkcywgcy1leG5zZmwuYWRzLCBzLWV4bnNpbi5hZHMsIHMtZXhuc3NpLmFkcywKCXMtZXhwZmx0LmFkcywgcy1leHBnZW4uYWRiLCBzLWV4cGdlbi5hZHMsIHMtZXhwbGZsLmFkcywKCXMtZXhwbGluLmFkcywgcy1leHBsbGYuYWRzLCBzLWV4cHNmbC5hZHMsIHMtZXhwc2luLmFkcywKCXMtZXhwc3NpLmFkcywgc3R5bGUuYWRiOiBGaWxlcyByZW1vdmVkLiBNZXJnZSB3aXRoIEFDVCB0cmVlLgoKCSogMWljLmFkcywgMzFzb2Njb24uYWRzLCAzMXNvbGlvcC5hZHMsIDNhc29jY29uLmFkcywKCTNic29jY29uLmFkcywgM2dzb2Njb24uYWRzLCAzaHNvY2Nvbi5hZHMsIDNzc29jY29uLmFkcywKCTNzc29saW9wLmFkcywgM3dzb2Njb24uYWRzLCAzd3NvY3RoaS5hZGIsIDN3c29jdGhpLmFkcywKCTN3c29saW9wLmFkcywgNDFpbnRuYW0uYWRzLCA0MmludG5hbS5hZHMsIDRhaW50bmFtLmFkcywKCTRjaW50bmFtLmFkcywgNGdpbnRuYW0uYWRzLCA0aGV4Y3BvbC5hZGIsIDRoaW50bmFtLmFkcywKCTRsaW50bmFtLmFkcywgNG5pbnRuYW0uYWRzLCA0b2ludG5hbS5hZHMsIDRvbnVtYXV4LmFkcywKCTRwaW50bmFtLmFkcywgNHNpbnRuYW0uYWRzLCA0dmNhbGRlbC5hZGIsIDR2Y2FsZW5kLmFkYiwKCTR2aW50bmFtLmFkcywgNHdleGNwb2wuYWRiLCA0d2ludG5hbS5hZHMsIDR6aW50bmFtLmFkcywKCTUxb3NpbnRlLmFkYiwgNTFvc2ludGUuYWRzLCA1Mm9zaW50ZS5hZGIsIDUyb3NpbnRlLmFkcywKCTUzb3NpbnRlLmFkcywgNTRvc2ludGUuYWRzLCA1YW9zaW50ZS5hZGIsIDVhb3NpbnRlLmFkcywKCTVhc3lzdGVtLmFkcywgNWF0YXByb3AuYWRiLCA1YXRhc2luZi5hZHMsIDVhdGFzcHJpLmFkcywKCTVhdHBvcHNwLmFkYiwgNWF2eHdvcmsuYWRzLCA1Ym9zaW50ZS5hZGIsIDVib3NpbnRlLmFkcywKCTVic3lzdGVtLmFkcywgNWNvc2ludGUuYWRzLCA1ZXN5c3RlbS5hZHMsIDVmaW50bWFuLmFkYiwKCTVmb3NpbnRlLmFkcywgNWZzeXN0ZW0uYWRzLCA1ZnRhcHJvcC5hZGIsIDVmdGFzaW5mLmFkcywKCTVnaW50ZXJyLmFkYiwgNWdpbnRtYW4uYWRiLCA1Z21hc3RvcC5hZGIsIDVnb3NpbnRlLmFkcywKCTVncHJvaW5mLmFkcywgNWdzeXN0ZW0uYWRzLCA1Z3RhcHJvcC5hZGIsIDVndGFzaW5mLmFkcywKCTVndHBnZXRjLmFkYiwgNWhvc2ludGUuYWRiLCA1aG9zaW50ZS5hZHMsIDVoc3lzdGVtLmFkcywKCTVodGFwcm9wLmFkYiwgNWh0YXNwcmkuYWRzLCA1aHRyYWNlYi5hZGIsIDVpb3NpbnRlLmFkYiwKCTVpdGFwcm9wLmFkYiwgNWl0YXNwcmkuYWRzLCA1a3N5c3RlbS5hZHMsIDVrdnh3b3JrLmFkcywKCTVsaW50bWFuLmFkYiwgNWxtbC10Z3QuYWRiLCA1bG9zaW50ZS5hZHMsIDVsc3lzdGVtLmFkcywKCTVtdnh3b3JrLmFkcywgNW5pbm1hb3AuYWRiLCA1bmludG1hbi5hZGIsIDVub3NpbnRlLmFkcywKCTVudGFwcm9wLmFkYiwgNW50YXNwcmkuYWRzLCA1b2ludGVyci5hZGIsIDVvbWFzdG9wLmFkYiwKCTVvb3NpbnRlLmFkYiwgNW9vc2ludGUuYWRzLCA1b29zcHJpbS5hZGIsIDVvcGFyYW1lLmFkYiwKCTVvc3lzdGVtLmFkcywgNW90YXByb3AuYWRiLCA1b3Rhc3ByaS5hZHMsIDVwb3NpbnRlLmFkcywKCTVwb3NwcmltLmFkYiwgNXB2eHdvcmsuYWRzLCA1c2ludG1hbi5hZGIsIDVzb3NpbnRlLmFkYiwKCTVzb3NpbnRlLmFkcywgNXNzeXN0ZW0uYWRzLCA1c3RhcHJvcC5hZGIsIDVzdGFzaW5mLmFkcywKCTVzdGFzcHJpLmFkcywgNXN2eHdvcmsuYWRzLCA1dG9zaW50ZS5hZHMsIDV2YXN0aGFuLmFkYiwKCTV2aW5tYW9wLmFkYiwgNXZpbnRlcnIuYWRiLCA1dmludG1hbi5hZGIsIDV2aW50bWFuLmFkcywKCTV2bWFzdG9wLmFkYiwgNXZvc2ludGUuYWRiLCA1dm9zaW50ZS5hZHMsIDV2b3NwcmltLmFkYiwKCTV2c3lzdGVtLmFkcywgNXZ0YXByb3AuYWRiLCA1dnRhc3ByaS5hZHMsIDV2dHBvcGRlLmFkYiwKCTV2dHBvcGRlLmFkcywgNXdnbG9sb2MuYWRiLCA1d2ludG1hbi5hZGIsIDV3bWVtb3J5LmFkYiwKCTV3b3NwcmltLmFkYiwgNXdzeXN0ZW0uYWRzLCA1d3RhcHJvcC5hZGIsIDV3dGFzcHJpLmFkcywKCTV5c3lzdGVtLmFkcywgNXppbnRlcnIuYWRiLCA1emludG1hbi5hZGIsIDV6b3NpbnRlLmFkYiwKCTV6b3NpbnRlLmFkcywgNXpvc3ByaW0uYWRiLCA1enN5c3RlbS5hZHMsIDV6dGFwcm9wLmFkYiwKCTZ2Y3BwLmFkYiwgNnZjc3RyZWEuYWRiLCA2dmludGVyZi5hZHMsIDdzaW5tYW9wLmFkYiwKCTdzaW50bWFuLmFkYiwgN3Nvc2ludGUuYWRiLCA3c29zcHJpbS5hZGIsIDdzdGFwcm9wLmFkYiwKCTdzdGFzcHJpLmFkcywgN3N0cG9wc3AuYWRiLCA3c3RyYWNlYi5hZGIsIDlkcnBjLmFkYiwKCWEtY2FsZGVsLmFkYiwgYS1jYWxkZWwuYWRzLCBhLWNoYXJhYy5hZHMsIGEtY29saWVuLmFkcywKCWEtY29tbGluLmFkYiwgYWRhaW50LmMsIGFkYWludC5oLCBhZGEtdHJlZS5kZWYsCglhLWRpb2NzdC5hZGIsIGEtZGlvY3N0LmFkcywgYS1kaXJlaW8uYWRiLCBhLWV4Y2VwdC5hZGIsCglhLWV4Y2VwdC5hZHMsIGEtZXhjcG9sLmFkYiwgYS1leGN0cmEuYWRiLCBhLWV4Y3RyYS5hZHMsCglhLWZpbGljby5hZGIsIGEtaW50ZXJyLmFkYiwgYS1pbnRzaWcuYWRiLCBhLWludHNpZy5hZHMsCglhbGkuYWRiLCBhbGkuYWRzLCBhbGktdXRpbC5hZGIsIGFsaS11dGlsLmFkcywKCWEtbmdjZWZ1LmFkYiwgYS1uZ2NvdHkuYWRiLCBhLW5nZWxmdS5hZGIsIGEtbnVkaXJhLmFkYiwKCWEtbnVkaXJhLmFkcywgYS1udWZscmEuYWRiLCBhLW51ZmxyYS5hZHMsIGEtcmVhdGltLmFkYiwKCWEtcmVhdGltLmFkcywgYS1yZXRpZGUuYWRzLCBhLXNlcXVpby5hZGIsIGEtc2lvY3N0LmFkYiwKCWEtc2lvY3N0LmFkcywgYS1zc2ljc3QuYWRiLCBhLXNzaWNzdC5hZHMsIGEtc3RyYm91LmFkYiwKCWEtc3RyYm91LmFkcywgYS1zdHJmaXguYWRiLCBhLXN0cm1hcC5hZGIsIGEtc3Ryc2VhLmFkcywKCWEtc3RydW5iLmFkYiwgYS1zdHJ1bmIuYWRzLCBhLXN0c3Rpby5hZGIsIGEtc3R1bmF1LmFkYiwKCWEtc3R1bmF1LmFkcywgYS1zdHdpYm8uYWRiLCBhLXN0d2liby5hZHMsIGEtc3R3aWZpLmFkYiwKCWEtc3R3aW1hLmFkYiwgYS1zdHdpdW4uYWRiLCBhLXN0d2l1bi5hZHMsIGEtdGFncy5hZGIsCglhLXRhZ3MuYWRzLCBhLXRhc2F0dC5hZGIsIGEtdGFzaWRlLmFkYiwgYS10ZWlvZWQuYWRiLAoJYS10ZXh0aW8uYWRiLCBhLXRleHRpby5hZHMsIGEtdGllbmF1LmFkYiwgYS10aWZpaW8uYWRiLAoJYS10aWZsYXUuYWRiLCBhLXRpZmxpby5hZGIsIGEtdGlnZWF1LmFkYiwgYS10aWdlYXUuYWRzLAoJYS10aWluYXUuYWRiLCBhLXRpbW9hdS5hZGIsIGEtdGlvY3N0LmFkYiwgYS10aW9jc3QuYWRzLAoJYXRyZWUuYWRiLCBhdHJlZS5hZHMsIGEtd2l0ZWlvLmFkYiwgYS13aXRlaW8uYWRzLAoJYS13dGNzdHIuYWRiLCBhLXd0Y3N0ci5hZHMsIGEtd3RkZWlvLmFkYiwgYS13dGVkaXQuYWRiLAoJYS13dGVuYXUuYWRiLCBhLXd0ZmxhdS5hZGIsIGEtd3RpbmF1LmFkYiwgYS13dG1vYXUuYWRiLAoJYmNoZWNrLmFkYiwgYmluZGUuYWRiLCBiaW5kZ2VuLmFkYiwgYmluZHVzZy5hZGIsCgljaGVja3MuYWRiLCBjaGVja3MuYWRzLCBjaW8uYywgY29tcGVyci5hZGIsCgljb21wZXJyLmFkcywgY3NldHMuYWRiLCBjc3RhbmQuYWRiLCBjc3RyZWFtcy5jLAoJZGVidWdfYS5hZGIsIGRlYnVnX2EuYWRzLCBkZWJ1Zy5hZGIsIGRlY2wuYywKCWVpbmZvLmFkYiwgZWluZm8uYWRzLCBlcnJvdXQuYWRiLCBlcnJvdXQuYWRzLAoJZXZhbF9mYXQuYWRiLCBldmFsX2ZhdC5hZHMsIGV4cF9hZ2dyLmFkYiwgZXhwYW5kZXIuYWRiLAoJZXhwYW5kZXIuYWRzLCBleHBfYXR0ci5hZGIsIGV4cF9jaDExLmFkYiwgZXhwX2NoMTMuYWRiLAoJZXhwX2NoMi5hZGIsIGV4cF9jaDMuYWRiLCBleHBfY2gzLmFkcywgZXhwX2NoNC5hZGIsCglleHBfY2g1LmFkYiwgZXhwX2NoNi5hZGIsIGV4cF9jaDcuYWRiLCBleHBfY2g3LmFkcywKCWV4cF9jaDguYWRiLCBleHBfY2g5LmFkYiwgZXhwX2NvZGUuYWRiLCBleHBfZGJ1Zy5hZGIsCglleHBfZGJ1Zy5hZHMsIGV4cF9kaXNwLmFkYiwgZXhwX2Rpc3QuYWRiLCBleHBlY3QuYywKCWV4cF9maXhkLmFkYiwgZXhwX2ltZ3YuYWRiLCBleHBfaW50ci5hZGIsIGV4cF9wYWtkLmFkYiwKCWV4cF9wcmFnLmFkYiwgZXhwX3N0cm0uYWRiLCBleHBfc3RybS5hZHMsIGV4cF90c3MuYWRiLAoJZXhwX3Rzcy5hZHMsIGV4cF91dGlsLmFkYiwgZXhwX3V0aWwuYWRzLCBleHBfdmZwdC5hZGIsCglmZS5oLCBmbWFwLmFkYiwgZm1hcC5hZHMsIGZuYW1lLmFkYiwKCWZuYW1lLmFkcywgZm5hbWUtdWYuYWRiLCBmbmFtZS11Zi5hZHMsIGZyZWV6ZS5hZGIsCglmcmVlemUuYWRzLCBmcm9udGVuZC5hZGIsIGctYXdrLmFkYiwgZy1hd2suYWRzLAoJZy1idXNvcmEuYWRiLCBnLWJ1c29yYS5hZHMsIGctYnVzb3JnLmFkYiwgZy1idXNvcmcuYWRzLAoJZy1jYXN1dGkuYWRiLCBnLWNhc3V0aS5hZHMsIGctY2F0aWlvLmFkYiwgZy1jYXRpaW8uYWRzLAoJZy1jZ2kuYWRiLCBnLWNnaS5hZHMsIGctY2dpY29vLmFkYiwgZy1jZ2ljb28uYWRzLAoJZy1jZ2lkZWIuYWRiLCBnLWNnaWRlYi5hZHMsIGctY29tbGluLmFkYiwgZy1jb21saW4uYWRzLAoJZy1jcmMzMi5hZGIsIGctY3JjMzIuYWRzLCBnLWRlYnBvby5hZGIsIGctZGVicG9vLmFkcywKCWctZGVidXRpLmFkYiwgZy1kZWJ1dGkuYWRzLCBnLWRpb3BpdC5hZGIsIGctZGlvcGl0LmFkcywKCWctZGlyb3BlLmFkYiwgZy1kaXJvcGUuYWRzLCBnLWR5bnRhYi5hZGIsIGctZHludGFiLmFkcywKCWctZXhjZXB0LmFkcywgZy1leGN0cmEuYWRiLCBnLWV4Y3RyYS5hZHMsIGctZXhwZWN0LmFkYiwKCWctZXhwZWN0LmFkcywgZy1oZXNvcmEuYWRiLCBnLWhlc29yYS5hZHMsIGctaGVzb3JnLmFkYiwKCWctaGVzb3JnLmFkcywgZy1odGFibGUuYWRiLCBnLWh0YWJsZS5hZHMsIGdpZ2kuaCwKCWctaW8uYWRiLCBnLWlvLmFkcywgZy1pb19hdXguYWRiLCBnLWlvX2F1eC5hZHMsCglnLWxvY2ZpbC5hZGIsIGctbG9jZmlsLmFkcywgZy1tZDUuYWRiLCBnLW1kNS5hZHMsCglnbWVtLmMsIGduYXQxZHJ2LmFkYiwgZ25hdGJpbmQuYWRiLCBnbmF0Y2hvcC5hZGIsCglnbmF0Y21kLmFkYiwgZ25hdGZpbmQuYWRiLCBnbmF0a3IuYWRiLCBnbmF0bGJyLmFkYiwKCWduYXRsaW5rLmFkYiwgZ25hdGxzLmFkYiwgZ25hdG1ha2UuYWRiLCBnbmF0bWVtLmFkYiwKCWduYXRuYW1lLmFkYiwgZ25hdHByZXAuYWRiLCBnbmF0cHJlcC5hZHMsIGduYXRwc3RhLmFkYiwKCWduYXR4cmVmLmFkYiwgZy1vc19saWIuYWRiLCBnLW9zX2xpYi5hZHMsIGctcmVnZXhwLmFkYiwKCWctcmVnZXhwLmFkcywgZy1yZWdpc3QuYWRiLCBnLXJlZ2lzdC5hZHMsIGctcmVncGF0LmFkYiwKCWctcmVncGF0LmFkcywgZy1zb2Njb24uYWRzLCBnLXNvY2tldC5hZGIsIGctc29ja2V0LmFkcywKCWctc29jdGhpLmFkYiwgZy1zb2N0aGkuYWRzLCBnLXNvbGlvcC5hZHMsIGctc291aW5mLmFkcywKCWctc3BlY2hlLmFkYiwgZy1zcGVjaGUuYWRzLCBnLXNwaXBhdC5hZGIsIGctc3BpcGF0LmFkcywKCWctc3BpdGJvLmFkYiwgZy1zcGl0Ym8uYWRzLCBnLXNwdGFiby5hZHMsIGctc3B0YWluLmFkcywKCWctc3B0YXZzLmFkcywgZy10YWJsZS5hZGIsIGctdGFibGUuYWRzLCBnLXRhc2xvYy5hZGIsCglnLXRhc2xvYy5hZHMsIGctdGhyZWFkLmFkYiwgZy10aHJlYWQuYWRzLCBnLXRyYWNlYi5hZGIsCglnLXRyYWNlYi5hZHMsIGctdHJhc3ltLmFkYiwgZy10cmFzeW0uYWRzLCBob3N0cGFybS5hZHMsCglpLWMuYWRzLCBpLWNvYm9sLmFkYiwgaS1jcHAuYWRiLCBpLWNzdHJlYS5hZHMsCglpLWNzdHJpbi5hZGIsIGktY3N0cmluLmFkcywgaW1wdW5pdC5hZGIsIGluaXQuYywKCWlubGluZS5hZGIsIGludGVyZmFjLmFkcywgaS1wYWNkZWMuYWRzLCBpdHlwZXMuYWRiLAoJaXR5cGVzLmFkcywgaS12eHdvcmsuYWRzLCBsYW5nLm9wdCwgbGFuZy1zcGVjcy5oLAoJbGF5b3V0LmFkYiwgbGliLmFkYiwgbGliLmFkcywgbGliLWxpc3QuYWRiLAoJbGliLWxvYWQuYWRiLCBsaWItbG9hZC5hZHMsIGxpYi1zb3J0LmFkYiwgbGliLXV0aWwuYWRiLAoJbGliLXdyaXQuYWRiLCBsaWItd3JpdC5hZHMsIGxpYi14cmVmLmFkYiwgbGliLXhyZWYuYWRzLAoJbGluay5jLCBsaXZlLmFkYiwgbWFrZS5hZGIsIG1ha2UuYWRzLAoJTWFrZWZpbGUuYWRhbGliLCBNYWtlZmlsZS5pbiwgTWFrZS1sYW5nLmluLCBtYWtldXNnLmFkYiwKCW1kbGwuYWRiLCBtZGxsLWZpbC5hZGIsIG1kbGwtZmlsLmFkcywgbWRsbC11dGwuYWRiLAoJbWRsbC11dGwuYWRzLCBtZW1yb290LmFkYiwgbWVtcm9vdC5hZHMsIG1lbXRyYWNrLmFkYiwKCW1pc2MuYywgbWtkaXIuYywgbWxpYi5hZGIsIG1saWIuYWRzLAoJbWxpYi1maWwuYWRiLCBtbGliLWZpbC5hZHMsIG1saWItcHJqLmFkYiwgbWxpYi1wcmouYWRzLAoJbWxpYi10Z3QuYWRiLCBtbGliLXRndC5hZHMsIG1saWItdXRsLmFkYiwgbWxpYi11dGwuYWRzLAoJbmFtZXQuYWRiLCBuYW1ldC5hZHMsIG5hbWV0LmgsIG5saXN0cy5hZHMsCglubGlzdHMuaCwgbm1ha2UuYWR0LCBvcHQuYWRiLCBvcHQuYWRzLAoJb3NpbnQuYWRiLCBvc2ludC5hZHMsIG9zaW50LWIuYWRiLCBvc2ludC1jLmFkYiwKCXBhci5hZGIsIHBhci1jaDEwLmFkYiwgcGFyLWNoMTEuYWRiLCBwYXItY2gyLmFkYiwKCXBhci1jaDMuYWRiLCBwYXItY2g0LmFkYiwgcGFyLWNoNS5hZGIsIHBhci1jaDYuYWRiLAoJcGFyLWNoOS5hZGIsIHBhci1lbmRoLmFkYiwgcGFyLWxhYmwuYWRiLCBwYXItbG9hZC5hZGIsCglwYXItcHJhZy5hZGIsIHBhci1zeW5jLmFkYiwgcGFyLXRjaGsuYWRiLCBwYXItdXRpbC5hZGIsCglwcmouYWRiLCBwcmouYWRzLCBwcmotYXR0ci5hZGIsIHByai1hdHRyLmFkcywKCXByai1jb20uYWRiLCBwcmotY29tLmFkcywgcHJqLWRlY3QuYWRiLCBwcmotZGVjdC5hZHMsCglwcmotZW52LmFkYiwgcHJqLWVudi5hZHMsIHByai1leHQuYWRiLCBwcmotZXh0LmFkcywKCXByai1tYWtyLmFkYiwgcHJqLW1ha3IuYWRzLCBwcmotbm1zYy5hZGIsIHByai1ubXNjLmFkcywKCXByai1wYXJzLmFkYiwgcHJqLXBhcnMuYWRzLCBwcmotcGFydC5hZGIsIHByai1wYXJ0LmFkcywKCXByai1wcC5hZGIsIHByai1wcC5hZHMsIHByai1wcm9jLmFkYiwgcHJqLXByb2MuYWRzLAoJcHJqLXN0cnQuYWRiLCBwcmotc3RydC5hZHMsIHByai10cmVlLmFkYiwgcHJqLXRyZWUuYWRzLAoJcHJqLXV0aWwuYWRiLCBwcmotdXRpbC5hZHMsIHJhaXNlLmMsIHJhaXNlLmgsCglyZXBpbmZvLmFkYiwgcmVwaW5mby5oLCByZXN0cmljdC5hZGIsIHJlc3RyaWN0LmFkcywKCXJpZGVudC5hZHMsIHJ0c2ZpbmQuYWRiLCBydHNmaW5kLmFkcywgcy1hZGRpbWEuYWRzLAoJcy1hcml0NjQuYWRiLCBzLWFzc2VydC5hZGIsIHMtYXNzZXJ0LmFkcywgcy1hdGFjY28uYWRiLAoJcy1hdGFjY28uYWRzLCBzLWF1eGRlYy5hZGIsIHMtYXV4ZGVjLmFkcywgcy1iaXRvcHMuYWRiLAoJc2NhbnMuYWRzLCBzY24uYWRiLCBzY24uYWRzLCBzLWNyYzMyLmFkYiwKCXMtY3JjMzIuYWRzLCBzLWRpcmVpby5hZGIsIHNlbS5hZGIsIHNlbS5hZHMsCglzZW1fYWdnci5hZGIsIHNlbV9hdHRyLmFkYiwgc2VtX2F0dHIuYWRzLCBzZW1fY2FzZS5hZGIsCglzZW1fY2FzZS5hZHMsIHNlbV9jYXQuYWRiLCBzZW1fY2F0LmFkcywgc2VtX2NoMTAuYWRiLAoJc2VtX2NoMTEuYWRiLCBzZW1fY2gxMi5hZGIsIHNlbV9jaDEyLmFkcywgc2VtX2NoMTMuYWRiLAoJc2VtX2NoMTMuYWRzLCBzZW1fY2gzLmFkYiwgc2VtX2NoMy5hZHMsIHNlbV9jaDQuYWRiLAoJc2VtX2NoNS5hZGIsIHNlbV9jaDUuYWRzLCBzZW1fY2g2LmFkYiwgc2VtX2NoNi5hZHMsCglzZW1fY2g3LmFkYiwgc2VtX2NoNy5hZHMsIHNlbV9jaDguYWRiLCBzZW1fY2g4LmFkcywKCXNlbV9jaDkuYWRiLCBzZW1fZGlzcC5hZGIsIHNlbV9kaXNwLmFkcywgc2VtX2Rpc3QuYWRiLAoJc2VtX2VsYWIuYWRiLCBzZW1fZXZhbC5hZGIsIHNlbV9ldmFsLmFkcywgc2VtX2ludHIuYWRiLAoJc2VtX21hcHMuYWRiLCBzZW1fbWVjaC5hZGIsIHNlbV9wcmFnLmFkYiwgc2VtX3ByYWcuYWRzLAoJc2VtX3Jlcy5hZGIsIHNlbV9yZXMuYWRzLCBzZW1fdHlwZS5hZGIsIHNlbV90eXBlLmFkcywKCXNlbV91dGlsLmFkYiwgc2VtX3V0aWwuYWRzLCBzZW1fd2Fybi5hZGIsIHMtZXJycmVwLmFkYiwKCXMtZXJycmVwLmFkcywgcy1leGN0YWIuYWRiLCBzLWV4Y3RhYi5hZHMsIHMtZXhuaW50LmFkcywKCXMtZXhubGxmLmFkcywgcy1leG5sbGkuYWRzLCBzLWV4cGludC5hZHMsIHMtZXhwbGxpLmFkcywKCXMtZXhwdW5zLmFkcywgcy1mYXRmbHQuYWRzLCBzLWZhdGdlbi5hZGIsIHMtZmF0Z2VuLmFkcywKCXMtZmF0bGZsLmFkcywgcy1mYXRsbGYuYWRzLCBzLWZhdHNmbC5hZHMsIHMtZmlsZWlvLmFkYiwKCXMtZmlsZWlvLmFkcywgcy1maW5pbXAuYWRiLCBzLWZpbmltcC5hZHMsIHMtZmlucm9vLmFkYiwKCXMtZmlucm9vLmFkcywgc2ZuX3NjYW4uYWRiLCBzLWdsb2xvYy5hZGIsIHMtZ2xvbG9jLmFkcywKCXMtaW1nZGVjLmFkYiwgcy1pbWdlbnUuYWRiLCBzLWltZ3JlYS5hZGIsIHMtaW1nd2NoLmFkYiwKCXNpbmZvLmFkYiwgc2luZm8uYWRzLCBzLWlubWFvcC5hZHMsIHNpbnB1dC5hZGIsCglzaW5wdXQuYWRzLCBzaW5wdXQtZC5hZGIsIHNpbnB1dC1sLmFkYiwgc2lucHV0LWwuYWRzLAoJc2lucHV0LXAuYWRiLCBzaW5wdXQtcC5hZHMsIHMtaW50ZXJyLmFkYiwgcy1pbnRlcnIuYWRzLAoJcy1pbnRtYW4uYWRzLCBzLW1hY2NvZC5hZHMsIHMtbWFzdG9wLmFkYiwgcy1tYXN0b3AuYWRzLAoJcy1tZW1vcnkuYWRiLCBzLW1lbW9yeS5hZHMsIHNuYW1lcy5hZGIsIHNuYW1lcy5hZHMsCglzbmFtZXMuaCwgcy1vc3ByaW0uYWRzLCBzLXBhcmFtZS5hZHMsIHMtcGFyaW50LmFkcywKCXMtcG9vbG9jLmFkYiwgcy1wb29sb2MuYWRzLCBzLXBvb3Npei5hZGIsIHNwcmludC5hZGIsCglzLXByb2luZi5hZHMsIHMtc2NhdmFsLmFkcywgcy1zZWNzdGEuYWRiLCBzLXNlY3N0YS5hZHMsCglzLXNlcXVpby5hZGIsIHMtc2hhc3RvLmFkYiwgcy1zaGFzdG8uYWRzLCBzLXNvZmxpbi5hZHMsCglzLXN0YWNoZS5hZGIsIHMtc3RhY2hlLmFkcywgcy1zdGFsaWIuYWRiLCBzLXN0YWxpYi5hZHMsCglzLXN0b2VsZS5hZHMsIHMtc3RvcG9vLmFkcywgcy1zdHJhdHQuYWRiLCBzLXN0cmF0dC5hZHMsCglzLXN0cm9wcy5hZGIsIHMtc3Ryb3BzLmFkcywgcy10YWFzZGUuYWRiLCBzLXRhYXNkZS5hZHMsCglzLXRhZGVjYS5hZGIsIHMtdGFkZWNhLmFkcywgcy10YWRlcnQuYWRiLCBzLXRhZGVydC5hZHMsCglzLXRhZW5jYS5hZGIsIHMtdGFlbmNhLmFkcywgcy10YXByb2IuYWRiLCBzLXRhcHJvYi5hZHMsCglzLXRhcHJvcC5hZHMsIHMtdGFyZXN0LmFkYiwgcy10YXJlc3QuYWRzLCBzLXRhc2RlYi5hZGIsCglzLXRhc2RlYi5hZHMsIHMtdGFzaW5mLmFkYiwgcy10YXNpbmYuYWRzLCBzLXRhc2luaS5hZGIsCglzLXRhc2luaS5hZHMsIHMtdGFza2luLmFkYiwgcy10YXNraW4uYWRzLCBzLXRhc3F1ZS5hZGIsCglzLXRhc3F1ZS5hZHMsIHMtdGFzcmVuLmFkYiwgcy10YXNyZW4uYWRzLCBzLXRhc3Jlcy5hZHMsCglzLXRhc3N0YS5hZGIsIHMtdGFzc3RhLmFkcywgcy10YXN1dGkuYWRiLCBzLXRhc3V0aS5hZHMsCglzLXRhdGFhdC5hZGIsIHMtdGF0YWF0LmFkcywgcy10cGlub3AuYWRiLCBzLXRwaW5vcC5hZHMsCglzLXRwb2Jlbi5hZGIsIHMtdHBvYmVuLmFkcywgcy10cG9ib3AuYWRiLCBzLXRwb2JvcC5hZHMsCglzLXRwb3Nlbi5hZGIsIHMtdHBvc2VuLmFkcywgcy10cmFjZWIuYWRiLCBzLXRyYWNlYi5hZHMsCglzdHJpbmd0LmFkYiwgc3RyaW5ndC5hZHMsIHN0cmluZ3QuaCwgc3R5bGUuYWRzLAoJc3R5bGVzdy5hZGIsIHN0eWxlc3cuYWRzLCBzLXVuc3R5cC5hZHMsIHMtdmFmbG9wLmFkcywKCXMtdmFscmVhLmFkYiwgcy12YWx1dGkuYWRiLCBzLXZlcmNvbi5hZGIsIHMtdm1leHRhLmFkYiwKCXMtd2NoY252LmFkcywgcy13Y2hjb24uYWRzLCBzLXdpZGNoYS5hZGIsIHN3aXRjaC5hZGIsCglzd2l0Y2guYWRzLCBzd2l0Y2gtYi5hZGIsIHN3aXRjaC1jLmFkYiwgc3dpdGNoLW0uYWRiLAoJcy13d2RjaGEuYWRiLCBzLXd3ZHdjaC5hZGIsIHN5c2RlcC5jLCBzeXN0ZW0uYWRzLAoJdGFibGUuYWRiLCB0YWJsZS5hZHMsIHRhcmdwYXJtLmFkYiwgdGFyZ3Bhcm0uYWRzLAoJdGFyZ3R5cHMuYywgdGJ1aWxkLmFkYiwgdGJ1aWxkLmFkcywgdHJhY2ViYWsuYywKCXRyYW5zLmMsIHRyZWVfaW8uYWRiLCB0cmVlcHIuYWRiLCB0cmVlcHJzLmFkdCwKCXR0eXBlcy5hZHMsIHR5cGVzLmFkcywgdHlwZXMuaCwgdWludHAuYWRiLAoJdWludHAuYWRzLCB1aW50cC5oLCB1bmFtZS5hZGIsIHVyZWFscC5hZGIsCgl1cmVhbHAuYWRzLCB1cmVhbHAuaCwgdXNhZ2UuYWRiLCB1dGlsczIuYywKCXV0aWxzLmMsIHZhbGlkc3cuYWRiLCB2YWxpZHN3LmFkcywgd2lkZWNoYXIuYWRiLAoJeGVpbmZvLmFkYiwgeG5tYWtlLmFkYiwgeHJlZl9saWIuYWRiLCB4cmVmX2xpYi5hZHMsCgl4cl90YWJscy5hZGIsIHhyX3RhYmxzLmFkcywgeHRyZWVwcnMuYWRiLCB4c25hbWVzLmFkYiwKCWVpbmZvLmgsIHNpbmZvLmgsIHRyZWVwcnMuYWRzLCBubWFrZS5hZHMsIG5tYWtlLmFkYiwKCWduYXR2c24uYWRzOiBNZXJnZSB3aXRoIEFDVCB0cmVlLgoKCSogZ25hdHZzbi5hZGI6IFJld3JpdHRlbiBpbiBhIHNpbXBsZXIgYW5kIG1vcmUgZWZmaWNpZW50IHdheS4KCjIwMDMtMTAtMjAgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGduYXRfdWdfdW54LmluZm8pOiBBZGQgZGVwZW5kZW5jeSBvbiBzdG1wLWRvY29iamRpci4KCShnbmF0X3VnX3ZteC5pbmZvKTogTGlrZXdpc2UuCgkoZ25hdF91Z192eHcuaW5mbyk6IExpa2V3aXNlLgoJKGduYXRfdWdfd250LmluZm8pOiBMaWtld2lzZS4KCShnbmF0X3JtLmluZm8pOiBMaWtld2lzZS4KCShnbmF0LXN0eWxlLmluZm8pOiBMaWtld2lzZS4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhLmluc3RhbGwtaW5mbyk6IFJlbW92ZSB0YXJnZXQuCgkoaW5mbyk6IE5ldyB0YXJnZXQuCgkoaW5zdGFsbC1pbmZvKTogTGlrZXdpc2UuCgkoZ25hdF91Z191bnguaW5mbyk6IFNpbXBsaWZ5IHJ1bGUuCgkoZ25hdF91Z192bXguaW5mbyk6IExpa2V3aXNlLgoJKGduYXRfdWdfdnh3LmluZm8pOiBMaWtld2lzZS4KCShnbmF0X3VnX3dudC5pbmZvKTogTGlrZXdpc2UuCgkoZ25hdF9ybS5pbmZvKTogTGlrZXdpc2UuCgkoZ25hdC1zdHlsZS5pbmZvKTogTGlrZXdpc2UuCgoyMDAzLTEwLTE0ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIE1ha2UtbGFuZy5pbjogUmVwbGFjZSB1c2VzIG9mICQodGFyZ2V0X2FsaWFzKSB3aXRoCgkkKHRhcmdldF9ub25jYW5vbmljYWwpLgoJKiBhZGEvTWFrZWZpbGUuaW46IFJlbW92ZSB1bnVzZWQgbWVudGlvbiBvZiAkKHRhcmdldF9hbGlhcykuCgoyMDAzLTEwLTA2ICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChhZGEuaW5mbyk6IFJlcGxhY2Ugd2l0aCAuLi4KCShpbmZvKTogLi4uIHRoaXMuCgkoYWRhLmR2aSk6IFJlcGxhY2Ugd2l0aCAuLi4KCShkdmkpOiAuLi4gdGhpcy4KCjIwMDMtMDktMjkgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmFucy5jIChnaWdpKTogVXNlIFJFQUxfQVJJVEhNRVRJQywgbm90IFJFQUxfVkFMVUVfQVRPRiwgdG8KCWluaXRpYWxpemUgZGNvbnN0cDUgYW5kIGRjb25zdG1wNS4KCjIwMDMtMDktMjggIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSk6IFVwZGF0ZSBjYWxsIHRvIGV4cGFuZF9hc21fb3BlcmFuZHMuCgoyMDAzLTA5LTIxICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdHJhbnMuYywgdXRpbHMuYzogUmV2ZXJ0LgoKMjAwMy0wOS0yMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHRyYW5zLmMsIHV0aWxzLmM6IFVwZGF0ZSBmb3IgREVDTF9TT1VSQ0VfTE9DQVRJT04gcmVuYW1lIGFuZAoJY2hhbmdlIHRvIGNvbnN0LgoKMjAwMy0wOS0wNCAgTWljaGFlbCBNYXR6ICA8bWF0ekBzdXNlLmRlPgoKCSogbWlzYy5jOiBJbmNsdWRlICJ0YXJnZXQuaCIuCgkqIE1ha2UtbGFuZy5pbiAobWlzYy5vKTogQWRkIGRlcGVuZGVuY3kgb24gdGFyZ2V0LmguCgoyMDAzLTA5LTAzICBESiBEZWxvcmllICA8ZGpAcmVkaGF0LmNvbT4KCgkqIG1pc2MuYyAoZGVmYXVsdF9wYXNzX2J5X3JlZik6IENvbnZlcnQgdG8gY2FsbHMucmV0dXJuX2luX21lbW9yeQoJaG9vay4KCjIwMDMtMDgtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbjogVXBkYXRlIHN1YnN0aXR1dGlvbnMgdG8gbWF0Y2ggY2hhbmdlcyB0bwoJY29uZmlndXJlLiAgVXNlIGluY2x1ZGUgZGlyZWN0aXZlcyBpbnN0ZWFkIG9mIEAtaW5zZXJ0aW9ucwoJdG8gcmVhZCBpbiBob3N0IGFuZCB0YXJnZXQgZnJhZ21lbnRzLiAgQWRkIGEgcnVsZSB0bwoJcmVnZW5lcmF0ZSBhZGEvTWFrZWZpbGUuCgoyMDAzLTA3LTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsYW5nLW9wdGlvbnMuaDogUmVtb3ZlLgoJKiBsYW5nLm9wdDogQWRkIGhlbHAgdGV4dC4KCjIwMDMtMDctMDcgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmFucy5jIChidWlsZF91bml0X2VsYWIsIHNldF9saW5lbm8pOiBBZGp1c3QgZW1pdF9saW5lX25vdGUKCWNhbGxzLgoKMjAwMy0wNy0wNiAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbWlzYy5jIChnbmF0X2hhbmRsZV9vcHRpb24pOiBEb24ndCBoYW5kbGUgZmlsZW5hbWVzLgoKMjAwMy0wNy0wNCAgSC5KLiBMdSA8aG9uZ2ppdS5sdUBpbnRlbC5jb20+CgoJKiBNYWtlLWxhbmcuaW46IFJlcGxhY2UgUFdEIHdpdGggUFdEX0NPTU1BTkQuCgkqIE1ha2VmaWxlLmFkYWxpYjogTGlrZXdpc2UuCgkqIE1ha2VmaWxlLmluOiBMaWtld2lzZS4KCjIwMDMtMDctMDQgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIG1pc2MuYyAoZ25hdF9hcmd2KTogUmV2ZXJ0IGxhc3QgY2hhbmdlLgoJKGduYXRfaGFuZGxlX29wdGlvbiwgZ25hdF9pbml0X29wdGlvbnMpOiBDb3B5IGFyZ3VtZW50cy4KCjIwMDMtMDctMDMgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIG1pc2MuYyAoZ25hdF9hcmd2KTogTWFrZSBjb25zdC4KCjIwMDMtMDctMDIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIG1pc2MuYyAoc2F2ZV9hcmdjLCBzYXZlX2FyZ3YpOiBLZWVwIG5vbi1zdGF0aWMhCgoyMDAzLTA3LTAyICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBtaXNjLmMgKHNhdmVfYXJnYywgc2F2ZV9hcmd2KTogTWFrZSBzdGF0aWMuCgkoZ25hdF9pbml0X29wdGlvbnMpOiBOZXcgcHJvdG90eXBlLgoJKGduYXRfaW5pdF9vcHRpb25zKTogVXBkYXRlLgoKMjAwMy0wNy0wMSAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogZ25hdF91Zy50ZXhpOiBSZW1vdmUgdW5saWtlbHkgY2hhcmFjdGVycyBmcm9tIEB2YXJzLgoJKiBnbmF0X3VnX3Ztcy50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwMy0wNi0yNyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIG1pc2MuYyAocmVjb3JkX2NvZGVfcG9zaXRpb24pOiBBZGp1c3QgZW1pdF9ub3RlIGNhbGwuCgoyMDAzLTA2LTI2ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBtaXNjLmMgKGduYXRfaGFuZGxlX29wdGlvbik6IERvbid0IGNoZWNrIGZvciBtaXNzaW5nIGFyZ3VtZW50cy4KCjIwMDMtMDYtMjAgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB1dGlscy5jIChlbmRfc3VicHJvZ19ib2R5KTogQWRqdXN0IGV4cGFuZF9mdW5jdGlvbl9lbmQgY2FsbC4KCjIwMDMtMDYtMTYgIE1hdHQgS3JhYWkgIDxrcmFhaUBhbHVtbmkuY211LmVkdT4KCgkqIGJpbmRnZW4uYWRiIChHZW5fTWFpbl9BZGEsIEdlbl9NYWluX0MpOiBEbyBub3QgdGVzdAoJQmluZF9NYWluX1Byb2dyYW0uCgoyMDAzLTA2LTE1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsYW5nLm9wdDogRGVjbGFyZSBBZGEuCgkqIG1pc2MuYyAoZ25hdF9pbml0X29wdGlvbnMpOiBVcGRhdGUuCgoyMDAzLTA2LTE0ICBOYXRoYW4gU2lkd2VsbCAgPG5hdGhhbkBjb2Rlc291cmNlcnkuY29tPgoKCSogdXRpbHMuYyAoYmVnaW5fc3VicHJvZ19ib2R5KTogQWRqdXN0IGluaXRfZnVuY3Rpb25fc3RhcnQgY2FsbC4KCjIwMDMtMDYtMTQgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIE1ha2UtbGFuZy5pbjogVXBkYXRlIHRvIHVzZSBvcHRpb25zLmMgYW5kIG9wdGlvbnMuaC4KCSogbWlzYy5jOiBJbmNsdWRlIG9wdGlvbnMuaCBub3QgYW9wdGlvbnMuaC4KCShnbmF0X2hhbmRsZV9vcHRpb24pOiBBYm9ydCBvbiB1bnJlY29nbml6ZWQgc3dpdGNoLgoJKGduYXRfaW5pdF9vcHRpb25zKTogUmVxdWVzdCBBZGEgc3dpdGNoZXMuCgoyMDAzLTA2LTE0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBsYW5nLm9wdDogQWRkIC1XYWxsLgoJKiBtaXNjLmMgKGduYXRfaGFuZGxlX29wdGlvbik6IEhhbmRsZSBpdC4KCjIwMDMtMDYtMTIgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5jby51az4KCgkqIG1pc2MuYyAoZ25hdF9oYW5kbGVfb3B0aW9uKTogRml4IHdhcm5pbmdzLgoKMjAwMy0wNi0xMSAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogTWFrZS1sYW5nLmluIChnbmF0YmluZCk6IFJlbW92ZSAkKExJQklCRVJUWSkuCgoyMDAzLTA2LTExICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZSB0byBoYW5kbGUgY29tbWFuZC1saW5lIG9wdGlvbnMuCgkqIGxhbmcub3B0OiBOZXcgZmlsZS4KCSogbWlzYy5jOiBJbmNsdWRlIGFvcHRpb25zLmguCgkoY2xfb3B0aW9uc19jb3VudCwgY2xfb3B0aW9ucyk6IFJlbW92ZS4KCShnbmF0X2hhbmRsZV9vcHRpb24pOiBOZXcuCgkoZ25hdF9kZWNvZGVfb3B0aW9uKTogUmVtb3ZlLgoJKExBTkdfSE9PS1NfREVDT0RFX09QVElPTik6IFJlbW92ZS4KCShMQU5HX0hPT0tTX0hBTkRMRV9PUFRJT04pOiBPdmVycmlkZS4KCjIwMDMtMDYtMTAgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCSogaW5pdC5jLCBtaXNjLmMsIHRyYW5zLmMsIHV0aWxzLmM6IFJlbW92ZSBkZWFkIGNvZGUuCgoyMDAzLTA2LTA5ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIE1ha2VmaWxlLmluOiBSZXBsYWNlICJob3N0X2Nhbm9uaWNhbCIgd2l0aCAiaG9zdCIgZm9yIGF1dG9jb25mCglzdWJzdGl0dXRpb24uCgoyMDAzLTA2LTA4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZS4KCSogbWlzYy5jOiBJbmNsdWRlIG9wdHMuaC4gRGVmaW5lIGNsX29wdGlvbnNfY291bnQgYW5kIGNsX29wdGlvbnMuCgoyMDAzLTA2LTA3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuY28udWs+CgoJKiBtaXNjLmMgKGduYXRfaW5pdF9vcHRpb25zKTogVXBkYXRlLgoKMjAwMy0wNi0wNSAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogTWFrZS1sYW5nLmluIChhZGEvYl9nbmF0Yi5vLXdhcm4pOiBSZW1vdmUuCgkqIGJpbmRnZW4uYWRiIChHZW5fTWFpbl9DKTogTWFyayBlbnN1cmVfcmVmZXJlbmNlIHdpdGgKCV9fYXR0cmlidXRlX18gKChfX3VudXNlZF9fKSkuCgoyMDAzLTA2LTA1ICBKYW4gSHViaWNrYSAgPGpoQHN1c2UuY3o+CgoJKiBNYWtlLWxhbmcuaW46ICBBZGQgc3VwcG9ydCBmb3Igc3RhZ2Vwcm9maWxlIGFuZCBzdGFnZWZlZWRiYWNrCgoyMDAzLTA2LTA1ICBNYXR0IEtyYWFpICA8a3JhYWlAYWx1bW5pLmNtdS5lZHU+CgoJKiBiaW5kZ2VuLmFkYiAoR2VuX0FkYWZpbmFsX0MsIEdlbl9BZGFpbml0X0MsIEdlbl9FbGFiX0RlZnNfQykKCShHZW5fTWFpbl9DLCBHZW5fT3V0cHV0X0ZpbGVfQyk6IEdlbmVyYXRlIElTTyBDLgoKMjAwMy0wNi0wNCAgTWF0dCBLcmFhaSAgPGtyYWFpQGFsdW1uaS5jbXUuZWR1PgoKCSogZ25hdF91Zy50ZXhpIChUaGUgR05BVCBSdW4tVGltZSBMaWJyYXJ5IEJ1aWxkZXIgZ25hdGxicik6CglSZW1vdmUgbm9uLVZNUyBkaXJlY3RpdmUuCgkoU3dpdGNoZXMgZm9yIGduYXRsYnIsIE9wdGltaXphdGlvbiBMZXZlbHMpOiBSZW1vdmUgbm9uLVZNUwoJYWx0ZXJuYXRpdmVzLgoJKEV4YW1wbGVzIG9mIGduYXRscyBVc2FnZSk6IFJlbW92ZSBWTVMgYWx0ZXJuYXRpdmUuCgoyMDAzLTA2LTA0ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGFjdC1ldXJvcGUuZnI+CgoJUFIgYWRhLzk5NTMKCSogNWhzeXN0ZW0uYWRzOiBSZW1vdmUgcHJhZ21hIExpbmtlcl9PcHRpb24gZm9yIHB0aHJlYWRzIGxpYnJhcnksCglhbmQgdHVybiBaQ1hfQnlfRGVmYXVsdCBiYWNrIHRvIEZhbHNlIHNpbmNlIHRoZSB1bmRlcmx5aW5nIHN1cHBvcnQKCWlzIG5vdCBxdWl0ZSB0aGVyZSB5ZXQuCgoyMDAzLTA2LTAxICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiB1dGlscy5jIChmaW5pc2hfcmVjb3JkX3R5cGUpOiBSZW1vdmUgdXNhZ2VzIG9mIFJPVU5EX1RZUEVfU0laRQoJYW5kIFJPVU5EX1RZUEVfU0laRV9VTklULgoKMjAwMy0wNS0yMiAgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIGduYXRfcm0udGV4aSA6IFJlbW92ZSByZWZlcmVuY2UgdG8gQWRhIENvcmUgVGVjaG5vbG9naWVzLgoKMjAwMy0wNS0wMyAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtKTogVXNlIGxvY2F0aW9uX3QgYW5kIGlucHV0X2xvY2F0aW9uCglkaXJlY3RseS4KCShidWlsZF91bml0X2VsYWIpOiBMaWtld2lzZS4KCSogdXRpbHMuYyAoY3JlYXRlX2xhYmVsX2RlY2wpOiBMaWtld2lzZS4KCjIwMDMtMDUtMDEgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgYnVpbGRfdW5pdF9lbGFiLAoJc2V0X2xpbmVubyk6IFJlbmFtZSBsaW5lbm8gdG8gaW5wdXRfbGluZS4KCSogdXRpbHMuYyAocHVzaGRlY2wsIGNyZWF0ZV9sYWJlbF9kZWNsLCBiZWdpbl9zdWJwcm9nX2JvZHksCgllbmRfc3VicHJvZ19ib2R5KTogTGlrZXdpc2UuCgkqIHV0aWxzMi5jIChidWlsZF9jYWxsX3JhaXNlKTogTGlrZXdpc2UuCgoyMDAzLTA1LTAxICBMYXVyZW50IEd1ZXJieSA8Z3VlcmJ5QGFjbS5vcmc+CgoJUFIgYWRhLzEwNTQ2CgkqIDVpb3NpbnRlLmFkczogSW5jcmVhc2UgcHRocmVhZF9jb25kX3Qgc2l6ZSB0byBtYXRjaCByZWNlbnQKCUxpbnV4VGhyZWFkIGFuZCBOUFRMIHZlcnNpb24sIG1lcmdlIGZyb20gQUNULgoKMjAwMy0wNC0yOCAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIHV0aWxzLmMgKGNvbnZlcnQpOiBObyBuZWVkIHRvIGNsZWFyIFRSRUVfQ1NUX1JUTC4KCjIwMDMtMDQtMjMgICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiAxYWV4Y2VwdC5hZGIsIDFhZXhjZXB0LmFkcywgMWljLmFkcywgMXNzZWNzdGEuYWRiLAoJMXNzZWNzdGEuYWRzLCAzMXNvY2Nvbi5hZHMsIDMxc29saW9wLmFkcywgM2Fzb2Njb24uYWRzLAoJM2Jzb2Njb24uYWRzLCAzZ3NvY2Nvbi5hZHMsIDNoc29jY29uLmFkcywgM3Nzb2Njb24uYWRzLAoJM3Nzb2xpb3AuYWRzLCAzd3NvY2Nvbi5hZHMsIDN3c29jdGhpLmFkYiwgM3dzb2N0aGkuYWRzLAoJM3dzb2xpb3AuYWRzLCA0MWludG5hbS5hZHMsIDQyaW50bmFtLmFkcywgNGFpbnRuYW0uYWRzLAoJNGNpbnRuYW0uYWRzLCA0ZGludG5hbS5hZHMsIDRnaW50bmFtLmFkcywgNGhleGNwb2wuYWRiLAoJNGhpbnRuYW0uYWRzLCA0bGludG5hbS5hZHMsIDRtaW50bmFtLmFkcywgNG5pbnRuYW0uYWRzLAoJNG9pbnRuYW0uYWRzLCA0b251bWF1eC5hZHMsIDRwaW50bmFtLmFkcywgNHJpbnRuYW0uYWRzLAoJNHNpbnRuYW0uYWRzLCA0dWludG5hbS5hZHMsIDR2Y2FsZGVsLmFkYiwgNHZjYWxlbmQuYWRiLAoJNHZjYWxlbmQuYWRzLCA0dmludG5hbS5hZHMsIDR3Y2FsZW5kLmFkYiwgNHdleGNwb2wuYWRiLAoJNHdpbnRuYW0uYWRzLCA0emludG5hbS5hZHMsIDR6bnVtYXV4LmFkcywgNHpzeXRhY28uYWRiLAoJNHpzeXRhY28uYWRzLCA1MW9zaW50ZS5hZGIsIDUxb3NpbnRlLmFkcywgNTJvc2ludGUuYWRiLAoJNTJvc2ludGUuYWRzLCA1MnN5c3RlbS5hZHMsIDUzb3NpbnRlLmFkcywgNTRvc2ludGUuYWRzLAoJNWFtYXN0b3AuYWRiLCA1YW9zaW50ZS5hZGIsIDVhb3NpbnRlLmFkcywgNWFzeXN0ZW0uYWRzLAoJNWF0YXByb3AuYWRiLCA1YXRhc2luZi5hZHMsIDVhdGFzcHJpLmFkcywgNWF0cG9wc3AuYWRiLAoJNWF2eHdvcmsuYWRzLCA1Ym9zaW50ZS5hZGIsIDVib3NpbnRlLmFkcywgNWJzeXN0ZW0uYWRzLAoJNWNvc2ludGUuYWRzLCA1ZG9zaW50ZS5hZHMsIDVlc3lzdGVtLmFkcywgNWV0cG9wc2UuYWRiLAoJNWZpbnRtYW4uYWRiLCA1Zm9zaW50ZS5hZHMsIDVmc3lzdGVtLmFkcywgNWZ0YXByb3AuYWRiLAoJNWZ0YXNpbmYuYWRzLCA1Z2ludGVyci5hZGIsIDVnaW50bWFuLmFkYiwgNWdtYXN0b3AuYWRiLAoJNWdvc2ludGUuYWRzLCA1Z3Byb2luZi5hZGIsIDVncHJvaW5mLmFkcywgNWdzeXN0ZW0uYWRzLAoJNWd0YXByb3AuYWRiLCA1Z3Rhc2luZi5hZGIsIDVndGFzaW5mLmFkcywgNWd0cGdldGMuYWRiLAoJNWhvc2ludGUuYWRiLCA1aG9zaW50ZS5hZHMsIDVocGFyYW1lLmFkcywgNWhzeXN0ZW0uYWRzLAoJNWh0YXByb3AuYWRiLCA1aHRhc3ByaS5hZHMsIDVodHJhY2ViLmFkYiwgNWlvc2ludGUuYWRiLAoJNWlvc2ludGUuYWRzLCA1aXRhcHJvcC5hZGIsIDVpdGFzcHJpLmFkcywgNWtzeXN0ZW0uYWRzLAoJNWt2eHdvcmsuYWRzLCA1bGludG1hbi5hZGIsIDVsbWwtdGd0LmFkYiwgNWxvc2ludGUuYWRzLAoJNWxzeXN0ZW0uYWRzLCA1bW9zaW50ZS5hZHMsIDVtdnh3b3JrLmFkcywgNW5pbm1hb3AuYWRiLAoJNW5pbnRtYW4uYWRiLCA1bm9zaW50ZS5hZHMsIDVudGFwcm9wLmFkYiwgNW50YXNwcmkuYWRzLAoJNW9pbnRlcnIuYWRiLCA1b21hc3RvcC5hZGIsIDVvb3NpbnRlLmFkYiwgNW9vc2ludGUuYWRzLAoJNW9vc3ByaW0uYWRiLCA1b3BhcmFtZS5hZGIsIDVvc3lzdGVtLmFkcywgNW90YXByb3AuYWRiLAoJNW90YXNwcmkuYWRzLCA1cG9zaW50ZS5hZHMsIDVwb3NwcmltLmFkYiwgNXB2eHdvcmsuYWRzLAoJNXFvc2ludGUuYWRiLCA1cW9zaW50ZS5hZHMsIDVxc3RhY2hlLmFkYiwgNXF0YXByb3AuYWRiLAoJNXF0YXNwcmkuYWRzLCA1cm9zaW50ZS5hZGIsIDVyb3NpbnRlLmFkcywgNXJwYXJhbWUuYWRiLAoJNXNpbnRtYW4uYWRiLCA1c29zaW50ZS5hZGIsIDVzb3NpbnRlLmFkcywgNXNwYXJhbWUuYWRiLAoJNXNzeXN0ZW0uYWRzLCA1c3RhcHJvcC5hZGIsIDVzdGFzaW5mLmFkYiwgNXN0YXNpbmYuYWRzLAoJNXN0YXNwcmkuYWRzLCA1c3Rwb3BzZS5hZGIsIDVzdnh3b3JrLmFkcywgNXRvc2ludGUuYWRzLAoJNXVpbnRtYW4uYWRiLCA1dW9zaW50ZS5hZHMsIDV2YXN0aGFuLmFkYiwgNXZpbm1hb3AuYWRiLAoJNXZpbnRlcnIuYWRiLCA1dmludG1hbi5hZGIsIDV2aW50bWFuLmFkcywgNXZtYXN0b3AuYWRiLAoJNXZvc2ludGUuYWRiLCA1dm9zaW50ZS5hZHMsIDV2b3NwcmltLmFkYiwgNXZvc3ByaW0uYWRzLAoJNXZwYXJhbWUuYWRzLCA1dnN5c3RlbS5hZHMsIDV2dGFwcm9wLmFkYiwgNXZ0YXNwcmkuYWRzLAoJNXZ0cG9wZGUuYWRiLCA1dnRwb3BkZS5hZHMsIDV2dmFmbG9wLmFkYiwgNXdnbG9sb2MuYWRiLAoJNXdpbnRtYW4uYWRiLCA1d21lbW9yeS5hZGIsIDV3b3NpbnRlLmFkcywgNXdvc3ByaW0uYWRiLAoJNXdzeXN0ZW0uYWRzLCA1d3RhcHJvcC5hZGIsIDV3dGFzcHJpLmFkcywgNXlzeXN0ZW0uYWRzLAoJNXppbnRlcnIuYWRiLCA1emludG1hbi5hZGIsIDV6b3NpbnRlLmFkYiwgNXpvc2ludGUuYWRzLAoJNXpvc3ByaW0uYWRiLCA1enN5c3RlbS5hZHMsIDV6dGFwcm9wLmFkYiwgNnZjcHAuYWRiLAoJNnZjc3RyZWEuYWRiLCA2dmludGVyZi5hZHMsIDdzaW5tYW9wLmFkYiwgN3NpbnRtYW4uYWRiLAoJN3Nvc2ludGUuYWRiLCA3c29zcHJpbS5hZGIsIDdzdGFwcm9wLmFkYiwgN3N0YXNwcmkuYWRzLAoJN3N0cG9wc3AuYWRiLCA3c3RyYWNlYi5hZGIsIDg2bnVtYXV4LmFkYiwgODZudW1hdXguYWRzLAoJOWRycGMuYWRiLCBhLWFzdGFjby5hZGIsIGEtYXN0YWNvLmFkcywgYS1jYWxkZWwuYWRiLAoJYS1jYWxkZWwuYWRzLCBhLWNhbGVuZC5hZGIsIGEtY2FsZW5kLmFkcywgYS1jaGFoYW4uYWRiLAoJYS1jaGFoYW4uYWRzLCBhLWNoYXJhYy5hZHMsIGEtY2hsYXQxLmFkcywgYS1jaGxhdDkuYWRzLAoJYS1jb2xpZW4uYWRiLCBhLWNvbGllbi5hZHMsIGEtY29saXJlLmFkYiwgYS1jb2xpcmUuYWRzLAoJYS1jb21saW4uYWRiLCBhLWNvbWxpbi5hZHMsIGEtY3dpbGExLmFkcywgYS1jd2lsYTkuYWRzLAoJYS1kZWNpbWEuYWRiLCBhLWRlY2ltYS5hZHMsIGEtZGlvY3N0LmFkYiwgYS1kaW9jc3QuYWRzLAoJYS1kaXJlaW8uYWRiLCBhLWRpcmVpby5hZHMsIGEtZHlucHJpLmFkYiwgYS1keW5wcmkuYWRzLAoJYS1laW51b2MuYWRiLCBhLWVpbnVvYy5hZHMsIGEtZXhjZXB0LmFkYiwgYS1leGNlcHQuYWRzLAoJYS1leGNwb2wuYWRiLCBhLWV4Y3RyYS5hZGIsIGEtZXhjdHJhLmFkcywgYS1maWxpY28uYWRiLAoJYS1maWxpY28uYWRzLCBhLWZpbmFsaS5hZGIsIGEtZmluYWxpLmFkcywgYS1mbHRlaW8uYWRzLAoJYS1md3RlaW8uYWRzLCBhLWludGVpby5hZHMsIGEtaW50ZXJyLmFkYiwgYS1pbnRlcnIuYWRzLAoJYS1pbnRuYW0uYWRzLCBhLWludHNpZy5hZGIsIGEtaW50c2lnLmFkcywgYS1pb2V4Y2UuYWRzLAoJYS1pd3RlaW8uYWRzLCBhLWxmdGVpby5hZHMsIGEtbGZ3dGlvLmFkcywgYS1saXRlaW8uYWRzLAoJYS1saXd0aW8uYWRzLCBhLWxsZnRpby5hZHMsIGEtbGxmd3RpLmFkcywgYS1sbGl0aW8uYWRzLAoJYS1sbGl3dGkuYWRzLCBhLW5jZWxmdS5hZHMsIGEtbmdjZWZ1LmFkYiwgYS1uZ2NlZnUuYWRzLAoJYS1uZ2NvdHkuYWRiLCBhLW5nY290eS5hZHMsIGEtbmdlbGZ1LmFkYiwgYS1uZ2VsZnUuYWRzLAoJYS1ubGNlZnUuYWRzLCBhLW5sY290eS5hZHMsIGEtbmxlbGZ1LmFkcywgYS1ubGxjZWYuYWRzLAoJYS1ubGxjdHkuYWRzLCBhLW5sbGVmdS5hZHMsIGEtbnNjZWZ1LmFkcywgYS1uc2NvdHkuYWRzLAoJYS1uc2VsZnUuYWRzLCBhLW51Y290eS5hZHMsIGEtbnVkaXJhLmFkYiwgYS1udWRpcmEuYWRzLAoJYS1udWVsZnUuYWRzLCBhLW51ZmxyYS5hZGIsIGEtbnVmbHJhLmFkcywgYS1udW1hdXguYWRzLAoJYS1udW1lcmkuYWRzLCBhLXJlYXRpbS5hZGIsIGEtcmVhdGltLmFkcywgYS1yZXRpZGUuYWRiLAoJYS1yZXRpZGUuYWRzLCBhLXNlcXVpby5hZGIsIGEtc2VxdWlvLmFkcywgYS1zZnRlaW8uYWRzLAoJYS1zZnd0aW8uYWRzLCBhLXNpb2NzdC5hZGIsIGEtc2lvY3N0LmFkcywgYS1zaXRlaW8uYWRzLAoJYS1zaXd0aW8uYWRzLCBhLXNzaWNzdC5hZGIsIGEtc3NpY3N0LmFkcywgYS1zc2l0aW8uYWRzLAoJYS1zc2l3dGkuYWRzLCBhLXN0bWFjby5hZHMsIGEtc3RvcmlvLmFkYiwgYS1zdG9yaW8uYWRzLAoJYS1zdHJib3UuYWRiLCBhLXN0cmJvdS5hZHMsIGEtc3RyZWFtLmFkcywgYS1zdHJmaXguYWRiLAoJYS1zdHJmaXguYWRzLCBhLXN0cmluZy5hZHMsIGEtc3RybWFwLmFkYiwgYS1zdHJtYXAuYWRzLAoJYS1zdHJzZWEuYWRiLCBhLXN0cnNlYS5hZHMsIGEtc3RydW5iLmFkYiwgYS1zdHJ1bmIuYWRzLAoJYS1zdHN0aW8uYWRiLCBhLXN0c3Rpby5hZHMsIGEtc3R1bmF1LmFkYiwgYS1zdHVuYXUuYWRzLAoJYS1zdHdpYm8uYWRiLCBhLXN0d2liby5hZHMsIGEtc3R3aWZpLmFkYiwgYS1zdHdpZmkuYWRzLAoJYS1zdHdpbWEuYWRiLCBhLXN0d2ltYS5hZHMsIGEtc3R3aXNlLmFkYiwgYS1zdHdpc2UuYWRzLAoJYS1zdHdpdW4uYWRiLCBhLXN0d2l1bi5hZHMsIGEtc3V0ZWlvLmFkYiwgYS1zdXRlaW8uYWRzLAoJYS1zd213Y28uYWRzLCBhLXN3dXd0aS5hZGIsIGEtc3d1d3RpLmFkcywgYS1zeXRhY28uYWRiLAoJYS1zeXRhY28uYWRzLCBhLXRhZ3MuYWRiLCBhLXRhZ3MuYWRzLCBhLXRhc2F0dC5hZGIsCglhLXRhc2F0dC5hZHMsIGEtdGFzaWRlLmFkYiwgYS10YXNpZGUuYWRzLCBhLXRlaW9lZC5hZGIsCglhLXRlaW9lZC5hZHMsIGEtdGV4dGlvLmFkYiwgYS10ZXh0aW8uYWRzLCBhLXRpY29hdS5hZGIsCglhLXRpY29hdS5hZHMsIGEtdGljb2lvLmFkYiwgYS10aWNvaW8uYWRzLCBhLXRpZGVhdS5hZGIsCglhLXRpZGVhdS5hZHMsIGEtdGlkZWlvLmFkYiwgYS10aWRlaW8uYWRzLCBhLXRpZW5hdS5hZGIsCglhLXRpZW5hdS5hZHMsIGEtdGllbmlvLmFkYiwgYS10aWVuaW8uYWRzLCBhLXRpZmlpby5hZGIsCglhLXRpZmlpby5hZHMsIGEtdGlmbGF1LmFkYiwgYS10aWZsYXUuYWRzLCBhLXRpZmxpby5hZGIsCglhLXRpZmxpby5hZHMsIGEtdGlnZWF1LmFkYiwgYS10aWdlYXUuYWRzLCBhLXRpaW5hdS5hZGIsCglhLXRpaW5hdS5hZHMsIGEtdGlpbmlvLmFkYiwgYS10aWluaW8uYWRzLCBhLXRpbW9hdS5hZGIsCglhLXRpbW9hdS5hZHMsIGEtdGltb2lvLmFkYiwgYS10aW1vaW8uYWRzLCBhLXRpb2NzdC5hZGIsCglhLXRpb2NzdC5hZHMsIGEtdGl0ZXN0LmFkYiwgYS10aXRlc3QuYWRzLCBhLXVuY2Nvbi5hZHMsCglhLXVuY2RlYS5hZHMsIGEtd2l0ZWlvLmFkYiwgYS13aXRlaW8uYWRzLCBhLXd0Y29hdS5hZGIsCglhLXd0Y29hdS5hZHMsIGEtd3Rjb2lvLmFkYiwgYS13dGNvaW8uYWRzLCBhLXd0Y3N0ci5hZGIsCglhLXd0Y3N0ci5hZHMsIGEtd3RkZWF1LmFkYiwgYS13dGRlYXUuYWRzLCBhLXd0ZGVpby5hZGIsCglhLXd0ZGVpby5hZHMsIGEtd3RlZGl0LmFkYiwgYS13dGVkaXQuYWRzLCBhLXd0ZW5hdS5hZGIsCglhLXd0ZW5hdS5hZHMsIGEtd3RlbmlvLmFkYiwgYS13dGVuaW8uYWRzLCBhLXd0Zmlpby5hZGIsCglhLXd0Zmlpby5hZHMsIGEtd3RmbGF1LmFkYiwgYS13dGZsYXUuYWRzLCBhLXd0Zmxpby5hZGIsCglhLXd0Zmxpby5hZHMsIGEtd3RnZWF1LmFkYiwgYS13dGdlYXUuYWRzLCBhLXd0aW5hdS5hZGIsCglhLXd0aW5hdS5hZHMsIGEtd3RpbmlvLmFkYiwgYS13dGluaW8uYWRzLCBhLXd0bW9hdS5hZGIsCglhLXd0bW9hdS5hZHMsIGEtd3Rtb2lvLmFkYiwgYS13dG1vaW8uYWRzLCBhLXd0dGVzdC5hZGIsCglhLXd0dGVzdC5hZHMsIGFkYS10cmVlLmgsIGFkYS5hZHMsIGFkYS5oLAoJYWRhZGVjb2RlLmMsIGFkYWRlY29kZS5oLCBhbGktdXRpbC5hZGIsIGFsaS11dGlsLmFkcywKCWFsaS5hZGIsIGFsaS5hZHMsIGFsbG9jLmFkcywgYXJndi5jLAoJYXRyZWUuYWRiLCBhdHJlZS5hZHMsIGF0cmVlLmgsIGF1eC1pby5jLAoJYmFja19lbmQuYWRiLCBiYWNrX2VuZC5hZHMsIGJjaGVjay5hZGIsIGJjaGVjay5hZHMsCgliaW5kZS5hZGIsIGJpbmRlLmFkcywgYmluZGVyci5hZGIsIGJpbmRlcnIuYWRzLAoJYmluZGdlbi5hZGIsIGJpbmRnZW4uYWRzLCBiaW5kdXNnLmFkYiwgYmluZHVzZy5hZHMsCglidXRpbC5hZGIsIGJ1dGlsLmFkcywgY2FsLmMsIGNhbGVuZGFyLmFkcywKCWNhc2luZy5hZGIsIGNhc2luZy5hZHMsIGNlaW5mby5hZGIsIGNoZWNrcy5hZGIsCgljaGVja3MuYWRzLCBjaW8uYywgY29tcGVyci5hZGIsIGNvbXBlcnIuYWRzLAoJY29uZmlnLWxhbmcuaW4sIGNzZXRzLmFkYiwgY3NldHMuYWRzLCBjc2luZm8uYWRiLAoJY3N0YW5kLmFkYiwgY3N0YW5kLmFkcywgY3VpbnRwLmMsIGRlYnVnLmFkYiwKCWRlYnVnLmFkcywgZGVidWdfYS5hZGIsIGRlYnVnX2EuYWRzLCBkZWMtaW8uYWRiLAoJZGVjLWlvLmFkcywgZGVjLmFkcywgZGVmdGFyZy5jLCBkaXJlY3Rpby5hZHMsCgllaW5mby5hZGIsIGVpbmZvLmFkcywgZWxpc3RzLmFkYiwgZWxpc3RzLmFkcywKCWVsaXN0cy5oLCBlcnJuby5jLCBlcnJvdXQuYWRiLCBlcnJvdXQuYWRzLAoJZXZhbF9mYXQuYWRiLCBldmFsX2ZhdC5hZHMsIGV4aXQuYywgZXhwX2FnZ3IuYWRiLAoJZXhwX2FnZ3IuYWRzLCBleHBfYXR0ci5hZGIsIGV4cF9hdHRyLmFkcywgZXhwX2NoMTAuYWRzLAoJZXhwX2NoMTEuYWRiLCBleHBfY2gxMS5hZHMsIGV4cF9jaDEyLmFkYiwgZXhwX2NoMTIuYWRzLAoJZXhwX2NoMTMuYWRiLCBleHBfY2gxMy5hZHMsIGV4cF9jaDIuYWRiLCBleHBfY2gyLmFkcywKCWV4cF9jaDMuYWRiLCBleHBfY2gzLmFkcywgZXhwX2NoNC5hZGIsIGV4cF9jaDQuYWRzLAoJZXhwX2NoNS5hZGIsIGV4cF9jaDUuYWRzLCBleHBfY2g2LmFkYiwgZXhwX2NoNi5hZHMsCglleHBfY2g3LmFkYiwgZXhwX2NoNy5hZHMsIGV4cF9jaDguYWRiLCBleHBfY2g4LmFkcywKCWV4cF9jaDkuYWRiLCBleHBfY2g5LmFkcywgZXhwX2NvZGUuYWRiLCBleHBfY29kZS5hZHMsCglleHBfZGJ1Zy5hZGIsIGV4cF9kYnVnLmFkcywgZXhwX2Rpc3AuYWRiLCBleHBfZGlzcC5hZHMsCglleHBfZGlzdC5hZGIsIGV4cF9kaXN0LmFkcywgZXhwX2ZpeGQuYWRiLCBleHBfZml4ZC5hZHMsCglleHBfaW1ndi5hZGIsIGV4cF9pbWd2LmFkcywgZXhwX2ludHIuYWRiLCBleHBfaW50ci5hZHMsCglleHBfcGFrZC5hZGIsIGV4cF9wYWtkLmFkcywgZXhwX3ByYWcuYWRiLCBleHBfcHJhZy5hZHMsCglleHBfc21lbS5hZGIsIGV4cF9zbWVtLmFkcywgZXhwX3N0cm0uYWRiLCBleHBfc3RybS5hZHMsCglleHBfdHNzLmFkYiwgZXhwX3Rzcy5hZHMsIGV4cF91dGlsLmFkYiwgZXhwX3V0aWwuYWRzLAoJZXhwX3ZmcHQuYWRiLCBleHBfdmZwdC5hZHMsIGV4cGFuZGVyLmFkYiwgZXhwYW5kZXIuYWRzLAoJZm1hcC5hZGIsIGZtYXAuYWRzLCBmbmFtZS1zZi5hZGIsIGZuYW1lLXNmLmFkcywKCWZuYW1lLXVmLmFkYiwgZm5hbWUtdWYuYWRzLCBmbmFtZS5hZGIsIGZuYW1lLmFkcywKCWZyZWV6ZS5hZGIsIGZyZWV6ZS5hZHMsIGZyb250ZW5kLmFkYiwgZnJvbnRlbmQuYWRzLAoJZy1hd2suYWRiLCBnLWF3ay5hZHMsIGctYnVzb3JhLmFkYiwgZy1idXNvcmEuYWRzLAoJZy1idXNvcmcuYWRiLCBnLWJ1c29yZy5hZHMsIGctY2FsZW5kLmFkYiwgZy1jYWxlbmQuYWRzLAoJZy1jYXN1dGkuYWRiLCBnLWNhc3V0aS5hZHMsIGctY2F0aWlvLmFkYiwgZy1jYXRpaW8uYWRzLAoJZy1jZ2kuYWRiLCBnLWNnaS5hZHMsIGctY2dpY29vLmFkYiwgZy1jZ2ljb28uYWRzLAoJZy1jZ2lkZWIuYWRiLCBnLWNnaWRlYi5hZHMsIGctY29tbGluLmFkYiwgZy1jb21saW4uYWRzLAoJZy1jcmMzMi5hZGIsIGctY3JjMzIuYWRzLCBnLWN1cmV4Yy5hZHMsIGctZGVicG9vLmFkYiwKCWctZGVicG9vLmFkcywgZy1kZWJ1dGkuYWRiLCBnLWRlYnV0aS5hZHMsIGctZGlvcGl0LmFkYiwKCWctZGlvcGl0LmFkcywgZy1kaXJvcGUuYWRiLCBnLWRpcm9wZS5hZHMsIGctZHludGFiLmFkYiwKCWctZHludGFiLmFkcywgZy1lbmJsc3AuYWRiLCBnLWV4Y2VwdC5hZHMsIGctZXhjdHJhLmFkYiwKCWctZXhjdHJhLmFkcywgZy1leHBlY3QuYWRiLCBnLWV4cGVjdC5hZHMsIGctZmxvY29uLmFkcywKCWctaGVzb3JhLmFkYiwgZy1oZXNvcmEuYWRzLCBnLWhlc29yZy5hZGIsIGctaGVzb3JnLmFkcywKCWctaHRhYmxlLmFkYiwgZy1odGFibGUuYWRzLCBnLWlvLmFkYiwgZy1pby5hZHMsCglnLWlvX2F1eC5hZGIsIGctaW9fYXV4LmFkcywgZy1sb2NmaWwuYWRzLCBnLW1kNS5hZGIsCglnLW1kNS5hZHMsIGctbW9yZWV4LmFkYiwgZy1tb3JlZXguYWRzLCBnLW9zX2xpYi5hZGIsCglnLW9zX2xpYi5hZHMsIGctcmVnZXhwLmFkYiwgZy1yZWdleHAuYWRzLCBnLXJlZ2lzdC5hZHMsCglnLXJlZ3BhdC5hZGIsIGctcmVncGF0LmFkcywgZy1zb2Njb24uYWRzLCBnLXNvY2tldC5hZGIsCglnLXNvY2tldC5hZHMsIGctc29jdGhpLmFkYiwgZy1zb2N0aGkuYWRzLCBnLXNvbGlvcC5hZHMsCglnLXNvdWluZi5hZHMsIGctc3BlY2hlLmFkYiwgZy1zcGVjaGUuYWRzLCBnLXNwaXBhdC5hZGIsCglnLXNwaXBhdC5hZHMsIGctc3BpdGJvLmFkYiwgZy1zcGl0Ym8uYWRzLCBnLXNwdGFiby5hZHMsCglnLXNwdGFpbi5hZHMsIGctc3B0YXZzLmFkcywgZy10YWJsZS5hZGIsIGctdGFibGUuYWRzLAoJZy10YXNsb2MuYWRiLCBnLXRhc2xvYy5hZHMsIGctdGhyZWFkLmFkYiwgZy10aHJlYWQuYWRzLAoJZy10cmFjZWIuYWRiLCBnLXRyYWNlYi5hZHMsIGctdHJhc3ltLmFkYiwgZy10cmFzeW0uYWRzLAoJZ2V0X3RhcmcuYWRiLCBnZXRfdGFyZy5hZHMsIGduYXQtc3R5bGUudGV4aSwgZ25hdC5hZHMsCglnbmF0MWRydi5hZGIsIGduYXQxZHJ2LmFkcywgZ25hdGJpbmQuYWRiLCBnbmF0YmluZC5hZHMsCglnbmF0YmwuYywgZ25hdGNob3AuYWRiLCBnbmF0Y21kLmFkYiwgZ25hdGNtZC5hZHMsCglnbmF0ZGxsLmFkYiwgZ25hdGZpbmQuYWRiLCBnbmF0a3IuYWRiLCBnbmF0a3IuYWRzLAoJZ25hdGxici5hZGIsIGduYXRsaW5rLmFkYiwgZ25hdGxpbmsuYWRzLCBnbmF0bHMuYWRiLAoJZ25hdGxzLmFkcywgZ25hdG1ha2UuYWRiLCBnbmF0bWFrZS5hZHMsIGduYXRtZW0uYWRiLAoJZ25hdG5hbWUuYWRiLCBnbmF0bmFtZS5hZHMsIGduYXRwcmVwLmFkYiwgZ25hdHByZXAuYWRzLAoJZ25hdHBzdGEuYWRiLCBnbmF0dnNuLmFkYiwgZ25hdHZzbi5hZHMsIGduYXR4cmVmLmFkYiwKCWhsby5hZGIsIGhsby5hZHMsIGhvc3RwYXJtLmFkcywgaS1jLmFkYiwKCWktYy5hZHMsIGktY2V4dGVuLmFkcywgaS1jb2JvbC5hZGIsIGktY29ib2wuYWRzLAoJaS1jcG9pbnQuYWRiLCBpLWNwb2ludC5hZHMsIGktY3BwLmFkYiwgaS1jcHAuYWRzLAoJaS1jc3RyZWEuYWRiLCBpLWNzdHJlYS5hZHMsIGktY3N0cmluLmFkYiwgaS1jc3RyaW4uYWRzLAoJaS1mb3J0cmEuYWRiLCBpLWZvcnRyYS5hZHMsIGktb3MyZXJyLmFkcywgaS1vczJsaWIuYWRiLAoJaS1vczJsaWIuYWRzLCBpLW9zMnN5bi5hZHMsIGktb3MydGhyLmFkcywgaS1wYWNkZWMuYWRiLAoJaS1wYWNkZWMuYWRzLCBpLXZ4d29yay5hZHMsIGltcHVuaXQuYWRiLCBpbXB1bml0LmFkcywKCWlubGluZS5hZGIsIGlubGluZS5hZHMsIGludGVyZmFjLmFkcywgaW9leGNlcHQuYWRzLAoJaXR5cGVzLmFkYiwgaXR5cGVzLmFkcywga3J1bmNoLmFkYiwga3J1bmNoLmFkcywKCWxheW91dC5hZGIsIGxheW91dC5hZHMsIGxpYi1saXN0LmFkYiwgbGliLWxvYWQuYWRiLAoJbGliLWxvYWQuYWRzLCBsaWItc29ydC5hZGIsIGxpYi11dGlsLmFkYiwgbGliLXV0aWwuYWRzLAoJbGliLXdyaXQuYWRiLCBsaWItd3JpdC5hZHMsIGxpYi14cmVmLmFkYiwgbGliLXhyZWYuYWRzLAoJbGliLmFkYiwgbGliLmFkcywgbGl2ZS5hZGIsIGxpdmUuYWRzLAoJbWFjaGNvZGUuYWRzLCBtYWtlLmFkYiwgbWFrZS5hZHMsIG1ha2V1c2cuYWRiLAoJbWFrZXVzZy5hZHMsIG1hdGhfbGliLmFkYiwgbWRsbC1maWwuYWRiLCBtZGxsLWZpbC5hZHMsCgltZGxsLXV0bC5hZGIsIG1kbGwtdXRsLmFkcywgbWRsbC5hZGIsIG1kbGwuYWRzLAoJbWVtcm9vdC5hZGIsIG1lbXJvb3QuYWRzLCBtZW10cmFjay5hZGIsIG1saWItZmlsLmFkYiwKCW1saWItZmlsLmFkcywgbWxpYi1wcmouYWRiLCBtbGliLXByai5hZHMsIG1saWItdGd0LmFkYiwKCW1saWItdGd0LmFkcywgbWxpYi11dGwuYWRiLCBtbGliLXV0bC5hZHMsIG1saWIuYWRiLAoJbWxpYi5hZHMsIG5hbWV0LmFkYiwgbmFtZXQuYWRzLCBubGlzdHMuYWRiLAoJbmxpc3RzLmFkcywgb3B0LmFkYiwgb3B0LmFkcywgb3NpbnQtYi5hZGIsCglvc2ludC1iLmFkcywgb3NpbnQtYy5hZGIsIG9zaW50LWMuYWRzLCBvc2ludC1sLmFkYiwKCW9zaW50LWwuYWRzLCBvc2ludC1tLmFkYiwgb3NpbnQtbS5hZHMsIG9zaW50LmFkYiwKCW9zaW50LmFkcywgb3V0cHV0LmFkYiwgb3V0cHV0LmFkcywgcGFyLWNoMTAuYWRiLAoJcGFyLWNoMTEuYWRiLCBwYXItY2gxMi5hZGIsIHBhci1jaDEzLmFkYiwgcGFyLWNoMi5hZGIsCglwYXItY2gzLmFkYiwgcGFyLWNoNC5hZGIsIHBhci1jaDUuYWRiLCBwYXItY2g2LmFkYiwKCXBhci1jaDcuYWRiLCBwYXItY2g4LmFkYiwgcGFyLWNoOS5hZGIsIHBhci1lbmRoLmFkYiwKCXBhci1sYWJsLmFkYiwgcGFyLWxvYWQuYWRiLCBwYXItcHJhZy5hZGIsIHBhci1zeW5jLmFkYiwKCXBhci10Y2hrLmFkYiwgcGFyLXV0aWwuYWRiLCBwYXIuYWRiLCBwYXIuYWRzLAoJcHJqLWF0dHIuYWRiLCBwcmotYXR0ci5hZHMsIHByai1jb20uYWRiLCBwcmotY29tLmFkcywKCXByai1kZWN0LmFkYiwgcHJqLWRlY3QuYWRzLCBwcmotZW52LmFkYiwgcHJqLWVudi5hZHMsCglwcmotZXh0LmFkYiwgcHJqLWV4dC5hZHMsIHByai1tYWtyLmFkYiwgcHJqLW1ha3IuYWRzLAoJcHJqLW5tc2MuYWRiLCBwcmotbm1zYy5hZHMsIHByai1wYXJzLmFkYiwgcHJqLXBhcnMuYWRzLAoJcHJqLXBhcnQuYWRiLCBwcmotcGFydC5hZHMsIHByai1wcC5hZGIsIHByai1wcC5hZHMsCglwcmotcHJvYy5hZGIsIHByai1wcm9jLmFkcywgcHJqLXN0cnQuYWRiLCBwcmotc3RydC5hZHMsCglwcmotdHJlZS5hZGIsIHByai10cmVlLmFkcywgcHJqLXV0aWwuYWRiLCBwcmotdXRpbC5hZHMsCglwcmouYWRiLCBwcmouYWRzLCByZXBpbmZvLmFkYiwgcmVwaW5mby5hZHMsCglyZXN0cmljdC5hZGIsIHJlc3RyaWN0LmFkcywgcmlkZW50LmFkcywgcnRzZmluZC5hZGIsCglydHNmaW5kLmFkcywgcy1hZGRpbWEuYWRiLCBzLWFkZGltYS5hZHMsIHMtYXJpdDY0LmFkYiwKCXMtYXJpdDY0LmFkcywgcy1hc3NlcnQuYWRiLCBzLWFzc2VydC5hZHMsIHMtYXN0aGFuLmFkYiwKCXMtYXN0aGFuLmFkcywgcy1hdGFjY28uYWRiLCBzLWF0YWNjby5hZHMsIHMtYXV4ZGVjLmFkYiwKCXMtYXV4ZGVjLmFkcywgcy1iaXRvcHMuYWRiLCBzLWJpdG9wcy5hZHMsIHMtY2hlcG9vLmFkcywKCXMtY3JjMzIuYWRiLCBzLWNyYzMyLmFkcywgcy1kaXJlaW8uYWRiLCBzLWRpcmVpby5hZHMsCglzLWVycnJlcC5hZGIsIHMtZXJycmVwLmFkcywgcy1leGNlcHQuYWRzLCBzLWV4Y3RhYi5hZGIsCglzLWV4Y3RhYi5hZHMsIHMtZXhuZmx0LmFkcywgcy1leG5nZW4uYWRiLCBzLWV4bmdlbi5hZHMsCglzLWV4bmludC5hZHMsIHMtZXhubGZsLmFkcywgcy1leG5saW4uYWRzLCBzLWV4bmxsZi5hZHMsCglzLWV4bmxsaS5hZHMsIHMtZXhuc2ZsLmFkcywgcy1leG5zaW4uYWRzLCBzLWV4bnNzaS5hZHMsCglzLWV4cGZsdC5hZHMsIHMtZXhwZ2VuLmFkYiwgcy1leHBnZW4uYWRzLCBzLWV4cGludC5hZHMsCglzLWV4cGxmbC5hZHMsIHMtZXhwbGluLmFkcywgcy1leHBsbGYuYWRzLCBzLWV4cGxsaS5hZHMsCglzLWV4cGxsdS5hZGIsIHMtZXhwbGx1LmFkcywgcy1leHBtb2QuYWRiLCBzLWV4cG1vZC5hZHMsCglzLWV4cHNmbC5hZHMsIHMtZXhwc2luLmFkcywgcy1leHBzc2kuYWRzLCBzLWV4cHVucy5hZGIsCglzLWV4cHVucy5hZHMsIHMtZmF0Zmx0LmFkcywgcy1mYXRnZW4uYWRiLCBzLWZhdGdlbi5hZHMsCglzLWZhdGxmbC5hZHMsIHMtZmF0bGxmLmFkcywgcy1mYXRzZmwuYWRzLCBzLWZpY29ibC5hZHMsCglzLWZpbGVpby5hZGIsIHMtZmlsZWlvLmFkcywgcy1maW5pbXAuYWRiLCBzLWZpbmltcC5hZHMsCglzLWZpbnJvby5hZGIsIHMtZmlucm9vLmFkcywgcy1mb3JlLmFkYiwgcy1mb3JlLmFkcywKCXMtZ2xvbG9jLmFkYiwgcy1nbG9sb2MuYWRzLCBzLWltZ2JpdS5hZGIsIHMtaW1nYml1LmFkcywKCXMtaW1nYm9vLmFkYiwgcy1pbWdib28uYWRzLCBzLWltZ2NoYS5hZGIsIHMtaW1nY2hhLmFkcywKCXMtaW1nZGVjLmFkYiwgcy1pbWdkZWMuYWRzLCBzLWltZ2VudS5hZGIsIHMtaW1nZW51LmFkcywKCXMtaW1naW50LmFkYiwgcy1pbWdpbnQuYWRzLCBzLWltZ2xsYi5hZGIsIHMtaW1nbGxiLmFkcywKCXMtaW1nbGxkLmFkYiwgcy1pbWdsbGQuYWRzLCBzLWltZ2xsaS5hZGIsIHMtaW1nbGxpLmFkcywKCXMtaW1nbGx1LmFkYiwgcy1pbWdsbHUuYWRzLCBzLWltZ2xsdy5hZGIsIHMtaW1nbGx3LmFkcywKCXMtaW1ncmVhLmFkYiwgcy1pbWdyZWEuYWRzLCBzLWltZ3Vucy5hZGIsIHMtaW1ndW5zLmFkcywKCXMtaW1nd2NoLmFkYiwgcy1pbWd3Y2guYWRzLCBzLWltZ3dpdS5hZGIsIHMtaW1nd2l1LmFkcywKCXMtaW5tYW9wLmFkcywgcy1pbnRlcnIuYWRiLCBzLWludGVyci5hZHMsIHMtaW50bWFuLmFkcywKCXMtaW8uYWRiLCBzLWlvLmFkcywgcy1tYWNjb2QuYWRzLCBzLW1hbnRpcy5hZGIsCglzLW1hbnRpcy5hZHMsIHMtbWFzdG9wLmFkYiwgcy1tYXN0b3AuYWRzLCBzLW1lbW9yeS5hZGIsCglzLW1lbW9yeS5hZHMsIHMtb3NwcmltLmFkcywgcy1wYWNrMDMuYWRiLCBzLXBhY2swMy5hZHMsCglzLXBhY2swNS5hZGIsIHMtcGFjazA1LmFkcywgcy1wYWNrMDYuYWRiLCBzLXBhY2swNi5hZHMsCglzLXBhY2swNy5hZGIsIHMtcGFjazA3LmFkcywgcy1wYWNrMDkuYWRiLCBzLXBhY2swOS5hZHMsCglzLXBhY2sxMC5hZGIsIHMtcGFjazEwLmFkcywgcy1wYWNrMTEuYWRiLCBzLXBhY2sxMS5hZHMsCglzLXBhY2sxMi5hZGIsIHMtcGFjazEyLmFkcywgcy1wYWNrMTMuYWRiLCBzLXBhY2sxMy5hZHMsCglzLXBhY2sxNC5hZGIsIHMtcGFjazE0LmFkcywgcy1wYWNrMTUuYWRiLCBzLXBhY2sxNS5hZHMsCglzLXBhY2sxNy5hZGIsIHMtcGFjazE3LmFkcywgcy1wYWNrMTguYWRiLCBzLXBhY2sxOC5hZHMsCglzLXBhY2sxOS5hZGIsIHMtcGFjazE5LmFkcywgcy1wYWNrMjAuYWRiLCBzLXBhY2syMC5hZHMsCglzLXBhY2syMS5hZGIsIHMtcGFjazIxLmFkcywgcy1wYWNrMjIuYWRiLCBzLXBhY2syMi5hZHMsCglzLXBhY2syMy5hZGIsIHMtcGFjazIzLmFkcywgcy1wYWNrMjQuYWRiLCBzLXBhY2syNC5hZHMsCglzLXBhY2syNS5hZGIsIHMtcGFjazI1LmFkcywgcy1wYWNrMjYuYWRiLCBzLXBhY2syNi5hZHMsCglzLXBhY2syNy5hZGIsIHMtcGFjazI3LmFkcywgcy1wYWNrMjguYWRiLCBzLXBhY2syOC5hZHMsCglzLXBhY2syOS5hZGIsIHMtcGFjazI5LmFkcywgcy1wYWNrMzAuYWRiLCBzLXBhY2szMC5hZHMsCglzLXBhY2szMS5hZGIsIHMtcGFjazMxLmFkcywgcy1wYWNrMzMuYWRiLCBzLXBhY2szMy5hZHMsCglzLXBhY2szNC5hZGIsIHMtcGFjazM0LmFkcywgcy1wYWNrMzUuYWRiLCBzLXBhY2szNS5hZHMsCglzLXBhY2szNi5hZGIsIHMtcGFjazM2LmFkcywgcy1wYWNrMzcuYWRiLCBzLXBhY2szNy5hZHMsCglzLXBhY2szOC5hZGIsIHMtcGFjazM4LmFkcywgcy1wYWNrMzkuYWRiLCBzLXBhY2szOS5hZHMsCglzLXBhY2s0MC5hZGIsIHMtcGFjazQwLmFkcywgcy1wYWNrNDEuYWRiLCBzLXBhY2s0MS5hZHMsCglzLXBhY2s0Mi5hZGIsIHMtcGFjazQyLmFkcywgcy1wYWNrNDMuYWRiLCBzLXBhY2s0My5hZHMsCglzLXBhY2s0NC5hZGIsIHMtcGFjazQ0LmFkcywgcy1wYWNrNDUuYWRiLCBzLXBhY2s0NS5hZHMsCglzLXBhY2s0Ni5hZGIsIHMtcGFjazQ2LmFkcywgcy1wYWNrNDcuYWRiLCBzLXBhY2s0Ny5hZHMsCglzLXBhY2s0OC5hZGIsIHMtcGFjazQ4LmFkcywgcy1wYWNrNDkuYWRiLCBzLXBhY2s0OS5hZHMsCglzLXBhY2s1MC5hZGIsIHMtcGFjazUwLmFkcywgcy1wYWNrNTEuYWRiLCBzLXBhY2s1MS5hZHMsCglzLXBhY2s1Mi5hZGIsIHMtcGFjazUyLmFkcywgcy1wYWNrNTMuYWRiLCBzLXBhY2s1My5hZHMsCglzLXBhY2s1NC5hZGIsIHMtcGFjazU0LmFkcywgcy1wYWNrNTUuYWRiLCBzLXBhY2s1NS5hZHMsCglzLXBhY2s1Ni5hZGIsIHMtcGFjazU2LmFkcywgcy1wYWNrNTcuYWRiLCBzLXBhY2s1Ny5hZHMsCglzLXBhY2s1OC5hZGIsIHMtcGFjazU4LmFkcywgcy1wYWNrNTkuYWRiLCBzLXBhY2s1OS5hZHMsCglzLXBhY2s2MC5hZGIsIHMtcGFjazYwLmFkcywgcy1wYWNrNjEuYWRiLCBzLXBhY2s2MS5hZHMsCglzLXBhY2s2Mi5hZGIsIHMtcGFjazYyLmFkcywgcy1wYWNrNjMuYWRiLCBzLXBhY2s2My5hZHMsCglzLXBhcmFtZS5hZGIsIHMtcGFyYW1lLmFkcywgcy1wYXJpbnQuYWRiLCBzLXBhcmludC5hZHMsCglzLXBvb2dsby5hZGIsIHMtcG9vZ2xvLmFkcywgcy1wb29sb2MuYWRiLCBzLXBvb2xvYy5hZHMsCglzLXBvb3Npei5hZGIsIHMtcG9vc2l6LmFkcywgcy1wb3d0YWIuYWRzLCBzLXByb2luZi5hZGIsCglzLXByb2luZi5hZHMsIHMtcnBjLmFkYiwgcy1ycGMuYWRzLCBzLXNjYXZhbC5hZHMsCglzLXNlY3N0YS5hZGIsIHMtc2Vjc3RhLmFkcywgcy1zZXF1aW8uYWRiLCBzLXNlcXVpby5hZHMsCglzLXNoYXN0by5hZGIsIHMtc2hhc3RvLmFkcywgcy1zb2ZsaW4uYWRiLCBzLXNvZmxpbi5hZHMsCglzLXNvcGNvMy5hZGIsIHMtc29wY28zLmFkcywgcy1zb3BjbzQuYWRiLCBzLXNvcGNvNC5hZHMsCglzLXNvcGNvNS5hZGIsIHMtc29wY281LmFkcywgcy1zdGFjaGUuYWRiLCBzLXN0YWNoZS5hZHMsCglzLXN0YWxpYi5hZGIsIHMtc3RhbGliLmFkcywgcy1zdG9lbGUuYWRiLCBzLXN0b2VsZS5hZHMsCglzLXN0b3Bvby5hZHMsIHMtc3RyYXR0LmFkYiwgcy1zdHJhdHQuYWRzLCBzLXN0cm9wcy5hZGIsCglzLXN0cm9wcy5hZHMsIHMtdGFhc2RlLmFkYiwgcy10YWFzZGUuYWRzLCBzLXRhZGVjYS5hZGIsCglzLXRhZGVjYS5hZHMsIHMtdGFkZXJ0LmFkYiwgcy10YWRlcnQuYWRzLCBzLXRhZW5jYS5hZGIsCglzLXRhZW5jYS5hZHMsIHMtdGFwcm9iLmFkYiwgcy10YXByb2IuYWRzLCBzLXRhcHJvcC5hZHMsCglzLXRhcmVzdC5hZGIsIHMtdGFyZXN0LmFkcywgcy10YXNkZWIuYWRiLCBzLXRhc2RlYi5hZHMsCglzLXRhc2luZi5hZGIsIHMtdGFzaW5mLmFkcywgcy10YXNpbmkuYWRiLCBzLXRhc2luaS5hZHMsCglzLXRhc2tpbi5hZGIsIHMtdGFza2luLmFkcywgcy10YXNxdWUuYWRiLCBzLXRhc3F1ZS5hZHMsCglzLXRhc3Jlbi5hZGIsIHMtdGFzcmVuLmFkcywgcy10YXNyZXMuYWRzLCBzLXRhc3N0YS5hZGIsCglzLXRhc3N0YS5hZHMsIHMtdGFzdXRpLmFkYiwgcy10YXN1dGkuYWRzLCBzLXRhdGFhdC5hZGIsCglzLXRhdGFhdC5hZHMsIHMtdHBpbm9wLmFkYiwgcy10cGlub3AuYWRzLCBzLXRwb2Jlbi5hZGIsCglzLXRwb2Jlbi5hZHMsIHMtdHBvYm9wLmFkYiwgcy10cG9ib3AuYWRzLCBzLXRwb3Nlbi5hZGIsCglzLXRwb3Nlbi5hZHMsIHMtdHJhY2ViLmFkYiwgcy10cmFjZWIuYWRzLCBzLXRyYWNlcy5hZGIsCglzLXRyYWNlcy5hZHMsIHMtdHJhdGFzLmFkYiwgcy10cmF0YXMuYWRzLCBzLXVuc3R5cC5hZHMsCglzLXZhZmxvcC5hZGIsIHMtdmFmbG9wLmFkcywgcy12YWxib28uYWRiLCBzLXZhbGJvby5hZHMsCglzLXZhbGNoYS5hZGIsIHMtdmFsY2hhLmFkcywgcy12YWxkZWMuYWRiLCBzLXZhbGRlYy5hZHMsCglzLXZhbGVudS5hZGIsIHMtdmFsZW51LmFkcywgcy12YWxpbnQuYWRiLCBzLXZhbGludC5hZHMsCglzLXZhbGxsZC5hZGIsIHMtdmFsbGxkLmFkcywgcy12YWxsbGkuYWRiLCBzLXZhbGxsaS5hZHMsCglzLXZhbGxsdS5hZGIsIHMtdmFsbGx1LmFkcywgcy12YWxyZWEuYWRiLCBzLXZhbHJlYS5hZHMsCglzLXZhbHVucy5hZGIsIHMtdmFsdW5zLmFkcywgcy12YWx1dGkuYWRiLCBzLXZhbHV0aS5hZHMsCglzLXZhbHdjaC5hZGIsIHMtdmFsd2NoLmFkcywgcy12ZXJjb24uYWRiLCBzLXZlcmNvbi5hZHMsCglzLXZtZXh0YS5hZGIsIHMtdm1leHRhLmFkcywgcy13Y2hjbnYuYWRiLCBzLXdjaGNudi5hZHMsCglzLXdjaGNvbi5hZHMsIHMtd2NoamlzLmFkYiwgcy13Y2hqaXMuYWRzLCBzLXdjaHN0dy5hZGIsCglzLXdjaHN0dy5hZHMsIHMtd2Nod3RzLmFkYiwgcy13Y2h3dHMuYWRzLCBzLXdpZGJvby5hZGIsCglzLXdpZGJvby5hZHMsIHMtd2lkY2hhLmFkYiwgcy13aWRjaGEuYWRzLCBzLXdpZGVudS5hZGIsCglzLXdpZGVudS5hZHMsIHMtd2lkbGxpLmFkYiwgcy13aWRsbGkuYWRzLCBzLXdpZGxsdS5hZGIsCglzLXdpZGxsdS5hZHMsIHMtd2lkd2NoLmFkYiwgcy13aWR3Y2guYWRzLCBzLXd3ZGNoYS5hZGIsCglzLXd3ZGNoYS5hZHMsIHMtd3dkZW51LmFkYiwgcy13d2RlbnUuYWRzLCBzLXd3ZHdjaC5hZGIsCglzLXd3ZHdjaC5hZHMsIHNjYW5zLmFkYiwgc2NhbnMuYWRzLCBzY24tbmxpdC5hZGIsCglzY24tc2xpdC5hZGIsIHNjbi5hZGIsIHNjbi5hZHMsIHNkZWZhdWx0LmFkcywKCXNlbS5hZGIsIHNlbS5hZHMsIHNlbV9hZ2dyLmFkYiwgc2VtX2FnZ3IuYWRzLAoJc2VtX2F0dHIuYWRiLCBzZW1fYXR0ci5hZHMsIHNlbV9jYXNlLmFkYiwgc2VtX2Nhc2UuYWRzLAoJc2VtX2NhdC5hZGIsIHNlbV9jYXQuYWRzLCBzZW1fY2gxMC5hZGIsIHNlbV9jaDEwLmFkcywKCXNlbV9jaDExLmFkYiwgc2VtX2NoMTEuYWRzLCBzZW1fY2gxMi5hZGIsIHNlbV9jaDEyLmFkcywKCXNlbV9jaDEzLmFkYiwgc2VtX2NoMTMuYWRzLCBzZW1fY2gyLmFkYiwgc2VtX2NoMi5hZHMsCglzZW1fY2gzLmFkYiwgc2VtX2NoMy5hZHMsIHNlbV9jaDQuYWRiLCBzZW1fY2g0LmFkcywKCXNlbV9jaDUuYWRiLCBzZW1fY2g1LmFkcywgc2VtX2NoNi5hZGIsIHNlbV9jaDYuYWRzLAoJc2VtX2NoNy5hZGIsIHNlbV9jaDcuYWRzLCBzZW1fY2g4LmFkYiwgc2VtX2NoOC5hZHMsCglzZW1fY2g5LmFkYiwgc2VtX2NoOS5hZHMsIHNlbV9kaXNwLmFkYiwgc2VtX2Rpc3AuYWRzLAoJc2VtX2Rpc3QuYWRiLCBzZW1fZGlzdC5hZHMsIHNlbV9lbGFiLmFkYiwgc2VtX2VsYWIuYWRzLAoJc2VtX2VsaW0uYWRiLCBzZW1fZWxpbS5hZHMsIHNlbV9ldmFsLmFkYiwgc2VtX2V2YWwuYWRzLAoJc2VtX2ludHIuYWRiLCBzZW1faW50ci5hZHMsIHNlbV9tYXBzLmFkYiwgc2VtX21hcHMuYWRzLAoJc2VtX21lY2guYWRiLCBzZW1fbWVjaC5hZHMsIHNlbV9wcmFnLmFkYiwgc2VtX3ByYWcuYWRzLAoJc2VtX3Jlcy5hZGIsIHNlbV9yZXMuYWRzLCBzZW1fc21lbS5hZGIsIHNlbV9zbWVtLmFkcywKCXNlbV90eXBlLmFkYiwgc2VtX3R5cGUuYWRzLCBzZW1fdXRpbC5hZGIsIHNlbV91dGlsLmFkcywKCXNlbV92ZnB0LmFkYiwgc2VtX3ZmcHQuYWRzLCBzZW1fd2Fybi5hZGIsIHNlbV93YXJuLmFkcywKCXNlcXVlbmlvLmFkcywgc2ZuX3NjYW4uYWRiLCBzZm5fc2Nhbi5hZHMsIHNpbmZvLWNuLmFkYiwKCXNpbmZvLWNuLmFkcywgc2luZm8uYWRiLCBzaW5mby5hZHMsIHNpbnB1dC1kLmFkYiwKCXNpbnB1dC1kLmFkcywgc2lucHV0LWwuYWRiLCBzaW5wdXQtbC5hZHMsIHNpbnB1dC1wLmFkYiwKCXNpbnB1dC1wLmFkcywgc2lucHV0LmFkYiwgc2lucHV0LmFkcywgc25hbWVzLmFkYiwKCXNuYW1lcy5hZHMsIHNwcmludC5hZGIsIHNwcmludC5hZHMsIHN0YW5kLmFkYiwKCXN0YW5kLmFkcywgc3RyaW5ndC5hZGIsIHN0cmluZ3QuYWRzLCBzdHlsZS5hZGIsCglzdHlsZS5hZHMsIHN0eWxlc3cuYWRiLCBzdHlsZXN3LmFkcywgc3dpdGNoLWIuYWRiLAoJc3dpdGNoLWIuYWRzLCBzd2l0Y2gtYy5hZGIsIHN3aXRjaC1jLmFkcywgc3dpdGNoLW0uYWRiLAoJc3dpdGNoLW0uYWRzLCBzd2l0Y2guYWRiLCBzd2l0Y2guYWRzLCBzeXN0ZW0uYWRzLAoJdGFibGUuYWRiLCB0YWJsZS5hZHMsIHRhcmdwYXJtLmFkYiwgdGFyZ3Bhcm0uYWRzLAoJdGJ1aWxkLmFkYiwgdGJ1aWxkLmFkcywgdGV4dF9pby5hZHMsIHRyYW5zLmMsCgl0cmVlX2dlbi5hZGIsIHRyZWVfZ2VuLmFkcywgdHJlZV9pbi5hZGIsIHRyZWVfaW4uYWRzLAoJdHJlZV9pby5hZGIsIHRyZWVfaW8uYWRzLCB0cmVlcHIuYWRiLCB0cmVlcHIuYWRzLAoJdHR5cGVmLmFkcywgdHR5cGVzLmFkcywgdHlwZXMuYWRiLCB0eXBlcy5hZHMsCgl1aW50cC5hZGIsIHVpbnRwLmFkcywgdW5hbWUuYWRiLCB1bmFtZS5hZHMsCgl1bmNoY29udi5hZHMsIHVuY2hkZWFsLmFkcywgdXJlYWxwLmFkYiwgdXJlYWxwLmFkcywKCXVzYWdlLmFkYiwgdXNhZ2UuYWRzLCB2YWxpZHN3LmFkYiwgdmFsaWRzdy5hZHMsCgl3aWRlY2hhci5hZGIsIHdpZGVjaGFyLmFkcywgeGVpbmZvLmFkYiwgeG5tYWtlLmFkYiwKCXhyX3RhYmxzLmFkYiwgeHJfdGFibHMuYWRzLCB4cmVmX2xpYi5hZGIsIHhyZWZfbGliLmFkcywKCXhzaW5mby5hZGIsIHhzbmFtZXMuYWRiLCB4dHJlZXBycy5hZGIgOiBNZXJnZSBoZWFkZXIsCglmb3JtYXR0aW5nIGFuZCBvdGhlciB0cml2aWFsIGNoYW5nZXMgZnJvbSBBQ1QuCgoyMDAzLTA0LTEyICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogZ2lnaS5oLCB1dGlsczIuYyAoYnVpbGRfY29uc3RydWN0b3IpOgoJUmVuYW1lIGduYXRfYnVpbGRfY29uc3RydWN0b3IuIFVzZSBidWlsZF9jb25zdHJ1Y3Rvci4KCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHkpCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtLCBwb3NfdG9fY29uc3RydWN0b3IsIGV4dHJhY3RfdmFsdWVzKQoJKiBhZGEvdXRpbHMuYyAoYnVpbGRfdGVtcGxhdGUsIGNvbnZlcnRfdG9fZmF0X3BvaW50ZXIsIGNvbnZlcnQpCgkodW5jaGVja2VkX2NvbnZlcnQpCgkqIGFkYS91dGlsczIuYyAoYnVpbGRfYmluYXJ5X29wLCBidWlsZF9jYWxsX3JhaXNlLCBidWlsZF9hbGxvY2F0b3IpCgkoZmlsbF92bXNfZGVzY3JpcHRvcik6CglVcGRhdGUgdG8gbWF0Y2guCgoyMDAzLTA0LTA2ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogYWRhLXRyZWUuZGVmOiBNYWtlIGZvdXJ0aCBlbGVtZW50IGZvciBHTkFUX0xPT1BfSUQgemVyby4KCSogbWlzYy5jIChnbmF0X3RyZWVfc2l6ZSk6IE5ldyBmdW5jdGlvbi4KCShMQU5HX0hPT0tTX1RSRUVfU0laRSk6IE92ZXJyaWRlLgoKMjAwMy0wNC0wMyAgSmFzb24gTWVycmlsbCAgPGphc29uQHJlZGhhdC5jb20+CgoJKiBtaXNjLmMgKGduYXRfYWRqdXN0X3JsaSk6ICNpZiAwLgoKMjAwMy0wMy0zMSAgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCglQUiBhZGEvMTAwMjAKCSogbGluay5jIDogRml4IG1pc3NwZWxsZWQgImNvbnN0IiBrZXl3b3JkCgoyMDAzLTAzLTIzICBNYXJrIE1pdGNoZWxsICA8bWFya0Bjb2Rlc291cmNlcnkuY29tPgoKCVBSIGMrKy83MDg2CgkqIHV0aWxzMi5jOiBBZGp1c3QgY2FsbHMgdG8gcHV0X3Zhcl9pbnRvX3N0YWNrLgoKMjAwMy0wMy0xMiAgTmF0aGFuYWVsIE5lcm9kZSAgPG5lcm9kZW5AZ2NjLmdudS5vcmc+CgoJKiBNYWtlLWxhbmcuaW4sIE1ha2VmaWxlLmluLCBjb25maWctbGFuZy5pbjogR0NDLCBub3QgR05VIENDLgoKMjAwMy0wMy0wOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmNvLnVrPgoKCSogbWlzYy5jIChnbmF0X2luaXQpOiBVcGRhdGUgZm9yIG5ldyBwcm90b3R5cGUuCgoyMDAzLTAzLTA1ICBPbGl2aWVyIEhhaW5xdWUgIDxoYWlucXVlQGduYXQuY29tPgoKCWFkYS85OTYxCgkqIHJhaXNlLmMgKF9fZ25hdF9VbndpbmRfUmFpc2VFeGNlcHRpb24pOiBBZGQgcHJvdG90eXBlIHRvIGF2b2lkCgl3YXJuaW5nLCBhbmQgZml4IHJldHVybiB0eXBlIGZvciB0aGUgSU5fUlRTICYmICFTSkxKIGNhc2UuCgoyMDAzLTAzLTA0ICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGFkYS50YWdzKTogTmV3IHRhcmdldC4KCjIwMDMtMDMtMDQgIE9saXZpZXIgSGFpbnF1ZSAgPGhhaW5xdWVAYWN0LWV1cm9wZS5mcj4KCglhZGEvOTkxMQoJKiBhLWV4Y2VwdC5hZGIgKFVud2luZF9SYWlzZUV4Y2VwdGlvbik6IEltcG9ydCBhIEdOQVQgc3BlY2lmaWMKCXdyYXBwZXIsIHdoaWNoIG5hbWUgcmVtYWlucyBjb25zdGFudCB3aGF0ZXZlciB1bmRlcmx5aW5nIEdDQwoJc2NoZW1lLgoKCSogcmFpc2UuYyAoX19nbmF0X1Vud2luZF9SYWlzZUV4Y2VwdGlvbik6IE5ldyB3cmFwcGVycywgcHJvdmlkaW5nCgl0aGUgc3RhYmxlIGludGVyZmFjZSBuZWVkZWQgZm9yIGEtZXhjZXB0LgoKMjAwMy0wMy0wMiAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCSogZ25hdF91Z191bngudGV4aSwgZ25hdF91Z192bXMudGV4aSwgZ25hdF91Z192eHcudGV4aSwKCWduYXRfdWdfd250LnRleGk6IFJlZ2VuZXJhdGUuCgoyMDAzLTAzLTAyICBMYXVyZW50IEd1ZXJieSA8Z3VlcmJ5QGFjbS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1nbmF0bGliKTogTWF0Y2ggcHJldmlvdXMgY2hhbmdlIHRoZXJlCglzbyBpdCB3b3Jrcy4KCjIwMDMtMDItMjggIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKGluc3RhbGwtZ25hdGxpYik6IENoYW5nZSB0byBhZGEgZGlyZWN0b3J5IGJlZm9yZQoJcnVubmluZyBtYWtlIGluc3RlYWQgb2YgdXNpbmcgYWRhL01ha2VmaWxlIGRpcmVjdGx5LgoKMjAwMy0wMi0xOCAgQmVuIEVsbGlzdG9uICA8YmplQHJlZGhhdC5jb20+CgoJUGFydCBvZiBQUiBhZGEvOTQwNgoJKiBnbmF0X3VnLnRleGkgKEJpbmRlciBvdXRwdXQgZmlsZSk6IEdyYW1tYXIgZml4LgoKMjAwMy0wMi0xOCAgQmVuIEVsbGlzdG9uICA8YmplQHJlZGhhdC5jb20+CgoJUFIgb3RoZXIvNzM1MAoJKiA1cXRhcHJvcC5hZGIgKFNsZWVwKTogRml4IHR5cG8gaW4gY29tbWVudC4KCjIwMDMtMDItMDQgIEpvc2VwaCBTLiBNeWVycyAgPGpzbUBwb2x5b21pbm8ub3JnLnVrPgoKCSogZ25hdF9ybS50ZXhpLCBnbmF0X3VnLnRleGk6IFVwZGF0ZSB0byBHRkRMIDEuMi4KCSogZ25hdF91Z191bngudGV4aSwgZ25hdF91Z192bXMudGV4aSwgZ25hdF91Z192eHcudGV4aSwKCWduYXRfdWdfd250LnRleGk6IFJlZ2VuZXJhdGUuCgoyMDAzLTAyLTAzICBDaHJpc3RpYW4gQ29ybmVsc3NlbiA8Y2Nvcm5AY3MudHUtYmVybGluLmRlPgoKCSogTWFrZS1sYW5nLmluIChhZGEuaW5zdGFsbC1pbmZvKTogTGV0ICQoREVTVERJUikkKGluZm9kaXIpCgliZSBjcmVhdGVkIGlmIG5lY2Vzc2FyeS4KCShhZGEuaW5zdGFsbC1jb21tb24pOiBMZXQgJChERVNURElSKSQoYmluZGlyKSBiZSBjcmVhdGVkCglpZiBuZWNlc3NhcnkuICBSZW1vdmUgZXJyb25lb3VzIGFuZCByZWR1bmRhbnQgZ25hdGNob3AKCWluc3RhbGxhdGlvbiBjb21tYW5kcy4JVGVzdCBmb3IgZ25hdGRsbCBiZWZvcmUgYXR0ZW1wdGluZwoJdG8gaW5zdGFsbCBpdC4KCShhZGEudW5pbnN0YWxsKTogQWxzbyB1bmluc3RhbGwgZ25hdGZpbmQsIGduYXR4cmVmLCBnbmF0bGJyLAoJYW5kIGduYXRkbGwgZnJvbSBhbGwgcGxhdXNpYmxlIGxvY2F0aW9ucy4KCjIwMDMtMDItMDEgIFJpY2hhcmQgU2FuZGlmb3JkICA8cnNhbmRpZm9AcmVkaGF0LmNvbT4KCgkqIHV0aWxzMi5jIChidWlsZF91bmFyeV9vcCk6IERvbid0IGNoZWNrIGZsYWdfdm9sYXRpbGUuCgkqIGduYXRfdWcudGV4aTogUmVtb3ZlIC1mdm9sYXRpbGUgZnJvbSBleGFtcGxlLgoJKiBnbmF0X3VnX3Z4dy50ZXhpOiBMaWtld2lzZS4KCjIwMDMtMDEtMjkgIExhdXJlbnQgR3VlcmJ5IDxndWVyYnlAYWNtLm9yZz4KCglQUiBhZGEvODM0NAoJKiBmaW5hbC5jOiByZW5hbWUgdG8gYWRhZmluYWwuYyB0byBhdm9pZCBmaWxlIG5hbWUgY29uZmxpY3RzIHdpdGggZ2NjIGZpbGUuCgkqIE1ha2VmaWxlLmluOiBtYXRjaCBwcmV2aW91cyBjaGFuZ2UuCgkqIE1ha2UtbGFuZy5pbjogbWF0Y2ggcHJldmlvdXMgY2hhbmdlLgoKMjAwMy0wMS0yOQlKb2VsIFNoZXJyaWxsIDxqb2VsQE9BUmNvcnAuY29tPgoKCSogNXJvc2ludGUuYWRzOiBBZGQgU0lHWENQVS4KCSogNXJ0cG9wc3AuYWRiOiBOZXcgZmlsZS4KCSogTWFrZS1sYW5nLmluOiBEbyBub3QgYnVpbGQgZ25hdHBzdGEgYW5kIGduYXRwc3lzIHdoZW4gY3Jvc3MuCgkqIE1ha2VmaWxlLmluOiBSZWNvZ25pemUgbW9yZSBSVEVNUyB0YXJnZXRzIGFuZCBhZGQgdGhlIFJURU1TCglzcGVjaWZpYyBmaWxlIDVydHBvcHNwLmFkYi4KCSogYWRhaW50Lmg6IEFkZCBpbmNsdWRlIG9mIDxzdGRpby5oPiB3aGVuIHRhcmdldCBpcyBSVEVNUy4gIFRoaXMKCWlzIGxpa2VseSBuZWVkZWQgZm9yIGFsbCBuZXdsaWIgdGFyZ2V0cy4KCSogaW5pdC5jOiBBZGQgUlRFTVMgc3BlY2lmaWMgdmVyc2lvbiBvZiBfX2duYXRfaW5pdGlhbGl6ZSgpLgoKMjAwMy0wMS0yOCAgUmFpbmVyIE9ydGggIDxyb0BUZWNoRmFrLlVuaS1CaWVsZWZlbGQuREU+CgoJKiBhZGFpbnQuYywgYWRhaW50LmgsIGdtZW0uYywgaW5pdC5jOiBVcGRhdGUgY29weXJpZ2h0IHllYXIuCgoyMDAzLTAxLTI3ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIGluaXQuYyAoX19nbmF0X2Vycm9yX2hhbmRsZXIpOiBNYWtlIG1zZyBjb25zdC4KCgkqIGdtZW0uYyAoY29udmVydF9hZGRyZXNzZXMpOiBNb3ZlIGRlY2xhcmF0aW9uIC4uLgoJKiBhZGFpbnQuaDogLi4uIGhlcmUuCgkqIGFkYWludC5jIChjb252ZXJ0X2FkZHJlc3Nlcyk6IEFkYXB0IGFkZHJzIHR5cGUgdG8gbWF0Y2gKCXByb3RvdHlwZS4KCgkqIGFkYWludC5jIChfX2duYXRfdHJ5X2xvY2spOiBDYXN0IHBpZF90IHRvIGxvbmcsIGFkYXB0IGZvcm1hdC4KCjIwMDMtMDEtMjQgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQHN1c2UuZGU+CgoJKiBhZGEtdHJlZS5oIChTRVRfVFlQRV9ESUdJVFNfVkFMVUUpOiBBZGQgaW50ZXJtZWRpYXRlIGNhc3QgdG8KCXNpemVfdCB0byBhdm9pZCB3YXJuaW5nLgoKMjAwMy0wMS0yMSAgWmFjayBXZWluYmVyZyAgPHphY2tAY29kZXNvdXJjZXJ5LmNvbT4KCgkqIE1ha2UtbGFuZy5pbjogRGlzYWJsZSAtV2Vycm9yIGZvciB0cmFjZWJhay5jIGFuZCBiX2duYXRiLmMuCgoyMDAzLTAxLTA5ICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQGFwcGxlLmNvbT4KCgkqIGduYXRfcm0udGV4aTogUmVtb3ZlIFJDUyB2ZXJzaW9uIG51bWJlci4KCgkqIGFkYS10cmVlLmggKHVuaW9uIGxhbmdfdHJlZV9ub2RlKTogQWRkIGNoYWluX25leHQgb3B0aW9uLgoKMjAwMy0wMS0wOSAgQ2hyaXN0aWFuIENvcm5lbHNzZW4gIDxjY29ybkBjcy50dS1iZXJsaW4uZGU+CgoJKiBNYWtlLWxhbmcuaW4gKGFkYS5pbnN0YWxsLWluZm8sIGFkYS5pbnN0YWxsLWNvbW1vbiwKCWFkYS51bmluc3RhbGwpOiBQcmVwZW5kICQoREVTVERJUikgdG8gdGhlIGRlc3RpbmF0aW9uCglkaXJlY3RvcnkgaW4gYWxsICh1bilpbnN0YWxsYXRpb24gY29tbWFuZHMuCgkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWduYXRsaWIsIGluc3RhbGwtcnRzKTogRGl0dG8uCgoyMDAyLTEyLTI4ICBKb3NlcGggUy4gTXllcnMgIDxqc21AcG9seW9taW5vLm9yZy51az4KCgkqIGduYXRfcm0udGV4aSwgZ25hdF91Zy50ZXhpOiBVc2UgQGNvcHlpbmcuCgkqIGduYXRfdWdfdW54LnRleGksIGduYXRfdWdfdm1zLnRleGksIGduYXRfdWdfdnh3LnRleGksCglnbmF0X3VnX3dudC50ZXhpOiBSZWdlbmVyYXRlLgoKMjAwMi0xMi0yMyAgSm9zZXBoIFMuIE15ZXJzICA8anNtQHBvbHlvbWluby5vcmcudWs+CgoJKiBnbmF0X3JtLnRleGk6IEluY2x1ZGUgZ2NjLWNvbW1vbi50ZXhpLiAgVXNlIEdDQyB2ZXJzaW9uIG51bWJlcgoJb25seS4KCSogTWFrZS1sYW5nLmluICgkKHNyY2RpcikvYWRhL2duYXRfdWdfdW54LmluZm8sCgkkKHNyY2RpcikvYWRhL2duYXRfdWdfdm1zLmluZm8sICQoc3JjZGlyKS9hZGEvZ25hdF91Z192eHcuaW5mbywKCSQoc3JjZGlyKS9hZGEvZ25hdF91Z193bnQuaW5mbywgJChzcmNkaXIpL2FkYS9nbmF0X3JtLmluZm8sCglhZGEvZ25hdF91Z191bnguZHZpLCBhZGEvZ25hdF91Z192bXMuZHZpLCBhZGEvZ25hdF91Z192eHcuZHZpLAoJYWRhL2duYXRfdWdfd250LmR2aSwgYWRhL2duYXRfcm0uZHZpKTogRGVwZW5kIG9uCgkkKHNyY2RpcikvZG9jL2luY2x1ZGUvZ2NjLWNvbW1vbi50ZXhpLgoKMjAwMi0xMi0xNSAgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIHNlbV9jaDYuYWRiIChBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IEZpeCB0eXBvIGFuZCBmb3JtYXR0aW5nCgoyMDAyLTEyLTE0ICAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCVBSIGFkYS81NjkwCgkqIHNlbV9jaDYuYWRiIChBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IFJlY29nbml6ZSBhZGRpdGlvbmFsCgljYXNlIG9mIGEgYm9keSBjcmVhdGVkIGZvciBhIFJlbmFtaW5nX0FzX0JvZHksIG9uIHdoaWNoCgljb25mb3JtYW5jZSBjaGVja3MgYXJlIG5vdCBwZXJmb3JtZWQuCgoyMDAyLTExLTMwICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogY3VpbnRwLmMsIGRlY2wuYywgZGVmdGFyZy5jLCBtaXNjLmMsIHRhcmd0eXBzLmMsIHRyYW5zLmMsCgl1dGlscy5jLCB1dGlsczIuYzogSW5jbHVkZSBjb3JldHlwZXMuaCBhbmQgdG0uaCwgYW5kIHN5c3RlbS5oIHdoZW4KCW5vdCBhbHJlYWR5IGluY2x1ZGVkLgoJKiBNYWtlLWxhbmcuaW46IFVwZGF0ZSBkZXBlbmRlbmNpZXMuCgoyMDAyLTExLTE4ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCSogYWRhaW50LmMgKF9fZ25hdF90bXBfbmFtZSk6IEJldHRlciwgYnV0IGdvb2QgZW5vdWdoIGZvciBub3csCglzb2x1dGlvbiB0byBidWZmZXIgb3ZlcmZsb3cgYnVnIG9uIEdOVS9MaW51eC4KCjIwMDItMTEtMTQgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCVBSIGFkYS81ODU2CglQUiBhZGEvNjkxOQoJKiBiaW5kZ2VuLmFkYjogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIFB1YmxpY19WZXJzaW9uLgoJKiBjb21wZXJyLmFkYjogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIFB1YmxpY19WZXJzaW9uIGFuZAoJR05BVFBST19WZXJzaW9uOyBjb3JyZWN0IGJ1ZyByZXBvcnRpbmcgaW5zdHJ1Y3Rpb25zLgoJKiBjb21wZXJyLmFkczogQ2hhbmdlIHRvIG1hdGNoIGJ1ZyBib3guCgkqIGduYXR2c24uYWRzOiBSZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gUHVibGljIHZlcnNpb24gYW5kCglHTkFUUFJPIHZlcnNpb24uCgoyMDAyLTExLTEzICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCglQUiBhZGEvNjkxOQoJKiBhZGFpbnQuYyAoX19nbmF0X3RtcF9uYW1lKTogUmVtb3ZlIGJ1ZmZlciBvdmVyZmxvdyBidWcgb24KCUdOVS9MaW51eC4KCglQUiBhZGEvNjU1OAoJKiBjb25maWctbGFuZy5pbjogUmVtb3ZlIGRpZmZfZXhjbHVkZXMuCgoyMDAyLTExLTA1ICBHcmFoYW0gU3RvdHQgIDxncmFoYW0uc3RvdHRAYnRpbnRlcm5ldC5jb20+CgoJUFIgYWRhLzgzNTgKCSogdHJhbnMuYyAoZ251X3BlbmRpbmdfZWxhYm9yYXRpb25fbGlzdHMpOiBOZXcgR0Mgcm9vdC4KCShidWlsZF91bml0X2VsYWIpOiBVc2UuLgoKMjAwMi0xMC0zMCAgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCglQUiBhZGEvNjU1OAoJKiBtaXNjLmMgOiBJbmNsdWRlIG9wdGFicy5oCgoJKiBNYWtlLWxhbmcuaW4gKG1pc2Mubyk6IEFkZCBkZXBlbmRlbmN5IG9uIG9wdGFicy5oCgoyMDAyLTEwLTI5ICAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCVBSIGFkYS82NTU4CgkqIE1ha2UtbGFuZy5pbiAoZ25hdGJpbmQpOiBEZXBlbmQgb24gQ09ORklHX0gKCjIwMDItMTAtMjkgIEdlZXJ0IGJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJUFIgYWRhLzY1NTgKCSogbWlzYy5jOiBVbnJldmVydCBtaXNjLmMgKDEuMTMpCgoyMDAyLTEwLTI4ICBOYXRoYW5hZWwgTmVyb2RlICA8bmVyb2RlbkBnY2MuZ251Lm9yZz4KCgkqIGEtY2hsYXQ5LmFkcyBhLWN3aWxhOS5hZHMgYS1keW5wcmkuYWRiIGEtcmV0aWRlLmFkYjogVXBkYXRlCgltYWludGFpbmVyc2hpcCBjb21tZW50cy4KCjIwMDItMDktMjUgIE5hdGhhbmFlbCBOZXJvZGUgIDxuZXJvZGVuQGdjYy5nbnUub3JnPgoKCVBSIGFkYS81OTA0CgkqIDVhdGFwcm9wLmFkYiA1YXRwb3BzcC5hZGIgNWJvc2ludGUuYWRiIDVmdGFwcm9wLmFkYgoJNWd0YXByb3AuYWRiIDVodGFwcm9wLmFkYiA1cm9zaW50ZS5hZHMgNXN0YXByb3AuYWRiCgk1c3Rwb3BzZS5hZGIgNXZ0YXNwcmkuYWRzIDV6aW50bWFuLmFkYiA1enRhcHJvcC5hZGIKCTdzdGFwcm9wLmFkYjogQ29ycmVjdCBzdGF0ZW1lbnRzIGluIGNvbW1lbnRzIGFib3V0CgltYWludGFpbmVyc2hpcCBvZiBHTkFULgoKCVBSIGFkYS81OTA0CgkqIDFzc2Vjc3RhLmFkYiAxc3NlY3N0YS5hZHMgYWRhZGVjb2RlLmMgYWRhZGVjb2RlLmggYXV4LWlvLmMKCWduYXRuYW1lLmFkYiBnbmF0bmFtZS5hZHMgbWtkaXIuYyBvc2ludC1iLmFkYiBvc2ludC1iLmFkcwoJb3NpbnQtYy5hZGIgb3NpbnQtYy5hZHMgb3NpbnQtbC5hZGIgb3NpbnQtbC5hZHMgb3NpbnQtbS5hZGIKCW9zaW50LW0uYWRzIHByai1tYWtyLmFkYiBwcmotbWFrci5hZHMgcHJqLXBwLmFkYiBwcmotcHAuYWRzCglzLWF0YWNjby5hZHMgcy10cmFjZWIuYWRiIHMtdHJhY2ViLmFkcyBzLXRyYWNlcy5hZGIKCXMtdHJhY2VzLmFkcyBzLXRyYXRhcy5hZGIgcy10cmF0YXMuYWRzIHNpbnB1dC1kLmFkYgoJc2lucHV0LWQuYWRzIHN3aXRjaC1iLmFkYiBzd2l0Y2gtYi5hZHMgc3dpdGNoLWMuYWRiCglzd2l0Y2gtYy5hZHMgc3dpdGNoLW0uYWRiIHN3aXRjaC1tLmFkczogQ29ycmVjdCBzdGF0ZW1lbnRzIGluCgljb21tZW50cyBhYm91dCBtYWludGFpbmVyc2hpcCBvZiBHTkFULgoKCVBSIGFkYS82OTE5IChmb3J3YXJkIHBvcnQgb2YgcGF0Y2ggZm9yIFBSIGFkYS81OTA0KQoJKiAxYWV4Y2VwdC5hZGIgMWFleGNlcHQuYWRzIDQxaW50bmFtLmFkcyA0MmludG5hbS5hZHMKCTRhaW50bmFtLmFkcyA0Y2ludG5hbS5hZHMgNGRpbnRuYW0uYWRzIDRoZXhjcG9sLmFkYgoJNGxpbnRuYW0uYWRzIDRtaW50bmFtLmFkcyA0bmludG5hbS5hZHMgNG9udW1hdXguYWRzCgk0cGludG5hbS5hZHMgNHJpbnRuYW0uYWRzIDRzaW50bmFtLmFkcyA0dWludG5hbS5hZHMKCTR2Y2FsZW5kLmFkYiA0dmludG5hbS5hZHMgNHdjYWxlbmQuYWRiIDR3ZXhjcG9sLmFkYgoJNHdpbnRuYW0uYWRzIDR6aW50bmFtLmFkcyA0em51bWF1eC5hZHMgNHpzeXRhY28uYWRiCgk0enN5dGFjby5hZHMgNTFvc2ludGUuYWRiIDUxb3NpbnRlLmFkcyA1Mm9zaW50ZS5hZGIKCTUyb3NpbnRlLmFkcyA1MnN5c3RlbS5hZHMgNTNvc2ludGUuYWRzIDVhb3NpbnRlLmFkcwoJNWFzeXN0ZW0uYWRzIDVhdGFzaW5mLmFkcyA1YXRhc3ByaS5hZHMgNWF2eHdvcmsuYWRzCgk1Ym9zaW50ZS5hZHMgNWJzeXN0ZW0uYWRzIDVjb3NpbnRlLmFkcyA1ZG9zaW50ZS5hZHMKCTVlc3lzdGVtLmFkcyA1Zm9zaW50ZS5hZHMgNWZzeXN0ZW0uYWRzIDVmdGFzaW5mLmFkcwoJNWdpbnRlcnIuYWRiIDVnbWFzdG9wLmFkYiA1Z29zaW50ZS5hZHMgNWdwcm9pbmYuYWRiCgk1Z3Byb2luZi5hZHMgNWdzeXN0ZW0uYWRzIDVndGFzaW5mLmFkYiA1Z3Rhc2luZi5hZHMKCTVndHBnZXRjLmFkYiA1aHBhcmFtZS5hZHMgNWhzeXN0ZW0uYWRzIDVodGFzcHJpLmFkcwoJNWlvc2ludGUuYWRzIDVpdGFzcHJpLmFkcyA1a3N5c3RlbS5hZHMgNWt2eHdvcmsuYWRzCgk1bG9zaW50ZS5hZHMgNWxzeXN0ZW0uYWRzIDVtb3NpbnRlLmFkcyA1bXZ4d29yay5hZHMKCTVuaW5tYW9wLmFkYiA1bmludG1hbi5hZGIgNW5vc2ludGUuYWRzIDVudGFzcHJpLmFkcwoJNW9vc3ByaW0uYWRiIDVvcGFyYW1lLmFkYiA1b3N5c3RlbS5hZHMgNXBvc2ludGUuYWRzCgk1cG9zcHJpbS5hZGIgNXB2eHdvcmsuYWRzIDVyb3NpbnRlLmFkcyA1cnBhcmFtZS5hZGIKCTVzaW50bWFuLmFkYiA1c29zaW50ZS5hZHMgNXNwYXJhbWUuYWRiIDVzc3lzdGVtLmFkcwoJNXN0YXNpbmYuYWRiIDVzdGFzaW5mLmFkcyA1c3Rhc3ByaS5hZHMgNXN2eHdvcmsuYWRzCgk1dG9zaW50ZS5hZHMgNXVvc2ludGUuYWRzIDV2YXN0aGFuLmFkYiA1dmludGVyci5hZGIKCTV2aW50bWFuLmFkcyA1dm9zaW50ZS5hZHMgNXZvc3ByaW0uYWRiIDV2b3NwcmltLmFkcwoJNXZwYXJhbWUuYWRzIDV2c3lzdGVtLmFkcyA1dnRhc3ByaS5hZHMgNXZ0cG9wZGUuYWRiCgk1dnRwb3BkZS5hZHMgNXZ2YWZsb3AuYWRiIDV3aW50bWFuLmFkYiA1d21lbW9yeS5hZGIKCTV3b3NpbnRlLmFkcyA1d29zcHJpbS5hZGIgNXdzeXN0ZW0uYWRzIDV3dGFwcm9wLmFkYgoJNXd0YXNwcmkuYWRzIDV5c3lzdGVtLmFkcyA1emludGVyci5hZGIgNXpvc2ludGUuYWRiCgk1em9zaW50ZS5hZHMgNXpvc3ByaW0uYWRiIDV6c3lzdGVtLmFkcyA2dmNwcC5hZGIgNnZjc3RyZWEuYWRiCgk3c29zcHJpbS5hZGIgODZudW1hdXguYWRiIDg2bnVtYXV4LmFkcyA5ZHJwYy5hZGIgYS1hc3RhY28uYWRiCglhLWNhbGRlbC5hZHMgYS1jYWxlbmQuYWRiIGEtY2FsZW5kLmFkcyBhLWNoYWhhbi5hZGIKCWEtY2hhaGFuLmFkcyBhLWNvbGllbi5hZGIgYS1jb2xpZW4uYWRzIGEtY29saXJlLmFkYgoJYS1jb2xpcmUuYWRzIGEtY29tbGluLmFkYiBhLWNvbWxpbi5hZHMgYS1jd2lsYTEuYWRzCglhLWRlY2ltYS5hZGIgYS1kZWNpbWEuYWRzIGEtZGlvY3N0LmFkYiBhLWRpb2NzdC5hZHMKCWEtZGlyZWlvLmFkYiBhLWRpcmVpby5hZHMgYS1laW51b2MuYWRiIGEtZWludW9jLmFkcwoJYS1leGNlcHQuYWRiIGEtZXhjZXB0LmFkcyBhLWV4Y3BvbC5hZGIgYS1leGN0cmEuYWRiCglhLWV4Y3RyYS5hZHMgYS1maWxpY28uYWRiIGEtZmlsaWNvLmFkcyBhLWZpbmFsaS5hZGIKCWEtZmluYWxpLmFkcyBhLWludGVyci5hZHMgYS1pbnRzaWcuYWRiIGEtaW50c2lnLmFkcwoJYS1uZ2NlZnUuYWRiIGEtbmdjb3R5LmFkYiBhLW5nY290eS5hZHMgYS1uZ2VsZnUuYWRiCglhLW51ZGlyYS5hZGIgYS1udWRpcmEuYWRzIGEtbnVmbHJhLmFkYiBhLW51ZmxyYS5hZHMKCWEtbnVtYXV4LmFkcyBhLXJlYXRpbS5hZHMgYS1yZXRpZGUuYWRzIGEtc2VxdWlvLmFkYgoJYS1zZXF1aW8uYWRzIGEtc2lvY3N0LmFkYiBhLXNpb2NzdC5hZHMgYS1zc2ljc3QuYWRiCglhLXNzaWNzdC5hZHMgYS1zdG1hY28uYWRzIGEtc3RvcmlvLmFkYiBhLXN0cmJvdS5hZGIKCWEtc3RyYm91LmFkcyBhLXN0cmVhbS5hZHMgYS1zdHJmaXguYWRiIGEtc3RyZml4LmFkcwoJYS1zdHJtYXAuYWRiIGEtc3RybWFwLmFkcyBhLXN0cnNlYS5hZGIgYS1zdHJzZWEuYWRzCglhLXN0cnVuYi5hZGIgYS1zdHJ1bmIuYWRzIGEtc3RzdGlvLmFkYiBhLXN0c3Rpby5hZHMKCWEtc3R1bmF1LmFkYiBhLXN0dW5hdS5hZHMgYS1zdHdpYm8uYWRiIGEtc3R3aWJvLmFkcwoJYS1zdHdpZmkuYWRiIGEtc3R3aW1hLmFkYiBhLXN0d2ltYS5hZHMgYS1zdHdpc2UuYWRiCglhLXN0d2lzZS5hZHMgYS1zdHdpdW4uYWRiIGEtc3R3aXVuLmFkcyBhLXN1dGVpby5hZGIKCWEtc3V0ZWlvLmFkcyBhLXN3bXdjby5hZHMgYS1zd3V3dGkuYWRiIGEtc3d1d3RpLmFkcwoJYS1zeXRhY28uYWRiIGEtc3l0YWNvLmFkcyBhLXRhZ3MuYWRiIGEtdGFncy5hZHMgYS10YXNhdHQuYWRzCglhLXRhc2lkZS5hZGIgYS10YXNpZGUuYWRzIGEtdGVpb2VkLmFkYiBhLXRlaW9lZC5hZHMKCWEtdGV4dGlvLmFkYiBhLXRleHRpby5hZHMgYS10aWNvYXUuYWRiIGEtdGljb2F1LmFkcwoJYS10aWNvaW8uYWRiIGEtdGljb2lvLmFkcyBhLXRpZGVhdS5hZGIgYS10aWRlYXUuYWRzCglhLXRpZGVpby5hZGIgYS10aWRlaW8uYWRzIGEtdGllbmF1LmFkYiBhLXRpZW5hdS5hZHMKCWEtdGllbmlvLmFkYiBhLXRpZW5pby5hZHMgYS10aWZpaW8uYWRiIGEtdGlmaWlvLmFkcwoJYS10aWZsYXUuYWRiIGEtdGlmbGF1LmFkcyBhLXRpZmxpby5hZGIgYS10aWZsaW8uYWRzCglhLXRpZ2VhdS5hZGIgYS10aWdlYXUuYWRzIGEtdGlpbmF1LmFkYiBhLXRpaW5hdS5hZHMKCWEtdGlpbmlvLmFkYiBhLXRpaW5pby5hZHMgYS10aW1vYXUuYWRiIGEtdGltb2F1LmFkcwoJYS10aW1vaW8uYWRiIGEtdGltb2lvLmFkcyBhLXRpb2NzdC5hZGIgYS10aW9jc3QuYWRzCglhLXRpdGVzdC5hZGIgYS13aXRlaW8uYWRiIGEtd2l0ZWlvLmFkcyBhLXd0Y29hdS5hZGIKCWEtd3Rjb2F1LmFkcyBhLXd0Y29pby5hZGIgYS13dGNzdHIuYWRiIGEtd3Rjc3RyLmFkcwoJYS13dGRlYXUuYWRiIGEtd3RkZWF1LmFkcyBhLXd0ZGVpby5hZGIgYS13dGRlaW8uYWRzCglhLXd0ZWRpdC5hZGIgYS13dGVkaXQuYWRzIGEtd3RlbmF1LmFkYiBhLXd0ZW5hdS5hZHMKCWEtd3RlbmlvLmFkYiBhLXd0ZW5pby5hZHMgYS13dGZpaW8uYWRiIGEtd3RmaWlvLmFkcwoJYS13dGZsYXUuYWRiIGEtd3RmbGF1LmFkcyBhLXd0Zmxpby5hZGIgYS13dGZsaW8uYWRzCglhLXd0Z2VhdS5hZGIgYS13dGdlYXUuYWRzIGEtd3RpbmF1LmFkYiBhLXd0aW5hdS5hZHMKCWEtd3RpbmlvLmFkYiBhLXd0bW9hdS5hZGIgYS13dG1vYXUuYWRzIGEtd3Rtb2lvLmFkYgoJYS13dG1vaW8uYWRzIGEtd3R0ZXN0LmFkYiBhZGEtdHJlZS5kZWYgYWRhLXRyZWUuaCBhZGEuaAoJYWRhaW50LmMgYWRhaW50LmggYWxpLXV0aWwuYWRiIGFsaS11dGlsLmFkcyBhbGkuYWRiIGFsaS5hZHMKCWFsbG9jLmFkcyBhcmd2LmMgYXRyZWUuYWRiIGF0cmVlLmFkcyBhdHJlZS5oIGJhY2tfZW5kLmFkYgoJYmFja19lbmQuYWRzIGJjaGVjay5hZGIgYmNoZWNrLmFkcyBiaW5kZS5hZGIgYmluZGUuYWRzCgliaW5kZXJyLmFkYiBiaW5kZXJyLmFkcyBiaW5kZ2VuLmFkYiBiaW5kZ2VuLmFkcyBiaW5kdXNnLmFkYgoJYmluZHVzZy5hZHMgYnV0aWwuYWRiIGJ1dGlsLmFkcyBjYWwuYyBjYXNpbmcuYWRiIGNhc2luZy5hZHMKCWNlaW5mby5hZGIgY2hlY2tzLmFkYiBjaGVja3MuYWRzIGNpby5jIGNvbXBlcnIuYWRiIGNvbXBlcnIuYWRzCgljc2V0cy5hZGIgY3NldHMuYWRzIGNzaW5mby5hZGIgY3N0YW5kLmFkYiBjc3RhbmQuYWRzCgljc3RyZWFtcy5jIGN1aW50cC5jIGRlYnVnLmFkYiBkZWJ1Zy5hZHMgZGVidWdfYS5hZGIKCWRlYnVnX2EuYWRzIGRlYy1pby5hZGIgZGVjLWlvLmFkcyBkZWMuYWRzIGRlY2wuYyBkZWZ0YXJnLmMKCWVpbmZvLmFkYiBlaW5mby5hZHMgZWluZm8uaCBlbGlzdHMuYWRiIGVsaXN0cy5hZHMgZWxpc3RzLmgKCWVycm5vLmMgZXJyb3V0LmFkYiBlcnJvdXQuYWRzIGV2YWxfZmF0LmFkYiBldmFsX2ZhdC5hZHMgZXhpdC5jCglleHBfYWdnci5hZGIgZXhwX2FnZ3IuYWRzIGV4cF9hdHRyLmFkYiBleHBfYXR0ci5hZHMKCWV4cF9jaDEwLmFkcyBleHBfY2gxMS5hZGIgZXhwX2NoMTEuYWRzIGV4cF9jaDEyLmFkYgoJZXhwX2NoMTIuYWRzIGV4cF9jaDEzLmFkYiBleHBfY2gxMy5hZHMgZXhwX2NoMi5hZGIgZXhwX2NoMi5hZHMKCWV4cF9jaDMuYWRiIGV4cF9jaDMuYWRzIGV4cF9jaDQuYWRiIGV4cF9jaDQuYWRzIGV4cF9jaDUuYWRiCglleHBfY2g1LmFkcyBleHBfY2g2LmFkYiBleHBfY2g2LmFkcyBleHBfY2g3LmFkYiBleHBfY2g3LmFkcwoJZXhwX2NoOC5hZGIgZXhwX2NoOC5hZHMgZXhwX2NoOS5hZGIgZXhwX2NoOS5hZHMgZXhwX2NvZGUuYWRiCglleHBfY29kZS5hZHMgZXhwX2RidWcuYWRiIGV4cF9kYnVnLmFkcyBleHBfZGlzcC5hZGIKCWV4cF9kaXNwLmFkcyBleHBfZGlzdC5hZGIgZXhwX2Rpc3QuYWRzIGV4cF9maXhkLmFkYgoJZXhwX2ZpeGQuYWRzIGV4cF9pbWd2LmFkYiBleHBfaW1ndi5hZHMgZXhwX2ludHIuYWRiCglleHBfaW50ci5hZHMgZXhwX3Bha2QuYWRiIGV4cF9wYWtkLmFkcyBleHBfcHJhZy5hZGIKCWV4cF9wcmFnLmFkcyBleHBfc21lbS5hZGIgZXhwX3NtZW0uYWRzIGV4cF9zdHJtLmFkYgoJZXhwX3N0cm0uYWRzIGV4cF90c3MuYWRiIGV4cF90c3MuYWRzIGV4cF91dGlsLmFkYiBleHBfdXRpbC5hZHMKCWV4cF92ZnB0LmFkYiBleHBfdmZwdC5hZHMgZXhwYW5kZXIuYWRiIGV4cGFuZGVyLmFkcyBmZS5oCglmaW5hbC5jIGZtYXAuYWRiIGZtYXAuYWRzIGZuYW1lLXNmLmFkYiBmbmFtZS1zZi5hZHMKCWZuYW1lLXVmLmFkYiBmbmFtZS11Zi5hZHMgZm5hbWUuYWRiIGZuYW1lLmFkcyBmcmVlemUuYWRiCglmcmVlemUuYWRzIGZyb250ZW5kLmFkYiBmcm9udGVuZC5hZHMgZy1jYWxlbmQuYWRzIGctY29tbGluLmFkYgoJZy1kZWJwb28uYWRiIGctZGVicG9vLmFkcyBnLWxvY2ZpbC5hZGIgZy1vc19saWIuYWRzCglnLXJlZ2lzdC5hZGIgZy1yZWdpc3QuYWRzIGdldF90YXJnLmFkYiBnZXRfdGFyZy5hZHMgZ2lnaS5oCglnbWVtLmMgZ25hdDFkcnYuYWRiIGduYXQxZHJ2LmFkcyBnbmF0X3VnLnRleGkgZ25hdGJpbmQuYWRiCglnbmF0YmluZC5hZHMgZ25hdGJsLmMgZ25hdGNtZC5hZGIgZ25hdGNtZC5hZHMgZ25hdGRsbC5hZGIKCWduYXRmaW5kLmFkYiBnbmF0a3IuYWRiIGduYXRrci5hZHMgZ25hdGxici5hZGIgZ25hdGxpbmsuYWRiCglnbmF0bGluay5hZHMgZ25hdGxzLmFkYiBnbmF0bHMuYWRzIGduYXRtYWtlLmFkYiBnbmF0bWFrZS5hZHMKCWduYXRtZW0uYWRiIGduYXRwcmVwLmFkYiBnbmF0cHJlcC5hZHMgZ25hdHBzdGEuYWRiIGduYXR2c24uYWRzCglnbmF0eHJlZi5hZGIgaGxvLmFkYiBobG8uYWRzIGhvc3RwYXJtLmFkcyBpLWMuYWRiIGktY2V4dGVuLmFkcwoJaS1jb2JvbC5hZGIgaS1jb2JvbC5hZHMgaS1jcG9pbnQuYWRiIGktY3BvaW50LmFkcyBpLWNwcC5hZGIKCWktY3BwLmFkcyBpLWNzdHJlYS5hZGIgaS1jc3RyZWEuYWRzIGktY3N0cmluLmFkYiBpLWNzdHJpbi5hZHMKCWktZm9ydHJhLmFkYiBpLW9zMmVyci5hZHMgaS1vczJsaWIuYWRiIGktb3MybGliLmFkcwoJaS1vczJzeW4uYWRzIGktb3MydGhyLmFkcyBpLXBhY2RlYy5hZGIgaS1wYWNkZWMuYWRzCglpbXB1bml0LmFkYiBpbXB1bml0LmFkcyBpbml0LmMgaW5saW5lLmFkYiBpbmxpbmUuYWRzIGlvLWF1eC5jCglpdHlwZXMuYWRiIGl0eXBlcy5hZHMga3J1bmNoLmFkYiBrcnVuY2guYWRzIGxhbmctb3B0aW9ucy5oCglsYW5nLXNwZWNzLmggbGF5b3V0LmFkYiBsYXlvdXQuYWRzIGxpYi1saXN0LmFkYiBsaWItbG9hZC5hZGIKCWxpYi1sb2FkLmFkcyBsaWItc29ydC5hZGIgbGliLXV0aWwuYWRiIGxpYi11dGlsLmFkcwoJbGliLXdyaXQuYWRiIGxpYi13cml0LmFkcyBsaWIteHJlZi5hZGIgbGliLXhyZWYuYWRzIGxpYi5hZGIKCWxpYi5hZHMgbGluay5jIGxpdmUuYWRiIGxpdmUuYWRzIG1ha2UuYWRiIG1ha2UuYWRzIG1ha2V1c2cuYWRiCgltYWtldXNnLmFkcyBtYXRoX2xpYi5hZGIgbWRsbC5hZGIgbWRsbC5hZHMgbWVtdHJhY2suYWRiIG1pc2MuYwoJbmFtZXQuYWRiIG5hbWV0LmFkcyBuYW1ldC5oIG5saXN0cy5hZGIgbmxpc3RzLmFkcyBubGlzdHMuaAoJbm1ha2UuYWRiIG5tYWtlLmFkcyBubWFrZS5hZHQgb3B0LmFkYiBvcHQuYWRzIG9zaW50LmFkYgoJb3NpbnQuYWRzIG91dHB1dC5hZGIgb3V0cHV0LmFkcyBwYXItY2gxMC5hZGIgcGFyLWNoMTEuYWRiCglwYXItY2gxMi5hZGIgcGFyLWNoMTMuYWRiIHBhci1jaDIuYWRiIHBhci1jaDMuYWRiIHBhci1jaDQuYWRiCglwYXItY2g1LmFkYiBwYXItY2g2LmFkYiBwYXItY2g3LmFkYiBwYXItY2g4LmFkYiBwYXItY2g5LmFkYgoJcGFyLWVuZGguYWRiIHBhci1sYWJsLmFkYiBwYXItbG9hZC5hZGIgcGFyLXByYWcuYWRiCglwYXItc3luYy5hZGIgcGFyLXRjaGsuYWRiIHBhci11dGlsLmFkYiBwYXIuYWRiIHBhci5hZHMKCXByai1hdHRyLmFkYiBwcmotYXR0ci5hZHMgcHJqLWNvbS5hZGIgcHJqLWNvbS5hZHMgcHJqLWRlY3QuYWRiCglwcmotZGVjdC5hZHMgcHJqLWVudi5hZGIgcHJqLWVudi5hZHMgcHJqLWV4dC5hZGIgcHJqLWV4dC5hZHMKCXByai1ubXNjLmFkYiBwcmotbm1zYy5hZHMgcHJqLXBhcnMuYWRiIHByai1wYXJzLmFkcwoJcHJqLXBhcnQuYWRiIHByai1wYXJ0LmFkcyBwcmotcHJvYy5hZGIgcHJqLXByb2MuYWRzCglwcmotc3RydC5hZGIgcHJqLXN0cnQuYWRzIHByai10cmVlLmFkYiBwcmotdHJlZS5hZHMKCXByai11dGlsLmFkYiBwcmotdXRpbC5hZHMgcHJqLmFkYiBwcmouYWRzIHJhaXNlLmMgcmFpc2UuaAoJcmVwaW5mby5hZGIgcmVwaW5mby5hZHMgcmVwaW5mby5oIHJlc3RyaWN0LmFkYiByZXN0cmljdC5hZHMKCXJpZGVudC5hZHMgcnRzZmluZC5hZGIgcnRzZmluZC5hZHMgcy1hZGRpbWEuYWRiIHMtYWRkaW1hLmFkcwoJcy1hcml0NjQuYWRiIHMtYXJpdDY0LmFkcyBzLWFzc2VydC5hZGIgcy1hc3NlcnQuYWRzCglzLWFzdGhhbi5hZGIgcy1hc3RoYW4uYWRzIHMtYXRhY2NvLmFkYiBzLWF1eGRlYy5hZGIKCXMtYXV4ZGVjLmFkcyBzLWJpdG9wcy5hZGIgcy1iaXRvcHMuYWRzIHMtY2hlcG9vLmFkcwoJcy1kaXJlaW8uYWRiIHMtZGlyZWlvLmFkcyBzLWV4Y2VwdC5hZHMgcy1leGN0YWIuYWRiCglzLWV4Y3RhYi5hZHMgcy1leG5mbHQuYWRzIHMtZXhuZ2VuLmFkYiBzLWV4bmdlbi5hZHMKCXMtZXhuaW50LmFkcyBzLWV4bmxmbC5hZHMgcy1leG5saW4uYWRzIHMtZXhubGxmLmFkcwoJcy1leG5sbGkuYWRzIHMtZXhuc2ZsLmFkcyBzLWV4bnNpbi5hZHMgcy1leG5zc2kuYWRzCglzLWV4cGZsdC5hZHMgcy1leHBnZW4uYWRiIHMtZXhwZ2VuLmFkcyBzLWV4cGludC5hZHMKCXMtZXhwbGZsLmFkcyBzLWV4cGxpbi5hZHMgcy1leHBsbGYuYWRzIHMtZXhwbGxpLmFkcwoJcy1leHBsbHUuYWRiIHMtZXhwbGx1LmFkcyBzLWV4cG1vZC5hZGIgcy1leHBtb2QuYWRzCglzLWV4cHNmbC5hZHMgcy1leHBzaW4uYWRzIHMtZXhwc3NpLmFkcyBzLWV4cHVucy5hZGIKCXMtZXhwdW5zLmFkcyBzLWZhdGZsdC5hZHMgcy1mYXRnZW4uYWRiIHMtZmF0Z2VuLmFkcwoJcy1mYXRsZmwuYWRzIHMtZmF0bGxmLmFkcyBzLWZhdHNmbC5hZHMgcy1maWNvYmwuYWRzCglzLWZpbGVpby5hZGIgcy1maWxlaW8uYWRzIHMtZmluaW1wLmFkYiBzLWZpbmltcC5hZHMKCXMtZmlucm9vLmFkYiBzLWZpbnJvby5hZHMgcy1mb3JlLmFkYiBzLWZvcmUuYWRzIHMtaW1nYml1LmFkYgoJcy1pbWdiaXUuYWRzIHMtaW1nYm9vLmFkYiBzLWltZ2Jvby5hZHMgcy1pbWdjaGEuYWRiCglzLWltZ2NoYS5hZHMgcy1pbWdkZWMuYWRiIHMtaW1nZGVjLmFkcyBzLWltZ2VudS5hZGIKCXMtaW1nZW51LmFkcyBzLWltZ2ludC5hZGIgcy1pbWdpbnQuYWRzIHMtaW1nbGxiLmFkYgoJcy1pbWdsbGIuYWRzIHMtaW1nbGxkLmFkYiBzLWltZ2xsZC5hZHMgcy1pbWdsbGkuYWRiCglzLWltZ2xsaS5hZHMgcy1pbWdsbHUuYWRiIHMtaW1nbGx1LmFkcyBzLWltZ2xsdy5hZGIKCXMtaW1nbGx3LmFkcyBzLWltZ3JlYS5hZGIgcy1pbWdyZWEuYWRzIHMtaW1ndW5zLmFkYgoJcy1pbWd1bnMuYWRzIHMtaW1nd2NoLmFkYiBzLWltZ3djaC5hZHMgcy1pbWd3aXUuYWRiCglzLWltZ3dpdS5hZHMgcy1pbm1hb3AuYWRzIHMtaW50ZXJyLmFkYiBzLWludGVyci5hZHMKCXMtaW50bWFuLmFkcyBzLWlvLmFkYiBzLWlvLmFkcyBzLW1hY2NvZC5hZHMgcy1tYW50aXMuYWRiCglzLW1hbnRpcy5hZHMgcy1tZW1vcnkuYWRiIHMtbWVtb3J5LmFkcyBzLW9zcHJpbS5hZHMKCXMtcGFjazAzLmFkYiBzLXBhY2swMy5hZHMgcy1wYWNrMDUuYWRiIHMtcGFjazA1LmFkcwoJcy1wYWNrMDYuYWRiIHMtcGFjazA2LmFkcyBzLXBhY2swNy5hZGIgcy1wYWNrMDcuYWRzCglzLXBhY2swOS5hZGIgcy1wYWNrMDkuYWRzIHMtcGFjazEwLmFkYiBzLXBhY2sxMC5hZHMKCXMtcGFjazExLmFkYiBzLXBhY2sxMS5hZHMgcy1wYWNrMTIuYWRiIHMtcGFjazEyLmFkcwoJcy1wYWNrMTMuYWRiIHMtcGFjazEzLmFkcyBzLXBhY2sxNC5hZGIgcy1wYWNrMTQuYWRzCglzLXBhY2sxNS5hZGIgcy1wYWNrMTUuYWRzIHMtcGFjazE3LmFkYiBzLXBhY2sxNy5hZHMKCXMtcGFjazE4LmFkYiBzLXBhY2sxOC5hZHMgcy1wYWNrMTkuYWRiIHMtcGFjazE5LmFkcwoJcy1wYWNrMjAuYWRiIHMtcGFjazIwLmFkcyBzLXBhY2syMS5hZGIgcy1wYWNrMjEuYWRzCglzLXBhY2syMi5hZGIgcy1wYWNrMjIuYWRzIHMtcGFjazIzLmFkYiBzLXBhY2syMy5hZHMKCXMtcGFjazI0LmFkYiBzLXBhY2syNC5hZHMgcy1wYWNrMjUuYWRiIHMtcGFjazI1LmFkcwoJcy1wYWNrMjYuYWRiIHMtcGFjazI2LmFkcyBzLXBhY2syNy5hZGIgcy1wYWNrMjcuYWRzCglzLXBhY2syOC5hZGIgcy1wYWNrMjguYWRzIHMtcGFjazI5LmFkYiBzLXBhY2syOS5hZHMKCXMtcGFjazMwLmFkYiBzLXBhY2szMC5hZHMgcy1wYWNrMzEuYWRiIHMtcGFjazMxLmFkcwoJcy1wYWNrMzMuYWRiIHMtcGFjazMzLmFkcyBzLXBhY2szNC5hZGIgcy1wYWNrMzQuYWRzCglzLXBhY2szNS5hZGIgcy1wYWNrMzUuYWRzIHMtcGFjazM2LmFkYiBzLXBhY2szNi5hZHMKCXMtcGFjazM3LmFkYiBzLXBhY2szNy5hZHMgcy1wYWNrMzguYWRiIHMtcGFjazM4LmFkcwoJcy1wYWNrMzkuYWRiIHMtcGFjazM5LmFkcyBzLXBhY2s0MC5hZGIgcy1wYWNrNDAuYWRzCglzLXBhY2s0MS5hZGIgcy1wYWNrNDEuYWRzIHMtcGFjazQyLmFkYiBzLXBhY2s0Mi5hZHMKCXMtcGFjazQzLmFkYiBzLXBhY2s0My5hZHMgcy1wYWNrNDQuYWRiIHMtcGFjazQ0LmFkcwoJcy1wYWNrNDUuYWRiIHMtcGFjazQ1LmFkcyBzLXBhY2s0Ni5hZGIgcy1wYWNrNDYuYWRzCglzLXBhY2s0Ny5hZGIgcy1wYWNrNDcuYWRzIHMtcGFjazQ4LmFkYiBzLXBhY2s0OC5hZHMKCXMtcGFjazQ5LmFkYiBzLXBhY2s0OS5hZHMgcy1wYWNrNTAuYWRiIHMtcGFjazUwLmFkcwoJcy1wYWNrNTEuYWRiIHMtcGFjazUxLmFkcyBzLXBhY2s1Mi5hZGIgcy1wYWNrNTIuYWRzCglzLXBhY2s1My5hZGIgcy1wYWNrNTMuYWRzIHMtcGFjazU0LmFkYiBzLXBhY2s1NC5hZHMKCXMtcGFjazU1LmFkYiBzLXBhY2s1NS5hZHMgcy1wYWNrNTYuYWRiIHMtcGFjazU2LmFkcwoJcy1wYWNrNTcuYWRiIHMtcGFjazU3LmFkcyBzLXBhY2s1OC5hZGIgcy1wYWNrNTguYWRzCglzLXBhY2s1OS5hZGIgcy1wYWNrNTkuYWRzIHMtcGFjazYwLmFkYiBzLXBhY2s2MC5hZHMKCXMtcGFjazYxLmFkYiBzLXBhY2s2MS5hZHMgcy1wYWNrNjIuYWRiIHMtcGFjazYyLmFkcwoJcy1wYWNrNjMuYWRiIHMtcGFjazYzLmFkcyBzLXBhcmFtZS5hZGIgcy1wYXJhbWUuYWRzCglzLXBhcmludC5hZGIgcy1wYXJpbnQuYWRzIHMtcG9vZ2xvLmFkYiBzLXBvb2dsby5hZHMKCXMtcG9vbG9jLmFkYiBzLXBvb2xvYy5hZHMgcy1wb29zaXouYWRiIHMtcG9vc2l6LmFkcwoJcy1wb3d0YWIuYWRzIHMtcHJvaW5mLmFkYiBzLXByb2luZi5hZHMgcy1ycGMuYWRiIHMtcnBjLmFkcwoJcy1zY2F2YWwuYWRzIHMtc2Vjc3RhLmFkYiBzLXNlY3N0YS5hZHMgcy1zZXF1aW8uYWRiCglzLXNlcXVpby5hZHMgcy1zaGFzdG8uYWRiIHMtc2hhc3RvLmFkcyBzLXNvZmxpbi5hZGIKCXMtc29mbGluLmFkcyBzLXNvcGNvMy5hZGIgcy1zb3BjbzMuYWRzIHMtc29wY280LmFkYgoJcy1zb3BjbzQuYWRzIHMtc29wY281LmFkYiBzLXNvcGNvNS5hZHMgcy1zdGFjaGUuYWRiCglzLXN0YWNoZS5hZHMgcy1zdGFsaWIuYWRiIHMtc3RhbGliLmFkcyBzLXN0b2VsZS5hZGIKCXMtc3RvcG9vLmFkcyBzLXN0cmF0dC5hZGIgcy1zdHJhdHQuYWRzIHMtc3Ryb3BzLmFkYgoJcy1zdHJvcHMuYWRzIHMtdGFwcm9iLmFkcyBzLXRhcHJvcC5hZHMgcy10YXJlc3QuYWRzCglzLXRhc2RlYi5hZGIgcy10YXNkZWIuYWRzIHMtdGFzaW5mLmFkYiBzLXRhc2luZi5hZHMKCXMtdGFzaW5pLmFkcyBzLXRhc2tpbi5hZHMgcy10YXNyZW4uYWRzIHMtdGFzcmVzLmFkcwoJcy10YXNzdGEuYWRzIHMtdHBpbm9wLmFkYiBzLXRwaW5vcC5hZHMgcy10cG9iZW4uYWRzCglzLXRwb2JvcC5hZHMgcy11bnN0eXAuYWRzIHMtdmFmbG9wLmFkYiBzLXZhZmxvcC5hZHMKCXMtdmFsYm9vLmFkYiBzLXZhbGJvby5hZHMgcy12YWxjaGEuYWRiIHMtdmFsY2hhLmFkcwoJcy12YWxkZWMuYWRiIHMtdmFsZGVjLmFkcyBzLXZhbGVudS5hZGIgcy12YWxlbnUuYWRzCglzLXZhbGludC5hZGIgcy12YWxpbnQuYWRzIHMtdmFsbGxkLmFkYiBzLXZhbGxsZC5hZHMKCXMtdmFsbGxpLmFkYiBzLXZhbGxsaS5hZHMgcy12YWxsbHUuYWRiIHMtdmFsbGx1LmFkcwoJcy12YWxyZWEuYWRiIHMtdmFscmVhLmFkcyBzLXZhbHVucy5hZGIgcy12YWx1bnMuYWRzCglzLXZhbHV0aS5hZGIgcy12YWx1dGkuYWRzIHMtdmFsd2NoLmFkYiBzLXZhbHdjaC5hZHMKCXMtdmVyY29uLmFkYiBzLXZlcmNvbi5hZHMgcy12bWV4dGEuYWRiIHMtdm1leHRhLmFkcwoJcy13Y2hjbnYuYWRiIHMtd2NoY252LmFkcyBzLXdjaGNvbi5hZHMgcy13Y2hqaXMuYWRiCglzLXdjaGppcy5hZHMgcy13Y2hzdHcuYWRiIHMtd2Noc3R3LmFkcyBzLXdjaHd0cy5hZGIKCXMtd2Nod3RzLmFkcyBzLXdpZGJvby5hZGIgcy13aWRib28uYWRzIHMtd2lkY2hhLmFkYgoJcy13aWRjaGEuYWRzIHMtd2lkZW51LmFkYiBzLXdpZGVudS5hZHMgcy13aWRsbGkuYWRiCglzLXdpZGxsaS5hZHMgcy13aWRsbHUuYWRiIHMtd2lkbGx1LmFkcyBzLXdpZHdjaC5hZGIKCXMtd2lkd2NoLmFkcyBzLXd3ZGNoYS5hZGIgcy13d2RjaGEuYWRzIHMtd3dkZW51LmFkYgoJcy13d2RlbnUuYWRzIHMtd3dkd2NoLmFkYiBzLXd3ZHdjaC5hZHMgc2NhbnMuYWRiIHNjYW5zLmFkcwoJc2NuLW5saXQuYWRiIHNjbi1zbGl0LmFkYiBzY24uYWRiIHNjbi5hZHMgc2RlZmF1bHQuYWRzIHNlbS5hZGIKCXNlbS5hZHMgc2VtX2FnZ3IuYWRiIHNlbV9hZ2dyLmFkcyBzZW1fYXR0ci5hZGIgc2VtX2F0dHIuYWRzCglzZW1fY2FzZS5hZGIgc2VtX2Nhc2UuYWRzIHNlbV9jYXQuYWRiIHNlbV9jYXQuYWRzIHNlbV9jaDEwLmFkYgoJc2VtX2NoMTAuYWRzIHNlbV9jaDExLmFkYiBzZW1fY2gxMS5hZHMgc2VtX2NoMTIuYWRiCglzZW1fY2gxMi5hZHMgc2VtX2NoMTMuYWRiIHNlbV9jaDEzLmFkcyBzZW1fY2gyLmFkYiBzZW1fY2gyLmFkcwoJc2VtX2NoMy5hZGIgc2VtX2NoMy5hZHMgc2VtX2NoNC5hZGIgc2VtX2NoNC5hZHMgc2VtX2NoNS5hZGIKCXNlbV9jaDUuYWRzIHNlbV9jaDYuYWRiIHNlbV9jaDYuYWRzIHNlbV9jaDcuYWRiIHNlbV9jaDcuYWRzCglzZW1fY2g4LmFkYiBzZW1fY2g4LmFkcyBzZW1fY2g5LmFkYiBzZW1fY2g5LmFkcyBzZW1fZGlzcC5hZGIKCXNlbV9kaXNwLmFkcyBzZW1fZGlzdC5hZGIgc2VtX2Rpc3QuYWRzIHNlbV9lbGFiLmFkYgoJc2VtX2VsYWIuYWRzIHNlbV9lbGltLmFkYiBzZW1fZWxpbS5hZHMgc2VtX2V2YWwuYWRiCglzZW1fZXZhbC5hZHMgc2VtX2ludHIuYWRiIHNlbV9pbnRyLmFkcyBzZW1fbWFwcy5hZGIKCXNlbV9tYXBzLmFkcyBzZW1fbWVjaC5hZGIgc2VtX21lY2guYWRzIHNlbV9wcmFnLmFkYgoJc2VtX3ByYWcuYWRzIHNlbV9yZXMuYWRiIHNlbV9yZXMuYWRzIHNlbV9zbWVtLmFkYiBzZW1fc21lbS5hZHMKCXNlbV90eXBlLmFkYiBzZW1fdHlwZS5hZHMgc2VtX3V0aWwuYWRiIHNlbV91dGlsLmFkcwoJc2VtX3ZmcHQuYWRiIHNlbV92ZnB0LmFkcyBzZW1fd2Fybi5hZGIgc2VtX3dhcm4uYWRzCglzZm5fc2Nhbi5hZGIgc2ZuX3NjYW4uYWRzIHNpbmZvLWNuLmFkYiBzaW5mby1jbi5hZHMgc2luZm8uYWRiCglzaW5mby5hZHMgc2luZm8uaCBzaW5wdXQtbC5hZGIgc2lucHV0LWwuYWRzIHNpbnB1dC1wLmFkYgoJc2lucHV0LXAuYWRzIHNpbnB1dC5hZGIgc2lucHV0LmFkcyBzbmFtZXMuYWRiIHNuYW1lcy5hZHMKCXNuYW1lcy5oIHNwcmludC5hZGIgc3ByaW50LmFkcyBzdGFuZC5hZGIgc3RhbmQuYWRzIHN0cmluZ3QuYWRiCglzdHJpbmd0LmFkcyBzdHJpbmd0Lmggc3R5bGUuYWRiIHN0eWxlLmFkcyBzdHlsZXN3LmFkYgoJc3R5bGVzdy5hZHMgc3dpdGNoLmFkYiBzd2l0Y2guYWRzIHN5c2RlcC5jIHN5c3RlbS5hZHMKCXRhYmxlLmFkYiB0YWJsZS5hZHMgdGFyZ3Bhcm0uYWRiIHRhcmdwYXJtLmFkcyB0YXJndHlwcy5jCgl0YnVpbGQuYWRiIHRidWlsZC5hZHMgdHJhbnMuYyB0cmVlX2dlbi5hZGIgdHJlZV9nZW4uYWRzCgl0cmVlX2luLmFkYiB0cmVlX2luLmFkcyB0cmVlX2lvLmFkYiB0cmVlX2lvLmFkcyB0cmVlcHIuYWRiCgl0cmVlcHIuYWRzIHRyZWVwcnMuYWRzIHRyZWVwcnMuYWR0IHR0eXBlZi5hZHMgdHR5cGVzLmFkcwoJdHlwZXMuYWRiIHR5cGVzLmFkcyB0eXBlcy5oIHVpbnRwLmFkYiB1aW50cC5hZHMgdWludHAuaAoJdW5hbWUuYWRiIHVuYW1lLmFkcyB1cmVhbHAuYWRiIHVyZWFscC5hZHMgdXJlYWxwLmggdXNhZ2UuYWRiCgl1c2FnZS5hZHMgdXRpbHMuYyB1dGlsczIuYyB2YWxpZHN3LmFkYiB2YWxpZHN3LmFkcwoJd2lkZWNoYXIuYWRiIHdpZGVjaGFyLmFkcyB4ZWluZm8uYWRiIHhubWFrZS5hZGIgeHJfdGFibHMuYWRiCgl4cl90YWJscy5hZHMgeHJlZl9saWIuYWRiIHhyZWZfbGliLmFkcyB4c2luZm8uYWRiIHhzbmFtZXMuYWRiCgl4dHJlZXBycy5hZGI6IENvcnJlY3Qgc3RhdGVtZW50cyBpbiBjb21tZW50cyBhYm91dCBtYWludGFpbmVyc2hpcAoJb2YgR05BVC4KCjIwMDItMDktMjMgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKEVYVFJBX0dOQVRCSU5EX09CSlMpOiBBZGQgdmVyc2lvbi5vLgoJKiBNYWtlZmlsZS5pbiAoVE9PTFNfTElCUyk6IEFkZCAuLi8uLi92ZXJzaW9uLm8uCgkqIGduYXR2c24uYWRzOiBHbmF0X1ZlcnNpb25fU3RyaW5nIGlzIG5vdyBhIGZ1bmN0aW9uLgoJKiBnbmF0dnNuLmFkYjogTmV3IGZpbGUuICBXaGVuIGFza2VkIGZvciBHbmF0X1ZlcnNpb25fU3RyaW5nLAoJY29weSB0aGUgQyB2ZXJzaW9uX3N0cmluZyBpbnRvIGEgU3RyaW5nIGFuZCByZXR1cm4gaXQuCgkqIGduYXRjbWQuYWRiLCBnbmF0a3IuYWRiLCBnbmF0bGJyLmFkYiwgZ25hdGxpbmsuYWRiLAoJZ25hdGxzLmFkYixnbmF0bWFrZS5hZGIsIGduYXRwcmVwLmFkYiwgZ25hdHBzdGEuYWRiOgoJUmVtb3ZlIHByYWdtYSBJZGVudCAoR25hdF9WZXJzaW9uX1N0cmluZykuICBJZiB0aGlzIHdhcyB0aGUKCXNvbGUgdXNlIG9mIHBhY2thZ2UgR25hdHZzbiwgcmVtb3ZlIHRoZSB3aXRoIHN0YXRlbWVudCB0b28uCgkqIGduYXQxZHJ2LmFkYjogVHdlYWsgLWduYXR2IG91dHB1dC4KCjIwMDItMDktMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSk6IFVzZSByZWFsX2xkZXhwIG5vdCBSRUFMX1ZBTFVFX0xERVhQLgoJKiBjb25maWcvZHNwMTZ4eC9kc3AxNnh4Lm1kIChmaXh1bnNfdHJ1bmNoZmhpMik6IFVzZSByZWFsXzJleHBOLgoJKiBjb25maWcvbWlwcy9taXBzLm1kIChmaXh1bnNfdHJ1bmNkZnNpMik6IExpa2V3aXNlLgoJKGZpeHVuc190cnVuY2RmZGkyLCBmaXh1bnNfdHJ1bmNzZnNpMiwgZml4dW5zX3RydW5jc2ZkaTIpOiBMaWtld2lzZS4KCSogY29uZmlnL202OGsvbTY4ay5jIChmbG9hdGluZ19leGFjdF9sb2cyKTogVXNlIHJlYWxfZXhwb25lbnQKCWFuZCByZWFsXzJleHBOIGluc3RlYWQgb2YgYSBsb29wLgoJKiBkb2MvdG0udGV4aSAoUkVBTF9WQUxVRV9MREVYUCk6IFJlbW92ZS4KCShSRUFMX1ZBTFVFX1JORFpJTlQsIFJFQUxfVkFMVUVfVU5TSUdORURfUk5EWklOVCk6IFJlbW92ZS4KCjIwMDItMDgtMjUgIEFuZHJlIExlaXMgPGEubGVpc0BnbXgubmV0PgoJICAgIERhdmlkIEJpbGxpbmdodXJzdCAoRGF2aWQuQmlsbGluZ2h1cnN0QHJpb3RpbnRvLmNvbT4KCgkqIHN5c2RlcC5jIChfX2duYXRfdHR5bmFtZSk6IGluY2x1ZGUgPHRlcm1pb3MuaD4gb24gY3lnd2luCgoyMDAyLTA4LTEzICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIE1ha2UtbGFuZy5pbiAoZ25hdGJpbmQkKGV4ZWV4dCkpOiBMaW5rIHdpdGggJChTWVNMSUJTKS4KCVJlbW92ZSAkKENPTkZJR19IKSBkZXBlbmRlbmN5LgoKMjAwMi0wOC0wOCAgTmF0aGFuIFNpZHdlbGwgIDxuYXRoYW5AY29kZXNvdXJjZXJ5LmNvbT4KCgkqIGFkYS9NYWtlLWxhbmcuaW4gKGFkYS5tb3N0bHljbGVhbik6IFJlbW92ZSBjb3ZlcmFnZSBmaWxlcy4KCjIwMDItMDctMjkgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIGFkYWRlY29kZS5jIChhZGFfZGVtYW5nbGUpOiBVc2UgeHN0cmR1cCBpbiBsaWV1IG9mCgl4bWFsbG9jL3N0cmNweS4KCSogbWlzYy5jIChnbmF0X2RlY29kZV9vcHRpb24pOiBMaWtld2lzZS4KCjIwMDItMDctMTUgIEZsb3JpYW4gV2VpbWVyICA8ZndAZGVuZWIuZW55by5kZT4KCgkqIG1ha2UuYWRiIChBZGRfU3dpdGNoKTogTWFrZSBHZW5lcmljX1Bvc2l0aW9uIGEgcHJvY2VkdXJlLiAgVGhlCglmdW5jdGlvbiBhcHByb2FjaCBkaWQgbm90IHdvcmsgd2VsbCBiZWNhdXNlIG9mIGEgc2lkZSBlZmZlY3QgKHRoZQoJZnVuY3Rpb24gY2FsbCBjb3VsZCByZWFsbG9jYXRlIHRoZSB0YWJsZSB3aGljaCB3YXMgYmVpbmcgaW5kZXhlZAoJdXNpbmcgaXRzIHJlc3VsdCkuIEZpeGVzIGFkYS80ODUxLiBbUkVTVVJSRUNURURdCgoyMDAyLTA3LTAxICBSb2dlciBTYXlsZSAgPHJvZ2VyQGV5ZXNvcGVuLmNvbT4KCgkqIGFkYS91dGlscy5jIChidWlsdGluX2Z1bmN0aW9uKTogQWNjZXB0IGFuIGFkZGl0aW9uYWwgcGFyYW1ldGVyLgoKMjAwMi0wNi0yOCAgQW5kcmVhcyBKYWVnZXIgIDxhakBzdXNlLmRlPgoKCVBSIGFkYS83MTQ0CgkqIE1ha2VmaWxlLmluOiBGaXggdHlwbyBpbiBjb21tZW50LCBwYXRjaCBieSBBZHJpYW4gS25vdGgKCTxhZGlAdGh1ci5kZT4uCgoyMDAyLTA2LTI0ICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiBNYWtlZmlsZS5pbiAoU0hFTEwpOiBTZXQgdG8gQFNIRUxMQC4KCjIwMDItMDYtMjAgIEthdmVoIFIuIEdoYXppICA8Z2hhemlAY2FpcC5ydXRnZXJzLmVkdT4KCgkqIHV0aWxzLmMgKGluaXRfZ2lnaV9kZWNscyk6IFVzZSBBUlJBWV9TSVpFIGluIGxpZXUgb2YgZXhwbGljaXQKCWFycmF5IHNpemUgY2FsY3VsYXRpb24uCgoyMDAyLTA2LTA0ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBNYWtlLWxhbmcuaW4gKGduYXRiaW5kKTogUmVhZGQgcnVsZSB0aGF0IGhhcyBiZWVuIGxvc3QgaW4gbGFzdAoJcGF0Y2guCgoyMDAyLTA2LTAzICBHZW9mZnJleSBLZWF0aW5nICA8Z2VvZmZrQHJlZGhhdC5jb20+CgoJTWVyZ2UgZnJvbSBwY2gtYnJhbmNoOgoKCSogY29uZmlnLWxhbmcuaW4gKGd0ZmlsZXMpOiBBZGQgYWRhLXRyZWUuaC4KCSogYWRhLXRyZWUuaCAoU0VUX1RZUEVfQ0lfQ09fTElTVCk6IE5ldy4KCShTRVRfVFlQRV9NT0RVTFVTKTogTmV3LgoJKFNFVF9UWVBFX0lOREVYKTogTmV3LgoJKFNFVF9UWVBFX0RJR0lUU19WQUxVRSk6IE5ldy4KCShTRVRfVFlQRV9STV9TSVpFKTogTmV3LgoJKFNFVF9UWVBFX1VOQ09OU1RSQUlORURfQVJSQVkpOiBOZXcuCgkoU0VUX1RZUEVfQURBX1NJWkUpOiBOZXcuCgkoU0VUX1RZUEVfQUNUVUFMX0JPVU5EUyk6IE5ldy4KCShTRVRfREVDTF9DT05TVF9DT1JSRVNQT05ESU5HX1ZBUik6IE5ldy4KCShTRVRfREVDTF9PUklHSU5BTF9GSUVMRCk6IE5ldy4KCShUUkVFX0xPT1BfSUQpOiBDb3JyZWN0IHR5cG8uCgkqIGRlY2wuYzogVXNlIG5ldyBtYWNyb3MuCgkqIHV0aWxzLmM6IEluY2x1ZGUgZGVidWcuaCwgdXNlIG5ldyBtYWNyb3MuCgkqIHV0aWxzMi5jOiBVc2UgbmV3IG1hY3Jvcy4KCgkqIGFkYS10cmVlLmg6IFVwZGF0ZSBhbGwgbWFjcm9zIGZvciBuZXcgdHJlZSBkZXNjcmlwdGlvbi4KCShzdHJ1Y3QgdHJlZV9sb29wX2lkKTogTmV3LgoJKHVuaW9uIGxhbmdfdHJlZV9ub2RlKTogTmV3LgoJKHN0cnVjdCBsYW5nX2RlY2wpOiBOZXcuCgkoc3RydWN0IGxhbmdfdHlwZSk6IE5ldy4KCSogbWlzYy5jIChnbmF0X21hcmtfdHJlZSk6IERlbGV0ZS4KCShMQU5HX0hPT0tTX01BUktfVFJFRSk6IERlbGV0ZS4KCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pOiBObyBsb25nZXIgYW55IG5lZWQgdG8gY2FzdAoJZm9yIFRSRUVfTE9PUF9JRC4KCgkqIHV0aWxzLmMgKHN0cnVjdCBsYW5ndWFnZV9mdW5jdGlvbik6IE5ldyBkdW1teSBzdHJ1Y3R1cmUuCgoJKiBNYWtlZmlsZS5pbiAoZGVjbC5vKTogZ3QtYWRhLTxmaWxlbmFtZS5oPiBpcyBpbiBvYmpkaXIsIG5vdCBzcmNkaXIuCgkobWlzYy5vKTogTGlrZXdpc2UuCgkodXRpbHMubyk6IExpa2V3aXNlOyBhbHNvIGd0eXBlLWFkYS5oLgoJKiBNYWtlLWxhbmcuaW4gKGduYXQxKTogQWRkIGRlcGVuZGVuY3kgb24gcy1ndHlwZS4KCShnbmF0YmluZCk6IEFkZCBkZXBlbmRlbmN5IG9uICQoQ09ORklHX0gpLgoJKiB1dGlscy5jOiBDb3JyZWN0IGxhc3QgI2luY2x1ZGUuCgkoc3R1Y3QgZV9zdGFjayk6IFJlbW92ZSB1bm5lY2Vzc2FyeSAnc3RhdGljJy4KCShtYXJrX2Vfc3RhY2spOiBSZW1vdmUgdW51c2VkIHByb3RvdHlwZS4KCgkqIHNjbi1ubGl0LmFkYjogUmVtb3ZlIHdoaXRlc3BhY2UgYWZ0ZXIgdmVyc2lvbiBudW1iZXIgdG8KCWtlZXAgbGluZXMgdW5kZXIgODAgY2hhcnMuCgkqIHNuYW1lcy5hZGI6IExpa2V3aXNlLgoJKiB0cmVlcHIuYWRzOiBMaWtld2lzZS4KCgkqIE1ha2VmaWxlLmluIChkZWNsLm8pOiBJbmNsdWRlIGd0LWFkYS08ZmlsZW5hbWU+LmguCgkobWlzYy5vKTogTGlrZXdpc2UuCgkodXRpbHMubyk6IEluY2x1ZGUgZ3QtYWRhLTxmaWxlbmFtZT4uaCBhbmQgZ3R5cGUtYWRhLmguCgkqIGNvbmZpZy1sYW5nLmluIChndGZpbGVzKTogTmV3LgoJKiBkZWNsLmM6IFVzZSBnZW5ndHlwZSBmb3Igcm9vdHMuCgkqIGdpZ2kuaDogVXNlIGdlbmd0eXBlIGZvciByb290cy4KCSogdHJhbnMuYzogVXNlIGdlbmd0eXBlIGZvciByb290cy4KCSogdXRpbHMuYzogVXNlIGdlbmd0eXBlIGZvciByb290cywgbWFya2luZy4gIEluY2x1ZGUgZ3R5cGUtYWRhLmguCgoyMDAyLTA2LTAyICBHYWJyaWVsIERvcyBSZWlzICA8Z2RyQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtaXNjLmMgKGduYXRfaW5pdCk6IEFkanVzdCBzZXR0aW5nIG9mIGludGVybmFsX2Vycm9yX2Z1bmN0aW9uLgoKMjAwMi0wNi0wMSAgSm9zZXBoIFMuIE15ZXJzICA8anNtMjhAY2FtLmFjLnVrPgoKCSogZ25hdF91Zy50ZXhpOiBVc2UgQGlmbm90dGV4IGluc3RlYWQgb2YgQGlmaW5mby4KCSogZ25hdF91Z191bngudGV4aSwgZ25hdF91Z192bXMudGV4aSwgZ25hdF91Z192eHcudGV4aSwKCWduYXRfdWdfd250LnRleGk6IFJlZ2VuZXJhdGUuCgoyMDAyLTA1LTMxICBGbG9yaWFuIFdlaW1lciAgPGZ3QGRlbmViLmVueW8uZGU+CgoJKiA1bnRhcHJvcC5hZGIgKHdpdGggU3lzdGVtLk9TX1ByaW1pdGl2ZXMpOiBSZW1vdmUuCgoJKiBjc3RyZWFtcy5jIChtYXhfcGF0aF9sZW4pOiBNb3ZlIGZyb20gaGVyZSAuLi4KCSogYWRhaW50LmMgKF9fZ25hdF9tYXhfcGF0aF9sZW4pOiAuLi4gdG8gaGVyZS4KCSogYWRhaW50LmMgKF9fZ25hdF9tYXhfcGF0aF9sZW4pOiBEZWNsYXJlLgoJKiBnLWRpcm9wZS5hZGIgKE1heF9QYXRoKTogQWRqdXN0LgoJKiBnLW9zX2xpYi5hZGIgKE5vcm1hbGl6ZV9QYXRobmFtZS5NYXhfUGF0aCk6IEFkanVzdC4KCSogaS1jc3RyZWEuYWRzIChtYXhfcGF0aF9sZW4pOiBBZGp1c3QuCgkqIG9zaW50LmFkYiAoR2V0X1JUU19TZWFyY2hfRGlyLk1heF9QYXRoKTogQWRqdXN0LgoJKiB4cl90YWJscy5hZGIgKERpcl9OYW1lLk1heF9QYXRoOiBBZGp1c3QuCgoJKiBNYWtlZmlsZS5pbiwgTWFrZS1sYW5nLmluOiBEb2N1bWVudGF0aW9uIGlzIG5vdyBidWlsdCBpbgoJTWFrZS1sYW5nLmluLiAgU3RvcmUgSW5mbyBhbmQgZ2VuZXJhdGVkIFRleGluZm8gZmlsZXMgaW4gdGhlCglzb3VyY2UgZGlyZWN0b3J5LgoJKiBnbmF0X3VnLnRleGk6IFJlbW92ZSBDVlMga2V5d29yZHMsIGNvcnJlY3QgdmVyc2lvbiBudW1iZXIuCglTZXQgZmlsZSBuYW1lIGNvcnJlY3RseS4KCgkqIGduYXRfdWdfKi50ZXhpOiBBZGQuCgkqIC5jdnNpZ25vcmU6IElnbm9yZSBnZW5lcmF0ZWQgVGV4aW5mbyBmaWxlcy4KCjIwMDItMDUtMzAgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBhZGEuaDogQWRkIE1JIGd1YXJkIG1hY3JvLgoJKFNVQlRZUEUpOiBEZWZpbmUgY29uc3RhbnRzIHdpdGggYW4gYW5vbnltb3VzIGVudW0sIG5vdCBzdGF0aWMKCWNvbnN0IHZhcmlhYmxlcy4KCShJTik6IENhc3QgY29uc3RhbnRzIHRvIGFwcHJvcHJpYXRlIHR5cGUgYmVmb3JlIHVzZS4KCjIwMDItMDUtMjYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIGduYXR2c24uYWRzIChHbmF0X1ZlcnNpb25fU3RyaW5nKTogQ2hhbmdlIHRvICIzLjIgMjAwMjA1MjYKCShleHBlcmltZW50YWwpIi4KCjIwMDItMDUtMjMgIFJhaW5lciBPcnRoICA8cm9AVGVjaEZhay5VbmktQmllbGVmZWxkLkRFPgoKCSogTWFrZS1sYW5nLmluIChDUCwgRUNITyk6IENvcHkgZnJvbSBNYWtlZmlsZS5pbi4KCShYX0FEQV9DRkxBR1MsIFRfQURBX0NGTEFHUywgWF9BREFGTEFHUywgVF9BREFGTEFHUyk6IExpa2V3aXNlLgoJKEFMTF9BREFGTEFHUywgRk9SQ0VfREVCVUdfQURBRkxBR1MsIEFEQV9DRkxBR1MpOiBMaWtld2lzZS4KCShBTExfQURBX0NGTEFHUyk6IExpa2V3aXNlLgoJKEFEQV9JTkNMVURFUyk6IExpa2V3aXNlLgoJQWRhcHQgZm9yIG5ldyB3b3JraW5nIGRpci4KCShHTkFUQklORCk6IFVzZSBNYWtlZmlsZS5pbiB2ZXJzaW9uLgoJKC5TVUZGSVhFUyk6IENvcHkgZnJvbSBNYWtlZmlsZS5pbi4KCShhZGEtd2Fybik6IERlZmluZS4KCSguYWRiLm8sIC5hZHMubyk6IENvcHkgZnJvbSBNYWtlZmlsZS5pbi4KCUFkZGVkICQoT1VUUFVUX09QVElPTikuCgkoR05BVDFfQ19PQkpTKTogTW92ZWQgZnJvbSBNYWtlZmlsZS5pbi4KCVByZWZpeCB3aXRoIGFkYSBzdWJkaXIuCgkoR05BVF9BREFfT0JKUywgR05BVDFfQURBX09CSlMsIEdOQVQxX09CSlMsIEdOQVRCSU5EX09CSlMpOiBMaWtld2lzZS4KCShFWFRSQV9HTkFUMV9PQkpTKTogTW92ZWQgZnJvbSBNYWtlZmlsZS5pbi4KCUFkYXB0IGZvciBuZXcgd29ya2luZyBkaXIuCgkoRVhUUkFfR05BVEJJTkRfT0JKUyk6IExpa2V3aXNlLgoJKEFEQV9CQUNLRU5EKTogTW92ZWQgZnJvbSBNYWtlZmlsZS5pbi4KCVJlbmFtZWQgdG8gYXZvaWQgY29uZmxpY3Qgd2l0aCBnbG9iYWwgQkFDS0VORC4KCVVzZSB0aGF0IG9uZS4KCShUQVJHRVRfQURBX1NSQ1MpOiBNb3ZlZCBmcm9tIE1ha2VmaWxlLmluLgoJKGduYXQxJChleGVleHQpKTogUmVwbGFjZWQgcmVjdXJzaXZlIHJ1bGUgd2l0aCBNYWtlZmlsZS5pbiB2ZXJzaW9uLgoJVXNlIEFEQV9CQUNLRU5ELgoJKGduYXRiaW5kJChleGVleHQpKTogUmVwbGFjZWQgcmVjdXJzaXZlIHJ1bGUgd2l0aCBNYWtlZmlsZS5pbiB2ZXJzaW9uLgoJKGFkYV9leHRyYV9maWxlcyk6IE1vdmVkIGZyb20gTWFrZWZpbGUuaW4uCglQcmVmaXggd2l0aCBhZGEgc3ViZGlyLgoJKGFkYS9iX2duYXQxLmMsIGFkYS9iX2duYXQxLm8sIGFkYS9iX2duYXRiLmMsIGFkYS9iX2duYXRiLm8pOiBMaWtld2lzZS4KCShhZGEvdHJlZXBycy5hZHMsIGFkYS9laW5mby5oLCBhZGEvc2luZm8uaCwgYWRhL25tYWtlLmFkYik6IExpa2V3aXNlLgoJKGFkYS9ubWFrZS5hZHMpOiBMaWtld2lzZS4KCSh1cGRhdGUtc291cmNlcyk6IE1vdmVkIGZyb20gTWFrZWZpbGUuaW4uCglQcmVmaXggd2l0aCBhZGEgc3ViZGlyLgoJKGFkYS9zZGVmYXVsdC5hZGIsIGFkYS9zdGFtcC1zZGVmYXVsdCwgYWRhL3NkZWZhdWx0Lm8pOiBMaWtld2lzZS4KCShBREFfVFJFRV9IKTogTGlrZXdpc2UuCgkoYWRhL2EtZXhjZXB0Lm8sIGFkYS9zLWFzc2VydC5vLCBhZGEvcy1tZW1vcnkubyk6IExpa2V3aXNlLgoJKGFkYS9tZW10cmFjay5vKTogTGlrZXdpc2UuCgkoYWRhL2FkYWRlY29kZS5vKTogTGlrZXdpc2UuCglVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKGFkYS9hZGFpbnQubyk6IE5ldy4KCShhZGEvYXJndi5vKTogTW92ZWQgZnJvbSBNYWtlZmlsZS5pbi4KCVByZWZpeCB3aXRoIGFkYSBzdWJkaXIuCglVcGRhdGUgZGVwZW5kZW5jaWVzLgoJKGFkYS9jc3RyZWFtcy5vLCBhZGEvZXhpdC5vLCBhZGEvZmluYWwubywgYWRhL2xpbmsubyk6IExpa2V3aXNlLgoJKGFkYS9jaW8ubywgYWRhL2luaXQubywgYWRhL3JhaXNlLm8sIGFkYS90cmFjZWJhay5vKTogTGlrZXdpc2UuCgkoYWRhL2N1aW50cC5vLCBhZGEvZGVjbC5vLCBhZGEvbWlzYy5vKTogTW92ZWQgZnJvbSBNYWtlZmlsZS5pbi4KCVByZWZpeCB3aXRoIGFkYSBzdWJkaXIuCgkoYWRhL3Rhcmd0eXBzLm8sIGFkYS90cmFucy5vLCBhZGEvdXRpbHMubywgYWRhL3V0aWxzMi5vKTogTGlrZXdpc2UuCgkoR05BVCBERVBFTkRFTkNJRVMpOiBSZWdlbmVyYXRlLgoJKiBNYWtlZmlsZS5pbiAoTUFDSE1PREVfSCwgUlRMX0gsIFRSRUVfSCk6IFJlbW92ZWQsIHByb3ZpZGVkIGJ5Cgl0b3BsZXZlbCBNYWtlZmlsZS5pbi4KCShFWFRSQV9HTkFUMV9PQkpTLCBFWFRSQV9HTkFUQklORF9PQkpTKTogUmVtb3ZlZC4KCShUQVJHRVRfQURBX1NSQ1MpOiBSZW1vdmVkLgoJKEdOQVQxX0NfT0JKUywgR05BVF9BREFfT0JKUywgR05BVDFfQURBX09CSlMsIEdOQVQxX09CSlMpOiBMaWtld2lzZS4KCShHTkFUQklORF9PQkpTKTogTGlrZXdpc2UuCgkoQURBX0lOQ0xVREVfRElSLCBBREFfUlRMX09CSl9ESVIpOiBNb3ZlZCBoZXJlLgoJKEJBQ0tFTkQpOiBSZW1vdmVkLgoJKC4uL2duYXQxJChleGVleHQpLCAuLi9nbmF0YmluZCQoZXhlZXh0KSk6IExpa2V3aXNlLgoJKFRSRUVfSCk6IExpa2V3aXNlLgoJKGFkYV9leHRyYV9maWxlcyk6IExpa2V3aXNlLgoJKGJfZ25hdDEuYywgYl9nbmF0MS5vLCBiX2duYXRiLmMsIGJfZ25hdGIubyk6IExpa2V3aXNlLgoJKHRyZWVwcnMuYWRzLCBlaW5mby5oLCBzaW5mby5oLCBubWFrZS5hZGIsIG5tYWtlLmFkcyk6IExpa2V3aXNlLgoJKHVwZGF0ZS1zb3VyY2VzKTogTGlrZXdpc2UuCgkoc2RlZmF1bHQuYWRiLCBzdGFtcC1zZGVmYXVsdCwgc2RlZmF1bHQubyk6IExpa2V3aXNlCgkoQURBX1RSRUVfSCk6IExpa2V3aXNlLgoJKGFkYWRlY29jZS5vKTogTGlrZXdpc2UuCgkoY3VpbnRwLm8sIGRlY2wubywgbWlzYy5vLCB0cmFucy5vLCB1dGlscy5vLCB1dGlsczIubyk6IExpa2V3aXNlLgoJKEdOQVQgREVQRU5ERU5DSUVTKTogTGlrZXdpc2UuCgoyMDAyLTA1LTE2ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIE1ha2VmaWxlLmFkYWxpYjogQWxsb3cgZm9yIFBXRENNRCB0byBvdmVycmlkZSBoYXJkY29kZWQgcHdkLgoJKiBNYWtlZmlsZS5pbjogTGlrZXdpc2UuCgoyMDAyLTA1LTE0ICBSYWluZXIgT3J0aCAgPHJvQFRlY2hGYWsuVW5pLUJpZWxlZmVsZC5ERT4KCgkqIE1ha2UtbGFuZy5pbiAoZ25hdDEkKGV4ZWV4dCksIGduYXRiaW5kJChleGVleHQpLCBnbmF0dG9vbHMpOgoJUmVzdG9yZSAkKENPTkZJR19IKSBhbmQgcHJlZml4Lm8gZGVwZW5kZW5jaWVzLgoJKGFkYS5zdGFnZVsxLTRdKTogRGVwZW5kIG9uIHN0YWdlPy1zdGFydC4KCgkqIE1ha2VmaWxlLmluIChiX2duYXRiLmMpOiBEZXBlbmQgb24gaW50ZXJmYWMuby4KCjIwMDItMDUtMDIgIEppbSBXaWxzb24gIDx3aWxzb25AcmVkaGF0LmNvbT4KCgkqIHV0aWxzLmMgKGZpbmlzaF9yZWNvcmRfdHlwZSk6IENoYW5nZSByZWNvcmRfc2l6ZSB0byByZWNvcmRfdHlwZS4KCjIwMDEtMDUtMDIgIEpvaG4gRGF2aWQgQW5nbGluICA8ZGF2ZUBoaWF1bHkxLmhpYS5ucmMuY2E+CgoJKiBhZGEvTWFrZWZpbGUuaW4gKFhfQURBX0NGTEFHUywgVF9BREFfQ0ZMQUdTKTogTmV3IGZyYWdtZW50IG92ZXJyaWRlcy4KCShBTExfQURBX0NGTEFHUyk6IERlZmluZS4gIFJlcGxhY2UgQURBX0NGTEFHUyB3aXRoIEFMTF9BREFfQ0ZMQUdTIGluCglBTExfQURBRkxBR1MsIE1PU1RfQURBRkxBR1MsIGFuZCBhbGwgY29tcGlsYXRpb25zIHVzaW5nIENDLgoKMjAwMi0wNC0yNSAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChnbmF0X3BhcnNlX2ZpbGUpOiBVcGRhdGUuCgoyMDAyLTA0LTI0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKGduYXRfaW5pdCk6IERvbid0IHNldCBsYW5nX2F0dHJpYnV0ZV9jb21tb24uCgoyMDAyLTA0LTIxICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBnbmF0X3JtLnRleGk6IFVzZSBAaWZub3R0ZXggaW5zdGVhZCBvZiBAaWZpbmZvLgoKMjAwMi0wNC0yMSAgRmxvcmlhbiBXZWltZXIgIDxmd0BkZW5lYi5lbnlvLmRlPgoKCSogZ25hdF91Zy50ZXhpOiBOZXcgZmlsZS4KCgkqIGduYXRfcm0udGV4aTogRG8gbm90IGluY2x1ZGUgdGV4aXBsdXMudGV4aS4gIEluY2x1ZGUgZmRsLnRleGkKCWluc3RlYWQgb2YgZ2ZkbC50ZXhpCgoJKiB4Z25hdHVnLmFkYiwgdWdfd29yZHM6IE5ldyBmaWxlcy4KCgkqIE1ha2VmaWxlLmluIChkb2MsIGR2aSk6IE5ldyB0YXJnZXRzLiAgQnVpbGQgZ25hdF91Z18qLAoJZ25hdF9ybSBhbmQgZ25hdC1zdHlsZSBtYW51YWxzLgoKMjAwMi0wNC0xOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogZ2lnaS5oIChpbmNvbXBsZXRlX3R5cGVfZXJyb3IpOiBSZW1vdmUuCgkqIHV0aWxzLmMgKGluY29tcGxldGVfdHlwZV9lcnJvcik6IFJlbW92ZS4KCjIwMDItMDQtMTYgIE1hcmsgTWl0Y2hlbGwgIDxtYXJrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSk6IEFkZCBoYXNfc2NvcGUgYXJndW1lbnQgdG8KCWV4cGFuZF9zdGFydF9zdG10X2V4cHIuCgoyMDAyLTA0LTA0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBnaWdpLmggKHRydXRodmFsdWVfY29udmVyc2lvbik6IFJlbmFtZS4KCSogbWlzYy5jIChMQU5HX0hPT0tTX1RSVVRIVkFMVUVfQ09OVkVSU0lPTik6IFJlZGVmaW5lLgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSk6IFVwZGF0ZS4KCSogdXRpbHMyLmMgKHRydXRodmFsdWVfY29udmVyc2lvbik6IFJlbmFtZSwgdXBkYXRlLgoJKGJ1aWxkX2JpbmFyeV9vcCwgYnVpbGRfdW5hcnlfb3ApOiBVcGRhdGUuCgoyMDAyLTA0LTA0ICBMYXVyZW50IEd1ZXJieSAgPGd1ZXJieUBhY20ub3JnPgoKCSogbWFrZS5hZGI6IEltcGxlbWVudCAtbWFyZ3MsIHJlbW92ZSByZXN0cmljdGlvbiBhYm91dCBmaWxlIG5hbWUgcGxhY2VtZW50LgoJKiBtYWtldXNnLmFkYjogRG9jdW1lbnRhdGlvbiB1cGRhdGUuCgkqIE1ha2VmaWxlLmluIChUT09MU19GTEFHU19UT19QQVNTKTogQWRkIFZQQVRIPSQoZnNyY2RpcikuCgkqIE1ha2VmaWxlLmluIChnbmF0dG9vbHMzKTogQ29tbWVudCBvdXQsIGduYXRtZW0gZG9lcyBub3QgYnVpbGQgd2l0aG91dCBsaWJhZGRyMmxpbmUuCgoyMDAyLTA0LTA0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiB1dGlscy5jIChjcmVhdGVfc3VicHJvZ19kZWNsKTogVXNlIFNFVF9ERUNMX0FTU0VNQkxFUl9OQU1FLgoJKGJ1aWx0aW5fZnVuY3Rpb24pOiBTaW1pbGFybHkuCgoyMDAyLTA0LTAxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBkZWNsLmMgKGduYXRfdG9fZ251X2VudGl0eSk6IFVwZGF0ZS4KCSogZ2lnaS5oIChtYXJrX2FkZHJlc3NhYmxlKTogUmVuYW1lLgoJKiBtaXNjLmMgKExBTkdfSE9PS1NfTUFSS19BRERSRVNTQUJMRSk6IFJlZGVmaW5lLgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSk6IFVwZGF0ZS4KCSogdXRpbHMuYyAoY3JlYXRlX3Zhcl9kZWNsKTogVXBkYXRlLgoJKiB1dGlsMi5jIChidWlsZF9iaW5hcnlfb3AsIGJ1aWxkX3VuYXJ5X29wLAoJZmlsbF92bXNfZGVzY3JpcHRvcik6IFVwZGF0ZS4KCShtYXJrX2FkZHJlc3NhYmxlKTogUmVuYW1lLCB1cGRhdGUuCgoyMDAyLTA0LTAxICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBnaWdpLmggKHVuc2lnbmVkX3R5cGUsIHNpZ25lZF90eXBlLCBzaWduZWRfb3JfdW5zaWduZWRfdHlwZSk6CglSZW5hbWUuCgkqIG1pc2MuYyAoTEFOR19IT09LU19TSUdORURfVFlQRSwgTEFOR19IT09LU19VTlNJR05FRF9UWVBFLAoJTEFOR19IT09LU19TSUdORURfT1JfVU5TSUdORURfVFlQRSk6IE5ldy4KCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0sIGNvbnZlcnRfd2l0aF9jaGVjayk6IFVwZGF0ZS4KCSogdXRpbHMuYyAodW5zaWduZWRfdHlwZSwgc2lnbmVkX3R5cGUsIHNpZ25lZF9vcl91bnNpZ25lZF90eXBlKToKCVJlbmFtZS4KCjIwMDItMDMtMzEgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIGdpZ2kuaCAoZmluaXNoX2luY29tcGxldGVfZGVjbCk6IFJlbmFtZS4KCSogbWlzYy5jIChMQU5HX0hPT0tTX0ZJTklTSF9JTkNPTVBMRVRFX0RFQ0wpOiBSZWRlZmluZS4KCSogdXRpbHMuYyAoZ25hdF9pbml0X2RlY2xfcHJvY2Vzc2luZyk6IERvbid0IHNldCBob29rLgoJKGZpbmlzaF9pbmNvbXBsZXRlX2RlY2wpOiBSZW5hbWUuCgoyMDAyLTAzLTI5ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBzdXNlLmRlPgoKCSogTWFrZWZpbGUuaW46IFBhc3MgVlBBVEg9JChmc3JjZGlyKSB3aGVuIGNhbGxpbmcgbWFrZSBpbiBydHMKCWRpcmVjdG9yeS4KCjIwMDEtMDMtMjggIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBjaGVja3MuYWRzOgoJKFJlbW92ZV9DaGVja3MpOiBOZXcgcHJvY2VkdXJlCgoJKiBjaGVja3MuYWRiOgoJKFJlbW92ZV9DaGVja3MpOiBOZXcgcHJvY2VkdXJlCgoJKiBleHBfdXRpbC5hZGI6CglVc2UgbmV3IER1cGxpY2F0ZV9TdWJleHByIGZ1bmN0aW9ucwoJKER1cGxpY2F0ZV9TdWJleHByX05vX0NoZWNrcyk6IE5ldyBwcm9jZWR1cmUKCShEdXBsaWNhdGVfU3ViZXhwcl9Ob19DaGVja3NfT3JpZyk6IE5ldyBwcm9jZWR1cmUKCShEdXBsaWNhdGVfU3ViZXhwcik6IFJlc3RvcmUgb3JpZ2luYWwgZm9ybSAoY2hlY2tzIGR1cGxpY2F0ZWQpCgkoRHVwbGljYXRlX1N1YmV4cHIpOiBDYWxsIFJlbW92ZV9DaGVja3MKCgkqIGV4cF91dGlsLmFkczoKCShEdXBsaWNhdGVfU3ViZXhwcl9Ob19DaGVja3MpOiBOZXcgcHJvY2VkdXJlCgkoRHVwbGljYXRlX1N1YmV4cHJfTm9fQ2hlY2tzX09yaWcpOiBOZXcgcHJvY2VkdXJlCglBZGQgMjAwMiB0byBjb3B5cmlnaHQgbm90aWNlCgoJKiBzZW1fdXRpbC5hZGI6IFVzZSBuZXcgRHVwbGljYXRlX1N1YmV4cHIgZnVuY3Rpb25zCgoJKiBzZW1fZXZhbC5hZGI6CgkoRXZhbF9JbmRleGVkX0NvbXBvbmVudCk6IFRoaXMgaXMgdGhlIHBsYWNlIHRvIGNhbGwKCUNvbnN0YW50X0FycmF5X1JlZiBhbmQgdG8gcmVwbGFjZSB0aGUgdmFsdWUuIFdlIHNpbXBseSBtZXJnZQoJdGhlIGNvZGUgb2YgdGhpcyBmdW5jdGlvbiBpbiBoZXJlLCBzaW5jZSBpdCBpcyBub3cgbm8gbG9uZ2VyCgl1c2VkIGVsc2V3aGVyZS4gVGhpcyBmaXhlcyB0aGUgcHJvYmxlbSBvZiB0aGUgYmFjayBlbmQgbm90CglyZWFsaXppbmcgd2Ugd2VyZSBjbGV2ZXIgZW5vdWdoIHRvIHNlZSB0aGF0IHRoaXMgd2FzCgljb25zdGFudC4KCShFeHByX1ZhbCk6IFJlbW92ZSBjYWxsIHRvIENvbnN0YW50X0FycmF5X1JlZgoJKEV4cHJfUmVwX1ZhbCk6IFJlbW92ZSBjYWxsIHRvIENvbnN0YW50X0FycmF5X1JlZgoJTWlub3IgcmVmb3JtYXR0aW5nCgkoQ29uc3RhbnRfQXJyYXlfUmVmKTogRGVhbCB3aXRoIHN0cmluZyBsaXRlcmFscyAocGF0Y2gKCXN1Z2dlc3RlZCBieSBaYWNrIFdlaW5iZXJnIG9uIHRoZSBnY2MgbGlzdCkKCjIwMDEtMDMtMjggIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBleHBfdXRpbC5hZGI6IER1cGxpY2F0ZV9TdWJleHByX05vX0NoZWNrc19PcmlnID0+CglEdXBsaWNhdGVfU3ViZXhwcl9Nb3ZlX0NoZWNrcy4KCgkqIGV4cF91dGlsLmFkczogRHVwbGljYXRlX1N1YmV4cHJfTm9fQ2hlY2tzX09yaWcgPT4KCUR1cGxpY2F0ZV9TdWJleHByX01vdmVfQ2hlY2tzLgoKCSogc2VtX2V2YWwuYWRiOiAoQ29uc3RhbnRfQXJyYXlfUmVmKTogVmVyaWZ5IHRoYXQgY29uc3RhbnQKCXZhbHVlIG9mIGFycmF5IGV4aXN0cyBiZWZvcmUgcmV0cmlldmluZyBpdCAoaXQgbWF5IGEgcHJpdmF0ZQoJcHJvdGVjdGVkIGNvbXBvbmVudCBpbiBhIGZ1bmN0aW9uKS4KCjIwMDItMDMtMjggICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiBwcmotcHAuYWRiIDogTmV3IGZpbGUuCgoJKiBwcmotcHAuYWRzIDogTmV3IGZpbGUuCgoyMDAyLTAzLTI4ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoc3RhbXAtc2RlZmF1bHQpOiBGaXggcGF0aCBmb3IgTWFrZWZpbGUuCgoyMDAyLTAzLTI4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKGduYXRfZXhwYW5kX2V4cHIpOiBNb3ZlIHByb3RvdHlwZS4KCjIwMDItMDMtMjcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIG1pc2MuYyAoaW5zZXJ0X2RlZmF1bHRfYXR0cmlidXRlcyk6IFJlbW92ZS4KCjIwMDItMDMtMjcgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIG1pc2MuYyAoTEFOR19IT09LU19FWFBBTkRfRVhQUik6IFJlZGVmaW5lLgoJKGduYXRfaW5pdCk6IERvbid0IHNldCBob29rLgoJKGduYXRfZXhwYW5kX2V4cHIpOiBGaXggcHJvdG90eXBlLgoKMjAwMi0wMy0yNyAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChnZ2NfcCk6IFJlbW92ZS4KCjIwMDItMDMtMjcgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBwcmotbWFrci5hZHMsIHByai1tYWtyLmFkYiA6IE5ldyBmaWxlcy4KCjIwMDItMDMtMjYgIE5laWwgQm9vdGggIDxuZWlsQGRhaWtva3V5YS5kZW1vbi5jby51az4KCgkqIG1pc2MuYyAoTEFOR19IT09LU19NQVJLX1RSRUUpOiBSZWRlZmluZS4KCShsYW5nX21hcmtfdHJlZSk6IE1ha2Ugc3RhdGljLCByZW5hbWUuCgoyMDAyLTAzLTI1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKG1heWJlX2J1aWxkX2NsZWFudXApOiBSZW1vdmUuCgoyMDAyLTAzLTI0ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBnaWdpLmggKHl5cGFyc2UpOiBSZW1vdmUuCgoyMDAyLTAzLTIzICBGbG9yaWFuIFdlaW1lciAgPGZ3QGRlbmViLmVueW8uZGU+CgoJKiBnbmF0X3JtLnRleGk6IFN5bmMgd2l0aCBBQ1QgdmVyc2lvbi4KCSAgKEZyb20gQmVuIEJyb3Nnb2wgPGJyb3Nnb2xAZ25hdC5jb20+KQoKMjAwMi0wMy0yMCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChMQU5HX0hPT0tTX0RFQ0xfUFJJTlRBQkxFX05BTUUpOiBSZWRlZmluZS4KCShnbmF0X2luaXQpOiBSZW1vdmUgb2xkIGhvb2suCgoyMDAyLTAzLTE3ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKExBTkdfSE9PS1NfUEFSU0VfRklMRSk6IFJlZGVmaW5lLgoJKHl5cGFyc2UpOiBSZW5hbWUgZ25hdF9wYXJzZV9maWxlLgoKMjAwMi0wMy0xNCAgR2VvZmZyZXkgS2VhdGluZyAgPGdlb2Zma0ByZWRoYXQuY29tPgoKCURlbGV0ZSBhbGwgbGluZXMgY29udGFpbmluZyAiJFJldmlzaW9uOiIuCgkqIHhlaW5mby5hZGI6IERvbid0IGxvb2sgZm9yIHJldmlzaW9uIG51bWJlcnMuCgkqIHhubWFrZS5hZGI6IExpa2V3aXNlLgoJKiB4c2luZm8uYWRiOiBMaWtld2lzZS4KCSogeHNuYW1lcy5hZGI6IExpa2V3aXNlLgoJKiB4dHJlZXBycy5hZGI6IExpa2V3aXNlLgoKMjAwMi0wMy0xMiAgS2F2ZWggUi4gR2hhemkgIDxnaGF6aUBjYWlwLnJ1dGdlcnMuZWR1PgoKCSogbWlzYy5jIChnbmF0X3RyZWVfY29kZV90eXBlLCBnbmF0X3RyZWVfY29kZV9sZW5ndGgsCglnbmF0X3RyZWVfY29kZV9uYW1lKTogRGVsZXRlLgoJKHRyZWVfY29kZV90eXBlLCB0cmVlX2NvZGVfbGVuZ3RoLCB0cmVlX2NvZGVfbmFtZSk6IERlZmluZS4KCShnbmF0X2luaXQpOiBEb24ndCB0cnkgdG8gY29weSBpbnRvIHRoZSB2YXJpb3VzIHRyZWVfY29kZQoJYXJyYXlzLgoKMjAwMi0wMy0xMSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIE1ha2VmaWxlLmluICguTk9UUEFSQUxMRUwpOiBBZGQgZmFrZSB0YWcuCgoyMDAyLTAzLTA3ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogYWRhZGVjb2RlLmMsIGFkYWRlY29kZS5oLCBhdXgtaW8uYywgcy10cmFjZXMuYWRiLCBzLXRyYWNlcy5hZHMsCglzLXRyYXRhcy5hZGIsIHMtdHJhdGFzLmFkcywgc2lucHV0LWQuYWRiLCBzaW5wdXQtZC5hZHMsCglzd2l0Y2gtYi5hZGIsIHN3aXRjaC1iLmFkcywgc3dpdGNoLWMuYWRiLCBzd2l0Y2gtYy5hZHMsCglzd2l0Y2gtbS5hZGIsIHN3aXRjaC1tLmFkcyA6IE5ldyBmaWxlcy4KCjIwMDItMDMtMDcgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiA0MWludG5hbS5hZHMsIDQyaW50bmFtLmFkcywgNGFpbnRuYW0uYWRzLCA0Y2ludG5hbS5hZHMsCgk0ZGludG5hbS5hZHMsIDRnaW50bmFtLmFkcywgNGhpbnRuYW0uYWRzLCA0bGludG5hbS5hZHMsCgk0bWludG5hbS5hZHMsIDRwaW50bmFtLmFkcywgNHJpbnRuYW0uYWRzLCA0c2ludG5hbS5hZHMsCgk0dWludG5hbS5hZHMsIDR2Y2FsZW5kLmFkYiwgNHppbnRuYW0uYWRzLCA1MnN5c3RlbS5hZHMsCgk1YW1hc3RvcC5hZGIsIDVhc3lzdGVtLmFkcywgNWF0YXByb3AuYWRiLCA1YXRwb3BzcC5hZGIsCgk1YXZ4d29yay5hZHMsIDVib3NpbnRlLmFkYiwgNWJzeXN0ZW0uYWRzLCA1ZXN5c3RlbS5hZHMsCgk1ZnN5c3RlbS5hZHMsIDVmdGFwcm9wLmFkYiwgNWdpbnRlcnIuYWRiLCA1Z21hc3RvcC5hZGIsCgk1Z3N5c3RlbS5hZHMsIDVndGFwcm9wLmFkYiwgNWd0YXNpbmYuYWRiLCA1Z3Rhc2luZi5hZHMsCgk1aHBhcmFtZS5hZHMsIDVoc3lzdGVtLmFkcywgNWh0YXByb3AuYWRiLCA1aHRyYWNlYi5hZGIsCgk1aXRhcHJvcC5hZGIsIDVrc3lzdGVtLmFkcywgNWt2eHdvcmsuYWRzLCA1bGludG1hbi5hZGIsCgk1bHN5c3RlbS5hZHMsIDVtdnh3b3JrLmFkcywgNW5pbm1hb3AuYWRiLCA1bm9zaW50ZS5hZHMsCgk1bnRhcHJvcC5hZGIsIDVvaW50ZXJyLmFkYiwgNW9tYXN0b3AuYWRiLCA1b29zaW50ZS5hZGIsCgk1b3N5c3RlbS5hZHMsIDVvdGFwcm9wLmFkYiwgNW90YXNwcmkuYWRzLCA1cHZ4d29yay5hZHMsCgk1cXRhcHJvcC5hZGIsIDVzaW50bWFuLmFkYiwgNXNzeXN0ZW0uYWRzLCA1c3RhcHJvcC5hZGIsCgk1c3Rwb3BzZS5hZGIsIDVzdnh3b3JrLmFkcywgNXRvc2ludGUuYWRzLCA1dWludG1hbi5hZGIsCgk1dmFzdGhhbi5hZGIsIDV2aW5tYW9wLmFkYiwgNXZpbnRlcnIuYWRiLCA1dmludG1hbi5hZGIsCgk1dm1hc3RvcC5hZGIsIDV2cGFyYW1lLmFkcywgNXZzeXN0ZW0uYWRzLCA1dnRhcHJvcC5hZGIsCgk1dnRwb3BkZS5hZGIsIDV3bWVtb3J5LmFkYiwgNXdzeXN0ZW0uYWRzLCA1d3RhcHJvcC5hZGIsCgk1eXN5c3RlbS5hZHMsIDV6aW50ZXJyLmFkYiwgNXppbnRtYW4uYWRiLCA1em9zaW50ZS5hZGIsCgk1em9zaW50ZS5hZHMsIDV6c3lzdGVtLmFkcywgNXp0YXByb3AuYWRiLCA2dmNwcC5hZGIsIDZ2Y3N0cmVhLmFkYiwKCTdzaW50bWFuLmFkYiwgN3N0YXByb3AuYWRiLCA3c3Rwb3BzcC5hZGIsIDlkcnBjLmFkYiwKCU1ha2UtbGFuZy5pbiwgTWFrZWZpbGUuaW4sIGEtY2FsZGVsLmFkYiwgYS1jb21saW4uYWRzLAoJYS1keW5wcmkuYWRiLCBhLWV4Y2VwdC5hZGIsIGEtZXhjZXB0LmFkcywgYS1maW5hbGkuYWRiLAoJYS1uY2VsZnUuYWRzLCBhLXJlYXRpbS5hZGIsIGEtcmV0aWRlLmFkYiwgYS1zdHJlYW0uYWRzLAoJYS1zdHN0aW8uYWRiLCBhLXN0c3Rpby5hZHMsIGEtc3R3aWZpLmFkYiwgYS10YWdzLmFkYiwgYS10YXNhdHQuYWRiLAoJYS10ZXh0aW8uYWRiLCBhLXRpZGVhdS5hZGIsIGEtdGlmbGF1LmFkYiwgYS10aWdlYXUuYWRiLAoJYS10aWdlYXUuYWRzLCBhLXRpaW5hdS5hZGIsIGEtdGltb2F1LmFkYiwgYS13aXRlaW8uYWRiLAoJYS13dGRlYXUuYWRiLCBhLXd0ZW5hdS5hZGIsIGEtd3RmbGF1LmFkYiwgYS13dGdlYXUuYWRiLAoJYS13dGdlYXUuYWRzLCBhLXd0aW5hdS5hZGIsIGEtd3Rtb2F1LmFkYiwgYWRhLXRyZWUuZGVmLCBhZGEtdHJlZS5oLAoJYWRhaW50LmMsIGFkYWludC5oLCBhbGktdXRpbC5hZGIsIGFsaS5hZGIsIGFsaS5hZHMsIGF0cmVlLmFkYiwKCWF0cmVlLmFkcywgYXRyZWUuaCwgYmFja19lbmQuYWRiLCBiY2hlY2suYWRiLCBiaW5kZ2VuLmFkYiwKCWJpbmR1c2cuYWRiLCBjaGVja3MuYWRiLCBjb21wZXJyLmFkYiwgY29uZmlnLWxhbmcuaW4sIGNzZXRzLmFkYiwKCWNzZXRzLmFkcywgY3N0YW5kLmFkYiwgY3N0cmVhbXMuYywgZGVidWcuYWRiLCBkZWJ1Zy5hZHMsIGRlY2wuYywKCWVpbmZvLmFkYiwgZWluZm8uYWRzLCBlaW5mby5oLCBlbGlzdHMuaCwgZXJyb3V0LmFkYiwgZXJyb3V0LmFkcywKCWV2YWxfZmF0LmFkYiwgZXhwX2FnZ3IuYWRiLCBleHBfYXR0ci5hZGIsIGV4cF9jaDExLmFkYiwKCWV4cF9jaDEyLmFkYiwgZXhwX2NoMTMuYWRiLCBleHBfY2gyLmFkYiwgZXhwX2NoMy5hZGIsIGV4cF9jaDMuYWRzLAoJZXhwX2NoNC5hZGIsIGV4cF9jaDUuYWRiLCBleHBfY2g2LmFkYiwgZXhwX2NoNy5hZGIsIGV4cF9jaDcuYWRzLAoJZXhwX2NoOS5hZGIsIGV4cF9jaDkuYWRzLCBleHBfZGJ1Zy5hZGIsIGV4cF9kYnVnLmFkcywgZXhwX2Rpc3AuYWRzLAoJZXhwX2Rpc3QuYWRiLCBleHBfZml4ZC5hZGIsIGV4cF9pbnRyLmFkYiwgZXhwX3Bha2QuYWRiLAoJZXhwX3ByYWcuYWRiLCBleHBfc3RybS5hZGIsIGV4cF91dGlsLmFkYiwgZXhwX3V0aWwuYWRzLAoJZXhwYW5kZXIuYWRiLCBleHBlY3QuYywgZmUuaCwgZm1hcC5hZGIsIGZtYXAuYWRzLCBmbmFtZS11Zi5hZGIsCglmcmVlemUuYWRiLCBmcm9udGVuZC5hZGIsIGctYXdrLmFkYiwgZy1jZ2lkZWIuYWRiLCBnLWNvbWxpbi5hZGIsCglnLWNvbWxpbi5hZHMsIGctZGVicG9vLmFkYiwgZy1kaXJvcGUuYWRiLCBnLWRpcm9wZS5hZHMsCglnLWR5bnRhYi5hZGIsIGctZXhwZWN0LmFkYiwgZy1leHBlY3QuYWRzLCBnLWlvLmFkcywgZy1pb19hdXguYWRiLAoJZy1pb19hdXguYWRzLCBnLWxvY2ZpbC5hZGIsIGctbG9jZmlsLmFkcywgZy1vc19saWIuYWRiLAoJZy1vc19saWIuYWRzLCBnLXJlZ2V4cC5hZGIsIGctcmVncGF0LmFkYiwgZy1zb2NrZXQuYWRiLAoJZy1zb2NrZXQuYWRzLCBnLXNwaXBhdC5hZGIsIGctdGFibGUuYWRiLCBnLXRyYXN5bS5hZGIsCglnLXRyYXN5bS5hZHMsIGdpZ2kuaCwgZ21lbS5jLCBnbmF0MWRydi5hZGIsIGduYXRiaW5kLmFkYiwgZ25hdGJsLmMsCglnbmF0Y2hvcC5hZGIsIGduYXRjbWQuYWRiLCBnbmF0ZGxsLmFkYiwgZ25hdGZpbmQuYWRiLCBnbmF0bGJyLmFkYiwKCWduYXRsaW5rLmFkYiwgZ25hdGxzLmFkYiwgZ25hdG1lbS5hZGIsIGduYXRwcmVwLmFkYiwgZ25hdHZzbi5hZHMsCglnbmF0eHJlZi5hZGIsIGhsby5hZGIsIGhvc3RwYXJtLmFkcywgaS1jb2JvbC5hZGIsIGktY3BwLmFkYiwKCWktY3N0cmVhLmFkcywgaS1jc3RyaW4uYWRiLCBpLXBhY2RlYy5hZGIsIGktdnh3b3JrLmFkcywKCWltcHVuaXQuYWRiLCBpbml0LmMsIGlubGluZS5hZGIsIGlvLWF1eC5jLCBsYXlvdXQuYWRiLCBsaWItbG9hZC5hZGIsCglsaWItdXRpbC5hZGIsIGxpYi13cml0LmFkYiwgbGliLXdyaXQuYWRzLCBsaWIteHJlZi5hZGIsCglsaWIteHJlZi5hZHMsIGxpYi5hZGIsIGxpYi5hZHMsIG1ha2UuYWRiLCBtYWtldXNnLmFkYiwgbWRsbC5hZGIsCgltZW1yb290LmFkYiwgbWlzYy5jLCBtbGliLXRndC5hZGIsIG1saWItdXRsLmFkYiwgbWxpYi11dGwuYWRzLAoJbWxpYi5hZGIsIG5hbWV0LmFkYiwgbmFtZXQuYWRzLCBuYW1ldC5oLCBubGlzdHMuaCwgbm1ha2UuYWRiLAoJbm1ha2UuYWRzLCBubWFrZS5hZHQsIG9wdC5hZGIsIG9wdC5hZHMsIG9zaW50LmFkYiwgb3NpbnQuYWRzLAoJb3V0cHV0LmFkYiwgb3V0cHV0LmFkcywgcGFyLWNoMi5hZGIsIHBhci1jaDMuYWRiLCBwYXItY2g1LmFkYiwKCXBhci1wcmFnLmFkYiwgcGFyLXRjaGsuYWRiLCBwYXItdXRpbC5hZGIsIHBhci5hZGIsIHByai1hdHRyLmFkYiwKCXByai1kZWN0LmFkYiwgcHJqLWVudi5hZGIsIHByai1lbnYuYWRzLCBwcmotbm1zYy5hZGIsIHByai1wYXJ0LmFkYiwKCXByai1wcm9jLmFkYiwgcHJqLXN0cnQuYWRiLCBwcmotdHJlZS5hZGIsIHByai10cmVlLmFkcywgcHJqLmFkYiwKCXByai5hZHMsIHJhaXNlLmMsIHJhaXNlLmgsIHJlcGluZm8uYWRiLCByZXN0cmljdC5hZGIsIHJlc3RyaWN0LmFkcywKCXJpZGVudC5hZHMsIHJ0c2ZpbmQuYWRiLCBydHNmaW5kLmFkcywgcy1hcml0NjQuYWRiLCBzLWFzdGhhbi5hZGIsCglzLWF0YWNjby5hZGIsIHMtYXRhY2NvLmFkcywgcy1hdXhkZWMuYWRiLCBzLWNyYzMyLmFkYiwgcy1jcmMzMi5hZHMsCglzLWRpcmVpby5hZGIsIHMtZmF0Z2VuLmFkYiwgcy1maWxlaW8uYWRiLCBzLWZpbmltcC5hZGIsCglzLWdsb2xvYy5hZGIsIHMtZ2xvbG9jLmFkcywgcy1pbnRlcnIuYWRiLCBzLW1hc3RvcC5hZGIsCglzLW1hc3RvcC5hZHMsIHMtbWVtb3J5LmFkYiwgcy1wYXJhbWUuYWRzLCBzLXBhcmludC5hZGIsCglzLXBvb2dsby5hZGIsIHMtcG9vbG9jLmFkYiwgcy1ycGMuYWRiLCBzLXNlY3N0YS5hZGIsIHMtc2VxdWlvLmFkYiwKCXMtc2hhc3RvLmFkYiwgcy1zb2ZsaW4uYWRiLCBzLXNvZmxpbi5hZHMsIHMtc3RhY2hlLmFkYiwKCXMtdGFhc2RlLmFkYiwgcy10YWFzZGUuYWRzLCBzLXRhZGVjYS5hZGIsIHMtdGFkZWNhLmFkcywKCXMtdGFkZXJ0LmFkYiwgcy10YWRlcnQuYWRzLCBzLXRhZW5jYS5hZGIsIHMtdGFlbmNhLmFkcywKCXMtdGFwcm9iLmFkYiwgcy10YXByb3AuYWRzLCBzLXRhcmVzdC5hZGIsIHMtdGFzZGViLmFkYiwKCXMtdGFzaW5pLmFkYiwgcy10YXNpbmkuYWRzLCBzLXRhc2tpbi5hZGIsIHMtdGFza2luLmFkcywKCXMtdGFzcXVlLmFkYiwgcy10YXNxdWUuYWRzLCBzLXRhc3Jlbi5hZGIsIHMtdGFzcmVuLmFkcywKCXMtdGFzc3RhLmFkYiwgcy10YXN1dGkuYWRiLCBzLXRhc3V0aS5hZHMsIHMtdGF0YWF0LmFkYiwKCXMtdGF0YWF0LmFkcywgcy10cG9iZW4uYWRiLCBzLXRwb2Jlbi5hZHMsIHMtdHBvYm9wLmFkYiwKCXMtdHBvc2VuLmFkYiwgcy10cG9zZW4uYWRzLCBzLXRyYWNlYi5hZGIsIHMtdHJhY2ViLmFkcywKCXMtdW5zdHlwLmFkcywgcy13aWRlbnUuYWRiLCBzY24tbmxpdC5hZGIsIHNjbi5hZGIsIHNlbS5hZGIsCglzZW1fYWdnci5hZGIsIHNlbV9hdHRyLmFkYiwgc2VtX2F0dHIuYWRzLCBzZW1fY2FzZS5hZGIsCglzZW1fY2gxMC5hZGIsIHNlbV9jaDExLmFkYiwgc2VtX2NoMTEuYWRzLCBzZW1fY2gxMi5hZGIsCglzZW1fY2gxMy5hZGIsIHNlbV9jaDEzLmFkcywgc2VtX2NoMi5hZGIsIHNlbV9jaDMuYWRiLCBzZW1fY2gzLmFkcywKCXNlbV9jaDQuYWRiLCBzZW1fY2g1LmFkYiwgc2VtX2NoNi5hZGIsIHNlbV9jaDYuYWRzLCBzZW1fY2g3LmFkYiwKCXNlbV9jaDguYWRiLCBzZW1fY2g4LmFkcywgc2VtX2NoOS5hZGIsIHNlbV9kaXNwLmFkYiwgc2VtX2Rpc3QuYWRiLAoJc2VtX2VsYWIuYWRiLCBzZW1fZWxpbS5hZGIsIHNlbV9lbGltLmFkcywgc2VtX2V2YWwuYWRiLAoJc2VtX2ludHIuYWRiLCBzZW1fbWVjaC5hZGIsIHNlbV9wcmFnLmFkYiwgc2VtX3Jlcy5hZGIsCglzZW1fdHlwZS5hZGIsIHNlbV91dGlsLmFkYiwgc2VtX3V0aWwuYWRzLCBzZW1fdmZwdC5hZGIsCglzZW1fd2Fybi5hZGIsIHNpbmZvLmFkYiwgc2luZm8uYWRzLCBzaW5mby5oLCBzaW5wdXQtbC5hZGIsCglzaW5wdXQtbC5hZHMsIHNpbnB1dC5hZGIsIHNpbnB1dC5hZHMsIHNuYW1lcy5hZGIsIHNuYW1lcy5hZHMsCglzbmFtZXMuaCwgc3ByaW50LmFkYiwgc3ByaW50LmFkcywgc3RyaW5ndC5hZGIsIHN0cmluZ3QuYWRzLAoJc3RyaW5ndC5oLCBzdHlsZS5hZGIsIHN3aXRjaC5hZGIsIHN3aXRjaC5hZHMsIHN5c2RlcC5jLCBzeXN0ZW0uYWRzLAoJdGFibGUuYWRiLCB0YXJncGFybS5hZGIsIHRhcmdwYXJtLmFkcywgdGFyZ3R5cHMuYywgdGJ1aWxkLmFkYiwKCXRidWlsZC5hZHMsIHRyYWNlYmFrLmMsIHRyYW5zLmMsIHRyZWVfZ2VuLmFkYiwgdHJlZV9pby5hZGIsCgl0cmVlcHIuYWRiLCB0cmVlcHIuYWRzLCB0cmVlcHJzLmFkcywgdHJlZXBycy5hZHQsIHR0eXBlcy5hZHMsCgl0eXBlcy5hZGIsIHR5cGVzLmFkcywgdHlwZXMuaCwgdWludHAuYWRzLCB1cmVhbHAuYWRzLCB1c2FnZS5hZGIsCgl1dGlscy5jLCB1dGlsczIuYywgdmFsaWRzdy5hZGIsIHhubWFrZS5hZGIsIHhyX3RhYmxzLmFkYiwKCXhyX3RhYmxzLmFkcywgeHJlZl9saWIuYWRiLCB4cmVmX2xpYi5hZHMgOiBNZXJnZSBpbiBBQ1QgY2hhbmdlcy4KCgkqIDFzc2Vjc3RhLmFkYiwgMXNzZWNzdGEuYWRzLCBhLWNobGF0OS5hZHMsIGEtY3dpbGE5LmFkcywKCWctZW5ibHNwLmFkYiwgZy1tZDUuYWRiLCBnLW1kNS5hZHMsIGduYXRuYW1lLmFkYiwgZ25hdG5hbWUuYWRzLAoJbWtkaXIuYywgb3NpbnQtYi5hZGIsIG9zaW50LWIuYWRzLCBvc2ludC1jLmFkYiwgb3NpbnQtYy5hZHMsCglvc2ludC1sLmFkYiwgb3NpbnQtbC5hZHMsIG9zaW50LW0uYWRiLCBvc2ludC1tLmFkcyA6IE5ldyBmaWxlcwoKCSogM2xzb2Njb24uYWRzLCA1cXBhcmFtZS5hZHMsIDVxdnh3b3JrLmFkcywgNXNtYXN0b3AuYWRiLAoJNXpwYXJhbWUuYWRzLCBnbmF0bWFpbi5hZGIsIGduYXRtYWluLmFkcywgZ25hdHBzeXMuYWRiIDogUmVtb3ZlZAoKCSogbWRsbGZpbGUuYWRiLCBtZGxsZmlsZS5hZHMsIG1kbGx0b29sLmFkYiwgbWRsbHRvb2wuYWRzIDogUmVuYW1lZAoJdG8gbWRsbC1maWwuYWRbYnNdIGFuZCBtZGxsLXV0aWwuYWRbYnNdCgoJKiBtZGxsLWZpbC5hZGIsIG1kbGwtZmlsLmFkcywgbWRsbC11dGwuYWRiLCBtZGxsLXV0bC5hZHMgOiBSZW5hbWVkCglmcm9tIG1kbGxmaWxlLmFkW2JzXSBhbmQgbWRsbHRvb2wuYWRbYnNdCgoyMDAyLTAzLTAzICBLYXZlaCBSLiBHaGF6aSAgPGdoYXppQGNhaXAucnV0Z2Vycy5lZHU+CgoJKiB1dGlscy5jIChpbml0X2duYXRfdG9fZ251LCBpbml0X2dpZ2lfZGVjbHMpOiBVc2UgQVJSQVlfU0laRSBpbgoJbGlldSBvZiBleHBsaWNpdCBzaXplb2Yvc2l6ZW9mLgoKMjAwMi0wMi0yOCAgTmVpbCBCb290aCAgPG5laWxAZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jIChjb3B5X2xhbmdfZGVjbCk6IFJlbW92ZS4KCjIwMDItMDItMjcgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtaXNjLmM6IERlbGV0ZSB0cmFkaXRpb25hbC1tb2RlLXJlbGF0ZWQgY29kZSBjb3BpZWQgZnJvbSB0aGUKCUMgZnJvbnQgZW5kIGJ1dCBub3QgdXNlZCwgb3IgdXNlZCBvbmx5IHRvIHBlcm1pdCB0aGUgY29tcGlsZXIKCXRvIGxpbmsuCgoyMDAyLTAyLTA3ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogYWRhaW50LmMgKF9fZ25hdF90b19nbV90aW1lKTogRmlyc3QgYXJnIGlzIGludCwgbm90IHRpbWVfdC4KCSogYWRhaW50LmggKF9fZ25hdF90b19nbV90aW1lKTogVXBkYXRlIHByb3RvdHlwZS4KCjIwMDItMDEtMzAgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSkgW05fTG9vcF9TdGF0ZW1lbnRdOiBVc2UKCWV4cGFuZF9leGl0X2xvb3BfdG9wX2NvbmQuCgoyMDAxLTEyLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogdXRpbHMuYyAoZW5kX3N1YnByb2dfYm9keSk6IFB1c2ggR0MgY29udGV4dCBhcm91bmQKCXJlc3Rfb2ZfY29tcGlsYXRpb24gZm9yIG5lc3RlZCBmdW5jdGlvbnMuCgoyMDAxLTEyLTIzICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogNW5vc2ludGUuYWRzOiBHZXQgZGVmaW5pdGlvbiBvZiAiaW50IiBmcm9tIEludGVyZmFjZXMuQy4KCjIwMDEtMTItMjMgIEZsb3JpYW4gV2VpbWVyICA8ZndAZGVuZWIuZW55by5kZT4KCgkqIGduYXQtc3R5bGUudGV4aSAoRGVjbGFyYXRpb25zIGFuZCBUeXBlcyk6IFJlbW92ZSBhbmNpZW50IHN0eWxlCglydWxlIHdoaWNoIHdhcyBtYW5kYXRlZCBieSBjb2RlIGdlbmVyYXRpb24gaXNzdWVzLgoKCSogZ25hdC1zdHlsZS50ZXhpIChoZWFkZXIpOiBBZGQgQGRpcmNhdGVnb3J5LCBAZGlyZW50cnkuCgkodGl0bGUgcGFnZSk6IFJlbW92ZSBkYXRlLgoJKGdlbmVyYWwpIEFkZCBALi9AOiB3aGVyZSBhcHByb3JpYXRlLCBhbmQgdHdvIHNwYWNlcyBhZnRlciB0aGUKCWZ1bGwgc3RvcCBhdCB0aGUgZW5kIG9mIGEgc2VudGVuY2UuICBVc2UgQHNhbXAgbWFya3VwIHdoZW4KCXJlZmVycmluZyBjb25jcmV0ZSBsZXhpY2FsIGVudGl0aWVzIChrZXl3b3JkcywgYXR0cmlidXRlIG5hbWVzCglldGMuKSwgYW5kIEBzeW50YXggZm9yIEFSTSBncmFtbWFyIGVsZW1lbnRzLiBVc2UgQHIgZm9yIEVuZ2xpc2gKCXRleHQgaW4gY29tbWVudHMuICBVc2UgQGVtcGggZm9yIGVtcGhhc2lzLiAgQ2hhbmdlICJpZi1zdGF0ZW1lbnRzIgoJZXRjLiB0byAiaWYgc3RhdGVtZW50cyIgKHdpdGhvdXQgQHNhbXApLiBCcmVhayBsb25nIGxpbmVzLiAgTWFrZQoJY2FzaW5nIG9mIHNlY3Rpb24gbmFtZXMgY29uc2lzdGVudC4KCShJZGVudGlmaWVycyk6IFVzZSBAc2FtcCBtYXJrdXAgZm9yIHZhcmlhYmxlIG5hbWVzLgoJKENvbW1lbnRzKTogVXNlIEBzYW1wIG1hcmt1cCBmb3IgY29tbWVudCBjaGFyYWN0ZXJzLiBMaW5lLWVuZAoJY29tbWVudHMgbWF5IGZvbGxvdyBhbnkgQWRhIGNvZGUsIG5vdCBqdXN0IHN0YXRlbWVudHMuICBGaXgKCW1pc3NwZWxsaW5nIG9mICJJbnRlZ2VyIiBhcyAiaW50ZWdlciIuCgkoTG9vcCBzdGF0ZW1lbnRzKTogRG8gbm90IHVzZSB2YXJpYWJsZSBuYW1lICJJIiwgdXNlICJKIi4KCShTdWJwcm9ncmFtIERlY2xhcmF0aW9ucyk6IERvY3VtZW50IGFsaWdubWVudC4KCShTdWJwcm9ncmFtIEJvZGllcywgQmxvY2sgc3RhdGVtZW50cyk6IERvY3VtZW50IGVtcHR5IGxpbmUgYmVmb3JlCgkiYmVnaW4iLgoKMjAwMS0xMi0yMiAgRmxvcmlhbiBXZWltZXIgIDxmd0BkZW5lYi5lbnlvLmRlPgoKCSogbWFrZS5hZGIgKEFkZF9Td2l0Y2gpOiBNYWtlIEdlbmVyaWNfUG9zaXRpb24gYSBwcm9jZWR1cmUuICBUaGUKCWZ1bmN0aW9uIGFwcHJvYWNoIGRpZCBub3Qgd29yayB3ZWxsIGJlY2F1c2Ugb2YgYSBzaWRlIGVmZmVjdCAodGhlCglmdW5jdGlvbiBjYWxsIGNvdWxkIHJlYWxsb2NhdGUgdGhlIHRhYmxlIHdoaWNoIHdhcyBiZWluZyBpbmRleGVkCgl1c2luZyBpdHMgcmVzdWx0KS4gRml4ZXMgYWRhLzQ4NTEuCgoyMDAxLTEyLTE5ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogYmluZGdlbi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogY3N0YW5kLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBmbWFwLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCglDaGFuZ2UgbmFtZSBmcm9tIEFkZCBmb3IgQWRkX1RvX0ZpbGVfTWFwIChBZGQgaXMgbXVjaCB0b28gZ2VuZXJpYykKCUNoYW5nZSBQYXRoX05hbWVfT2YgdG8gTWFwcGVkX1BhdGhfTmFtZQoJQ2hhbmdlIEZpbGVfTmFtZV9PZiB0byBNYXBwZWRfRmlsZV9OYW1lCglGaXggY29weXJpZ2h0IGRhdGVzIGluIGhlYWRlcgoKCSogZm1hcC5hZHM6CglDaGFuZ2UgbmFtZSBmcm9tIEFkZCBmb3IgQWRkX1RvX0ZpbGVfTWFwIChBZGQgaXMgbXVjaCB0b28gZ2VuZXJpYykKCUNoYW5nZSBQYXRoX05hbWVfT2YgdG8gTWFwcGVkX1BhdGhfTmFtZQoJQ2hhbmdlIEZpbGVfTmFtZV9PZiB0byBNYXBwZWRfRmlsZV9OYW1lCglGaXggY29weXJpZ2h0IGRhdGVzIGluIGhlYWRlcgoKCSogZm5hbWUtdWYuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuICBOZXcgbmFtZXMgb2Ygc3R1ZmYgaW4gRm1hcC4KCUFkZCB1c2UgY2xhdXNlIGZvciBGbWFwLgoKCSogbWFrZS5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogb3NpbnQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuICBDaGFuZ2Ugb2YgbmFtZXMgaW4gRm1hcC4KCUFkZCB1c2UgY2xhdXNlIGZvciBGbWFwLgoKCSogcHJqLWVudi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcHJqLWVudi5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc3dpdGNoLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nLiAgRG8gcHJvcGVyIHJhaXNlIG9mIEJhZF9Td2l0Y2ggaWYKCWVycm9yIGZvdW5kICh0aGVyZSB3ZXJlIG9kZCBleGNlcHRpb25zIHRvIHRoaXMgZ2VuZXJhbCBydWxlIGluCgktZ25hdGVjLy1nbmF0ZW0gcHJvY2Vzc2luZykKCjIwMDEtMTItMTkgIE9saXZpZXIgSGFpbnF1ZSA8aGFpbnF1ZUBnbmF0LmNvbT4KCgkqIHJhaXNlLmMgKF9fZ25hdF9laF9wZXJzb25hbGl0eSk6IEV4Y2VwdGlvbiBoYW5kbGluZyBwZXJzb25hbGl0eQoJcm91dGluZSBmb3IgQWRhLiAgU3RpbGwgaW4gcm91Z2ggc3RhdGUsIGluc3BpcmVkIGZyb20gdGhlIEMrKyB2ZXJzaW9uCglhbmQgc3RpbGwgY29udGFpbmluZyBhIGJ1bmNoIG9mIGRlYnVnZ2luZyBhcnRpZmFjdHMuCgkocGFyc2VfbHNkYV9oZWFkZXIsIGdldF90dHlwZV9lbnRyeSk6IExvY2FsIChzdGF0aWMpIGhlbHBlcnMsIGFsc28KCWluc3BpcmVkIGZyb20gdGhlIEMrKyBsaWJyYXJ5LgoKCSogcmFpc2UuYyAoZWhfcGVyc29uYWxpdHkpOiBBZGQgY29tbWVudHMuIFBhcnQgb2Ygd29yayBmb3IgdGhlIEdDQyAzCglleGNlcHRpb24gaGFuZGxpbmcgaW50ZWdyYXRpb24uCgoyMDAxLTEyLTE5ICBBcm5hdWQgQ2hhcmxldCA8Y2hhcmxldEBnbmF0LmNvbT4KCgkqIE1ha2VmaWxlLmluOiBSZW1vdmUgdXNlIG9mIDVzbWFzdG9wLmFkYiB3aGljaCBpcyBvYnNvbGV0ZS4KCShISUVfU09VUkNFUyk6IEFkZCBzLXNlY3N0YS5hZHtzLGJ9LgoJKEhJRV9PQkpTKTogQWRkIHMtZmF0Ki5vCgkoUkFWRU5fU09VUkNFUyk6IFJlbW92ZSBmaWxlcyB0aGF0IGFyZSBubyBsb25nZXIgcmVxdWlyZWQuIEFkZAoJaW50ZXJydXB0IGhhbmRsaW5nIGZpbGVzLgoJKFJBVkVOX01PRCk6IFJlbW92ZWQsIG5vIGxvbmdlciBuZWVkZWQuCgoyMDAxLTEyLTE5ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogYS1uZ2VsZnUuYWRiOiBSZW1vdmUgPz8/IGNvbW1lbnQgZm9yIGluYXBwcm9wcmlhdGUgSW5saW5lX0Fsd2F5cwoJQWRkIDIwMDEgdG8gY29weXJpZ2h0IGRhdGUKCgkqIGctcmVncGF0LmFkYjogQ2hhbmdlIHByYWdtYSBJbmxpbmVfQWx3YXlzIHRvIElubGluZS4gVGhlcmUgaXMgbm8KCW5lZWQgdG8gZm9yY2UgdW5pdmVyc2FsIGlubGluaW5nIGZvciB0aGVzZSBjYXNlcy4KCjIwMDEtMTItMTkgIEFybmF1ZCBDaGFybGV0IDxjaGFybGV0QGduYXQuY29tPgoKCSogcy10YXByb2IuYWRiOiBNaW5vciBjbGVhbiB1cHMgc28gdGhhdCB0aGlzIHVuaXQgY2FuIGJlIHVzZWQgaW4KCVJhdmVuc2NhciBISS4KCgkqIGV4cF9jaDcuYWRiOiBBbGxvdyB1c2Ugb2Ygc2Vjb25kYXJ5IHN0YWNrIGluIEhJIG1vZGUuCglEaXNhbGxvdyBpdCB3aGVuIHByYWdtYSBSZXN0cmljdGlvbnMgKE5vX1NlY29uZGFyeV9TdGFjaykgaXMgc3BlY2lmaWVkLgoKMjAwMS0xMi0xOSAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai10cmVlLmFkcyAoUHJvamVjdF9Ob2RlX1JlY29yZCk6IEFkZCBjb21tZW50cyBmb3IgY29tcG9uZW50cwoJUGtnX0lkIGFuZCBDYXNlX0luc2Vuc2l0aXZlLgoKMjAwMS0xMi0xOSAgUGFzY2FsIE9icnkgPG9icnlAZ25hdC5jb20+CgoJKiBnLXNvY2tldC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4gRm91bmQgd2hpbGUgcmVhZGluZyBjb2RlLgoKMjAwMS0xMi0xOSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHByai10cmVlLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAxLTEyLTIwICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiBjb25maWctbGFuZy5pbiAoZGlmZl9leGNsdWRlcyk6IFJlbW92ZS4KCjIwMDEtMTItMTcgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBkbyBub3QgZ2VuZXJhdGUgYQoJZGlzY3JpbWluYW50IGNoZWNrIGlmIHRoZSBzZWxlY3RlZCBjb21wb25lbnQgaXMgYSBjb21wb25lbnQgb2YKCXRoZSBhcmd1bWVudCBvZiBhbiBpbml0aWFsaXphdGlvbiBwcm9jZWR1cmUuCgoJKiB0cmFucy5jICh0cmVlX3RyYW5zZm9ybSwgY2FzZSBvZiBhcml0aG1ldGljIG9wZXJhdG9ycyk6IElmIHJlc3VsdAoJdHlwZSBpcyBwcml2YXRlLCB0aGUgZ251X3R5cGUgaXMgdGhlIGJhc2UgdHlwZSBvZiB0aGUgZnVsbCB2aWV3LAoJZ2l2ZW4gdGhhdCB0aGUgZnVsbCB2aWV3IGl0c2VsZiBtYXkgYmUgYSBzdWJ0eXBlLgoKMjAwMS0xMi0xNyAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9yZXMuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fUmVhbF9MaXRlcmFsKTogQWRkIG1pc3NpbmcgdGhpcmQKCXBhcmFtZXRlciBpbiBjYWxsIHRvIE1hY2hpbmUgKHVua25vd24gaG9ycmlibGUgZWZmZWN0cyBmcm9tIHRoaXMKCW9taXNzaW9uKS4KCgkqIHVyZWFscC5oOiBBZGQgZGVmaW5pdGlvbiBvZiBSb3VuZF9FdmVuIGZvciBjYWxsIHRvIE1hY2hpbmUKCUFkZCB0aGlyZCBwYXJhbWV0ZXIgZm9yIE1hY2hpbmUKCjIwMDEtMTItMTcgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fd2Fybi5hZGIgKENoZWNrX09uZV9Vbml0KTogU3VwcHJlc3Mgd2FybmluZ3MgY29tcGxldGVseSBvbgoJcHJlZGVmaW5lZCB1bml0cyBpbiBOb19SdW5fVGltZSBtb2RlLgoKMjAwMS0xMi0xNyAgUmljaGFyZCBLZW5uZXIgPGtlbm5lckBnbmF0LmNvbT4KCgkqIG1pc2MuYyAoaW5zbi1jb2Rlcy5oKTogTm93IGluY2x1ZGUuCgoyMDAxLTEyLTE3ICBPbGl2aWVyIEhhaW5xdWUgPGhhaW5xdWVAZ25hdC5jb20+CgoJKiBhLWV4Y2VwdC5hZGI6IFByZXBhcmF0aW9uIHdvcmsgZm9yIGZ1dHVyZSBpbnRlZ3JhdGlvbiBvZiB0aGUgR0NDIDMKCWV4Y2VwdGlvbiBoYW5kbGluZyBtZWNoYW5pc20KCShOb3RpZnlfSGFuZGxlZF9FeGNlcHRpb24sIE5vdGlmeV9VbmhhbmRsZWRfRXhjZXB0aW9uKTogTmV3IHJvdXRpbmVzCgl0byBmYWN0b3JpemUgcHJldmlvdXMgY29kZSBzZXF1ZW5jZXMgYW5kIG1ha2UgdGhlbSBleHRlcm5hbGx5IGNhbGxhYmxlLAoJZS5nLiBmb3IgdGhlIEFkYSBwZXJzb25hbGl0eSByb3V0aW5lIHdoZW4gdGhlIEdDQyAzIG1lY2hhbmlzbSBpcyB1c2VkLgoJKFByb3BhZ2F0ZV9FeGNlcHRpb24sIFJhaXNlX0N1cnJlbnRfRXhjZXAsIFJhaXNlX0Zyb21fU2lnbmFsX0hhbmRsZXIpOgoJVXNlIHRoZSBuZXcgbm90aWZpY2F0aW9uIHJvdXRpbmVzLgoKMjAwMS0xMi0xNyAgRW1tYW51ZWwgQnJpb3QgPGJyaW90QGduYXQuY29tPgoKCSogcHJqLXRyZWUuYWRzIChGaXJzdF9DaG9pY2VfT2YpOiBEb2N1bWVudCB0aGUgd2hlbiBvdGhlcnMgY2FzZQoKMjAwMS0xMi0xNyAgQXJuYXVkIENoYXJsZXQgPGNoYXJsZXRAZ25hdC5jb20+CgoJKiBiaW5kZ2VuLmFkYiAoR2VuX0FkYV9Jbml0XyopOiBTZXQgcHJpb3JpdHkgb2YgZW52aXJvbm1lbnQgdGFzayBpbgoJSEktRSBtb2RlLCBpbiBvcmRlciB0byBzdXBwb3J0IFJhdmVuc2NhciBwcm9maWxlIHByb3Blcmx5LgoKCSogY3N0YW5kLmFkYiAoQ3JlYXRlX1N0YW5kYXJkKTogRHVyYXRpb24gaXMgYSAzMiBiaXQgdHlwZSBpbiBISS1FCgltb2RlIG9uIDMyIGJpdHMgdGFyZ2V0cy4KCjIwMDEtMTItMTcgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBmbWFwLmFkYjogSW5pdGlhbCB2ZXJzaW9uLgoKCSogZm1hcC5hZHM6IEluaXRpYWwgdmVyc2lvbi4KCgkqIGZuYW1lLXVmLmFkYiAoR2V0X0ZpbGVfTmFtZSk6IFVzZSBtYXBwaW5nIGlmIHVuaXQgbmFtZSBtYXBwZWQuCglJZiBzZWFyY2ggaXMgc3VjY2Vzc2Z1bGx5IGRvbmUsIGFkZCB0byBtYXBwaW5nLgoKCSogZnJvbnRlbmQuYWRiOiBJbml0aWFsaXplIHRoZSBtYXBwaW5nIGlmIGEgLWduYXRlbSBzd2l0Y2ggd2FzIHVzZWQuCgoJKiBtYWtlLmFkYjoKCShHbmF0bWFrZSk6IEFkZCBuZXcgbG9jYWwgdmFyaWFibGUgTWFwcGluZ19GaWxlX05hbWUuCgkgQ3JlYXRlIG1hcHBpbmcgZmlsZSB3aGVuIHVzaW5nIHByb2plY3QgZmlsZShzKS4KCSBEZWxldGUgbWFwcGluZyBmaWxlIGJlZm9yZSBleGl0aW5nLgoKCSogb3B0LmFkcyAoTWFwcGluZ19GaWxlX05hbWUpOiBOZXcgdmFyaWFibGUKCgkqIG9zaW50LmFkYiAoRmluZF9GaWxlKTogVXNlIHBhdGggbmFtZSBmb3VuZCBpbiBtYXBwaW5nLCBpZiBhbnkuCgoJKiBwcmotZW52LmFkYiAoQ3JlYXRlX01hcHBpbmdfRmlsZSk6IE5ldyBwcm9jZWR1cmUKCgkqIHByai1lbnYuYWRzIChDcmVhdGVfTWFwcGluZ19GaWxlKTogTmV3IHByb2NlZHVyZS4KCgkqIHN3aXRjaC5hZGIgKFNjYW5fRnJvbnRfRW5kX1N3aXRjaGVzKTogQWRkIHByb2Nlc3NpbmcgZm9yIC1nbmF0ZW0KCShNYXBwaW5nX0ZpbGUpCgoJKiB1c2FnZS5hZGI6IEFkZCBlbnRyeSBmb3IgbmV3IHN3aXRjaCAtZ25hdGVtLgoKCSogTWFrZWZpbGUuaW46IEFkZCBkZXBlbmRlbmNpZXMgZm9yIGZtYXAuby4KCjIwMDEtMTItMTcgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKEFuYWx5emVfV2l0aF9DbGF1c2UpOiBSZXRyaWV2ZSBwcm9wZXIgZW50aXR5IHdoZW4gdW5pdAoJaXMgYSBwYWNrYWdlIGluc3RhbnRpYXRpb24gcmV3cml0dGVuIGFzIGEgcGFja2FnZSBib2R5LgoJKEluc3RhbGxfV2l0aGVkX1VuaXQpOiBVbmRvIHByZXZpb3VzIGNoYW5nZSwgbm93IHJlZHVuZGFudC4KCjIwMDEtMTItMTcgIEdhcnkgRGlzbXVrZXMgPGRpc211a2VzQGduYXQuY29tPgoKCSogbGF5b3V0LmFkYjoKCShDb21wdXRlX0xlbmd0aCk6IE1vdmUgY29udmVyc2lvbiB0byBVbnNpZ25lZCB0byBjYWxsZXJzLgoJKEdldF9NYXhfU2l6ZSk6IENvbnZlcnQgTGVuIGV4cHJlc3Npb24gdG8gVW5zaWduZWQgYWZ0ZXIgY2FsbHMgdG8KCUNvbXB1dGVfTGVuZ3RoIGFuZCBEZXRlcm1pbmVfUmFuZ2UuCgkoTGF5b3V0X0FycmF5X1R5cGUpOiBDb252ZXJ0IExlbiBleHByZXNzaW9uIHRvIFVuc2lnbmVkIGFmdGVyIGNhbGxzIHRvCglDb21wdXRlX0xlbmd0aCBhbmQgRGV0ZXJtaW5lX1JhbmdlLgoJQWJvdmUgY2hhbmdlcyBmaXggcHJvYmxlbSB3aXRoIGxlbmd0aCBjb21wdXRhdGlvbiBmb3Igc3VwZXJudWxsIGFycmF5cwoJd2hlcmUgTWF4IChMZW4sIDApIHdhc24ndCBnZXR0aW5nIGFwcGxpZWQgZHVlIHRvIHRoZSBVbnNpZ25lZAoJY29udmVyc2lvbiB1c2VkIGJ5IENvbXB1dGVfTGVuZ3RoLgoKMjAwMS0xMi0xNyAgQXJuYXVkIENoYXJsZXQgPGNoYXJsZXRAZ25hdC5jb20+CgoJKiBydHNmaW5kLmFkczoKCShPS19Ub19Vc2VfSW5fTm9fUnVuX1RpbWVfTW9kZSk6IEFsbG93IEFkYS5FeGNlcHRpb25zIGFuZAoJIFN5c3RlbS5TZWNvbmRhcnlfU3RhY2suCgkoT0tfVG9fVXNlX0luX1JhdmVuc2Nhcl9Nb2RlKTogTmV3IHRhYmxlIG5lZWRlZCB0byBpbXBsZW1lbnQgUmF2ZW5zY2FyCgkgaW4gSEktRSBtb2RlLgoJUmVtb3ZlIHVudXNlZCBlbnRpdHkgUkVfRXhjZXB0aW9uX0RhdGEuCgoJKiBydHNmaW5kLmFkYiAoUlRFKTogQWxsb3cgUmF2ZW5zY2FyIFByb2ZpbGUgaW4gSEkgbW9kZS4KCgkqIHJpZGVudC5hZHMgKE5vX1NlY29uZGFyeV9TdGFjayk6IE5ldyByZXN0cmljdGlvbi4KCjIwMDEtMTItMTcgIEpvZWwgQnJvYmVja2VyIDxicm9iZWNrZUBnbmF0LmNvbT4KCgkqIGduYXRfcm0udGV4aTogRml4IG1pbm9yIHR5cG9zLiBGb3VuZCB3aGlsZSByZWFkaW5nIHRoZSBzZWN0aW9uCglyZWdhcmRpbmcgIkJpdF9PcmRlciBDbGF1c2VzIiB0aGF0IHdhcyBzZW50IHRvIGEgY3VzdG9tZXIuCglWZXJ5IGludGVyZXN0aW5nIGRvY3VtZW50YXRpb24hCgoyMDAxLTEyLTE3ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX2Nhc2UuYWRiIChDaG9pY2VfSW1hZ2UpOiBBdm9pZCBjcmVhdGluZyBpbXByb3BlciBjaGFyYWN0ZXIKCWxpdGVyYWwgbmFtZXMgYnkgdXNpbmcgdGhlIHJvdXRpbmUgU2V0X0NoYXJhY3Rlcl9MaXRlcmFsX05hbWUuIFRoaXMKCWZpeGVzIGJvbWJzIGluIGNlcnRhaW4gZXJyb3IgbWVzc2FnZSBjYXNlcy4KCjIwMDEtMTItMTcgIEFybmF1ZCBDaGFybGV0IDxjaGFybGV0QGduYXQuY29tPgoKCSogYS1yZWF0aW0uYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuCgoyMDAxLTEyLTE3ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoMTIuYWRiIChWYWxpZGF0ZV9EZXJpdmVkX1R5cGVfSW5zdGFuY2UpOiBIYW5kbGUgcHJvcGVybHkgdGhlCgljYXNlIHdoZXJlIHRoZSBmb3JtYWwgaXMgYW4gZXh0ZW5zaW9uIG9mIGFub3RoZXIgZm9ybWFsIGluIHRoZSBjdXJyZW50Cgl1bml0IG9yIGluIGEgcGFyZW50IGdlbmVyaWMgdW5pdC4KCjIwMDEtMTItMTcgIEFybmF1ZCBDaGFybGV0IDxjaGFybGV0QGduYXQuY29tPgoKCSogcy10cG9zZW4uYWRiOiBVcGRhdGUgY29tbWVudHMuICBNaW5vciByZWZvcm1hdHRpbmcuCglNaW5vciBjb2RlIGNsZWFuIHVwLgoKCSogcy10YXJlc3QuYWRiOiBVcGRhdGUgY29tbWVudHMuICBNaW5vciBjb2RlIHJlb3JnYW5pemF0aW9uLgoKMjAwMS0xMi0xNyAgR2FyeSBEaXNtdWtlcyA8ZGlzbXVrZXNAZ25hdC5jb20+CgoJKiBleHBfYXR0ci5hZGIgKEF0dHJpYnV0ZV9UYWcpOiBTdXBwcmVzcyBleHBhbnNpb24gb2YgPHR5cGVfbmFtZT4nVGFnCgl3aGVuIEphdmFfVk0uCgoyMDAxLTEyLTE3ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogZXhwX2F0dHIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTItMTcgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gzLmFkYiAoQnVpbGRfRGVyaXZlZF9Qcml2YXRlX1R5cGUpOiBSZWZpbmUgY2hlY2sgdG8gaGFuZGxlCglkZXJpdmF0aW9ucyBuZXN0ZWQgd2l0aGluIGEgY2hpbGQgdW5pdDogdmVyaWZ5IHRoYXQgdGhlIHBhcmVudAoJdHlwZSBpcyBkZWNsYXJlZCBpbiBhbiBvdXRlciBzY29wZS4KCjIwMDEtMTItMTcgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMi0xNyAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV93YXJuLmFkYiAoQ2hlY2tfT25lX1VuaXQpOiBJbiBOb19SdW5fVGltZSBtb2RlLCBkbyBub3QgcG9zdAoJd2FybmluZyBpZiBjdXJyZW50IHVuaXQgaXMgYSBwcmVkZWZpbmVkIG9uZSwgZnJvbSB3aGljaCBib2RpZXMgbWF5CgloYXZlIGJlZW4gZGVsZXRlZC4KCjIwMDEtMTItMTcgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBldmFsX2ZhdC5hZHM6IEFkZCBjb21tZW50IHRoYXQgUm91bmRfRXZlbiBpcyByZWZlcmVuY2VkIGluIEFkYSBjb2RlCglGaXggaGVhZGVyIGZvcm1hdC4gQWRkIDIwMDEgdG8gY29weXJpZ2h0IGRhdGUuCgoJKiBleHBfZGJ1Zy5hZGIgKEdldF9FbmNvZGVkX05hbWUpOiBGaXggb3V0IG9mIGJvdW5kcyByZWZlcmVuY2UsCgl3aGljaCBjYXVzZWQgQ0UgZHVyaW5nIGNvbXBpbGF0aW9uIGlmIGNoZWNrcyB3ZXJlIGVuYWJsZWQuCgoyMDAxLTEyLTE3ICBWaW5jZW50IENlbGllciA8Y2VsaWVyQGduYXQuY29tPgoKCSogbWFrZS5hZGI6CgkoU3dpdGNoZXNfT2YpOiBOZXcgZnVuY3Rpb24KCShUZXN0X0lmX1JlbGF0aXZlX1BhdGgpOiBOZXcgcHJvY2VkdXJlCgkoQWRkX1N3aXRjaGVzKTogVXNlIG5ldyBmdW5jdGlvbiBTd2l0Y2hlc19PZgoJKENvbGxlY3RfQXJndW1lbnRzX0FuZF9Db21waWxlKTogVXNlIG5ldyBmdW5jdGlvbiBTd2l0Y2hlc19PZi4KCVdoZW4gdXNpbmcgYSBwcm9qZWN0IGZpbGUsIHRlc3QgaWYgdGhlcmUgYXJlIGFueSByZWxhdGl2ZQoJc2VhcmNoIHBhdGguIEZhaWwgaWYgdGhlcmUgYXJlIGFueS4KCShHbmF0bWFrZSk6IE9ubHkgYWRkIHN3aXRjaGVzIGZvciB0aGUgcHJpbWFyeSBkaXJlY3Rvcnkgd2hlbiBub3QgdXNpbmcKCWEgcHJvamVjdCBmaWxlLiBXaGVuIHVzaW5nIGEgcHJvamVjdCBmaWxlLCBjaGFuZ2UgZGlyZWN0b3J5IHRvIHRoZQoJb2JqZWN0IGRpcmVjdG9yeSBvZiB0aGUgbWFpbiBwcm9qZWN0IGZpbGUuIFdoZW4gdXNpbmcgYSBwcm9qZWN0IGZpbGUsCgl0ZXN0IGlmIHRoZXJlIGFyZSBhbnkgcmVsYXRpdmUgc2VhcmNoIHBhdGguIEZhaWwgaWYgdGhlcmUgYXJlIGFueS4KCVdoZW4gdXNpbmcgYSBwcm9qZWN0IGZpbGUsIGZhaWwgaWYgc3BlY2lmaWVkIGV4ZWN1dGFibGUgaXMgcmVsYXRpdmUKCXBhdGggd2l0aCBkaXJlY3RvcnkgaW5mb3JtYXRpb24sIGFuZCBwcmVwZW5kIGV4ZWN1dGFibGUsIGlmIG5vdAoJc3BlY2lmaWVkIGFzIGFuIGFic29sdXRlIHBhdGgsIHdpdGggdGhlIGV4ZWMgZGlyZWN0b3J5LiAgTWFrZSBzdXJlCgl0aGF0IG9ubHkgb25lIC1vIHN3aXRjaCBpcyB0cmFuc21pdHRlZCB0byB0aGUgbGlua2VyLgoKCSogcHJqLWF0dHIuYWRiIChJbml0aWFsaXphdGlvbl9EYXRhKTogQWRkIHByb2plY3QgYXR0cmlidXRlIEV4ZWNfRGlyCgoJKiBwcmotbm1zYy5hZGI6CgkoQWRhX0NoZWNrKTogR2V0IFNwZWNfU3VmZml4X0xvYyBhbmQgSW1wbF9TdWZmaXhfTG9jLAoJd2hlbiB1c2luZyBhIG5vbiBzdGFuZGFyZCBuYW1pbmcgc2NoZW1lLgoJKENoZWNrX0FkYV9OYW1pbmdfU2NoZW1lKTogTWFrZSBzdXJlIHRoYXQgZXJyb3IgbWVzc2FnZXMKCWRvIG5vdCByYWlzZSBleGNlcHRpb25zLgoJKElzX0lsbGVnYWxfQXBwZW5kKTogUmV0dXJuIFRydWUgaWYgdGhlcmUgaXMgbm8gZG90IGluIHRoZSBzdWZmaXguCgkoTGFuZ3VhZ2VfSW5kZXBlbmRlbnRfQ2hlY2spOiBDaGVjayB0aGUgZXhlYyBkaXJlY3RvcnkuCgoJKiBwcmouYWRiIChQcm9qZWN0X0VtcHR5KTogQWRkIG5ldyBjb21wb25lbnQgRXhlY19EaXJlY3RvcnkKCgkqIHByai5hZHM6CgkoRGVmYXVsdF9BZGFfU3BlY19TdWZmaXgsIERlZmF1bHRfQWRhX0ltcGxfU3VmZml4KTogQWRkIGRlZmF1bHRzLgoJKFByb2plY3RfRGF0YSk6IEFkZCBjb21wb25lbnQgRXhlY19EaXJlY3RvcnkKCgkqIHNuYW1lcy5hZGI6IFVwZGF0ZWQgdG8gbWF0Y2ggc25hbWVzLmFkcyByZXZpc2lvbiAxLjIxNQoKCSogc25hbWVzLmFkczogQWRkZWQgRXhlY19EaXIKCjIwMDEtMTItMTcgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBtYWtlLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBwcmotbm1zYy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc25hbWVzLmFkYjogVXBkYXRlZCB0byBtYXRjaCBzbmFtZXMuYWRzCgoJKiBzbmFtZXMuYWRzOiBBbHBoZWJldGl6ZSBlbnRyaWVzIGZvciBwcm9qZWN0IGZpbGUKCjIwMDEtMTItMTcgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiB0cmFucy5jIChwcm9jZXNzX2ZyZWV6ZV9lbnRpdHkpOiBEbyBub3RoaW5nIGlmIHRoZSBlbnRpdHkgaXMgYQoJc3VicHJvZ3JhbSB0aGF0IHdhcyBhbHJlYWR5IGVsYWJvcmF0ZWQuCgoyMDAxLTEyLTE3ICBSaWNoYXJkIEtlbm5lciA8a2VubmVyQGduYXQuY29tPgoKCSogZGVjbC5jIChnbmF0X3RvX2dudV9lbnRpdHksIG9iamVjdCk6IERvIG5vdCBiYWNrLWFubm90YXRlIEFsaWdubWVudAoJYW5kIEVzaXplIGlmIG9iamVjdCBpcyByZWZlcmVuY2VkIHZpYSBwb2ludGVyLgoKMjAwMS0xMi0xNyAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiIChBbmFseXplX1ZhcmlhbnRfUGFydCk6IGNoZWNrIHRoYXQgdHlwZSBvZiBkaXNjcmltaW5hbnQKCWlzIGRpc2NyZXRlIGJlZm9yZSBhbmFseXppbmcgY2hvaWNlcy4KCjIwMDEtMTItMTcgIEpvZWwgQnJvYmVja2VyIDxicm9iZWNrZUBnbmF0LmNvbT4KCgkqIGJpbmRnZW4uYWRiIChHZW5fT3V0cHV0X0ZpbGVfQWRhKTogR2VuZXJhdGUgYSBuZXcgQy1saWtlIHN0cmluZwoJY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgQWRhIE1haW4gUHJvZ3JhbS4gVGhpcyBzdHJpbmcgaXMgbWFpbmx5CglpbnRlbmRlZCBmb3IgdGhlIGRlYnVnZ2VyLgoJKEdlbl9PdXRwdXRfRmlsZV9DKTogRG8gdGhlIGVxdWl2YWxlbnQgY2hhbmdlIHdoZW4gZ2VuZXJhdGluZyBhIEMgZmlsZS4KCjIwMDEtMTItMTcgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBhbGkuYWRiOiBTZXQgbmV3IER1bW15X0VudHJ5IGZpZWxkIGluIGRlcGVuZGVuY3kgZW50cnkKCgkqIGFsaS5hZHM6IEFkZCBEdW1teV9FbnRyeSBmaWVsZCB0byBzb3VyY2UgZGVwZW5kZW5jeSB0YWJsZQoKCSogYmNoZWNrLmFkYiAoQ2hlY2tfQ29uc2lzdGVuY3kpOiBJZ25vcmUgZHVtbXkgRCBsaW5lcwoKCSogbGliLXdyaXQuYWRiIChXcml0X0FMSSk6IFdyaXRlIGR1bW15IEQgbGluZXMgZm9yIG1pc3Npbmcgc291cmNlIGZpbGVzCgoJKiBsaWItd3JpdC5hZHM6IERvY3VtZW50IGR1bW15IEQgbGluZXMgZm9yIG1pc3NpbmcgZmlsZXMuCgoJKiB0eXBlcy5hZHM6IChEdW1teV9UaW1lX1N0YW1wKTogTmV3IHZhbHVlIGZvciBub24tZXhpc3RhbnQgZmlsZXMKCjIwMDEtMTItMTcgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBhbGkuYWRiOiBUeXBlIHJlZmVyZW5jZSBkb2VzIG5vdCByZXNldCBjdXJyZW50IGZpbGUuCgoJKiBhbGkuYWRiOiBSZWNvZ25pemUgYW5kIHNjYW4gcmVuYW1pbmcgcmVmZXJlbmNlCgoJKiBhbGkuYWRzOiBBZGQgc3BlYyBmb3Igc3RvcmluZyByZW5hbWluZyByZWZlcmVuY2VzLgoKCSogbGliLXhyZWYuYWRzOiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgaGFuZGxpbmcgb2YgcmVuYW1pbmcgcmVmZXJlbmNlcwoKCSogbGliLXhyZWYuYWRiOiBJbXBsZW1lbnQgb3V0cHV0IG9mIHJlbmFtaW5nIHJlZmVyZW5jZS4KCgkqIGNoZWNrcy5hZGI6CgkoRGV0ZXJtaW5lX1JhbmdlKTogRG9jdW1lbnQgbG9jYWwgdmFyaWFibGVzCgkoRGV0ZXJtaW5lX1JhbmdlKTogTWFrZSBzdXJlIEhib3VuZCBpcyBpbml0aWFsaXplZC4gSXQgbG9va3MgYXMgdGhvdWdoCgkgdGhlcmUgY291bGQgYmUgYSByZWFsIHByb2JsZW0gaGVyZSB3aXRoIGFuIHVuaW5pdGlhbGl6ZWQgcmVmZXJlbmNlCgkgdG8gSGJvdW5kLCBidXQgbm8gYWN0dWFsIGV4YW1wbGUgb2YgZmFpbHVyZSBoYXMgYmVlbiBmb3VuZC4KCjIwMDEtMTItMTcgIExhdXJlbnQgUGF1dGV0IDxwYXV0ZXRAZ25hdC5jb20+CgoJKiBnLXNvY2tldC5hZHM6CglGaXggY29tbWVudCBvZiBTaHV0ZG93bl9Tb2NrZXQgYW5kIENsb3NlX1NvY2tldC4gVGhlc2UgZnVuY3Rpb25zCglzaG91bGQgbm90IGZhaWwgc2lsZW50bHkgYmVjYXVzZSBpZiB0aGV5IGFyZSBjYWxsZWQgdHdpY2UsIHRoaXMKCXByb2JhYmx5IG1lYW5zIHRoYXQgdGhlcmUgaXMgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgdXNlciBwcm9ncmFtLgoJQW55d2F5LCB0aGlzIGJlaGF2aW91ciBpcyBjb25zaXN0ZW50IHdpdGggdGhlIHJlc3Qgb2YgdGhpcyB1bml0LgoJV2hlbiBhbiBlcnJvciBvY2N1cnMsIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgd2l0aCB0aGUgZXJyb3IgbWVzc2FnZQoJYXMgZXhjZXB0aW9uIG1lc3NhZ2UuCgoyMDAxLTEyLTE3ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogZnJvbnRlbmQuYWRiOiBNb3ZlIGNhbGwgdG8gQ2hlY2tfVW51c2VkX1dpdGhzIGZyb20gRnJvbnRlbmQsIHNvCgl0aGF0IGl0IGhhcHBlbnMgYmVmb3JlIG1vZGlmaWNhdGlvbiBvZiBTbG9jIHZhbHVlcyBmb3IgLWduYXRELgoKCSogZ25hdDFkcnYuYWRiOiBNb3ZlIGNhbGwgdG8gQ2hlY2tfVW51c2VkX1dpdGhzIHRvIEZyb250ZW5kLAoJc28gdGhhdCBpdCBoYXBwZW5zIGJlZm9yZSBtb2RpZmljYXRpb24gb2YgU2xvYyB2YWx1ZXMgZm9yIC1nbmF0RC4KCgkqIHN3aXRjaC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMi0xNSAgUmljaGFyZCBIZW5kZXJzb24gIDxydGhAcmVkaGF0LmNvbT4KCgkqIHNlbV9jaDcuYWRiOiBXcmFwIGNvbW1lbnQuCgoyMDAxLTEyLTE2ICBKb3NlcGggUy4gTXllcnMgIDxqc20yOEBjYW0uYWMudWs+CgoJKiA1YXRhcHJvcC5hZGIsIDVhdHBvcHNwLmFkYiwgNWZ0YXByb3AuYWRiLCA1Z21hc3RvcC5hZGIsCgk1Z3RhcHJvcC5hZGIsIDVodGFwcm9wLmFkYiwgNWl0YXByb3AuYWRiLCA1bGludG1hbi5hZGIsCgk1b21hc3RvcC5hZGIsIDVvb3NpbnRlLmFkYiwgNW90YXByb3AuYWRiLCA1c3RhcHJvcC5hZGIsCgk1dmludGVyci5hZGIsIDV2dGFwcm9wLmFkYiwgNXZ0cG9wZGUuYWRiLCA1d2ludG1hbi5hZGIsCgk1d3RhcHJvcC5hZGIsIDV6aW50ZXJyLmFkYiwgNXp0YXByb3AuYWRiLCA2dmNzdHJlYS5hZGIsCgk3c2ludG1hbi5hZGIsIDdzdGFwcm9wLmFkYiwgOWRycGMuYWRiLCBDaGFuZ2VMb2csIE1ha2VmaWxlLmluLAoJYS1leGNlcHQuYWRiLCBhLXRhZ3MuYWRzLCBhLXRhc2F0dC5hZGIsIGEtdGVpb2VkLmFkYiwKCWEtdGV4dGlvLmFkcywgYS13aXRlaW8uYWRzLCBhLXd0ZWRpdC5hZGIsIGFsaS5hZHMsIGNvbXBlcnIuYWRiLAoJY3N0YW5kLmFkYiwgZWluZm8uYWRzLCBlcnJvdXQuYWRiLCBleHBfY2gxMS5hZGIsIGV4cF9jaDIuYWRiLAoJZXhwX2NoMy5hZGIsIGV4cF9jaDQuYWRiLCBleHBfY2g1LmFkYiwgZXhwX2NoNi5hZGIsIGV4cF9jaDkuYWRiLAoJZXhwX3V0aWwuYWRiLCBleHBfdXRpbC5hZHMsIGZuYW1lLXVmLmFkYiwgZy1jZ2kuYWRzLCBnLWV4Y3RyYS5hZHMsCglnLWV4cGVjdC5hZHMsIGctcmVnaXN0LmFkYiwgZy1zcGlwYXQuYWRiLCBnbmF0Y2hvcC5hZGIsCglnbmF0bGluay5hZGIsIGduYXRscy5hZGIsIGduYXRtYWluLmFkYiwgZ25hdG1lbS5hZGIsIGluaXQuYywKCW1ha2UuYWRiLCBtYWtlLmFkcywgbWRsbHRvb2wuYWRiLCBubGlzdHMuYWRzLCBvc2ludC5hZHMsCglwYXItY2gzLmFkYiwgcGFyLWNoNC5hZGIsIHBhci1jaDUuYWRiLCBwYXItY2g2LmFkYiwgcGFyLmFkYiwKCXJlcGluZm8uYWRiLCBzLWZhdGZsdC5hZHMsIHMtZmF0bGZsLmFkcywgcy1mYXRsbGYuYWRzLAoJcy1mYXRzZmwuYWRzLCBzLWZpbmltcC5hZGIsIHMtZmluaW1wLmFkcywgcy1pbnRlcnIuYWRiLAoJcy1zZWNzdGEuYWRzLCBzLXNoYXN0by5hZHMsIHMtc3RhbGliLmFkYiwgcy1zdGFsaWIuYWRzLAoJcy10YXJlc3QuYWRzLCBzLXRhc2RlYi5hZGIsIHMtdGFzc3RhLmFkYiwgcy10YXNzdGEuYWRzLAoJcy12YWZsb3AuYWRzLCBzY2Fucy5hZHMsIHNjbi5hZGIsIHNlbS5hZHMsIHNlbV9hZ2dyLmFkYiwKCXNlbV9hdHRyLmFkYiwgc2VtX2Nhc2UuYWRzLCBzZW1fY2gxMC5hZGIsIHNlbV9jaDEyLmFkYiwKCXNlbV9jaDEzLmFkYiwgc2VtX2NoMy5hZGIsIHNlbV9jaDMuYWRzLCBzZW1fY2g1LmFkYiwgc2VtX2NoNy5hZGIsCglzZW1fY2g4LmFkYiwgc2VtX2NoOC5hZHMsIHNlbV90eXBlLmFkYiwgc2VtX3V0aWwuYWRzLCBzaW5mby5hZHMsCglzcHJpbnQuYWRiLCB0YnVpbGQuYWRzLCB0eXBlcy5hZHMsIHV0aWxzLmMsIHhlaW5mby5hZGI6IEZpeAoJc3BlbGxpbmcgZXJyb3JzLgoKMjAwMS0xMi0xNCAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIG9zaW50LmFkYihDcmVhdGVfRGVidWdfRmlsZSk6IFdoZW4gYW4gb2JqZWN0IGZpbGUgaXMgc3BlY2lmaWVkLAoJcHV0IHRoZSAuZGcgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIG9iamVjdCBmaWxlLgoKMjAwMS0xMi0xNCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIG9zaW50LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBsaWIteHJlZi5hZGIgKE91dHB1dF9JbnN0YW50aWF0aW9uKTogTmV3IHByb2NlZHVyZSB0byBnZW5lcmF0ZQoJaW5zdGFudGlhdGlvbiByZWZlcmVuY2VzLgoKCSogbGliLXhyZWYuYWRzOiBBZGQgZG9jdW1lbnRhdGlvbiBvZiBoYW5kbGluZyBvZiBnZW5lcmljIHJlZmVyZW5jZXMuCgoJKiBhbGkuYWRiIChSZWFkX0luc3RhbnRpYXRpb25fUmVmKTogTmV3IHByb2NlZHVyZSB0byByZWFkCglpbnN0YW50aWF0aW9uIHJlZmVyZW5jZXMKCgkqIGFsaS5hZHM6IEFkZCBzcGVjIGZvciBzdG9yaW5nIGluc3RhbnRpYXRpb24gcmVmZXJlbmNlcwoKCSogYmluZHVzZy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogc3dpdGNoLmFkYjogQWRkIGVudHJ5IGZvciBMYXRpbi01IChDeXJpbGxpYyBJU08tODg1OS01KQoKCSogdXNhZ2UuYWRiOiBBZGQgZW50cnkgZm9yIExhdGluLTUgKEN5cmlsbGljIElTTy04ODU5LTUpCgoJKiBnbmF0Y21kLmFkYjogQWRkIGVudHJ5IGZvciBMYXRpbi01IChDeXJpbGxpYyBJU08tODg1OS01KQoKCSogY3NldHMuYWRiOiBBZGQgZW50cnkgZm9yIExhdGluLTUgKEN5cmlsbGljIElTTy04ODU5LTUpCgoJKiBjc2V0cy5hZHM6CglGaXggaGVhZGVyIGZvcm1hdAoJQWRkIDIwMDEgdG8gY29weXJpZ2h0IGRhdGUKCUFkZCBlbnRyeSBmb3IgTGF0aW4tNSAoQ3lyaWxsaWMgSVNPLTg4NTktNSkKCjIwMDEtMTItMTQgIE1hdHQgR2luZ2VsbCA8Z2luZ2VsbEBnbmF0LmNvbT4KCgkqIGFkYWludC5jOiBta3RlbXAgaXMgYSBtYWNybyBvbiBMeW54IGFuZCBjYW4gbm90IGJlIHVzZWQgYXMgYW4KCWV4cHJlc3Npb24uCgoyMDAxLTEyLTE0ICBSaWNoYXJkIEtlbm5lciA8a2VubmVyQGduYXQuY29tPgoKCSogbWlzYy5jIChnbmF0X2V4cGFuZF9jb25zdGFudCk6IERvIG5vdCBzdHJpcCBVTkNIRUNLRURfQ09OVkVSVF9FWFBSCglpZiBvcGVyYW5kIGlzIENPTlNUUlVDVE9SLgoKMjAwMS0xMi0xNCAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHRyYW5zLmMgKHRyZWVfdHJhbnNmb3JtLCBjYXNlIE5fQXNzaWdubWVudF9TdGF0ZW1lbnQpOiBTZXQgbGluZW5vCgliZWZvcmUgZW1pdGluZyBjaGVjayBvbiByaWdodC1oYW5kIHNpZGUsIHNvIHRoYXQgZXhjZXB0aW9uIGluZm9ybWF0aW9uCglpcyBjb3JyZWN0LgoKMjAwMS0xMi0xNCAgUmljaGFyZCBLZW5uZXIgPGtlbm5lckBnbmF0LmNvbT4KCgkqIHV0aWxzLmMgKGNyZWF0ZV92YXJfZGVjbCk6IFRocm93IGF3YXkgaW5pdGlhbGl6aW5nIGV4cHJlc3Npb24KCWlmIGp1c3QgYW5ub3RhdGluZyB0eXBlcyBhbmQgbm9uLWNvbnN0YW50LgoKMjAwMS0xMi0xNCAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai1ubXNjLmFkYjogKEFkYV9DaGVjayk6IE1pZ3JhdGUgZHJvbSBBZGFfRGVmYXVsdF8uLi4gdG8KCURlZmF1bHRfQWRhXy4uLgoKCSogcHJqLmFkYjogKEFkYV9EZWZhdWx0X1NwZWNfU3VmZml4LCBBZGFfRGVmYXVsdF9JbXBsX1N1ZmZpeCk6CglSZW1vdmUgZnVuY3Rpb25zLgoJKERlZmF1bHRfQWRhX1NwZWNfU3VmZml4LCBEZWZhdWx0X0FkYV9JbXBsX1N1ZmZpeCk6IE1vdmUgdG8gc3BlYy4KCgkqIHByai5hZHM6IChBZGFfRGVmYXVsdF9TcGVjX1N1ZmZpeCwgQWRhX0RlZmF1bHRfSW1wbF9TdWZmaXgpOgoJUmVtb3ZlIGZ1bmN0aW9ucy4KCShEZWZhdWx0X0FkYV9TcGVjX1N1ZmZpeCwgRGVmYXVsdF9BZGFfSW1wbF9TdWZmaXgpOiBNb3ZlIGZyb20gYm9keS4KCjIwMDEtMTItMTYgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIENoYW5nZUxvZzogUmVtb3ZlIHBpZWNlIG9mIGRpZmYgb3V0cHV0LgoKMjAwMS0xMi0xNCAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogY29uZmlnLWxhbmcuaW46IFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlCgoJKiBsYXlvdXQuYWRiOiBSZW1vdmUgY29tbWVudGVkIG91dCBjb2RlLgoKCSogbWRsbGZpbGUuYWRzOiBVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4gRml4IGhlYWRlciBmb3JtYXQuCgoJKiBzZW1fY2FzZS5hZHM6IExpa2V3aXNlLgoKCSogc2VtX2NoMy5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDEtMTItMTIgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIGZyZWV6ZS5hZHM6IFVwZGF0ZSBjb3B5cmlnaHQgZGF0ZS4KCgkqIGctY29tbGluLmFkczogTWlub3IgcmVmb3JtYXR0aW5nLgoKCSogZ25hdC1zdHlsZS50ZXhpOiBGaXggdHlwby4KCjIwMDEtMTItMTIgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqICBlaW5mby5oOiBSZWdlbmVyYXRlLgoKMjAwMS0xMi0xMiAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoU2F2ZV9FbnRpdHlfRGVzY2VuZGFudCk6IFVzZSBzeW50YWN0aWMgZmllbGQgbmFtZXMKCW9uIGtub3duIG5vZGUgdHlwZXMsIHJhdGhlciB0aGFuIHVudHlwZWQgZmllbGRzLiBGdXJ0aGVyIGNsZWFudXBzLgoKMjAwMS0xMi0xMiAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYjoKCShTYXZlX0VudGl0eV9EZXNjZW5kYW50KTogTWlub3IgY29tbWVudCB1cGRhdGUuCgkoQ29weV9HZW5lcmljX05vZGUpOiBEZWFsIHdpdGggaW5jb3JyZWN0IHJlZmVyZW5jZSB0byBBc3NvY2lhdGVkX05vZGUKCSBvZiBhbiBOX0F0dHJpYnV0ZV9SZWZlcmVuY2Ugbm9kZS4gQXMgcGVyIG5vdGUgYmVsb3csIHRoaXMgZG9lcyBub3QKCWVsaW1pbmF0ZSBuZWVkIGZvciBBc3NvY2lhdGVkX05vZGUgaW4gYXR0cmlidXRlIHJlZiBub2Rlcy4KCShBc3NvY2lhdGVkX05vZGUpOiBEb2N1bWVudGF0aW9uIGV4cGxpY2l0bHkgbWVudGlvbnMgYXR0cmlidXRlCglyZWZlcmVuY2Ugbm9kZXMsIHNpbmNlIHRoaXMgZmllbGQgaXMgdXNlZCBpbiBzdWNoIG5vZGVzLgoKCSogc2VtX2NoMTIuYWRiIChBc3NvY2lhdGVkX05vZGUpOiBNaW5vciBkb2N1bWVudGF0aW9uIGNsZWFudXAuCgoyMDAxLTEyLTEyICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogcy1zdGFsaWIuYWRiOiBBZGQgbW9yZSBjb21tZW50cyBvbiB3aXRoIHN0YXRlbWVudHMgYmVpbmcgbmVlZGVkCgoJKiBwYXItY2gxMi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcHJqLWRlY3QuYWRzOiBGaXggY29weXJpZ2h0IGhlYWRlcgoKCSogcy1hcml0NjQuYWRiIChNdWx0aXBseV9XaXRoX092ZmxvX0NoZWNrKTogRml4IGNhc2Ugd2hlcmUgYm90aAoJaW5wdXRzIGZpdCBpbiAzMiBiaXRzLCBidXQgdGhlIHJlc3VsdCBzdGlsbCBvdmVyZmxvd3MuCgoJKiBzLWZhdGdlbi5hZHM6IE1pbm9yIGNvbW1lbnQgaW1wcm92ZW1lbnQKCjIwMDEtMTItMTIgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2g0LmFkYiAoQW5hbHl6ZV9TZWxlY3RlZF9Db21wb25lbnQpOiBJZiB0aGUgcHJlZml4IGlzIG9mIGEKCWZvcm1hbCBkZXJpdmVkIHR5cGUsIGxvb2sgZm9yIGFuIGluaGVyaXRlZCBjb21wb25lbnQgZnJvbSB0aGUgZnVsbAoJdmlldyBvZiB0aGUgcGFyZW50LCBpZiBhbnkuCgoyMDAxLTEyLTEyICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogY2hlY2tzLmFkcyAoQXBwbHlfQWxpZ25tZW50X0NoZWNrKTogTmV3IHByb2NlZHVyZS4KCgkqIGV4cF9jaDEzLmFkYiAoRXhwYW5kX05fRnJlZXplX0VudGl0eSk6IEdlbmVyYXRlIGR5bmFtaWMgY2hlY2sgdG8KCWVuc3VyZSB0aGF0IHRoZSBhbGlnbm1lbnQgb2Ygb2JqZWN0cyB3aXRoIGFkZHJlc3MgY2xhdXNlcyBpcwoJYXBwcm9wcmlhdGUsIGFuZCByYWlzZSBQRSBpZiBub3QuCgoJKiBleHBfdXRpbC5hZHMgKE11c3RfQmVfQWxpZ25lZCk6IFJlbW92ZWQsIHJlcGxhY2VkIGJ5CglFeHBfUGFrZC5Lbm93bl9BbGlnbmVkX0Vub3VnaAoKCSogbWRsbGZpbGUuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIG1saWItZmlsLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAxLTEyLTEyICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogZXhwX2NoOC5hZGIgKEV4cGFuZF9OX09iamVjdF9SZW5hbWluZ19EZWNsYXJhdGlvbik6IEV4dGVuZCBwcmV2aW91cwoJZml4IHRvIGFueSBjb21wb25lbnQgcmVmZXJlbmNlIGlmIGVuY2xvc2luZyByZWNvcmQgaGFzIG5vbi1zdGFuZGFyZAoJcmVwcmVzZW50YXRpb24uCgoyMDAxLTEyLTEyICBWaW5jZW50IENlbGllciA8Y2VsaWVyQGduYXQuY29tPgoKCSogZy1kaXJvcGUuYWRzIChGaW5kLCBXaWxkY2FyZF9JdGVyYXRvcik6IE1vdmVkIHRvIGNoaWxkIHBhY2thZ2UKCUl0ZXJhdGlvbgoKMjAwMS0xMi0xMiAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIGZyZWV6ZS5hZHM6IE1ha2UgRnJlZXplX0ZpeGVkX1BvaW50X1R5cGUgdmlzaWJsZSwgZm9yIHVzZSBpbgoJc2VtX2F0dHIuCgoyMDAxLTEyLTEyICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogaW1wdW5pdC5hZGI6IEFkZCBlbnRyeSBmb3IgR05BVC5EaXJlY3RvcnlfT3BlcmF0aW9ucy5JdGVyYXRpb24KCjIwMDEtMTItMTIgIEVtbWFudWVsIEJyaW90IDxicmlvdEBnbmF0LmNvbT4KCgkqIGctcmVnZXhwLmFkYjogUmVtb3ZlIGFsbCBkZWJ1ZyBjb2RlLCBzaW5jZSBpdCBpc24ndCByZXF1aXJlZCBhbnltb3JlLAoJYW5kIGl0IGFkZHMgZGVwZW5kZW5jaWVzIHRvIHN5c3RlbS5pby4KCjIwMDEtMTItMTIgIFBhc2NhbCBPYnJ5IDxvYnJ5QGduYXQuY29tPgoKCSogZy1kaXJvcGUuYWRiIChFeHBhbmRfUGF0aC5WYXIpOiBDb3JyZWN0bHkgZGV0ZWN0IGVuZCBvZgoJdmFyaWFibGUgbmFtZS4KCjIwMDEtMTItMTEgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMC5hZGIgKEluc3RhbGxfV2l0aGVkX1VuaXQpOiBJZiB0aGUgdW5pdCBpcyBhIGdlbmVyaWMgaW5zdGFuY2UKCXRoYXQgaXMgdGhlIHBhcmVudCBvZiBvdGhlciBnZW5lcmljcywgdGhlIGluc3RhbmNlIGJvZHkgcmVwbGFjZXMgdGhlCglpbnN0YW5jZSBub2RlLiAgUmV0cmlldmUgdGhlIGluc3RhbmNlIG9mIHRoZSBzcGVjLCB3aGljaCBpcyB0aGUgb25lCgl0aGF0IGlzIHZpc2libGUgaW4gY2xpZW50cyBhbmQgd2l0aGluIHRoZSBib2R5LgoKMjAwMS0xMi0xMSAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIGduYXRtYWluLmFkYjogSW5pdGlhbCB2ZXJzaW9uLgoKCSogZ25hdG1haW4uYWRzOiBJbml0aWFsIHZlcnNpb24uCgoJKiBwcmotYXR0ci5hZGIgKEluaXRpYWxpc2F0aW9uX0RhdGEpOiBBZGQgcGFja2FnZSBHbmF0c3R1Yi4KCgkqIHNuYW1lcy5hZGI6IFVwZGF0ZWQgdG8gbWF0Y2ggc25hbWVzLmFkcy4KCgkqIHNuYW1lcy5hZHM6IEFkZGVkIEduYXRzdHViLgoKMjAwMS0xMi0xMSAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai1hdHRyLmFkYiAoSW5pdGlhbGl6YXRpb25fRGF0YSk6IENoYW5nZSBuYW1lIGZyb20KCUluaXRpYWxpc2F0aW9uX0RhdGEuCgoyMDAxLTEyLTExICBFbW1hbnVlbCBCcmlvdCA8YnJpb3RAZ25hdC5jb20+CgoJKiBnLXJlZ3BhdC5hZGIgKFBhcnNlX0xpdGVyYWwpOiBQcm9wZXJseSBoYW5kbGUgc2ltcGxlIG9wZXJhdG9ycyA/LAoJKyBhbmQgKiBhcHBsaWVkIHRvIGJhY2tzbGFzaGVkIGV4cHJlc3Npb25zIGxpa2UgXHIuCgoyMDAxLTEyLTExICBWYXNpbGl5IEZvZmFub3YgPGZvZmFub3ZAZ25hdC5jb20+CgoJKiBnLW9zX2xpYi5hZHM6IFN0cmluZ19MaXN0IHR5cGUgYWRkZWQsIEFyZ3VtZW50X0xpc3QgdHlwZSBpcyBub3cKCXN1YnR5cGUgb2YgU3RyaW5nX0xpc3QuCgoyMDAxLTEyLTExICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogZy1vc19saWIuYWRzOiBDaGFuZ2UgY29weXJpZ2h0IHRvIEZTRgoJQWRkIGNvbW1lbnRzIGZvciBTdHJpbmdfTGlzdCB0eXBlCgoyMDAxLTEyLTExICBWaW5jZW50IENlbGllciA8Y2VsaWVyQGduYXQuY29tPgoKCSogZy1kaXJvcGUuYWRiIChFeHBhbmRfUGF0aCk6IEZpeCBidWcuICh3cm9uZyBsZW5ndGggd2hlbiBhZGRpbmcgYQoJc3RyaW5nIHRvIHRoZSBidWZmZXIpLgoKMjAwMS0xMi0xMSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIGZyZWV6ZS5hZGI6IE1ha2UgRnJlZXplX0ZpeGVkX1BvaW50X1R5cGUgdmlzaWJsZSwgZm9yIHVzZSBpbgoJc2VtX2F0dHIuCgoJKiBzZW1fYXR0ci5hZGI6IFNpbXBsaWZ5IHByZXZpb3VzIGZpeCBmb3IgQWRkcmVzcy4KCShTZXRfQm91bmRzKTogSWYgcHJlZml4IGlzIGEgbm9uLWZyb3plbiBmaXhlZC1wb2ludCB0eXBlLCBmcmVlemUgbm93LAoJdG8gYXZvaWQgYW5vbWFsaWVzIHdoZXJlIHRoZSBib3VuZCBvZiB0aGUgdHlwZSBhcHBlYXJzIHRvIHJhaXNlCgljb25zdHJhaW50IGVycm9yLgoKMjAwMS0xMi0xMSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGxpYi14cmVmLmFkYiAoT3V0cHV0X1JlZnMpOiBNYWtlIHN1cmUgcG9pbnRlcnMgYXJlIGFsd2F5cyBwcm9wZXJseQoJaGFuZGxlZC4KCjIwMDEtMTItMTEgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKEFuYWx5emVfU3VicHJvZ3JhbV9JbnN0YW50aWF0aW9uKTogQ2hlY2sgZm9yIGEKCXJlbmFtZWQgdW5pdCBiZWZvcmUgY2hlY2tpbmcgZm9yIHJlY3Vyc2l2ZSBpbnN0YW50aWF0aW9ucy4KCjIwMDEtMTItMTEgIEVtbWFudWVsIEJyaW90IDxicmlvdEBnbmF0LmNvbT4KCgkqIHByai5hZHM6IEFkZCBjb21tZW50cyBmb3Igc29tZSBvZiB0aGUgZmllbGRzLgoKMjAwMS0xMi0xMSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGxpYi14cmVmLmFkYiAoT3V0cHV0X1JlZnMpOiBEb24ndCBvdXRwdXQgdHlwZSByZWZlcmVuY2VzIG91dHNpZGUKCXRoZSBtYWluIHVuaXQgaWYgdGhleSBhcmUgbm90IG90aGVyd2lzZSByZWZlcmVuY2VkLgoKMjAwMS0xMi0xMSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9hdHRyLmFkYiAoQW5hbHl6ZV9hdHRyaWJ1dGUsIGNhc2UgQWRkcmVzcyBhbmQgU2l6ZSk6IFNpbXBsaWZ5Cgljb2RlIGFuZCBkaWFnbm9zZSBhZGRpdGlvbmFsIGlsbGVnYWwgdXNlcwoKCSogc2VtX3V0aWwuYWRiIChJc19PYmplY3RfUmVmZXJlbmNlKTogQW4gaW5kZXhlZCBjb21wb25lbnQgaXMgYW4KCW9iamVjdCBvbmx5IGlmIHRoZSBwcmVmaXggaXMuCgoyMDAxLTEyLTExICBWaW5jZW50IENlbGllciA8Y2VsaWVyQGduYXQuY29tPgoKCSogZy1kaW9waXQuYWRiOiBJbml0aWFsIHZlcnNpb24uCgoJKiBnLWRpb3BpdC5hZHM6IEluaXRpYWwgdmVyc2lvbi4KCgkqIGctZGlyb3BlLmFkYjoKCShFeHBhbmRfUGF0aCk6IEF2b2lkIHVzZSBvZiBVbmJvdW5kZWRfU3RyaW5nCgkoRmluZCwgV2lsZGNhcmRfSXRlcmF0b3IpOiBNb3ZlZCB0byBjaGlsZCBwYWNrYWdlIEl0ZXJhdGlvbgoKCSogTWFrZWZpbGUuaW46IEFkZGVkIGctZGlvcGl0Lm8gdG8gR05BVFJUTF9OT05UQVNLSU5HX09CSlMKCjIwMDEtMTItMTEgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fYXR0ci5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMi0xMSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiOiBDbGFyaWZ5IHNvbWUgPz8/LgoKMjAwMS0xMi0xMSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGV4cF91dGlsLmFkYiAoTXVzdF9CZV9BbGlnbmVkKTogUmVtb3ZlZCwgcmVwbGFjZWQgYnkKCUV4cF9QYWtkLktub3duX0FsaWduZWRfRW5vdWdoCgoJKiBzZW1fY2gxMy5hZGIgKENoZWNrX0FkZHJlc3NfQWxpZ25tZW50KTogUmVtb3ZlZCwgZXh0ZW5kZWQKCXZlcnNpb24gaXMgbW92ZWQgdG8gRXhwX0NoMTMuCgoyMDAxLTEyLTExICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogZWluZm8uYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIGV4cF9jaDUuYWRiOiBBZGQgY29tbWVudCBmb3IgcHJldmlvdXMuY2hhbmdlCgoJKiBhbGkuYWRiOiBOZXcgaW50ZXJmYWNlIGZvciBleHRlbmRlZCB0eXBlcmVmIHN0dWZmLgoKCSogYWxpLmFkczogTmV3IGludGVyZmFjZSBmb3IgdHlwZXJlZiBzdHVmZi4KCgkqIGNoZWNrcy5hZGIgKEFwcGx5X0FsaWdubWVudF9DaGVjayk6IE5ldyBwcm9jZWR1cmUuCgoJKiBkZWJ1Zy5hZGI6IEFkZCAtZ25hdGRNIGZvciBtb2RpZmllZCBBTEkgb3V0cHV0CgoJKiBleHBfcGFrZC5hZGIgKEtub3duX0FsaWduZWRfRW5vdWdoKTogUmVwbGFjZXMgS25vd25fQWxpZ25lZF9Fbm91Z2guCgoJKiBsaWIteHJlZi5hZGI6IEV4dGVuZCBnZW5lcmF0aW9uIG9mIDwuLj4gbm90YXRpb24gdG8gY292ZXIKCXN1YnR5cGUvb2JqZWN0IHR5cGVzLiBOb3RlIHRoYXQgdGhpcyBpcyBhIGNvbXBsZXRlIHJld3JpdGUsCglnZXR0aW5nIHJpZCBvZiB0aGUgdmVyeSBuYXN0eSBxdWFkcmF0aWMgYWxnb3JpdGhtIHByZXZpb3VzbHkKCXVzZWQgZm9yIGRlcml2ZWQgdHlwZSBvdXRwdXQuCgoJKiBsaWIteHJlZi5hZHM6IEV4dGVuZCBkZXNjcmlwdGlvbiBvZiA8Li4+IG5vdGF0aW9uIHRvIGNvdmVyCglzdWJ0eXBlL29iamVjdCB0eXBlcy4gVXNlcyB7Li59IGZvciB0aGVzZSBvdGhlciBjYXNlcy4KCUFsc28gdXNlICguLikgZm9yIHBvaW50ZXIgdHlwZXMuCgoJKiBzZW1fdXRpbC5hZGIgKENoZWNrX1BvdGVudGlhbGx5X0Jsb2NraW5nX09wZXJhdGlvbik6IFNsaWdodCBjbGVhbnVwLgoKCSogZXhwX3Bha2QuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuICBOb3RlIHRoYXQgcHJldm91cyBSSCBzaG91bGQgc2F5OgoJKEtub3duX0FsaWduZWRfRW5vdWdoKTogUmVwbGFjZXMgTXVzdF9CZV9BbGlnbmVkLgoKMjAwMS0xMi0xMSAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIGduYXRjbWQuYWRiOgoJQ2hhbmdlZCAvQ09NUElMRV9PTkxZIHRvIC9BQ1RJT05TPUNPTVBJTEUKCUNoYW5nZWQgL0JJTkRfT05MWSB0byAvQUNUSU9OUz1CSU5ECglDaGFuZ2VkIC9MSU5LX09OTFkgdG8gL0FDVElPTlM9TElOSwoKMjAwMS0xMi0xMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2g4LmFkYiAoRmluZF9TZWxlY3RlZF9Db21wb25lbnQpOiBpbXByb3ZlZCBzZWFyY2ggZm9yIGEKCWNhbmRpZGF0ZSBwYWNrYWdlIGluIGNhc2Ugb2YgZXJyb3IuCgoJKiBzZW1fY2gxMi5hZGIgKElubGluZV9JbnN0YW5jZV9Cb2R5KTogcGxhY2UgaGVhZCBvZiB1c2VfY2xhdXNlCgljaGFpbiBiYWNrIG9uIHNjb3BlIHN0YWNrIGJlZm9yZSByZWluc3RhbGxpbmcgdXNlIGNsYXVzZXMuCgoJKiBleHBfY2g1LmFkYiAoRXhwYW5kX05fSWZfU3RhdGVtZW50KTogaWYgQ29uc3RhbnRfQ29uZGl0aW9uX1dhcm5pbmdzCglpcyBlbmFibGVkLCBkbyBub3Qga2lsbCB0aGUgY29kZSBmb3IgdGhlIGNvbmRpdGlvbiwgdG8gcHJlc2VydmUKCXdhcm5pbmcuCgoyMDAxLTEyLTExICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogY2hlY2tzLmFkYiAoSW5zZXJ0X1ZhbGlkX0NoZWNrKTogQXBwbHkgdmFsaWRpdHkgY2hlY2sgdG8gZXhwcmVzc2lvbgoJb2YgY29udmVyc2lvbiwgbm90IHRvIHJlc3VsdCBvZiBjb252ZXJzaW9uLgoKMjAwMS0xMi0xMSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiIChCdWlsZF9EZXJpdmVkX1JlY29yZF9UeXBlKTogc2V0IENvbnRyb2xsZWQgZmxhZwoJYmVmb3JlIGZyZWV6aW5nIHBhcmVudC4gSWYgdGhlIGRlY2xhcmF0aW9ucyBhcmUgbXV0dWFsbHkgcmVjdXJzaXZlLAoJYW4gYWNjZXNzIHRvIHRoZSBjdXJyZW50IHJlY29yZCB0eXBlIG1heSBiZSBmcm96ZW4gYmVmb3JlIHRoZQoJZGVyaXZhdGlvbiBpcyBjb21wbGV0ZS4KCjIwMDEtMTItMDUgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBnbmF0Y21kLmFkYjogKE1BS0UpOiBBZGQgbmV3IHRyYW5zbGF0aW9uczogLWIgL0JJTkRfT05MWSwKCS1jIC9DT01QSUxFX09OTFksIC1sIC9MSU5LX09OTFkKCgkqIG9wdC5hZHM6CgkoQmluZF9Pbmx5KTogTmV3IEZsYWcKCShMaW5rX09ubHkpOiBOZXcgZmxhZwoKCSogc3dpdGNoLmFkYiAoU2Nhbl9NYWtlX1N3aXRjaGVzKTogQWRkIHByb2Nlc3NpbmcgZm9yIC1iIChCaW5kX09ubHkpCglhbmQgLWwgKExpbmtfT25seSkKCgkqIG1ha2V1c2cuYWRiOiBBZGQgbmV3IHN3aXRjaGVzIC1iIGFuZCAtbC4gVXBkYXRlIENvcHlyaWdodCBub3RpY2UuCgoJKiBtYWtlLmFkYjoKCShEb19Db21waWxlX1N0ZXAsIERvX0JpbmRfU3RlcCwgRG9fTGlua19TdGVwKTogTmV3IGZsYWdzLgoJKEduYXRtYWtlKTogU2V0IHRoZSBzdGVwIGZsYWdzLiBPbmx5IHBlcmZvcm0gYSBzdGVwIGlmIHRoZQoJY29ycmVzcG9uZGluZyBzdGVwIGZsYWcgaXMgVHJ1ZS4KCShTY2FuX01ha2VfQXJnKTogUmVzZXQgdGhlIGJpbmQgYW5kIGxpbmsgc3RlcCBmbGFncyB3aGVuIC11CglvciAtZ25hdGMgaGFzIGJlZW4gc3BlY2lmaWVkLgoKMjAwMS0xMi0wNSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9ldmFsLmFkYiAoRXZhbF9Db25jYXRlbmF0aW9uKTogSWYgbGVmdCBvcGVyYW5kIGlzIGEgbnVsbCBzdHJpbmcsCglnZXQgYm91bmRzIGZyb20gcmlnaHQgb3BlcmFuZC4KCgkqIHNlbV9ldmFsLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBleHBfdXRpbC5hZGIgKE1ha2VfTGl0ZXJhbF9SYW5nZSk6IHVzZSBib3VuZCBvZiBsaXRlcmFsIHJhdGhlcgoJdGhhbiBJbmRleCdGaXJzdCwgaXRzIGxvd2VyIGJvdW5kIG1heSBiZSBkaWZmZXJlbnQgZnJvbSAxLgoKCSogZXhwX3V0aWwuYWRiOiBVbmRvIGVhcmxpZXIgY2hhbmdlLCBmaXhlcyBBQ1ZDIHJlZ3Jlc3Npb25zIEM0ODAwOUIKCWFuZCBDNDgwMDlKCgoyMDAxLTEyLTA1ICBWaW5jZW50IENlbGllciA8Y2VsaWVyQGduYXQuY29tPgoKCSogcHJqLW5tc2MuYWRiIE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcHJqLW5tc2MuYWRiIChMYW5ndWFnZV9JbmRlcGVuZGVudF9DaGVjayk6IFJlc2V0IExpYnJhcnkgZmxhZyBpZgoJc2V0IGFuZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuCgoyMDAxLTEyLTA1ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoMy5hZGIgKEJ1aWxkX0Rlcml2ZWRfUHJpdmF0ZV9UeXBlKTogc2V0IFB1YmxpYyBzdGF0dXMgb2YKCXByaXZhdGUgdmlldyBleHBsaWNpdGx5LCBzbyB0aGUgYmFjay1lbmQgY2FuIHRyZWF0IGFzIGEgZ2xvYmFsCgl3aGVuIGFwcHJvcHJpYXRlLgoKMjAwMS0xMi0wNSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoSW5zdGFudGlhdGVfUGFja2FnZV9Cb2R5KTogaWYgaW5zdGFuY2UgaXMgYSBjb21waWxhdGlvbgoJIHVuaXQsIGFsd2F5cyByZXBsYWNlIGluc3RhbmNlIG5vZGUgd2l0aCBuZXcgYm9keSwgZm9yIEFTSVMgdXNlLgoKMjAwMS0xMi0wNSAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai1ubXNjLmFkYiAoTGFuZ3VhZ2VfSW5kZXBlbmRlbnRfQ2hlY2spOiBJc3N1ZSBhIHdhcm5pbmcgaWYKCWxpYnJhcmllcyBhcmUgbm90IHN1cHBvcnRlZCBhbmQgYm90aCBhdHRyaWJ1dGVzIExpYnJhcnlfTmFtZSBhbmQKCUxpYnJhcnlfRGlyIGFyZSBzcGVjaWZpZWQuCgoJKiBwcmotcHJvYy5hZGIgKEV4cHJlc3Npb24pOiBTZXQgbG9jYXRpb24gb2YgUmVzdWx0IHRvIGxvY2F0aW9uIG9mCglmaXJzdCB0ZXJtLgoKCSogTWFrZWZpbGUuaW46IEFkZCBtbGliLm8sIG1saWItZmlsLm8sIG1saWItdGd0IGFuZCBtbGliLXV0bCB0byBHTkFUTFMuCgkocHJqLW5tc2MgaXMgbm93IGltcG9ydGluZyBNTGliLlRndCkKCgkqIHByai1wcm9jLmFkYjogUHV0IHRoZSBjaGFuZ2UgaW5kaWNhdGVkIGFib3ZlIHRoYXQgd2FzIGZvcmdvdHRlbi4KCjIwMDEtMTItMDUgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5pbjogQWRkIGRlcGVuZGVuY2llcyBmb3IgU3lzdGVtLklPIGZvciBHTkFULlJlZ2V4cAoKMjAwMS0xMi0wNSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiIChCdWlsZF9EZXJpdmVkX0NvbmN1cnJlbnRfVHlwZSk6IElmIGRlcml2YXRpb24gaW1wb3NlcyBhCgljb25zdHJhaW50LCBpbnRyb2R1Y2UgZXhwbGljaXQgc3VidHlwZSBkZWNsYXJhdGlvbiBhbmQgZGVyaXZlIGZyb20gaXQuCgoJKiBzZW1fY2gzLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAxLTEyLTA1ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogY2hlY2tzLmFkYiAoRGV0ZXJtaW5lX1JhbmdlKTogSW5jcmVhc2UgY2FjaGUgc2l6ZSBmb3IgY2hlY2tzLgoJTWlub3IgcmVmb3JtYXR0aW5nCgoJKiBleHBfY2g2LmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgkoRXhwYW5kX05fU3VicHJvZ3JhbV9Cb2R5KTogUmVzZXQgSXNfUHVyZSBmb3IgYW55IHN1YnByb2dyYW0gdGhhdCBoYXMKCWEgcGFyYW1ldGVyIHdob3NlIHJvb3QgdHlwZSBpcyBTeXN0ZW0uQWRkcmVzcywgc2luY2UgdHJlYXRpbmcgc3VjaAoJc3VicHJvZ3JhbXMgYXMgcHVyZSBpbiB0aGUgY29kZSBnZW5lcmF0b3IgaXMgYWxtb3N0IHN1cmVseSBhIG1pc3Rha2UKCXRoYXQgd2lsbCBsZWFkIHRvIHVuZXhwZWN0ZWQgcmVzdWx0cy4KCgkqIGV4cF91dGlsLmFkYiAoUmVtb3ZlX1NpZGVfRWZmZWN0cyk6IENsZWFuIHVwIG9sZCA/Pz8gY29tbWVudCBhbmQKCWNoYW5nZSBoYW5kbGluZyBvZiBjb252ZXJzaW9ucy4KCgkqIGctcmVnZXhwLmFkYjogVXNlIFN5c3RlbS5JTyBpbnN0ZWFkIG9mIEFkYS5UZXh0X0lPLgoKMjAwMS0xMi0wNSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiIChBbmFseXplX09iamVjdF9EZWNsYXJhdGlvbik6IElmIGV4cHJlc3Npb24gaXMgYW4KCWFnZ3JlZ2F0ZSB3aXRoIHN0YXRpYyB3cm9uZyBzaXplLCBhdHRhY2ggZ2VuZXJhdGVkIFJhaXNlIG5vZGUgdG8KCWRlY2xhcmF0aW9uLgoKMjAwMS0xMi0wNSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9hdHRyLmFkYiAoQW5hbHl6ZV9BdHRyaWJ1dGUpOiBEZWZlbmQgYWdhaW5zdCBiYWQgVmFsIGF0dHJpYnV0ZS4KCUZpeGVzIGNvbXBpbGF0aW9uIGFiYW5kb25lZCBib21iIGluIEIyNDAwOUIuCgoyMDAxLTEyLTA1ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoMTIuYWRiOgoJRG9jdW1lbnQgdXNlIG9mIEFzc29jaWF0ZWRfTm9kZSBvbiBTZWxlY3RlZF9Db21wb25lbnRzLgoJKFNhdmVfR2xvYmFsX09wZXJhbmRfRGVzY2VuZGFudHMpOiBDaGFuZ2UgdG8gU2F2ZV9FbnRpdHlfRGVzY2VuZGFudHMsCgl0byBjbGFyaWZ5IHVzZSBvZiB1bnR5cGVkIGRlc2NlbmRhbnQgZmllbGRzLgoKMjAwMS0xMi0wNSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHByai1kZWN0LmFkczogQWRkID8/PyBjb21tZW50CglBZGQgMjAwMSB0byBjb3B5cmlnaHQgbm90aWNlICh3YXMgbm90IGRvbmUgaW4gYWZ0ZXIgYWxsKQoKCSogcHJqLXBhcnQuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuIFJld29yZCBvbmUgYXdrd2FyZCBlcnJvciBtZXNzYWdlLgoKCSogcHJqLmFkczogTWlub3IgcmVmb3JtYXR0aW5nIHRocm91Z2hvdXQsIGFuZCBhZGQgc29tZSA/Pz8gY29tbWVudHMKCgkqIHNuYW1lcy5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMi0wNSAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogc25hbWVzLmFkYjogQXV0b3VwZGF0ZQoKMjAwMS0xMi0wNSAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIHByai1kZWN0LmFkYiAoUGFyc2UpOiBSZW5hbWUgcGFyYW1ldGVyIE1vZGlmeWluZyB0byBFeHRlbmRzLgoKCSogcHJqLWRlY3QuYWRzIChQYXJzZSk6IFJlbmFtZSBwYXJhbWV0ZXIgTW9kaWZ5aW5nIHRvIEV4dGVuZHMuCgoJKiBwcmotZW52LmFkYjogTWlub3IgY29tbWVudCBjaGFuZ2VzIChtb2RpZnlpbmcgLT4gZXh0ZW5kcykuCgoJKiBwcmotbm1zYy5hZGI6IE1pbm9yIGNvbW1lbnQgY2hhbmdlcyAobW9kaWZ5aW5nIC0+IGV4dGVuZHMpLgoKCSogcHJqLXBhcnQuYWRiIChQYXJzZV9TaW5nbGVfUHJvamVjdCk6IENoYW5nZSBUb2tfTW9kaWZ5aW5nIHRvCglUb2tfRXh0ZW5kcy4KCgkqIHByai5hZGIgKEluaXRpYWxpemUpOiBDaGFuZ2UgTW9kaWZ5aW5nIHRvIEV4dGVuZHMuCgoJKiBzY2Fucy5hZHMgKFRva2VuX1R5cGUpOiBDaGFuZ2UgVG9rX01vZGlmeWluZyB0byBUb2tfRXh0ZW5kcy4KCgkqIHByai5hZHM6IE1pbm9yIGNvbW1lbnQgY2hhbmdlIChNb2RpZnlpbmcgLT4gZXh0ZW5kaW5nKS4KCgkqIHNuYW1lcy5hZHM6IENoYW5nZSBtb2RpZnlpbmcgdG8gZXh0ZW5kcy4KCjIwMDEtMTItMDUgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fd2Fybi5hZGI6IFJlbW92ZSBzdHVmZiBmb3IgY29uZGl0aW9uYWxzLCB3ZSBhcmUgbm90IGdvaW5nIHRvCglkbyB0aGlzIGFmdGVyIGFsbC4KCgkqIHNlbV93YXJuLmFkczogUmVtb3ZlIHN0dWZmIGZvciBjb25kaXRpb25hbHMsIHdlIGFyZSBub3QgZ29pbmcgdG8KCWRvIHRoaXMgYWZ0ZXIgYWxsLiAgQWRkIDIwMDEgdG8gY29weXJpZ2h0IG5vdGljZQoKMjAwMS0xMi0wNCAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogIGVpbmZvLmgsIHNpbmZvLmgsIHRyZWVwcnMuYWRzOiBSZWdlbmVyYXRlLgoKMjAwMS0xMi0wNCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGVycm91dC5hZGIgKEVycm9yX01zZyk6IElnbm9yZSBhdHRlbXB0IHRvIHB1dCBlcnJvciBtc2cgYXQganVuawoJbG9jYXRpb24gaWYgd2UgYWxyZWFkeSBoYXZlIGVycm9ycy4gU3RvcHMgc29tZSBjYXNlcyBvZiBjYXNjYWRlZAoJZXJyb3JzLgoKCSogZXJyb3V0LmFkYjogSW1wcm92ZSBjb21tZW50LgoKMjAwMS0xMi0wNCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYjoKCShBbmFseXplX0Zvcm1hbF9UeXBlX0RlZmluaXRpb24pOiBEZWZlbmQgYWdhaW5zdCBFcnJvci4KCShBbmFseXplX0Zvcm1hbF9TdWJwcm9ncmFtKTogRGVmZW5kIGFnYWluc3QgRXJyb3IuCgoJKiBwYXItY2gxMi5hZGIgKEZfRm9ybWFsX1R5cGVfRGVjbGFyYXRpb24pOiBJbiBjYXNlIG9mIGVycm9yLAoJcmVtb3ZlIGZvbGxvd2luZyBzZW1pY29sb24gaWYgcHJlc2VudC4gUmVtb3ZlcyBjYXNjYWRlZCBlcnJvci4KCjIwMDEtMTItMDQgIERvdWdsYXMgQi4gUnVwcCA8cnVwcEBnbmF0LmNvbT4KCgkqIGJpbmRnZW4uYWRiOgoJKEdlbl9FeGNlcHRpb25fVGFibGVfQWRhKTogV3JpdGUgImJlZ2luIiBhbmQgdGhlbiByZXR1cm4gaWYgTnVtCgkgZXhjZXB0aW9ucyBlcXVhbHMgMC4KCShHZW5fRXhjZXB0aW9uX1RhYmxlX0MpOiBSZXR1cm4gaWYgTnVtIGV4Y2VwdGlvbnMgZXF1YWxzIDAuCglGaXhlcyBQSVdHIEUgdGVzdHMgKHdoaWNoIGhhdmUgdG8gYmUgcnVuIHdpdGggLWduYXRMKS4KCjIwMDEtMTItMDQgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBlaW5mby5hZHM6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMi0wNCAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIGVpbmZvLmFkczogQmxvY2tfTm9kZSBwb2ludHMgdG8gdGhlIGlkZW50aWZpZXIgb2YgdGhlIGJsb2NrLCBub3QgdG8KCXRoZSBibG9jayBub2RlIGl0c2VsZiwgdG8gcHJlc2VydmUgdGhlIGxpbmsgd2hlbiB0aGUgYmxvY2sgaXMKCXJld3JpdHRlbiwgZS5nLiB3aXRoaW4gYW4gaWYtc3RhdGVtZW50IHdpdGggYSBzdGF0aWMgY29uZGl0aW9uLgoKCSogaW5saW5lLmFkYiAoQ2xlYW51cF9TY29wZXMpOiByZWNvdmVyIGJsb2NrIHN0YXRlbWVudCBmcm9tIGJsb2NrCgllbnRpdHkgdXNpbmcgbmV3IG1lYW5pbmcgb2YgQmxvY2tfTm9kZS4KCgkqIHNlbV9jaDUuYWRiIChBbmFseXplX0Jsb2NrX1N0YXRlbWVudCk6IHNldCBCbG9ja19Ob2RlIHRvIHBvaW50IHRvCglpZGVudGlmaWVyIG9mIGJsb2NrIG5vZGUsIHJhdGhlciB0aGFuIHRvIG5vZGUgaXRzZWxmLgoKMjAwMS0xMi0wNCAgR2FyeSBEaXNtdWtlcyA8ZGlzbXVrZXNAZ25hdC5jb20+CgoJKiBsYXlvdXQuYWRiOgoJKEdldF9NYXhfU2l6ZSk6IEZpeCAic3RhcnQgb2YgcHJvY2Vzc2luZyIgY29tbWVudCB0byBzYXkgR2V0X01heF9TaXplLgoJKERpc2NyaW1pZnkpOiBHbyBiYWNrIHRvIHNldHRpbmcgdGhlIEV0eXBlcyBvZiB0aGUgc2VsZWN0ZWQgY29tcG9uZW50CgliZWNhdXNlIHRoZSBWbmFtZSBjb21wb25lbnQgZG9lcyBub3QgZXhpc3QgYXQgdGhpcyBwb2ludCBhbmQgd2lsbAoJZmFpbCBuYW1lIHJlc29sdXRpb24uIEFsc28gc2V0IEFuYWx5emVkLgoJUmVtb3ZlIHdpdGggYW5kIHVzZSBvZiBTZW1fUmVzLgoKMjAwMS0xMi0wNCAgQXJuYXVkIENoYXJsZXQgPGNoYXJsZXRAZ25hdC5jb20+CgoJKiBNYWtlZmlsZS5pbjogKEhJRV9TT1VSQ0VTKTogYWRkIHMtZmF0Ki4KCjIwMDEtMTItMDQgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fYXR0ci5hZGI6CgkoQ29tcGlsZV9UaW1lX0tub3duX0F0dHJpYnV0ZSk6IE5ldyBwcm9jZWR1cmUuCgkoRXZhbF9BdHRyaWJ1dGUsIGNhc2UgU2l6ZSk6IFVzZSBDb21waWxlX1RpbWVfS25vd25fQXR0cmlidXRlIHRvIGVuc3VyZQoJIHByb3BlciByYW5nZSBjaGVjay4KCjIwMDEtMTItMDQgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2g3LmFkYiAoTmV3X1ByaXZhdGVfVHlwZSk6IFNldCBJc19UYWdnZWRfVHlwZSBmbGFnIGJlZm9yZQoJcHJvY2Vzc2luZyBkaXNjcmltaW5hbnRzIHRvIGRpYWdub3NlIGlsbGVnYWwgZGVmYXVsdCB2YWx1ZXMuCgoyMDAxLTEyLTA0ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2F0dHIuYWRiIChSZXNvbHZlX0F0dHJpYnV0ZSk6IEhhbmRsZSBwcm9wZXJseSBhbiBub24tY2xhc3N3aWRlCglhY2Nlc3MgZGlzY3JpbWluYW50IHdpdGhpbiBhIHR5cGUgZXh0ZW5zaW9uIHRoYXQgY29uc3RyYWlucyBpdHMKCXBhcmVudCBkaXNjcmltaW5hbnRzLgoKMjAwMS0xMi0wNCAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiIChGaW5kX1R5cGVfT2ZfU3VidHlwZV9JbmRpYyk6IElmIHN1YnR5cGUgaW5kaWNhdGlvbgoJaXMgbWFsZm9ybWVkLCB1c2UgaW5zdGFuY2Ugb2YgQW55X0lkIHRvIGFsbG93IGFuYWx5c2lzIHRvIHByb2NlZWQuCgoJKiBwYXItY2gxMi5hZGIgKFBfRm9ybWFsX1R5cGVfRGVjbGFyYXRpb24pOiBQcm9wYWdhdGUgRXJyb3IgaWYKCXR5cGUgZGVmaW5pdGlvbiBpcyBpbGxlZ2FsLgoJKFBfRm9ybWFsX0Rlcml2ZWRfVHlwZV9EZWZpbml0aW9uKTogQmV0dGVyIHJlY292ZXJ5IHdoZW4gVEFHR0VEIGlzCgltaXNwbGFjZWQuCgoyMDAxLTEyLTA0ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX3dhcm4uYWRiIChPdXRwdXRfVW5yZWZlcmVuY2VkX01lc3NhZ2VzKTogRXh0ZW5kIHByZXZpb3VzIGZpeCB0bwoJY29uc3RhbnRzLgoKMjAwMS0xMi0wNCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGVycm91dC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMi0wNCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGV4cF91dGlsLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nIGZyb20gbGFzdCBjaGFuZ2UKCgkqIGVycm91dC5hZGIgKENoZWNrX0Zvcl9XYXJuaW5nKTogRm9yIGEgUmFpc2VkX0NvbnN0cmFpbnRfRXJyb3Igbm9kZQoJd2hpY2ggaXMgYSByZXdyaXRpbmcgb2YgYW4gZXhwcmVzc2lvbiwgdHJhdmVyc2UgdGhlIG9yaWdpbmFsCglleHByZXNzaW9uIHRvIHJlbW92ZSB3YXJuaW5ncyB0aGF0IG1heSBoYXZlIGJlZW4gcG9zdGVkIG9uIGl0LgoKMjAwMS0xMi0wNCAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIGV4cF91dGlsLmFkYiAoTXVzdF9CZV9BbGlnbmVkKTogUmV0dXJuIGZhbHNlIGZvciBhIGNvbXBvbmVudCBvZiBhCglyZWNvcmQgdGhhdCBoYXMgb3RoZXIgcGFja2VkIGNvbXBvbmVudHMuCgoyMDAxLTEyLTA0ICBEb3VnbGFzcyBCLiBSdXBwIDxydXBwQGduYXQuY29tPgoKCSogYWRhaW50LmM6IE1pbm9yIGNsZWFudXBzLgoKMjAwMS0xMi0wNCAgRG91Z2xhc3MgQi4gUnVwcCA8cnVwcEBnbmF0LmNvbT4KCgkqIGFkYWludC5jOiBEbyBub3QgdXNlIHV0aW1lLmggb24gdnh3b3Jrcy4KCjIwMDEtMTItMDQgIEFybmF1ZCBDaGFybGV0IDxjaGFybGV0QGduYXQuY29tPgoKCSogTWFrZWZpbGUuYWRhbGliOiBDbGFyaWZ5IHN0ZXAgMyAodXNlIG9mIGduYXQuYWRjKSBhcyBpdCBjYXVzZXMKCW1vcmUgY29uZnVzaW9uIHRoYW4gaXQgc29sdmVzLgoKMjAwMS0xMi0wNCAgR2VlcnQgYm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogZWluZm8uaCwgbm1ha2UuYWRiLCBubWFrZS5hZHMsIHNpbmZvLmggdHJlZXBycy5hZHM6IFJlZ2VuZXJhdGUuCgoyMDAxLTEyLTA0ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKHVwZGF0ZS1zb3VyY2VzKTogTmV3IHRhcmdldC4KCUZvciB1c2UgYnkgZ2NjX3JlbGVhc2Ugc2NyaXB0LgoKMjAwMS0xMi0wNCAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9wcmFnLmFkYiAoQW5hbHl6ZV9QcmFnbWEsIGNhc2UgVmFsaWRpdHlfQ2hlY2tzKTogZG8gbm90IHRyZWF0IGFzCglhIGNvbmZpZ3VyYXRpb24gcHJhZ21hLCBpdCBpcyBub3cgbGVnYWwgd2hlcmV2ZXIgYSBwcmFnbWEgY2FuIGFwcGVhci4KCjIwMDEtMTItMDQgIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBNYWtlZmlsZS5pbjogRG9uJ3Qgc2V0IEFMTC4gIERlbGV0ZSBAY3Jvc3NfZGVmaW5lc0AsCglAY3Jvc3Nfb3ZlcnJpZGVzQCwgQGJ1aWxkX292ZXJyaWRlc0Agc3Rhbnphcy4gIElOVEVSTkFMX0NGTEFHUwoJaXMgbm93IEBDUk9TU0AgLURJTl9HQ0M7IHVwZGF0ZSBjb21tZW50LgoKMjAwMS0xMi0wNCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGVpbmZvLmFkYiAoSGFzX1ByYWdtYV9QdXJlX0Z1bmN0aW9uKTogTmV3IGZsYWcuCglGaXggcHJvYmxlbSB0aGF0IHN0b3BwZWQgY2VpbmZvIGZyb20gd29ya2luZwoKCSogZWluZm8uYWRzIChIYXNfUHJhZ21hX1B1cmVfRnVuY3Rpb24pOiBOZXcgZmxhZy4KCgkqIHNlbV9wcmFnLmFkYiAoUHVyZV9GdW5jdGlvbik6IFNldCBuZXcgZmxhZyBIYXNfUHJhZ21hX1B1cmVfRnVuY3Rpb24uCgoyMDAxLTEyLTA0ICBEb3VnbGFzIEIuIFJ1cHAgPHJ1cHBAZ25hdC5jb20+CgoJKiBnbmF0Y2hvcC5hZGI6CgkoRmlsZV9UaW1lX1N0YW1wKTogTmV3IHByb2NlZHVyZS4KCShQcmVzZXJ2ZV9Nb2RlKTogTmV3IGJvb2xlYW4uCgkoV3JpdGVfVW5pdCk6IFBhc3MgdGltZSBzdGFtcC4KCUltcGxlbWVudCAtcCBzd2l0Y2ggKHByZXNlcnZlIHRpbWUgc3RhbXBzKS4KCgkqIGduYXRjbWQuYWRiIChDSE9QKTogQWRkIHRyYW5zbGF0aW9uIGZvciAtcCAoL1BSRVNFUlZFKS4KCgkqIGduYXRjaG9wLmFkYjogRG8gdXNhZ2UgaW5mbyBmb3IgLXAgc3dpdGNoCgoJKiBhZGFpbnQuaCAoX19nbmF0X3NldF9maWxlX3RpbWVfbmFtZSk6IE5ldyBmdW5jdGlvbgoKCSogYWRhaW50LmMgKF9fZ25hdF9zZXRfZmlsZV90aW1lX25hbWUpOiBJbXBsZW1lbnQKCgkqIGFkYWludC5oOiBGaXggdHlwbwoKMjAwMS0xMi0wMyAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNpbmZvLmFkczogTWlub3IgcmVmb3JtYXR0aW5nLiBOX0ZyZWV6ZV9FbnRpdHkgbm9kZSBkb2VzIG5vdAoJaGF2ZSBBc3NvY2lhdGVkX05vZGUuCgoyMDAxLTEyLTAzICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogcHJqLXByb2MuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCgkqIG1ha2UuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTItMDMgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIG1ha2UuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcuCgoyMDAxLTEyLTAzIFJvYmVydCBEZXdhciAgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX2NoMTIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTItMDMgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fY2gxMi5hZGIgKElubGluZV9JbnN0YW5jZV9Cb2R5KTogVXNlIFNhdmVfU2NvcGVfU3RhY2sgYW5kCglwdXNoIFN0YW5kYXJkIG9uIHRoZSBzdGFjayBiZWZvcmUgYW5hbHl6aW5nIHRoZSBpbnN0YW5jZSBib2R5LAoJaW4gb3JkZXIgdG8gaGF2ZSBhIGNsZWFuIHZpc2liaWxpdHkgZW52aXJvbm1lbnQuCgoJKiBzZW1fY2gxMi5hZGIgKElubGluZV9JbnN0YW5jZV9Cb2R5KTogUmVtb3ZlIHJlZHVuZGFudCBjb2RlLgoKMjAwMS0xMi0wMyAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9jaDEyLmFkYiAoSW5zdGFudGlhdGVfUGFja2FnZV9Cb2R5KTogUHJvdGVjdCBhZ2FpbnN0IGRvdWJsZQoJaW5zdGFudGlhdGlvbiBvZiBhIGJvZHkgdGhhdCBjb250YWlucyBhbiBpbmxpbmVkIGJvZHkuCgoyMDAxLTEyLTAzICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogc2VtX2NoMTIuYWRiOgoJKEFuYWx5emVfZ2VuZXJpY19zdWJwcm9ncmFtX0RlY2xhcmF0aW9uKTogU2V0IG91dGVyX2dlbmVyaWNfc2NvcGUsCgl0byBwcmV2ZW50IGZyZWV6aW5nIHdpdGhpbiBmb3JtYWwgcGFja2FnZXMuCgkoRnJlZXplX1N1YnByb2dyYW1fQm9keSk6IElmIGJvZHkgY29tZXMgZnJvbSBhbm90aGVyIGluc3RhbmNlIHRoYXQKCWFwcGVhcmVkIGJlZm9yZSBpdHMgb3duIGJvZHksIHBsYWNlIGZyZWV6ZSBub2RlIGF0IGVuZCBvZiBjdXJyZW50CglkZWNsYXJhdGl2ZSBwYXJ0LCB0byBwcmV2ZW50IGEgYmFjay1lbmQgY3Jhc2guCgkoSW5saW5lX0luc3RhbmNlX0JvZHkpOiBIYW5kbGUgcHJvcGVybHkgYSBwYWNrYWdlIGluc3RhbmNlIHdpdGhpbgoJYSBzdWJwcm9ncmFtIGluc3RhbmNlIHRoYXQgaXMgYSBjaGlsZCB1bml0LgoKMjAwMS0xMi0wMSAgR3JhaGFtIFN0b3R0ICA8Z3JhaGFtc0ByZWRoYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKG1pc2Mubyk6IEFkZCBtaXNzaW5nICQoc3JjZGlyKSBwcmVmaXgKCWFuZCBhZGQgb3B0YWJzLmggZGVwZW5kZW5jeS4KCgkqIG1pc2MuYzogSW5jbHVkZSBvcHRhYnMuaAoJKGduYXRfdHJlZV9jb2RlX3R5cGUpOiBNYWtlIHN0YXRpYyBhbmQgY29uc3QuCgkoZ25hdF90cmVlX2NvZGVfbGVuZ3RoKTogTGlrZXdpc2UuCgkoZ25hdF90cmVlX2NvZGVfbmFtZSk6IExpa2V3aXNlLgoJKHVwZGF0ZV9zZXRqbXBfYnVmKTogT2J0YWluIG9wZXJhbmRzIG1vZGUgZnJvbSBpbnNuX2RhdGEuCgoyMDAxLTExLTI5ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogaW5pdC5jOiBSZW1vdmUgb2Jzb2xldGUgZHdhcmYyIGZyYW1lLmggc2VjdGlvbi4KCjIwMDEtMTEtMjkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIE1ha2UtbGFuZy5pbiAoYWRhLmdlbmVyYXRlZC1tYW5wYWdlcyk6IE5ldyBkdW1teSB0YXJnZXQuCgoyMDAxLTExLTI5ICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogZy1vc19saWIuYWRiIChBZGRfVG9fQ29tbWFuZCk6IHVzZSBleHBsaWNpdCBsb29wIHRvIG1vdmUgc3RyaW5nCglpbnRvIENvbW1hbmQsIGFuIGFycmF5IGNvbnZlcnNpb24gaXMgaWxsZWdhbCBoZXJlLiBVbmNvdmVyZWQgYnkKCUFDQVRTIEI0NjAwMDUuCgoyMDAxLTExLTI4ICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiBpbml0LmM6IE1pbm9yIHdoaXRlc3BhY2UgY2hhbmdlcy4KCjIwMDEtMTEtMjggIERvdWcgUnVwcCA8cnVwcEBnbmF0LmNvbT4KCgkqIGluaXQuYzogKF9fZ25hdF9pbnN0YWxsX2hhbmRsZXIsVk1TKTogSW5jcmVhc2Ugc2l6ZSBvZiBhbHRlcm5hdGUKCXNpZ25hbCBzdGFjay4KCjIwMDEtMTEtMjggIFphY2sgV2VpbmJlcmcgIDx6YWNrQGNvZGVzb3VyY2VyeS5jb20+CgoJKiBtaXNjLmMgKGduYXRfZXhwYW5kX2NvbnN0YW50KTogTW92ZSBkZWNsYXJhdGlvbiBhYm92ZQoJZGVmaW5pdGlvbiBvZiBsYW5nX2hvb2tzLgoJKExBTkdfSE9PS1NfRVhQQU5EX0NPTlNUQU5UKTogU2V0IHRvIGduYXRfZXhwYW5kX2NvbnN0YW50LgoJKGduYXRfaW5pdCk6IGxhbmdfZXhwYW5kX2NvbnN0YW50IG5vIGxvbmdlciBleGlzdHMuCgoJKGludGVybmFsX2Vycm9yX2Z1bmN0aW9uKTogUmVtb3ZlICNpZmRlZiBIQVZFX1ZQUklOVEYuICBXZQoJYWx3YXlzIGhhdmUgdnByaW50Zi4KCShnbmF0X2luaXQpOiBBbHdheXMgY2FsbCBzZXRfaW50ZXJuYWxfZXJyb3JfZnVuY3Rpb24uCgoyMDAxLTExLTI3ICBBbmRyZWFzIEphZWdlciAgPGFqQHN1c2UuZGU+CgoJKiBNYWtlZmlsZS5pbiAoc3RhbXAtdG9vbF9zcmNfZGlyKTogVXNlIHN5bWJvbGljIGxpbmsuCgoyMDAxLTExLTI3ICBMYXVyZW50IEd1ZXJieSAgPGd1ZXJieUBhY20ub3JnPgoKCSogTWFrZWZpbGUuaW46IFJlZ2VuZXJhdGUgQWRhIGRlcGVuZGVuY2llcy4KCjIwMDEtMTEtMjYgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGduYXRiaW5kLCBnbmF0bWFrZSwgZ25hdGJsLCBnbmF0Y2hvcCwgZ25hdGNtZCwKCWduYXRsaW5rLCBnbmF0a3IsIGduYXRscywgZ25hdG1lbSwgZ25hdHByZXAsIGduYXRwc3RhLCBnbmF0cHN5cywKCWduYXR4cmVmLCBnbmF0ZmluZCwgZ25hdGxicik6IERlcGVuZCBvbiBDT05GSUdfSCBhbmQgcHJlZml4Lm8uCgoyMDAxLTExLTI1ICBMYXVyZW50IEd1ZXJieSAgPGd1ZXJieUBhY20ub3JnPgoKCSogc3lzZGVwLmMgKHJ0c19nZXRfKik6IEZpeCBzdHlsZS4KCjIwMDEtMTEtMTkgIExhdXJlbnQgR3VlcmJ5ICA8Z3VlcmJ5QGFjbS5vcmc+CgoJKiBNYWtlZmlsZS5pbiAoSU5DTFVERVNfRk9SX1NVQkRJUik6IFJlbW92ZSByZWR1bmRhbnQgc3lzdGVtIGluY2x1ZGUKCXNpbmNlIGl0IGlzIG9mIG5vIGFwcGFyZW50IHVzZSBhbmQgY2F1c2Ugd2FybmluZ3MuCgoyMDAxLTExLTE4ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKGduYXRfZGVjb2RlX29wdGlvbiwgZ25hdF9pbml0X29wdGlvbnMpOiBNYWtlIGRlZmluaXRpb25zCglzdGF0aWMgdG9vLgoJKGduYXRfaW5pdCk6IERvbid0IHJldHVybiBOVUxMLgoJKGZpbmlzaF9wYXJzZSk6IFJlbW92ZS4KCjIwMDEtMTEtMTcgIExhdXJlbnQgR3VlcmJ5ICA8Z3VlcmJ5QGFjbS5vcmc+CgoJKiBNYWtlLWxhbmcuaW4gKEdOQVRMSUJGTEFHUyk6IEFkZCAtVyAtV2FsbC4KCSogZ2lnaS5oIChpbml0X2RlY2xfcHJvY2Vzc2luZyk6IFJlbmFtZSB0byBnbmF0X2luaXRfZGVjbF9wcm9jZXNzaW5nLgoJKiBpby1hdXguYzogUHJvdmlkZSBLJlIgcHJvdG90eXBlcyB0byBhbGwgZnVuY3Rpb25zLCByZWZvcm1hdCBjb2RlLgoJKiBsYW5nLXNwZWMuaDogQWRkIG1pc3Npbmcgc3RydWN0IGZpZWxkIHRvIHNpbGVuY2Ugd2FybmluZ3MuCgkqIHN5c2RlcC5jIChydHNfZ2V0XyopOiBQcm92aWRlIEsmUiBwcm90b3R5cGUuCgkqIHN5c2RlcC5jIChVbmxvY2tfVGFzaywgTG9ja19UYXNrKTogTW92ZSB0byBLJlIgcHJvdG90eXBlLgoJKiB0cmFjZWJhY2suYyAoVW5sb2NrX1Rhc2ssIExvY2tfVGFzayk6IExpa2V3aXNlLgoJKiB0cmFjZWJhay5jIChfX2duYXRfYmFja3RyYWNlKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KCSogdXRpbHMuYyAoZW5kX3N1YnByb2dfYm9keSk6IE1vdmUgdG8gSyZSIHN0eWxlLgoKVGh1IE5vdiAxNSAxODoxNjoxNyAyMDAxICBSaWNoYXJkIEtlbm5lciAgPGtlbm5lckB2bHNpMS51bHRyYS5ueXUuZWR1PgoKCSogdHJhbnMuYywgdXRpbHMyLmM6IFJlbW92ZSBQQUxJR04gcGFyYW1ldGVyIHRvIGdldF9pbm5lcl9yZWZlcmVuY2UuCgoyMDAxLTExLTE1ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKGduYXRfaW5pdCk6IENoYW5nZSBwcm90b3R5cGUuICBJbmNsdWRlIHRoZQoJZnVuY3Rpb25hbGl0eSBvZiB0aGUgb2xkIGluaXRfcGFyc2UgYW5kIGluaXRfZGVjbF9wcm9jZXNzaW5nLgoJKGduYXRfaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBOZXcgcHJvdG90eXBlLgoJKGluaXRfcGFyc2UpOiBSZW1vdmUuCgkqIHV0aWxzLmMgKGluaXRfZGVjbF9wcm9jZXNzaW5nKTogUmVuYW1lIGduYXRfaW5pdF9kZWNsX3Byb2Nlc3NpbmcuCgoyMDAxLTExLTA5ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKGduYXRfcHJpbnRfZGVjbCwgZ25hdF9wcmludF90eXBlKTogUmVuYW1lZC4KCShMQU5HX0hPT0tTX1BSSU5UX0RFQ0wsIExBTkdfSE9PS1NfUFJJTlRfVFlQRSk6IE92ZXJyaWRlLgoJKHByaW50X2xhbmdfc3RhdGlzdGljcywgbGFuZ19wcmludF94bm9kZSwgcHJpbnRfbGFuZ19pZGVudGlmaWVyLAoJc2V0X3l5ZGVidWcpOiBSZW1vdmUuCgoyMDAxLTExLTA5ICBOZWlsIEJvb3RoICA8bmVpbEBkYWlrb2t1eWEuZGVtb24uY28udWs+CgoJKiBtaXNjLmMgKExBTkdfSE9PS1NfTkFNRSwgTEFOR19IT09LU19JREVOVElGSUVSX1NJWkUpOiBPdmVycmlkZS4KCShzdHJ1Y3QgbGFuZ19ob29rcyk6IENvbnN0aWZ5LgoJKGxhbmd1YWdlX3N0cmluZywgbGFuZ19pZGVudGlmeSk6IFJlbW92ZS4KCSogdXRpbHMuYyAoaW5pdF9kZWNsX3Byb2Nlc3NpbmcpOiBVcGRhdGUuCgoyMDAxLTExLTA2ICBOZWlsIEJvb3RoICA8bmVpbEBjYXQuZGFpa29rdXlhLmRlbW9uLmNvLnVrPgoKCSogbWlzYy5jOiBJbmNsdWRlIGxhbmdob29rcy1kZWYuaC4KCSogTWFrZWZpbGUuaW46IFVwZGF0ZS4KCjIwMDEtMTAtMzAgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzdHlsZS5hZGI6CgkoQ2hlY2tfSWRlbnRpZmllcik6IFJld3JpdGUgY2lyY3VpdCB0byBiZSBjb21wYXRpYmxlIHdpdGggdXNlIG9mIGxldHRlcnMKCWluIHRoZSB1cHBlciBoYWxmIG9mIEFTQ0lJLgoJKENoZWNrX0lkZW50aWZpZXIpOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTAtMzAgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIChBc3NvY2lhdGVkX05vZGUsIFNldF9Bc3NvY2lhdGVkX05vZGUpOiBEbyBub3QgY2hlY2sgZm9yCglGcmVlemVfRW50aXR5LgoKMjAwMS0xMC0zMCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGEtcmVhdGltLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAxLTEwLTMwICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogZ25hdGRsbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZyB0aHJvdWdob3V0LiBNYW55ID8/PyBhZGRlZCBmb3IKCXVuZG9jdW1lbnRlZCBkZWNsYXJhdGlvbnMuCgoyMDAxLTEwLTMwICBQYXNjYWwgT2JyeSA8b2JyeUBnbmF0LmNvbT4KCgkqIGduYXRkbGwuYWRiIChQYXJzZV9Db21tYW5kX0xpbmUpOiBoYW5kbGUgLWcgb3B0aW9uIHRvIGJlIHBhc3NlZAoJdG8gdGhlIGJpbmRlciBhbmQgbGlua2VyLgoJTWlub3Igc3R5bGUgZml4LgoKCSogbWRsbC5hZHM6IEZpeCBsYXlvdXQuICBVcGRhdGUgY29weXJpZ2h0IG5vdGljZS4KCgkqIG1kbGwuYWRiOiBGaXggbGF5b3V0LiAgVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgoyMDAxLTEwLTMwICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogdXNhZ2UuYWRiOiBNaW5vciBmaXggdG8gb3V0cHV0IGZvciAtZ25hdHkuCgoyMDAxLTEwLTMwICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogYS1yZWF0aW0uYWRzOiBNYWtlcyBTZWNvbmRzX0NvdW50IGludG8gYSA2NC1iaXQgaW50ZWdlciwKCXRvIGFjY29tbW9kYXRlIGFsbCBpdHMgcG9zc2libGUgdmFsdWVzLgoKCSogYS1yZWF0aW0uYWRiIChTcGxpdCk6IFNwZWNpYWwtY2FzZSBoYW5kbGluZyBvZiBUaW1lX1NwYW5fRmlyc3QKCWFuZCBvZiBzbWFsbCBhYnNvbHV0ZSB2YWx1ZXMgb2YgVC4KCjIwMDEtMTAtMzAgIFJpY2hhcmQgS2VubmVyIDxrZW5uZXJAZ25hdC5jb20+CgoJKiBtaXNjLmMgKGduYXRfZXhwYW5kX2V4cHIsIGNhc2UgTlVMTF9FWFBSKTogUmVtb3ZlIGNhbGwgdG8KCXNldF9tZW1fYXR0cmlidXRlcyBzaW5jZSBub3QgbmVlZGVkIGFuZCB3cm9uZyBpZiBSRVNVTFQgaWYgYSBSRUc7CglmaXhlcyBBQ0FUUyBmYWlsdXJlcy4KCjIwMDEtMTAtMzAgIEdlZXJ0IEJvc2NoIDxib3NjaEBnbmF0LmNvbT4KCgkqIDg2bnVtYXV4LmFkYiwgYS10aWdlYXUuYWRzLCBhLXd0Z2VhdS5hZHMsIGZuYW1lLXNmLmFkcywgZy10cmFjZWIuYWRzLAoJcy10YXNkZWIuYWRzLCBzZW1fbWFwcy5hZHM6IEFkZCAyMDAxIHRvIGNvcHlyaWdodCBub3RpY2UuCgoyMDAxLTEwLTMwICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogYmluZHVzZy5hZGI6IFVuZG9jdW1lbnQgLWYgc3dpdGNoLgoKCSogZ25hdGNtZC5hZGI6IFJlbW92ZSAvRlVMTF9FTEFCT1JBVElPTi4KCgkqIG9wdC5hZHMgKEZvcmNlX1JNX0VsYWJvcmF0aW9uX09yZGVyKTogRG9jdW1lbnQgdGhhdCB0aGlzIGlzCglvYnNvbGVzY2VudC4KCgkqIGduYXRiaW5kLmFkYjogT3V0cHV0IG5ldyB3YXJuaW5nIGZvciB1c2Ugb2Ygb2Jzb2xlc2NlbnQgLWYgc3dpdGNoLgoKCSogZ25hdGJpbmQuYWRiOiBNaW5vciB1cGRhdGUgb2Ygd2FybmluZyBtc2cuCgoyMDAxLTEwLTMwICBWaW5jZW50IENlbGllciA8Y2VsaWVyQGduYXQuY29tPgoKCSogZ25hdGNtZC5hZGIgKE1BS0UsIEJJTkQsIExJTkssIExJU1QsIEZJTkQsIFhSRUYpOiBBZGQgdHJhbnNsYXRpb25zCglmb3IgcHJvamVjdCBmaWxlIHN3aXRjaGVzICgtUCAoL1BST0pFQ1RfRklMRT0pLAoJIC1YICgvRVhURVJOQUxfUkVGRVJFTkNFPSkgYW5kIC12UHggKC9QUk9KRUNUX0ZJTEVfVkVSQk9TSVRZPURFRkFVTFQKCW9yIE1FRElVTSBvciBISUdIKQoKMjAwMS0xMC0zMCAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogZGVjbC5jOiBNaW5vciB3aGl0ZXNwYWNlIGZpeGVzLgoKMjAwMS0xMC0zMCAgUmljaGFyZCBLZW5uZXIgPGtlbm5lckBnbmF0LmNvbT4KCgkqIHV0aWxzMi5jIChidWlsZF9hbGxvY2F0b3IpOiBUZXN0IGZvciBTSVpFIG92ZXJmbG93IGluIGFycmF5IGNhc2UgdG9vCgoyMDAxLTEwLTMwICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiBhbGktdXRpbC5hZGIgKEluaXRpYWxpemVfQ2hlY2tzdW0pOiBVc2Ugb3V0LW1vZGUgaW5zdGVhZCBvZiBpbiBvdXQuCglGb3VuZCBkdWUgdG8gR0NDIDMuMCB3YXJuaW5nIG9mIHVzaW5nIHVuaW5pdGlhbGl6ZWQgdmFsdWUuCgoJKiBsYXlvdXQuYWRiOgoJKEdldF9NYXhfU2l6ZSk6IFVzZSB2YXJpYW50IHJlY29yZCBmb3IgdHJhY2tpbmcgdmFsdWUvZXhwcmVzc2lvbi4KCSBNYWtlcyBsb2dpYyBjbGVhcmVyIGFuZCBwcmV2ZW50cyB3YXJuaW5ncyBmb3IgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuCgkoTGF5b3V0X0FycmF5X1R5cGUpOiBVc2UgdmFyaWFudCByZWNvcmQgZm9yIHRyYWNraW5nIHZhbHVlL2V4cHJlc3Npb24uCgkgTWFrZXMgbG9naWMgY2xlYXJlciBhbmQgcHJldmVudHMgd2FybmluZ3MgZm9yIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzLgoKMjAwMS0xMC0zMCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGxpYi5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogcy10YXByb3AuYWRzOiBNaW5vciByZWZvcm1hdHRpbmcKCjIwMDEtMTAtMjkgIExhdXJlbnQgR3VlcmJ5ICA8Z3VlcmJ5QGFjbS5vcmc+CgoJKiBpbml0LmM6CgkoUmFpc2VfRnJvbV9TaWduYWxfSGFuZGxlciwgUHJvcGFnYXRlX1NpZ25hbF9FeGNlcHRpb24pOiBNYWtlIGFyZwoJY29uc3QuCgkoX2duYXRfZXJyb3JfaGFuZGxlcik6IE1ha2UgTVNHIGNvbnN0LgoKMjAwMS0xMC0yOSAgUmljaGFyZCBLZW5uZXIgPGtlbm5lckBnbmF0LmNvbT4KCgkqIHN5c2RlcC5jOiBGaXggbG9jYWx0aW1lX3IgcHJvYmxlbSBvbiBMeW54T1MuCglBbHNvIHJlbW92ZSAjZWxpZiB0byBhdm9pZCB3YXJuaW5ncy4KCgkqIG1pc2MuYyAoeXlwYXJzZSk6IERvbid0IHNldCB1cCBhbmQgcmVnaXN0ZXIgam1wYnVmOyByZW1vdmUgZGVjbHMKCXVzZWQgYnkgdGhpcy4KCgkqIGRlY2wuYyAoYW5ub3RhdGVfdmFsdWUpOiBNYWtlIFNJWkUgdW5zaWduZWQgdG8gYXZvaWQgd2FybmluZy4KCjIwMDEtMTAtMjggIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIDg2bnVtYXV4LmFkYiwgYS10aWdlYXUuYWRzLCBhLXd0Z2VhdS5hZHMsIGRlY2wuYywgZXhwX2NoNi5hZGIsCglleHBfY2g5LmFkYiwgZXhwX3V0aWwuYWRiLCBmbmFtZS1zZi5hZHMsIGZyZWV6ZS5hZHMsIGctYXdrLmFkYiwKCWctY29tbGluLmFkcywgZy1kaXJvcGUuYWRiLCBnLWR5bnRhYi5hZHMsIGctc29ja2V0LmFkcywKCWctdGFibGUuYWRzLCBnLXRyYWNlYi5hZHMsIGduYXQtc3R5bGUudGV4aSwgZ25hdGNob3AuYWRiLCBpbml0LmMsCglsYXlvdXQuYWRiLCBsYXlvdXQuYWRzLCBtZGxsZmlsZS5hZHMsIG1saWItZmlsLmFkcywgb3NpbnQuYWRzLAoJcy1mYXRnZW4uYWRiLCBzLWltZ3JlYS5hZGIsIHMtdGFwcm9wLmFkcywgcy10YXNkZWIuYWRzLAoJc2VtX2FnZ3IuYWRiLCBzZW1fYXR0ci5hZGIsIHNlbV9jYXNlLmFkcywgc2VtX2NoMTMuYWRiLAoJc2VtX2NoMy5hZGIsIHNlbV9lbGFiLmFkYiwgc2VtX21hcHMuYWRzLCBzZW1fcmVzLmFkYiwKCXNlbV91dGlsLmFkcywgc2luZm8uYWRzLCBzaW5wdXQuYWRzLCB0YWJsZS5hZGIsIHRhYmxlLmFkcywKCXR5cGVzLmFkcywgdXJlYWxwLmFkYjogRml4IHNwZWxsaW5nIGVycm9ycy4KCjIwMDEtMTAtMjcgIExhdXJlbnQgR3VlcmJ5IDxndWVyYnlAYWNtLm9yZz4KCgkqIHRyYW5zLmMgKGdpZ2kpOiBGaXggbm9uIGRldGVybWluaXNtIGxlYWRpbmcgdG8gYm9vdHN0cmFwCgljb21wYXJpc29uIGZhaWx1cmVzIGZvciBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uCgoyMDAxLTEwLTI2ICBGbG9yaWFuIFdlaW1lciAgPGZ3QGRlbmViLmVueW8uZGU+CgoJKiBnbmF0X3JtLnRleGk6IFVzZSBALi9AOiB3aGVyZSBhcHByb3ByaWF0ZS4KCjIwMDEtMTAtMjYgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzaW5mby5hZGI6IERlZmluZSBBc3NvY2lhdGVkX05vZGUgdG8gb3ZlcmxhcCBFbnRpdHkgZmllbGQuIENsZWFudXAuCgoyMDAxLTEwLTI2ICBSaWNoYXJkIEtlbm5lciA8a2VubmVyQGduYXQuY29tPgoKCSogZ21lbS5jIChfX2duYXRfZ21lbV9yZWFkX25leHQpOiBQcm9wZXJseSBjaGVjayBmb3IgRU9GCgoyMDAxLTEwLTI2ICBSaWNoYXJkIEtlbm5lciA8a2VubmVyQGduYXQuY29tPgoKCSogZGVjbC5jICh2YWxpZGF0ZV9zaXplKTogTW9kaWZ5IG1lc3NhZ2UgZm9yIGJhZCBzaXplIHRvIGF2b2lkCglpbXBsaWNhdGlvbiB0aGF0IGNvbXBpbGVyIGlzIG1vZGlmeWluZyB0aGUgc2l6ZS4KCjIwMDEtMTAtMjYgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBwcmotdXRpbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZy4gRml4IGJhZCBoZWFkZXIgZm9ybWF0LgoKMjAwMS0xMC0yNiAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNpbmZvLmFkczogRGVmaW5lIEFzc29jaWF0ZWRfTm9kZSB0byBvdmVybGFwIEVudGl0eSBmaWVsZC4gQ2xlYW51cC4KCgkqIHNpbmZvLmFkczogQ2xhcmlmeSB1c2Ugb2YgQXNzb2NpYXRlZF9Ob2RlIChkb2N1bWVudGF0aW9uIG9ubHkpLgoKCSogc2VtX2NoMTIuYWRiOiBDaGFuZ2UgTm9kZTQgdG8gQXNzb2NpYXRlZF9Ob2RlLiBDaGFuZ2UKCUFzc29jaWF0ZWRfTm9kZSB0byBHZXRfQXNzb2NpYXRlZF9Ob2RlLiBQdXQgdXNlIG9mIFVuY2hlY2tlZF9BY2Nlc3MKCW11Y2ggbW9yZSBuYXJyb3dseSBpbiBwbGFjZXMgd2hlcmUgbmVlZGVkLiBUaGVzZSBhcmUgY2xlYW51cHMuCgoyMDAxLTEwLTI2ICBKb2VsIEJyb2JlY2tlciA8YnJvYmVja2VAZ25hdC5jb20+CgoJKiA1em9zaW50ZS5hZHMgKG51bGxfcHRocmVhZCk6IG5ldyBjb25zdGFudC4KCgkqIDV6dGFwcm9wLmFkYjoKCShJbml0aWFsaXplX1RDQik6IEluaXRpYWxpemUgdGhyZWFkIElEIHRvIG51bGwsIHRvIGJlIGFibGUgdG8gdmVyaWZ5CgkgbGF0ZXIgdGhhdCB0aGlzIGZpZWxkIGhhcyBiZWVuIHNldC4KCShGaW5hbGl6ZV9UQ0IpOiBkaXR0by4KCShTdXNwZW5kX1Rhc2spOiBWZXJpZnkgdGhhdCB0aGUgdGhyZWFkIElEIGlzIG5vdCBudWxsIGJlZm9yZSB1c2luZyBpdC4KCShSZXN1bWVfVGFzayk6IGRpdHRvLgoKCSogcy10YXNkZWIuYWRiOgoJKFJlc3VtZV9BbGxfVGFza3MpOiBMb2NrIHRoZSB0YXNrcyBsaXN0IGJlZm9yZSB1c2luZyBpdC4KCShTdXNwZW5kX0FsbF9UYXNrcyk6IGRpdHRvLgoKMjAwMS0xMC0yNiAgUmljaGFyZCBLZW5uZXIgPGtlbm5lckBnbmF0LmNvbT4KCgkqIGRlY2wuYyAoZ25hdF90b19nbnVfZW50aXR5LCBjYXNlIEVfR2VuZXJhbF9BY2Nlc3NfVHlwZSk6CglNYWtlIGNvbnN0YW50IHZhcmlhbnQgb2YgZGVzaWduYXRlZCB0eXBlIGZvciBJc19BY2Nlc3NfQ29uc3RhbnQuCglDYWxsIHVwZGF0ZV9wb2ludGVyX3RvIHdpdGggbWFpbiB2YXJpYW50LgoKCSogdHJhbnMuYyAocHJvY2Vzc19mcmVlemVfZW50aXR5LCBwcm9jZXNzX3R5cGUpOgoJQ2FsbCB1cGRhdGVfcG9pbnRlcl90byBvbiBtYWluIHZhcmlhbnQuCgoJKiB1dGlscy5jICh1cGRhdGVfcG9pbnRlcl90byk6IE1ha2UgY29ycmVzcG9uZGluZyB2YXJpYW50IGZvciBORVdfVFlQRS4KCUlmIG1haW4gdmFyaWFudCwgdXBkYXRlIGFsbCBvdGhlciB2YXJpYW50cy4KCgkqIHV0aWxzMi5jIChidWlsZF91bmFyeV9vcCwgY2FzZSBJTkRJUkVDVF9SRUYpOiBObyBsb25nZXIgc2V0CglUUkVFX1NUQVRJQy4KCjIwMDEtMTAtMjYgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBwcmotdXRpbC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKMjAwMS0xMC0yNiAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHByai11dGlsLmFkYjogTWlub3IgcmVmb3JtYXR0aW5nCgoyMDAxLTEwLTI2ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogcHJqLWF0dHIuYWRiOiBNaW5vciByZWZvcm1hdHRpbmcgdGhyb3VnaG91dAoKMjAwMS0xMC0yNiAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHByai1hdHRyLmFkczogTWlub3IgcmVmb3JtYXR0aW5nCglBZGQgPz8/IGNvbW1lbnQgKHRoaXMgd2hvbGUgc3BlYyBoYXMgYWxtb3N0IG5vIGNvbW1lbnRzKQoKMjAwMS0xMC0yNiAgVmluY2VudCBDZWxpZXIgPGNlbGllckBnbmF0LmNvbT4KCgkqIGctb3NfbGliLmFkYiAoTm9ybWFsaXplX1BhdGhuYW1lKTogUHJlc2VydmUgdGhlIGRvdWJsZSBzbGFzaAoJKCIvLyIpIHRoYXQgcHJlY2VkZSB0aGUgZHJpdmUgbGV0dGVyIG9uIEludGVyaXguCgoyMDAxLTEwLTI2ICBHZWVydCBCb3NjaCA8Ym9zY2hAZ25hdC5jb20+CgoJKiBnbmF0X3JtLnRleGk6IEFkZCBHTkFUIFJlZmVyZW5jZSBNYW51YWwuCgoyMDAxLTEwLTI1ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX2NoOC5hZGIgKEFuYWx5emVfUGFja2FnZV9SZW5hbWluZyk6IFNraXAgYW5hbHlzaXMgaWYgTmFtZQoJaXMgRXJyb3IuIFNpbWlsYXIgY2hhbmdlIGZvciBvdGhlciByZW5hbWluZyBjYXNlcy4KCjIwMDEtMTAtMjUgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzLWF0YWNjby5hZHM6IEFkZCBwcmFnbWEgSW5saW5lX0Fsd2F5cyBmb3IgZnVuY3Rpb25zLgoJRml4IGhlYWRlciBmb3JtYXQuIEFkZCBjb3B5cmlnaHQgMjAwMQoKMjAwMS0xMC0yNSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHBhci1jaDMuYWRiIChQX1N1YnR5cGVfTWFya19SZXN5bmMpOiBmb3IgYW4gYW5vbnltb3VzIGFycmF5CglyZXR1cm4gRXJyb3IgcmF0aGVyIHRoYW4gRW1wdHkgc28gdGhhdCBhbmFseXNpcyBjYW4gcHJvY2VlZC4KCjIwMDEtMTAtMjUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fdXRpbC5hZGIgKEVudGVyX05hbWUpOiBiZXR0ZXIgaGFuZGxpbmcgb2YgY2FzY2FkZWQgZXJyb3IKCW1lc3NhZ2VzIHdoZW4gYSB1bml0IGFwcGVhcnMgaW4gaXRzIG93biBjb250ZXh0LgoKMjAwMS0xMC0yNSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV91dGlsLmFkYiAoRGVmaW5pbmdfRW50aXR5KTogaW4gY2FzZSBvZiBlcnJvciwgYXR0YWNoIGNyZWF0ZWQKCWVudGl0eSB0byBzcGVjaWZpY2F0aW9uLCBzbyB0aGF0IHNlbWFudGljIGFuYWx5c2lzIGNhbiBwcm9jZWVkLgoKMjAwMS0xMC0yNSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV91dGlsLmFkYgoJKERlZmluaW5nX0VudGl0eSk6IERlYWwgd2l0aCBFcnJvci4KCShQcm9jZXNzX0VuZF9MYWJlbCk6IERlYWwgd2l0aCBiYWQgZW5kIGxhYmVsIGZvci4KCjIwMDEtMTAtMjUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fZWxhYi5hZGIgKENoZWNrX0FfQ2FsbCk6IHJlZmluZSBtZXNzYWdlIHdoZW4gY2FsbCBpcyBpbiBhbgoJaW5zdGFuY2UgYnV0IGNhbGxlZSBpcyBub3QgZGVjbGFyZWQgaW4gdGhlIGdlbmVyaWMgdW5pdC4KCjIwMDEtMTAtMjUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fZWxhYi5hZGIgKENoZWNrX0FfQ2FsbCk6IGNoZWNrIGZvciByZW5hbWluZyBiZWZvcmUgZmluZGluZyB0aGUKCWVuY2xvc2luZyB1bml0LCB3aGljaCBtYXkgYWxyZWFkeSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgY2FsbGluZyB1bml0LgoKMjAwMS0xMC0yNSAgR2VlcnQgQm9zY2ggPGJvc2NoQGduYXQuY29tPgoKCSogNGdpbnRuYW0uYWRzOiBmaXggaGVhZGVyIGZvcm1hdC4KCjIwMDEtMTAtMjUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZV9DYWxsKTogaWYgdGhlIGNhbGwgaXMgYWN0dWFsbHkgYW4gaW5kZXhpbmcKCW9wZXJhdGlvbiBvbiB0aGUgcmVzdWx0IG9mIGEgcGFyYW1ldGVybGVzcyBjYWxsLCBwZXJmb3JtIGVsYWJvcmF0aW9uCgljaGVjayBhZnRlciB0aGUgbm9kZSBoYXMgYmVlbiBwcm9wZXJseSByZXdyaXR0ZW4uCgoJKiBzZW1fY2gxMi5hZGIgKENvcHlfR2VuZXJpY19Ob2RlKTogYWZ0ZXIgdGhlIHByb3BlciBib2R5IGhhcyBiZWVuCglpbmxpbmVkIHdpdGhpbiB0aGUgZ2VuZXJpYyB0cmVlLCB0aGUgZGVmaW5pbmcgaWRlbnRpZmllciBpcyBub3QgYQoJY29tcGlsYXRpb25fdW5pdC4KCjIwMDEtMTAtMjUgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fcmVzLmFkYiAoUmVzb2x2ZSk6IHNwZWNpYWwtY2FzZSByZXNvbHV0aW9uIG9mIE51bGwgaW4gYW4KCSBpbnN0YW5jZSBvciBhbiBpbmxpbmVkIGJvZHkgdG8gYXZvaWQgdmlldyBjb25mbGljdHMuCgoJKiBzZW1fY2gxMi5hZGIgKENvcHlfR2VuZXJpY19Ob2RlKTogZm9yIGFsbG9jYXRvcnMsIGNoZWNrIGZvciB2aWV3CgkgY29tcGF0aWJpbGl0eSBieSByZXRyaWV2aW5nIHRoZSBhY2Nlc3MgdHlwZSBvZiB0aGUgZ2VuZXJpYyBjb3B5LgoKMjAwMS0xMC0yNSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHNlbV9jaDMuYWRiOgoJKEFuYWx5emVfTnVtYmVyX0RlY2xhcmF0aW9uKTogSGFuZGxlIGVycm9yIGV4cHJlc3Npb24uCgkoU2lnbmVkX0ludGVnZXJfVHlwZV9EZWNsYXJhdGlvbik6IEhhbmRsZSBlcnJvciBib3VuZC4KCShBbmFseXplX1N1YnR5cGVfSW5kaWNhdGlvbik6IEhhbmRsZSBlcnJvciByYW5nZS4KCgkqIHNlbV91dGlsLmFkYiAoR2V0X0luZGV4X0JvdW5kcyk6IENoZWNrIGZvciBFcnJvci4KCjIwMDEtMTAtMjUgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiByZXN0cmljdC5hZGIgKFNldF9Ob19SdW5fVGltZV9Nb2RlKTogU2V0IERpc2NhcmRfTmFtZXMgYXMgZGVmYXVsdAoJaW4gbm8gcnVuIHRpbWUgbW9kZS4KCjIwMDEtMTAtMjUgIFBhc2NhbCBPYnJ5IDxvYnJ5QGduYXQuY29tPgoKCSogZ25hdG1lbS5hZGIgKFJlYWRfTmV4dCk6IGZpeCBDdXJzMiB2YWx1ZSB0byBwcm9wZXJseSBoYW5kbGUgcXVpZXQKCW1vZGUgY2FzZSBmb3IgQUxMT0MgY2FzZS4KCgkqIGduYXRtZW0uYWRiIChSZWFkX05leHQpOiBjb3JyZWN0bHkgZml4IHBhcnNpbmcgaW4gUXVpZXQgbW9kZSBvbgoJYWxsIHBsYXRmb3Jtcy4gSW1wcm92ZW1lbnQgb2YgbGFzdCBjaGFuZ2UuCgoyMDAxLTEwLTI1ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogZXhwX2NoNC5hZGIgKEV4cGFuZF9OX0FsbG9jYXRvcik6IE1pbm9yIHJlZm9ybWF0dGluZy4KCjIwMDEtMTAtMjUgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBvc2ludC5hZGIgKElzX1JlbGF0aXZlKTogUmVtb3ZlIGR1cGxpY2F0ZS4KCjIwMDEtMTAtMjUgIFBhc2NhbCBPYnJ5IDxvYnJ5QGduYXQuY29tPgoKCSogb3NpbnQuYWRiIChSZWFkX0RlZmF1bHRfU2VhcmNoX0RpcnMpOiBjb3JyZWN0bHkgZGV0ZWN0IHJlbGF0aXZlCglwYXRobmFtZXMgaW4gVU5JWCBhbmQgRE9TIHN0eWxlIHdpdGggZHJpdmUgbGV0dGVyLgoJKElzX1JlbGF0aXZlKTogbmV3IHJvdXRpbmUuCgoJKiBvc2ludC5hZGI6IE1pbm9yIHJlZm9ybWF0dGluZwoKCSogb3NpbnQuYWRiIChJc19SZWxhdGl2ZSk6IGltcGxlbWVudGF0aW9uIHVzaW5nCglHTkFULk9TX0xpYi5Jc19BYnNvbHV0ZV9QYXRoLiBCZXR0ZXIgZml4LgoKMjAwMS0xMC0yNSAgUGFzY2FsIE9icnkgPG9icnlAZ25hdC5jb20+CgoJKiBnLWRpcm9wZS5hZGIgKEJhc2VuYW1lKTogY29ycmVjdGx5IGNvbXB1dGUgb2Zmc2V0IGJldHdlZW4gdGhlCglvcmlnaW5hbCBQYXRoIGFuZCB0aGUgdHJhbnNsYXRlZCBvbmUuCgoJKiBnLWRpcm9wZS5hZGI6IChCYXNlX05hbWUpOiBhZGQgc29tZSBjb21tZW50cy4KCjIwMDEtMTAtMjUgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBleHBfaW1ndi5hZGIgKEV4cGFuZF9JbWFnZV9BdHRyaWJ1dGUpOiBEZWZlbmQgYWdhaW5zdCBiYWQgdXNlCglpbiBISUUgbW9kZSwgYXZvaWRzIGNvbXBpbGF0aW9uIGFiYW5kb25lZCBtZXNzYWdlCgoJKiBleHBfaW1ndi5hZGI6IENvcnJlY3QgdHlwbyBpbiBwcmV2aW91cyBjaGFuZ2UKCgkqIGV4cF9pbWd2LmFkYjogQ29ycmVjdCB0eXBvIGluIHByZXZpb3VzIGNoYW5nZSAobm90IG15IGRheSEpCgoyMDAxLTEwLTI1ICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogcy10cGlub3AuYWRzOiBBZGQgMjAwMSB0byBjb3B5cmlnaHQgbm90aWNlLiBGaXggaGVhZGVyIGZvcm1hdC4KCjIwMDEtMTAtMjUgIFBhc2NhbCBPYnJ5IDxvYnJ5QGduYXQuY29tPgoKCSogZy1hd2suYWRzOiBNb3ZlIGFsbCBwcmFnbWEgaW5saW5lcyBuZXh0IHRvIHRoZSByb3V0aW5lCgkgZGVjbGFyYXRpb25zLiBUaGlzIGlzIG1vcmUgdW5pZm9ybSB3aXRoIG90aGVyIEdOQVQgc3BlYy4KCjIwMDEtMTAtMjIgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBNYWtlLWxhbmcuaW4gKGduYXR0b29scywgY3Jvc3MtZ25hdHRvb2xzKTogUmVtb3ZlIGduYXRtZW0uCgoyMDAxLTEwLTE5ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKHRvb2xzLCBnbmF0dG9vbHMpOiBSZW1vdmUgZ25hdG1lbS4KCjIwMDEtMTAtMTcgIFJpY2hhcmQgSGVuZGVyc29uICA8cnRoQHJlZGhhdC5jb20+CgoJKiBNYWtlZmlsZS5pbiAobWlzYy5vKTogRGVwZW5kIG9uIGxhbmdob29rcy5oLgoJKiBtaXNjLmM6IEluY2x1ZGUgaXQuCgkoTEFOR19IT09LU19JTklULCBMQU5HX0hPT0tTX0lOSVRfT1BUSU9OUyk6IE5ldy4KCShMQU5HX0hPT0tTX0RFQ09ERV9PUFRJT04pOiBOZXcuCgkobGFuZ19ob29rcyk6IFVzZSBMQU5HX0hPT0tTX0lOSVRJQUxJWkVSLgoKMjAwMS0xMC0xNiAgRmxvcmlhbiBXZWltZXIgIDxmd0BkZW5lYi5lbnlvLmRlPgoKCSogdHJhbnMuYyAodHJlZV90cmFuc2Zvcm0pOiBBZGp1c3QgdG8gcmVjZW50IGNoYW5nZSBpbgoJZXhwYW5kX2FzbV9vcGVyYW5kcyB0byBpbXBsZW1lbnQgbmFtZWQgYXNtIG9wZXJhbmRzLgoKMjAwMS0xMC0xMSAgRWQgU2Nob25iZXJnICA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBleHBfY2g4LmFkYiAoRXhwYW5kX05fT2JqZWN0X1JlbmFtaW5nX0RlY2xhcmF0aW9uKTogQnVnZml4IGluCglyZW5hbWluZyBvZiBkaXNjcmltaW5hbnQgZm9yIG11dGFibGUgcmVjb3JkIHR5cGUuCgoyMDAxLTEwLTExICBSb2JlcnQgRGV3YXIgIDxkZXdhckBnbmF0LmNvbT4KCgkqIHZhbGlkc3cuYWRiOiBQcm9wZXJseSBzYXZlIC1nbmF0Vm4gc3RhdHVzLgoKMjAwMS0xMC0xMSAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIHVzYWdlLmFkYjogQWRkIGxpbmVzIGZvciBWIHN3aXRjaC4KCgkqIGduYXRjbWQuYWRiIChDT01QSUxFKTogUmV2aXNlIHRyYW5zbGF0aW9ucyBmb3IgLWduYXRWCgkoL1ZBTElESVRZX0NIRUNLSU5HKS4KCjIwMDEtMTAtMTEgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBzZW1fdHlwZS5hZGIgKEFkZF9PbmVfSW50ZXJwKTogYW4gb3BlcmF0b3IgZm9yIGEgdHlwZSBkZWNsYXJlZCBpbgoJYW4gZXh0ZW5zaW9uIG9mIFN5c3RlbSBpcyBrbm93biB0byBiZSB2aXNpYmxlLgoKMjAwMS0xMC0xMSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9ldmFsLmFkYiAoQ29tcGFyZV9GaXh1cCk6IGdldCB0aGUgYm91bmRzIG9mIGEgU3RyaW5nX0xpdGVyYWwKCXByb3Blcmx5LiBGaXhlcyByZWdyZXNzaW9uIG9uIEFDQVRTIEMzNDAwNUcuCgoyMDAxLTEwLTExICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogc2VtX2NoNS5hZGIgKEFuYWx5emVfSXRlcmF0aW9uX1NjaGVtZSk6IFN1cHByZXNzIHdhcm5pbmcgb24gbnVsbAoJbG9vcCBpbiBnZW5lcmljIGluc3RhbmNlLCBzaW5jZSB0aGlzIGlzIGxpa2VseSBub3QgdmVyeSB1c2VmdWwuCgoyMDAxLTEwLTExICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogcmVzdHJpY3QuYWRiIChEaXNhbGxvdyBpbiBOb19SdW5fVGltZV9Nb2RlKTogUHJvcGVybHkgc3BlY2lhbGl6ZQoJdGhlIGVycm9yIG1lc3NhZ2UgZm9yIGhpZ2ggaW50ZWdyaXR5IG1vZGUuCgoJKiBydHNmaW5kLmFkYiAoUlRFKTogR2l2ZSBtZXNzYWdlIGlmIHdlIHRyeSB0byBmaW5kIGFuIGVudGl0eSB0aGF0CglpcyBub3QgYXZhaWxhYmxlIGluIGhpZ2ggaW50ZWdyaXR5IG1vZGUuCgoJKiBydHNmaW5kLmFkczoKCShPS19Ub19Vc2VfSW5fSElFX01vZGUpOiBOZXcgYXJyYXkuCgkoUlRFKTogTWF5IHJldHVybiBFbXB0eSBpbiBoaWdoIGludGVncml0eSBtb2RlLgoKCSogcnRzZmluZC5hZHMgKE9LX1RvX1VzZV9Jbl9Ob19SdW5fVGltZV9Nb2RlKTogTmV3IG5hbWUgZm9yCglPS19Ub19Vc2VfSW5fSElFX01vZGUsIG5vdyBpbmNsdWRlcyBTeXN0ZW1fRkFUX3h4eC4KCgkqIHNlbV9jaDYuYWRiIChBbmFseXplX1N1YnByb2dyYW1fQm9keSk6IEtpbGwgYm9keSBpbiBwcmVkZWZpbmVkCgl1bml0IGlmIG5vdCBpbmxpbmVkIGFsd2F5cyBhbmQgaW4gbm8gcnVudGltZSBtb2RlLiBGaXhlcyBwcm9ibGVtCgljYXVzZWQgYnkgbmV3IFJ0c2ZpbmQgY2hhbmdlcy4KCgkqIHNlbV9jaDYuYWRiIChBbmFseXplX1N1YnJvZ3JhbV9Cb2R5KTogRG8gbm90IENoZWNrX1JlZmVyZW5jZXMgaWYKCWJvZHkgaXMgZGVsZXRlZC4KCgkqIHJ0c2ZpbmQuYWRiIChSVEUpOiBNYWtlIHN1cmUgd2UgZG8gbm90IHRyeSB0byBsb2FkIHVuaXQgYWZ0ZXIKCWdpdmluZyBtZXNzYWdlIGZvciBlbnRpdHkgbm90IGF2YWlsYWJsZSBpbiBoaWdoIGludGVncml0eSBtb2RlLgoKMjAwMS0xMC0xMSAgUGFzY2FsIE9icnkgPG9icnlAZ25hdC5jb20+CgoJKiBpbXB1bml0LmFkYjogQWRkIEdOQVQuQ1JDMzIuCgoyMDAxLTEwLTExICBFZCBTY2hvbmJlcmcgPHNjaG9uYmVyQGduYXQuY29tPgoKCSogZXhwX2ZpeGQuYWRiIChFeHBhbmRfTXVsdGlwbHlfRml4ZWRfQnlfRml4ZWRfR2l2aW5nX0ZpeGVkKTogaGFuZGxlCglwcm9wZXJseSB0aGUgY2FzZSB3aGVyZSBvbmUgdW5pdmVyc2FsIG9wZXJhbmQgaW4gYSBub24tc3RhdGljCglleHBvbmVudGlhdGlvbiBvZiBhIHJlYWwgbGl0ZXJhbC4KCjIwMDEtMTAtMTEgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBleHBfY2g3LmFkYiAoRmluZF9GaW5hbF9MaXN0KTogZm9yIGEgdHlwZSBhcHBlYXJpbmcgaW4gYSB3aXRoX3R5cGUKCWNsYXVzZSwgcmV0dXJuIHRoZSBnb2JhbCBmaW5hbGl6YXRpb24gbGlzdCwgZm9yIGxhY2sgb2YgYW50aGluZyBlbHNlLgoKMjAwMS0xMC0xMSAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIGV4cF9jaDcuYWRiIChNYWtlX1RyYW5zaWVudF9CbG9jayk6IGlmIHN0YXRlbWVudCBpcyB3aXRoaW4KCWV4Y2VwdGlvbiBoYW5kbGVyLCBhbHdheXMgdXNlIG5ldyB0cmFuc2llbnQgc2NvcGUgdG8gcGxhY2UgQ2xlYW4KCXByb2NlZHVyZS4KCjIwMDEtMTAtMTEgIFBhc2NhbCBPYnJ5IDxvYnJ5QGduYXQuY29tPgoKCSogTWFrZWZpbGUuaW46CgkoR05BVF9BREFfT0JKUyk6IGFkZCBnLWNyYzMyLm8sIGEtdGFncy5vLCBhLXN0cmVhbS5vCgkoR05BVEJJTkRfT0JKUyk6IGFkZCBnLWNyYzMyLm8sIGEtdGFncy5vLCBhLXN0cmVhbS5vCgkoR05BVExTX1JUTF9PQkpTKTogYWRkIGctY3JjMzIubwoJKEdOQVRNQUtFX1JUTF9PQkpTKTogYWRkIGctY3JjMzIubwoKCSogYWxpLXV0aWwuYWRiOgoJKENSQ19NYXRjaCk6IG5ldyBmdW5jdGlvbi4KCShHZXRfRmlsZV9DaGVja3N1bSk6IHJlbmFtZWQgR2V0X0ZpbGVfQ1JDLiBVc2UgdGhlIEdOQVQuQ1JDMzIgdW5pdAoJaW5zdGVhZCBvZiB0aGUgcHJldmlvdXMgc2ltcGxlIGNoZWNrc3VtIGFsZ29yaXRobS4KCShUaW1lX1N0YW1wX01pc21hdGNoKTogdXNlIENSQ19NYXRjaCBmb3IgY29tcGFyaXNvbi4KCShTZXRfU291cmNlX1RhYmxlKTogaWRlbS4KCgkqIGFsaS11dGlsLmFkczoKCShHZXRfRmlsZV9DaGVja3N1bSk6IHJlbmFtZWQgR2V0X0ZpbGVfQ1JDIGFzIG5vdyB3ZSBjb21wdXRlIENSQwoJaW5zdGVhZCBvZiBzaW1wbGUgY2hlY2tzdW0uCgkoQ1JDX01hdGNoKTogbmV3IGZ1bmN0aW9uLgoJKENSQ19FcnJvcik6IG5ldyBjb25zdGFudC4KCgkqIGFsaS5hZGIgKFNjYW5fQUxJKTogcmVuYW1lIHZhcmlhYmxlIENoayB0byBDUkMgYXMgd2UgYXJlIGhhbmRsaW5nCglhIENSQyBub3cgYW5kIG5vdCBhIHNpbXBsZSBjaGVja3N1bS4gQSBDUkMgdXNlcyBsb3dlci1jYXNlIGhleAoJbGV0dGVycywgZml4ZXMgYW1iaWd1aXR5IGluIHBhcnNpbmcuCgoJKiBhbGkuYWRzIChTZGVwX1JlY29yZC5DaGVja3N1bSk6IHJlbmFtZWQgU2RlcF9SZWNvcmQuQ1JDIGFzIHRoaXMKCWlzIHdoYXQgdGhpcyB2YXJpYWJsZSB3aWxsIHN0b3JlLgoKCSogYmNoZWNrLmFkYjogQ2hhbmdlIHJlZmVyZW5jZSB0byBjaGVjaHN1bSBpbiBjb21tZW50cyBieSBDUkMuCgkoQ2hlY2tfQ29uc2lzdGVuY3kpOiBSZW5hbWUgR2V0X0ZpbGVfQ2hlY2tzdW0gdG8gR2V0X0ZpbGVfQ1JDLgoJcmVuYW1lIEFsbF9DaGVja3N1bV9NYXRjaCB0byBBbGxfQ1JDX01hdGNoLiBDaGFuZ2UgZHVlIHRvIEFQSQoJcmVuYW1pbmcgc2luY2Ugbm93IEdOQVQgZG9lcyBub3QgdXNlIGEgc2ltcGxlIGNoZWNrc3VtIGJ1dCBhCglDUkMgdXNpbmcgR05BVC5DUkMzMi4KCgkqIGduYXRscy5hZGI6IFJlbmFtZSBDaGVja3N1bSB0byBDUkMgaW4gbWFueSBwbGFjZXMsIHdlIHVzZSBhIENSQwoJbm93IGFuZCBub3QgYW55bW9yZSBhIHNpbXBsZSBjaGVja3N1bS4KCgkqIGxpYi1sb2FkLmFkYjogVXNlIFNvdXJjZV9DUkMgaW5zdGVhZCBvZiBTb3VyY2VfQ2hlY2tzdW0gaW4gbWFueQoJcGxhY2VzLgoKCSogbGliLXdyaXQuYWRiIChXcml0ZV9BTEkpOiBVc2UgU291cmNlX0NSQyBpbnN0ZWFkIG9mIFNvdXJjZV9DaGVja3N1bS4KCgkqIHNjYW5zLmFkYjoKCShSZXN0b3JlX1NjYW5fU3RhdGUpOiByZW5hbWUgQ2hlY2tzdW0gdG8gQ1JDLgoJKFNhdmVfU2Nhbl9TdGF0ZSk6IGlkZW0uCgoJKiBzY2Fucy5hZHM6CglXaXRoIEdOQVQuQ1JDMzIuCgkoQ2hlY2tzdW0pOiByZW5hbWUgdG8gQ1JDLgoJKFNhdmVkX1NjYW5fU3RhdGUpOiBTYXZlX0NoZWNrc3VtIGZpZWxkIHJlbmFtZWQgdG8gU2F2ZV9DUkMKCgkqIHNjbi1ubGl0LmFkYjogUmVuYW1lIG1hbnkgQWNjdW11bGF0ZV9DaGVja3N1bSB0byBVcGRhdGUgKGZyb20KCUdOQVQuQ1JDMzIpLiAgVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgoJKiBzY24tc2xpdC5hZGI6IFJlbmFtZSBtYW55IEFjY3VtdWxhdGVfQ2hlY2tzdW0gdG8gVXBkYXRlIChmcm9tCglHTkFULkNSQzMyKS4gIFVwZGF0ZSBjb3B5cmlnaHQgbm90aWNlLgoKCSogc2NuLmFkYjoKCShBY2N1bXVsYXRlX0NoZWNrc3VtKTogcmVtb3ZlZC4KCShVcGRhdGUpOiBuZXcgcHJvY2VkdXJlLiBBZGQgYSB3aWRlLWNoYXJhY3RlciBpbnRvIHRoZSBDUkMuCgoJKiBzaW5wdXQtbC5hZGI6CgkoQ29tcGxldGVfU291cmNlX0ZpbGVfRW50cnkpOiB1c2UgQ1JDMzIgaW5zdGVhZCBvZiBzaW1wbGUgY2hlY2tzdW0uCgkoTG9hZF9GaWxlKTogZml4IGluaXRpYWxpemF0aW9uIG9mIFMgKGNoYW5nZSBTb3VyY2VfQ2hlY2tzdW0gdG8KCVNvdXJjZV9DUkMpCgoJKiBzaW5wdXQtcC5hZGIgKExvYWRfUHJvamVjdF9GaWxlKTogcmVuYW1lIFNvdXJjZV9DaGVja3N1bSB0bwoJU291cmNlX0NSQyBpbiBTIGluaXRpYWxpemF0aW9uLgoKCSogc2lucHV0LmFkYiAoU291cmNlX0NoZWNrc3VtKTogcmVuYW1lZCB0byBTb3VyY2VfQ1JDLgoKCSogc2lucHV0LmFkcyAoU291cmNlX0NoZWNrc3VtKTogcmVuYW1lZCB0byBTb3VyY2VfQ1JDLgoJVXBkYXRlIGNvbW1lbnRzIGZvciB0aGUgQ1JDLgoKCSogdHlwZXMuYWRiIChIZXgpOiBVc2UgbG93ZXJjYXNlIGZvciB0aGUgbGV0dGVyIHBhcnQuCgoJKiB0eXBlcy5hZHMgKEdldF9IZXhfU3RyaW5nKTogUmV0dXJucyB0aGUgaGV4YWRlY2ltYWwgcmVwcmVzZW50YXRpb24KCWZvciBhIHdvcmQuIFRoaXMgaXMgY3VycmVudGx5IHVzZWQgb25seSBmb3IgQ1JDLiBJbiBwcmV2aW91cyB2ZXJzaW9uLAoJdGhlIGNoZWNrc3VtIHdhcyB1c2luZyBhIHJlcHJlc2VudGF0aW9uIHdpdGggYWxsIGxldHRlciBiZWluZwoJdXBwZXItY2FzZS4gV2l0aCB0aGUgbmV3IGltcGxlbWVudGF0aW9uICh1c2luZyBDUkMpIHdlIGRvIG5vdCByZW1vdmUKCXRoZSAzMnRoIGJpdCBvZiB0aGUgQ1JDLCBzbyB3ZSBjYW4gaGF2ZSBhbiB1cHBlci1jYXNlIHN0YXJ0aW5nIGxldHRlcgoJaW4gdGhlIENSQy4gVGhpcyBpcyBub3QgcG9zc2libGUgdG8gcGFyc2UgaW4gU2Nhbl9BTEkgKGFsaS5hZGIpLgoJSXQgaXMgYW1iaWdvdXMgc2luY2UgdGhlIENSQyB3YXMgb3B0aW9uYWwgYW5kIGNvdWxkIGJlIGZvbGxvd2VkIGJ5CglvcHRpb25zIGxpa2UgRUIsIEVFLiBTbyBub3cgdGhpcyByb3V0aW5lcyB1c2VzIGxvd2VyLWNhc2UgbGV0dGVyIGZvcgoJdGhlIGhleGFkZWNpbWFsIHJlcHJlc2VudGF0aW9uLiBTdHJhbmdlIGVub3VnaCBvbmx5IGxvd2VyIGNhc2UgbGV0dGVycwoJd2hlcmUgY2hlY2tlZCBpbiBTY2FuX0FMSSAoZXZlbiBpZiB0aGlzIHdhcyBub3QgYSBwb3NzaWJsZSBjYXNlKS4KCgkqIGduYXR2c24uYWRzIChMaWJyYXJ5X1ZlcnNpb24pOiBjaGFuZ2VkIHRvIDMuMTVhLgoKCSogcy1jcmMzMi5hZHM6IEluaXRpYWwgdmVyc2lvbiBmcm9tIEdOQVQuQ1JDMzIuIFRoaXMgaXMgdGhlIHZlcnNpb24KCWZvciB0aGUgY29tcGlsZXIuCgoJKiBzLWNyYzMyLmFkYjogSW5pdGlhbCB2ZXJzaW9uIGZyb20gR05BVC5DUkMzMi4gVGhpcyBpcyB0aGUgdmVyc2lvbgoJZm9yIHRoZSBjb21waWxlci4KCgkqIGFsaS11dGlsLmFkYjogUmVkbyBwcmV2aW91cyBjaGFuZ2UgdG8gYXZvaWQgdXNpbmcgd29yZCBDUkMgZXZlcnl3aGVyZQoJQWRkIDIwMDEgdG8gY29weXJpZ2h0IG5vdGljZQoJKEFjY3VtdWxhdGVfQ2hlY2tzdW0pOiBNb2RpZnkgdG8gdXNlIFN5c3RlbS5DUkMzMi4KCgkqIGFsaS11dGlsLmFkczogUmVkbyBjaGFuZ2VzIG9mIHByZXZpb3VzIHJldmlzaW9uIHRvIGNvbnRpbnVlIHRvIHVzZQoJdGhlIHdvcmQgQ2hlY2tzdW0uIEFkZCAyMDAxIHRvIGNvcHlyaWdodCBub3RpY2UuCgoJKiBhbGkuYWRiOiBVbmRvIHNvbWUgb2YgcHJldmlvdXMgY2hhbmdlcywgbm90IG5lZWRlZC4KCUtlZXAgdGhlIGNoYW5nZSBmb3IgbG93ZXIgY2FzZSBsZXR0ZXJzIGluIHRoZSBjaGVja3N1bS4KCgkqIGFsaS5hZHM6IFVuZG8gcHJldmlvdXMgY2hhbmdlIG5vdCBuZWVkZWQuCgoJKiBiY2hlY2suYWRiOiBVbmRvIG1vc3Qgb2YgcHJldmlvdXMgY2hhbmdlLCBub3QgbmVlZGVkLgoJQnV0IGRvIHVzZSBDaGVja3N1bXNfTWF0Y2ggZm9yIGNoZWNrc3VtIGNvbXBhcmlzb24uCgoJKiBnbmF0bHMuYWRiOiBVbmRvIG1vc3Qgb2YgcHJldmlvdXMgY2hhbmdlLCBub3QgbmVlZGVkLgoJQnV0IGRvIHVzZSBDaGVja3N1bXNfTWF0Y2ggZm9yIGNvbXBhcmluZyBjaGVja3N1bXMuCgoJKiBsaWItbG9hZC5hZGI6IFVuZG8gcHJldmlvdXMgY2hhbmdlLCBub3QgbmVlZGVkLgoKCSogbGliLXdyaXQuYWRiOiBVbmRvIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZC4KCgkqIGxpYi13cml0LmFkczogRG9jdW1lbnQgdGhhdCBjaGVja3N1bXMgdXNlIGxvd2VyIGNhc2UsCglub3QgdXBwZXIgY2FzZSBsZXR0ZXJzLgoKCSogc2NhbnMuYWRiOiBVbmRvIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZAoKCSogc2NhbnMuYWRzOiBVbmRvIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZC4KCgkqIHNjbi1ubGl0LmFkYjogVW5kbyBwcmV2aW91cyBjaGFuZ2VzLCBub3QgbmVlZGVkLgoKCSogc2NuLXNsaXQuYWRiOiBVbmRvIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZC4gIEZpeCBoZWFkZXIgZm9ybWF0LgoKCSogc2NuLmFkYjoKCShBY2N1bXVsYXRlX0NoZWNrc3VtKTogVXNlIFN5c3RlbS5DUkMzMi4KCShJbml0aWFsaXplX0NoZWNrc3VtKTogTmV3IHByb2NlZHVyZS4KCVJlbW92ZSBvdGhlciBjaGFuZ2VzIG9mIHByZXZpb3VzIHJldmlzaW9uLgoKCSogc2lucHV0LXAuYWRiOiBVbmRvIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZC4KCgkqIHNpbnB1dC5hZGI6IFVuZG8gcHJldmlvdXMgY2hhbmdlLCBub3QgbmVlZGVkLgoKCSogc2lucHV0LWwuYWRiOiBVbmRvIHByZXZpb3VzIGNoYW5nZSwgbm90IG5lZWRlZC4KCgkqIHNpbnB1dC5hZHM6IFVuZG8gcHJldmlvdXMgY2hhbmdlLCBub3QgbmVlZGVkLiAgS2VlcCBvbmx5IGNvbW1lbnQKCW9uIG5ldyBjaGVja3N1bSBhbGdvcml0aG0KCgkqIE1ha2VmaWxlLmluOiBBZGQgcy1jcmMzMiBhcyBuZWVkZWQsIHJlbW92ZSBnLWNyYzMyLgoJQWxzbyByZW1vdmUgYS10YWdzIGFuZCBhLXN0cmVhbSBmcm9tIEdOQVQgc291cmNlcy4KCgkqIGFsaS5hZGIgKFNjYW5fQUxJKTogZml4IHR5cG8gaW50cm9kdWNlIGluIGxhdGVzdCBjaGVjay1pbi4KCgkqIE1ha2VmaWxlLmluIChHTkFUUlRMX05PTlRBU0tJTkdfT0JKUyk6IEFkZCBnLWNyYzMyLm8uCgoyMDAxLTEwLTExICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogZWluZm8uaDogUmVnZW5lcmF0ZS4KCgkqIG5tYWtlLmFkczogUmVnZW5lcmF0ZS4KCgkqIG5tYWtlLmFkYjogUmVnZW5lcmF0ZS4KCgkqIHNpbmZvLmg6IFJlZ2VuZXJhdGUuCgoJKiB0cmVlcHJzLmFkYjogUmVnZW5lcmF0ZS4KCjIwMDEtMTAtMTAgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBnbmF0LXN0eWxlLnRleGk6IE5ldyBmaWxlIGRlc2NyaWJpbmcgY29kaW5nIGd1aWRlbGluZXMgZm9yIEFkYS4KCjIwMDEtMTAtMTAgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBlaW5mby5hZGIgKFdyaXRlX0VudGl0eV9GbGFncyk6IEVsYWJvcmF0aW9uX0VudGl0eV9SZXF1aXJlZAoJaXMgRmxhZzE3NC4KCjIwMDEtMTAtMTAgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiBzbmFtZXMuYWRzOiBBZGQgbmV3IG5hbWVzIGZvciBwcm9qZWN0IGZhY2lsaXR5LgoKCSogc25hbWVzLmFkYjogVXBkYXRlIHRvIHJlZmxlY3Qgc25hbWVzLmFkcyBjaGFuZ2VzLgoKCSogc25hbWVzLmg6IFVwZGF0ZSB0byByZWZsZWN0IHNuYW1lcy5hZHMgY2hhbmdlcy4KCjIwMDEtMTAtMTAgIFZpbmNlbnQgQ2VsaWVyIDxjZWxpZXJAZ25hdC5jb20+CgoJKiBtYWtlLmFkYjoKCShBZGRfU3dpdGNoZXMpOiByZWZsZWN0IHRoZSBjaGFuZ2VzIGZvciB0aGUgc3dpdGNoZXMgYXR0cmlidXRlcwoJRGVmYXVsdF9Td2l0Y2hlcyBpbmRleGVkIGJ5IHRoZSBwcm9ncmFtbWluZyBsYW5ndWFnZSwKCVN3aXRjaGVzIGluZGV4ZWQgYnkgdGhlIGZpbGUgbmFtZS4KCShDb2xsZWN0X0FyZ3VtZW50c19BbmRfQ29tcGlsZSk6IElkZW0uCglSZWZsZWN0IHRoZSBhdHRyaWJ1dGUgbmFtZSBjaGFuZ2VzLgoKCSogcHJqLWF0dHIuYWRiOgoJKEluaXRpYWxpc2F0aW9uX0RhdGEpOiBDaGFuZ2UgdGhlIG5hbWVzIG9mIHNvbWUgcGFja2FnZXMgYW5kCglhdHRyaWJ1dGVzLgoJKEluaXRpYWxpemUpOiBwcm9jZXNzIGNhc2UgaW5zZW5zaXRpdmUgYXNzb2NpYXRpdmUgYXJyYXlzLgoKCSogcHJqLWF0dHIuYWRzOgoJKEF0dHJpYnV0ZV9LaW5kKTogUmVtb3ZlIEJvdGgsIGFkZCBDYXNlX0luc2Vuc2l0aXZlX0Fzc29jaWF0aXZlX0FycmF5LgoKCSogcHJqLWRlY3QuYWRiOgoJKFBhcnNlX0F0dHJpYnV0ZV9EZWNsYXJhdGlvbik6IEZvciBjYXNlIGluc2Vuc2l0aXZlIGFzc29jaWF0aXZlCgkgYXJyYXlzLCBzZXQgdGhlIGluZGV4IHN0cmluZyB0byBsb3dlciBjYXNlLgoKCSogcHJqLWVudi5hZGI6CglSZWZsZWN0IHRoZSBjaGFuZ2VzIG9mIHRoZSBwcm9qZWN0IGF0dHJpYnV0ZXMuCgoJKiBwcmotbm1zYy5hZGI6CglSZXBsYWNlIENoZWNrX05hbWluZ19TY2hlbWUgYnkgQWRhX0NoZWNrIGFuZAoJTGFuZ3VhZ2VfSW5kZXBlbmRlbnRfQ2hlY2suCgoJKiBwcmotbm1zYy5hZHM6CglSZXBsYWNlZCBDaGVja19OYW1pbmdfU2NoZW1lIGJ5IDIgcHJvY2VkdXJlczoKCUFkYV9DaGVjayBhbmQgTGFuZ3VhZ2VfSW5kZXBlbmRlbnRfQ2hlY2suCgoJKiBwcmotcHJvYy5hZGI6CgkoUHJvY2Vzc19EZWNsYXJhdGl2ZV9JdGVtcyk6IEZvciBjYXNlLWluc2Vuc2l0aXZlIGFzc29jaWF0aXZlCglhcnJheXMsIHNldCB0aGUgaW5kZXggc3RyaW5nIHRvIGxvd2VyIGNhc2UuCgkoUmVjdXJzaXZlX0NoZWNrKTogQ2FsbCBQcmouTm1zYy5BZGFfQ2hlY2ssIGluc3RlYWQgb2YKCVByai5ObXNjLkNoZWNrX05hbWluZ19TY2hlbWUuCgoJKiBwcmotdHJlZS5hZGI6CgkoQ2FzZV9JbnNlbnNpdGl2ZSk6IE5ldyBmdW5jdGlvbgoJKFNldF9DYXNlX0luc2Vuc2l0aXZlKTogTmV3IHByb2NlZHVyZQoKCSogcHJqLXRyZWUuYWRzOgoJKENhc2VfSW5zZW5zaXRpdmUpOiBOZXcgZnVuY3Rpb24KCShTZXRfQ2FzZV9JbnNlbnNpdGl2ZSk6IE5ldyBwcm9jZWR1cmUKCShQcm9qZWN0X05vZGVfUmVjb3JkKTogTmV3IGZsYWcgQ2FzZV9JbnNlbnNpdGl2ZS4KCgkqIHByai11dGlsLmFkYjoKCShWYWx1ZV9PZik6IG5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIHN0cmluZyB2YWx1ZSBvZiBhIHNpbmdsZQoJc3RyaW5nIHZhcmlhYmxlIG9yIGF0dHJpYnV0ZS4KCgkqIHByai11dGlsLmFkczoKCShWYWx1ZV9PZik6IG5ldyBmdW5jdGlvbiB0byBnZXQgdGhlIHN0cmluZyB2YWx1ZSBvZiBhIHNpbmdsZQoJc3RyaW5nIHZhcmlhYmxlIG9yIGF0dHJpYnV0ZS4KCgkqIHByai5hZGI6CgkoQWRhX0RlZmF1bHRfU3BlY19TdWZmaXgpOiBOZXcgZnVuY3Rpb24KCShBZGFfRGVmYXVsdF9JbXBsX1N1ZmZpeCk6IE5ldyBmdW5jdGlvbgoJQ2hhbmdlIGRlZmluaXRpb25zIG9mIHNldmVyYWwgY29uc3RhbnRzIHRvIHJlZmxlY3QKCW5ldyBjb21wb25lbnRzIG9mIHJlY29yZCB0eXBlcy4KCgkqIHByai5hZHM6CgkoTmFtaW5nX0RhdGEpOiBDaGFuZ2Ugc2V2ZXJhbCBjb21wb25lbnRzIHRvIHJlZmxlY3QgbmV3CgllbGVtZW50cyBvZiBuYW1pbmcgc2NoZW1lcy4KCShQcm9qZWN0X0RhdGEpOiBOZXcgZmxhZ3MgU291cmNlc19QcmVzZW50IGFuZAoJTGFuZ3VhZ2VfSW5kZXBlbmRlbnRfQ2hlY2tlZC4KCShBZGFfRGVmYXVsdF9TcGVjX1N1ZmZpeCk6IE5ldyBmdW5jdGlvbi4KCShBZGFfRGVmYXVsdF9JbXBsX1N1ZmZpeCk6IE5ldyBmdW5jdGlvbi4KCgkqIHNuYW1lcy5hZHM6CglNb2RpZmljYXRpb24gb2YgcHJlZGVmaW5lZCBuYW1lcyBmb3IgcHJvamVjdCBtYW5hZ2VyOiBhZGRlZAoJSW1wbGVtZW50YXRpb24sIFNwZWNpZmljYXRpb25fRXhjZXB0aW9ucywgSW1wbGVtZW50YXRpb25fRXhjZXB0aW9ucywKCVNwZWNpZmljYXRpb25fU3VmZml4LCBJbXBsZW1lbnRhdGlvbl9TdWZmaXgsIFNlcGFyYXRlX1N1ZmZpeCwKCURlZmF1bHRfU3dpdGNoZXMsIF9MYW5ndWFnZXMsIEJ1aWxkZXIsIENyb3NzX1JlZmVyZW5jZSwKCUZpbmRlci4gUmVtb3ZlZCBCb2R5X1BhcnQsIFNwZWNpZmljYXRpb25fQXBwZW5kLCBCb2R5X0FwcGVuZCwKCVNlcGFyYXRlX0FwcGVuZCwgR25hdG1ha2UsIEduYXR4cmVmLCBHbmF0ZmluZCwgR25hdGJpbmQsCglHbmF0bGluay4KCgkqIHByai5hZHM6IChBZGFfRGVmYXVsdF9TcGVjX1N1ZmZpeCwgQWRhX0RlZmF1bHRfSW1wbF9TdWZmaXgpOgoJQWRkIGNvbW1lbnRzLgoKCSogcHJqLW5tc2MuYWRiIChBZGFfQ2hlY2spOiBUZXN0IHRoYXQgU2VwYXJhdGVfU3VmZml4IGlzIGRlZmF1bHRlZCwKCW5vdCB0aGF0IGl0IGlzIE5pbF9WYXJpYWJsZV9WYWx1ZS4KCgkqIHByai5hZHM6IEFkZCA/Pz8gZm9yIHVuY29tbWVudGVkIGRlY2xhcmF0aW9ucwoKMjAwMS0xMC0xMCAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIHNlbV9wcmFnLmFkYjogKEFuYWx5emVfUHJhZ21hLCBjYXNlIEV4dGVybmFsKTogSWYgZW50aXR5IGlzIGEKCWNvbnN0YW50LCBkbyBub3QgaW5kaWNhdGUgcG9zc2libGUgbW9kaWZpY2F0aW9uLCBzbyB0aGF0IGdpZ2kgY2FuCgl0cmVhdCBpdCBhcyBhIGJvbmEgZmlkZSBjb25zdGFudC4KCjIwMDEtMTAtMTAgIFJvYmVydCBEZXdhciA8ZGV3YXJAZ25hdC5jb20+CgoJKiBzZW1fcHJhZy5hZGI6IEFkZCBwcm9jZXNzaW5nIGZvciBwcmFnbWEgRXh0ZXJuYWwuCgoJKiBzbmFtZXMuYWRzOiBBZGQgZW50cnkgZm9yIHByYWdtYSBFeHRlcm5hbC4KCgkqIHBhci1wcmFnLmFkYjogQWRkIHByYWdtYSBFeHRlcm5hbC4KCgkqIHNuYW1lcy5hZGI6IFVwZGF0ZWQgdG8gbWF0Y2ggc25hbWVzLmFkcy4KCjIwMDEtMTAtMTAgIEVkIFNjaG9uYmVyZyA8c2Nob25iZXJAZ25hdC5jb20+CgoJKiBleHBfY2g0LmFkYiAoRXhwYW5kX05fQWxsb2NhdG9yKTogR2VuZXJhdGUgbWVhbmluZ2Z1bCBuYW1lcyBmb3IKCWEgZHluYW1pYyB0YXNrIGlmIHRoZSBhbGxvY2F0b3IgYXBwZWFycyBpbiBhbiBpbmRleGVkIGFzc2lnbm1lbnQKCW9yIHNlbGVjdGVkIGNvbXBvbmVudCBhc3NpZ25tZW50LgoKCSogZXhwX3V0aWwuYWRiIChCdWlsZF9UYXNrX0FycmF5X0ltYWdlLCBCdWlsZF9UYXNrX1JlY29yZF9JbWFnZSk6CglGb3IgYSBkeW5hbWljIHRhc2sgaW4gYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQsIHVzZSB0YXJnZXQgb2YKCWFzc2lnbm1lbnQgdG8gZ2VuZXJhdGUgbWVhbmluZ2Z1bCBuYW1lLgoKMjAwMS0xMC0xMCAgRWQgU2Nob25iZXJnIDxzY2hvbmJlckBnbmF0LmNvbT4KCgkqIGVpbmZvLmFkYiAoV3JpdGVfRmllbGQxOV9OYW1lKTogQm9keV9FbnRpdHkgaXMgYWxzbyBkZWZpbmVkIGZvcgoJYSBnZW5lcmljIHBhY2thZ2UuCgoJKiBlaW5mby5hZHM6IEJvZHlfRW50aXR5IGlzIGFsc28gZGVmaW5lZCBmb3IgZ2VuZXJpYyBwYWNrYWdlLgoJRG9jdW1lbnRhdGlvbiBjaGFuZ2Ugb25seQoKCSogZXhwX2FnZ3IuYWRiIChCdWlsZF9BcnJheV9BZ2dyX0NvZGUpOiBXaGVuIGV4cGFuZGluZyBhbgoJb3RoZXJzX2Nob2ljZSBmb3IgYSBkaXNjcmltaW5hdGVkIGNvbXBvbmVudCBpbml0aWFsaXphdGlvbiwKCWNvbnZlcnQgZGlzY3JpbWluYW50IHJlZmVyZW5jZXMgaW50byB0aGUgY29ycmVzcG9uZGluZyBkaXNjcmltaW5hbHMuCgoJKiBleHBfY2gzLmFkYiAoR2V0X1NpbXBsZV9Jbml0X1ZhbCk6IEFkZCBxdWFsaWZpY2F0aW9uIHRvIGFnZ3JlZ2F0ZQoJb25seSBpZiBvcmlnaW5hbCB0eXBlIGlzIHByaXZhdGUgYW5kIGV4cHJlc3Npb24gaGFzIHRvIGJlIHdyYXBwZWQKCWluIGEgY29udmVyc2lvbi4KCgkqIGNoZWNrcy5hZGI6CgkoQXBwbHlfQ29uc3RyYWludF9DaGVjayk6IERvIG5vdCBwZXJmb3JtIGxlbmd0aCBjaGVjawoJaWYgZXhwcmVzc2lvbiBpcyBhbiBhZ2dyZWdhdGUgd2l0aCBvbmx5IGFuIG90aGVyc19jaG9pY2UuCgkoTGVuZ3RoX05fQ29uZCk6IHR3byByZWZlcmVuY2VzIHRvIHRoZSBzYW1lIGluX3BhcmFtZXRlcgoJKHR5cGljYWxseSB0aGUgZGlzY3JpbWluYWwgaW4gYW4gaW5pdF9wcm9jKSBkZW5vdGUgdGhlIHNhbWUgdmFsdWUuCglUd28gdXNlZnVsIG9wdGltaXphdGlvbiB1bmNvdmVyZWQgYnkgYnVnZml4ZXMgYWJvdmUuCgoyMDAxLTEwLTEwICBSb2JlcnQgRGV3YXIgPGRld2FyQGduYXQuY29tPgoKCSogeGVpbmZvLmFkYjogQ2hhbmdlIGludCB0byBjaGFyIGluIHRyYW5zbGF0aW9uIG9mIGVudW1lcmF0aW9uIHR5cGVzLgoJVGhpcyBmaXhlcyBhIHByb2JsZW0gaW4gdGhlIEMgcmVwcmVzZW50YXRpb24gb2YgY29tcG9uZW50IGFsaWdubWVudC4KCUFkZCAyMDAxIHRvIGNvcHlyaWdodCBub3RpY2UKCjIwMDEtMTAtMTAgIFJpY2hhcmQgS2VubmVyIDxrZW5uZXJAZ25hdC5jb20+CgoJKiBkZWNsLmM6ICh2YWxpZGF0ZV9zaXplKTogRG8gY2hlY2sgc2l6ZSBvZiBvYmplY3Qgb2YgaW50ZWdyYWwgdHlwZQoJaWYgaXQgaXMgYSBwYWNrZWQgYXJyYXkgdHlwZS4KCjIwMDEtMTAtMTAgIFJpY2hhcmQgS2VubmVyIDxrZW5uZXJAZ25hdC5jb20+CgoJKiBkZWNsLmM6IChnbmF0X3RvX2dudV9lbnRpdHksIGNhc2Ugb2JqZWN0KTogQWxzbyBtYXRlcmlhbGl6ZQoJVkFSX0RFQ0wgZm9yIGNvbnN0YW50IGlmIG5vdCBJc19QdWJsaWMgYnV0IC1PMC4KCjIwMDEtMTAtMTAgIFJpY2hhcmQgS2VubmVyICA8a2VubmVyQGduYXQuY29tPgoKCSogbWlzYy5jIChzdHJ1Y3QgbGFuZ19ob29rcyk6IEFkZCBuZXcgaW5pdGlhbGl6ZXIgdG8gbWF0Y2ggR0NDIGNoYW5nZS4KCjIwMDEtMTAtMTAgIEdlZXJ0IEJvc2NoICA8Ym9zY2hAZ25hdC5jb20+CgoJKiB4bm1ha2UuYWRiIChYTm1ha2UpOiBGaXggaGFuZGxpbmcgb2YgLXMvLWIgb3B0aW9ucy4gIE5vIGxvbmdlcgoJdXNlICcvJyBhcyBzd2l0Y2ggY2hhcmFjdGVyLCBhbGxvd2luZyBmb3IgYWJzb2x1dGUgZmlsZSBuYW1lcy4KCjIwMDEtMTAtMDkgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIDRnaW50bmFtLmFkcywgTWFrZS1sYW5nLmluLCBNYWtlZmlsZS5pbiwgY29uZmlnLWxhbmcuaW46IFVwZGF0ZQoJRlNGIGFkZHJlc3MuCgoyMDAxLTEwLTA4ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogTWFrZWZpbGUuaW4gKHRyZWVwcnMuYWRzLCBlaW5mby5oLCBzaW5mby5oLCBubWFrZS5hZGIsIG5tYWtlLmFkcyk6CglBdXRvbWF0aWNhbGx5IGJ1aWxkIHV0aWxpdGllcyB3aGVuIGZpbGVzIG5lZWQgdG8gYmUgcmVnZW5lcmF0ZWQuCgoyMDAxLTEwLTA4ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogeHNuYW1lcy5hZGI6IE5ldyB1dGlsaXR5IGZvciB1cGRhdGluZyBzbmFtZXMuYWRzIGFuZCBzbmFtZXMuYWRiCgoyMDAxLTEwLTA4ICBaYWNrIFdlaW5iZXJnICA8emFja0Bjb2Rlc291cmNlcnkuY29tPgoKCSogTWFrZS1sYW5nLmluIChBREFGTEFHUyk6IEFkZCAtVyAtV2FsbC4KCShBREFfRkxBR1NfVE9fUEFTUyk6IFNldCBBREFfQ0ZMQUdTPSQoQ0ZMQUdTKSBhbHNvLgoJKGduYXQxKTogQWxzbyBkZXBlbmQgb24gYXR0cmlicy5vLgoJKGduYXRsaWIsIGduYXRsaWItc2hhcmVkKTogU2V0IENDIGFuZCBBREFDIGluIHJlY3Vyc2l2ZSBtYWtlLgoJKiBNYWtlZmlsZS5pbiAoWF9BREFGTEFHUywgVF9BREFGTEFHUyk6IE5ldy4KCShBREFDKTogU2V0IHRvIEBBREFDQCBpbiBzdGFnZTEsICQoQ0MpIGxhdGVyLgoJKEFEQUZMQUdTKTogQWRkIC1XIC1XYWxsLgoJKEFMTF9BREFGTEFHUywgTU9TVF9BREFGTEFHUyk6IEFkZCBYX0FEQUZMQUdTIGFuZCBUX0FEQUZMQUdTOwoJdGFrZSBvdXQgQ0ZMQUdTLgoKCSguYWRiLm8sIC5hZHMubywgYS1udW1hdXgubywgYS10ZWlvZWQubywgcy1pbnRlcnIubywKCXMtdGFza2luLm8sIHNkZWZhdWx0Lm8sIHMtdGFzZGViLm8sIHMtdmFmbG9wLm8sIGEtZXhjZXB0Lm8sCglzLWFzc2VydC5vLCBzLXN0YWxpYi5vLCBzLW1lbW9yeS5vLCBtZW10cmFjay5vLCBtbGliLXRndC5vKToKCVVzZSAkKEFEQUMpLCBub3QgJChDQyksIGFzIGNvbXBpbGF0aW9uIGNvbW1hbmQuCgoJKGduYXR0b29scyk6IERlcGVuZCBkaXJlY3RseSBvbiB0b29scyB0byBidWlsZCwgZG9uJ3QgdXNlCglyZWN1cnNpdmUgbWFrZS4KCShnbmF0bGliKTogU2V0IEFEQV9DRkxBR1M9JChHTkFUTElCQ0ZMQUdTKSBpbiByZWN1cnNpdmUgbWFrZS4KCgkqIGVpbmZvLmgsIHNpbmZvLmg6IE5ldyBmaWxlcyAoYXV0b2dlbmVyYXRlZCkuCgoyMDAxLTEwLTA4ICBSaWNoYXJkIEhlbmRlcnNvbiAgPHJ0aEByZWRoYXQuY29tPgoKCSogY29tcGVyci5hZGIgKEFib3J0X0luX1Byb2dyZXNzKTogTmV3LgoJKENvbXBpbGVyX0Fib3J0KTogVXNlIGl0IHRvIHByZXZlbnQgcmVjdXJzaW9uLgoKMjAwMS0xMC0wOCAgUm9iZXJ0IERld2FyIDxkZXdhckBnbmF0LmNvbT4KCgkqIGF0cmVlLmFkYjogU2V0IEVycm9yX1Bvc3RlZCBpbiBFcnJvciBub2RlLCBoZWxwcyBlcnJvciByZWNvdmVyeS4KCgkqIHBhci1lbmRoLmFkYiAoT3V0cHV0X0VuZF9FeHBlY3RlZCk6IFdlIHNob3VsZCBhbHNvIG5vdCB0ZXN0CglFcnJvcl9Qb3N0ZWQgb24gdGhlIEVycm9yIG5vZGUsIHNpbmNlIG5vdyBpdCBpcyBhbHdheXMgc2V0LgoKCSogY3N0YW5kLmFkYiAoQ3JlYXRlX1N0YW5kYXJkKTogU2V0IEV0eXBlIG9mIEVycm9yIHRvIEFueV9UeXBlCgl0byBoZWxwIGVycm9yIHJlY292ZXJ5LiBQYXJ0IG9mIGdlbmVyYWwgd29yayBvbiA5NDA3LTAwNC4KCgkqIHBhci5hZGI6IEFkZCA/Pz8gZm9yIG1pc3VzZSBvZiBlcnJvcgoKCSogc2VtX3Jlcy5hZGI6CgkoUmVzb2x2ZSk6IERlZmVuZCBhZ2FpbnN0IEVycm9yLCBmaXhlcyA5NDA3LTAwMy4KCShSZXNvbHZlX0Rpc2NyZXRlX1N1YnR5cGVfSW5kaWNhdGlvbik6IERlZmVuZCBhZ2FpbnN0IEVycm9yLgoKCSogc2luZm8uYWRzIChOX0Vycm9yKTogTm93IGhhcyBFdHlwZSBmaWVsZCAod2hpY2ggd2lsbCBiZSBzZXQKCXRvIEFueV9UeXBlIHRvIGhlbHAgZXJyb3IgcmVjb3ZlcnkpLgoKMjAwMS0xMC0wOCAgUmljaGFyZCBLZW5uZXIgKGtlbm5lckBnbmF0LmNvbSkKCgkqIG1pc2MuYyAoZ25hdF9leHBhbmRfZXhwciwgY2FzZSBVTkNIRUNLRURfQ09OVkVSVF9FWFBSKToKCUNvbnNpc3RlbnRseSBzZXQgTUVNIGF0dHJpYnV0ZXMgZnJvbSBleHByZXNzaW9uOyBmaXhlcwoJYm9vdHN0cmFwIGZhaWx1cmUgb24geDg2LgoKMjAwMS0xMC0wOCAgR2VlcnQgQm9zY2ggIChib3NjaEBnbmF0LmNvbSkKCgkqIDVvb3NpbnRlLmFkYjogQWRkIDIwMDEgdG8gY29weXJpZ2h0IG5vdGljZS4KCjIwMDEtMTAtMDggIEdlZXJ0IEJvc2NoICAoYm9zY2hAZ25hdC5jb20pCgoJKiBjZWluZm8uYWRiOiBBZGQgdXRpbGl0eSBmb3IgY29uc2lzdGVuY3kgY2hlY2tpbmcgb2YgZWluZm8uYWRbYnNdLgoKCSogY3NpbmZvLmFkYjogQWRkIHV0aWxpdHkgZm9yIGNvbnNpc3RlbmN5IGNoZWNraW5nIG9mIHNpbmZvLmFkW2JzXS4KCjIwMDEtMTAtMDcgIEpvc2VwaCBTLiBNeWVycyAgPGpzbTI4QGNhbS5hYy51az4KCgkqIDVvb3NpbnRlLmFkYjogRml4IHNwZWxsaW5nIGVycm9yIG9mICJzZXBhcmF0ZSIgYXMgInNlcGVyYXRlIi4KCjIwMDEtMTAtMDUgIEdlZXJ0IEJvc2NoICAoYm9zY2hAZ25hdC5jb20pCgoJKiBhZGFpbnQuaDogU21hbGwgZm9ybWF0dGluZyBmaXguCgoyMDAxLTEwLTA0ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogc3lzZGVwLmMgKF9fZ25hdF9zZXRfYmluYXJ5X21vZGUsIF9fZ25hdF9zZXRfdGV4dF9tb2RlKToKCUFyZyBpcyBpbnQsIG5vdCBGSUxFICosIGluIGR1bW15IHZlcnNpb24gb2YgZnVuY3Rpb25zLgoKCSogYWRhaW50LmggKF9fZ25hdF9zZXRfYmluYXJ5X21vZGUsIF9fZ25hdF9zZXRfdGV4dF9tb2RlKToKCUFyZyBpcyBpbnQsIG5vdCBGSUxFICouCgoyMDAxLTEwLTA0ICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogM2xzb2Njb24uYWRzOiBBZGRlZCBmaWxlLCBtaXNzZWQgd2l0aCBpbml0aWFsIGNoZWNrIGlucy4KCgkqIDRsaW50bmFtLmFkczogRml4IGhlYWRlciBmb3JtYXQuCglDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNWlvc2ludGUuYWRiOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNWlvc2ludGUuYWRzOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNWl0YXByb3AuYWRiOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogNWl0YXNwcmkuYWRzOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoJVXBkYXRlIGNvcHlyaWdodCBub3RpY2UuCgoJKiA1bGludG1hbi5hZGI6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiA1bG1sLXRndC5hZGI6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiA1bG9zaW50ZS5hZHM6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiA1bHN5c3RlbS5hZHM6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiA1cW9zaW50ZS5hZGI6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiA1cW9zaW50ZS5hZHM6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiA1cXBhcmFtZS5hZHM6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiA1cXRhcHJvcC5hZGI6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiA1cXRhc3ByaS5hZHM6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCglBZGQgMjAwMSB0byBjb3B5cmlnaHQgbm90aWNlLgoKCSogNXZpbnRtYW4uYWRzOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoJRml4IGhlYWRlciBmb3JtYXQuICBBZGQgMjAwMSB0byBjb3B5cmlnaHQgbm90aWNlLgoKCSogZy1zb2Njb24uYWRzOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogZy10cmFzeW0uYWRzOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoJQWRkIDIwMDEgdG8gY29weXJpZ2h0IG5vdGljZS4KCgkqIG1lbXRyYWNrLmFkYjogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIHMtaW50bWFuLmFkczogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCUFkZCAyMDAxIHRvIGNvcHlyaWdodCBub3RpY2UuICBGaXggaGVhZGVyIGZvcm1hdC4KCgkqIHMtc3RhY2hlLmFkYjogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgkqIGFkYWludC5jOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogY2lvLmM6IENoYW5nZSBMaW51eCB0byBHTlUvTGludXguCgoJKiBjc3RyZWFtcy5jOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogaW5pdC5jOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogZ21lbS5jOiBDaGFuZ2UgTGludXggdG8gR05VL0xpbnV4LgoKCSogdHJhY2ViYWsuYzogQ2hhbmdlIExpbnV4IHRvIEdOVS9MaW51eC4KCgoyMDAxLTEwLTAyICBHZWVydCBCb3NjaCAgPGJvc2NoQGduYXQuY29tPgoKCSogbWlzYy5jIChpbnNlcnRfZGVmYXVsdF9hdHRyaWJ1dGVzKTogQWRkIGR1bW15IHZlcnNpb24uCg==